Chapter 2 – Software Processes
Chapter 2 Software Processes 1
30/10/2014
Topics covered
 Software process models
 Process activities
 Coping with change
 Process improvement
Chapter 2 Software Processes 2
30/10/2014
The software process
 A structured set of activities required to develop a
software system.
 Many different software processes but all involve:
 Specification – defining what the system should do;
 Design and implementation – defining the organization of the
system and implementing the system;
 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.
Chapter 2 Software Processes 3
30/10/2014
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;
 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.
Chapter 2 Software Processes 4
30/10/2014
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.
 In practice, most practical processes include elements of
both plan-driven and agile approaches.
 There are no right or wrong software processes.
Chapter 2 Software Processes 5
30/10/2014
Software process models
Chapter 2 Software Processes 6
30/10/2014
Software process models
 The waterfall model
 Plan-driven model. Separate and distinct phases of specification
and development.
 Incremental development
 Specification, development and validation are interleaved. May
be plan-driven or agile.
 Integration and configuration
 The system is assembled from existing configurable
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.
Chapter 2 Software Processes 7
30/10/2014
The waterfall model
Chapter 2 Software Processes 8
30/10/2014
Waterfall model phases
 There are separate identified phases in the waterfall
model:
 Requirements analysis and definition
 System and software design
 Implementation and unit testing
 Integration and system testing
 Operation and maintenance
 The main drawback of the waterfall model is the difficulty
of accommodating change after the process is underway.
In principle, a phase has to be complete before moving
onto the next phase.
Chapter 2 Software Processes 9
30/10/2014
Waterfall model problems
 Inflexible partitioning of the project into distinct stages
makes it difficult to respond to changing customer
requirements.
 Therefore, this model is only appropriate when the requirements
are well-understood and changes will be fairly limited during the
design process.
 Few business systems have stable requirements.
 The waterfall model is mostly used for large systems
engineering projects where a system is developed at
several sites.
 In those circumstances, the plan-driven nature of the waterfall
model helps coordinate the work.
Chapter 2 Software Processes 10
30/10/2014
Incremental development
Chapter 2 Software Processes 11
30/10/2014
Incremental development benefits
 The cost of accommodating changing customer
requirements is reduced.
 The amount of analysis and documentation that has to be
redone is much less than is required with the waterfall model.
 It is easier to get customer feedback on the development
work that has been done.
 Customers can comment on demonstrations of the software and
see how much has been implemented.
 More rapid delivery and deployment of useful software to
the customer is possible.
 Customers are able to use and gain value from the software
earlier than is possible with a waterfall process.
Chapter 2 Software Processes 12
30/10/2014
Incremental development problems
 The process is not visible.
 Managers need regular deliverables to measure progress. If
systems are developed quickly, it is not cost-effective to produce
documents that reflect every version of the system.
 System structure tends to degrade as new increments
are added.
 Unless time and money is spent on refactoring to improve the
software, regular change tends to corrupt its structure.
Incorporating further software changes becomes increasingly
difficult and costly.
Chapter 2 Software Processes 13
30/10/2014
Integration and configuration
 Based on software reuse where systems are integrated
from existing components or application systems
(sometimes called COTS -Commercial-off-the-shelf)
systems).
 Reused elements may be configured to adapt their
behaviour and functionality to a user’s requirements
 Reuse is now the standard approach for building many
types of business system
 Reuse covered in more depth in Chapter 15.
Chapter 2 Software Processes 14
30/10/2014
Types of reusable software
 Stand-alone application systems (sometimes called
COTS) that are configured for use in a particular
environment.
 Collections of objects that are developed as a package
to be integrated with a component framework such
as .NET or J2EE.
 Web services that are developed according to service
standards and which are available for remote invocation.
Chapter 2 Software Processes 15
30/10/2014
Reuse-oriented software engineering
Chapter 2 Software Processes 16
30/10/2014
Key process stages
 Requirements specification
 Software discovery and evaluation
 Requirements refinement
 Application system configuration
 Component adaptation and integration
