Professional Documents
Culture Documents
Waterfall
Waterfall
Waterfall
Software engineering is the practice of using selected process techniques to improve the
quality of a software development effort. This is based on the assumption, subject to
endless debate and supported by patient experience, that a methodical approach to
software development results in fewer defects and, therefore, ultimately provides shorter
delivery times and better value. The documented collection of policies, processes and
procedures used by a development team or organization to practice software engineering
is called its software development methodology (SDM) or system development life cycle
(SDLC).
Methodology as Risk Management
The challenge in selecting and following a methodology is to do it wisely -- to provide
sufficient process disciplines to deliver the quality required for business success, while
avoiding steps that waste time, squander productivity, demoralize developers, and create
useless administrivia. The best approach for applying a methodology is to consider it as a
means to manage risk. You can identify risks by looking at past projects.
If your organization has been plagued by problems resulting from poor requirements
management, then a robust requirements management methodology would be well
advised. Once this problem has been solved, through a repeatable process, the
organization might then streamline its process, while ensuring that quality is maintained.
Every step along the system development life cycle has its own risks and a number of
available techniques to improve process discipline and resulting output quality. Moving
through the development life cycle, you might encounter the following major steps:
In addition, you might have support activities throughout the development effort such as:
Written guidance for all these steps would constitute the core of your methodology. You
can see how it wouldn't take long to fill a number of big binders with development
processes and procedures. Hence, the importance of selecting processes wisely - to
address known risks - keeping the methodology streamlined, and allowing for some
discretion on the part of the project team.
Question: How is a methodologist different from a terrorist?
Answer: You can negotiate with a terrorist. :)
Waterfall Methodology
All projects can be managed better when segmented into a hierarchy of chunks such as
phases, stages, activities, tasks and steps. In system development projects, the simplist
rendition of this is called the "waterfall" methodology, as shown in the following figure:
In looking at this graphic, which was for major defense systems developments, please
note this presumes that the system requirement have already been defined and scrubbed
exhaustively, which is probably the most important step towards project success.
Nevertheless, the graphic illustrates a few critical principles of a good methodology:
The waterfall provides an orderly sequence of development steps and helps ensure the
adequacy of documentation and design reviews to ensure the quality, reliability, and
maintainability of the developed software. While almost everyone these days disparages
the "waterfall methodology" as being needlessly slow and cumbersome, it does illustrate
a few sound principles of life cycle development.
Spiral Methodology:
While the waterfall methodology offers an orderly structure for software development,
demands for reduced time-to-market make its series steps inappropriate. The next
evolutionary step from the waterfall is where the various steps are staged for multiple
deliveries or handoffs. The ultimate evolution from the water fall is the spiral, taking
advantage of the fact that development projects work best when they are both incremental
and iterative, where the team is able to start small and benefit from enlightened trial and
error along the way.
The spiral methodology reflects the relationship of tasks with rapid prototyping,
increased parallelism, and concurrency in design and build activities. The spiral method
should still be planned methodically, with tasks and deliverables identified for each step
in the spiral.
Documentation:
Level 1 (Initial) - Processes are ad hoc and occasionally chaotic. Few processes are defined, and
success depends on individual effort and heroics. (A street-person with a laptop would be at Level
1.)
Level 2 (Repeatable) - Basic project management processes are established to track cost,
schedule and functionality. A process discipline is in place to repeat earlier successes on projects
with similar applications.
Level 3 (Defined) - Management and engineering processes are documented and integrated into a
standard software process. Projects use an approved, tailored version of the organizations
standard software process.
Level 4 (Managed) - Detailed measures of the software process and product quality are collected.
Processes and products are quantitatively understood and controlled.
Level 5 (Optimizing) - Continuous process improvement is aided by quantitative feedback from
the process and from piloting innovative ideas and technologies.
Around year 2000, the SEI introduced the next major evolution along this path calledCapability Maturity Model Integration (CMMI). This builds on the previous
CMM, which is now regarded as "legacy" and no longer supported. You can find
introductions to the CMMI and sample models at this Web link: SEI-CMMI models.
Enlarge Image
In last article we discussed about "Waterfall Model", which is one of the oldest and most
simple model designed and followed during software development process. But
"Waterfall Model" has its own disadvantages such as there is no fair division of phases in
the life cycle, not all the errors/problems related to a phase are resolved during the same
phase, instead all those problems related to one phase are carried out in the next phase
and are needed to be resolved in the next phase, this takes much of time of the next phase
to solve them. The risk factor is the most important part, which affects the success rate of
the software developed by following "The Waterfall Model".
In order to overcome the cons of "The Waterfall Model", it was necessary to develop a
new Software Development Model, which could help in ensuring the success of software
project. One such model was developed which incorporated the common methodologies
followed in "The Waterfall Model", but it also eliminated almost every possible/known
risk factors from it. This model is referred as "The Spiral Model" or "Boehms Model".
There are four phases in the "Spiral Model" which are: Planning, Evaluation, Risk
Analysis and Engineering. These four phases are iteratively followed one after other in
order to eliminate all the problems, which were faced in "The Waterfall Model". Iterating
the phases helps in understating the problems associated with a phase and dealing with
those problems when the same phase is repeated next time, planning and developing
strategies to be followed while iterating through the phases. The phases in "Spiral Model"
are:
Plan: In this phase, the objectives, alternatives and constraints of the project are
determined and are documented. The objectives and other specifications are fixed in
order to decide which strategies/approaches to follow during the project life cycle.
Risk Analysis: This phase is the most important part of "Spiral Model". In this phase all
possible (and available) alternatives, which can help in developing a cost effective project
are analyzed and strategies are decided to use them. This phase has been added specially
in order to identify and resolve all the possible risks in the project development. If risks
indicate any kind of uncertainty in requirements, prototyping may be used to proceed
with the available data and find out possible solution in order to deal with the potential
changes in the requirements.
Engineering: In this phase, the actual development of the project is carried out. The
output of this phase is passed through all the phases iteratively in order to obtain
improvements in the same.
Customer Evaluation: In this phase, developed product is passed on to the customer in
order to receive customers comments and suggestions which can help in identifying and
resolving potential problems/errors in the software developed. This phase is very much
similar to TESTING phase.
The process progresses in spiral sense to indicate iterative path followed, progressively
more complete software is built as we go on iterating through all four phases. The first
iteration in this model is considered to be most important, as in the first iteration almost
all possible risk factors, constraints, requirements are identified and in the next iterations
all known strategies are used to bring up a complete software system. The radical
dimensions indicate evolution of the product towards a complete system.
However, as every system has its own pros and cons, "The Spiral Model" does have its
pros and cons too. As this model is developed to overcome the disadvantages of the
"Waterfall Model", to follow "Spiral Model", highly skilled people in the area of
planning, risk analysis and mitigation, development, customer relation etc. are required.
This along with the fact that the process needs to be iterated more than once demands
more time and is somehow expensive task.
Enlarge Image
The Spiral Model is the neo approach in IT project system development and was
originally devised by Barry W. Boehm through his article published in 1985 "A Spiral
Model of Software Development and Enhancement".
This model of development unites the features of the prototyping model with an iterative
approach of system development; combining elements of design and prototyping-instages. This model is an effort to combine the advantages of top-down and bottom-up
concepts highly preferential for large, exclusive, volatile, and complex projects.
The term "spiral" is used to describe the process that is followed in this model, as
the development of the system takes place, the mechanisms go back several times
over to earlier sequences, over and over again, circulating like a spiral.
The spiral model represents the evolutionary approach of IT project system development
and carries the same activities over a number of cycles in order to elucidate system
requirements and its solutions.
Similar to the waterfall model, the spiral model has sequential cycles/stages, with each
stage having to be completed before moving on to next.
The prime difference between the waterfall model and the spiral model is that the project
system development cycle moves towards eventual completion in both the models but in
the spiral model the cycles go back several times over to earlier stages in a repetitive
sequence.
Progress Cycles, IT Project Management Solutions
The progress cycle of this model is divided into four quadrants, and each quadrant with a
different purpose;
Determining Objectives (I)------------Evaluating Alternatives (II)
*************************************************************
Planning Next Phase (III)------------Planning Next Phase (IV)
First Quadrant: the top left quadrant determines and identifies the project objectives,
alternatives, and constrains of the project. Similar to the system conception stage in the
Waterfall Model, here objectives are determined with identifying possible obstacles and
weighting alternative approaches.
Second Quadrant: the top right quadrant determines the different alternatives of the
project risk analysis, and evaluates their task with each alternative eventually resolving
them. Probable alternatives are inspected and associated risks are recognized. Resolutions
of the project risks are evaluated, and prototyping is used wherever necessary.
Third Quadrant: the bottom right quadrant develops the system and this quadrant
corresponds to the waterfall model with detailed requirements determined for the project.
Fourth Quadrant: the bottom left quadrant plans the next phase development process,
providing opportunity to analyze the results and feedback.
In each phase, it begins with a system design and terminates with the client reviewing the
progress through prototyping.
The major advantage of the spiral model over the waterfall model is the advance
approach on setting project objectives, project risk management and project planning into
the overall development cycle. Additionally, another significant advantage is, the user can
be given some of the functionality before the entire system is completed.
The spiral model addresses complexity of predetermined system performance by
providing an iterative approach to system development, repeating the same
activities in order to clarify the problem and provide an accurate classification of
the requirement within the bounds of multiple constraints.
Spiral Methodology
The spiral methodology extends the waterfall model by introducing prototyping. It
is generally chosen over the waterfall approach for large, expensive, and complicated
projects.
At a high-level, the steps in the spiral model are as follows:
1. The new system requirements are defined in as much detail as possible. This
usually involves interviewing a number of users representing all the external or
internal users and other aspects of the existing system.
2. A preliminary design is created for the new system.
3. A first prototype of the new system is constructed from the preliminary design.
This is usually a scaled-down system, and represents an approximation of the
characteristics of the final product.
4. A second prototype is evolved using four steps:
1. Evaluate the first prototype and identify its strengths, weaknesses, and
risks.
2. Define the requirements of the second prototype.
3. Plan and design the second prototype.
4. Construct and test the second prototype.
5. At the project sponsor's option, the entire project can be aborted if the risk is
deemed too great. Risk factors might involve development cost overruns,
operating-cost miscalculation, or any other factor that could result in a less-thansatisfactory final product.
6. The existing prototype is evaluated in the same manner as was the previous
prototype, and, if necessary, another prototype is developed from it according to
the fourfold procedure outlined above.
7. The preceding steps are iterated until the customer is satisfied that the refined
prototype represents the final product desired.
8. The final system is constructed, based on the refined prototype.
9. The final system is thoroughly evaluated and tested. Routine maintenance is
carried out on a continuing basis to prevent large-scale failures and to minimize
downtime.
There are commercial products that include requirements gathering tools, prototyping
tools, software development environments such as those for the Java platform, groupware
for communication among development members, and testing tools. RAD usually
embraces object-oriented programming methodology, which inherently fosters software
re-use. The most popular object-oriented programming languages, C++ and Java, are
offered in visual programming packages often described as providing rapid application
development.
If you're looking to hire a project manager with a strong software development
background, contact me and I'd be happy to discuss
your company's project needs and how I can address them.
Scrum is an agile method for project management developed by Ken Schwaber. Its goal
is to dramatically improve productivity in teams previously paralyzed by heavier,
process-laden methodologies. Its intended use is for management of software
development projects as well as a wrapper to other software development methodologies
such as Extreme Programming.
Scrum is characterized by:
team (as they are self-organizing) but acts as a productivity buffer between the team and
any destabilizing influences.
Scrum enables the creation of self-organizing teams by encouraging verbal
communication across all team members and across all disciplines that are involved in
the project. A key principle of scrum is its recognition that fundamentally empirical
challenges cannot be addressed successfully in a traditional "process control" manner. As
such, scrum adopts an empirical approach - accepting that the problem cannot be fully
understood or defined, focusing instead on maximizing the team's ability to respond in an
agile manner to emerging challenges.
If you're looking to hire a project manager with a strong software development
background, contact me and I'd be happy to discuss your company's project needs and
how I can address them.
References
Jim Highsmith, Agile Software Development Ecosystems
Ken Schwaber and Mike Beedle, Agile Software Development with Scrum