WEEK 4 - Topic Overview - CN7021
WEEK 4 - Topic Overview - CN7021
WEEK 4 - Topic Overview - CN7021
4
Introduction
Software development process involves activities which when effectively executed will help produce a
good software product. Generally, the basic activities involved are system analysis, design coding,
testing and maintenance. All these activities are systematically executed in various ways to form
Objectives
The objective of this week is to introduce you to the idea of a software process—a coherent set of
activities for software production. When you have read this material and other relevant materials for
have been introduced to four generic software process models (waterfall, prototyping, iterative
understand the rationale for agile software development methods, the agile manifesto, and the
an intended software product (Sommerville, 2016). A software process is a set of related activities
that leads to the production of a software product. These activities may involve the development of
1
CN7021- ADVANCED SOFTWARE ENGINEERING
software from the scratch in a standard programming language like Pascal, Ada, VB dot net or C++
(Sommerville, 2016). However, business applications or enterprise applications are not always
developed in this way. They are often developed by extending and modifying existing systems or by
configuring and integrating off-the-shelf software or system components, which is known as software
reuse.
Process models were originally proposed to bring order to the chaos of software development. History
has indicated that these models have brought a certain amount of useful structure to software
engineering work and have provided a reasonably effective road map for software teams (Pressman
There are many different software processes but all must include four activities that are fundamental
to software engineering:
1) Software Analysis:
b. Requirements Gathering
e. Specification (The functionality of the software and constraints on its operation must be
defined).
2) Software design and implementation: The software to meet the specification must be produced.
3) Software validation: The software must be validated to ensure that it does what the customer
wants.
4) Software evolution: The software must evolve to meet changing customer needs.
2
CN7021- ADVANCED SOFTWARE ENGINEERING
Figure 4.1. Structured sequence of stages in software engineering (Pressman and Maxim, 2015)
SDLC provides a series of steps to be followed to design and develop a software product efficiently.
Communication
This is the first step where the user initiates the request for a desired software product. The user
contacts the service provider and tries to negotiate the terms, submits the request to the service
Requirements Gathering
This step onwards the software development team works to carry on the project. The team holds
discussions with various stakeholders from problem domain and tries to bring out as much
information as possible on their requirements. The requirements are contemplated and segregated
into user requirements, system requirements and functional requirements. The requirements are
collected using a number of practices as given studying the existing or obsolete system and software,
Feasibility Study
After requirement gathering, the team comes up with a rough plan of software process. At this step
the team analyzes if a software can be designed to fulfil all requirements of the user, and if there is
3
CN7021- ADVANCED SOFTWARE ENGINEERING
any possibility of software being no more useful. It is also analyzed if the project is financially,
practically, and technologically feasible for the organization to take up. There are many algorithms
available, which help the developers to conclude the feasibility of a software project. During
feasibility study, a software engineer work to give answer the following questions (Pressman &
Maxim, 2015):
5) The answers to these and other questions will evolve over time.
System Analysis
At this step the developers decide a roadmap of their plan and try to bring up the best software model
2) Identifying and addressing the impact of project on organization and personnel etc. The project team
analyzes the scope of the project and plans the schedule and resources accordingly.
Software Design
Next step is to bring down whole knowledge of requirements and analysis on the desk and design the
software product. The inputs from users and information gathered in requirement gathering phase are
the inputs of this step. The output of this step comes in the form of two designs; logical design, and
physical design.
4
CN7021- ADVANCED SOFTWARE ENGINEERING
Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams, and in
Coding
This step is also known as programming phase. The implementation of software design program
testing, product testing, in-house testing, and testing the product at user’s end (Douglas, 2005). Early
Integration
Software may need to be integrated with the libraries, databases, and other program(s). This stage of
Implementation
This means installing the software on user machines. At times, software needs post-installation
configurations at user end. Software is tested for portability and adaptability and integration related
This phase confirms the software operation in terms of more efficiency and less errors. If required,
the users are trained on, or aided with the documentation on how to operate the software and how to
keep the software operational. The software is maintained timely by updating the code according to
the changes taking place in user end environment or technology. This phase may face challenges
Testing
An estimate says that 50% of whole software development process should be tested. Errors may ruin
the software from critical level to its own removal. Software testing is done while coding by the
5
CN7021- ADVANCED SOFTWARE ENGINEERING
developers and thorough testing is conducted by testing experts at various levels of code such as
module testing.
Process Model
A process model is a plan that makes provision for all these required activities and seeks to
incorporate the stages in a methodical way (Bell, 2005). It is an overall strategy for accomplishing
software development. Process models were originally proposed to bring order to the chaos of
software development. However, history has it that they have brought a certain amount of useful
work and have provided a reasonably effective road map for software teams (Pressman & Maxim,
1) waterfall model
2) prototyping model
3) incremental model
4) spiral model
5) agile model
6) rational model
Waterfall Model
Waterfall model is the simplest model of software development paradigm. It was derived from more
general system engineering processes (Royce, 1970) where all the phases of SDLC will function one
after another in linear manner. Waterfall model takes the fundamental process activities of specification,
development, validation, and evolution and represents them as separate process phases such as
6
CN7021- ADVANCED SOFTWARE ENGINEERING
The waterfall model, sometimes called the classic life cycle, suggests a systematic, sequential
approach2 to software development that begins with customer specification of requirements and
progresses through planning, modelling, construction, and deployment, culminating in ongoing support
of the completed software (Pressman & Maxim, 2015). It is a software process model that involves
principle, one stage must be complete before progress to the next stage is possible. In practice, there is
significant iteration between stages. That is, when the first phase is finished then only the second phase
This model assumes that everything is carried out and taken place perfectly as planned in the previous
stage and there is no need to think about the past issues that may arise in the next phase. This model
does not work smoothly if there are some issues left at the previous step. The sequential nature of model
This model is best suited when developers already have designed and developed similar software in the
7
CN7021- ADVANCED SOFTWARE ENGINEERING
Characteristics of Waterfall Model
1) A sequence of stages in which the output of each stage becomes the input for the next
(Sommerville, 206).
2) In the waterfall model, it is possible to rework earlier stages in the light of experience gained
at a later stage. Each stage is signed off and the next stage is proceeded with. However the end
user is rarely involved in the development stage, even though they may well be involved in
signing off.
3) It is therefore critical that the analysts and the programmers understand the end-users’
requirements.
3) The user will notice any missing functions, incomplete or inconsistent requirements.
1) Waterfall model is idealistic as it assumes that no development error is ever committed by the
engineers during any of the life cycle stages. However, in practical development environments,
the engineers do commit a large number of errors in almost every phase of the life cycle.
8
CN7021- ADVANCED SOFTWARE ENGINEERING
2) Design must be specified on paper before programming begins
3) The source of the defects can be many: oversight, wrong assumptions, use of inappropriate
4) Defects are usually get detected much later in the life cycle and once a defect is detected, the
engineers need to go back to the phase where the defect had occurred and redo some of the
work done during that phase and the subsequent phases to correct the defect and its effect on
6) The waterfall model has disadvantages, which can be overcome using Prototyping, in which a
7) The features are worked out with the end user using a prototype, and the end user can have a
Prototyping Model
Prototyping model is a small-scale, incomplete, but working sample of a desired system. It is working
model of proposed system. It builds a scaled-down working version of the system. A redesigned
business process must be prototyped before it is fully integrated into the business (Pressman and Maxim,
2015).
9
CN7021- ADVANCED SOFTWARE ENGINEERING
A software prototype can be used in a software development process to help anticipate changes that
1) In the requirements engineering process, a prototype can help with the elicitation and validation
of system requirements.
2) In the system design process, a prototype can be used to explore particular software solutions
Advantage of Prototyping
5) It is helpful in illustrating the input data formats, messages, reports, and the interactive
10
CN7021- ADVANCED SOFTWARE ENGINEERING
6) The experience gained in developing the prototype helps to develop the final product.
7) A prototyping model can be used when technical solutions are unclear to the development team.
8) A developed prototype can help engineers to critically examine the technical issues associated
9) It yields prototype that might be the best or the only way to resolve any arising technical issues
Iterative Model
This model leads the software development process in iterations. It projects the process of development
in cyclic manner repeating every step after every cycle of software development process.
The software is first developed on very small scale and all the steps are followed which are taken into
consideration.
11
CN7021- ADVANCED SOFTWARE ENGINEERING
Then, on every next iteration, more features and modules are designed, coded, tested, and added to the
software. Every cycle produces a software, which is complete in itself and has more features and
After each iteration, the management team can do work on risk management and prepare for the next
iteration. Because a cycle includes small portion of whole the software process, it is easier to manage
1) There is a working model of the system at a very early stage of development which makes it
2) It helps finding issues at an early stage of development thereby making corrective measures a
limited budget.
3) It provides feedback paths for error correction as and when detected later in a phase.
12
CN7021- ADVANCED SOFTWARE ENGINEERING
1) It is applicable only to large and bulky software development projects because it is hard to break
3) It needs a higher level of understanding and skill as it demands for large and bulky software
development projects that need to be decomposed into a small software system into further
4) Although the cost of change is less, but it is not most suitable for changing requirements.
Evolutionary Model
The evolutionary model is also called successive versions model or incremental model. At the initial
stage, a simple working model is built. Subsequently it undergoes functional improvements & we keep
on adding new functions till the desired system is developed. Evolutionary models are characterized in
a manner that enables you to develop increasingly more complete versions of the software (Pressman
Advantages:
2) Reduce the error because the core modules get tested thoroughly.
Disadvantages:
1) It is difficult to divide the problem into several versions that would be acceptable to the
2) The delivery of full software system can be late due to different changes by customers during
13
CN7021- ADVANCED SOFTWARE ENGINEERING
1) Commonly used in object oriented software development where the system can be easily
2) A choice for large projects where you can easily find modules for incremental implementation.
Spiral Model
A risk-driven software process framework (the spiral model) was proposed by Boehm (1988). It was a
model of a development process where the process is represented as a spiral, with each round of the
Spiral model is a combination of both, iterative model and one of the SDLC model. It can be seen as if
you choose one SDLC model and combined it with cyclic process (iterative model).
This model considers risk, which often goes un-noticed by most other models. The model starts with
determining objectives and constraints of the software at the start of one iteration. Next phase is of
14
CN7021- ADVANCED SOFTWARE ENGINEERING
prototyping the software. This includes risk analysis. Then one standard SDLC model is used to build
the software. In the fourth phase of the plan of next iteration is prepared.
The spiral model combines change avoidance with change tolerance. It assumes that changes are a result
of project risks and includes explicit risk management activities to reduce these risks.
1) Objective setting: here, specific objectives for that phase of the project are defined. Constraints
on the process and the product are identified and a detailed management plan is drawn up.
Project risks are identified. Alternative strategies, depending on these risks, may be planned
(Sommerville, 2016).
2) Risk assessment and reduction: For each of the identified project risks, a detailed analysis is
carried out. Steps are taken to reduce the risk. For example, if there is a risk that the
3) Development and validation: After risk evaluation, a development model for the system is
chosen. For example, throwaway prototyping may be the best development approach if user
interface risks are dominant. If safety risks are the main consideration, development based on
formal transformations may be the most appropriate process, and so on. If the main identified
risk is sub-system integration, the waterfall model may be the best development model to use.
4) Planning: The project is reviewed and a decision made whether to continue with a further loop
of the spiral. If it is decided to continue, plans are drawn up for the next phase of the project.
1) Cost estimation becomes easier as the prototype building is done in small fragments.
2) It supports coping up with risks by providing the scope to build a prototype at every stage of
15
CN7021- ADVANCED SOFTWARE ENGINEERING
1) It is much more complex than any other model.
3) It is too much dependable on Risk Analysis and requires highly specific expertise.
V – model
The major drawback of waterfall model is we move to the next stage only when the previous one is
finished and there was no chance to go back if something is found wrong in later stages. V-Model
provides means of testing of software at each stage in reverse manner (Madaan, 2015).
At every stage, test plans and test cases are created to verify and validate the product according to the
requirement of that stage. For example, in requirement gathering stage the test team prepares all the test
cases in correspondence to the requirements. Later, when the product is developed and is ready for
testing, test cases of this stage verify the software against its validity towards requirements at this stage.
This makes both verification and validation go in parallel. This model is also known as verification and
validation model.
16
CN7021- ADVANCED SOFTWARE ENGINEERING
Big Bang Model
This model is the simplest model in its form. It requires little planning, lots of programming and lots of
funds. This model is conceptualized around the big bang of universe. As scientists say that after big
bang lots of galaxies, planets, and stars evolved just as an event. Likewise, if we put together lots of
programming and funds, you may achieve the best software product.
For this model, very small amount of planning is required. It does not follow any process, or at times
the customer is not sure about the requirements and future needs. So the input requirements are arbitrary.
This model is not suitable for large software projects but good one for learning and experimenting.
RAD utilizes prototyping to delay producing system design until after user requirements are clear. RAD
involves:
1) Phased development
2) Prototyping
a) System prototyping
3) Throw-away prototyping
a) Design prototyping
17
CN7021- ADVANCED SOFTWARE ENGINEERING
Agile Model
Agile is the integration of various approaches of systems analysis and design for applications as deemed
appropriate to the problem being solved and the system being developed (Sharmaet al., 2012.
18
CN7021- ADVANCED SOFTWARE ENGINEERING
Benefits of Agile
Shortcomings of Agile
1) Requires discipline
3) Complexity of system
4) Reliability of system
5) Time schedule
6) Schedule visibility
Conclusion
Software engineering practice encompasses principles, concepts, methods, and tools that software
engineers apply throughout the software process. A coherent set of activities that lead to the
development of a software project was the goal of the week where you learnt some of the variants of
the set of activities that is, process models. The process models that range from waterfall to agile where
modern dynamism in enterprise applications is put into consideration during software development.
You also learnt about advantages and disadvantages of each of these models and where they are
19
CN7021- ADVANCED SOFTWARE ENGINEERING
applicable. You can learn more on the topic by access the e-library on the VLE or reading the
References
1. Boehm, B. and Turner, R. (2003). Balancing Agility and Discipline: A Guide for the Perplexed.
Boston: Addison-Wesley
2. Braude, E., and M. Bernstein (2011). Software Engineering: Modern Approaches. 2nd Edition,
Wiley.
3. Douglas, B. (2005). Software Engineering for Students. 4th Edition. Pearson Education Limited
6. Madaan S. (2015). International Journal of Scientific & Engineering Research, Volume 6, Issue
11, November-2015
7. Pfleeger, S. (2009). Software Engineering: Theory and Practice. 4th Edition. Prentice Hall.
9. Royce, W. W. (1970). ‘Managing the Development of Large Software Systems: Concepts and
10. Schach, S. (2010). Object-Oriented and Classical Software Engineering. 8th Edition. McGraw-
Hill.
11. Sharma, S., Sarkar, D., and Gupta, D. (2012). Agile Processes and Methodologies: A
12. Conceptual Study, International Journal on Computer Science and Engineering (IJCSE), Vol.
20