Chapter 2 Software Processes 17
30/10/2014
Advantages and disadvantages
 Reduced costs and risks as less software is developed
from scratch
 Faster delivery and deployment of system
 But requirements compromises are inevitable so system
may not meet real needs of users
 Loss of control over evolution of reused system elements
Chapter 2 Software Processes 18
30/10/2014
Process activities
Chapter 2 Software Processes 19
30/10/2014
Process activities
 Real software processes are inter-leaved 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.
 For example, in the waterfall model, they are organized
in sequence, whereas in incremental development they
are interleaved.
Chapter 2 Software Processes 20
30/10/2014
The requirements engineering process
Chapter 2 Software Processes 21
30/10/2014
Software specification
 The process of establishing what services are required
and the constraints on the system’s operation and
development.
 Requirements engineering process
 Requirements elicitation and analysis
• What do the system stakeholders require or expect from the system?
 Requirements specification
• Defining the requirements in detail
 Requirements validation
• Checking the validity of the requirements
Chapter 2 Software Processes 22
30/10/2014
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.
Chapter 2 Software Processes 23
30/10/2014
A general model of the design process
Chapter 2 Software Processes 24
30/10/2014
Design activities
 Architectural design, where you identify the overall
structure of the system, the principal components
(subsystems or modules), their relationships and how
they are distributed.
 Database design, where you design the system data
structures and how these are to be represented in a
database.
 Interface design, where you define the interfaces
between system components.
 Component selection and design, where you search for
reusable components. If unavailable, you design how it
will operate.
Chapter 2 Software Processes 25
30/10/2014
System implementation
 The software is implemented either by developing a
program or programs or by configuring an application
system.
 Design and implementation are interleaved activities for
most types of software system.
 Programming is an individual activity with no standard
process.
 Debugging is the activity of finding program faults and
correcting these faults.
Chapter 2 Software Processes 26
30/10/2014
Software validation
 Verification and validation (V & V) is intended to show
that a system conforms to its specification and meets the
requirements of the system customer.
 Involves checking and review processes and system
testing.
 System testing involves executing the system with test
cases that are derived from the specification of the real
data to be processed by the system.
 Testing is the most commonly used V & V activity.
Chapter 2 Software Processes 27
30/10/2014
Stages of testing
Chapter 2 Software Processes 28
30/10/2014
Testing stages
 Component testing
 Individual components are tested independently;
 Components may be functions or objects or coherent groupings
of these entities.
 System testing
 Testing of the system as a whole. Testing of emergent properties
is particularly important.
 Customer testing
 Testing with customer data to check that the system meets the
customer’s needs.
Chapter 2 Software Processes 29
30/10/2014
Testing phases in a plan-driven software
process (V-model)
Chapter 2 Software Processes 30
30/10/2014
Software evolution
 Software is inherently flexible and can change.
 As requirements change through changing business
circumstances, the software that supports the business
must also evolve and change.
 Although there has been a demarcation between
development and evolution (maintenance) this is
increasingly irrelevant as fewer and fewer systems are
completely new.
Chapter 2 Software Processes 31
30/10/2014
System evolution
Chapter 2 Software Processes 32
30/10/2014
Coping with change
Chapter 2 Software Processes 33
30/10/2014
Coping with change
 Change is inevitable in all large software projects.
 Business changes lead to new and changed system
requirements
 New technologies open up new possibilities for improving
implementations
 Changing platforms require application changes
 Change leads to rework so the costs of change include
both rework (e.g. re-analysing requirements) as well as
the costs of implementing new functionality
Chapter 2 Software Processes 34
30/10/2014
Reducing the costs of rework
 Change anticipation, where the software process
includes activities that can anticipate possible changes
before significant rework is required.
 For example, a prototype system may be developed to show
