Ch 2: Software Life-Cycle

lumpysteerSoftware and s/w Development

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

87 views

Ch 2: Software Life
-
Cycle
Models

CSCI 4320

Ideal

Software Development

Actual

Software Development


Software developers make mistakes


Clients requirements or environment
changes while software is being
developed.


The Software Development Life
-
Cycle
involves many iterations (loops).

Bus Fare Machine Program

GOAL: Fare machines on bus must recognize
real

dollar bills.




Episode 1
: The first version is implemented


Episode 2:

A fault is found


The product is too slow because of an implementation fault (double
precision instead of single precision used)


Changes to the implementation are begun


Episode 3:

The requirements change


A different/faster dollar recognition algorithm has been discovered


Episode 4:
A new design is adopted


New design is more accurate.

-

Development is complete


Epilogue:

A few years later, these problems recur

Teal Tractors Business Software

Goal : Handle sales, inventory and commissions for
business



While the Teal Tractors software product is being
constructed, the requirements change


The company is expanding into Canada


Additional sales regions must be added


Canadian taxes and other business aspects that are handled
differently


Two different currencies, US and CANADA

Moving Target Problem


Growing companies are always going to change



Even if the reasons for the change are good, the
software product can be adversely impacted


Dependencies will be induced


Potentially cause a
regression fault

(A fault in an
apparently unrelated part of the software)


feature creep



There is no solution to the moving target problem

Life
-
Cycle Models


Waterfall Life


Code
-
and
-
Fix


Rapid
-
Prototyping


Extreme Programming and Agile
Processes


Synchronize
-
and
-
Stabilize


Spiral


Iteration and Incrementation


Iteration and Incrementation

The basic software development process is

Iterative


Each successive version is intended to be
closer to its target than its predecessor

An Incremental Process


Miller’s Law : concentrate on ~ 7
chunks


Use
stepwise refinement


handle in order of current importance


Iteration and Incrementation


Idea:


Project is divided into several mini projects
(increments)


Each project goes through all phases,
extending existing artifacts


Multiple opportunities to check for faults


Always have a
working

version of
software

Waterfall


No phase is complete until documentation for that phase
is complete.


Relying solely on written specifications may lead to
products that don’t meet client’s needs.

Code
-
and Fix


Developers simply throw code together
and rework it as many times as necessary



No Requirements written


May work well for small programs


Maintenance Nightmare!

Rapid Prototyping


Build a rapid
-
prototype and let client
interact and experiment with it.


Developers draw up specifications from
rapid prototype and develop true system


Key: Speed is of the essence


The rapid prototype is discarded but
lessons learned are retained.

Open
-
Source Life
-
Cycle


A single individual has an idea for a program and
makes it available free of charge


SourceForge.net, FreshMeat.net


Users become co
-
developers


Report and correct defects


Add additional functionality


Port program to new environment


Individuals are not paid to participate



Release new versions after minimal testing

Open Source Software


100,000 open
-
source projects at SouceForge.net
and Freshmeat.net


½ have never attracted a team to work on the
project


Majority have never been completed


But there are cases where it has been benefical


Operating Systems (Linux), web browsers (Firefox),
compilers (gcc), web servers(Apache)

Extreme Programming and Agile
Processes

New Approach: responsive to change, collaborate
with client


Client picks features based on time and cost
estimates


Build is broken down into tasks


Pair programming


Two programmers work on one computer


Alternate typing every 15 or 20 minutes


Team members change coding partners daily


Client works with team at all times

Extreme Programming and Agile
Processes


No individual can work overtime for 2 weeks


No specialization: All members of team work on
analysis, design, coding


No overall design step before the various builds

Agile Processes


Less emphasis on analysis and design


Goal is to deliver working software frequently


Have short meetings often


Successful for small
-
scale projects where
customer requirements are vague


Synchronized and Stabilize


Microsoft


Expected Features are prioritized


Work is divided into several builds


Each build is carried out by several teams
working in parallel


At the end of the day all teams
synchronize and test


Spiral


Waterfall method with each phase
preceded by risk analysis


Uses prototypes to mitigate risks


Advantage: Emphasis on alternatives and
constraints supports the reuse of existing
software


Problem: When do you determine if a
phase has been sufficiently tested?

Comparison of Life
-
Cycle Models

Figure 2.12