You are on page 1of 12

Topics covered

 Software process models


 Process activities
 Coping with change
Chapter 2 – Software Processes
 The Rational Unified Process
 An example of a modern software process.

Lecture 1

Chapter 2 Software Processes 1 Chapter 2 Software Processes 2

The software process Software process descriptions

 A structured set of activities used to develop a  Process descriptions may include process activities such
software system/product. as specifying a data model, designing a user interface,
 Many different software processes but all involve: etc. and the ordering of these activities.
 Specification – defining what the system should do;  Process descriptions may also include:
 Design and implementation – defining the organization of the  Products: the outcomes of a process activity (models, docs)
system and implementing the system;  Roles: the responsibilities of the people involved in the process;
 Validation – checking that it does what the customer wants;  Pre- and post-conditions: statements that are true before and
 Evolution – changing the system in response to changing after a process activity has been enacted or a product produced.
customer needs.
 A software process model (or paradigm) is an abstract
representation of a process
 a framework that can be extended to create more specific
processes, which are actually used to produce software
Chapter 2 Software Processes 3 Chapter 2 Software Processes 4
Plan-driven and agile processes 2.1 Software process models (frameworks)

 Processes often categorized as plan-driven or agile.  The waterfall model


 Plan-driven processes:  Plan-driven model. Separate and distinct phases of specification
and development.
 All of the process activities are planned in advance
 Progress is measured against this plan.  Incremental development
 Agile processes:  Specification, development and validation are interleaved,
producing a series of versions. May be plan-driven or agile.
 Planning is incremental (occurs during different phases)
 It is easier to change the process to reflect changing customer  Reuse-oriented software engineering
requirements.  The system is assembled from existing components. May be
plan-driven or agile.
 In practice, most practical processes include elements of
both plan-driven and agile approaches.  In practice, most large systems are developed using a
process that incorporates elements from all of these
 Many organizations have their own software processes. models.
 There are no right or wrong software processes.
Chapter 2 Software Processes 5 Chapter 2 Software Processes 6

Waterfall model phases The waterfall model

 There are separate identified phases in the waterfall


model: Requirements
definition
 Requirements analysis and definition
 System and software design System and
software design
 Implementation and unit testing
 Integration and system testing
Implementation
 Operation and maintenance and unit testing
 Main drawback: The difficulty of accommodating change
after the process is underway. Integration and
system testing
 In principle, a phase has to be complete before moving onto the
next phase. Operation and
 Change requires “backtracking”: revising previous step(s) maintenance

Chapter 2 Software Processes 7 Chapter 2 Software Processes 8


Waterfall model issues Incremental development

 Partitioning the project into sequential stages makes it  Specification, development and validation are interleaved.
difficult to respond to changing customer requirements.  The system is developed as a series of versions or
 Appropriate only when the requirements are well-understood and releases (called increments).
changes will be fairly limited during the design process.
 Each version adds functionality to the previous version
 Can be used for large systems engineering projects  Each version is exposed to the user for feedback
where a system is developed at several sites.
 Early versions can implement the most important, urgent,
 Plan-driven nature of the this model helps coordinate the work.
or risky features
 Good for formal system development
 Mathematical model of system specifications is refined to
programming language code using transformations
 Good when safety, reliability, and security requirements are
critical.

Chapter 2 Software Processes 9 Chapter 2 Software Processes 10

Incremental development Incremental development benefits

 The cost of accommodating changing customer


Concurrent
activities requirements is reduced.
 Analysis and documentation are added instead of reworked.
Initial  It is easier to get customer feedback on the development
Specification version
work that has been done.
 Easier to present an incremental release than results of
Outline Intermediate specification or design phase.
description Development versions
 Customers get functionality sooner.

Final
Validation version  Can be plan-driven (versions are planned ahead) or agile
(determine next increment as you go).

Chapter 2 Software Processes 11 Chapter 2 Software Processes 12


