Software Development Life Cycle

kettleproduceSoftware and s/w Development

Dec 2, 2013 (3 years and 7 months ago)

108 views

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Software Development Life Cycle
Image Source:
http://www.technologyuk.net/
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Overview

Software Development


Phases of Software Development


Aspects of Software Quality

 SDLC Models

Waterfall

Iterative Waterfall

V-Shaped

Incremental

Agile

RAD

Spiral

Big Bang


Some Additional Online Resources



Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Software Development

Software Engineering: study of the techniques and theory that support the
development of high-quality software


We have an entire course on this …

 End result: we are looking to meet the needs of the:

client (person or organization)


user (the people using the software)


Why is this important for us in CSCI 162?

Image source: http://en.wikipedia.org/wiki/File:SDLC

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Phases of Software / Systems Development Life Cycle (SDLC)

Here is a typical list of what you are responsible for as a software developer: at some
point you will be involved in some or all aspects of this development …


Specification of the task – it doesn’t help if you are solving the wrong problem


Design of a solution


Implementation of the solution i.e. the code


Testing and Analysis of the solution


Debugging


Maintenance and evolution of the system

Design
Code
Test
Debug
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Phases of Software Development: Design
“You’ve got to be very careful if you don’t know where you’re going, because you might
not get there.” ~ Yogi Berra

 There are different techniques to design methods/ solutions for new software, e.g

top-down

bottom-up
 Common tools for computer scientists and engineers include:

flowcharts,

UML

pseudocode

 Objects are chosen from

libraries or

methods for new objects must be implemented.
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Phases of Software Development: Code

… and only then do you begin to code

Lifelong Resources

Best practices you are learning in all your classes

 Always be on the lookout for additional resources e.g.

established forums (specific forums for specific aspects of CS)

reference books (look through reviews)
• The Mythical Man-Month: Essays on Software Engineering


free online books/ white papers


ACM

IEEE


The clearer your understanding of the problem or specification/ the better your design
will be/ and the better your coding will be … the better the …

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Phases of Software Development: Documentation
 Throughout the entire process …
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Phases of Software Development: Test

Step by step and oft repeated …

 Does the new method/ solution do what it is supposed to do?

test for correctness: measurse whether the program meets the original
specifications


Does the method have any undesirable side effects?


How does one program affects the performance of another program, or one method
affects another method?

 Two primary types of tests:

A unit test checks to see if a method works as expected all by itself.

An integration test checks to see if a method works in combination with other
methods – and test for any undesirable side effects

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Phases of Software Development: Debug

The causes of any problems discovered during testing need to be isolated - here unit
tests are most helpful – how can you aid this process beforehand in your coding?

 Once you find the cause, you:

develop a plan for fixing the problem

modify the necessary methods

test again – why?

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Aspects of Software Quality: endgame is a quality product
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Models: Waterfall
Requirements: defines needed information, function, behavior, performance and interfaces

Design: includes flowcharts, data structures, software architecture, interface
representations, algorithmic details

Implementation: source code, database, user documentation, testing.


Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Models: Waterfall

 Advantages

easy to understand, easy to use

provides structure

milestones are clear

good for management control (plan, staff, track)

works well when quality is more important than cost or schedule


 Disadvantages

all requirements must be known upfront

deliverables created for each phase are considered frozen – inhibits flexibility

can give a false impression of progress

does not reflect problem-solving nature of software development , i.e. iterations of
phases

one big integration at the end

little opportunity for customer to preview the system (until it may be too late)

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
When Would Waterfall Model be Most Beneficial?

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Models: Iterative Waterfall
 This model

attempts to overcome the limitations of original Waterfall model by adding an
“iterative” loop at the end of the cycle

allows a return to previous stages and the changes whenever required.
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Models: V-Shaped
 A variant of the Waterfall that emphasizes the:

verification and

validation of the product.


Testing of the product is planned in parallel with a corresponding phase of
development


Project and Requirements Planning  acceptance testing


Specification Analysis  systems testing


Overview/ High-Level Design: defines how software functions fulfill the design 
integration test


Detailed Design: develop algorithms for each architectural component  unit test


Code

let’s draw it out
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Models: V-Shaped
Advantages
 emphasize planning for verification and validation of the product in early stages of
product development
 each deliverable must be testable
 project management can track progress by milestones

easy to use

Disadvantages: Does not
 easily handle concurrent events

easily handle dynamic changes in requirements


contain risk analysis activities

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
When to use V-Shaped Model

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Model: Incremental

Construct a partial implementation of a total system


Then slowly add increased functionality


The incremental model prioritizes requirements of the system and then implements
them in groups


Each subsequent release of the system adds function to the previous release, until all
designed functionality has been implemented


Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Model: Incremental
Advantages:
 develop high-risk or major functions first
 each release delivers an operational product
 customer can respond to each build
 uses “divide and conquer” breakdown of tasks
 initial product delivery is faster
 customers get important functionality early

risk of changing requirements (at the very end) is reduced

Disadvantages
 requires very thoughtful planning and design
 requires early definition of a complete and fully functional system to allow for the
definition of increments

well-defined module interfaces are required (some will be developed long before
others) – to allow for a graceful increment

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
SDLC Model: When to Use Incremental

Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Other SDLC Models to Explore: Agile
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Other SDLC Models to Explore: RAD
Rapid Application Development (RAD)
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Other SDLC Models to Explore: Spiral
Key Steps
 Requirement Planning
 Risk Analysis
 Development & Test
(Engineering)

Customer Evaluation


software is developed in a series
of incremental release

each iteration starts with
particular goal and ends with
client reviewing the progress
so far



http://en.wikipedia.org/wiki/File:Spiral_model_%28Boehm,_1988%29.svg
Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Other SDLC Models to Explore: Big Bang

no formal method is applied

 developers :

receive problem statement

do the requirement analysis

write code and develop software on their own

When is this model useful?



Software Life Cycle
Dr. Nazli Hardy
CSCI 162 Adapted from: “Introduction to Programming Using Alice, Charles Herbert ;
Java Software Structures: designing and using data structures, Lewis and Chase
condor.depaul.edu/jpetlick/extra/394/Session2.ppt
Some (of the many) Additional Online Resources

http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959


 http://
www.craiglarman.com/wiki/downloads/misc/history-of-iterative-larman-and-basili-ieee-
computer.pdf


 http://softwaretesting-qaqc.blogspot.com/2012/12/sdlc-models.html


 http://www.engiblogger.com/software/software-development-life-cycle-sdlc-models/


 http://softwaremethodologies.blogspot.com/2009/04/advantages-disadvantages-of-various.html


 www.youtube.com/watch?v=ga-byyTWhPg


 http://codebetter.com/raymondlewallen/2005/07/13/software-development-life-cycle-models/


 http://www.onestopqa.com/resources/SDLC%20Models.pdf