Life cycle models
McGill ECSE 321
Intro to Software Engineering
Radu Negulescu
Fall 2003
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 2
About this...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 3
Software p...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 4
Software l...
Verification
& Validation
Process
Configuration
Management
Process
Documentation
Development
Process
Training
Process
Proj...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 6
Software l...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 7
Build-and-...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 8
Waterfall
...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 9
Waterfall
...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 10
V-model
V...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 11
V-model
S...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 12
Prototypi...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 13
Prototypi...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 14
Spiral mo...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 15
Spiral mo...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 16
Spiral mo...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 17
Increment...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 18
Increment...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 19
Extreme p...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 20
Formal me...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 21
Life cycl...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 22
Examples:...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 23
Agile vs....
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 24
Capabilit...
McGill University ECSE 321 © 2003 Radu Negulescu
Introduction to Software Engineering Life cycle models—Slide 25
Reference...
Upcoming SlideShare
Loading in …5
×

Intro to Software Engineering - Life Cycle Models

1,463 views

Published on

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,463
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
40
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Intro to Software Engineering - Life Cycle Models

  1. 1. Life cycle models McGill ECSE 321 Intro to Software Engineering Radu Negulescu Fall 2003
  2. 2. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 2 About this module The power of a process does not lie in bureaucracy and overhead, but in stimulating effectiveness • “Too little process” or “too much process” can kill a software project • Need to understand process elements and how they are supposed to work in context Here we discuss • What is a software life cycle • Common life cycle models and what makes them tick • Applicability to various situations • Beyond software life cycles: Agile movement Capability maturity model
  3. 3. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 3 Software project failures Examples • Famous bugs: Ariane 5 rocket, Therac 25 cancer treatment machine • Stories on [BD page 4] IT projects have a poor record, but getting better • Why? “Nature of the beast” Complex Volatile Intangible ... • [Standish Group International – CHAOS reports] 2003: 34% successes, 15% failures 1994: 16% successes, 31% failures Balance: “challenged projects” • Other hi-tech projects: similar trends
  4. 4. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 4 Software life cycle models The software process (a.k.a. life cycle): activities and associated results which produce a software product [Sommerville] • Activities: figure from [BD] (next slide) • Product: code, manuals, related artifacts Software life cycle model • An abstraction representing the software life cycle • Understand, monitor, control the life cycle Software project • Tasks, deadlines, staff, budget, resources, schedule, risks, … • Project management: estimate, allocate, monitor, control Do not confuse process, product, and project
  5. 5. Verification & Validation Process Configuration Management Process Documentation Development Process Training Process Project Monitoring & Ctrl Process S/W Quality Management Process Project Initiation Process Operation & Support Process Maintenance Process Design Process Concept Exploration Process System Allocation Process Requirements Process Implementation Process Installation Process Retirement Process Development processes Management processes Integral processes
  6. 6. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 6 Software life cycle models Desirable characteristics of a software process: • Efficiency Maximize: feature set, quality Minimize: overall effort budget, time-to-market Scalability: holds well for larger projects • Risk-tolerance, predictability Stability in presence of mishaps The effort, time, quality are likely to meet the estimates • Visibility Progress can be monitored and estimates can be narrowed down as project progresses • Controllability The process has high-leverage decision points
  7. 7. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 7 Build-and-fix Cycle: implement, debug, show to client • Until the project is accepted • No specifications, no design Strengths • Quick solution for 100-200 lines of code Weaknesses • Not scalable: fixing faults for larger projects; manifesting the less obvious failures; extensions, changes, and other maintenance • Low risk-tolerance: any mistakes require re-coding; exposure to staff risks • Low visibility: monitoring requires to scan raw code; product reliability is unknown • Low predictability: based solely on initial estimates • Difficult team coordination
  8. 8. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 8 Waterfall Simply arrange the activities in a linear sequence • Specification, design, test • Figure from [BD] (next slide) • Variation: “Verification step” Strengths • Easy management: visibility, team coordination, predictability • Good for simple application, large team Weaknesses • Does not accommodate iteration / change • Risks of bad design, requirements, etc. • “Blocking states” in development • Not helpful in rapid development, volatile requirements
  9. 9. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 9 Waterfall Requirements Process System Allocation Process Project Initiation Process Concept Exploration Process Design Process Implementation Process Installation Process Operation & Support Process Verification & Validation Process
  10. 10. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 10 V-model V-model • Figure from [B&D] Variation of waterfall Makes explicit the level of abstraction Idea: plan tests early • Strengths Some early validation More parallelism in development • Weaknesses Configuration management overheads Variations • Sawtooth: interleave demos to customer • Sharktooth: interleave demos to customer and demos to manager
  11. 11. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 11 V-model System Requirements Analysis Implementation Preliminary Design Detailed Design Software Requirements Elicitation Operation Client Acceptance Requirements Analysis Unit Test System Integration & Test Component Integration & Test
  12. 12. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 12 Prototyping Iterative development of several prototypes until a suitable system is obtained • Throw-away: clarify functionality, requirements E.g.: A1, “project prototype” • Evolutionary: will evolve into the final system E.g.: chess playing program Strengths • Accommodates highly volatile requirements and technical risks • Good for “wicked problems”: not well understood before development • Leverage RAD/Component assembly/4 GL techniques 4-5x less effort; 3-4x less time; 4-5x fewer defects Weaknesses • Lacks visibility, predictability Hard to manage Needs motivated developers
  13. 13. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 13 Prototyping Example: FIREMAPS – a state-machine based circuit analysis tool • A research tool, for knowledgeable users • Only a few commands known in advance at the time of development • Uses a BDD (binary decision diagram) library Two prototypes: ~ 2-3 days each • Process calculator • BDD library use Core parts: ~ 2 months • A simple recursive parser for Polish expressions, process automata • Basic operations: composition, refinement checks Additional parts: ~ on-going, need-to basis • Advanced operations: hiding, non-deterministic choice • Case-study driven: process representations, timing constraints • 100+ operators
  14. 14. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 14 Spiral model A generic process model for risk management Identify risks, impacts, contingencies, priorities: • Product size • Customer-related (business misunderstandings, change) • Defects • Process, technology, development environment • Staff turnover Phases of a round: • Explore alternatives • Analyze risks; build prototype • Build part of the system • Plan next round: review
  15. 15. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 15 Spiral model Strengths • Risk reduction (through prototyping) • Systematic • Iterative Weaknesses • Relies on expertise for risk assessment Examples • Waterfall + risk control phases • Project management in RUP Identify risks Revisit risk lists
  16. 16. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 16 Spiral model Requirements Development Integration plan plan plan Requirements Design validation validation Software System Product Risk analysis Risk analysis Prototype1 Prototype2 Prototype3 Risk analysis Concept of operation Requirements Design Code Unit Test Integration &Test Acceptance Detailed Design Test Evaluate alternatives Identify & resolve risks Develop & verify next level product Plan next phase Determine objectives, alternatives, and constraints
  17. 17. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 17 Incremental and iterative model Several increments • Each increment adds new functionality • Each consists of analysis, design, code, test Several iterations • Each increment induces revision/adaptation of previous increments Strengths • Flexibility of delivery of functionality • Can be done with less staff • Can be planned to manage technical and business risks Best practice • Followed in RUP, XP, etc.
  18. 18. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 18 Incremental and iterative model E.g. Rational unified process [Kruchten, "The Rational Unified Process - An Introduction", Addison-Wesley, 1998] Four phases, orthogonal to the development cycle: • Inception: concept exploration • Elaboration: project planning, resource allocation • Construction: several iterations • Transition: installation and post-development
  19. 19. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 19 Extreme programming A new and somewhat controversial process model Good ideas: • Incremental delivery (based on “stories”) • Rules for playing the planning game • Iterative development, refactoring • Pair programming • Team ownership of the code Not quite proven: • Flat cost of change • Complete absence of an overall design or architecture phase “Replaced by refactoring”
  20. 20. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 20 Formal methods The “dream” that started the field of “software engineering”: apply rigorous mathematical methods to develop software • Verification, testing, design: driven by partial specifications Successive refinement Assertion checking (!) Strengths • Utmost defect reduction • Can stabilize intermittent failures (hard to do by other methods) Weaknesses • Time-consuming, skill-intensive • “Correctness is overrated” Applications • Safety-critical software (“cleanroom” process) • Distributed or highly concurrent software (e.g. PBX)
  21. 21. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 21 Life cycle model selection Depends on: • Application domain Desktop / shrink-wrap Client-server, internet System software Embedded, real-time Safety-critical • Knowledge of application domain Re-engineering => more linear First-of-a-kind => substantial prototyping • Schedule constraints Rapid vs. economical development • Developer training & experience Flexibility, control overhead • Risk-tolerance of the project Faster vs. safer
  22. 22. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 22 Examples: selection of a process model Which life cycle models would you select for the following software projects? • Safety-belt controller • Digital camera controller • Walking robot competition • Account management software on a contract • Account management software shrink-wrapped • Account management software deployed on the web • Chess-playing program • Robot arm movement controller • Operating system • Spreadsheet program
  23. 23. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 23 Agile vs. plan-driven methods Agile principles Early and frequent delivery; measure progress by working software Accommodate and harness change Frequent interaction of business and development Motivated individuals, face-to-face conversation, sustainable development Simplicity, technical excellence, good design Continual improvement of team behavior Agile – plan-driven spectrum [Barry Boehm]
  24. 24. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 24 Capability maturity model (CMM) How “mature” is the software development process in your organization? or your personal process? • Level 1: initial. No structure, relies on individuals • Level 2: repeatable. Mimick previous success and use basic process Managed requirements, project planning and tracking, subcontractor management, QA, CM • Level 3: defined. Standardized management and development process Process definition, process focus, training program, product engineering, peer reviews • Level 4: managed. Detailed measures are collected Quantitative process management, quality management • Level 5: optimizing. Implementing new approaches by using feedback from level 4 and by trying new technologies Defect prevention, technology change management, process change management
  25. 25. McGill University ECSE 321 © 2003 Radu Negulescu Introduction to Software Engineering Life cycle models—Slide 25 References Software life cycles • BD: 12.4 Agile software development • Agile alliance on-line library http://www.agilealliance.com/articles/index CMM • BD: 12.3 • SEI technical report “Capability Maturity Model”: Section 2 “The five levels of process maturity” http://www.sei.cmu.edu/pub/documents/93.reports/pdf/tr24.93.pdf

×