SPM Unit 2
SPM Unit 2
A Software product development process usually starts when a request for the
product isreceived from the customer.
Starting from the inception stage:
o A product undergoes a series of transformations through a few identifiable
stages
o Until it is fully developed and released to the customer.
After release:
o the product is used by the customer and during this time the product
needs to bemaintained for fixing bugs and enhancing functionalities.
This stage is called Maintenance stage.
This set of identifiable stages through which a product transits from
inception toretirement form the life cycle of the product.
Life cycle model (also called a process model) is a graphical or textual
representationof its life cycle.
The no. of inter related activities to create a final product can be organized in
different ways and we can call these Process Models.
A software process model is a simplified representation of a software
process. Each model represents a process from a specific perspective. These generic
models are abstractions of the process that can be used to explain different
approaches to the software development.
Any software process must include the following four activities:
1. Software specification (or requirements engineering): Define the main
functionalities of thesoftware and the constrains around them.
2. Software design and implementation: The software is to be designed and
programmed.
3. Software verification and validation: The software must conforms to it’s
specification andmeets the customer needs.
4. Software evolution (software maintenance): The software is being modified
to meetcustomer and market requirements changes.
The various Process Models
areWater Fall Model
Spiral Model
Prototype Model
Incremental
Delivery
Plan-driven process is a process where all the activities are planned first, and the
progress is measured against the plan. While the agile process, planning is incremental
and it’s easier to changethe process to reflect requirement changes.
Requirements
Design
Implementation
Testing
Maintenance
In principle, the result of each phase is one or more documents that should be approved
and the next phase shouldn’t be started until the previous phase has completely been
finished.
In practice, however, these phases overlap and feed information to each other. For
example, duringdesign, problems with requirements can be identified, and during coding,
some of the design problems can be found, etc.
The software process therefore is not a simple linear but involves feedback from one
phase to another. So, documents produced in each phase may then have to be modified
to reflect the changesmade.
2.2.2Spiral 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 is gathered and risk is assessed. Each subsequent spiral builds on the
baseline spiral. It is one of the software development models like Waterfall, Agile, V-
Model.
Planning Phase: Requirements are gathered during the planning phase. Requirements
like ‘BRS’ that is ‘Bussiness Requirement Specifications’ and ‘SRS’ that is ‘System
Requirement specifications’.
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 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.
2.2.3Software Prototyping
A prototype is a version of a system or part of the system that’s developed quickly
to check the customer’s requirements or feasibility of some design decisions.So, a
prototype is useful when a customer or developer is not sure of the requirements, or of
algorithms, efficiency, business rules,response time, etc.
In prototyping, the client is involved throughout the development process, which
increases the likelihood of client acceptance of the final implementation.While some
prototypes are developed with the expectation that they will be discarded, it is possible
in some cases to evolve from prototype to working system.
A software prototype can be used:
[1] In the requirements engineering, a prototype can help with the elicitation and
validation of system requirements.It allows the users to experiment with the system,
and so, refine the requirements. They may get new ideas for requirements, and find
areas of strength and weakness in the software.Furthermore, as the prototype is
developed, it may reveal errors and in the requirements. The specification maybe then
modified to reflect the changes.
[2] In the system design, a prototype can help to carry out deign experiments to check the
feasibilityof a proposed design.For example, a database design may be prototype-d and
tested to check it supports efficient data access for the most common user queries.
The phases of a prototype are:
1. Establish objectives: The objectives of the prototype should be made explicit from
the start of the process. Is it to validate system requirements, or demonstrate
feasibility, etc.
2. Define prototype functionality: Decide what are the inputs and the expected output
from a prototype. To reduce the prototyping costs and accelerate the delivery
schedule, you may ignore some functionality, such as response time and memory
utilization unless they are relevant to the objective of the prototype.
3. Develop the prototype: The initial prototype is developed that includes only user
interfaces.
4. Evaluate the prototype: Once the users are trained to use the prototype, they then
discover requirements errors. Using the feedback both the specifications and the
prototype can be improved. If changes are introduced, then a repeat of steps 3 and 4
may be needed.
Prototyping is not a standalone, complete development methodology, but rather an
approach to be used in the context of a full methodology (such as incremental, spiral,
etc).
By developing the software incrementally, it is cheaper and easier to make changes in the
softwareas it is being developed.
Compared to the waterfall model, incremental development has three important benefits:
1. The cost of accommodating changing customer requirements is reduced. The
amount of analysis and documentation that has to be redone is much less than
that’s required with waterfall model.
2. It’s easier to get customer feedback on the work done during development than
when the system is fully developed, tested, and delivered.
3. More rapid delivery of useful software is possible even if all the functionality hasn’t
been included. Customers are able to use and gain value from the software earlier
than it’s possiblewith the waterfall model.
Disadvantages
It assumes constant involvement of customers
Centered approach rather than design-centered
approachLack of proper documentation
No precise definition
Difficult to estimate at start of a project
Only a code measure
Programmer-dependent
Does not consider code complexity
o Price to win, where the estimate is a figure that seems sufficiently low
to win acontract.
o Bottom-up, where component tasks are identified and sized and these
individualestimates are aggregated.
2.11Staffing Pattern
Putnam was the first to study the problem of what should be a proper staffing
pattern forsoftware projects. He extended the classical work of Norden who had
earlier investigated the
Staffing pattern of general research and development type of projects. In order to
appreciate the staffing pattern desirable for software projects, we must understand
both Norden’s and Putnam’s results.
Norden’s Work
Nordern studied the staffing patterns of several R&D projects.
He found the staffing patterns of R&D projects to be very different from the
manufacturingor sales type of work.
Staffing pattern of R&D types of projects changes dynamically over time for
efficient manpower utilization.
He concluded that staffing pattern for any R&D project can be approximated
by theRayleigh distribution curve.
Putnam’s Work