0% found this document useful (0 votes)
14 views74 pages

Chapter 02

The document discusses software processes and process models. It defines what a software process is, describes common process models like the waterfall model, and discusses process improvement frameworks. It also covers agile development as an alternative to traditional process models.

Uploaded by

ironpro224
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)
14 views74 pages

Chapter 02

The document discusses software processes and process models. It defines what a software process is, describes common process models like the waterfall model, and discusses process improvement frameworks. It also covers agile development as an alternative to traditional process models.

Uploaded by

ironpro224
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/ 74

1 Chapter 2: The Software Process

 What is a software process?


 Process models
 Agile development

Software Engineering - Le Vu Hao 8/2/2023


What is a Software
process?
2

Software Engineering - Le Vu Hao 8/2/2023


3 What a Software Process?

 A series of predictable steps - a road map that helps you create a timely,
high-quality result.
 Work products of software process are the programs, documents, and data
that are produced as a consequence of the activities and tasks defined by
the process.

Software Engineering - Le Vu Hao 8/2/2023


4 What a Software Process?

 A process is a collection of activities, actions, and tasks that are performed


when some work product is to be created.
 An activity: has a broad objective (e.g., communication with stakeholders), is
applied regardless of the application domain, size of the project, complexity of
the effort, or applied degree of software engineering.
 An action: (e.g., architectural design) a set of tasks that produce a major work
product (e.g., an architectural design model)
 A task: focuses on a small, but well-defined objective (e.g., conducting a unit
test) that produces a tangible outcome.
 A software process is an adaptable approach that enables the software
team to pick and choose the appropriate set of work actions and tasks.

Software Engineering - Le Vu Hao 8/2/2023


5 A Process Framework

Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints

Umbrella activities

Software Engineering - Le Vu Hao 8/2/2023


6 Framework Activities

 Communication => Requirements


 Planning => Software Project Plan
 Modeling
 Analysis of requirements
 Design
 Construction
 Code generation
 Testing
 Deployment

Software Engineering - Le Vu Hao 8/2/2023


7 Umbrella Activities

 Software project management


 Software project tracking and control
 Formal technical reviews
 To uncover and remove errors
 Software quality assurance
 Software configuration management
 Manages the effects of change throughout the software process

 Work product preparation and production


 Models, documents, logs, forms, and list

Software Engineering - Le Vu Hao 8/2/2023


8 Umbrella Activities

 Reusability management
 Defines criteria for work product reuse (including software components)
and establishes mechanisms to achieve reusable components.
 Measurement
 Defines and collects process, project, and product measures that assist the team
in delivering software that meets stakeholders’ needs
 Risk management
 Assesses risks that may affect the outcome of the project or the quality of the
product

Software Engineering - Le Vu Hao 8/2/2023


9
Formal technical reviews
To uncover and remove errors

Software Engineering - Le Vu Hao 8/2/2023


10 Software configuration
management
manages the effects of change
throughout the software process

Software Engineering - Le Vu Hao 8/2/2023


11
Measurement
Defines and collects process, project,
and product measures that assist the
team in delivering software that meets
stakeholders’ needs

Software Engineering - Le Vu Hao 8/2/2023


12 Applying Software process to a project

 It should be agile and adaptable (to the problem, to the project, to the team,
and to the organizational culture)
 Different degrees of applying process among projects:
 Overall flow of activities, actions, and tasks and the interdependencies among them
 Degree to which actions and tasks are defined within each framework activity
 Degree to which work products are identified and required
 Manner in which quality assurance activities are applied
 Manner in which project tracking and control activities are applied
 Overall degree of detail and rigor with which the process is described
 Degree to which the customer and other stakeholders are involved with the project
 Level of autonomy given to the software team
 Degree to which team organization and roles are prescribed

Software Engineering - Le Vu Hao 8/2/2023


Process Models
13

Software Engineering - Le Vu Hao 8/2/2023


14 Process Models

 Overview
 Popular Process Models
 The Unified Process
 Agile Development

Software Engineering - Le Vu Hao 8/2/2023


15
Overview
Generic Process Model
Process flow
Process Assessment and Improvement

