Download Software Life Cycle

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Software bug wikipedia , lookup

Software quality wikipedia , lookup

Transcript
CS 1120: Computer Science II
Software Life Cycle
Slides courtesy of:
Prof. Ajay Gupta and Prof. James Yang
(format and other minor modifications by by Prof. L. Lilien)
Last updated on 1/10/10
Software Quality
• Software engineering = production of quality
software
• External quality
– May be detected by its users
• Internal quality
– Perceptible only to computer professionals who
have access to the actual code
• What matters is the external quality
– But it can only be achieved through internal quality
2
External Quality Criteria
• Correctness
– Perform the exact tasks as specified
• Robustness
– Ability to react appropriately to abnormal conditions
• Extendibility
– Ease of adapting program to changes of specification
• Reusability
– Ability of software components to serve for construction of
many different applications
3
External Quality Criteria – Cont.
• Other Quality Criteria
– Security, Compatibility, Portability, Ease of Use,
Efficiency, Timeliness (of delivery), …
• Some Tradeoffs
– Security vs. Ease of Use
– Efficiency vs. Portability
– Timeliness vs. Extendibility
4
Software Life Cycle – A Model
5
Software Life Cycle
Phase 1: Specification
• Answers the question:
“What do we build?”
• Define clearly all aspects of the problem
–
–
–
–
What is input (valid/invalid) data?
What assumptions are possible?
Are there special cases?
What future enhancements are likely?
6
Software Life Cycle
Phase 2: Design
• Divide into manageable parts – modules
– Classes & methods are (some of) the modules in C#
– For each module specify:
•
•
•
•
purpose
assumptions
input
output
• Develop algorithms for each module
• Look for existing software components
– Reuse them
• Do not reinvent the wheel
7
Software Life Cycle
Phase 3: Risk Analysis
• Attempts to answer “What can go wrong, and
how bad can it be?”
• Predict and manage what risks you can
• Consider risks to:
–
–
–
–
timetable,
cost,
human health
…
• Risks can greatly influence the
direction of a project
– E.g. reduce software portability
8
Software Life Cycle
Phase 4: Verification
• Answers the question:
“Are the algorithms correct?”
• Some algorithms can be proven correct
– By using:
• assertion: condition at a certain point
• invariant: condition that is always true
9
Software Life Cycle
Phase 5: Coding
• Translate the algorithms into code
– In a particular programming language
• Coding is a minor phase in the software life cycle
– Relatively easy
• Developing algorithm (to be coded) is typically much more
challenging
10
Software Life Cycle
Phase 6: Testing
• Answers the question:
“Did we build it correctly?”
• Try to make the software fail-safe (or faulttolerant)
• Develop as many test cases as possible
– Typically, as time allows
• Testing is both a science and an art
11
Software Life Cycle
Phase 7: Refining a Solution
• Add bells and whistles
• Retest after any changes are made
12
Software Life Cycle
Phase 8: Production
• Distribute software
• Install it
13
Software Life Cycle
Phase 9: Maintenance
• Performed as long as software in use
• Activities during maintenance:
– Fix previously undiscovered bugs
– Add new features
– Enhance old features
• Generally the most costly phase
– 80% of total cost by some estimates
14
Software Life Cycle
During Phases 1-9: Documentation
• Performed extensively in every phase
– Hence “Documentation” is the axis of this “wheel model’
• Different people working on
each phase of the software
life cycle
– For all but very small projects
• Novice programmers usually
undervalue documentation
15
Continuing Effort
• Next generation software being developed while
the previous generation still in use
– So Maintenance for Generation N overlapped by
development for Generation N+1
Example:
– Maintenance for
Windows XP overlapped by
development for Windows
Vista
– Maintenance for Windows XP
and Windows Vista
overlapped by development
for Windows 7
16
The End
17