Page 47 - DCAP405_SOFTWARE_ENGINEERING
P. 47
Software Engineering
Notes software project is not just the final program along with the user documentation, but also the
requirements document, design document, project plan, test plan, and test results.
The waterfall model derives its name due to the cascading effect from one phase to the other as
is illustrated in the Figure 3.2. In this model each phase is well defined, has a starting and ending
point, with identifiable deliveries to the next phase.
This model has five phases: (i) requirement analysis and specification, (ii) design,
(iii) implementation and unit testing, (iv) integration and system testing and (v) operation and
maintenance. All the phases occur one-by-one without overlapping. The next phase begins only
after the end of the previous phase.
Requirement analysis and specification: This phase aims at understanding the exact
requirements of the customer and documents them. Both the customer and the software
developer work together so as to document all the functions, performance and interfacing
requirements of the software. It describes the “what” of the system to be produced and not
“how”. In this phase a large document called Software Requirement Specification document
(SRS) is produced which contains the detailed description of what the system will do in the
common language.
Design phase: The aim of this phase is to transform the requirements gathered in the SRS
into a suitable form which permits further coding in a programming language. It defines
the overall software architecture together with high level and detailed design. All this
work is documented as Software Design Description document (SDD).
Implementation and unit testing phase: The actual coding begins at his stage. The
implementation goes smoothly if the SDD has complete information required by the
software engineers. During testing, the code is thoroughly examined and modified. Small
modules are testes in isolation initially. Thereafter, these modules are tested by writing
some overhead code in order to check the interaction between these modules and the flow
of intermediate output.
Integration and system testing: This phase is highly crucial as the quality of the end
product is determined by the effectiveness of the testing carried out. Better output will
lead to satisfied customers, lower maintenance costs and accurate results. Unit testing
determines the efficiency of individual modules. However, in this phase the modules are
tested for their interactions with each other and with the system.
Operation and maintenance phase: Maintenance is the task performed by every user once
the software has been delivered to the customer, installed and operational.
Thus, the delivery of software initiates the maintenance phase. The time and efforts spent
on the software to keep it operational after release is important. It includes activities like
error correction, removal of obsolete functions, optimization and enhancements of
functions. It may span for 5 to 50 years.
Notes Thus, in this model the requirements must be clear at the very initial stages. The
end product is available relatively late which in turn delays the error recovery.
Let us now consider the rationale behind the waterfall model. There are two basic assumptions
for justifying the linear ordering of phases in the manner proposed by the waterfall model.
1. For a successful project resulting in a successful product, all phases listed in the waterfall
model must be performed anyway.
2. Any different ordering of the phases will result in a less successful software product.
40 LOVELY PROFESSIONAL UNIVERSITY