Coping with Change in Software Processes
Coping with Change in Software Processes
Software Processes
Software Process
2
Process, Project & Product
3
Process, Project & Product
Process
Used
Converted
into Produces
Project Product
Used in
Resources
4
Software Process Model
5
Generic representation of Process Model
Definition Phase
Umbrella
activities
Development Phase
Implementation Phase
6
Generic representation of process model
• Definition Phase: It concentrates on understanding the problem and
planning for the process model.
– The activities may include problem formulation, problem analysis, system
engineering, and project planning for the process.
• Development Phase: It focuses on determining the solution of the
problem with the help of the umbrella activities.
– The main activities of this phase are designing the architecture and algorithms
of the system, writing codes, and testing the software.
• Implementation Phase: Here, the deployment, change management,
defect removal, and maintenance activities are performed in this phase.
• The umbrella activities are responsible for ensuring the proper execution
of definition, development, and implementation phases.
– The umbrella activities are project management, quality assurance,
configuration management, risk management, work products preparation and
deployment, and process improvement.
7
Elements of Software Process
9
Characteristics of Software Process [Cont’d]
• Understandability,
• Effectiveness,
• Predictability,
• Maintainability,
• Reliability,
• Changeability,
• Improvement,
• Monitoring and Tracking,
• Rapidity, and
• Repeatability.
10
Characteristics of Software Process [Cont’d]
These terms describe various characteristics of a software process, which are essential for ensuring
that the software development lifecycle (SDLC) is effective, efficient, and produces high-quality
software. Let's break down each characteristic:
1. Understandability:
The software process should be easy to understand by all stakeholders, including developers,
project managers, and clients. Clear documentation and a well-defined process help ensure
that everyone involved knows what to do and when to do it.
2. Effectiveness:
The process should be effective in achieving its goals, such as delivering software that meets
user requirements, is on time, and within budget. An effective process ensures that the
software project fulfills its intended purpose.
3. Predictability:
The software process should allow for predictable outcomes, meaning that with the same
inputs and conditions, the results should be consistent. Predictability helps in planning and
managing resources effectively.
4. Maintainability:
Software should be easy to maintain, meaning that future modifications, bug fixes, and
updates can be made with minimal effort and risk. A process that emphasizes maintainability
ensures long-term sustainability and adaptability of the software.
11
Characteristics of Software Process [Cont’d]
5. Reliability:
The process should produce reliable software, which operates correctly under specified conditions.
Reliability ensures that the software performs its intended functions consistently over time.
6. Changeability:
The software process should accommodate changes easily, whether due to evolving requirements,
technology updates, or user feedback. A changeable process ensures that the software can adapt
to new circumstances without significant disruption.
7. Improvement:
The process should include mechanisms for continuous improvement. This involves regularly
reviewing and refining the process to enhance its efficiency, effectiveness, and overall quality.
8. Monitoring and Tracking:
The process should involve continuous monitoring and tracking of progress, quality, and performance.
This helps in identifying potential issues early and ensures that the project stays on track.
9. Rapidity:
The process should be designed to deliver results quickly, reducing the time between the initial
idea and the final product. Rapidity is particularly important in fast-paced environments where
time-to-market is critical.
10. Repeatability:
The process should be repeatable, meaning that the same steps can be followed to achieve the
same results across different projects or iterations. Repeatability ensures consistency and
reliability in software development.
12
[OR] Characteristics of Software Process
1. Predictability: The software process should provide predictable outcomes,
meaning that similar inputs should yield similar outputs across different
instances.
2. Repeatability: The process should be repeatable, allowing teams to achieve
the same results by following the same steps under similar conditions.
3. Efficiency: It should be efficient in terms of time, cost, and resource
utilization, minimizing waste and optimizing productivity.
4. Quality: The process should focus on delivering high-quality software that
meets the defined requirements and is free of defects.
5. Flexibility: It should be flexible enough to adapt to changes in requirements,
technology, or market conditions.
6. Manageability: The process should be manageable, meaning it can be easily
controlled, measured, and improved over time.
7. Visibility: There should be clear visibility into the progress and status of the
software project at any given time.
8. Consistency: The process should ensure that all stakeholders follow a
consistent approach, which helps in reducing variability and enhancing
communication.
13
Process Classification
14
Process Classification
16
Process Classification
17
Process Classification
18
Process Classification
19
Phased Development Life Cycle
20
Phased Life Cycle Activities
Project initiation
Maintenance Analysis
SDLC
Deployment Design
Testing Coding
• Project Initiation
– The aim of project initiation is to study the existing system;
determine the feasibility of a new system; and define the
scope, key elements, and a plan for the successful
completion of the project.
– Project initiation involves preliminary investigation,
feasibility study, and a project plan.
– Preliminary investigation (PI) is the initial step that gives a
clear picture of what actually the physical system is.
– PI goes through problem identification, background of the
physical system, and the system proposal for a candidate
system.
22
Phased Life Cycle Activities
• Project Initiation
– The purpose of the feasibility study is to determine whether the
implementation of the proposed system will support the mission
and objectives of the organization.
– Feasibility study ensures that the candidate system is able to satisfy
the user needs; promotes operational, effective use of resources;
and is cost effective.
– There are various types of feasibility study performed, such as
technical, economical, operational, and so on
– Feasibility report is prepared and submitted to the top-level
management. A positive report leads to project initiation.
– A detailed project plan is actually prepared after knowing the
requirements.
23
Phased Life Cycle Activities
• Requirements Analysis
– Requirement analysis is the process of collecting factual
data, understanding the processes involved, defining the
problem, and providing a document for further software
development.
– Requirement analysis is a systematic approach to elicit,
organize, and document the requirements of a system.
– The requirement analysis phase consists of three main
activities: requirements elicitation, requirements
specification, and requirements verification and validation.
24
Phased Life Cycle Activities
• Software Design
– Software design focuses on the solution domain of the project on
the basis of the requirement document prepared during the
analysis phase.
– The goal of the design phase is to transform the collected
requirements into a structure that is suitable for implementation
in programming languages.
– The design phase has two aspects: physical design and logical
design.
– Physical design concentrates on identifying the different
modules or components in a system that interact with each other
to create the architecture of the system.
– In logical design, the internal logic of a module or component is
described in pseudo code or in an algorithmic manner.
25
Phased Life Cycle Activities
• Coding
– The coding phase is concerned with the development of the
source code that will implement the design.
– This code is written in a formal language called a programming
language, such as assembly language, C++, Java, etc.
– Good coding efforts can reduce testing and maintenance tasks.
– Programs must be modular so that they can help in rapid
development, maintenance, and enhancements of the system.
– The programs written during the coding phase must be easy to
read and understand.
26
Phased Life Cycle Activities
• Testing
– Before the deployment of the software, testing is performed to
remove the defects in the developed system
– Testing covers various errors at the requirements, design, and
coding phases.
– Testing is performed at different levels: unit testing, integration
testing, system testing, and acceptance testing.
– Various special tests are also performed to check the
functionality of the system, such as recovery testing,
performance testing, load testing, security testing, and so on.
– Testing is an important technique of software quality assurance.
27
Phased Life Cycle Activities
• Deployment
– The purpose of software deployment is to make the software available
for operational use.
– It includes various activities to make a system available for assembly
and to transfer it to the customer site.
– Required resources are procured to operate at the customer site and
important information is collected for the deployment process.
– During deployment, all the programs files are loaded onto user’s
computer. After installation of all the modules of the system, training
of the user starts.
– Documentation is prepared in the form of a user manual or system
operation process which ensures thecontinuity of the system.
28
Phased Life Cycle Activities
• Maintenance
– The maintenance phase comes after the software product is released
and put into operation through the deployment process.
– Software maintenance is performed to adapt to changes in a new
environment, correct bugs, and enhance the performance by adding
new features.
– The maintenance activities can be classified as adaptive (changes in
the software environment), perfective (new user requirements),
corrective (fixing errors), preventive (prevent problems in the future).
– The software will age in the near future and enter the retirement
stage.
– In extreme cases, the software will be reengineered onto a different
platform.
29
Software Development Process Models
∙ Concurrent Models.
31
Classical Waterfall Model
Feasibility
study Feasibility report
Requirements
analysis Requirement document
Software
design Design document
Coding
Programs
Testing and
Integration Test reports
Deployment Release
reports
Operation and
Maintenance
Figure 2.4: Classical waterfall model
32
Classical Waterfall Model
• Advantages
– The main advantage of the waterfall model is that it is easy to
understand and implement.
– It is a document-driven process that can help new people to transfer
knowledge.
– Milestones and deliverables at each stage can be used to monitor the
progress of the project.
– This model works well on large and mature products.
– Where the requirements are well understood and the developers are
confident, the waterfall model works well.
33
Classical Waterfall Model
• Disadvantages
– The model assumes that the requirements will not change during the project.
Sometimes, it is unrealistic to expect accurate requirements early in a project.
– It is very difficult to estimate the time and cost in the waterfall model.
– The people mentally ready to work in a phase will have to wait until its
previous phase is completed.
– Due to so much emphasis on documentation, sometimes people may become
irritated.
– This model works well on large and mature products.
34
Classical Waterfall Model
Top ‘5’ Real Time Examples In Our Today’s Day-To-Day Life
35
Iterative Waterfall Model
38
Iterative Waterfall Model
39
Incremental Model
40
Incremental Model
Iteration 1 Release 1
Design Coding Testing Deployment
Iteration 2 Release 2
Requirement Design Coding Testing Deployment Operation
analysis and
maintenance
… …
Iteration N Release N
Design Coding Testing Deployment
41
Incremental Model
• The requirements are functionally divided and prioritized according to the needs of
the customers.
• A blueprint of the product based on the prioritized requirements is also designed,
which describes dependency of tasks on each other.
• A project control list is prepared, describing the order of the tasks to be performed
and outcomes of the task to be released.
• Each task in the project control list is treated as a mini project. Each item in the list
is a module, which is to be developed in increments.
• Each task is removed from the project control list and developed using the waterfall
model in a sequential manner.
• Each new release is integrated with the existing increments to provide enhanced
functionality with each delivered increment.
• The length of iterations is generally kept very short and fine. For example, an
iteration can be a duration of 6 weeks, 10 weeks, etc.
42
Incremental Model
43
Incremental Model
44
Rapid Application Development (RAD) Model
46
Rapid Application Development (RAD) Model
RAD Model typically consists of ‘4’ key phases:
47
Rapid Application Development (RAD) Model Diagram
48
Rapid Application Development (RAD) Model
RAD Model: Real-Time Example [Banking Application Development]:
49
Rapid Application Development (RAD) Model
RAD Model: Real-Time Example [Banking Application Development]:
50
Rapid Application Development (RAD) Model
RAD Model: When to Use RAD? & Avoid RAD if:
51
Rapid Application Development (RAD) Model
RAD Model: Comparison with Traditional Waterfall Model:
52
Rapid Application Development (RAD) Model – Pro’s & Con’s
Problems in RAD:
• Requires a number of RAD teams.
• Requires commitment from both developer and customer for
rapid-fire completion of activities.
Rapid Application Development (RAD) Model – Pro’s & Con’s
Prototyping Model
• Prototyping is an alternative in which partial working software (i.e.
a prototype) is initially developed instead of developing the final
product.
• IEEE defines prototyping as “a type of development in which
emphasis is placed on developing prototypes early in the
development process to permit early feedback and analysis in
support of the development process” .
• Prototype development is a toy implementation, which provides a
chance to the customer to give feedback for final product
development.
• A prototype provides limited functionalities, low reliability, and
insufficient performance as compared to the actual software.
• A prototype helps customer to understand the requirements that can
further reduce the possibility of requirement changes.
55
Prototyping Model
Information
gathering
Quick
design
Coding
Testing
Deployment
Maintenance
57
Prototyping Model
When to Use Prototyping? & Avoid Prototyping if:
58
Prototyping Model Pro’s & Con’s
• The prototype model is well suited for projects where
requirements are difficult to understand and the customer is
not confident in illustrating and clarifying the requirements.
• It fits best where the customer risks are related to the changing
requirements (software and hardware requirements) of the
projects.
• But this model requires exclusive involvement of the
customer, which is not always possible.
[OR]
59
Prototyping Model Pro’s & Con’s
60
Spiral Model
61
Spiral Model
62
Spiral Model
63
Spiral Model
64
Spiral Model
65
RUP Process Model
67
RUP Process Model
• Inception phase:
– It establish the business case (it is a document that justifies a project or
initiative in software engineering by evaluating the potential benefits, costs, and risks. It
helps decision-makers determine if a proposed strategy is feasible and worth the
investment)
for the system and delimit the project scope.
– The business case includes success criteria, risk
assessment, and estimate of the resources needed; and a
phase plan showing dates of major milestones.
– This phase produces vision document of the project, initial
use-case model, initial risk assessment, business model,
and a project plan showing the phases and iterations.
– At this stage, customers will be clear with their
requirement and life cycle objectives milestone will be
produced. 68
RUP Process Model
• Elaboration phase:
– It analyzes the problem domain, establish an architectural
framework, develop the project plan, and eliminate the highest
risk elements of the project.
– The architectural decisions have to be made with an
understanding of the whole system: its scope, major functional
and nonfunctional requirements.
– In the elaboration phase, an executable architecture prototype is
built in one or more iterations, depending on the scope, size,
risk, and novelty of the project.
– At the end of the elaboration phase, the second important project
milestone will be the life cycle architecture milestone.
69
RUP Process Model
• Construction phase:
– During the construction phase, all application features are
developed, integrated, and thoroughly tested.
– This phase also focuses on the user manuals and the current
release details.
– At the end of this phase, a beta release becomes operational
for the customers.
70
RUP Process Model
• Transition phase:
– The purpose of the transition phase is to move the software
product to the user community for working.
– This phase includes several iterations, including beta
releases, general availability releases, as well as bug-fix
and enhancement releases.
– Effort is made in developing user-oriented documentation,
training users, supporting users in their initial product use,
and reacting to user feedback.
71
RUP Process Model
• Each phase in the RUP can be further broken down into iterations.
• Each iteration in the RUP mitigates risks, manage changes, provide reuse,
and produces better quality products as compared to the traditional
waterfall process.
• The RUP is suitable for small development teams as well as large
development organizations.
• It can be found in a simple and clear process architecture that provides
commonality across a family of processes.
• Workflow represents the sequence of activities that produces a result of the
observable value.
• Workflows are divided into six core workflows (business modeling
workflow, requirements workflow, analysis and design workflow,
implementation workflow, test workflow, deployment workflow) and three
supporting workflows (project management workflow, configuration and
change management workflow, and environment workflow).
72
RUP Process Model
73
Concurrent Process Model (CPM)
[OR]
74
Concurrent Process Model (CPM)
75
Concurrent Process Model (CPM)
76
Concurrent Process Model (CPM)
77
Concurrent Process Model (CPM)
78
Concurrent Process Model (CPM)
Concurrent Model: Real-Time Example [Mobile-Banking App
Development System]:
79
Concurrent Process Model (CPM)
81
Concurrent Process Model (CPM)
82
Agile Process Model
• The agile process model is a group of software development methodologies
based on iterative and incremental development.
• In February 2001, ‘17’ software developers published the manifesto of agile
software development to define the approach.
• Some of the manifesto's authors formed the agile alliance. The manifesto of
agile software development is as follows:
“We are uncovering better ways of developing software by doing it and helping
others to do it” .
• The Agile manifesto consists of four key values:
– Individuals and interactions over processes and tools (collaborate and solve),
– Working software over comprehensive documentation,
– Customer collaboration over contract negotiation (feedback loop), and
– Responding to change over following a plan (dynamic roadmap).
• Agile ≠ Change.
• Agile = Ability to Embrace, Manage, and Respond to Change Effectively.
• Hence, Agile is "changing in nature" — but in a controlled, customer-
focused, and iterative way. [OR] 83
Agile Process Model
84
Agile Process Model
85
Agile Process Model (Extreme Programming – XP)
Simple design CRC
cards
Spike solutions prototype
Coding
Planning
Refactoring
Pair programming
Test
86
Agile Process Model (Extreme Programming – XP)
87
Agile Process Model (SCRUM)
88
Agile Process Model (SCRUM)
89
Agile Process Model (KANBAN)
90
Agile Process Model (KANBAN BOARD)
91
Agile Process Model (KANBAN BOARD)
92
Agile Process Model (KANBAN Example)
93
Agile Process Model (‘12’ Principles)
94
Agile Process Model (‘12’ Principles)
95
Agile Process Model (‘12’ Principles)
96
Agile Process Model (‘12’ Principles)
97
Agile Process Model
98
Agile Process Model
99
Agile Process Model
• Agile software development methods
– extreme programming (XP) (Ford, IBM)
– Scrum (Financial, legal & consultancy, Construction, data
analytics, pharma, engineering services)
– dynamic systems development method (DSDM),
– adaptive software development (ASD),
– Crystal, feature-driven development (FDD),
– test-driven development (TDD),
– pair programming,
– refactoring,
– agile modeling,
– Internet speed development, and so on
100
Agile Process Model
• Scrum
– Scrum is another popular agile framework with a set of roles and
practices.
– It is also an iterative process with the idea of timeboxing, which
is known as sprint.
– Scrum relies on a self-organizing, cross-functional team.
– There are two roles in the Scrum process: pigs and chickens.
– Pigs group includes product owner, Scrum master, and a Scrum
team.
– The group “chickens” involves users, stakeholders, and
managers
– In the Scrum process, product backlog describes "what" will be
built, which is managed by the product owner.
102
Scrum
103
REQUIREMENTS
104
REQUIREMENTS
105
REQUIREMENTS
106
REQUIREMENTS
107
REQUIREMENTS
108
REQUIREMENTS
109
Software Requirements Specification / Document [SRS / SRD]
110
Software Requirements Specification / Document [SRS / SRD]
111
Software Requirements Specification / Document [SRS / SRD]
112
Software Requirements Specification / Document [SRS / SRD]
113
Software Requirements Specification / Document [SRS / SRD]
114
Software Requirements Specification / Document [SRS / SRD]
115
Software Requirements Specification / Document [SRS / SRD]
116
Software Requirements Specification / Document [SRS / SRD]
117
SUMMARY TABLE
118