2 Processes
2 Processes
Objectives
Software process models
Process activities
Coping with change
The Rational Unified Process
An example of a modern software process.
The software process
A structured set of activities required to develop a
software system.
Many different software processes but all involve:
Specification –The functionality of the software and constraints on
its operation must be defined.
Design and implementation – The software to meet the
specification must be produced
Validation – checking that it does what the customer wants;
Evolution – changing the system in response to changing customer
needs.
A software process model is an abstract representation of a process. It
presents a description of a process from some particular perspective.
Software process descriptions
When we describe and discuss processes, we usually talk about the
activities in these processes such as specifying a data model, designing a
user interface, etc. and the ordering of these activities.
Process descriptions may also include:
Products, which are the outcomes of a process activity; e.g. model of
software architecture
Roles, which reflect the responsibilities of the people involved in the
process;
Pre- and post-conditions, which are statements that are true before
and after a process activity has been enacted or a product produced.
Pre condition for architecture design- All requirements has been approved
before design phase begins
Post condition- UML models describing the architecture has been reviewed
Plan-driven and agile processes
Plan-driven processes are processes where all of
the process activities are planned in advance and
progress is measured against this plan.
In agile processes, planning is incremental and it is
easier to change the process to reflect changing
customer requirements.
There are no right or wrong software processes.
Software process models
The waterfall model
Plan-driven model. Activities are planned in advance and
progress is measured against plan
Incremental development
Specification, development and validation are interleaved.
Reuse-oriented software engineering
The system is assembled from existing components. May
be plan-driven or agile.
In practice, most large systems are developed using a process
that incorporates elements from all of these models.
The waterfall model
System services, constraints and goals are established
allocates the requirements to either hardware or software,
identify and describe the fundamental
software system abstractions and their relationships
System design with reuse: Framework of the system is designed or an existing framework is
reused by take into account the components that are reused. if reusable components not
available, some new software may have to be designed
Development and integration Software that cannot be externally procured is
developed, and the components and COTS systems are integrated to create the
new system.
Types of software component
Web services that are developed according to service
standards and which are available for remote
invocation.
Collections of objects that are developed as a
package to be integrated with a component
framework such as .NET or J2EE.
Stand-alone software systems (COTS) that are
configured for use in a particular environment.
Reuse-oriented SE: Pros and cons
Reduce the amount of software to be developed and so
reducing cost and risks
It usually also leads to faster delivery of the software.
Requirements compromises are inevitable and this may
lead to a system that does not meet the real needs of
users
Some control over the system evolution is lost as new
versions of the reusable components are not under the
control of the organization using them.
Software Process activities
Real software processes are sequences of technical,
collaborative and managerial activities with the overall
goal of specifying, designing, implementing and testing a
software system.
The four basic process activities of specification,
development, validation and evolution are organized
differently in different development processes. In the
waterfall model, they are organized in sequence, whereas
in incremental development they are inter-leaved.
Feasibility
study
Requirements specification
Defining the requirements in detail
Requirements validation
Checking the requirements for consistency and completeness
Validation
Req
The requirements engineering process
Software design and implementation
The process of converting the system specification
into an executable system.
Software design
Design a software structure that realises the
specification;
Implementation
Translate this structure into an executable
program;
The activities of design and implementation are
closely related and may be inter-leaved.
A general model of the design process
Design activities
Objectives: (1) To develop a system to prototype the user interface, (2) To develop
a system to validate functional system requirements etc
Incremental development
Develop the system in increments and evaluate each increment
before proceeding to the development of the next increment;
Normal approach used in agile methods;
Evaluation done by user/customer proxy.
Incremental delivery
Deploy an increment for use by end-users;
More realistic evaluation about practical use of software;
Difficult to implement for replacement systems as increments
have less functionality than the system being replaced.
Incremental delivery
Incremental delivery 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.
Incremental delivery problems
Most systems require a set of basic facilities that are used
by different parts of the system.
As requirements are not defined in detail until an
increment is to be implemented, it can be hard to
identify common facilities that are needed by all
increments.
The essence of iterative processes is that the specification
is developed in conjunction with the software.
However, this conflicts with the procurement model of
many organizations, where the complete system
specification is part of the system development
contract.
Boehm’s spiral model
Process is represented as a spiral rather than as a
sequence of activities with backtracking.
Each loop in the spiral represents a phase in the
process.
No fixed phases such as specification or design -
loops in the spiral are chosen depending on what
is required.
Risks are explicitly assessed and resolved
throughout the process.
Boehm’s spiral model of the
software process
Spiral model sectors
Objective setting
Specific objectives for the phase are identified. Project
risks are identified
Risk assessment and reduction
Risks are assessed and activities put in place to reduce
the key risks. For example, if there is a risk that the
requirements are inappropriate, a prototype system
may be developed.
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.
Spiral model usage
Spiral model has been very influential in
helping people think about iteration in
software processes and introducing the
risk-driven approach to development.
In practice, however, the model is rarely
used as published for practical software
development.
The Rational Unified Process
A modern generic process derived from the work on the
UML and associated process.
Normally described from 3 perspectives
A dynamic perspective that shows phases over time;
A static perspective that shows process activities;
A practive perspective that suggests good practice.
Phases in the Rational Unified
Process
RUP phases
Inception
Establish the business case for the system.
Identify people and systems interacting with this system
Expected budget, revenue
Elaboration
Develop an understanding of the problem domain, requirement
model, key project risks, project plan, development plan and the
system architecture
Construction
System design, programming and testing, documentation.
Transition
Deploy the system in its operating environment.
RUP iteration
In-phase iteration
Each phase is iterative with results developed
incrementally.
Cross-phase iteration
As shown by the loop in the RUP model, the
whole set of phases may be enacted
incrementally.
Static workflows in the Rational Unified Process
Workflow Description
Business modelling The business processes are modelled using business
use cases.
Requirements Actors who interact with the system are identified and
use cases are developed to model the system
requirements.