Incremental development problems Reuse-oriented software engineering

 The process is not visible.  Based on systematic reuse where systems are integrated
 generally less process documentation (for rapid development). from existing components or COTS (Commercial-off-the-
 System structure tends to degrade as new increments are shelf) systems.
added.  Process stages
 UNLESS time and money is spent on refactoring to improve the  Requirements specification
software.  Component analysis: search for close matches
 Requirements modification: to reflect available components
 Refactoring: disciplined technique for restructuring an existing  System design with reuse: organize framework around
body of code, altering its internal structure without changing its acceptable components.
external behavior.  Development and integration: components are integrated along
with new code
 System validation

Chapter 2 Software Processes 13 Chapter 2 Software Processes 14

Advantages and Disadvantages of Reuse-oriented


Types of software component
Software Engineering

 Web services  Benefits


 Developed according to service standards  Reduces costs and risks (less code to write)
 Are available for remote invocation.  Usually leads to faster delivery.
 Collections of objects  Disadvantages
Developed as a package to be integrated with a component  Requirements may have to be compromised (no good matches)
framework such as .NET or J2EE.  Control over evolution of system is lost (dependent on developers
 Stand-alone software systems (COTS) that are of the components).
configured for use in a particular environment.

Chapter 2 Software Processes 15 Chapter 2 Software Processes 16


2.2 Process activities Software specification

 The four basic process activities:  The process of establishing:


 specification  what services are required (features) and
 development  the constraints on the system’s operation and development.
 validation  Requirements engineering process
 evolution
 Feasibility study
 organized differently in different development processes. • Is it technically and financially feasible to build the system?
(i.e. in sequence or inter-leaved).  Requirements elicitation and analysis
 Same activity may be carried out differently by different • What do the system stakeholders require or expect from the system?
• May observe existing systems, develop models or prototype
people, or different process methods
 Requirements specification
(i.e. specifications can be typed into a document or
• Defining the requirements in detail, write up in a document
written on cards).  Requirements validation
• Checking the requirements for realism, consistency, and completeness.

Chapter 2 Software Processes 17 Chapter 2 Software Processes 18

The requirements engineering process Software design and implementation

 Converting the system specification into an executable


Feasibility
Requirements Notice the steps system.
elicitation and are interleaved.
study
analysis  Software design
Requirements
 Description of the structure of the software, data models,
specification
interfaces, algorithms, etc.
Feasibility Requirements
report validation  Implementation
System  Translate the design into an executable program;
models
 Design and implementation are closely related and may
User and system
requirements be inter-leaved.
Requirements
document

Chapter 2 Software Processes 19 Chapter 2 Software Processes 20


A general model of the design process Design activities

which op sys,
which dbms,
Design inputs
 Architectural design: where you identify
other apps, Platform Requirements Data  the overall structure of the system,
etc. information specification description
 the principal components,
 their relationships and
Design activities
 how they are distributed.
Architectural
design
Interface
design
Component
design
 Interface design, where you precisely define the
interfaces between system components
Database design (so they can be developed independently).
 Component design, where you design how each
Design outputs component will function (may be left up to developer).
System Database Interface Component  Database design, where you design the system data
architecture specification specification specification
structures and how these are to be represented in a
database.
Chapter 2 Software Processes 21 Chapter 2 Software Processes 22

Software validation Testing stages

 Verification and validation (V & V) is intended to  Development or component testing


 show that a system conforms to its specification and  Individual components are tested independently by developers
 meets the requirements of the system customer.  Components may be functions or objects or coherent groupings
of these entities.
 Program testing is the principal validation technique.  Unit testing: JUnit is an automatic testing tool, can be re-run
whenever the code is updated.
(executing the system over simulated data).
 System testing
 Testing of the system as a whole (after integrating the
 Validation may also involve inspections and reviews components).
 Especially looking for errors resulting from unanticipated
interactions between components.
 Acceptance testing
 Testing with customer data

Chapter 2 Software Processes 23 Chapter 2 Software Processes 24