Software Engineering - Le Vu Hao 8/2/2023


16
Generic Process Model
• Five framework activities -
communication, planning,
modeling, construction, and
deployment.
• process flow - describes how the
framework activities and the
actions and tasks that occur within
each framework activity are
organized with respect to
sequence and time.

Software Engineering - Le Vu Hao 8/2/2023


17 Linear process flow

Software Engineering - Le Vu Hao 8/2/2023


18 Iterative process flow

Software Engineering - Le Vu Hao 8/2/2023


19 Evolutionary process flow

Software Engineering - Le Vu Hao 8/2/2023


20 Parallel process flow

Software Engineering - Le Vu Hao 8/2/2023


21 Identifying a Task Set

 A task set defines the actual work to be done to accomplish the objectives
of a software engineering action.
 A list of the task to be accomplished
 A list of the work products to be produced
 A list of the quality assurance filters to be applied

Software Engineering - Le Vu Hao 8/2/2023


22 Process Patterns

 Why?
 Every software team encounters problems as it moves through the software process. It
would be useful if proven solutions to these problems were readily available to the
team so that the problems could be addressed and resolved quickly.
 A process pattern
 describes a process-related problem that is encountered during software engineering
work,
 identifies the environment in which the problem has been encountered, and
 suggests one or more proven solutions to the problem.

 Stated in more general terms, a process pattern provides you with a template
[Amb98] – a consistent method for describing problem solutions within the
context of the software process.

Software Engineering - Le Vu Hao 8/2/2023


23 Process Pattern Types

 Stage patterns - defines a problem associated with a framework activity for


the process.
 Task patterns - defines a problem associated with a software engineering
action or work task and relevant to successful software engineering
practice
 Phase patterns - define the sequence of framework activities that occur
with the process, even when the overall flow of activities is iterative in
nature.

Software Engineering - Le Vu Hao 8/2/2023


24 Process Assessment and Improvement

 Standard CMMI Assessment Method for Process Improvement (SCAMPI) -


provides a five step process assessment model that incorporates five phases:
initiating, diagnosing, establishing, acting and learning.
 CMM-Based Appraisal for Internal Process Improvement (CBA IPI) - provides a
diagnostic technique for assessing the relative maturity of a software
organization; uses the SEI CMM as the basis for the assessment [Dun01]
 SPICE (ISO/IEC15504) - standard defines a set of requirements for software
process assessment. The intent of the standard is to assist organizations in
developing an objective evaluation of the efficacy of any defined software
process. [ISO08]
 ISO 9001:2000 for Software - a generic standard that applies to any organization
that wants to improve the overall quality of the products, systems, or services
that it provides. Therefore, the standard is directly applicable to software
organizations and companies. [Ant06]

Software Engineering - Le Vu Hao 8/2/2023


25
Popular Process Models

Software Engineering - Le Vu Hao 8/2/2023


26 Popular Process Models

 Waterfall Model
 Incremental Process Model
 Evolutionary Process Models
 Concurrent Models

Software Engineering - Le Vu Hao 8/2/2023


Waterfall model
27

Software Engineering - Le Vu Hao 8/2/2023


28 Waterfall Model

In a waterfall model, each phase must


be completed before the next phase
can begin and there is no overlapping
in the phases.

Software Engineering - Le Vu Hao 8/2/2023


29 Advantages

 This model is simple and easy to understand and use.


 It is easy to manage due to the rigidity of the model – each phase has
specific deliverables and a review process.
 In this model phases are processed and completed one at a time. Phases
do not overlap.
 Waterfall model works well for smaller projects where requirements are
clearly defined and very well understood.

Software Engineering - Le Vu Hao 8/2/2023


30 Disadvantages

 Once an application is in the testing stage, it is very difficult to go back and


change something that was not well-thought out in the concept stage.
 No working software is produced until late during the life cycle.
 High amounts of risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high
risk of changing.

Software Engineering - Le Vu Hao 8/2/2023


31 When to use?

 This model is used only when the requirements are very well known, clear
