Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Software Engineering

UNIT-2
Software Process Model
A Generic Process Model
• A process was defined as a collection of work activities, actions, and
tasks that are performed when some work product is to be created.
• Each of these activities, actions, and tasks reside within a framework
or model that defines their relationship with the process and with
one another.
• The software process is represented schematically in Figure. Referring
to the figure, each framework activity is populated by a set of
software engineering actions.
• Each software engineering action is defined by a task set that
identifies the work tasks that are to be completed, the work products
that will be produced, the quality assurance points that will be
required, and the milestones that will be used to indicate progress.
• A generic process framework for software
engineering defines five framework activities
communication, planning, modeling,
construction, and deployment.

• In addition, a set of umbrella activities project


tracking and control, risk management, quality
assurance, configuration management, technical
reviews, and others are applied throughout the
process.
❖Process flow describes how the framework activities and the actions
and tasks that occur within each framework activity are organized
with respect to sequence and time and is illustrated in Figure.
• A linear process flow executes each of the five framework activities in
sequence, beginning with communication and culminating with
deployment.

• An iterative process flow repeats one or more of the activities before


proceeding to the next.
• An evolutionary process flow executes the activities in a “circular”
manner. Each circuit through the five activities leads to a more
complete version of the software.

• A parallel process flow executes one or more activities in parallel with


other activities (e.g., modeling for one aspect of the software might
be executed in parallel with construction of another aspect of the
software)
Process Assessment and Improvement
• The existence of a software process is no guarantee that software will be
delivered on time, that it will meet the customer’s needs, or that it will
exhibit the technical characteristics that will lead to long-term quality
characteristics.
• Process patterns must be coupled with solid software engineering practice.
• In addition, the process itself can be assessed to ensure that it meets a set
of basic process criteria that have been shown to be essential for a
successful software engineering.
• A number of different approaches to software process assessment and
improvement have been proposed over the past few decades:
• Standard CMMI Assessment Method for Process Improvement (SCAMPI):-
provides a five-step process assessment model that incorporates five
phases: initiating, diagnosing, establishing, acting, and learning. The
SCAMPI method uses the SEI CMMI as the basis for assessment [SEI00]
• CMM-Based Appraisal for Internal Process Improvement (CBA IPI):-
provides a diagnostic technique for assessing the relative maturity of
a software organization; uses the SEI CMM as the basis for the
assessment [Dun01].
• SPICE (ISO/IEC15504):-a standard that defines a set of requirements
for software process assessment. The intent of the standard is to
assist organizations in developing an objective evaluation of the
efficacy of any defined software process [ISO08].
• ISO 9001:2000 for Software:-a generic standard that applies to any
organization that wants to improve the overall quality of the
products, systems, or services that it provides. Therefore, the
standard is directly applicable to software organizations and
companies [Ant06]
Software Process Models The process model is the abstract representation
of process.
• Also known as Software development life cycle SDLC
(SDLC) or Application development life cycle
Models Communication Phases
• Process models prescribe a distinct set of
activities, actions, tasks and milestones
(deliverables) required to engineer high quality
software.
Deployment SDLC Planning

Software
• Process models are not perfect, but provide Development
roadmap for software engineering work.
Life
• Software models provide stability, control and Cycle
organization to a process that if not managed
can easily get out of control. Construction Modelling
• Software process models are adapted
(adjusted) to meet the needs of software
engineers and managers for a specific project.
Different Process Models
 Process model is selected based on Process Models
different parameters
 Type of the project & people • Waterfall Model (Linear Sequential Model)
 Complexity of the project • Incremental Process Model
 Size of team • Prototyping Model
 Expertise of people in team • The Spiral Model
 Working environment of team • Rapid Application Development(RAD) Model
 Software delivery deadline • Concurrent Development Models
• Component Based Development Model
The Waterfall Model Classic life cycle or linear sequential model

Communication
• Project initiation
Planning
• Requirements
gathering • Estimating
Modeling
• Scheduling
• Tracking • Analysis
Construction
• Design
• Coding
Deployment
• Testing
• Delivery
• Support
• Feedback

