Software Development Life Cycles (SDLC) BY Touseef Tahir

Software Development
Life Cycles (SDLC)
BY
Touseef Tahir
 Process
 Project
 Software
engineering
 System engineering
SDLC-Software development life cycle
Write a report on Extreme programming,
formal methods, agile software
development life cycles.
 Deadline : 12-09-2011
 Email: [email protected]
 Email subject:?

Zero Assignment 1
The spiral model
A
process that
◦ Identifies a risk of business loss
◦ Assesses the risk’s potential impact
◦ Determines how to handle the risk
 Protects physical assets from
damage
 Protects nonphysical assets from
software, network-related risks
Risk Management
38

Use Prototypes
◦ Evolutionary prototypes
◦ Throw-away prototypes

Phases
◦ Requirements planning
◦ RAD design workshop
◦ Implementation

Why to use RAD
◦ Quick development of software
Rapid application development


RUP is a method of managing OO Software
Development
It can be viewed as a Software Development
Framework which is extensible and features:
◦ Iterative Development
◦ Requirements Management
◦ Component-Based Architectural Vision
◦ Visual Modeling of Systems
◦ Quality Management
◦ Change Control Management
The Rational Unified Process
Online Repository of Process Information
and Description in HTML format
 Templates for all major artifacts,
including:

◦ RequisitePro templates (requirements tracking)
◦ Word Templates for Use Cases
◦ Project Templates for Project Management

Process Manuals describing key processes
RUP Features
The Phases




Recognizes the reality of changing requirements
◦ Casper Jones’s research on 8000 projects
 40% of final requirements arrived after the analysis
phase, after development had already begun
Promotes early risk mitigation, by breaking down the
system into mini-projects and focusing on the riskier
elements first
Allows you to “plan a little, design a little, and code a
little”
Encourages all participants, including testers,
integrators, and technical writers to be involved earlier
on
An Iterative Development
Process...




Allows for software to evolve, not be produced
in one huge effort
Allows software to improve, by giving enough
time to the evolutionary process itself
Allows interim progress to continue through
the stubbing of functionality
Allows for the management of risk, by
exposing problems earlier on in the
development process
An Incremental Development
Process...


Each iteration is risk-driven
The primary goal of each iteration is to slowly
chip away at the risk facing the project,
namely:
◦ performance risks
◦ integration risks (different vendors, tools,
etc.)
◦ conceptual risks (ferret out analysis and
design flaws)
Goals and Features of Each
Iteration
Identification of the risks
 Iterative/Incremental Development
 The prototype or pilot project

Risk Management
Inception Phase
 Elaboration Phase
 Construction Phase
 Transition Phase

The Development Phases
Initial requirements capture
 Cost Benefit Analysis
 Initial Risk Analysis
 Project scope definition
 Defining a candidate architecture
 Development of a disposable prototype
 Initial Use Case Model (10% - 20% complete)
 First pass at a Domain Model

◦ Class diagram in UML
◦ ModelSemanticscode (Forward Engineering)
Inception Phase

Requirements Analysis and Capture
◦ Use Case Analysis
 Use Case (80% written and reviewed by end of phase)
 Use Case Model (80% done)
 Scenarios
◦ Sequence and Collaboration Diagrams
◦ Class, Activity, Component, State Diagrams
◦ Glossary (so users and developers can speak common
vocabulary)
◦ Domain Model
◦ Risk Assessment Plan revised
◦ Architecture Document
Elaboration Phase

Focus is on implementation of the design:
◦ cumulative increase in functionality
◦ greater depth of implementation
◦ greater stability begins to appear
◦ analysis continues, but design and coding
predominate
Construction Phase
The transition phase consists of the transfer of
the system to the user community
 It includes shipping, installation, training,
technical support and maintenance
 Development team begins to shrink
 Control is moved to maintenance team
 Alpha, Beta, and final releases
 Software updates
 Integration with existing systems (legacy,
existing versions, etc.)

Transition Phase
CASE-Computer
Aided
Software Engineering
Software engineering tools consisted
solely of translators, compilers,
assemblers, linkers, loaders, etc. –
 Computers weren’t powerful enough or
advanced yet to support higher-level
functioning

In the early days…
Software engineering often follows
specific standardized methods
 There are lots of diagrams and
documentation involved
 So now computers can be used to deal
with the higher-level aspects of software
engineering

But now…

What is a CASE Environment?
◦ CASE is the use of computer-based support in
the software development process.

What is a CASE Tool?
◦ A CASE tool is a computer-based product
aimed at supporting one or more software
engineering activities within a software
development process.
Computer Aided Software
Engineering
Supply basic functionality, do routine
tasks automatically
 Enhance productivity

◦ Generate code pieces automatically



Increase software quality
Intuitive use
Integration with other tools
Goal of using CASE tools






Project management softwares
System design tools
Code storage
Compilers
Translation tools
Test software
What could be called a CASE
tool?






Code generation tools (Visual Studio
.NET)
Code analysis (Borland Audits)
Development of data models (UML
editors)
Cleaning up code (refactoring tools)
Bug tracker
Version control (CVS, etc.)
But generally…
CASE tools do more than just output code
 Can be used to generate SE documents

◦
◦
◦
◦
◦
Database schema
Data flow diagrams
Entity relationship diagrams
Program specifications
User documentation
They do THAT?
Tool type
Examples
Planning tools
PERT tools, estimation tools, spreadsheets
Editing tools
Text editors, diagram editors, word
processors
Change management
tools
Requirement Traceability tools, change
control systems
Configuration
management tools
Version management systems, System
building tools
Prototyping tools
Very high level language, user interface
generator
Language processing
tools
Compliers, interpreters
Program analysis tools
Cross reference generators, static
analyzers, dynamic analyzers
Testing tools
Test data generators, file comparators
Debugging tools
Interactive debugging systems
Documentation tools
Pay layout programs, image editors
Reengineering tools
Cross-reference systems, program
restructuring systems