0% found this document useful (0 votes)
6 views

3-4 Software Development Models

The document discusses software processes, defining them as structured activities that encompass all stages of software development, from requirements to decommissioning. It contrasts plan-driven approaches, like the Waterfall model, with Agile methods, emphasizing the importance of adaptability to change and the benefits of iterative development. Additionally, it highlights the growing trend towards reuse-oriented software engineering and the role of prototyping in managing changes and improving system usability.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

3-4 Software Development Models

The document discusses software processes, defining them as structured activities that encompass all stages of software development, from requirements to decommissioning. It contrasts plan-driven approaches, like the Waterfall model, with Agile methods, emphasizing the importance of adaptability to change and the benefits of iterative development. Additionally, it highlights the growing trend towards reuse-oriented software engineering and the role of prototyping in managing changes and improving system usability.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 66

Software processes

Vũ Thị Hồng Nhạn

([email protected])

Dept. of Software Engineering, FIT, UET

Vietnam National Univ., Hanoi


Contents
 Software process vs. software development processes

 Fundamental activities

 Coping with change

 Process improvement

2/25/2025 Software processes Page 2


Software process

 A software process is a structured set of activities that cover all aspects of


software development, from early requirements for the system through
development, deployment, evolution once the system is in use, and finally
the system’s decommissioning

 There are several formal software processes, but all of them share
four fundamental activities, sometimes in different forms
 Specification: defining what the software should do

 Design: defining the organization and structure of the system

 Implementing & testing: developing the programs and testing to ensure they
are free of bugs and meet the requirements

 Evolution: modifying the system in response to changing customer needs

2/25/2025 Software processes Page 3


Software process

 These activities are part of various software development models, such as


the Waterfall model, Agile, and DevOps

2/25/2025 Software processes Page 4


Plan-driven approach vs. Agile approach

 Plan-driven processes are processes where all of


the activities are planned in advance and
progress is measured against this plan

 Agile processes do not reply on a detailed project plan;

 instead, the software is developed in a series of increments, with the


functionality of each increment dependent on the overall progress of
development

2/25/2025 Software processes Page 5


Software development processes
Software development processes
The waterfall model
 A plan-driven approach

 Incremental development
 Maybe plan-driven or agile

 Reuse-Oriented Software Engineering (ROSE)


i.e., integration and configuration

 The system is assembled from existing configurable components

 may also be plan-driven or agile

2/25/2025 Software processes Page 7


Common Plan-Based Models
Waterfall Model Spiral Model

V-Model (Verification & Validation)


Waterfall model
 It’s the original, best-known, and still widely used process

 Was introduced around 1970

 This process was derived from a standard engineering approach that had been
used across the engineering industry for many years

2/25/2025 Software processes Page 9


Problems with waterfall model
 It’s a document-driven process, so each phase in the
process produces an output

 If any change occurs in a later phase, significant effort


is required to modify documents created earlier in
the process

 This often leads to “freezing” the software after the


development process is complete, thereby avoiding
changes – even if such changes could provide benefits
to the company or organization purchasing the
software

2/25/2025 Software processes Page 10


Problems with waterfall model...
 Waterfall model is only suitable when requirements are well-known,
meaning there will not be any changes in the system

 However, most business systems evolve rapidly, so the assumption of no


change is not typical for most business environments

 The waterfall process is widely used in engineering project where a system


is developed at different sites by different teams

 Informal coordination is very difficult in these settings

 Therefore, a document-driven process is used to coordinate the work

 However, elements of agile development are often incorporated as well

2/25/2025 Software processes Page 11


Agile processes

 Agile methods are an incremental or iterative approach to development,


based on a series of iterations,

 each typically lasts 2 or 4 weeks, during which discrete units of system


functionality are developed

 The aim of agile methods is to minimize documentation and communication


overhead, focusing primarily on developing the operational program

 It’s an approach that is generally much more responsive to change

 The goal is to deliver useful functionality to users more quickly than the
waterfall process

2/25/2025 Software processes Page 12


