Dealing with Complex Software Projects
Experience and historical data consistently reveal thousands of failing and unreliable Software Projects. My concern in this post is around those complex large scale software projects which failed to deliver.
Specifically I was interested in the conditions surrounding the stories of Arian 5, Denver International Airport, and Therac-25.
Some of the common aspects of these projects include: Large team of people scattered in multiple locations, Bureaucracy of the organization involved in building the software, lack of an overall vision (the big picture), reuse of old code from previous versions and the willingness to take shortcuts by trying to eliminate hardware protection in favor of a cheaper software protection feature.
When large teams are involved, every individual on the team, every technical lead, every manager needs to be fully aware of his/her role in the project. Through the use of proper software engineering practices everyone will perform his work efficiently. One has to insure that on a personal level team members collaborate and coordinate using standards and following company’s best practices. The software engineering has given us a number of team structures to choose from based on the size of a company and the scale of projects.
Top management and key architects of the software project need to have a clear high level vision of what is required. In my opinion, this was the biggest problem in the case of the Denver International Airport. On the other hand, the developers and tester working on the low level details need to have a concise and clear direction on what every component needs to do. This can be achieved with proper documentation and clear communication among team members. The miscommunication was one major aspect of the failure caused with the Mission to Mars scenario.
The need to listen to customer’s feedback is extremely important. This leads to better customer satisfaction and also gives the company an insight on how its software is being used in the real world. Unfortunately in case of the Therac-25, the company developing the software did not take the initial complains by hospitals seriously and kept fixing one small bug at a time, losing focus of the bigger picture.
Taking shortcuts is probably a natural human tendency for some. Big companies tend to the same, they take shortcuts sometimes to avoid additional expenses or simply to rush into releasing the software before reaching its maturity level. In case of the Therac-25, the company took the shortcut of eliminating the hardware protection interlocks to save money. They also reused code form a previous version to speed up the process of development. These bad decisions have led to the loss of many human lives.
Big organizations have huge responsibilities while building large scale software applications. Proper team structure with clear direction and focused vision plays a major role in the development lifecycle. The need to listen to customer’s feedback and not take shortcuts is another key element to keep in mind. Following software engineering best practices is a key factor in the development of a reliable software and the success of a large scale project.
Join Weboq to Gain Access to Many Free Resources