Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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