Software evolution Key points

 Software is inherently flexible and can change (as  Software processes are specific, structured sets of
opposed to hardware). activities used to produce a software system.
 Formerly, development and evolution were seen as two  Software process models are abstract representations of
entirely separate processes: these processes.
 development: creative, interesting.  General process models describe the organization or
 evolution/maintenance: dull, easy framework of software processes.
 Now development and maintenance are more fluid,  Examples of these general models include
interleaved: maintenance is just another increment, part
 the ‘waterfall’ model,
of the original process.
 incremental development, and
 reuse-oriented development.

Chapter 2 Software Processes 25 Chapter 2 Software Processes 26

Key points

 Requirements engineering is the process of developing a


software specification.
 Design and implementation processes are concerned
with transforming a requirements specification into an Chapter 2 – Software Processes
executable software system.
 Software validation is the process of checking that the
system conforms to its specification and that it meets the Lecture 2
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.

Chapter 2 Software Processes 27 Chapter 2 Software Processes 28


2.3 Coping with change Reducing the costs of rework

 Change is inevitable in all large software projects.  Change avoidance: include activities to anticipate
 Business changes lead to new and changed system requirements possible changes before significant rework is required.
 New technologies open up new possibilities for improving  Develop a prototype to show some key features of the system to
implementations users, let them refine requirements before committing to them.
 Changing platforms require application changes  Change tolerance: design process to accommodate
 Change leads to rework: change
 new requirements lead to more requirements analysis  Use incremental development.
 this may lead to redesign of the system or components  Proposed changes may be implemented in new increments.
 this may lead to changes to the implementation  Or only a single old increment may have be changed.
 this may lead to new tests, and re-testing the system

Chapter 2 Software Processes 29 Chapter 2 Software Processes 30

Software prototyping Prototype development process

 A prototype is an initial version of a system used to  Objectives for prototype should be made in advance
demonstrate concepts and try out design options.  Decide what to put in, what to leave out.
 Allows users to see how well systems supports their  Let users test the prototype and evaluate it with respect
work, may lead to new ideas for requirements to the objectives
 As prototype is developed, may reveal errors and
omissions in the requirements
 Can check feasibility of design
 For a database, make sure it efficient
 For user interface, prototype is much better than a text
description.

Chapter 2 Software Processes 31 Chapter 2 Software Processes 32


Throw-away prototypes Incremental delivery

 Prototypes should be discarded after development as  The development AND delivery is broken down into
they are not a good basis for a production system: increments: each increment is delivered to users.
 It may be impossible to tune the system to meet non-functional  Each increment provides a subset of the required
requirements; functionality as a separate release.
 Prototypes are normally undocumented;
 The prototype structure is usually degraded through quick and  Highest priority requirements are included in early
dirty design; increments.
 The prototype probably will not meet normal organisational quality  Requirements are frozen for the current increment,
standards. though requirements for later increments can continue to
evolve.

Chapter 2 Software Processes 33 Chapter 2 Software Processes 34

Incremental delivery advantages Incremental delivery problems

 Customer value can be delivered with each increment so  It can be difficult to identify/specify common facilities that
system functionality is available earlier. are needed by all increments.
 Early increments act as a prototype to help elicit  The specification is not complete until final increment.
requirements for later increments.  This conflicts with the procurement model of many organizations,
 Like incremental development, it should be relatively easy where the complete system specification is part of the system
development contract.
to incorporate change.
 Difficult to replace an existing system as increments have
 The highest priority system services tend to receive the
less functionality than the system being replaced.
most testing.

Chapter 2 Software Processes 35 Chapter 2 Software Processes 36


Boehm’s spiral model Boehm’s spiral model of the software process

 Risk driven process framework Determine objectives,


Evaluate alternatives,
alternatives and
identify, resolve risks
 Process is represented as a spiral. constraints Risk
analysis

 Each loop in the spiral represents a phase in the process. Risk


analysis

 No fixed phases such as specification or design - loops in Risk


