Software Development Life Cycles (SDLC)
description
Transcript of Software Development Life Cycles (SDLC)
Software Development Life Cycles (SDLC)
BYTouseef Tahir
SDLC-Software development life cycle
ProcessProjectSoftware engineeringSystem engineering
Zero Assignment 1
Write a report on Extreme programming, formal methods, agile software development life cycles.
Deadline : 12-09-2011Email: [email protected] subject:?
The spiral model
Risk Management
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
38
Rapid application development
Use Prototypes◦Evolutionary prototypes◦Throw-away prototypes
Phases◦Requirements planning◦RAD design workshop◦Implementation
Why to use RAD◦Quick development of software
The Rational Unified Process
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
RUP Features
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
The Phases
An Iterative Development Process...
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 Incremental 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
Goals and Features of Each Iteration
Each iteration is risk-drivenThe 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)
Risk Management
Identification of the risksIterative/Incremental DevelopmentThe prototype or pilot project
The Development Phases
Inception PhaseElaboration PhaseConstruction PhaseTransition Phase
Inception Phase
Initial requirements captureCost Benefit AnalysisInitial Risk AnalysisProject scope definitionDefining a candidate architectureDevelopment of a disposable prototypeInitial Use Case Model (10% - 20% complete)First pass at a Domain Model
◦ Class diagram in UML◦ ModelSemanticscode (Forward Engineering)
Elaboration 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
Construction 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
Transition 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 shrinkControl is moved to maintenance teamAlpha, Beta, and final releasesSoftware updatesIntegration with existing systems (legacy,
existing versions, etc.)
CASE-Computer Aided Software Engineering
In the early days…
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
But now…
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
Computer Aided Software Engineering
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.
Goal of using CASE tools
Supply basic functionality, do routine tasks automatically
Enhance productivity◦Generate code pieces automatically
Increase software qualityIntuitive useIntegration with other tools
What could be called a CASE tool?
Project management softwaresSystem design toolsCode storageCompilersTranslation toolsTest software
But generally…
Code generation tools (Visual Studio .NET)Code analysis (Borland Audits)Development of data models (UML
editors)Cleaning up code (refactoring tools)Bug trackerVersion control (CVS, etc.)
They do THAT?
CASE tools do more than just output codeCan be used to generate SE documents
◦Database schema◦Data flow diagrams◦Entity relationship diagrams◦Program specifications◦User documentation
Tool type ExamplesPlanning tools PERT tools, estimation tools, spreadsheetsEditing tools Text editors, diagram editors, word
processorsChange 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 comparatorsDebugging tools Interactive debugging systemsDocumentation tools Pay layout programs, image editorsReengineering tools Cross-reference systems, program
restructuring systems