You are on page 1of 64

Fundamental of Software

Engineering

Software processes

School of Electrical Engineering and Computing


Department of computer Science and Engineering
ASTU

Tuesday, September 5, 2023


1
The Software Process
 A structured set of activities required to develop a software system(software product).
 Software processes :- refer to the methods and techniques used to develop
and maintain software.
 These are four key software process activities:
 Software specifications: The functionality of the software and constraints on
its operation must be defined.
 Software development: The software to meet the requirement must be
produced.
 Software validation: The software must be validated to ensure that it does what
the customer wants.
 Software evolution: The software must evolve to meet changing client needs.
 A software process model is a framework that describes the various stages and
activities involved in software development.
It provides a structured approach to software development, outlining the steps that
need to be taken to design, develop, test, and maintain software.
 A software process model is an abstract representation of a process .

2
Process Model
1. Waterfall Model
 The waterfall model is a linear, sequential software development process model.
 It is one of the oldest and most widely used models in software engineering.
 In the waterfall model, the software development process is divided into distinct
phases, with each phase being completed before moving on to the next one

Requirements
definition

System and
software design

Implementation
and unit testing

Integr ation and


system testing

Operation and
maintenance

3
Process Model
Requirements gathering and analysis: In this phase, the requirements for the software are gathered
and analyzed. This includes identifying the needs of the users, defining the scope of the project, and
determining the functional and non-functional requirements of the software.

Design: the software design is created based on the requirements gathered in the previous phase.
This includes creating a high-level design, a detailed design, and a user interface design.

Implementation: This includes writing code, testing the code, and integrating the code into the
software.

Testing: the software is tested to ensure that it meets the requirements and specifications. This
includes unit testing, integration testing, system testing, and acceptance testing.

Deployment: In this phase, the software is deployed to the production environment. This includes
installing the software, configuring it, and providing user training.

Maintenance: In this phase, the software is maintained and updated as needed. This includes fixing
bugs, adding new features, and making changes to the software based on user feedback.

4
Waterfall model phases
Requirements analysis and definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and maintenance

The drawback of the waterfall model is the


difficulty of accommodating change after the
process is underway

5
Waterfall model Requirement and Design
Artefacts produced in the requirements and Design
phases
SRS -Software Requirements specification document
SRS might include:
User usage stories (scenarios) – Use cases.
Static analysis – class diagrams.
Behavioural analysis – sequence diagrams, state charts.

The specification and design activities are heavily time


consuming.

6
Waterfall model problems
Inflexible partitioning of the project into distinct stages
Difficult to respond to changing customer requirements

This model is only appropriate when the requirements are


well-understood

Waterfall model describes a staged development process


 Based on hardware engineering models
 Change during development is unlikely
 Widely used in large systems: military and aerospace industries

7
When to use the Waterfall Model
Requirements are very well known
Product definition is stable
Technology is understood
New version of an existing product
Porting an existing product to a new platform.

8
V-shaped SDLC model
 V-Model or V-SDLC (Verification and Validation Model)its is an extension of the Waterfall model.
 It emphasizes the importance of testing and verification in each .
 The V-Model is also known as the Verification and Validation model.

 The V-Model consists of two main branches: the left-hand side of the V represents the development phase, while
the right-hand side represents the testing phase.
 The V-Model is a highly structured and disciplined approach to software development, and it is particularly
useful for projects with well-defined requirements.
 The V-Model consists of the following phases:

 1. Requirements gathering and analysis: the requirements for the software are gathered and analyzed. This
includes identifying the needs of the users, defining the scope of the project, and determining the functional and
non-functional requirements of the software.
 2. System design: based on the requirements gathered in the previous phase. This includes creating a high-level
design, a detailed design, and a user interface design.

 3. Architectural design: This includes defining the software components, their interactions, and their interfaces.

 4. Module design: In this phase, the design of individual software modules is created based on the architectural
design created in the previous phase.

 5. Implementation: This includes writing code, testing the code, and integrating the code into the software.

 6. Testing: In this phase, the software is tested to ensure that it meets the requirements and specifications. This