and fixed.
 Product definition is stable.
 Technology is understood.
 There are no ambiguous requirements
 Ample resources with required expertise are available freely
 The project is short.

Software Engineering - Le Vu Hao 8/2/2023


Incremental Process
Model
32

Software Engineering - Le Vu Hao 8/2/2023


33 Incremental Process
Model
In incremental model the whole
requirement is divided into various
builds. Multiple development cycles
take place here, making the life cycle
a “multi-waterfall” cycle. Cycles are
divided up into smaller, more easily
managed modules.

Software Engineering - Le Vu Hao 8/2/2023


34 Advantages

 Generates working software quickly and early during the software life
cycle.
 This model is more flexible – less costly to change scope and requirements.
 It is easier to test and debug during a smaller iteration.
 In this model customer can respond to each built.
 Lowers initial delivery cost.
 Easier to manage risk because risky pieces are identified and handled
during it’d iteration.

Software Engineering - Le Vu Hao 8/2/2023


35 Disadvantages

 Needs good planning and design.


 Needs a clear and complete definition of the whole system before it can
be broken down and built incrementally.
 Total cost is higher than waterfall.

Software Engineering - Le Vu Hao 8/2/2023


36 When to use?

 This model can be used when the requirements of the complete system are
clearly defined and understood.
 Major requirements must be defined; however, some details can evolve
with time.
 There is a need to get a product to the market early.
 A new technology is being used
 Resources with needed skill set are not available
 There are some high risk features and goals.

Software Engineering - Le Vu Hao 8/2/2023


Evolutionary Process
Models
37

Software Engineering - Le Vu Hao 8/2/2023


38 Evolutionary Process Models

 Evolutionary process models are iterative. They are highly useful to a


software engineer to develop more complex version softwares.
 Three types in evolutionary process model:
 The prototyping model
 The spiral model
 The concurrent development model

Software Engineering - Le Vu Hao 8/2/2023


39 The prototyping model

 Consider the following two different situations:


 Often, a customer defines a set of general objectives, but does not identify a
detailed specifications like input, processing and output requirements. It’s a
problem in customer side.
 Next is, problems in developer side; a developer may unsure about the efficiency
of an algorithm; the adoptability of an operating system; problems in human -
computer interaction etc.

Software Engineering - Le Vu Hao 8/2/2023


40 The prototyping model

Software Engineering - Le Vu Hao 8/2/2023


41 The prototyping model
Problems
 Stakeholders see what appears to be a working version of the software,
unaware that the prototype is held together haphazardly, unaware that in the
rush to get it working you haven’t considered overall software quality or long-
term maintainability. When informed that the product must be rebuilt so that
high levels of quality can be maintained, stakeholders cry foul and demand
that “a few fixes” be applied to make the prototype a working product. Too
often, software development management relents.
 As a software engineer, you often make implementation compromises in order
to get a prototype working quickly. An inappropriate operating system or
programming language may be used simply because it is available and known;
an inefficient algorithm may be implemented simply to demonstrate capability.
After a time, you may become comfortable with these choices and forget all
the reasons why they were inappropriate. The less-than-ideal choice has now
become an integral part of the system.

Software Engineering - Le Vu Hao 8/2/2023


42 The prototyping model
When to use
 Ideally, the prototype serves as a mechanism for identifying software
requirements. If a working prototype is to be built, you can make use of
existing program fragments or apply tools (e.g., report generators and
window managers) that enable working programs to be generated quickly

Software Engineering - Le Vu Hao 8/2/2023


43 The Spiral Model

Software Engineering - Le Vu Hao 8/2/2023


44 The Spiral Model

 The spiral model is an evolutionary software process model that couples the
iterative nature of prototyping with the controlled and systematic aspects
of the waterfall model. It provides the potential for rapid development of
increasingly more complete versions of the software.
 The spiral development model is a risk-driven process model generator that
is used to guide multi-stakeholder concurrent engineering of software
intensive systems. It has two main distinguishing features. One is a cyclic
approach for incrementally growing a system’s degree of definition and
implementation while decreasing its degree of risk. The other is a set of
anchor point milestones for ensuring stakeholder commitment to feasible
and mutually satisfactory system solutions.