analysis
Prototype 3
Opera-
tional
the spiral are chosen depending on elements of risk. Risk
Prototype 2 protoype

analysis Proto-
 Risks are explicitly assessed and resolved throughout the REVIEW

Requirements plan
type 1
Simulations, models, benchmarks
process. Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code

Design Unit test


Integration
and test plan V&V Integration
Plan next phase test
Acceptance
Service test Develop, verify
next-level product

Chapter 2 Software Processes 37 Chapter 2 Software Processes 38

Spiral model sectors Spiral model usage

 Objective setting  Spiral model has been very influential in helping people
 Specific objectives for the phase are identified. think about iteration in software processes and
 Risk assessment and reduction introducing the risk-driven approach to development.
 Risks are assessed and activities put in place to reduce the key  In practice, however, the model is rarely used as
risks. published for practical software development.
 Development and validation
 A development model for the system is chosen which can be any
of the generic models, appropriate for current risk
 Planning
 The project is reviewed and the next phase of the spiral is
planned.

Chapter 2 Software Processes 39 Chapter 2 Software Processes 40


2.4 The Rational Unified Process RUP phases

 A modern generic process derived from the work on the  Inception


UML and associated process.  Establish the business case for the system. Who uses it? what
 Brings together aspects of the 3 generic process models do they get out of it?
discussed previously.  Elaboration
 Normally described from 3 perspectives  Develop an understanding of the problem domain and develop
the system architecture, develop plan, identify risk.
 A dynamic perspective that shows phases over time;
 A static perspective that shows process activities;  Construction
 A practice perspective that suggests good practice.  System design, programming and testing.
 Transition
 Deploy the system in its operating environment.

Chapter 2 Software Processes 41 Chapter 2 Software Processes 42

Static workflows (process activities)


Phases in the Rational Unified Process
in the Rational Unified Process

Note: workflows are not tied to specific phases

Workflow Description
Business modelling The business processes are modelled using business
Phase iteration use cases.
Requirements Actors who interact with the system are identified and
use cases are developed to model the system
requirements.
Analysis and design A design model is created and documented using
Inception Elaboration Construction Transition
architectural models, component models, object models
and sequence models.
Implementation The components in the system are implemented and
structured into implementation sub-systems. Automatic
Note the phases may be repeated iteratively/incrementally code generation from design models helps accelerate
this process.

Chapter 2 Software Processes 43 Chapter 2 Software Processes 44


Static workflows (process activities)
RUP good practice
in the Rational Unified Process

 Develop software iteratively


Workflow Description  Plan increments based on customer priorities and deliver highest
priority increments first.
Testing Testing is an iterative process that is carried out in conjunction
with implementation. System testing follows the completion of the  Manage requirements
implementation.  Explicitly document customer requirements and keep track of
Deployment A product release is created, distributed to users and installed in changes to these requirements.
their workplace.
Configuration and This supporting workflow managed changes to the system (see
 Use component-based architectures
change management Chapter 25).  Organize the system architecture as a set of reusable
components.
Project management This supporting workflow manages the system development (see
Chapters 22 and 23).

Environment This workflow is concerned with making appropriate software tools


available to the software development team.

Chapter 2 Software Processes 45 Chapter 2 Software Processes 46

RUP good practice Key points

 Visually model software  Processes should include activities to cope with change.
 Use graphical UML models to present static and dynamic views of  This may involve a prototyping phase that helps avoid
the software. poor decisions on requirements and design.
 Verify software quality  Processes may be structured for iterative development
 Ensure that the software meet’s organizational quality standards. and delivery so that changes may be made without
 Control changes to software disrupting the system as a whole.
 Manage software changes using a change management system  The Rational Unified Process is a modern generic
and configuration management tools.
process model that is organized into phases (inception,
elaboration, construction and transition) but separates
activities (requirements, analysis and design, etc.) from
these phases.

Chapter 2 Software Processes 47 Chapter 2 Software Processes 48

You might also like