Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
47 views22 pages

Software Process Life Cycles: CSE 432: Object-Oriented Software Engineering

This document discusses several software process life cycle models, including waterfall, prototyping, V-model, transformational model, phased development, iterative/incremental processes, and the Rational Unified Process (RUP). The waterfall model involves sequential stages but lacks flexibility. Prototyping and iterative approaches allow for feedback and improvements. RUP is highly iterative, releasing software in increments to reduce risk and obtain early user feedback. Overall, the document compares the pros and cons of different life cycle models and their suitability for various projects.

Uploaded by

Arvin Aquino
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views22 pages

Software Process Life Cycles: CSE 432: Object-Oriented Software Engineering

This document discusses several software process life cycle models, including waterfall, prototyping, V-model, transformational model, phased development, iterative/incremental processes, and the Rational Unified Process (RUP). The waterfall model involves sequential stages but lacks flexibility. Prototyping and iterative approaches allow for feedback and improvements. RUP is highly iterative, releasing software in increments to reduce risk and obtain early user feedback. Overall, the document compares the pros and cons of different life cycle models and their suitability for various projects.

Uploaded by

Arvin Aquino
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 22

Software process life cycles

CSE 432: Object-Oriented Software Engineering


Software and entropy
A virtue of software: relatively easy to change
Otherwise it might as well be hardware
Nevertheless, the more complex a software
system gets, the harder it is to change--why?
Larger software systems are harder to understand
The more changes get introduced into a system,
the more it tends toward entropy
I.e., its internal order breaks down

Planning for change
How can good comments facilitate and reduce
the cost of software maintenance?
Hint: think about invariants, things that dont change.
Comments describe meaning of code
Assuming programmers maintain comments
when they change the code!
How can modularity help manage change?
Modules help to isolate and localize change

A software process requires resources
A software life cycle is a process
A process involves activities, constraints and
resources that produce an intended output.
Each process activity, e.g., design,
must have entry and exit criteriawhy?
A process uses resources, subject to constraints
(e.g., a schedule or a budget)
A process is organized in some order or sequence,
structuring activities as a whole
A process has a set of guiding principles or criteria
that explain the goals of each activity




Waterfall model of software process
Cascades from one stage down to the next, in
stately, lockstep, glorious order.
Gravity only allows the waterfall to go downstream;
its very hard to swim upstream
Department of Defense contracts prescribed
this model for software deliverables for many
years, in DOD Standard 2167-A.

Corporate manager types change slowly
Why would corporate manager types like
the waterfall life cycle model?
Minimizes change, maximizes predictability
Costs and risks are more predictable
Each stage has milestones and deliverables:
project managers can use to gauge how close
project is to completion
Sets up division of labor: many software shops
associate different people with different stages:
Systems analyst does analysis,
Architect does design,
Programmers code,
Testers validate, etc.
Testing in the waterfall model
Lets look more carefully at Pfleegers version of the
waterfall model
Many waterfall models show 5 stageswhy more here?
Whats the difference between unit and system testing?
Between system and acceptance testing?
What kind of arrows are missing?
Is this diagram a more realistic picture?
Is this view of the process a good idea?
The reality is that not only does software change, but
change happens during the process
Realistic models are not strictly linear, but allow for cycles
Bear in mind, however, that more cycles mean more costs

More drawbacks of the waterfall model
Offers no insight into how how does each activity transform one
artifacts (documents) of one stage into another
For example, requirements specification design documents?
Fails to treat software a problem-solving process
Unlike hardware, software development is not a manufacturing but
a creative process
Manufacturing processes really can be linear sequences, but
creative processes usually involve back-and-forth activities such as
revisions
Software development involves a lot of communication between
various human stakeholders
Nevertheless, more complex models often embellish the waterfall,
incorporating feedback loops and additional activities
Prototyping
This model adds prototyping as sub-process
A prototype is a partially developed product that
enables customers and developers to examine some
aspect of a proposed system and decide if it is
suitable for a finished product
Why add prototypes to the life cycle?
Used to explore the risky aspects of the system:
Risk of developing the wrong system (what customer
doesnt want), can be a user interface without functionality
Other technical risks e.g. performance, using a new
technology, alternative algorithms, etc.
Prototype may be thrown away or evolve into product
V model
Developed by the German Ministry of Defense
What does this model highlight?
Unit and system testing verify the program design, ensuring
that parts and whole work correctly
Acceptance testing, conducted by the customer rather than
developers, validates the requirements, tying each system
function meets a particular requirement in the specification
How does this model account for cycles?
If problems are found during verification or validation, then
re-execute left side of V to make fixes and improvements
While the waterfall emphasizes documents and artifacts,
the V model emphasizes activities and correctness
Balzers transformational model
Tries to reduce error in most software processes by:
eliminating development steps,
emphasizing formal specifications,
and using automated support to facilitate transformations
from specification to deliverable system
Hitch: the need for a formal specification precise
enough for automated transformations
Well see that even semi-formal specifications can
help with other software life cycles

