CS435: Introduction To Software Engineering: Dr. M. Zhu
CS435: Introduction To Software Engineering: Dr. M. Zhu
Dr. M. Zhu
Process Models
Software Engineering: A Practitioner’s Approach, 7/e
by Roger S. Pressman
Chapter 2 1
These slides are designed and adapted from slides provided by Software Engineering: A Practitioner’s Approach, 7/e
(McGraw-Hill 2009) by Roger Pressman and Software Engineering 9/e Addison Wesley 2011 by Ian Sommerville
Definition of Software
Process
• A framework for the activities, actions, and tasks that
are required to build high-quality software.
5
Linear process flow executes each of the five
activities in sequence.
An iterative process flow repeats one or more of the
activities before proceeding to the next.
An evolutionary process flow executes the activities
in a circular manner. Each circuit leads to a more
complete version of the software.
A parallel process flow executes one or more
activities in parallel with other activities ( modeling
for one aspect of the software in parallel with
construction of another aspect of the software.
Process Flow 6
Before you can proceed with the process model, a key
question: what actions are appropriate for a
framework activity given the nature of the problem,
the characteristics of the people and the stakeholders?
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
Both do the same work with different depth and formality. Choose the
task sets that achieve the goal and still maintain quality and agility.
10
The V-Model
depicts the relationship of
quality assurance actions to
the actions associated with
communication, modeling and
early code construction
activates.
14
The Incremental
Model
15
The Incremental Model
• When initial requirements are reasonably well
defined, but the overall scope of the development
effort precludes (prevent from happening) a purely
linear process. A compelling need to expand a limited
set of new functions to a later system release.
• It combines elements of linear and parallel process
flows. Each linear sequence produces deliverable
increments of the software.
• The first increment is often a core product with
many supplementary features. Users use it and
evaluate it with more modifications to better meet the
needs. 16
• Main characteristics:
• Hybrid model that combines elements of the waterfall and
evolutionary paradigms
• The specification, design, and implementation phases are broken in
smaller increments
• Advantages:
• Provides better support for process iteration
• Reduces rework in the software construction process
• Some decisions on requirements may be delayed
• Allows early delivery of parts of the system
• Supports easier integration of sub-systems
• Lower risk of project failure
• Delivery priorities can be more easily set
Quick
plan
communication
Modeling
Quick design
Deployment Construction
delivery & of prototype
feedback Construction
of prototype
20
Evolutionary Models: Prototyping
• What step:
• Begins with communication by meeting with stakeholders to
define the objective, identify whatever requirements are known,
outline areas where further definition is mandatory.
• A quick plan for prototyping and modeling (quick design)
occur. Quick design focuses on a representation of those
aspects the software that will be visible to end users. ( interface
and output).
• Design leads to the construction of a prototype which will be
deployed and evaluated. Stakeholder’s comments will be used to
refine requirements. 21
Evolutionary Models: Prototyping
24
Evolutionary Models: The Spiral
•A series of evolutionary releases are delivered. During the early
iterations, the release might be a model or prototype. During later
iterations, increasingly more complete version of the engineered
system are produced.
•The first circuit in the clockwise direction might result in the
product specification; subsequent passes around the spiral might be
used to develop a prototype and then progressively more
sophisticated versions of the software. Each pass results in
adjustments to the project plan. Cost and schedule are adjusted
based on feedback. Also, the number of iterations will be adjusted
25
by project manager.
Evolutionary Models: The Spiral
28
Three Concerns on Evolutionary
Processes
• First concern is that prototyping poses a problem to project planning because of
the uncertain number of cycles required to construct the product.
• Second, it does not establish the maximum speed of the evolution. If the
evolution occur too fast, without a period of relaxation, it is certain that the
process will fall into chaos. On the other hand if the speed is too slow then
productivity could be affected.
• Third, software processes should be focused on flexibility and extensibility
rather than on high quality. We should prioritize the speed of the development
over zero defects. Extending the development in order to reach high quality
could result in a late delivery of the product when the opportunity niche has
disappeared.
29
Concurrent Model
• The Figure shows modeling may be in any one of
the states at any given time. For example,
communication activity has completed its first
iteration and in the awaiting changes state. The
modeling activity was in inactive state, now
makes a transition into the under development
state. If customer indicates changes in
requirements, the modeling activity moves from
the under development state into the awaiting
30
changes state.
Concurrent Model
• Concurrent modeling is applicable to all types of
software development and provides an accurate
picture of the current state of a project. Rather
than confining software engineering activities,
actions and tasks to a sequence of events, it
defines a process network. Each activity, action
or task on the network exists simultaneously with
other activities, actions or tasks. Events generated
at one point trigger transitions among the states.
31
Still Other Process
Models
• Component based development—the process to apply when
reuse is a development objective ( like spiral model)
• Formal methods—emphasizes the mathematical specification
of requirements ( easy to discover and eliminate ambiguity,
incompleteness and inconsistency)
• 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) to model and
32
develop object-oriented system iteratively and incrementally.
The Unified Process (UP)
elaboration
inception
33
• Attempt to draws best features and characteristics of
traditional software process models but characterize them
in a way that implements many of the best principles of
agile software development.
• It recognizes the importance of customer communication
and methods for describing the customer’s view of a
system.
• It also emphasizes the important role of software
architecture.
• The Unified Process is a framework for object-oriented
software engineering.
43
UP Work Products
44
Personal Software Process (PSP)
• Planning. This activity isolates requirements and develops both size and
resource estimates. In addition, a defect estimate (the number of defects
projected for the work) is made. All metrics are recorded on worksheets or
templates. Finally, development tasks are identified and a project schedule is
created.
• High-level design. External specifications for each component to be constructed
are developed and a component design is created. Prototypes are built when
uncertainty exists. All issues are recorded and tracked.
• High-level design review. Formal verification methods (Chapter 21) are applied
to uncover errors in the design. Metrics are maintained for all important tasks
and work results.
• Development. The component level design is refined and reviewed. Code is
generated, reviewed, compiled, and tested. Metrics are maintained for all
important tasks and work results.
• Postmortem. Using the measures and metrics collected (this is a substantial
amount of data that should be analyzed statistically), the effectiveness of the
process is determined. Measures and metrics should provide guidance for
modifying the process to improve its effectiveness.
45
Team Software Process (TSP)
Build self-directed teams that plan and track their work,
establish goals, and own their processes and plans. These can
be pure software teams or integrated product teams (IPT) of
three to about 20 engineers.
Show managers how to coach and motivate their teams and
how to help them sustain peak performance.
Accelerate software process improvement by making CMM
Level 5 behavior.
The Capability Maturity Model (CMM), a measure of the effectiveness of
a software process, is discussed in Chapter 30.
Provide improvement guidance to high-maturity
organizations.
Facilitate university teaching of industrial-grade team skills.
46
• 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.
( defined at different levels of abstraction)
1. Problems and solutions associated with a complete process
model (e.g. prototyping).
2. Problems and solutions associated with a framework activity
(e.g. planning) or
3. an action with a framework activity (e.g. project estimating).
Process Patterns 47
• Stage patterns—defines a problem associated with a
framework activity for the process. It includes multiple
task patterns as well. For example,
EstablishingCommunication would incorporate the task
pattern RequirementsGathering and others.
• 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. Example
includes SprialModel or Prototyping.
50
Process Assessment and Improvement
SP cannot guarantee that software will be delivered on time, meet the needs, or has the desired
technical characteristics. However, the process can be assessed to ensure that it meets a set of
basic process criteria that have been shown to be essential for a successful software engineering.
•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—The 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]
51
• The Software Engineering Institute (SEI) has developed
model to measure organization different level of process
capability and maturity known as Capability Maturity
Model (CMM) as a complete Software Process
Improvement (SPI) framework in 1990.
• Today, it has evolved into the Capability Maturity Model
Integration (CMMI) – a comprehensive process meta-
model that is predicated on a set of system and software
engineering capabilities that should be present as
organizations reach different levels of process capability
and maturity.
Capability Maturity 52
Model (CMM)
• The CMM defines each process area in terms of “specific
goals” and the “specific practices” required to achieve
these goals.
• Specific goals establish the characteristics that must exist
if the activities implied by a process area are to be
effective.
• Specific practices refine a goal into a set of process-
related activities.
• CMM specifies an increasing series of levels that a
software development organization can be at. The higher
the level, the better the software development process is.
Capability Maturity 53
Model (CMM)
The term "maturity" relates to the degree of formality and optimization
of processes, from ad hoc practices, to formally defined steps, to
managed result metrics, to active optimization of the processes.
Level 0 (Incomplete) –
• Process are not perform or not achieve all the goals and objectives defined
by the CMMI for Level I capability.
Level 1 (Performed / Initial) – Ad hoc and chaotic, few processes
defined and individual efforts made.
Level 2 (Managed / Repeatable) –
• All level 1 criteria have been satisfied
• In addition to Level I;
• People doing work have access to adequate resources to get job done,
• Stakeholders are actively involved,
• Work tasks and products are monitored, controlled, reviewed, and evaluated for
conformance to process description.
Capability Maturity 54
Model (CMM)
Level 3 (Defined) –
• All level 2 criteria have been achieved.
• In addition;
• The process is standardized, documented and followed. All the projects
use documented and approved version of software process which is
useful in developing and supporting software.
Level 4 (Quantitatively Managed) -
• All level 3 criteria have been satisfied.
• Software process and products are quantitatively understood
• Controlled using detailed measures and assessment.
Level 5 (Optimized) –
• Continuous process improvement is enabled by quantitative
feedback from the process and testing innovative ideas.
Capability Maturity 55
Model (CMM)
Capability Maturity 56
Model (CMM)