Software Development Models
Software Development Models
PROCESS MODELS
The software development process, the goal is to produce a high-quality software
product. It therefore focuses on activities directly related to production of the software,
for example,
design,
coding, and
testing
The development process specifies the major development and quality control activities
that need to be performed in the project, it forms the core of the software process
A project’s development process defines the tasks the project should perform, and the
order in which they should be done.
A process limits the degrees of freedom for a project by specifying what types of
activities must be undertaken and in what order, such that the “shortest” (or the most
efficient) path is obtained from the user needs to the software satisfying these needs.
The process drives a project and heavily influences the outcome
Due to the importance of the development process, various models have been proposed.
Waterfall Model
Prototyping Model
Iterative Development Model
Relational Unified Process Model
Time Boxing Model
Extreme Programming & Agile Process Model
WATERFALL MODEL
Winston Royce introduced the Waterfall Model in 1970. It is also referred to as
a linear-sequential life cycle model.
In a waterfall model, each phase must be completed before the next phase can begin
and there is no overlapping in the phases.
The basic idea behind the phases is separation of concerns—each phase deals with a
distinct and separate set of concerns. By doing this, the large and complex task of
building the software is broken into smaller tasks (which, by themselves, are still quite
complex) of specifying requirements, doing design, etc. Separating the concerns and
focusing on a select few in a phase gives a better handle to the engineers and
managers in dealing with the complexity of the problem
Linear ordering of activities has some important consequences
First, to clearly identify the end of a phase and the beginning of the next, some
certification mechanism has to be employed at the end of each phase. This is usually
done by some verification and validation means that will ensure that the output of a
phase is consistent with its input (which is the output of the previous phase), and that
the output of the phase is consistent with the overall requirements of the system.
FEASIBILITY STUDY
The main goal of this phase is to determine whether it would be financially and
technically feasible to develop the software.
The feasibility study involves understanding the problem and then determine
the various possible strategies to solve the problem.
These different identified solutions are analyzed based on their benefits and
drawbacks.
The best solution is chosen and all the other phases are carried out as per this
solution strategy
REQUIREMENTS ANALYSIS AND
SPECIFICATION
The aim of the requirement analysis and specification phase is to understand the
exact requirements of the customer and document them properly.
In coding phase software design is translated into source code using any suitable
programming language. Thus each designed module is coded. The aim of the unit
testing phase is to check whether each module is working properly or not.
INTEGRATION AND SYSTEM TESTING
Integration of different modules are undertaken soon after they have been
coded and unit tested.
Finally, after all the modules have been successfully integrated and tested, the
full working system is obtained and system testing is carried out on this
SYSTEM TESTING
System testing consists three different kinds of testing activities as described
below
Alpha testing: Alpha testing is the system testing performed by the development
team.
Beta testing: Beta testing is the system testing performed by a friendly set of
customers.
Acceptance testing: After the software has been delivered, the customer
performed the acceptance testing to determine whether to accept the delivered
software or to reject it.
MAINTAINENCE
Maintenance is the most important phase of a software life cycle. The effort spent
on maintenance is the 60% of the total effort spent to develop a full software.
There are basically three types of maintenance