Agile processes…

 In agile approach, we still have 4 common activities


 However, instead of occurring in a strict sequence as seen in the waterfall
model, these activities are interleaved
 Perform a bit of specification
 Followed by a bit of design, then a bit of implementation
 And repeat the process iteratively

2/25/2025 Software processes Page 13


Agile processes…

 Agile methods offer several benefits

 The cost of implementing changes to customer requirement is


reduced

 The amount of analysis and documentation that needs to be redone is


less than what is required with the waterfall model

 It’s easy to get customer feedback because there is always a


functional version of the system. Customers can see what’s going on
and check if it meets their needs

2/25/2025 Software processes Page 14


Problems with agile approach

 The process is invisible because documentation is avoided,


making it difficult to track the progress of the system

 Additionally, coordinating activities across different teams


becomes challenging

 Unless, time and money are spent on refactoring to improve


the software, frequent changes can degrade its structure

2/25/2025 Software processes Page 15


Reuse-oriented software process

 Over the last 15 years or so, we have seen a significant change


in the way software is developed, with much more emphasis
on reusing existing software rather than developing it from
scratch

 As a result, the approach to development is

 Find existing software systems or components and integrate them into


a new system

 Reused elements may need to be configured to adapt their behavior


and functionality to meet user requirements

2/25/2025 Software processes Page 16


What types of software can be reused?

 Standard-alone application systems can be configured for use in a specific


environment

 We can integrate reusable components with other reusable or specially


written components

 The 3rd type is web services which are developed according to service
standards and are available for remote invocation

2/25/2025 Software processes Page 17


Model for Reuse-oriented SE

try to
look for • Go back to the In case where Integrate them
understand
reusable customer, the application with the adapted
what the
software • Modify the system is existing
system needs requirements
& Evaluate if it already components to
to do because the
meets the available, we create a new
reused
needs of the only need to system
software
customer doesn’t meet
adapt it by
the necessary making some
specification configuration to
ensure it works
in the current
context

2/25/2025 Software processes Page 18


Mixed approach
 It involves a mix of plan-based and agile development
 It’s plan-based because requirements are planned in advance, but an
iterative and agile approach can be taken for design and implementation
incrementally
 There is no clear-cut line between plan-based and agile processes
 However, when it comes to critical systems, such as safety-critical
systems, we need to conduct a very detailed analysis of the requirements
 Therefore, an upfront requirements specification (in the form of documents)
is necessary to ensure that the work is done properly and to demonstrate that
the system is safe

 These types of systems are usually developed using a plan-based process

2/25/2025 Software processes Page 19


Agile software products & apps
 Off-the-shelf products are typically developed using an agile
process

 This approach is suitable for this type of product because the


specifications are quite flexible

 The specifications are created by the company that is


developing the product

2/25/2025 Software processes Page 20


Fundamental activities in SE
Fundamental activities

 Software specification involves defining what the system should do,


specifying what should be implemented, and describing the expected
behavior of the software

 Design and implementation focus on organizing the software and data


structures and implementing the system in a programming language

 Validation involves testing the system for bugs and verifying that it meets the
users’ requirements

 Software evolution occurs after the software has been deployed, when it is
modified to accommodate changing user requirements

2/25/2025 Software processes Page 22


1. Specification
 The first activity, specification, is sometimes called Requirement Engineering

 Basically, the requirements engineering process consists of several sub-


processes or activities, as represented in the figure

The 3rd phase is concerned with


Engineers work with checking whether the
customers/users to requirements are sensible,
understand what they want achievable, and implementable
from the system

The second phase involves


taking the analysis and
defining a document that
can be used by the
development team as a
basis for the system’s design

2/25/2025 Software processes Page 23


2. Design process

Software design and


implantation starts with
actually working out an
architecture and major
components of the system

2/25/2025 Software processes Page 24


2. Design activities
 Architectural design: this phase involves identifying the overall structure of
the system, including the principle components (subsystems or modules), their
relationships, and how they are distributed

 Database design: in this phase, you define the system’s data structures and
how they are represented in a database

 Interface design: This phase specifies the interfaces between system


components

 Component selection & design: in this phase, you search for and select