When requirements for a problems are well understood then this model is used
in which work flow from communication to deployment is linear
The Waterfall Model
When to use ? Advantages
 Requirements are very well known, clear  Simple to implement and manage
and fixed
 Product definition is stable Drawbacks
 Technology is understood  Unable to accommodate changes at later
stages, that is required in most of the
 There are no ambiguous (unclear)
cases.
requirements
 Working version is not available during
 Ample (sufficient) resources with
development. Which can lead the
required expertise are available freely
development with major mistakes.
 The project is short
 Deadlock can occur due to delay in any
step.
 Not suitable for large projects.
Incremental Process Model
• There are many situations in which initial software requirements are
reasonably well defined, but the overall scope of the development effort
prevent a purely linear process.
• In addition, there may be a compelling need to provide a limited set of
software functionality to users quickly and then refine and expand on that
functionality in later software releases.
• In such cases, there is a need of a process model that is designed to produce
the software in increments.
Incremental Process Model
Software Functionality & Features

Project Calendar Time

• The incremental model combines elements of linear and parallel process flows.
• This model applies linear sequence in a iterative manner.
• Initially core working product is delivered.
• Each linear sequence produces deliverable “increments” of the software.
Incremental Process Model
e.g. word-processing software developed using the incremental model
 It might deliver basic file management, editing and
document production functions in the first
increment Advantages
 more sophisticated editing in the second increment;  Generates working software quickly
 spelling and grammar checking in the third and early during the software life
increment; and cycle.
 advanced page layout capability in the fourth  It is easier to test and debug during
increment. a smaller iteration.
When to use ?  Customer can respond to each built.
 When the requirements of the complete  Lowers initial delivery cost.
system are clearly defined and understood but  Easier to manage risk because risky
staffing is unavailable for a complete pieces are identified and handled
implementation by the business deadline. during iteration.
V-Model
➢Also known as verification and validation model
➢Extension of waterfall model
➢Testing is associated with every phase of lifecycle.
➢Verification Phase(Requirement analysis ,
System design, Architectural design, module design).
➢Validation phase(Unit Testing, Integration testing,
system testing , Acceptance testing).
Advantages
• Time saving
• Good understanding of project in the beginning
• Every component must be testable.
• Progress can be tracked easily.
• Proactive defect tracking.
Disadvantages
• No feedback so less scope of changes
• Risk analysis not done.
• Not good for big or object oriented projects.
Evolutionary Process Models
• When a set of core product or system requirements is well understood but the
details of product or system extensions have yet to be defined.
• Also known as “successive model”.
• In this situation there is a need of process model which specially designed to
accommodate product that evolve with time.
• Evolutionary Process Models are specially meant for that which produce an
increasingly more complete version of the software with each iteration.
• Evolutionary Models are iterative.
• They are characterized in a manner that enables you to develop increasingly
more complete versions of the software.
• Evolutionary models are
• Prototyping Model
• Spiral Model
Prototyping model
When to use ?
• Customers have general objectives of software but do not have detailed
requirements for functions & features.
• Developers are not sure about efficiency of an algorithm & technical feasibilities.

 It serves as a mechanism for identifying software requirements.


 Prototype can be serve as “the first system”.
 Both stakeholders and software engineers like prototyping model
 Users get feel for the actual system
 Developers get to build something immediately
Prototyping model cont.
It works as follow
• Communicate with stockholders &
define objective of Software
Deployment & Communication
Feedback  Identify requirements & design quick plan

 Model a quick design (focuses on visible


part of software)

 Construct Prototype & deploy


Construction
of Prototype Quick Plan  Stakeholders evaluate this prototype and
provides feedback
 Iteration occurs and prototype is tuned
Modeling Quick based on feedback
Design
Prototyping model cont.
Problem Areas
• Customer 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.
Advantages
 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