Software Engineering - Le Vu Hao 8/2/2023


45 The Spiral Model

Software Engineering - Le Vu Hao 8/2/2023


46 The Spiral Model
Advantages
 High amount of risk analysis hence, avoidance of Risk is enhanced.
 Good for large and mission-critical projects.
 Strong approval and documentation control.
 Additional Functionality can be added at a later date.
 Software is produced early in the software life cycle.

Software Engineering - Le Vu Hao 8/2/2023


47 The Spiral Model
Disadvantages
 Can be a costly model to use.
 Risk analysis requires highly specific expertise.
 Project’s success is highly dependent on the risk analysis phase.
 Doesn’t work well for smaller projects.

Software Engineering - Le Vu Hao 8/2/2023


48 The Spiral Model
When to use
 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)

Software Engineering - Le Vu Hao 8/2/2023


The Concurrent
Model
49

Software Engineering - Le Vu Hao 8/2/2023


50 The Concurrent Model

Sometimes called concurrent


engineering, can be represented
schematically as a series of framework
activities, software engineering
actions, tasks and their associated
states.
The model defines a series of events
that will trigger transitions from state to
state for each of the software
engineering activities, actions, or
tasks.

Software Engineering - Le Vu Hao 8/2/2023


51 Importance of Concurrent Model

 The concurrent development model is applicable to all types of software


development and provides an accurate picture of the current state of a
project.
 It defines a network activity, not like other software engineering actions.
 Each activity, actions, tasks on the network exists simultaneously with other
activities, actions, tasks.

Software Engineering - Le Vu Hao 8/2/2023


Other Process
Models
52

Software Engineering - Le Vu Hao 8/2/2023


53 Still Other Process Models

 Component based development - the process to apply when reuse is a


development objective
 Formal methods - emphasizes the mathematical specification of
requirements
 Aspect-Oriented Software Development (AOSD) - provides a process and
methodological approach for defining, specifying, designing, and
constructing aspects
 Unified Process - a “use-case driven, architecture-centric, iterative and
incremental” software process closely aligned with the Unified Modeling
Language (UML)

Software Engineering - Le Vu Hao 8/2/2023


The Unified Process
Model
54

Software Engineering - Le Vu Hao 8/2/2023


55 The Unified Process Model  The Unified Process (UP) is a software
development framework used for object-
oriented modeling. The framework is also
known as Rational Unified Process (RUP)
and the Open Unified Process (Open UP)
 Some of the key features of this process
include:
 It defines the order of phases.
 It is component-based, meaning a
software system is built as a set of software
components. There must be well-defined
interfaces between the components for
smooth communication.
 It follows an iterative, incremental,
architecture-centric, and use-case driven
approach

Software Engineering - Le Vu Hao 8/2/2023


56 Unified Process Phases

Software Engineering - Le Vu Hao 8/2/2023


RUP
57
The rational unified process (RUP) is a software engineering and development process focused on
using the unified modeling language (UML) to design and build software.
Using the RUP process allows you to operate business analysis, design, testing and implementation
throughout the software development process and its unique stages, helping you create a
customized product.

Software Engineering - Le Vu Hao 8/2/2023


58 The phases of RUP

Software Engineering - Le Vu Hao 8/2/2023


59 A sample of Inception phase

Software Engineering - Le Vu Hao 8/2/2023


60 A sample of Elaboration phase

Software Engineering - Le Vu Hao 8/2/2023


61 A sample of Construction phase

Software Engineering - Le Vu Hao 8/2/2023


62 A sample of Transition phase

Software Engineering - Le Vu Hao 8/2/2023


63
Agile Development

Software Engineering - Le Vu Hao 8/2/2023


64 The Manifesto for Agile Software
Development
 We are uncovering better ways of developing software by doing it and
helping others do it. Through this work we have come to value:
 Individuals and interactions over processes and tools
 Working software over comprehensive documentation
 Customer collaboration over contract negotiation
 Responding to change over following a plan
 That is, while there is value in the items on the right, we value the items on
the left more.

Software Engineering - Le Vu Hao 8/2/2023


