Upload
oswin-long
View
216
Download
3
Embed Size (px)
Citation preview
Software Life-Cycle and Models
Let's Define Some Terms
Software Life Cycle
Software Life Cycle [Model]
Software Development Life Cycle [Model]
Software Process
Software Process Model
aka: Defined Software Process
What is a Software Lifecycle?
Stages of existence of software.
Each stage represents a different state of software.
Can be from developer's view or customer's view.
Real World Software Lifecycle
1. idea.
2. decision to implement.
3. initial prototype.
4. create a fake business case to justify writing it.
5. reimplement in greater detail
6. add requirements (because its too hard to remember what we've doing)
7. software + architecture design
8. working but buggy software
9. software initial release for use
10. iterative fix bugs and add new features
What is a Life Cycle Model
A model of the phases that software goes through Serves as a guide for management of software
development Models omit some real-life complexity and detail
Typical Lifecycle Model Inception of idea
vision business case
Analysis Design Implementation Acceptance Deployment
transition training & education
Maintenance and Support End of Support Retirement
end of useful life transition or archiving
GREEN = part of the process, not life cycle
Is Testing Part of the Software Lifecycle?
Many people say it is.
Or, is it an activity that is part of many steps in the development process.
Idea
Software
What We Want
source: Bruegge, Object-oriented Software Engineering
How it should go: Our plan of attack
RequirementsAnalysis
Implementation
Design
Testing
Delivery and Installation
source: Bruegge, Object-oriented Software Engineering
Why the LC Model Doesn't Work Requirements aren't complete or accurate.
even the client doesn't know precisely
Analysis and design aren't accurate.
communication issues
model not precise
Difficult to manage change...
technology changes
new requirements emerge
resource limitations
Software consists of many systems
Why End of Software Life?
Software doesn't really "wear out".
Some products reach "end of support" even though people are still using them.
So what causes its end-of-life?
Causes of Software Obsolescence
Newer product is superior
hardware changes
functionality is no longer needed
Causes of Software "wear out"
Code becomes too difficult to maintain or modify
No one understands the source code (key developers leave w/o documentation)
Cost of maintenance is more than customers' willingness to pay
related to first item
shrinking customer base