The Spiral Model
• It provides the potential for rapid
development.
• Software is developed in a series of
evolutionary releases.
• Early iteration release might be prototype
but later iterations provides more
complete version of software.
• It is divided into framework activities
(C,P,M,C,D). Each activity represent one
segment of the spiral
• Each pass through the planning region
results in adjustments to
• the project plan
• Cost & schedule based on feedback
The Spiral Model Cont.
When to use Spiral Model? Advantages
• For development of large  High amount of risk analysis hence, avoidance of Risk is
scale / high-risk projects. enhanced.
• When costs and risk  Strong approval and documentation control.
evaluation is important.  Additional functionality can be added at a later date.
• Users are unsure of their  Software is produced early in the Software Life Cycle.
needs.
• Requirements are complex. Disadvantage
s
• New product line.  Can be a costly model to use.
• Significant (considerable)  Risk analysis requires highly specific expertise.
changes are expected.  Project’s success is highly dependent on the risk
analysis phase.
 Doesn’t work well for smaller projects.
Rapid Application Development Model It is a type of
incremental model in
(RAD) which; components
Team - 1 or functions are
Communication
Modeling developed in
parallel.
Construction
Planning • Integration Rapid
• Delivery
Team - 2 • Feedback
development is
• Business achieved by
Modeling Modeling component based
• Data Deployment
Construction construction
Modeling
• Process
This can quickly
Modeling Team - 3 • Component give the customer
Modeling Reuse
• Automatic something to see
Construction Code and use and to
Generation provide feedback.
• Testing
Rapid Application Development Model (RAD) Cont.
Communication  This phase is used to understand business problem.

Planning  Multiple software teams work in parallel on different systems/modules.

Modeling Construction
 Business Modeling: Information flow among the  It highlighting the use of pre-
business. existing software component.
 Ex. What kind of information drives (moves)?
 Who is going to generate information? Deployment
 From where information comes and goes?
 Integration of modules
 Data Modeling: Information refine into set of developed by parallel teams,
data objects that are needed to support delivery of integrated software
business. and feedback comes under
 Process Modeling: Data object transforms to deployment phase.
information flow necessary to implement
business.
Rapid Application Development Model (RAD) Cont.
When to Use?
• There is a need to create a system that can be modularized in 2-3 months of time.
• High availability of designers and budget for modeling along with the cost of
automated code generating tools.
• Resources with high business knowledge are available.
Advantages Drawback
 Reduced development time.  For large but scalable projects, RAD requires
sufficient human resources.
 Increases reusability of components.
 Projects fail if developers and customers are
 Quick initial reviews occur. not committed in a much shortened time-
 Encourages customer feedback. frame.
 Integration from very beginning  Problematic if system can not be modularized.
solves a lot of integration issues.  Not appropriate when technical risks are high
(heavy use of new technology).
Concurrent development model
• The concurrent development model is called as concurrent model.
• The communication activity has completed in the first iteration and
exits in the awaiting changes state.
• The modeling activity completed its initial communication and then
go to the underdevelopment state.
• If the customer specifies the change in the requirement, then the
modeling activity moves from the under development state into the
awaiting change state.
• The concurrent process model activities moving from one state to
another state
• SDLC activities: communication , planning ,
modeling , construction , deployment.
➢Inactive: no any activity /state performed.
➢Under Development: Any activity
performed.
➢Awaiting changes: If customer want any
changes.
➢Under revision: Do all required changes.
➢Under Review: Testing activity start.
➢Baselined: As per the SRS document.
➢Done: Project completed & Deployed.
Concurrent development model

Advantages
• This model is applicable to all types of software development processes.
• It is easy for understanding and use.
• It gives immediate feedback from testing.
• It provides an accurate picture of the current state of a project.
Disadvantages
• It needs better communication between the team members. This may not
be achieved all the time.
• It requires to remember the status of the different activities.
Component based Development
• Commercial off the shelf (COTS) software components are offered as product.
• COTS provides set of functionality with well defined interfaces that enables
component to be integrated into software.
• The component based development model incorporates many characteristics
of the spiral model.
• It is evolutionary in nature.
• Component based development model constructs applications from
prepackaged software components.
• Modeling and construction activities begin with the identification of
components.
Component based Development
Component based development incorporates the following steps
1. Available component-based products are researched & evaluated for software development.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the components.
4. Components are integrated into the architecture.
5. Testing is conducted to ensure proper functionality.
➢Component Based development model leads to software reuse, and reusability benefits reduction in
development cycle time and reduction in project cost.

Advantages
 It leads to software reuse.
 It reduces development cycle time.
 Reduction in project cost.

You might also like