includes unit testing, integration testing, system testing, and acceptance testing.

9
V-Shaped SDLC Model
A variant of the Waterfall
that emphasizes the
verification and
validation of the product.
Testing of the product is
planned in parallel with a
corresponding phase of
development

10
V-Shaped Steps
 Project and Requirements Planning  Production, operation and
– allocate resources maintenance – provide for
enhancement and corrections
 Product Requirements and  System and acceptance testing –
Specification Analysis – complete check the entire software system in
specification of the software system its environment

 Architecture or High-Level Design –


defines how software functions  Integration and Testing – check that
fulfill the design modules interconnect correctly

 Detailed Design – develop  Unit testing – check that each


algorithms for each architectural module acts as expected
component
 Coding – transform algorithms into
software

11
V-Shaped Strengths
Emphasize planning for verification and validation of
the product in early stages of product development
Each deliverable must be testable
Project management can track progress by milestones
Easy to use

12
V-Shaped Weaknesses
Does not easily handle concurrent events
Does not handle iterations or phases
Does not easily handle dynamic changes in
requirements
Does not contain risk analysis activities

13
When to use the V-Shaped Model
Excellent choice for systems requiring high reliability
– hospital patient control applications
All requirements are known up-front
When it can be modified to handle changing
requirements beyond analysis phase
Solution and technology are known

14
Structured Evolutionary Prototyping Model
Developers build a prototype during the requirements
phase
Prototype is evaluated by end users
Users give corrective feedback
Developers further refine the prototype
When the user is satisfied, the prototype code is
brought up to the standards needed for a final
product.

15
Structured Evolutionary Prototyping Steps
A preliminary project plan is developed
An partial high-level paper model is created
The model is source for a partial requirements
specification
A prototype is built with basic and critical attributes
The designer builds
 the database
 user interface
 algorithmic functions
The designer demonstrates the prototype, the user
evaluates for problems and suggests improvements.
This loop continues until the user is satisfied

16
Structured Evolutionary Prototyping
Strengths
Customers can “see” the system requirements as
they are being gathered
Developers learn from customers
A more accurate end product
Unexpected requirements accommodated
Allows for flexible design and development
Steady, visible signs of progress produced
Interaction with the prototype stimulates
awareness of additional needed functionality

17
Structured Evolutionary Prototyping
Weaknesses
Tendency to abandon structured program
development for “code-and-fix” development
Bad reputation for “quick-and-dirty” methods
Overall maintainability may be overlooked
The customer may want the prototype delivered.
Process may continue forever (scope creep)

18
When to use
Structured Evolutionary Prototyping
Requirements are unstable or have to be clarified
As the requirements clarification stage of a
waterfall model
Develop user interfaces
Short-lived demonstrations
New, original development
With the analysis and design portions of object-
oriented development.

19
4.Rapid Application Model (RAD)
Requirements planning phase (a workshop
utilizing structured discussion of business
problems)
User description phase – automated tools capture
information from users
Construction phase – productivity tools, such as
code generators, screen generators, etc. inside a
time-box. (“Do until done”)
Cutover phase -- installation of the system, user
acceptance testing and user training

20
RAD Strengths
Reduced cycle time and improved productivity
with fewer people means lower costs
Time-box approach mitigates cost and schedule
risk
Customer involved throughout the complete cycle
minimizes risk of not achieving customer
satisfaction and business needs
Focus moves from documentation to code.
Uses modeling concepts to capture information
about business, data, and processes.

21
RAD Weaknesses
Accelerated development process must give quick
responses to the user.
Risk of never achieving closure
Hard to use with legacy systems
Requires a system that can be modularized
Developers and customers must be committed to
rapid-fire activities in an abbreviated time frame.

22
When to use RAD
Reasonably well-known requirements
User involved throughout the life cycle
Project can be time-boxed
Functionality delivered in increments
High performance not required
Low technical risks
System can be modularized

23
5.Incremental Development
Rather than deliver the system as a single delivery,
the development and delivery is broken down
into increments with each increment delivering
part of the required functionality.
User requirements are prioritised and the
highest priority requirements are included in
early increments.
Once the development of an increment is
started, the requirements are frozen though
requirements for later increments can continue to
evolve.

