CHAPTER 2 –
SOFTWARE
PROCESSES
1
TOPICS COVERED
• Software process models
• Process activities
• Coping with change
• Process improvement
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.
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.
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.
5
SOFTWARE PROCESS MODELS
6
SOFTWARE PROCESSES
Process and Project:
A process is a sequence of steps performed for a given
purpose.
7
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 8
development is complete. In waterfall model phases do not
overlap.
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.
9
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.
10
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.
11
THE WATERFALL MODEL
12
THE V-SHAPE MODEL
• The V-shaped model, or Verification and
Validation (V&V) model, is a
Software Development Life Cycle (SDLC)
methodology where each development phase
has a corresponding testing phase planned in
parallel.
13
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 14
15
KEY ASPECTS OF THE V-
MODEL
•Parallel Planning:
Testing is planned in parallel with development phases.
For example, acceptance test plans are created during the
business requirement phase,
and unit test cases are created during the low-level design
phase.
•Verification and Validation:
•The left side of the V focuses on verification
•The right side focuses on validation.
•Sequential Execution:
•Like the waterfall model, the V-model is sequential,
•Each phase needing to be completed before the next one
begins.
•Early Defect Detection:
•By planning tests upfront, potential issues can be discovered
and resolved earlier, which is more efficient and cost- 16
effective.
WHEN TO USE V-SHAPE MODEL
• Well Defined requirements
• Smaller, simpler projects,
• High Integrity systems
17
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 18
the
details are not built in the prototype. The goal is to provide a
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. 19
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.
20
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.
21
22
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.
• First Increment is core product (used by customer)
• Plan is developed for next increment
23
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
24
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.
25
• 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.
26
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.
27
INCREMENTAL DEVELOPMENT
28
29
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’.
30
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.
31
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.
32
• 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)
33
34
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.
35
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 36
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.
37
• High dependency on modeling skills
• Inapplicable to cheaper projects as cost of modeling and automated code generation
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).
38
39
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.
• Web services that are developed according to
service standards and which are available for40
remote invocation.
REUSE-ORIENTED SOFTWARE
ENGINEERING
41
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
42
PROCESS ACTIVITIES
43
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.
44
THE REQUIREMENTS
ENGINEERING PROCESS
45
COPING WITH CHANGE
46
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
47
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.
48
PROCESS IMPROVEMENT
49
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.
50
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.
51
THE PROCESS IMPROVEMENT
CYCLE
52
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.
53
CAPABILITY MATURITY LEVELS
54
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
55