65 What is “Agility”?

 Effective (rapid and adaptive) response to change!


 Effective communication among all stakeholders!
 Drawing the customer onto the team!
 Organizing a team so that it is in control of the work performed!
Yielding …
 Rapid, incremental delivery of software!

Software Engineering - Le Vu Hao 8/2/2023


66 Agility and the Cost of Change

Software Engineering - Le Vu Hao 8/2/2023


67 An Agile Process

 Is driven by customer descriptions of what is required (scenarios)!


 Recognizes that plans are short-lived
 Develops software iteratively with a heavy emphasis on construction
activities
 Delivers multiple ʻsoftware incrementsʼ
 Adapts as changes occur

Software Engineering - Le Vu Hao 8/2/2023


68 Agility Principles - I

1) Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
2) Welcome changing requirements, even late in development. Agile processes
harness change for the customer's competitive advantage.
3) Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
4) Business people and developers must work together daily throughout the
project.
5) Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
6) The most efficient and effective method of conveying information to and within
a development team is face–to–face conversation.

Software Engineering - Le Vu Hao 8/2/2023


69 Agility Principles - II

7) Working software is the primary measure of progress.


8) Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.
9) Continuous attention to technical excellence and good design enhances
agility.
10)Simplicity – the art of maximizing the amount of work not done – is essential.
11)The best architectures, requirements, and designs emerge from self–
organizing teams.
12)At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly.

Software Engineering - Le Vu Hao 8/2/2023


70 Human Factors

 the process molds to the needs of the people and team, not the other way
around
 key traits must exist among the people on an agile team and the team
itself:
 Competence.
 Common focus.
 Collaboration.
 Decision-making ability.
 Fuzzy problem-solving ability.
 Mutual trust and respect.
 Self-organization.

Software Engineering - Le Vu Hao 8/2/2023


71 Advantages of Agile model

 Customer satisfaction by rapid, continuous delivery of useful software.


 People and interactions are emphasized rather than process and tools.
Customers, developers and testers constantly interact with each other.
 Working software is delivered frequently (weeks rather than months).
 Face-to-face conversation is the best form of communication.
 Close, daily cooperation between business people and developers.
 Continuous attention to technical excellence and good design.
 Regular adaptation to changing circumstances.
 Even late changes in requirements are welcomed

Software Engineering - Le Vu Hao 8/2/2023


72 Disadvantages of Agile model

 In case of some software deliverables, especially the large ones, it is difficult


to assess the effort required at the beginning of the software development
life cycle.
 There is lack of emphasis on necessary designing and documentation.
 The project can easily get taken off track if the customer representative is
not clear what final outcome that they want.
 Only senior programmers are capable of taking the kind of decisions
required during the development process. Hence it has no place for
newbie programmers, unless combined with experienced resources.

Software Engineering - Le Vu Hao 8/2/2023


73 When to use Agile model

 When new changes are needed to be implemented. The freedom agile gives to change is
very important. New changes can be implemented at very little cost because of the
frequency of new increments that are produced.
 To implement a new feature the developers need to lose only the work of a few days, or
even only hours, to roll back and implement it.
 Unlike the waterfall model in agile model very limited planning is required to get started
with the project. Agile assumes that the end users’ needs are ever changing in a dynamic
business and IT world. Changes can be discussed and features can be newly effected or
removed based on feedback. This effectively gives the customer the finished system they
want or need.
 Both system developers and stakeholders alike, find they also get more freedom of time
and options than if the software was developed in a more rigid sequential way. Having
options gives them the ability to leave important decisions until more or better data or
even entire hosting programs are available; meaning the project can continue to move
forward without fear of reaching a sudden standstill.

Software Engineering - Le Vu Hao 8/2/2023


74 Self reading

 Research popular models:


 The XP Process
 Adaptive Software Development (ASD)
 Scrum
 Dynamic Systems Development Method (DSDM)
 Crystal
 Feature Drive Development (FDD)
 Lean Software Development (LSD)
 Agile Modeling (AM)
 Agile Unified Process (AUP)

Software Engineering - Le Vu Hao 8/2/2023

You might also like