some key features of the system to customers.
 Change tolerance, where the process is designed so that
changes can be accommodated at relatively low cost.
 This normally involves some form of incremental development.
Proposed changes may be implemented in increments that have
not yet been developed. If this is impossible, then only a single
increment (a small part of the system) may have be altered to
incorporate the change.
Chapter 2 Software Processes 35
30/10/2014
Coping with changing requirements
 System prototyping, where a version of the system or
part of the system is developed quickly to check the
customer’s requirements and the feasibility of design
decisions. This approach supports change anticipation.
 Incremental delivery, where system increments are
delivered to the customer for comment and
experimentation. This supports both change avoidance
and change tolerance.
Chapter 2 Software Processes 36
30/10/2014
Software prototyping
 A prototype is an initial version of a system used to
demonstrate concepts and try out design options.
 A prototype can be used in:
 The requirements engineering process to help with requirements
elicitation and validation;
 In design processes to explore options and develop a UI design;
 In the testing process to run back-to-back tests.
Chapter 2 Software Processes 37
30/10/2014
Benefits of prototyping
 Improved system usability.
 A closer match to users’ real needs.
 Improved design quality.
 Improved maintainability.
 Reduced development effort.
Chapter 2 Software Processes 38
30/10/2014
The process of prototype development
Chapter 2 Software Processes 39
30/10/2014
Prototype development
 May be based on rapid prototyping languages or tools
 May involve leaving out functionality
 Prototype should focus on areas of the product that are not well-
understood;
 Error checking and recovery may not be included in the
prototype;
 Focus on functional rather than non-functional requirements
such as reliability and security
Chapter 2 Software Processes 40
30/10/2014
Throw-away prototypes
 Prototypes should be discarded after development as
they are not a good basis for a production system:
 It may be impossible to tune the system to meet non-functional
requirements;
 Prototypes are normally undocumented;
 The prototype structure is usually degraded through rapid
change;
 The prototype probably will not meet normal organisational
quality standards.
Chapter 2 Software Processes 41
30/10/2014
Incremental delivery
 Rather than deliver the system as a single delivery, the
development and delivery is broken down into
increments with each increment delivering part of the
required functionality.
 User requirements are prioritised and the highest priority
requirements are included in early increments.
 Once the development of an increment is started, the
requirements are frozen though requirements for later
increments can continue to evolve.
Chapter 2 Software Processes 42
30/10/2014
Incremental development and delivery
 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.
Chapter 2 Software Processes 43
30/10/2014
Incremental delivery
Chapter 2 Software Processes 44
30/10/2014
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.
Chapter 2 Software Processes 45
30/10/2014
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.
Chapter 2 Software Processes 46
30/10/2014
Process improvement
Chapter 2 Software Processes 47
30/10/2014
Chapter 2 Software Processes 48
Process improvement
 Many software companies have turned to software
process improvement as a way of enhancing the quality
of their software, reducing costs or accelerating their
development processes.
 Process improvement means understanding existing
processes and changing these processes to increase
product quality and/or reduce costs and development
time.
30/10/2014
49
Approaches to improvement
 The process maturity approach, which focuses on
improving process and project management and
introducing good software engineering practice.
 The level of process maturity reflects the extent to which good
technical and management practice has been adopted in
organizational software development processes.
 The agile approach, which focuses on iterative
development and the reduction of overheads in the
software process.
 The primary characteristics of agile methods are rapid delivery of
functionality and responsiveness to changing customer
requirements.
Chapter 2 Software Processes
30/10/2014
50
The process improvement cycle
Chapter 2 Software Processes
30/10/2014
Process improvement activities
 Process measurement
 You measure one or more attributes of the software process or
product. These measurements forms a baseline that helps you
decide if process improvements have been effective.
 Process analysis
 The current process is assessed, and process weaknesses and
bottlenecks are identified. Process models (sometimes called
process maps) that describe the process may be developed.
 Process change
 Process changes are proposed to address some of the identified
