190 likes | 1.35k Views
Software Life-Cycle Models (Schach Chap2) We Examine Several Life-cycle Models: Build and Fix Waterfall Rapid Prototyping Spiral Incremental Evolution-Tree Life-cycle Focus on how (if!) the Phases of Software Development are Incorporated within each model *Build and Fix Model
E N D
Software Life-Cycle Models (Schach Chap2) • We Examine Several Life-cycle Models: • Build and Fix • Waterfall • Rapid Prototyping • Spiral • Incremental • Evolution-Tree Life-cycle • Focus on how (if!) the Phases of Software Development are Incorporated within each model
*Build and Fix Model • No specifications • No formal design process
*Waterfall Model (circa 1970) • A first cut at improving "build and fix" • Each phase of the lifecycle represented as a discrete entity • Feedback loops between phases • Intentionally Documentation-driven
Aside: Requirements Phase (Schach Chap 10) “I know you believe you understood what you think I said, but I am not sure you realize that what you heard is not what I meant!” • Misconception: Must determine what client wants • Real Goal: Must determine client’s needs Techniques: • Rapid prototyping • Key functionality • What client sees • Experimentation and change • Interviewing (primary technique) • Forms analysis/Questionnaires • Scenarios
*Rapid Prototyping as Specification Technique? Advantages of using a Rapid Prototype: • speed • no ambiguities, omissions, contradictions • Should we use a Rapid Prototype instead of a specification? What are some Disadvantages of this approach?
*Rapid Prototyping Study by Boehm (1984) • 7 versions of same product • 4 specified using only a specification document, • 3 prototyped only (ie., used prototype as specification) • Prototyping vs. specification => yielded equivalent performance (run-time efficiencies). What about code size and functionality?
~Rapid Prototyping vs. Waterfall Model Rapid Prototype Waterfall
Rapid Prototyping Model • Recall Waterfall model view of requirements—try to get it right the first time. Client does not see a version of the product until very late in the life cycle • Rapid prototyping view of requirements—expect frequent changes, plan to discard prototype after determining what client needs • Do not evolve prototype into final product • Rapid prototyping model replaces waterfall's requirements phase • Waterfall then used for the rest of life cycle
Idea is evolutionary development, using waterfall model for each step; Initially, don't define entire system, only the highest priority features: Define/implement those features, then get feedback from user Feedback distinguishes "evolutionary“ from "incremental". With knowledge gained from feedback, go back to define and implement more features in smaller priority features. Follow each phase by Evaluation Planning of next phase Spiral Model (intended to help manage risks) • Precede each phase by • Alternatives • Risk analysis
*Analysis of Spiral Model • Strengths • No distinction between development, maintenance • Risk-driven (focus resources where needed) • Weaknesses?
Incremental Model • Divides project into builds, each build a subset of product.
*Incremental Model Analysis • Waterfall, rapid prototyping models yield Operational quality complete product only at end • Incremental model, typically used with OO life cycles • Operational quality portion of product within weeks • Smaller capital outlay, client can stop dev. at any time • An Enhancement (dev/maint) is merely another build • Problem: Build-and-fix danger
Extreme Programming • A lightweight methodology that has only a few rules and practices or ones which are easy to follow. • Emphasizes customer involvement and promotes team work. • User story is not complete until it has passed its acceptance tests.
Evolution-Tree Life-cycle • Closely models Real-World Software Production • Based on incremental model
Conclusions • Different life-cycle models, each with own strengths/weaknesses • Criteria for choosing which Life-Cycle to follow: • organization • management • employees • product • Most commonly used? A variant of the incremental life-cycle (tweaked as per organization’s needs)