Software Process Model
Overview
What? A software process – as a framework for
the tasks that are required to build high-quality
software.
Who? Managers, software engineers, and
customers.
Why? Provides stability, control, and organization
to an otherwise chaotic activity.
Steps? A handful of activities are common to all
software processes, details vary.
Work product? Programs, documents, and data.
What is software engineering?
Definition :
(1) The application of systematic, disciplined, quantifiable
approach to the development, operation, and maintenance
of software; that is, the application of engineering to
software.(2) The study of approaches as in (1) above
Its a discipline that is concerned with all aspects of software
production.
Software engineers should adopt
Systematic and organized approach to their work
Use appropriate tools and techniques depending on the
problem to be solved
The development constraints and the resources available
Apply Engineering Concepts to developing Software
Challenge for Software Engineers is to produce high quality
software with finite amount of resources & within a predicted
schedule
Software Engineering – Layered
Technology
Layered Technology
Tools: CASE preferred
Methods: technical “how to’s”
Process model: the “framework”
A quality focus: the “bedrock”
Layered Technology
A quality Focus
Every organization is rest on its commitment to quality.
Total quality management, Six Sigma, or similar continuous
improvement culture and it is this culture ultimately leads to
development of increasingly more effective approaches to software
engineering.
The bedrock that supports software engineering is a quality focus.
Process:
It’s a foundation layer for software engineering.
It’s define framework for a set of key process areas (KPA) for
effectively manage and deliver quality software in a cost effective
manner
The processes define the tasks to be performed and the order in which
they are to be performed
Process framework
Why process :
A process defines who is doing what, when and how to reach a
certain goal.
To build complete software process.
Identified a small number of framework activities that are
applicable to all software projects, regardless of their size or
complexity.
It encompasses a set of umbrella activities that are applicable
across the entire software process.
Generic Process Framework
Activities
Communication:
Heavy communication with customers, stakeholders, team
Encompasses requirements gathering and related activities
Planning:
Workflow that is to follow
Describe technical task, likely risk, resources will require, work
products to be produced and a work schedule.
Modeling:
Help developer and customer to understand requirements
(Analysis of requirements) & Design of software
Construction
Code generation: either manual or automated or both
Testing – to uncover error in the code.
Deployment:
Delivery to the customer for evaluation
Customer provide feedback
The Process Model: Adaptability
The framework activities will always
be applied on every project ... BUT
The tasks for each activity will vary
based on:
The type of project (an “entry point” to
the model)
Characteristics of the project
Common sense judgment; concurrence
of the project team
Umbrella Activities
Software project tracking and control
Assessing progress against the project plan.
Take adequate action to maintain schedule.
Formal technical reviews
Assessing software work products in an effort to uncover and remove errors
before goes into next action or activity.
Software quality assurance
Define and conducts the activities required to ensure software quality.
Software configuration management
Manages the effects of change.
Document preparation and production
Help to create work products such as models, documents, logs, form and
list.
Reusability management
Define criteria for work product reuse
Mechanisms to achieve reusable components.
Measurement
Define and collects process, project, and product measures
Assist the team in delivering software that meets customer’s needs.
Risk management
Assesses risks that may effect that outcome of project or quality of product
Capability Maturity Model
Integration (CMMI)
The Software Engineering Institute (SEI) has
developed process meta-model to measure
organization different level of process
capability and maturity.
CMMI – developed by SEI
The CMMI defines each process area in terms
of “specific goals” and the “specific practices”
required to achieve these goals.
Specific goals establish the characteristics
that must exist if the activities implied by a
process area are to be effective.
Specific practices refine a goal into a set of
process-related activities.
CMMI Level
Level 0 (Incomplete) –
Process are not perform or not achieve all the goals and objectives
defined by the CMMI for Level I capability.
Level 1 (Performed) – All specific goals are performed as per defined by
CMMI
Level 2 (Managed) –
All level 1 criteria have been satisfied
In addition to Level I;
People doing work have access to adequate resources to get job
done,
Stakeholders are actively involved,
Work tasks and products are monitored, controlled, reviewed,
and evaluated for conformance to process description.
Level 3 (Defined) –
All level 2 criteria have been achieved.
In addition;
management and engineering processes documented
standardized and integrated into organization-wide software
process
CMMI Level (cont.)
Level 4 (Quantitatively Managed) -
All level 3 criteria have been satisfied.
Software process and products are quantitatively understood
Controlled using detailed measures and assessment.
Level 5 (Optimized) –
Continuous process improvement is enabled by quantitative
feedback from the process and testing innovative ideas.
Software process model
Process models prescribe a distinct set of activities,
actions, tasks, milestones, and work products required to
engineer high quality software.
Process models are not perfect, but provide roadmap for
software engineering work.
Software models provide stability, control, and
organization to a process that if not managed can easily
get out of control
Software process models are adapted to meet the needs
of software engineers and managers for a specific
project.
Build and Fix Model
Build and Fix Model
The earlier approach
Product is constructed without specification or any
attempt at design.
developers simply build a product that is reworked as
many times as necessary to satisfy the client.
model may work for small projects but is totally
unsatisfactory for products of any reasonable size.
Maintenance is high.
Source of difficulties and deficiencies
impossible to predict
impossible to manage
Why Models are needed?
Symptoms of inadequacy: the software crisis
scheduled time and cost exceeded
user expectations not met
poor quality
Process as a "black box"
Informal
Requirements
Process
Product
Quality?
Uncertain /
Incomplete
requirement
In the beginning
Problems
The assumption is that requirements can
be fully understood prior to development
Interaction with the customer occurs
only at the beginning (requirements)
and end (after delivery)
Unfortunately the assumption almost
never holds
Process as a "white box"
Informal
Requirements
Process
Product
feedback
Advantages
Reduce risks by improving visibility
Allow project changes as the project progresses
based on feedback from the customer
Prescriptive Model
Prescriptive process models advocate an orderly approach to software
engineering
Organize framework activities in a certain order
Process framework activity with set of software engineering actions.
Each action in terms of a task set that identifies the work to be
accomplished to meet the goals.
The resultant process model should be adapted to accommodate the
nature of the specific project, people doing the work, and the work
environment.
Software engineer choose process framework that includes activities
like;
Communication
Planning
Modeling
Construction
Deployment
Prescriptive Model
Calling this model as “Prescribe”
because it recommend a set of
process elements, activities, action
task, work product & quality.
Each elements are inter related to
one another (called workflow).
Waterfall Model or Classic Life
Cycle
Waterfall Model or Classic Life
Cycle
Requirement Analysis and Definition: What - The systems services, constraints
and goals are defined by customers with system users.
Scheduling tracking -
Assessing progress against the project plan.
Require action to maintain schedule.
System and Software Design: How –It establishes and overall system
architecture. Software design involves fundamental system abstractions and
their relationships.
Integration and system testing: The individual program unit or programs are
integrated and tested as a complete system to ensure that the software
requirements have been met. After testing, the software system is delivered to
the customer.
Operation and Maintenance: Normally this is the longest phase of the software
life cycle. The system is installed and put into practical use. Maintenance involves
correcting errors which were not discovered in earlier stages of the life-cycle.
Limitations of the waterfall
model
The nature of the requirements will not change very much During
development; during evolution
The model implies that you should attempt to complete a given stage
before moving on to the next stage
Does not account for the fact that requirements constantly change.
It also means that customers can not use anything until the entire
system is complete.
The model implies that once the product is finished, everything else is
maintenance.
Surprises at the end are very expensive
Some teams sit ideal for other teams to finish
Therefore, this model is only appropriate when the requirements are well-
understood and changes will be fairly limited during the design process.
Problems:
1. Real projects are rarely follow the sequential model.
2. Difficult for the customer to state all the requirement explicitly.
3. Assumes patience from customer - working version of program will not
available until programs not getting change fully.
26
Incremental Process Model
C- Communication
P - Planning
M – Modeling
C - Construction
D - Deployment
Delivers software in small but usable pieces, each piece builds on
pieces already delivered
The Incremental Model
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.
First Increment is often core product
Includes basic requirement
Many supplementary features (known & unknown) remain
undelivered
A plan of next increment is prepared
Modifications of the first increment
Additional features of the first increment
It is particularly useful when enough staffing is not available for the
whole project
Increment can be planned to manage technical risks.
Incremental model focus more on delivery of operation product with
each increment.
The Incremental Model
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.
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.
Rapid Application Development
(RAD) Model
Makes heavy use of reusable software components with an
extremely short development cycle
RAD model
Communication – to understand business problem.
Planning – multiple s/w teams works in parallel on diff.
system.
Modeling –
Business modeling – Information flow among
business is working.
Ex. What kind of information drives?
Who is going to generate information?
From where information comes and goes?
Data modeling – Information refine into set of data
objects that are needed to support business.
Process modeling – Data object transforms to
information flow necessary to implement business.
Construction – it highlighting the use of pre-existing
software component.
Deployment – Deliver to customer basis for
subsequent iteration.
RAD model emphasize a short development cycle.
“High speed” edition of linear sequential model.
If requirement are well understood and project scope is
constrained then it enable development team to create “
fully functional system” within a very short time period.
RAD Model
If application is modularized (“Scalable Scope”), each
major function to be completed in less than three
months.
Each major function can be addressed by a separate
team and then integrated to form a whole.
Drawback:
For large but scalable projects
RAD requires sufficient human resources
Projects fail if developers and customers are not
committed in a much shortened time-frame
Problematic if system can not be modularized
Not appropriate when technical risks are high ( heavy
use of new technology)
Evolutionary Process Model
Produce an increasingly more
complete version of the software with
each iteration.
Evolutionary Models are iterative.
Evolutionary models are:
Prototyping
Spiral Model
Concurrent Development Model
Fourth Generation Techniques (4GT)
Evolutionary Process Models :
Prototyping
Prototyping cohesive
Best approach when:
Objectives defines by customer are general but does not have details
like input, processing, or output requirement.
Developer may be unsure of the efficiency of an algorithm, O.S., or the
form that human machine interaction should take.
It can be used as standalone process model.
Model assist software engineer and customer to better understand what is to
be built when requirement are fuzzy.
Prototyping start with communication, between a customer and software
engineer to define overall objective, identify requirements and make a
boundary.
Going ahead, planned quickly and modeling (software layout visible to the
customers/end-user) occurs.
Quick design leads to prototype construction.
Prototype is deployed and evaluated by the customer/user.
Feedback from customer/end user will refine requirement and that is how
iteration occurs during prototype to satisfy the needs of the customer.
Prototyping (cont..)
Prototype can be serve as “the first system”.
Both customers and developers like the prototyping paradigm.
Customer/End user gets a feel for the actual system
Developer get to build something immediately.
Problem Areas:
Customer cries foul and demand that “a few fixes” be applied to make
the prototype a working product, due to that software quality suffers as
a result.
Developer often makes implementation in order to get a prototype
working quickly without considering other factors in mind like OS,
Programming language, etc.
Customer and developer both must be agree that the prototype is built to
serve as a mechanism for defining requirement.
Evolutionary Model: Spiral
Model
Spiral Model
Couples iterative nature of prototyping with the controlled and
systematic aspects of the linear sequential model
It provide potential for rapid development of increasingly more
complete version of the software.
Using spiral, software developed in as series of evolutionary
release.
Early iteration, release might be on paper or prototype.
Later iteration, more complete version of software.
Divided into framework activities (C,P,M,C,D). Each activity
represent one segment.
Evolutionary process begins in a clockwise direction, beginning at
the center risk.
First circuit around the spiral might result in development of a
product specification. Subsequently, develop a prototype and
then progressively more sophisticated version of software.
Unlike other process models that end when software is delivered.
It can be adapted to apply throughout the life of software.
Spiral Model
Spiral Model (cont.)
Concept Development Project:
Start at the core and continues for multiple iterations until it is
complete.
If concept is developed into an actual product, the process
proceeds outward on the spiral.
New Product Development Project:
New product will evolve through a number of iterations around
the spiral.
Later, a circuit around spiral might be used to represent a
“Product Enhancement Project”
Product Enhancement Project:
There are times when process is dormant or software team not
developing new things but change is initiated, process start at
appropriate entry point.
Spiral models uses prototyping as a risk reduction
mechanism but, more important, enables the developer
to apply the prototyping approach at each stage in the
evolution of the product.
It maintains the systematic stepwise approach
suggested by the classic life cycle but also incorporates
it into an iterative framework activity.
If risks cannot be resolved, project is immediately
terminated
Problem Area:
It may be difficult to convince customers (particularly in
contract situations) that the evolutionary approach is
controllable.
If a major risk is not uncovered and managed, problems
will undoubtedly occur.
Concurrent Development Model
Concurrent Development Model
It represented schematically as series of major technical
activities, tasks, and their associated states.
It is often more appropriate for system engineering projects
where different engineering teams are involved.
The activity-modeling may be in any one of the states for a given
time.
All activities exist concurrently but reside in different states.
E.g.
The analysis activity (existed in the none state while initial
customer communication was completed) now makes a transition
into the under development state.
Analysis activity moves from the under development state into
the awaiting changes state only if customer indicates changes
in requirements.
Series of event will trigger transition from state to state.
E.g. During initial stage there was inconsistency in design which was
uncovered. This will triggers the analysis action from the Done
state into Awaiting Changes state.
Concurrent Development (Cont.)
Visibility of current state of project
It define network of activities
Each activities, actions and tasks on
the network exists simultaneously
with other activities ,actions and
tasks.
Events generated at one point in the
process network trigger transitions
among the states.
Fourth Generation Techniques(4GT)
4GT
Like all other models, 4GT begins with a requirements
gathering phase.
Ideally, the customer would describe the requirements, which
are directly translated into an operational prototype.
Practically, however, the client may be unsure of the
requirements, may be ambiguous in his specs or may be
unable to specify information in a manner that a 4GT tool can
use.
For small applications, it may be possible to move directly from
the requirements gathering phase to the implementation phase
using a nonprocedural fourth generation language.
However for larger projects a design strategy is necessary.
Otherwise, the same difficulties are likely to arise as with
conventional approaches.
4GT
To transform a 4GT implementation into a product, the
developer must conduct thorough testing, develop meaningful
documentation.
In addition, the 4GT developed software must be built in a
manner that enables maintenance to be performed quickly.
Merits:
Dramatic reduction in software development time. (For small
and intermediate application)
Improved productivity for software developers.
Demerits:
Not much easier to use as compared to programming
languages
The maintainability of large software systems built using 4GT is
open to question.
4GT
4GT Software tool is used to generate the source code
for a software system from a high level specification
representation
Commonly used 4GT in development models are
mentioned below:
Report Generation
Data base query language
Data Manipulation
Screen definition and interaction
Code Generation
Web engineering Tools
high-level graphics
Component Based
Development
component-based development (CBD) model
incorporates many of the characteristics of the
spiral model.
It is evolutionary by nature and iterative
approach to create software.
CBD model creates applications from
prepackaged software components (called
classes).
CBD Model
CBD model (cont.)
Modeling and construction activities begin with identification of
candidate components.
Classes created in past software engineering projects are
stored in a class library or repository.
Once candidate classes are identified, the class library is
searched to determine if these classes already exist.
If class is already available in library extract and reuse it.
If class is not available in library, it is engineered or developed
using object-oriented methods.
Any new classes built to meet the unique needs of the
application.
Now process flow return to the spiral activity.
CBD model (cont.)
CBD model leads to software
reusability.
Based on studies, CBD model leads to
70 % reduction in development cycle
time.
84% reduction in project cost.
Productivity is very high.