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],
Available
from: http://mcs.open.ac.uk/ban25/papers/computer2001.pdf
(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