process weaknesses. These are introduced and the cycle
resumes to collect data about the effectiveness of the changes.
Chapter 2 Software Processes 51
30/10/2014
52
Process measurement
 Wherever possible, quantitative process data
should be collected
 However, where organisations do not have clearly defined
process standards this is very difficult as you don’t know what to
measure. A process may have to be defined before any
measurement is possible.
 Process measurements should be used to
assess process improvements
 But this does not mean that measurements should drive the
improvements. The improvement driver should be the
organizational objectives.
Chapter 2 Software Processes
30/10/2014
53
Process metrics
 Time taken for process activities to be
completed
 E.g. Calendar time or effort to complete an activity or process.
 Resources required for processes or activities
 E.g. Total effort in person-days.
 Number of occurrences of a particular event
 E.g. Number of defects discovered.
Chapter 2 Software Processes
30/10/2014
54
Capability maturity levels
Chapter 2 Software Processes
30/10/2014
55
The SEI capability maturity model
 Initial
 Essentially uncontrolled
 Repeatable
 Product management procedures defined and used
 Defined
 Process management procedures and strategies defined
and used
 Managed
 Quality management strategies defined and used
 Optimising
 Process improvement strategies defined and used
Chapter 2 Software Processes
30/10/2014
Key points
 Software processes are the activities involved in
producing a software system. Software process models
are abstract representations of these processes.
 General process models describe the organization of
software processes.
 Examples of these general models include the ‘waterfall’ model,
incremental development, and reuse-oriented development.
 Requirements engineering is the process of developing a
software specification.
Chapter 2 Software Processes 56
30/10/2014
Key points
 Design and implementation processes are concerned
with transforming a requirements specification into an
executable software system.
 Software validation is the process of checking that the
system conforms to its specification and that it meets the
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.
 Processes should include activities such as prototyping
and incremental delivery to cope with change.
Chapter 2 Software Processes 57
30/10/2014
Key points
 Processes may be structured for iterative development
and delivery so that changes may be made without
disrupting the system as a whole.
 The principal approaches to process improvement are
agile approaches, geared to reducing process
overheads, and maturity-based approaches based on
better process management and the use of good
software engineering practice.
 The SEI process maturity framework identifies maturity
levels that essentially correspond to the use of good
software engineering practice.
Chapter 2 Software Processes 58
30/10/2014