24
Incremental Development

Define outline Assign requirements Design system


requirements to increments architecture

Develop system Valida te Integrate Valida te


increment increment increment system
Final
system
System incomplete

25
Incremental Development –Advantages
Customer value can be delivered with each
increment so system functionality is available
earlier.
Early increments act as a prototype to help
elicit requirements for later increments.
Lower risk of overall project failure.
The highest priority system services
tend to receive the most testing.

26
Incremental Model Strengths
Each release delivers an operational product
Customer can respond to each build
Uses “divide and conquer” breakdown of tasks
Lowers initial delivery cost
Initial product delivery is faster
Customers get important functionality early
Risk of changing requirements is reduced

27
Incremental Development – Problems
Lack of process visibility.
Systems are often poorly structured.

Applicability claims in the literature:


For small or medium-size interactive systems.
For parts of large systems (e.g. the user interface).
For short-lifetime systems.

28
When to use the Incremental Model
Risk, funding, schedule, program complexity, or
need for early realization of benefits.
Most of the requirements are known up-front but
are expected to evolve over time
A need to get basic functionality to the market
early
On projects which have lengthy development
schedules
On a project with new technology

29
Incremental means adding, iterative means
reworking (by Alistair Cockburn)
 Incremental development is a staging and scheduling strategy in which
the various parts of the system are developed at different times or rates and
integrated as they are completed. The alternative is to develop the entire
system with a big bang integration at the end.
 Iterative development is a rework scheduling strategy in which time is
set aside to revise and improve parts of the system. The alternative
development is to get it right the first time (or at least declare that it is
right!).

Increment Iterate
fundamentally means “add fundamentally means
.”onto .”“change
repeating the process on a repeating the process on the
.new section of work same section of work
repeat the process (, design, repeat the process (, design,
,implement, evaluate) ,implement, evaluate)
30
Incremental Development

 The first increment delivers one slice of


functionality through the whole system.
 The second increment delivers another
slice of functionality through the whole system.
 The third increment delivers the rest of
the system

31
Iterative Development

 The first iteration delivers enough of


feature 1 to evaluate what is correct
and what needs revision.
 After the second iteration, some revised
parts still need improvement.
 The third iteration produces the final
and stable feature

32
Problems with incremental development (from a
waterfall eye…)
 Management problems
 Progress can be hard to judge and problems hard to find because
there is no documentation to demonstrate what has been done.

 Contractual problems
 The normal contract may include a specification; without a
specification, different forms of contract have to be used.

 Validation problems
 Without a specification, what is the system being tested against?

 Maintenance problems
 Continual change tends to corrupt software structure making it more
expensive to change and evolve to meet new requirements.

33
Incremental & iterative - summary
 Iterative model - This model iterates requirements, design, build and
test phases again and again for each requirement and builds up a system
iteratively till the system is completely build.
 Incremental model - It is non integrated development model. This
model divides work in chunks and one team can work on many chunks.
It is more flexible.
 Spiral model - This model uses series of prototypes in stages,
the development ends when  the prototypes are developed into
functional system. It is flexible model and used for
large and complicated projects.
 Evolutionary model - It is more customer focused model. In this model
the software is divided in small units which is delivered earlier to the
customers.
 V-Model - It is more focused on testing. For every phase some testing
activity are done.

34
6.Spiral Development
 The Spiral model is a software development approach that combines
elements of both waterfall and iterative development models.
 It emphasizes risk management and allows for incremental development
and refinement of the software through a series of iterations or spirals.
Here are the key aspects of the Spiral model:
 Risk Analysis :The project's risks, such as technical, schedule, or budget risks, are
identified and evaluated.
 Planning :This plan includes the objectives, deliverables, schedules, and resources
required for each iteration.
 Engineering: Each iteration involves requirements gathering, design, coding,
and testing.
 Evaluation: a review is conducted to evaluate the progress, assess the risks,
and determine if the project should proceed to the next iteration
 Risk Management: involve revisiting requirements, redesigning certain
components, or adjusting the project plan.

