Professional Documents
Culture Documents
Lecture 1
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)
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.
Final
Validation version Can be plan-driven (versions are planned ahead) or agile
(determine next increment as you go).
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
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 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.
Key points
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
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.
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.
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.
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
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.
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.
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.