Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 46

Software

Development
Process

Prepared by
Malliga Ramalingam
Session Objectives

Introduction to SDP
Understanding Quality
Understanding Process
Understanding Life Cycle Models
Choosing a Process
Conclusion

ramsuri@gmail.com
Programming in Small
 Individual Effort

 Not rigorously tested

 Used by the developer only

 Circus in programming Language

 Intellectual Exercise

 No Documentation

 Developer Maintenance
ramsuri@gmail.com
Programming in Large

 1.Team Effort  9.Use of Software


 2.Use of methodology Tools
 10.Conformance to
 3.Documentation
standards
 4.Schedule/Cost Control
 11. Very Likely to be
 5.Quality Assurance commercial
 6.Used by lay User  12. Non-Developer
 7.Planning maintenance
 8.Reuse  13.Change
Management
 14.Version Control
 15.Subject To Risk
ramsuri@gmail.com
Programming:Small Vs Large

1)Writing a program 2)Creating


an airline
that sorts a list of ticket
reservation
strings an application system, a
browser
that stores the names like
Internet
of friends and their
ramsuri@gmail.com Explorer.
The Myths And Facts

MYTH: There are “10 steps to


Successful software development”
FACT: Software development is about
projects

MYTH: Software development is about


technology
FACT: Software development is about
Technology. It is also about people,
methodology and process.
ramsuri@gmail.com
The Myths And Facts

MYTH: Software Development is about


writing code.
FACT: Writing code is the part of
software development -perhaps the
easiest part to do

MYTH: Most software projects are


successful.
FACT: “…32% of projects terminate
before delivery and only 11% are
ramsuri@gmail.com
completed on budget. Of the remaining
2004 Third Quarter Research
Report
This year results show that 295 of all
projects succeeded (delivered on time,
on budget, with required features and
functions); 53% are challenged (late,
over budget and/or with less than the
required features and functions); and
18% have failed (cancelled prior to
completion or delivered and never
used).

Courtesy: The Standish Group


ramsuri@gmail.com
Common dangerous Attitudes

Documenting and reviewing are


waste of time.
The customer should accept what
we deliver.
Standards constrain and limit
creativity
I/we should build everything
In any case, we have disclaimers
rather than guaranties/warranties
ramsuri@gmail.com
What is a successful software
project?

A project that meets or exceeds


customer expectations in terms of
features, quality, cost and
schedule.

And adds value, monetary or


other, to the development
company.
ramsuri@gmail.com
What is Engineering
Approach?
Disciplined Problem Solving
Analysis of a problem.
Product Specification
Sub-assemblies.
Prototypes.
Reuse.

ramsuri@gmail.com
Software Engineering

Term Coined in 1967 and


endorsed by NATO conference in
1968

Relatively young in comparison to


other engineering disciplines.

ramsuri@gmail.com
Software
Engineering:Definition

“ A Systematic Approach to the


Development, Operation, Maintenance
and Retirement of Software,
Where Software is Computer
Programs, Procedures, Rules and
Associated Documents and data
pertaining to the Operation of a
Computer System.”
- IEEE
ramsuri@gmail.com
Similarity in software and
hardware

Phases
Methodology
Activities
Standards
Tools

ramsuri@gmail.com
Uniqueness of Software

Not “manufactured” in the classical


sense.
Similarities exist between software and
hardware manufacture but…
- The relationship between people
applied and
work accomplished is different.
- The manufacturing phase for
hardware can
introduce quality problems that are
nonexistentramsuri@gmail.com
in software production.
Uniqueness of Software

Usually “custom- built”.


The difference between generic
and bespoke software.
Does not “wear-out”.
Absence of physical laws
governing the behavior of
software.
It is invisible.
ramsuri@gmail.com
Aspects of Software projects
Team effort: Any large development
effort requires the services of a team of
specialists.
Methodology: two types of
methodologies, 'procedure oriented
methodolgies' and 'object oriented
methodologies'.
Documentation: Clear and
unambiguous documentation of the
artifacts of the development process are
critical for the success of the software
project.
Planning: development takes place
against a client's requirements so the
ramsuri@gmail.com
whole effort is to be well planned to
Aspects of Software projects

Lay user: Most of the time, these


software packages will be used by non-
computer savvy users. Hence the
software has to be highly robust.
Software tools: Documentation is
important for the success of a software
project. There are tools known as
Computer Aided Software Engineering
(CASE) tools which simplify the process
of documentation.
Conformance to standards: We
need to follow ramsuri@gmail.com
certain standards to
ensure clear and unambiguous
Aspects of Software projects