35
Spiral Model

36
Spiral model sectors
Objective setting
Specific objectives for the phase are identified.
Risk assessment and reduction
Risks are assessed and activities put in place to
reduce the key risks.
Development and validation
A development model for the system is chosen
which can be any of the generic models.
Planning
The project is reviewed and the next phase of the
spiral is planned.

37
Spiral Model Strengths
Provides early indication of insurmountable risks,
without much cost
Users see the system early because of rapid
prototyping tools
Critical high-risk functions are developed first
The design does not have to be perfect
Users can be closely tied to all lifecycle steps
Early and frequent feedback from users
Cumulative costs assessed frequently
38
Spiral Model Weaknesses
Time spent for evaluating risks too large for small or low-
risk projects
Time spent planning, resetting objectives, doing risk
analysis and prototyping may be excessive
Risk assessment expertise is required
Spiral may continue indefinitely
Developers must be reassigned during non-development
phase activities
May be hard to define objective, verifiable milestones that
indicate readiness to proceed through the next iteration

39
When to use Spiral Model
When creation of a prototype is appropriate
When costs and risk evaluation is important
For medium to high-risk projects
Long-term project commitment unwise because of
potential changes to economic priorities
Users are unsure of their needs
Requirements are complex
New product line
Significant changes are expected (research and
exploration)

40
7. The (Rational) Unified Process
It is an iterative and incremental approach to software development
that provides a framework for managing and executing software
projects.
Here are the key aspects of the RUP software process model.
Phases: RUP divides the software development lifecycle into four
phases:
Inception, Elaboration, Construction, and Transition.
Iterations: Within each phase, the development work is organized
into iterations.
An iteration is a time-boxed period where a subset of the
requirements is selected, and the corresponding analysis, design,
implementation, and testing activities are performed.

41
7. The (Rational) Unified Process
 Workflows: RUP defines a set of workflows that represent the major activities
involved in software development.
 These workflows include Business Modelling, Requirements, Analysis and Design,
Implementation, Test, Deployment, and Configuration and Change Management.
 Each workflow provides guidelines, techniques, and artefacts to support the
activities within that workflow.
Artifacts:
 RUP emphasizes the creation and management of artifacts throughout the
development process.
 Artifacts are documents, models, or other tangible outputs that capture and
communicate information about the project.
 Examples of artefacts in RUP include use case models, class diagrams, test plans,
and project plans.

42
7. The (Rational) Unified Process
Roles and Responsibilities:
 RUP defines various roles and responsibilities for the project team
members.
 These roles include Project Manager, Business Analyst, Architect,
Developer, Tester, and Configuration Manager, among others.
 Each role has specific responsibilities and contributes to the project's
success.

Risk Management:
 RUP places a strong emphasis on risk management.
 Risks are identified, analysed, and managed throughout the project.
 Risk management activities include risk identification, risk assessment, risk
mitigation planning, and risk monitoring.
 By addressing risks proactively, RUP helps in reducing project uncertainties and
improving project outcomes.

43
(R)UP phase model

Phase iteration

Inception Elaboration Construction Transition

44
(R)UP phases
One cycle consists of four phases:
Inception
 Establish the business case for the system.
Elaboration
 Develop an understanding of the problem domain and the
system architecture.
Construction
 System design, programming and testing.
Transition
 Deploy the system in its operating environment.

45
(R)UP phases and iterations

Picture taken from:


http://www.ibm.com/developerworks/webservices/library/ws-soa-term2/
46
(R)UP good practice
Develop software iteratively
Manage requirements
Use component-based architectures
Visually model software
Verify software quality
Control changes to software

48
8.Agile Development

49
Project Failure – the trigger for Agility
 One of the primary causes of project failure was
the extended period of time it took to develop
a system.
 Costs escalated and requirements changed.

 Agile methods intend to develop systems more


quickly with limited time spent on analysis
and design.

50
What is an Agile method? (1)
 Focus on the code rather than the design.
 Based on an iterative approach to software
development.
 Intended to deliver working software quickly.
 Evolve quickly to meet changing requirements.
 There are claims that agile methods are probably best