Chapter 2 Software Processes Processes.pptx

  • 1.
    Chapter 2 –Software Processes Chapter 2 Software Processes 1 30/10/2014
  • 2.
    Topics covered  Softwareprocess models  Process activities  Coping with change  Process improvement Chapter 2 Software Processes 2 30/10/2014
  • 3.
    The software process A structured set of activities required to develop a software system.  Many different software processes but all involve:  Specification – defining what the system should do;  Design and implementation – defining the organization of the system and implementing the system;  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. Chapter 2 Software Processes 3 30/10/2014
  • 4.
    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;  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. Chapter 2 Software Processes 4 30/10/2014
  • 5.
    Plan-driven and agileprocesses  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.  In practice, most practical processes include elements of both plan-driven and agile approaches.  There are no right or wrong software processes. Chapter 2 Software Processes 5 30/10/2014
  • 6.
    Software process models Chapter2 Software Processes 6 30/10/2014
  • 7.
    Software process models The waterfall model  Plan-driven model. Separate and distinct phases of specification and development.  Incremental development  Specification, development and validation are interleaved. May be plan-driven or agile.  Integration and configuration  The system is assembled from existing configurable 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. Chapter 2 Software Processes 7 30/10/2014
  • 8.
    The waterfall model Chapter2 Software Processes 8 30/10/2014
  • 9.
    Waterfall model phases There are separate identified phases in the waterfall model:  Requirements analysis and definition  System and software design  Implementation and unit testing  Integration and system testing  Operation and maintenance  The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase. Chapter 2 Software Processes 9 30/10/2014
  • 10.
    Waterfall model problems Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.  Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.  Few business systems have stable requirements.  The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites.  In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work. Chapter 2 Software Processes 10 30/10/2014
  • 11.
    Incremental development Chapter 2Software Processes 11 30/10/2014
  • 12.
    Incremental development benefits The cost of accommodating changing customer requirements is reduced.  The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model.  It is easier to get customer feedback on the development work that has been done.  Customers can comment on demonstrations of the software and see how much has been implemented.  More rapid delivery and deployment of useful software to the customer is possible.  Customers are able to use and gain value from the software earlier than is possible with a waterfall process. Chapter 2 Software Processes 12 30/10/2014
  • 13.
    Incremental development problems The process is not visible.  Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.  System structure tends to degrade as new increments are added.  Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure. Incorporating further software changes becomes increasingly difficult and costly. Chapter 2 Software Processes 13 30/10/2014
  • 14.
    Integration and configuration Based on software reuse where systems are integrated from existing components or application systems (sometimes called COTS -Commercial-off-the-shelf) systems).  Reused elements may be configured to adapt their behaviour and functionality to a user’s requirements  Reuse is now the standard approach for building many types of business system  Reuse covered in more depth in Chapter 15. Chapter 2 Software Processes 14 30/10/2014
  • 15.
    Types of reusablesoftware  Stand-alone application systems (sometimes called COTS) that are configured for use in a particular environment.  Collections of objects that are developed as a package to be integrated with a component framework such as .NET or J2EE.  Web services that are developed according to service standards and which are available for remote invocation. Chapter 2 Software Processes 15 30/10/2014
  • 16.
    Reuse-oriented software engineering Chapter2 Software Processes 16 30/10/2014
  • 17.
    Key process stages Requirements specification  Software discovery and evaluation  Requirements refinement  Application system configuration  Component adaptation and integration Chapter 2 Software Processes 17 30/10/2014
  • 18.
    Advantages and disadvantages Reduced costs and risks as less software is developed from scratch  Faster delivery and deployment of system  But requirements compromises are inevitable so system may not meet real needs of users  Loss of control over evolution of reused system elements Chapter 2 Software Processes 18 30/10/2014
  • 19.
    Process activities Chapter 2Software Processes 19 30/10/2014
  • 20.
    Process activities  Realsoftware processes are inter-leaved 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.  For example, in the waterfall model, they are organized in sequence, whereas in incremental development they are interleaved. Chapter 2 Software Processes 20 30/10/2014
  • 21.
    The requirements engineeringprocess Chapter 2 Software Processes 21 30/10/2014
  • 22.
    Software specification  Theprocess of establishing what services are required and the constraints on the system’s operation and development.  Requirements engineering process  Requirements elicitation and analysis • What do the system stakeholders require or expect from the system?  Requirements specification • Defining the requirements in detail  Requirements validation • Checking the validity of the requirements Chapter 2 Software Processes 22 30/10/2014
  • 23.
    Software design andimplementation  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. Chapter 2 Software Processes 23 30/10/2014
  • 24.
    A general modelof the design process Chapter 2 Software Processes 24 30/10/2014
  • 25.
    Design activities  Architecturaldesign, where you identify the overall structure of the system, the principal components (subsystems or modules), their relationships and how they are distributed.  Database design, where you design the system data structures and how these are to be represented in a database.  Interface design, where you define the interfaces between system components.  Component selection and design, where you search for reusable components. If unavailable, you design how it will operate. Chapter 2 Software Processes 25 30/10/2014
  • 26.
    System implementation  Thesoftware is implemented either by developing a program or programs or by configuring an application system.  Design and implementation are interleaved activities for most types of software system.  Programming is an individual activity with no standard process.  Debugging is the activity of finding program faults and correcting these faults. Chapter 2 Software Processes 26 30/10/2014
  • 27.
    Software validation  Verificationand validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer.  Involves checking and review processes and system testing.  System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system.  Testing is the most commonly used V & V activity. Chapter 2 Software Processes 27 30/10/2014
  • 28.
    Stages of testing Chapter2 Software Processes 28 30/10/2014
  • 29.
    Testing stages  Componenttesting  Individual components are tested independently;  Components may be functions or objects or coherent groupings of these entities.  System testing  Testing of the system as a whole. Testing of emergent properties is particularly important.  Customer testing  Testing with customer data to check that the system meets the customer’s needs. Chapter 2 Software Processes 29 30/10/2014
  • 30.
    Testing phases ina plan-driven software process (V-model) Chapter 2 Software Processes 30 30/10/2014
  • 31.
    Software evolution  Softwareis inherently flexible and can change.  As requirements change through changing business circumstances, the software that supports the business must also evolve and change.  Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new. Chapter 2 Software Processes 31 30/10/2014
  • 32.
    System evolution Chapter 2Software Processes 32 30/10/2014
  • 33.
    Coping with change Chapter2 Software Processes 33 30/10/2014
  • 34.
    Coping with change Change is inevitable in all large software projects.  Business changes lead to new and changed system requirements  New technologies open up new possibilities for improving implementations  Changing platforms require application changes  Change leads to rework so the costs of change include both rework (e.g. re-analysing requirements) as well as the costs of implementing new functionality Chapter 2 Software Processes 34 30/10/2014
  • 35.
    Reducing the costsof rework  Change anticipation, where the software process includes activities that can anticipate possible changes before significant rework is required.  For example, a prototype system may be developed to show some key features of the system to customers.  Change tolerance, where the process is designed so that changes can be accommodated at relatively low cost.  This normally involves some form of incremental development. Proposed changes may be implemented in increments that have not yet been developed. If this is impossible, then only a single increment (a small part of the system) may have be altered to incorporate the change. Chapter 2 Software Processes 35 30/10/2014
  • 36.
    Coping with changingrequirements  System prototyping, where a version of the system or part of the system is developed quickly to check the customer’s requirements and the feasibility of design decisions. This approach supports change anticipation.  Incremental delivery, where system increments are delivered to the customer for comment and experimentation. This supports both change avoidance and change tolerance. Chapter 2 Software Processes 36 30/10/2014
  • 37.
    Software prototyping  Aprototype is an initial version of a system used to demonstrate concepts and try out design options.  A prototype can be used in:  The requirements engineering process to help with requirements elicitation and validation;  In design processes to explore options and develop a UI design;  In the testing process to run back-to-back tests. Chapter 2 Software Processes 37 30/10/2014
  • 38.
    Benefits of prototyping Improved system usability.  A closer match to users’ real needs.  Improved design quality.  Improved maintainability.  Reduced development effort. Chapter 2 Software Processes 38 30/10/2014
  • 39.
    The process ofprototype development Chapter 2 Software Processes 39 30/10/2014
  • 40.
    Prototype development  Maybe based on rapid prototyping languages or tools  May involve leaving out functionality  Prototype should focus on areas of the product that are not well- understood;  Error checking and recovery may not be included in the prototype;  Focus on functional rather than non-functional requirements such as reliability and security Chapter 2 Software Processes 40 30/10/2014
  • 41.
    Throw-away prototypes  Prototypesshould be discarded after development as they are not a good basis for a production system:  It may be impossible to tune the system to meet non-functional requirements;  Prototypes are normally undocumented;  The prototype structure is usually degraded through rapid change;  The prototype probably will not meet normal organisational quality standards. Chapter 2 Software Processes 41 30/10/2014
  • 42.
    Incremental delivery  Ratherthan deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.  User requirements are prioritised and the highest priority requirements are included in early increments.  Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve. Chapter 2 Software Processes 42 30/10/2014
  • 43.
    Incremental development anddelivery  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. Chapter 2 Software Processes 43 30/10/2014
  • 44.
    Incremental delivery Chapter 2Software Processes 44 30/10/2014
  • 45.
    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. Chapter 2 Software Processes 45 30/10/2014
  • 46.
    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. Chapter 2 Software Processes 46 30/10/2014
  • 47.
    Process improvement Chapter 2Software Processes 47 30/10/2014
  • 48.
    Chapter 2 SoftwareProcesses 48 Process improvement  Many software companies have turned to software process improvement as a way of enhancing the quality of their software, reducing costs or accelerating their development processes.  Process improvement means understanding existing processes and changing these processes to increase product quality and/or reduce costs and development time. 30/10/2014
  • 49.
    49 Approaches to improvement The process maturity approach, which focuses on improving process and project management and introducing good software engineering practice.  The level of process maturity reflects the extent to which good technical and management practice has been adopted in organizational software development processes.  The agile approach, which focuses on iterative development and the reduction of overheads in the software process.  The primary characteristics of agile methods are rapid delivery of functionality and responsiveness to changing customer requirements. Chapter 2 Software Processes 30/10/2014
  • 50.
    50 The process improvementcycle Chapter 2 Software Processes 30/10/2014
  • 51.
    Process improvement activities Process measurement  You measure one or more attributes of the software process or product. These measurements forms a baseline that helps you decide if process improvements have been effective.  Process analysis  The current process is assessed, and process weaknesses and bottlenecks are identified. Process models (sometimes called process maps) that describe the process may be developed.  Process change  Process changes are proposed to address some of the identified process weaknesses. These are introduced and the cycle resumes to collect data about the effectiveness of the changes. Chapter 2 Software Processes 51 30/10/2014
  • 52.
    52 Process measurement  Whereverpossible, quantitative process data should be collected  However, where organisations do not have clearly defined process standards this is very difficult as you don’t know what to measure. A process may have to be defined before any measurement is possible.  Process measurements should be used to assess process improvements  But this does not mean that measurements should drive the improvements. The improvement driver should be the organizational objectives. Chapter 2 Software Processes 30/10/2014
  • 53.
    53 Process metrics  Timetaken for process activities to be completed  E.g. Calendar time or effort to complete an activity or process.  Resources required for processes or activities  E.g. Total effort in person-days.  Number of occurrences of a particular event  E.g. Number of defects discovered. Chapter 2 Software Processes 30/10/2014
  • 54.
    54 Capability maturity levels Chapter2 Software Processes 30/10/2014
  • 55.
    55 The SEI capabilitymaturity model  Initial  Essentially uncontrolled  Repeatable  Product management procedures defined and used  Defined  Process management procedures and strategies defined and used  Managed  Quality management strategies defined and used  Optimising  Process improvement strategies defined and used Chapter 2 Software Processes 30/10/2014
  • 56.
    Key points  Softwareprocesses are the activities involved in producing a software system. Software process models are abstract representations of these processes.  General process models describe the organization of software processes.  Examples of these general models include the ‘waterfall’ model, incremental development, and reuse-oriented development.  Requirements engineering is the process of developing a software specification. Chapter 2 Software Processes 56 30/10/2014
  • 57.
    Key points  Designand implementation processes are concerned with transforming a requirements specification into an executable software system.  Software validation is the process of checking that the system conforms to its specification and that it meets the 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.  Processes should include activities such as prototyping and incremental delivery to cope with change. Chapter 2 Software Processes 57 30/10/2014
  • 58.
    Key points  Processesmay be structured for iterative development and delivery so that changes may be made without disrupting the system as a whole.  The principal approaches to process improvement are agile approaches, geared to reducing process overheads, and maturity-based approaches based on better process management and the use of good software engineering practice.  The SEI process maturity framework identifies maturity levels that essentially correspond to the use of good software engineering practice. Chapter 2 Software Processes 58 30/10/2014