Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 66

Chapter 2 – Software Processes

30/10/2014 Chapter 2 Software Processes 1


Topics covered

 Software process models


 Process activities
 Coping with change
 Process improvement

30/10/2014 Chapter 2 Software Processes 2


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.
30/10/2014 Chapter 2 Software Processes 3
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.

30/10/2014 Chapter 2 Software Processes 4


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.

30/10/2014 Chapter 2 Software Processes 5


Software process models

30/10/2014 Chapter 2 Software Processes 6


Process and Project:
Software Processes
A process is a sequence of steps performed for a given purpose.
1. Waterfall Model

• The Waterfall Model was first Process Model to be


introduced.
• It is also referred to as a linear-sequential life cycle
model.  
• It is very simple to understand and use.  In a waterfall
model, each phase must be completed fully before the
next phase can begin.
• This type of model is basically used for the project which is
small and there are no uncertain requirements. At the end
of each phase, a review takes place to determine if the
project is on the right path and whether or not to continue
or discard the project. In this model the testing starts only
after the development is complete. In waterfall model
Advantages and Disadvantages

Advantages of waterfall model:


• This model is simple and easy to understand and use.
• It is easy to manage due to the rigidity of the model – each phase has specific
deliverables and a review process.
• In this model phases are processed and completed one at a time. Phases do
not overlap.
• Waterfall model works well for smaller projects where requirements are very
well understood.
Advantages and Disadvantages

Disadvantages of waterfall model:


• Once an application is in the testing stage, it is very difficult to go back and
change something that was not well-thought out in the concept stage.
• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk
of changing.
When to use the waterfall model:

• This model is used only when the requirements are very well known,
clear and fixed.
• Product definition is stable.
• Technology is understood.
• There are no ambiguous requirements
• Ample (sufficient) resources with required expertise are available
freely
• The project is short.
The waterfall model

30/10/2014 Chapter 2 Software Processes 12


Verification vs validation

Verification:
"Are we building the product right"
 The software should conform to its specification

Validation:
"Are we building the right product"
 The software should do what the user really requires
2. Prototyping
• The basic idea here is that instead of freezing the requirements before a
design or coding can proceed, a throwaway prototype is built to
understand the requirements. This prototype is developed based on the
currently known requirements.
• By using this prototype, the client can get an “actual feel” of the system,
since the interactions with prototype can enable the client to better
understand the requirements of the desired system. 
• Prototyping is an attractive idea for complicated and large systems for
which there is no manual process or existing system to help determining
the requirements.
The prototype are usually not complete systems and many of the details
are not built in the prototype. The goal is to provide a system with overall
functionality.
Advantages and Disadvantages

Advantages of Prototype model:


• Users are actively involved in the development
• Since in this methodology a working model of the system is provided,
the users get a better understanding of the system being developed.
• Errors can be detected much earlier.
• Quicker user feedback is available leading to better solutions.
• Missing functionality can be identified easily
• Confusing or difficult functions can be identified.
Advantages and Disadvantages
• Disadvantages of Prototype model:
• Leads to implementing and then repairing way of building systems.
• Practically, this methodology may increase the complexity of the system
as scope of the system may expand beyond original plans.
• Incomplete application may cause application not to be used as the
full system was designed
• Incomplete or inadequate problem analysis.
When to use Prototype model:
  
• Prototype model should be used when the desired system needs to
have a lot of interaction with the end users.
• Typically, online systems, web interfaces have a very high amount of
interaction with end users, are best suited for Prototype model. It might
take a while for a system to be built that allows ease of use and needs
minimal training for the end user.
• Prototyping ensures that the end users constantly work with the system
and provide a feedback which is incorporated in the prototype to result
in a useable system. They are excellent for designing good human
computer interface systems.
3. Iterative Enhancement/Incremental Model

• Software should be developed in increments


• Each increment adding some functional capabilities to the system.
• Advantages:
• Testing each increment is easier than testing the entire system.
• Increments provide feedback to the client.
• Example: Word processing software
 1st Increment  file mgt. + editing + document production function
 2nd Increment  more editing function
 3rd Increment  spelling and grammar checking
 4th Increment  Advanced page layout etc.
• First Increment is core product (used by customer)
• Plan is developed for next increment
3. Iterative Enhancement/Incremental Model

• In incremental model the whole requirement is divided into


various builds.
• Multiple development cycles take place here, making the life
cycle a “multi-waterfall” cycle. 
• Cycles are divided up into smaller, more easily managed
modules.  Each module passes through the requirements,
design, implementation and testing phases.
• A working version of software is produced during the first
module, so you have working software early on during the
software life cycle. Each subsequent release of the module
adds function to the previous release. The process continues
till the complete system is achieved.
Advantages and Disadvantages

Advantages of Incremental model:


• Generates working software quickly and early during the software
life cycle.
• This model is more flexible – less costly to change scope and
requirements.
• It is easier to test and debug during a smaller iteration.
• In this model customer can respond to each built.
• Lowers initial delivery cost.
• Easier to manage risk because risky pieces are identified and
handled during first iteration.
Advantages and Disadvantages

Disadvantages of Incremental model:


• Needs good planning and design.
• Needs a clear and complete definition of the whole system before
it can be broken down and built incrementally.
• Total cost is higher than waterfall.
When to use the Incremental model:

• This model can be used when the requirements of the complete system are
clearly defined and understood.
• Major requirements must be defined; however, some details can evolve
with time.
• There is a need to get a product to the market early.
• A new technology is being used
• Resources with needed skill set are not available
• There are some high risk features and goals.
Incremental development

30/10/2014 Chapter 2 Software Processes 24


4. Spiral Model