suited to small/medium-sized business systems or PC
products.
 Most popular Agile methods are scrum , extreme
programming and KANBAN

51
Scrum

52
Extreme Programming

53
KANBAN

54
Summary of Principles of Agile Methods

55
When to use Agile method
When you have best programmers
Full participation of User sand decision makers
At least one experienced and competent staff
rapid feedback on decisions from user and decision
maker
The system is not complex
The design is flexible when ever the requirements are
change

56
Process Assessment
• In the CMM model, the maturity level of
an organization tells us to what extent an
organization can produce low cost, high
quality software.
• Having known the current maturity level,
an organization can work to reach the next
higher level.

57
< 1% Optimizing
SEI Capability
Maturity Model Process Control

2-3% Managed

Process Measurement

20% Defined

Process Definition

30% Repeatable

Basic Management Control

45% Initial
60
CMM - Initial (Level 1)
Processes followed are Adhoc and immature and are not
well defined.
Unstable environment for software development.
No basis for predicting product quality, time for
completion, etc.
Limited project management capabilities, such as no
systematic tracking of schedules, budgets, or progress.
Limited communication and coordination among team
members and stakeholders.
Highly dependent on individual skills and knowledge
rather than standardized processes.
High risk of project failure or delays due to lack of
process control and stability

61
CMM - Repeatable (Level 2)
 Basic project management processes are established to track cost, schedule,
and functionality
 The necessary process discipline is in place to repeat earlier successes on
projects with similar applications
 Success achieved through basic project management; not advanced
technologies
 Project Planning
 Configuration Management
 Requirements Management
 Software Quality Assurance

“BASIC MANAGEMENT CONTROL”


62
CMM - Defined (Level 3)
 The software process for both management and engineering activities is
documented, standardized, and integrated into a standard software process for
the organization
 All projects use an approved, tailored version of the organization’s standard
software process for developing and maintaining software Formality lends itself
to improvement
 Peer Reviews- In this method, defects are removed by using a number of review
methods like walkthroughs, inspections, buddy checks, etc.
 Intergroup Coordination- It consists of planned interactions between different
development teams to ensure efficient and proper fulfilment of customer needs.
 Organization Process Definition- Its key focus is on the development and
maintenance of the standard development processes.
 Organization Process Focus- It includes activities and practices that should be
followed to improve the process capabilities of an organization.
 Training Programs- It focuses on the enhancement of knowledge and skills of the
team members including the developers and ensuring an increase in work
efficiency.

“PROCESS DEFINITION”
63
CMM - Managed (Level 4)
 Detailed measures of the software process and product quality are collected

 Both the software process and products are quantitatively understood and

controlled.
 At this stage, quantitative quality goals are set for the organization for software
products as well as software processes.
 The measurements made help the organization to predict the product and process
quality within some limits defined quantitatively.
 Software Quality Management- It includes the establishment of plans and
strategies to develop quantitative analysis and understanding of the product’s quality.
 Quantitative Management- It focuses on controlling the project performance in a
quantitative manner

“PROCESS MEASUREMENT”
64
CMM - Optimizing (Level 5)
 Continuous process improvement is enabled by quantitative (metrics) feedback from the

process

 Continuous process improvement is enabled by piloting innovative ideas and technologies.

  focuses on continuous process improvement in the organization using quantitative feedback.


 Use of new tools, techniques, and evaluation of software processes is done to prevent recurrence of
known defects.
 Process Change Management- Its focus is on the continuous improvement of the organization’s
software processes to improve productivity, quality, and cycle time for the software product.
 Technology Change Management- It consists of the identification and use of new technologies to
improve product quality and decrease product development time.
 Defect Prevention- It focuses on the identification of causes of defects and prevents them from
recurring in future projects by improving project-defined processes.

“PROCESS CONTROL”
65
Thank You!
Q?

72
Quiz-1(10 %)
1. What is the purpose of process model
2. Briefly Describe the difference between computer
science and Software Engineering
Select the best process model for the following system
and justify your answer
1- developed online sale and payment system
2- develop E-commerce system
3- Crime Notification system

73

You might also like