prescriptive - serving to prescribe - to lay down a rule -
to lay down as a guide, direction, or rule of action
prescriptive process models
prescribe a distinct set of activities, actions, tasks, milestones,
and work products
are adapted to meet the needs of software engineers and managers
for a specific project
provide stability, control, and organization to a process
that if not managed can easily get out of control
process flow of framework activities may be linear, incremental,
or evolutionary
work products (programs, documentation, data) are produced as a consequence
of the framework activities
the best indicators of how well a software process has worked are the quality,
timeliness, and long-term viability of the resulting software product
prescriptive process models
originally proposed to bring order to the chaos of software development
they brought order to software engineering work and provide reasonable
guidance to software teams
yet, they have not provided a definitive answer to the problems of software
development in an ever changing computing environment
software processes
every software engineering organization needs to describe a set of
framework activities for the processes it adopts
each framework activity needs to be populated with software engineering
actions
each engineering action needs to be defined in terms of a task set
that defines the work and work products needed to meet the development
goals
the resulting process model should be adapted to accommodate the
nature of the specific project, people doing the work, and the work
environment
regardless of the process model selected, the process framework will
include these activities: communication, planning, modeling, construction,
and deployment
each process model will prescribe a set of process elements
framework activities
software engineering actions
tasks
work products
quality assurance
change control mechanisms
workflow - the manner in which the process elements are interrelated
prescriptive software process models
Waterfall Model
old fashioned but reasonable approach when requirements are well
understood
Incremental Models
Incremental Model
delivers software in small but usable pieces
each piece builds on pieces already delivered
Rapid Application and Development (RAD) Model
makes heavy use of reusable software components
extremely short development cycle
Evolutionary Process Models
Prototyping Model
good first step when customer has a legitimate need, but is
clueless about the details
developer needs to resist pressure to extend a rough prototype
into a production product
Spiral Model
couples iterative nature of prototyping with the controlled
and systematic aspects of the linear sequential model
Concurrent Development Model
similar to spiral model
often used in development of client/server applications
Specialized Process Models
Component-Based Development
spiral model variation
applications are built from prepackaged software components
called classes
the process to apply when reuse is a development objective
Formal Methods Model
rigorous mathematical notation used to specify, design, and
verify computer-based systems
Aspect-Oriented Programming
provides a process for defining, specifying, designing, and
constructing software aspects
examples: user interfaces, security, and memory management
software that impacts many parts of the system being developed
Unified Process
use-case driven, architecture centric, iterative, and incremental
software process
attempts to draw on best features of traditional software process
models
plus, it implements many features of agile software development
phases
Inception phase - customer communication and planning
Elaboration phase - communication and modeling
Construction phase
Transition phase - customer delivery and feedback
Production phase - software monitoring and support
Unified Process Workflows
Requirements workflow
Goal is to answer 4 questions
What are the relevant characteristics of customer domain?
What will the software product accomplish?
What features and functions will be used to accomplish
it?
What constraints will be placed on the system?
Requirements are determined iteratively during inception
and elaboration phases
Software team must learn enough to establish project
scope, set an iterative and incremental project plan,
and develop use-cases recognizable to end-users
Analysis workflow
Begins during inception phase and culminates in the construction
phase
Goal is to perform architectural analysis and produce the
work products required by the analysis model
The analysis model uses abstractions that are recognizable
to the customer or end-user
Design workflow
Begins in last part of elaboration phase and continues to
first stages of construction phase
Objective of design is to transform analysis model (the
what) into a design model (the how - an implementation model
of the software)
Modeling moves from the problem (customer) domain into solution
(engineer) domain
Implementation workflow
Work begins in elaboration phase and dominates construction
phase
Incorporates the software engineering tasks required to
translate design classes into executable software components,
testing and integrating these components, and deliver those
required for the planned increment
Build/reuse decisions made during this phase
Testing workflow
During elaboration the intent of testing work flow is to
exercise the executable architecture and demonstrate its viability
During construction testing workflow focuses on testing
software components as they are integrated in the build and
testing integrated software before releasing to customer
During transition testing the customers or end-users assume
the responsibility for acceptance tests
Project management workflow
Spans all software increments
Focus is on planning, risk management, project tracking
and control
Phase plan provides a rough estimate of the effort required
to accomplish workflow across each UP phase, the major milestones
for each phase and increment, and the number of increments
required
Iteration plan defines the tasks associated with analysis,
design, implementation, testing, and deployment for one software
increment
Notes and figures from:
Software Engineering: A Practitioner's Approach, 6th Edition, by Roger S
Pressman, R.S. Pressman & Associates, McGraw-Hill, 2005