Phased development
Nowadays, customers are less willing to wait years for a
software system to be ready
So its necessary to reduce the cycle time of software products
In 1996, 80% of HPs revenues derived from products developed in
previous two years
How is this accelerated cycle time made possible?
Phased development reduces cycle time
Design a system so it can be delivered in pieces, letting users have
some functionality while the rest is under development
So there are usually two or more systems in parallel:
The operational or production system in use by customers
The development system which will replace the current release
As users use Release n, developers are building Release n + 1
How have you seen phased development used?

Iterative and incremental process
Incremental development partitions a system by functionality
Early release starts with small, functional subsystem, later releases
add functionality
Top part of this figure shows how incremental development builds
up to full functionality
Iterative development improves overall system in each release
Delivers a full system in the first release, then changes the
functionality of each subsystem with each new release
Suppose a customer wants to develop a word processing package
Incremental approach: provide just Creation functions in Release 1,
then both Creation and Organization in Release 2,
finally add Formatting in Release 3,
Iterative approach: provide primitive forms of all three functions in
Release 1, then enhance (making them faster, improving the
interface, etc.) in subsequent releases
Pros and cons of these two approaches?
Many organizations combine iterative and incremental approaches

Discussion?
Pros and cons of different life cycle models?
Would object-orientation make a difference?
It might: some OO practitioners advocate
more radical revamping of life cycle:
Rational Unified Process
Extreme Programming
Rational Unified Process (RUP)
Developed by three amigos at Rational Software (IBM)
Grady Booch, Ivar Jacobson, and Jim Rumbaugh
Unified Modeling Language (UML) is a set of graphical and
linguistic notations for modeling systems, not a process or method
The three amigos also developed Rational Unified Process (RUP)
You dont have to use RUP to use UML
Interestingly different from the traditional waterfall model
Highly iterative and incremental process
Software product is not released in one big bang at end of project
Instead, developed and released in pieces (prototypes, partial
releases, beta, etc.)

How do traditional stages iterate?

Workflows look traditional, but they iterate in four phases
Inception Elaboration
During inception, establish business rationale and scope for project
Business case considers how much it will cost and ROI
Scope tries to get sense of size of the project and whether its doable
In elaboration phase, collect more detailed requirements
and do high-level analysis and design
Inception gives you the go-ahead to start a project,
elaboration determines the risks
Requirements risks: Big danger is that you may build the wrong system
Technological risks: Can the technology actually do the job?
Will the pieces fit together?
Skills risks: Can you get the staff and expertise you need?
Political risks: Can political forces get in the way?
Use cases are good starting point for determining what user wants
Construction Transition
Construction phase builds production-quality software
in many increments, tested and integrated, each satisfying
a subset of the requirements of the project
Delivery may be to external, early users, or purely internal
Each iteration contains usual life-cycle activities (workflows):
analysis, design, implementation and testing
Planning is crucial: use cases and other UML documents
Transition phase activities include beta testing,
performance tuning (optimization) and user training
No new functionality unless its small and essential
Bug fixes are OK
What does iteration imply about RUP?
How can iterations reduce risk or reveal problems?
Discussion?
Compare RUP with Waterfall, Prototype,
V, Transformational, Phased Development
life cycle process models?
What do these models have in common?
What are some important differences?
Which model (or combination of models)
might you use in your projects? Why?

You might also like