Non-developer maintenance:
Software lives for a long time. The
development team, may not.
Change management: Whenever a
change has to be made, it is necessary
to analyse its impact on various parts
of the software.
Version control: Once changes are
made to the software, the user should
get the right copy of the software.
Failures should roll back to the
previous versions.
Subject to risks: Any large effort is
ramsuri@gmail.com
subject to risks. Eg: skills, technology,
Session Objectives

Introduction to SDP
Understanding Quality
Understanding Process
Understanding Life Cycle Models
Choosing a Process
Conclusion

ramsuri@gmail.com
Software Quality

Goal of any software development


process is to produce high quality
software.
Software quality has been
variously defined as:
Fitness for purpose
Zero defects
Conformability & dependability
The ability of the software to meet
ramsuri@gmail.com
customer's stated and implied needs
Software Attributes for Quality
Measurement
Important attributes used to
measure software quality are:
Correctness Software should meet the
customer's needs
Robustness Software must always
behave in an expected manner, even
when unexpected inputs are given
Usability Ease of use. A software with
a graphical user interface is
considered more user-friendly than
one without it
Portability The ease with which
ramsuri@gmail.com
Software Attributes for Quality
Measurement
Efficiency Optimal resource
(memory & execution time)
utilization
Maintainability Ease with which
software can be modified
Reliability The probability of the
software giving consistent
results over a period of time
Flexibility Ease with which
software can be adapted for use
ramsuri@gmail.com
Software Attributes for Quality
Measurement
Security Prevention of
unauthorised access
Interoperabilty The ability of the
software to integrate with
existing systems
Performance The ability of the
software to deliver the outputs
with in the given constraints like
time, accuracy, memory usage
ramsuri@gmail.com
Attributes & Realization

Correctness is the most important


attribute.
The other attributes may be
present in varying degrees.
Eg: it is an expensive proposition to
make a software 100% reliable and it
is not required in all contexts.
Some of the attributes conflict
with each other.
Eg: portability and efficiency could
conflict with each other.
In practice there will always be a
ramsuri@gmail.com
Session Objectives

Introduction to SDP
Understanding Quality
Understanding Process
Understanding Life Cycle Models
Choosing a Process
Conclusion

ramsuri@gmail.com
What is a Process?

A Process is a series of definable,


repeatable, and measurable tasks
leading to a useful result. The benefits
of a well defined process are numerous.
It provides visibility into a project. Visibility
in turn aids timely mid-course corrections
It helps developers to weed out faults at the
point of introduction. This avoids cascading
of faults into later phases
It helps to organize workflow and outputs to
maximize resource utilization
It defines everybody's roles and
responsibilities ramsuri@gmail.com
clearly.
SDP - Phases

The generic phases that are normally used in


a software development process are:
Analysis: user needs are gathered and converted
into software requirements. - should answer the
question: what is to be done to meet user needs?
Design: answers the question: How to meet the
user needs? - In this phase we determine
organisation of various modules in the software
system
Construction: Coding is the main activity in this
phase
Testing: There are three categories of testing: unit
testing, integration testing, and system testing.
There are two types of testing: Black box testing
and White box testing. Black box testing focuses on
generating test cases based on requirements.
ramsuri@gmail.com
White box testing focuses on generating test cases
Session Objectives

Introduction to SDP
Understanding Quality
Understanding Process
Understanding Life Cycle Models
Choosing a Process
Conclusion

ramsuri@gmail.com
Waterfall model

Sequential model, also


known as water fall model:
Analysis

Design

Development

Testing

ramsuri@gmail.com
Implementation
Waterfall Model
sequence of steps (phases).
requires a phase is complete
before the next phase is started.
helps in contract finalisation with
reference to delivery and payment
schedules.
Is difficult to use this model as it
is, because of the uncertainity in
the software requirements.
all the requirements
ramsuri@gmail.com a priori is
Prototyping

Prototyping - working version of the


software is built early in the project life.

Throw away prototype


Evolutionary prototype
Throw away prototyping model
understand the requirements and solution
methodologies better.
essence is speed.
ad-hoc and quick development approach
with no thought to quality
once the objective is met, the code is
ramsuri@gmail.com
discarded and fresh development is
Prototyping

Evolutionary prototyping model


requirements are prioritised
code is developed for the most important
requirements first, with an eye on quality.
Software is continuously refined and
expanded with feedback from the client.
advantage of prototyping is that the client
gets a feel of the product early in the
project life cycle.
As can be seen, evolutionary
prototyping is an iterative model. Such
a model can be characterised by doing
a little analysis, design, code, test and
repeat the process till the product is
ramsuri@gmail.com
complete.
Spiral Model
Spiral model - Another iteartive
model
Is like a framework, adapted to
specific projects.

ramsuri@gmail.com
Spiral Model

best mix of other approaches


