Chapter 2
Chapter 2
SOEng2051
12/28/2024 1
12/28/2024 2
Objectives
• The objective of this chapter is to introduce you to the idea of a software
process- a coherent set of activities for software production.
After this chapter you will:
• Understand the concepts of software processes and software process
models;
• Have been introduced some generic software process models and when
they might be used;
• Know about the fundamental process activities of software
requirements engineering, software development, testing, and
evolution
• Understand why processes should be organized to cope with changes in
the software requirements and design.
• Understand
12/28/2024 how the Rational Unified Process integrates good software 3
12/28/2024 4
Software specifications
• The functionality of the software and constraints on its operation must be
defined.
• Detailed description of a software system to be developed with its
functional and non-functional requirements.
Software development
• The software to meet the requirement must be produced.
• Designing, programming, documenting, testing, and bug fixing is done.
Software validation
• The software must be validated to ensure that it does what the customer
wants.
• Evaluation software product is done to ensure that the software meets the business
requirements and users needs.
12/28/2024 5
12/28/2024 6
Software Development Life Cycle
• Referred to as SDLC.
• Also termed process model is a pictorial and diagrammatic
representation of the software life cycle.
• A life cycle model represents all the methods required to make a
software product transit through its life cycle stages.
• It also captures the structure in which these methods are to be
undertaken.
• Defines the general steps that are take to build software
• Defines the responsibilities for team member during each step of
phase.
• Some of these steps may overlap, but generally define the phase of
the projects.
12/28/2024 7
• If the steps are not successful the project may fall back to an earlier
steps
SDLC Cycle
• SDLC Cycle represents the process of developing software.
• SDLC framework includes the following steps:
• Requirement analysis
• Defining
• Designing
• Coding
• Testing
• Deployment
• Maintenance
12/28/2024 8
Requirement analysis
• Requirement Analysis is the most important and necessary stage in
SDLC.
• The senior members of the team perform it with inputs from all the
stakeholders and domain experts.
• Planning for the quality assurance requirements and identifications
of the risks associated with the projects is also done at this stage.
• Business analyst and Project organizer set up a meeting with the
client to gather all the data like what the customer wants to
build, who will be the end user, what is the objective of the
product.
• Before creating a product, a core understanding or knowledge of
the product is very necessary.
12/28/2024 9
• For Example: A client wants to have an application which concerns
money transactions.
• In this method, the requirement has to be precise like what kind of
operations will be done, how it will be done, in which currency it will be
done, etc.
• Once the required function is done, an analysis is complete with
auditing the feasibility of the growth of a product.
• In case of any ambiguity, a signal is set up for further discussion.
• Once the requirement is understood, the SRS (Software
Requirement Specification) document is created.
• The developers should thoroughly follow this document and also
should be reviewed by the customer for future reference
12/28/2024 10
Defining Requirements
• Once the requirement analysis is done, the next stage is to
certainly represent and document the software requirements and
get them accepted from the project stakeholders.
• This is accomplished through "SRS"- Software Requirement
Specification document which contains all the product
requirements to be constructed and developed during the project
life cycle.
12/28/2024 11
Designing the Software
• The next phase is about to bring down all the knowledge of
requirements, analysis, and design of the software project. This
phase is the product of the last two, like inputs from the customer
and requirement gathering.
12/28/2024 12
Developing the project
• In this phase of SDLC, the actual development begins, and the
programming is built.
• The implementation of design begins concerning writing code.
• Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters,
debuggers, etc. are used to develop and implement the code.
12/28/2024 13
Testing
• After the code is generated, it is tested against the requirements to
make sure that the products are solving the needs addressed and
gathered during the requirements stage.
• During this stage, unit testing, integration testing, system
testing, acceptance testing is done.
Deployment
• Once the software is certified, and no bugs or errors are stated,
then it is deployed.
• Then based on the assessment, the software may be released as it
is or with suggested enhancement in the object segment. After the
software is deployed, then its maintenance begins.
12/28/2024 14
Maintenance
• Once when the client starts using the developed systems, then the
real issues come up and requirements to be solved from time to
time.
• This procedure where the care is taken for the developed product is
known as maintenance.
12/28/2024 15
Software process model||Waterfall model
• This model has five phases: Requirements analysis and specification,
design, implementation and unit testing, integration and system
testing, and operation and maintenance.
• The steps always follow in this order and do not overlap.
• The developer must complete every phase before the next phase
begins.
• This why it named Waterfall Model, because its diagrammatic
representation resembles a cascade of waterfalls.
12/28/2024 16
Waterfall model phases
12/28/2024 17
Waterfall model phases
Design Phase:
• This phase aims 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 a Software Design Document (SDD).
12/28/2024 18
Waterfall model phases
12/28/2024 19
Waterfall model phases
12/28/2024 20
Waterfall model phases
12/28/2024 21
When to use SDLC Waterfall Model?
• Some Circumstances where the use of the Waterfall model is most
suited are:
• When the requirements are constant and not changed regularly.
• A project is short
• The situation is calm
• Where the tools and technology used is consistent and is not
changing
• When resources are well prepared and are available to use.
12/28/2024 22
Advantages of Waterfall model
• Simple to implement
• Number of resources that are required for it is minimal.
• The requirements are simple and explicitly declared;
• Requirements are remain unchanged during the entire project
development.
• The start and end points for each phase is fixed, which makes it
easy to cover progress.
• The release date for the complete product, as well as its final cost,
can be determined before development.
• It gives easy to control and clarity for the customer due to a strict
reporting system.
12/28/2024 23
Disadvantage of waterfall model
• The risk factor is higher, so this model is not suitable for more
significant and complex projects.
• This model cannot accept the changes in requirements during
development.
• It becomes dangerous to go back to the phase. For example, if the
application has now shifted to the coding phase, and there is a
change in requirement, It becomes tough to go back and change it.
• Since the testing done at a later stage, it does not allow identifying
the challenges and risks in the earlier phase, so the risk reduction
strategy is difficult to prepare.
12/28/2024 24
Software process model||RAD Model
• What is RAD?
• List and describe phase of RAD
• When to use RAD
• Pros and cons of RAD
• reading assignment [including in any means of questions]…
12/28/2024 25
Software process model|| Spiral Model
• It is an evolutionary software process model that couples the iterative
feature of prototyping with the controlled and systematic aspects of
the linear sequential model.
• It implements the potential for rapid development of new versions of
the software.
• Using the spiral model, the software is developed in a series of
incremental releases.
• During the early iterations, the additional release may be a paper
model or prototype.
• During later iterations, more and more complete versions of the
engineered system are produced.
12/28/2024 26
Spiral Model
Objective setting:
• Each cycle in the spiral starts with the identification of purpose for
that cycle, the various alternatives that are possible for achieving the
targets, and the constraints that exists.
Risk Assessment and reduction:
• The next phase in the cycle is to calculate these various alternatives
based on the goals and constraints. The focus of evaluation in this
stage is located on the risk perception for the project.
• Development and validation:
The next phase is to develop strategies that resolve uncertainties and
risks. This process may include activities such as benchmarking,
simulation, and prototyping.
12/28/2024 28
Four parts of spiral model
Planning:
• Finally, the next step is planned. The project is reviewed, and a
choice made whether to continue with a further period of the spiral.
If it is determined to keep, plans are drawn up for the next step of
the project.
12/28/2024 29
…continue
• The risk-driven feature of the spiral model allows it to
accommodate any mixture of a specification-oriented, prototype-
oriented, simulation-oriented, or another type of approach.
• An essential element of the model is that each period of the spiral
is completed by a review that includes all the products developed
during that cycle, including plans for the next cycle.
• The spiral model works for development as well as enhancement
projects.
12/28/2024 30
When to use Spiral Model?
• When deliverance is required to be frequent.
• When the project is large
• When requirements are unclear and complex
• When changes may require at any time
• Large and high budget projects
12/28/2024 31
Advantages and disadvantages of spiral
model
Advantages
• High amount of risk analysis
• Useful for large and mission-critical
projects.
Disadvantages
• Can be a costly model to use.
• Risk analysis needed highly particular
expertise
• Doesn't work well for smaller projects.
12/28/2024 32
Software process model|| V-Model
• V-Model also referred to as the Verification and Validation Model.
• Each phase of SDLC must complete before the next phase starts.
• It follows a sequential design process same as the waterfall model.
• Testing of the device is planned in parallel with a corresponding
stage of development.
12/28/2024 33
…continue
• Verification: It involves a static analysis method (review) done
without executing code.
• It is the process of evaluation of the product development process to
find whether specified requirements meet.
• Validation: It involves dynamic analysis method (functional, non-
functional), testing is done by executing code. Validation is the
process to classify the software after the completion of the
development process to determine whether the software meets the
customer expectations and requirements.
• So V-Model contains Verification phases on one side of the Validation
phases on the other side. Verification and Validation process is joined
by coding phase in V-shape. Thus it is known as V-Model.
12/28/2024 34
Verification Phase of V-model
• Business requirement analysis: This is the first step where
product requirements understood from the customer's side. This
phase contains detailed communication to understand customer's
expectations and exact requirements.
• System Design: In this stage system engineers analyze and
interpret the business of the proposed system by studying the user
requirements document.
• Architecture Design: The baseline in selecting the architecture is
that it should understand all which typically consists of the list of
modules, brief functionality of each module, their interface
relationships, dependencies, database tables, architecture
diagrams, technology detail, etc. The integration testing model is
carried
12/28/2024 out in a particular phase. 35
Verification Phase of V-model
• Module Design: In the module design phase, the system breaks
down into small modules. The detailed design of the modules is
specified, which is known as Low-Level Design
• Coding Phase: After designing, the coding phase is started. Based
on the requirements, a suitable programming language is decided.
There are some guidelines and standards for coding.
• Before checking in the repository, the final build is optimized for
better performance, and the code goes through many code reviews
to check the performance.
12/28/2024 36
Validation Phase of V-model
• Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed
during the module design phase. These UTPs are executed to
eliminate errors at code level or unit level. A unit is the smallest
entity which can independently exist, e.g., a program module. Unit
testing verifies that the smallest entity can function correctly when
isolated from the rest of the codes/ units.
• Integration Testing: Integration Test Plans are developed during
the Architectural Design Phase. These tests verify that groups
created and tested independently can coexist and communicate
among themselves.
12/28/2024 37
Validation Phase of V-model
• System Testing: System Tests Plans are developed during System
Design Phase. Unlike Unit and Integration Test Plans, System Tests
Plans are composed by the client? Business team. System Test
ensures that expectations from an application developer are met.
• Acceptance Testing: Acceptance testing is related to the business
requirement analysis part. It includes testing the software product
in user atmosphere. Acceptance tests reveal the compatibility
problems with the different systems, which is available within the
user atmosphere. It conjointly discovers the non-functional
problems like load and performance defects within the real user
atmosphere.
12/28/2024 38
When to use V-Model?
• When the requirement is well defined and not ambiguous.
• The V-shaped model should be used for small to medium-sized
projects where requirements are clearly defined and fixed.
• The V-shaped model should be chosen when sample technical
resources are available with essential technical expertise.
12/28/2024 39
Advantage (Pros) of V-Model:
• Easy to Understand.
• Testing Methods like planning, test designing happens well before
coding.
• This saves a lot of time. Hence a higher chance of success over the
waterfall model.
• Avoids the downward flow of the defects.
• Works well for small plans where requirements are easily
understood.
12/28/2024 40
Disadvantage (Cons) of V-Model
• Very rigid and least flexible.
• Not a good for a complex project.
• Software is developed during the implementation stage, so no early
prototypes of the software are produced.
• If any changes happen in the midway, then the test documents
along with the required documents, has to be updated.
12/28/2024 41
Incremental Model
• Incremental Model is a process of software development where
requirements divided into multiple standalone modules of the
software development cycle.
• Used to break down a project to smaller stages
• In this model, each module goes through the requirements, design,
implementation and testing phases. Every subsequent release of
the module adds function to the previous release. The process
continues until the complete system achieved.
• Discus
The various phases of incremental model
When we use the Incremental Model
Pros and cons of Incremental Model
12/28/2024 42
The various phases of incremental model
Requirement analysis:
• In the first phase of the incremental model, the product analysis
expertise identifies the requirements. And the system functional
requirements are understood by the requirement analysis team.
• To develop the software under the incremental model, this phase
performs a crucial role.
Design & Development:
• In this phase of the Incremental model of SDLC, the design of the
system functionality and the development method are finished with
success.
• When software develops new practicality, the incremental model uses
style and development phase.
12/28/2024 43
…
Testing:
• In the incremental model, the testing phase checks the performance
of each existing function as well as additional functionality. In the
testing phase, the various methods are used to test the behaviour of
each task.
Implementation:
• Implementation phase enables the coding phase of the development
system.
• It involves the final coding that design in the designing and
development phase and tests the functionality in the testing phase.
• After completion of this phase, the number of the product working is
enhanced and upgraded up to the final system product
12/28/2024 44
When we use the Incremental Model?
• When the requirements are not clear
• When time is to market is critical.
• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the product.
• You can develop prioritized requirements first.
12/28/2024 45
Pros
• Errors are easy to be recognized.
• Easier to test and debug
• More flexible.
• Simple to manage risk because it handled during its iteration.
• The Client gets important functionality early.
12/28/2024 46
cons
• Need for good planning
• Total Cost is high.
• Well defined module interfaces are needed
12/28/2024 47
Software process model|| Iterative Model
• In this Model, you can start with some of the software specifications
and develop the first version of the software. After the first version
if there is a need to change the software, then a new version of the
software is created with a new iteration. Every release of the
Iterative Model finishes in an exact and fixed period that is called
iteration.
12/28/2024 48
various phases of Iterative model
12/28/2024 49
various phases of Iterative model
• Requirement gathering & analysis: In this phase, requirements
are gathered from customers and check by an analyst whether
requirements will fulfil or not. Analyst checks that need will achieve
within budget or not. After all of this, the software team skips to the
next phase.
• Design: In the design phase, team design the software by the
different diagrams like Data Flow diagram, activity diagram, class
diagram, state transition diagram, etc.
• Implementation: In the implementation, requirements are written in
the coding language and transformed into computer programmes
which are called Software.
• Testing: After completing the coding phase, software testing starts
using
12/28/2024 different test methods. There are many test methods, but the
50
most common are white box, black box, and grey box test methods.
…continue
• Deployment: After completing all the phases, software is deployed
to its work environment.
• Review: In this phase, after the product deployment, review
phase is performed to check the behaviour and validity of the
developed product. And if there are any error found then the
process starts again from the requirement gathering.
• Maintenance: In the maintenance phase, after deployment of the
software in the working environment there may be some bugs,
some errors or new updates are required. Maintenance involves
debugging and new addition options.
12/28/2024 51
When to use the Iterative Model
• When requirements are defined clearly and easy to understand.
• When the software application is large.
• When there is a requirement of changes in future.
Advantage (Pros) of Iterative Model:
• Testing and debugging during smaller iteration is easy.
• A Parallel development can plan.
• It is easily acceptable to ever-changing needs of the project.
• Risks are identified and resolved during iteration.
• Limited time spent on documentation and extra time on designing.
12/28/2024 52
Disadvantage (Cons) of Iterative Model:
• It is not suitable for smaller projects.
• More Resources may be required.
• Design can be changed again and again because of imperfect
requirements.
• Requirement changes can cause over budget.
• Project completion date not confirmed because of changing
requirements.
12/28/2024 53
Coping with change
• Change is inevitable in all large software projects.
• The system requirements change as businesses respond to external
pressures, competition, and changed management priorities.
• As new technologies become available, new approaches to design and
implementation become possible.
• Therefore whatever software process model is used, it is essential that
it can accommodate changes to the software being developed.
• Change adds to the costs of software development because it usually
means that work that has been completed has to be redone.
• This is called rework.
12/28/2024 54
• For example, if the relationships between the requirements in a system
have been analysed and new requirements are then identified, some or
all of the requirements analysis has to be repeated.
• It may then be necessary to redesign the system to deliver the new
requirements, change any programs that have been developed, and
retest the system.
• Two related approaches may be used to reduce the costs of rework:
12/28/2024 55
• Change anticipation, where the software process includes
activities that can anticipate or predict possible changes before
significant rework is required. For example, a prototype system
may be developed to show some key features of the system to
customers. They can experiment with the prototype and refine their
requirements before committing to high software production costs.
• Change tolerance, where the process and software are designed
so that changes can be easily made to the system. This normally
involves some form of incremental development. Proposed changes
may be implemented in increments that have not yet been
developed. If this is impossible, then only a single increment (a
small part of the system) may have to be altered to incorporate the
change.
12/28/2024 56
• In this section, we discuss two ways of coping with change and
changing system requirements:
• System prototyping, where a version of the system or part of the
system is developed quickly to check the customer’s requirements
and the feasibility of design decisions. This is a method of change
anticipation as it allows users to experiment with the system before
delivery and so refine their requirements. The number of
requirements change proposals made after delivery is therefore
likely to be reduced.
• Incremental delivery, where system increments are delivered to
the customer for comment and experimentation. This supports both
change avoidance and change tolerance. It avoids the premature
commitment to requirements for the whole system and allows
changes to be incorporated into later increments at relatively low
cost.
12/28/2024 57
12/28/2024 58
12/28/2024 59
The Rational Unified Process …cont’d
• RUP is proposed by Ivar Jacobson, Grady Bootch, and James
Rambaugh.
• Some characteristics of RUP include use-case driven, Iterative
(repetition of the process), and Incremental (increase in value) by
nature, delivered online using web technology, can be customized or
tailored in modular and electronic form, etc.
• RUP reduces unexpected development costs and prevents wastage of
resources.
• Phases of RUP :
• Inception –Communication and planning are main.
• Identifies Scope of the project using use-case model allowing
managers to estimate costs and time required.
• Customers
12/28/2024
requirements are identified and then it becomes easy to 60
12/28/2024 63