The spiral model is similar to the incremental model, with more emphasis
placed on risk analysis. The spiral model has four phases: Planning, Risk
Analysis, Engineering and Evaluation. A software project repeatedly passes
through these phases in iterations (called Spirals in this model). The baseline
spiral, starting in the planning phase, requirements are gathered and risk is
assessed. Each subsequent spirals builds on the baseline spiral.
Planning Phase: Requirements are gathered during the planning phase.
Requirements like ‘BRS’ that is ‘Business Requirement Specifications’ and
‘SRS’ that is ‘System Requirement specifications’.
4. Spiral Model

Risk Analysis: In the risk analysis phase, a process is undertaken to identify


risk and alternate solutions.  A prototype is produced at the end of the risk
analysis phase. If any risk is found during the risk analysis then alternate
solutions are suggested and implemented.
Engineering Phase: In this phase software is developed, along with testing
at the end of the phase. Hence in this phase the development and testing is
done.
Evaluation phase: This phase allows the customer to evaluate the output of
the project to date before the project continues to the next spiral.
Advantages and Disadvantages

Advantages of Spiral model:


• High amount of risk analysis hence, avoidance of Risk is enhanced.
• Good for large and mission-critical projects.
• Strong approval and documentation control.
• Additional Functionality can be added at a later date.
• Software is produced early in the software life cycle.
• Disadvantages of Spiral model:
• Can be a costly model to use.
• Risk analysis requires highly specific expertise.
• Project’s success is highly dependent on the risk analysis phase.
• Doesn’t work well for smaller projects.
When to use Spiral model:

• When costs and risk evaluation is important


• For medium to high-risk projects
• Long-term project commitment unwise because of potential changes to
economic priorities
• Users are unsure of their needs
• Requirements are complex
• Significant changes are expected (research and exploration)
5. RAD (Rapid Application Development)

• RAD model is Rapid Application Development model. It is a type of


incremental model. In RAD model the components or functions are
developed in parallel as if they were mini projects. The developments are
time boxed, delivered and then assembled into a working prototype. This
can quickly give the customer something to see and use and to provide
feedback regarding the delivery and their requirements.
5. RAD (Rapid Application Development)

The phases in the rapid application development (RAD) model are:


• Business modeling: The information flow is identified between various
business functions.
Data modeling: Information gathered from business modeling is used to
define data objects that are needed for the business.
Process modeling: Data objects defined in data modeling are converted to
achieve the business information flow to achieve some specific business
objective. Description are identified and created for CRUD of data objects.
Application generation: Automated tools are used to convert process
models into code and the actual system.
Testing and turnover: Test new components and all the interfaces.
Advantages and Disadvantages

Advantages of the RAD model:


• Reduced development time.
• Increases reusability of components
• Quick initial reviews occur
• Encourages customer feedback
• Integration from very beginning solves a lot of integration issues.
• Disadvantages of RAD model:
• Depends on strong team and individual performances for identifying business
requirements.
• Only system that can be modularized can be built using RAD
• Requires highly skilled developers/designers.
• High dependency on modeling skills

When to use RAD model:

• RAD should be used when there is a need to create a system that can be
modularized in 2-3 months of time.
• It should be used if there’s high availability of designers for modeling and
the budget is high enough to afford their cost along with the cost of
automated code generating tools.
• RAD SDLC (Software Development Life Cycle) model should be chosen
only if resources with high business knowledge are available and there is a
need to produce the system in a short span of time (2-3 months).
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.

30/10/2014 Chapter 2 Software Processes 36


Reuse-oriented software engineering

30/10/2014 Chapter 2 Software Processes 37


Key process stages

 Requirements specification
 Software discovery and evaluation
 Requirements refinement
 Application system configuration
 Component adaptation and integration

30/10/2014 Chapter 2 Software Processes 38


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

30/10/2014 Chapter 2 Software Processes 39


Process activities

30/10/2014 Chapter 2 Software Processes 40


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.

30/10/2014 Chapter 2 Software Processes 41


The requirements engineering process

30/10/2014 Chapter 2 Software Processes 42


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

30/10/2014 Chapter 2 Software Processes 43


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.

30/10/2014 Chapter 2 Software Processes 44


A general model of the design process

30/10/2014 Chapter 2 Software Processes 45


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.
30/10/2014 Chapter 2 Software Processes 46
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.

30/10/2014 Chapter 2 Software Processes 47


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.

30/10/2014 Chapter 2 Software Processes 48


Stages of testing

30/10/2014 Chapter 2 Software Processes 49


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.

30/10/2014 Chapter 2 Software Processes 50


Testing phases in a plan-driven software
process (V-model)

30/10/2014 Chapter 2 Software Processes 51


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.

30/10/2014 Chapter 2 Software Processes 52


System evolution

30/10/2014 Chapter 2 Software Processes 53


Coping with change

30/10/2014 Chapter 2 Software Processes 54


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

30/10/2014 Chapter 2 Software Processes 55


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.

30/10/2014 Chapter 2 Software Processes 56


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.

30/10/2014 Chapter 2 Software Processes 57


Process improvement

30/10/2014 Chapter 2 Software Processes 58


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 Chapter 2 Software Processes 59


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.

30/10/2014 Chapter 2 Software Processes 60


The process improvement cycle

30/10/2014 Chapter 2 Software Processes 61


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.

30/10/2014 Chapter 2 Software Processes 62


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.

30/10/2014 Chapter 2 Software Processes 63


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.

30/10/2014 Chapter 2 Software Processes 64


Capability maturity levels

30/10/2014 Chapter 2 Software Processes 65


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
30/10/2014 Chapter 2 Software Processes 66

You might also like