focusses on eliminating errors and
unattractive alternatives early.
Important feature of this model is
stress on risk analysis.
This model is best suited for
projects, which involve new
technology development. Risk
analysis expertise is most critical
ramsuri@gmail.com
for such projects.
ETVX model

Introduced by IBM during the 80's to


document their processes.
'E' stands for the entry criteria – to be satisfied for
tasks to be performed
'T' is the set of tasks to be performed
'V' stands for the verification & validation process to
ensure that the right tasks are performed
'X' stands for the exit criteria or the outputs of the
tasks. If an activity fails in the validation check,
either corrective action is taken or a rework is
ordered.
It can be used in any development process.
Each phase in the process can be considered
as an activity and structured using the ETVX
model. ramsuri@gmail.com

If required, the tasks can be further


ETVX Model

ramsuri@gmail.com
Rational Unified Process Model

Rational Unified Process (RUP)


developed by Rational
Corporation.
It is an iterative model and
captures many of the best
practices of modern software
development.
RUP is explained more fully in the
module OOAD with UML.
ramsuri@gmail.com
Agile Methodologies
All other methodologies premise
SDP should be predictable and repeatable.
Emphasis on following procedures and preparing
documentation.
Considered to be heavyweight or rigorous.
Criticised for excessive emphasis on structure.
Agile Software Movement, questioning this
premise.
variations in processes and inputs
the model should be flexible enough to handle the
variations.
Agile methodolgies advocate the
principle "build short, build often".
project is broken up in to subprojects
each subproject is developed and integrated in to
the already delivered system.
ramsuri@gmail.com
customer gets continuous delivery of useful and
Agile methodologies

The more popular agile


methodologies are
SCRUM
DYNAMIC SYSTEMS
DEVELOPMENT METHOD (DSDM)
CRYSTAL METHODS
FEATURE-DRIVEN
DEVELOPMENT(FDD)
LEAN DEVELOPMENT (LD)
ramsuri@gmail.com
EXTREME PROGRAMMING (XP)
Agile Methodologies
SCRUM:
is a project management framework.
divides the development in to short cycles called
sprint cycles in which a specified set of features are
delivered.
advocates daily team meetings for coordination and
integration.
DYNAMIC SYSTEMS DEVELOPMENT
METHOD (DSDM): It is characterised by nine
principles:
Active user involvement
Team empowerment
Frequent delivery of products
Fitness for business purpose
Iterative and incremental development
All changes during development are reversible
Baselining of requirements at a high level
Integrated testingramsuri@gmail.com
Collaboration and cooperation between stakeholders
Agile Methodologies
CRYSTAL METHODOLOGIES: They are a set of configurable
methodologies. They focus on the people aspects of
development. The configuration is carried out based on
project size, criticality and objectives. Some of the names
used for the methodologies are Clear, Yellow, Orange,
Orange web, , Red , etc.
FEATURE DRIVEN DEVELOPMENT (FDD): It is a short
iteration framework for software development. It focuses on
building an object model, build feature list, plan by feature,
design by feature, and build by feature.
LEAN DEVELOPMENT (LD): This methodology is derived
from the principles of lean production, the restructuring of
the Japanese automobile manufacturing industry that
occurred in the 1980s. It is based on the following principles
of lean thinking: Eliminate waste, Amplify learning, Decide as
late as possible, Deliver as fast as possible, Empower the
team, Build the integrity in, See the whole.
EXTREME PROGRAMMING (XP): This methodology is
probably the most popular among the agile methodologies. It
is based on three important principles, viz., test first,
continuous refactoring,ramsuri@gmail.com
and pair programming.
One of the important concepts popularised by XP is pair
Session Objectives

Introduction to SDP
Understanding Quality
Understanding Process
Understanding Life Cycle Models
Choosing a Process
Conclusion

ramsuri@gmail.com
How to choose a process
Best way to attack this is to look at the
software requirements.
If they are stable and well understood, then
waterfall model may be sufficient.
If they are stable, but not clear, then throw away
prototyping can be used.
Where the requirements are changing, evolutionary
prototyping is better.
If the requirements are coupled with the underlying
business processes, which are going through a
process of change, then a model based on Boehm's
spiral model, like the Rational Unified Process
should be used.
In these days of dynamic business environment,
where 'time to market' is critical, and project size is
relatively small, an agile process should be chosen.
These are guidelines only.
ramsuri@gmail.com
Many organisations choose a model and
Session Objectives

Introduction to SDP
Understanding Quality
Understanding Process
Understanding Life Cycle Models
Choosing a Process
Conclusion

ramsuri@gmail.com
Conclusions

The most important take away


from this session is that software
development should follow a
discplined process.
The choice of the process should
depend upon the stabilty of the
requirements, completeness of
requirements, underlying business
processes, organisational
structure, and the prevailing
ramsuri@gmail.com

You might also like