L2 - Software Processes - 063310
L2 - Software Processes - 063310
Software Processes
Software Process
2
Process, Project & Product
3
Process, Project & Product
Process
Used
Converted
into Produces
Needs of client Project Product
Used in
Resources
4
Elements of Software Process
5
Elements of Software Process
6
Characteristics of Software Process
• Understandability • Rapidity
• Effectiveness • Repeatability
• Predictability • Quality
• Maintainability • Adoptability
• Reliability • Acceptability
• Changeability • Visibility
• Improvement • Supportability
• Monitoring and Tracking • etc.
7
Process Classification
8
Software Development Life Cycle
9
Phased Life Cycle Activities
Project
initiation
Maintenanc
Analysis
e
SDLC
Deployment Design
Testing Coding
• Project Initiation
– The aim of project initiation is to study the existing system;
determine the feasibility of a new system; and define the
scope, key elements, and a plan for the successful
completion of the project.
– Project initiation involves preliminary investigation,
feasibility study, and a project plan.
– Preliminary investigation (PI) is the initial step that gives a
clear picture of what actually the physical system is.
– PI goes through problem identification, background of the
physical system, and the system proposal for a candidate
system.
11
Phased Life Cycle Activities
• Project Initiation
– The purpose of the feasibility study is to determine whether the
implementation of the proposed system will support the mission
and objectives of the organization.
– Feasibility study ensures that the candidate system is able to satisfy
the user needs; promotes operational, effective use of resources;
and is cost effective.
– There are various types of feasibility study performed, such as
technical, economical, operational, and so on
– Feasibility report is prepared and submitted to the top-level
management. A positive report leads to project initiation.
– A detailed project plan is actually prepared after knowing the
requirements.
12
Phased Life Cycle Activities
• Requirements Analysis
– Requirement analysis is the process of collecting factual
data, understanding the processes involved, defining the
problem, and providing a document for further software
development.
– Requirement analysis or requirements engineering is a
systematic approach to elicit, organize, and document the
requirements of a system.
– The requirement analysis phase consists of three main
activities: requirements elicitation, requirements
specification, and requirements verification and validation.
13
Phased Life Cycle Activities
• Software Design
– Software design focuses on the solution domain of the project on
the basis of the requirement document prepared during the
analysis phase.
– The design phase has three aspects: architectural design,
physical design and logical design.
– Architectural design provides blueprint of the system.
– Physical design concentrates on identifying the different
modules or components in a system that interact with each other
to create the architecture of the system.
– In logical design, the internal logic of a module or component is
described in pseudo code or in an algorithmic manner.
14
Phased Life Cycle Activities
• Coding
– The coding phase is concerned with the development of the
source code that will implement the design.
– This code is written in a formal language called a programming
language, such as assembly language, C++, Java, etc.
– Good coding efforts can reduce testing and maintenance tasks.
– Programs must be modular so that they can help in rapid
development, maintenance, and enhancements of the system.
– The programs written during the coding phase must be easy to
read and understand.
15
Phased Life Cycle Activities
• Testing
– Before the deployment of the software, testing is performed to
remove the defects in the developed system
– Testing covers various errors at the requirements, design, and
coding phases.
– Testing is performed at different levels: unit testing, integration
testing, system testing, and acceptance testing.
– Various special tests are also performed to check the
functionality of the system, such as recovery testing,
performance testing, load testing, security testing, and so on.
– Testing is an important technique of software quality assurance.
16
Phased Life Cycle Activities
• Deployment
– The purpose of software deployment is to make the software available
for operational use.
– It includes various activities to make a system available for assembly
and to transfer it to the customer site.
– Required resources are procured to operate at the customer site and
important information is collected for the deployment process.
– During deployment, all the programs files are loaded onto user’s
computer. After installation of all the modules of the system, training
of the user starts.
– Documentation is prepared in the form of a user manual or system
operation process which ensures the continuity of the system.
17
Phased Life Cycle Activities
• Maintenance
– The maintenance phase comes after the software product is released
and put into operation through the deployment process.
– Software maintenance is performed to adapt to changes in a new
environment, correct bugs, and enhance the performance by adding
new features.
– The maintenance activities can be classified as adaptive (changes in
the software environment), perfective (new user requirements),
corrective (fixing errors), preventive (prevent problems in the future).
– The software will age in the near future and enter the retirement stage.
– In extreme cases, the software will be reengineered onto a different
platform.
18
Software Development Process Models
19
Classical Waterfall Model
20
Classical Waterfall Model
Feasibility
study Feasibility report
Requirements
analysis Requirement document
Software
design Design document
Coding
Programs
Testing and
Integration Test reports
Deployment Release
reports
Operation and
Maintenance
Figure 2.4: Classical waterfall model
21
Classical Waterfall Model
• Advantages
– The main advantage of the waterfall model is that it is easy to
understand and implement.
– Due to the straightforward organization of phases, it is fit for other
engineering process models, such as civil, mechanical, etc.
– It is a document-driven process that can help new people to transfer
knowledge.
– Milestones and deliverables at each stage can be used to monitor the
progress of the project.
– This model works well on large and mature products. It is not well
suited for small teams and projects.
– Where the requirements are well understood and the developers are
confident, the waterfall model works well.
22
Classical Waterfall Model
• Disadvantages
– The model assumes that the requirements will not change during the project.
Sometimes, it is unrealistic to expect accurate requirements early in a project.
– It is very difficult to estimate the time and cost in the waterfall model.
– There may be difference of opinions among the specialists because there are
specialized teams for each individual phase.
– The people mentally ready to work in a phase will have to wait until its
previous phase is completed.
– Due to so much emphasis on documentation, sometimes people may become
irritated.
– Fixing the software and hardware technology early may create problems for
larger projects.
– There is no inherent risk management policy in this model.
– It is not well suited for small teams and projects.
23
Iterative Waterfall Model
• The iterative waterfall model is an extended waterfall model
with backtracking at each phase to its preceding phases.
• The life cycle phases are organized similar to those in the
classical waterfall model. The only difference is
backtracking of phases on detection of errors at any stage.
• The errors can come at any stage of the development life
cycle.
• Once a defect is detected there is a need to go back to the
phase where it was introduced.
• On defect detection at the source, some of the work
performed during that phase and all the subsequent phases
may be revised.
24
Iterative Waterfall Model
Feasibility
study Feasibility report
Requirements
analysis Requirement document
Software design
Design document
Coding
Programs
Testing and
integration Test reports
Deployment Release
reports
Operation and
Maintenance
Backtracking
26
Iterative Waterfall Model
27
Prototyping Model
• Prototyping is an alternative in which partial working software (i.e.
a prototype) is initially developed instead of developing the final
product.
• IEEE defines prototyping as “a type of development in which
emphasis is placed on developing prototypes early in the
development process to permit early feedback and analysis in
support of the development process.”
• Prototype development is a toy implementation, which provides a
chance to the customer to give feedback for final product
development.
• A prototype provides limited functionalities, low reliability, and
insufficient performance as compared to the actual software.
• A prototype helps customer to understand the requirements that can
further reduce the possibility of requirement changes.
28
Prototyping Model
Information
gathering
Quick
design
Coding
Testing
Deployment
Maintenance
30
Incremental Model
Iteration 1 Release 1
Design Coding Testing Deployment
Iteration 2 Release 2
33
Incremental Model
34
Incremental Model
35
Spiral Model
36
Spiral Model
37
Spiral Model
38
Spiral Model
39
Spiral Model
40
RAD Model
• Rapid application development (RAD) model is a process
model, which involves incremental process model and
prototyping model.
• This model emphasizes on short development cycle and
modularization of software system into components, each of
which can be constructed by different teams.
• It is a high-speed version of the waterfall model, in which
rapid development is achieved by using component-based
development approach.
• This model helps to create a fully-functional system in short
duration (i.e., 60 to90 days), if the requirements are well
understood and project scope is constrained.
41
RAD Model
Requirements
Project planning
Deployment
46
RUP Process Model
47
RUP Process Model
• Inception phase
– establishes the business case for the system and delimit the
project scope.
– This phase produces vision document of the project, initial
use-case model, initial risk assessment, business model,
and a project plan showing the phases and iterations.
– At this stage, customers will be clear with their
requirement and life cycle objectives milestone will be
produced.
• Elaboration phase- analyzes the problem domain, establish
an architectural framework, develop the project plan, and
eliminate the highest risk elements of the project.
48
RUP Process Model
• Construction phase:
– All application features are developed, integrated, and thoroughly
tested.
– This phase also focuses on the user manuals and the current
beta release details.
• Transition phase:
– The purpose of the transition phase is to move the software
product to the user community for working.
– This phase includes several iterations, including beta
releases, general availability releases, as well as bug-fix
and enhancement releases.
49
Component-based Development Model
• Component-based development (CBD) is evolved to promote reusability
by using commercially off-the-shelf (COTS) components.
• The CBSE process begins with requirements to understand the problem.
• Architectural design is prepared to find the possible solution which exists
in the form of reusable approach.
• Domain engineering is a mechanism to identify, select, and reuse reusable
components in reuse repository.
• Component engineering is done to discover qualified components from
reuse repository, adapt configurable component, and integrate with other
components.
• Integration testing is carried out to check all interfaces and component
assembly.
• The produced software system is deployed, updated, and stored into the
repository for future reuse.
50
Component-based Development Model
Domain engineering
Reuse repository
Component
qualification
Component
update
Component
Architectur adaption
Testing Deployment
Requirements al design
Component
integration
Component engineering
51
Component-based Development Model
• There are various CBD models such asY model, V model, X
model, CBSD dual life cycle model, KNOTmodel, and W
model.
• The CBD models help to provide a cost effective, fast, and
modular approach for developing complex software with
reduced delivery time.
• The CBD models require initial investments for hiring or
developing reusable components, procure skilled engineers,
regular component updates, optimal component selection, and
component certification.
• The models are mostly suitable for object-oriented software
development which supports the components-based
architecture such as CORBA, COM/DCOM, and so on.
52
Computer-Aided Software Engineering
(CASE)
• CASE is a tools support for software development, project
management, and maintenance activities.
• It is the integration of automated software-based modelling
tools into the software development process.
• It is software tools for enterprise support consisting of project
management, systems development, documentation and
maintenance.
• These tools are well tested which assist to produce desired
results and uncover flaws at any stage of development.
53
CASE Scope
54
CASE Scope
Reverse engineering
Configuration management
Version change control
Project management
Screen and report generation
Project planning, etc.
55
Classification of CASE Technology
57
CASE Workbenches
58
CASE Environments