Samuel Lee

SENG 611 Requirements Engineering

Review of Software Life Cycles prepared by Samuel Lee


Software Life Cycles
Summary

There are five models of the software life cycles introduced: Waterfall, V-Shaped, Prototyping, Incremental, and Spiral


Waterfall Model

This is the most simple and straight forward to understand and use model in the software life cycle. A project progress through a set of phases in a sequential order, where there is no overlap between phases and each phase must be completed before progressing to the next phase. People do not see the software until the end of the project and changes are not supposed to happen in the whole process.


V-Shaped

This model is similar to the waterfall model, except it emphasis the importance of developing a testing plan at each phase of the life cycle.


Prototyping

This model allows developers to create a quick implementation of the software (prototype) before or during the requirements phase. Users are involved by evaluating this prototype and provide feedback to the developers, who then use this information to refine or change the prototype to meet the real needs of the users. Prototypes can either be evolutionary or throw away.


Incremental

In this model, the software is developed in incremental stages where each stage adds additional functionality to the software. Each stage consists of design, code and unit test, integration test and delivery. This model allows developer to add functionality into software earlier than either the waterfall or v-shaped model and functionality can also be developed according to the level of importance. Careful planning is needed for this model.


Spiral

It is an iterative approach, where all the major risks are identified at each spiral and then plan is developed to deal with the risks. Each spiral have six steps include determine objectives, identify risks, evaluate alternatives, develop and verify deliverables, plan next iteration, commit to approach for next iteration. This spiral model terminates as a waterfall software life cycle.


Critical Comments

After reading the software life cycle models, I think there is no one particular model that outperforms all the other. Every model is got its advantages and disadvantages. As from my experience, the selection of a particular model depends upon the characteristic of the project. In reality, companies combine various models to suit their development needs.

The waterfall model should be used where the requirements are well known and there are no risks of requirements changing. Since this method is not an iterative approach, it will not be able to adapt to any requirements changes. In my experience, there is no such thing as unchanging requirements; therefore I am in doubt of the practicality of this method. Even though waterfall is unlikely to be used in real life, it does provide fundamental idea to the software life cycle.

V-Shaped model is very similar to waterfall model with the emphases on testing. I think that the emphasis on testing is an important element since testing is often neglected by the developer. By providing matching test phases with the development phase this provides verification of the system at the earlier stage of the development cycle. Errors can be caught at earlier stage, which will save tremendous amount of time due to the fact that there are fewer codes to deal with.

Prototype model allows more involvement and feedback from the customer. Prototype model is an iterative approach where users have more involvement in the development process, and feedback on all iteration of the prototype is expected. Where requirements change according to the user’s needs is expected. One important caution, prototypes are made to be throw away and not meant to be used in the real system. From my experience, developers are faced with the assumption from the user that the latest version of this prototype can be made into production quickly and this is a wrong assumption. I have often seen that developers are caught with this assumption and because of this time constraint they had to use part of the code from the prototype in the real system that produced inferior system.

From my past experience, I have found that the combination of incremental and V-shaped model to be an effective combination. Incremental model allows the project to brake up into smaller pieces and allows milestones to be set at each incremental cycle. It provides the programmer more satisfaction to see their milestone have been reached and also allows management to see the progression of the project. By combining it with V-shaped model, testing can be done early to produce quality software.

Spiral model is good to adapt because it takes risk into account. This model will be an effective model to use when dealing with high-risk projects, such as new technology or high investment projects. It allows one to analyze all the possible risks before the implementation.

Overall, the choice to use a particular model or combination of models depends on the project and the experience of the requirements engineer.


References
  1. Kremer, R. (1998), Software Life Cycles, SENG 611 Requirements Engineering. SERN, University of Calgary.  http://sern.ucalgary.ca/courses/SENG/611/F01/Al-LifeCycle.html

The University of Calgary
back to previous page
back
Up to page above
up
forward to next page
forward
Software Engineering Research Network

mail to Samuel Lee

SENG 611

Last Modified Date: October 10, 2001