reusable components for the system

2/25/2025 Software processes Page 25


3. System implementation
 The implementation phase involves adding details to the
design and programming the system
 Software can be implemented by developing either new
programs or by configuring a reusable application system
 Programming is typically an individual activity without a
standardized process, as people have different approaches to
programming
 Debugging, which involves using tests to reveal and correct
program faults, is a critical activity

2/25/2025 Software processes Page 26


3.1 V&V and testing
 V&V aims to demonstrate that a system meets its specified requirements
(verification – based on document requirements) and also fulfills the actual
needs of the customer (validation – directly confirming accuracy with users)

 System testing involves executing the system using test cases derived
from data specifications to be processed by the system

 This data is not real but rather created by developers or the testing team to be
consistent with user specifications

2/25/2025 Software processes Page 27


3.2. Testing process
 The testing process varies widely from one organization to another
 Within the testing process, there are generally three main activities:

This is done by This occurs at several levels,


developers, and including testing the API,
Customers
sometimes techniques verifying that the system
determine
such as test-first meets customer
whether the
development are requirements, and checking
software
applied the system’s non-functional
meets their
behaviors (such as
needs
performance, reliability, etc….
2/25/2025 Software processes Page 28
3.2 Testing process...
 In a plan-driven process, we sometimes use a testing model called the V model (a software
development model that extends the Waterfall Model by emphasizing testing at every
development phase)

 Each stage of the development process has a corresponding testing activity

2/25/2025 Software processes Page 29


4. Software evolution process
 Requirements change as business circumstances evolve, and software must adapt
to support the business, so it must evolve and change

 Sometimes changes introduce new bugs into the system or reveal existing bugs
that were previously hidden. This means the system must be modified and
redeployed the cycle again

2/25/2025 Software processes Page 30


Coping with change
Coping with change
 Change is inevitable in all large software projects.

 Business changes lead to new or modified system


requirements, while new technologies create opportunities to
improve implementations

 Changing platforms also necessitate application adjustments

 Change results in rework, so the costs of change include both


rework (e.g., reanalyzing requirements) and the costs of
implementing new functionality

2/25/2025 Software processes Page 32


Reducing the costs of rework
 Change anticipation involves incorporating activities in the software
process that anticipate potential changes, allowing for adjustments before
significant rework is needed
 E.g., a prototype system may be developed to demonstrate key features to
customers

 Change tolerance refers to designing the process so that changes can be


accommodated at relatively low cost
 This approach typically involves some form of incremental development, where
proposed changes can be implemented in increments that have not yet been
developed

 If any change cannot be implemented, only a single increment may need to be


altered to incorporate it

2/25/2025 Software processes Page 33


Coping with changing requirements

 System prototyping involves quickly developing a version of the system,


or part of it, to verify customer requirements and asses the feasibility of
design decision
 This approach support anticipating changes

 Incremental delivery involves delivering parts of the systems (increments)


to customer for feedback and experimentation
 This approach support both change avoidance and change tolerance

2/25/2025 Software processes Page 34


Software prototyping
 A prototype is an initial version of a system used to demonstrate concepts
and test design options

2/25/2025 Software processes Page 35


Software prototyping
 A prototype can be used in ….
 The requirement engineering process to assist with requirements elicitation and
validation
 The design process to explore options and develop a UI design
 The testing process to conduct back-to-back tests

smart energy monitoring system


2/25/2025 Software processes Page 36
Benefits of prototyping
 Improved system usability
 Closer alignment with users’ real needs
 Enhanced design quality
 Better maintainability
 Reduced development effort

2/25/2025 Software processes Page 37


The process of prototype development

2/25/2025 Software processes Page 38


Prototype development
 Prototyping may use rapid development languages or tools and may
involve omitting some functionality

 The prototype should focus on areas of the product that are not
well understood

 Error checking and recovery might be excluded from the prototype,


with an emphasis on functional rather than non-functional
requirements, such as reliability and security

2/25/2025 Software processes Page 39


Prototype development: example

2/25/2025 Software processes Page 40


Throw-away prototype
 Prototypes should be discarded after development, as they are not a
suitable foundation for a production system

 It may be difficult or even impossible to optimize them to meet non-


functional requirements

 Prototypes are usually undocumented, and their structure often


deteriorates due to rapid changes

 Additionally, prototypes are unlikely to meet typical organization quality


standards

2/25/2025 Software processes Page 41


Incremental delivery
 Instead of delivering the system in a single release, development and delivery
are divided into increments, with each increment delivering part of the
required functionality

 User requirements are prioritized with the highest- priority requirements


included in the early increments

 Once development of an increment begins, its requirements are frozen, while


requirements for later increments can continue to evolve

2/25/2025 Software processes Page 42


Incremental development & delivery

 Incremental development

 Develop the system in increments, evaluating each increment before moving on


to the next

 The approach commonly used in agile methodology

 Evaluation is typically conducted by a user or customer proxy

 Incremental delivery

 Deploy each increment for end-user use, allowing for a more realistic evaluation
of the software’s practical application

2/25/2025 Software processes Page 43


Incremental delivery of a system

2/25/2025 Software processes Page 44


Incremental delivery advantages
 Customer value( features, functionalities, outcomes that are valuable) can
be delivered with each increment, making system functionality available
earlier

 Early increments serve as prototypes to help gather requirements for later


stages

 This approach reduces the overall risk of project failure

 The highest-priority system services usually undergo the most rigorous


testing

2/25/2025 Software processes Page 45


Incremental delivery problems
 Most systems require a set of basic facilities that are used by different parts
of the system

 Since requirements are not defined in detail until an increment is to be


implemented, it can be difficult to identify the common facilities needed by
all increments

 The essence of iterative processes is that the specification is developed


alongside the software

 However, this conflicts with the procurement model of many organizations,


where the complete system specification is a part of the system
development contract

2/25/2025 Software processes Page 46


Process improvement
 Many software companies have turned to software process improvement as a
way to enhance the quality of their software, reduce costs, or accelerate their
development processes

 Process improvement involves understanding existing processes and


modifying them to increase product quality and/or reduce costs and
development time

2/25/2025 Software processes Page 47


Approach to improvement
 Process maturity in software development measures how well an
organization has implemented and refined its processes over time.

 The process maturity approach focuses on improving process and


project management, as well as introducing good software
engineering practices

2/25/2025 Software processes Page 48


The process of improvement cycle

2/25/2025 Software processes Page 49


Process improvement activities
 Process measurement
 You measure one or more attributes of the software process or product

 These measurements create a baseline that helps you determine if process


improvements have been effective

 Process analysis
 The current process is assessed, and process weakness and bottlenecks are
identified
 Process models that describe the process may be developed

 Process change
 Changes are made to address some of the identified process weakness

 These changes are implemented

 and the cycle resumes to collect data on the effectiveness of the changes

2/25/2025 Software processes Page 50


Process measurement

 Whenever possible, quantitative process data should be collected

 However, if organizations don’t have clearly process standards, this


becomes very difficult, as it is unclear what should be measured

 Process measurements should be used to assess improvements in


processes, but this does not mean that measurements should
directly drive the improvements

 The primary driver of improvements should be the organization’s


objectives

2/25/2025 Software processes Page 51


Maturity Model
Processes are optimized and
continuously improved

Processes are quantitatively


measured and managed

Processes are defined,


standardized, and documents

Basic processes are in place, but they


are not standardized or documented

processes are undefined or chaotic

2/25/2025 Software processes Page 52


The Rational Unified Process (RUP)

 a modern process model derived from the work on UML and associated processes
is typically described from 3 perspectives
 A dynamic perspective that shows phases over time
 A static perspective that show process activities
 A practice perspective that suggests good practices
RUP phases
 Inception
 Establish the business case
for the system

 Elaboration
 Develop an understanding
of the problem domain and
the system architecture

 Construction
 Design, program, and test
the system

 Transition
 Deploy the system into its
operating environment

2/25/2025 Software processes Page 54


RUP good practice
 Develop software iteratively

 Manage requirements

 Use component-based architectures

 Visually model software

 Verify software quality

 Control changes to software

2/25/2025 Software processes Page 55


Static workflows
Workflow Description
Business modeling The business processes are modeled using business use cases
Requirements Actors who interact with the system are identified, and use cases are
developed to model the system’s requirements
Analysis and design A design model is created and documented using architectural models,
component models, object models, and sequence models
Implementation the components in the system are implemented and organized into sub-
systems. Automatic code generation from design models helps accelerate this
process
Test Testing is an iterative process that is conducted in parallel with implementation
Deployment A product release is created, distributed to users
Configuration and maintaining system stability and ensuring that changes are applied in a
change mgnt controlled and systematic way
Project management This supporting workflow manages the system development
Environment This workflow focuses on providing the appropriate software tools to the
software development team

2/25/2025 Software processes Page 56


Computer-aided software engineering

 Computer-aided software engineering (CASE) is software to support software


development and evolution processes

 Activity automation

 Graphical editors for system model development

 Data dictionary to manage design entities

 Graphical UI builder for user interface construction

 Debuggers to support program fault finding

 Automated translators to generate new versions of a program

2/25/2025 Software processes Page 57


CASE technology
 CASE technology had led to significant improvements in the software
process

 However, there are not the order of magnitude improvements that were once
predicted

 SE requires creative thought- this is not readily automated

 SE is a team activity

 For large projects, much time is spent in team interactions

 CASE technology does not really support these

2/25/2025 Software processes Page 58


CASE classification
 Classification helps us understand the different types of CASE tools and their
support for process activities

 Functional perspective

 Tools are classified according to their specific function

 Process perspective

 Tools are classified according to process activities that are supported

 Integrated perspective

 Tools are classified according to their organization into integrated units

2/25/2025 Software processes Page 59


Functional tool classification
Tool type
Planning tools PERT tools, estimation tools, spreadsheets
Editing tools Text editors, diagram editors, word processors
Change management tools Requirements traceability tools, change control systems
Configuration management Version management system, system building tools
tools
Prototyping tools Very high-level languages, user interface generators
Method-support tools Design editors, data dictionaries, code generators
Language processing tools Compilers, interpreters
Program analysis tool Cross reference generators, static analyzers, dynamic analyzers
Testing tools Test data generators, file comparators
Debugging tools Interactive debugging systems
Documentation tools Page layout programs, image editors
Re-engineering tools Cross-reference systems, program re-structuring systems

2/25/2025 Software processes Page 60


Activity-based tool classification

2/25/2025 Software processes Page 61


CASE integration
 Tools

 Support individual process tasks such as design consistency checking, text


editing, etc.

 Workbenches

 Support a process phase such as specification or design, normally include a


number of integrated tools

 Environments

 Support all of a substantial part of an entire software process

 Normally include several integrated workbenches

2/25/2025 Software processes Page 62


Tools, workbenches, environments

2/25/2025 Software processes Page 63


Key points
 Software processes are the activities involved in producing a software system
 Software process models are abstract representations of these processes

 General process models describe the organization of software processes


 Examples of these general models include the waterfall model, incremental
development, and reuse-oriented development

 Requirements engineering is the process of developing a software


specification

2/25/2025 Software processes Page 64


Key points (cont)
 Design and implementation processes are concerned with transforming a
requirements specification into an executable software program

 Software validation is the process of checking that the system conforms to its
specification and that it meets the real needs of the users of the system

 Software evolution takes place when you change existing software systems to
meet new requirements. The software must evolve to remain useful

 Processes should include activities such as prototyping and incremental


delivery to cope with changes

2/25/2025 Software processes Page 65


Key points
 Processes may be structured for iterative development and delivery so that
changes may be made without disrupting the system as a whole

 The principal approaches to process improvements are agile approaches,


geared to reducing process overheads, and maturity-based approaches based
on better process management and then the use of good SE practice

 The SEI process maturity framework identifies maturity levels that essentially
correspond to the use of good SE practice

2/25/2025 Software processes Page 66

You might also like