Between Different Models Of Software Engineering
models are the process representation of software. They describe a process from
different views like specification, layout, validation and evolution.
known Process Models are:
here we discuss and examine some of them.
Classical and the oldest model which is used in most of the
government as well as private companies. It is based on planning on early
stages so there will be minimum design flaws. Planning on early stages and
excessive documentation make it good for the projects in which quality is the
main subject. Waterfall model consists of different non concurrence stages.
method served as a baseline many other software process models. System
requirements include all the components requirements consists of hardware
requirements as well as software tools. Software requirements include the
functionality of the required system and analysis of the interaction with other
databases and applications. Architectural design is the framework of software
system to meet the customer requirements. Architectural design also highlights
the major components and other interfaces with which the software interacts.
But keep it in mind that it does not consist of the design information of the
other components. Detail design includes the examination and analysis of all
the components that are defined in the Architectural design and specifies how
each component will be implemented. Next step is coding which is the
implementation of all the specifications defined in the detailed design.
Testing determines whether the software is properly works according to its
customer’s specification and finds all bugs in the software system. Maintenance
addressed all the problems which come after the software system release.
Model cannot be applied to all situations because it does not overlaps between
stages. All requirements should be stated in the early stage of software
development. So the complete and consistent requirements must be defined before
the coding phase i.e. returning from coding to the requirement phase is not
supported by waterfall model and this needs lot of rework and extra budget. Waterfall
model is easy to understand but sometimes it does not match the reality well.
It forces good habits like designing before development, documentation but mostly
software is delivered late and there are delays in the discovery of bugs.
Pure classical waterfall method performs well when the requirements
are well defined and the development tools are properly understood. But it
becomes inefficient when there is rapid development needed. So there is Modified
Waterfall method which has same phases as the classical model but they are
not discontinuous any more, they can connect at every stage to cope with
waterfall method is more flexible than the classical model.
ambiguity in milestones achieved as compared to classical basic model.
implement easy areas without waiting for the complex areas to implement.
can create many problems.
overlap between phases so excessive documentation is reduced to some extent.
many chances of miss communication as the activities are performed in
problems in Waterfall model makes need of another model which is more flexible
and produce faster results. In Iterative development, development starts with
specifying and implementing a part from software. This enable the developers to
fetch results early in the development so get feedback from every release of
software module. Each iteration is a small waterfall process and the feedback
after every iteration helps in specifying requirements for the next module.
step by step we can detect defects in early stages, so there are minimum
chances of downward flow of defects.
There is no
overlap between steps of all iteration.
feedback as the iterations produced, presenting blueprints of the products to
users will show them how the end product works.
requirements are not gathered at the start of the project so may result in
costly system architecture and design.
More Time is
spent on designing of software and less time is spent on documentation.
waterfall, V-Shaped model consists of sequential execution of processes. First
phase must be complete before the execution of next phase. Like waterfall model
cycle starts with requirement specification but here there are more emphases on
Testing. Test plans are developed before the coding phase which focuses on
mapping the results with the functionality specified in the requirements.
test plan is generated between the Software architecture and design phase so
that testing the working capability of different modules with each other. When
the coding is complete then all the test plans are executed which are produced
between all the steps of V-shaped model.
Easy to use.
like waterfall model.
deliverables of each phase.
difficult to adjust so it is little flexible.
chances of success than waterfall model due to the development of test plans
in early stages.
prototypes produced because of the implementation of software at early
downward flow of defects in software development processes.
has to be updated if there will be any change in the requirement document.
model is similar to waterfall but in this model there is more emphasis on Risk
Analysis. It consists of four phases:
project continuously passes through spirals/phases in the iterations. In planning phase requirements are gathered
then it move towards risk analysis phase where risks are identifies and
solutions are developed. If the risks are found then the new solution would be
proposed. A prototype is produced at the end of the risk analysis phase.
Software is developed in the Engineering phase with testing it in the end of
the phase. Evaluation phase allows customers to evaluate the output of software
product before it moves towards the next spiral.
Good for large projects.
· Costly model because of high risk analysis
needs of high expertise people.
produces early in SDLC
for smaller projects.
type of incremental model in which the software is developed in increments and
each increment is released with increment in the functionality of the previous
increment and is tested properly to ensure the software quality. The most known
agile method used is Extreme Programming.
programming includes the continuous code improvement with user involvement in
the development and pair programming. It is difficult to keep interest of the
customers who are involved in the software development and prioritizing changes
is very difficult because of many stakeholders so smooth working needs extra
are different practices in (XP):
are stored in story cards and the stories to be released are selected by their
relative priorities and release time and then they are broken down by the
developers for the task release.
minimum set of system functionality to be released and then this functionality
is then incremented in the next release.
design that is enough for the current release of systems functionality.
the implementation of the new functionality a framework for unit testing is
the errors are found developers are ready to refactor the code to make it
simple and easy.
are working with each other in pairs to check the work of each other so make
the code of good quality and less error prone.
developers of the system work together so code does not belong to only one
everyone can change the code give rise to collective ownership.
one module is complete then it is added to the system and then performed unit
testing on the entire system.
time is not considered because it results in the reduction of the quality of
of customer is available for all the time with the developer as is like a
member of developer team as it is responsible for the system requirements for
Agile Method (Extreme Programming)
It is good for medium projects.
Not good for large complex projects.
Produce better team collaboration.
Limited support for developing reusable artefacts.
Changes in requirements are welcomed at every stage.
Pair programming is costly.
are many models used for developing different kind of systems according to
their size and requirements. All of them have some pros and cons. Every model
tries to solve the problems/weakness found in the previous model. Waterfall and
Spiral model are widely used models.