Thursday, April 5, 2012

Software Development Lifecycle


Computers became important in our day-to-day life, they are used in every field, and they have eased our life and made it possible to send money to another person in a different continent in a matter of seconds. As mankind became more dependent on computers, and software became more complex, programs became no longer only simple tools, and development of a program required more developers and more time. For that system engineering focused on how complex projects should be planned and managed over the project life cycle to produce high quality programs. Production of high quality programs required methods such as software development approaches.

As Brookshear J. (2006), explained “traditional development phases” consisted of four key steps, which are “analysis, design, implementation, and testing“ Brookshear J. (2006), in early days those steps had to be in a sequential way, and by completion of one step only we can go on to the next step. This approach developed the waterfall model of software development, in this approach within the software life cycle the movement from one step to the other happens in one direction and cannot overlap.


The waterfall model is the reference for other models, “Since no formal software development methodologies existed at the time, this hardware-oriented model was simply adapted for software development” Wikipedia (2011).  The main key in this model is that planning should happen first. “The model begins with establishing system requirements and software requirements and continues with architectural design, detailed design, coding, testing, and maintenance.” Munassar, N. & Govardha, A. (2010). If a change is needed due to a new requirement or errors discovered after the last phase, evaluation for it is needed, and we need to go over each phase again in sequential manner, documentation for the changes in each phase are created. By end of each step, review is done to check if proceeding to the next stage is possible. As this model doesn’t allow overlapping, it allows going back to an earlier stage, but it is expensive, because it leads to more documentation and review.

As any other software development model, waterfall has its own advantages and disadvantages. Main advantages as described by Munassar, N. & Govardha, A. (2010) are “easy to understand and implement, widely used and known” as well it emphasizes “good habits”, such as before starting with the design phase, all requirements should be defined and collected, and before coding the design phase should be completed, and it suits well defined projects, In addition to the fact that it generates extensive documentation which follow standards. However, the disadvantages overweigh its advantages, as the waterfall model mainly is costly if changes are needed and it’s not suitable for small projects or teams, and “difficult to integrate risk management”, unlike the spiral model which include risk analysis within its stages.  Waterfall is highly structured and contradicts with “trial-and-error process that is often vital to creative problem solving” Brookshear J. (2006), which led into the born of the incremental model. The incremental model mainly creates a small version of the program, test it then add more features in later increments and test it, till completion of the program.

“The spiral life-cycle model addresses many drawbacks of a waterfall model by providing an incremental development process, in which developers repeatedly evaluate changing project risks to manage unstable requirements and funding. “Nuseibeh, B. (2001).  This model has four stages, which are “Planning, Risk Analysis, Engineering and Evaluation.” Munassar, N. and Govardha, A. (2010)

The software development life cycle in the spiral model follows iteration between stages, which are called “spiral”, it starts with the planning stage where requirements are collected and risk is evaluated. In the “risk analysis” risks are addressed and alternative solutions are found if needed. “A prototype is produced at the end of the risk analysis phase.” Munassar, N. and Govardha, A. (2010). Then at the engineering stage software is produced and tested, before going on with the next spiral, in evaluation stage the customer evaluates project outcome.


“The spiral model is similar to the incremental model, with more emphases placed on risk analysis.”  Munassar, N. and Govardha, A. (2010). The spiral model as Munassar, N. and Govardha, A. (2010) states has “four phases: Planning, Risk Analysis, Engineering and Evaluation.” these phases in iterations (called Spirals in this model).  The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed.  Each subsequent spiral builds on the baseline spiral. Requirements are gathered during the planning phase.  In the risk analysis phase, a process is undertaken to identify risk and alternate solutions.  A prototype is produced at the end of the risk analysis phase. Software is produced in the engineering phase, along with testing at the end of the phase.  The evaluation phase allows the customer to evaluate the output of the project before the project continues to the next spiral. “In the spiral model, the angular component represents progress, and the radius of the spiral represents cost.” Munassar, N. and Govardha, A. (2010).

Spiral model benefits are extensive risk analysis, software is created in early stages of the life cycle and it fits for large projects (does not fit small projects). However, as spiral model is risk-driven, it requires detailed knowledge in risk analysis, in addition to that the success of the project extremely depends on the “risk analysis” stage, and is costly.

Just like the waterfall, the spiral model has its flaws, one of which “lack of explicit process guidance in determining these objectives, constraints, and alternatives” Munassar, N. and Govardha, A. (2010) which made Boehm come up with the nine-step W theory to enhance the spiral model, by defining objectives, limitations and changes for the next stage.

It is hard to agree on which model between the two is better than the other, even though the spiral model was invented to overcome drawbacks in the waterfall. The criteria in which we can choose one over the other can be summarized in the project to be implements and its requirements, the team involved and their capabilities in addition to the time line in which the project should finish.

References:



Bashar Nuseibeh (2001) ‘Weaving Together Requirements and Architectures, Software Management’ [Online],
(Accessed 05 February 2011)

Brookshear J. (2006), Computer Science An Overview, edition 9, pp. 332-337, Boston: Pearson Education Inc.

Munassar, N, & Govardhan, A (2010), 'A Comparison Between Five Models Of Software Engineering', International Journal of Computer Science Issues (IJCSI), 7, 5, pp. 94-101, Computers & Applied Sciences Complete, EBSCOhost [Online], Available from:
(Accessed 05 February 2011).

Wikipedia, (2011)


Boehm, B. et. al (1998), ‘Using the WinWin Spiral Model: A Case Study’ [Online], Available from: http://cse.usc.edu/classes/cs577b_2004/coursenotes/ep/midterm/optional/usccse98-512.pdf
(Accessed 05 February 2011).


No comments:

Post a Comment