programming in the large
play

Programming in the large Bertrand Meyer Chair of Software - PowerPoint PPT Presentation

1 Last update: 21 June 2004 Programming in the large Bertrand Meyer Chair of Software Engineering Programming in the large - Lecture 21 2 Lecture 21: Software lifecycle models Chair of Software Engineering Programming in the large -


  1. 1 Last update: 21 June 2004 Programming in the large Bertrand Meyer Chair of Software Engineering Programming in the large - Lecture 21

  2. 2 Lecture 21: Software lifecycle models Chair of Software Engineering Programming in the large - Lecture 21

  3. Arguments for the waterfall 3 (After B.W. Boehm: Software engineering economics ) � The activities are necessary � (But: merging of middle activities) � The order is the right one. Chair of Software Engineering Programming in the large - Lecture 21

  4. The waterfall model of the lifecycle 4 FEASIBILITY STUDY REQUIREMENTS ANALYSIS DESIGN AND SPECIFICATION IMPLEMENTATION GLOBAL DESIGN DETAILED DESIGN IMPLEMENTATION VALIDATION & VERIFICATION DISTRIBUTION PROJECT PROGRESS Chair of Software Engineering Programming in the large - Lecture 21

  5. Problems with the waterfall 5 � Late appearance of actual code. � Lack of support for requirements change — and more generally for extendibility and reusability. � Lack of support for the maintenance activity (70% of software costs?). � Division of labor hampering Total Quality Management. � Impedance mismatches. � Highly synchronous model. Chair of Software Engineering Programming in the large - Lecture 21

  6. Quality control? 6 Analysts Designers Implementers Testers Customers Chair of Software Engineering Programming in the large - Lecture 21

  7. Impedance mismatches 7 As Management requested it. As the Project Leader defined it. As Systems designed it. As Programming developed it. As Operations installed it. What the user wanted. (Pre-1970 cartoon; origin unknown) Chair of Software Engineering Programming in the large - Lecture 21

  8. The Spiral model (Boehm) 8 Figure from: Ghezzi, Jazayeri, Mandrioli, Software Engineering , 2 nd edition, Prentice Hall Chair of Software Engineering Programming in the large - Lecture 21

  9. The Spiral model 9 M.C Escher: Waterval Chair of Software Engineering Programming in the large - Lecture 21

  10. Tasks 10 Analysts Designers Implementers Testers Chair of Software Engineering Programming in the large - Lecture 21

  11. Seamless development 11 TRANSACTION, PLANE, Specification CUSTOMER, ENGINE... Example classes Chair of Software Engineering Programming in the large - Lecture 21

  12. Seamless development 12 TRANSACTION, PLANE, Specification CUSTOMER, ENGINE... STATE, USER_COMMAND... Design Example classes Chair of Software Engineering Programming in the large - Lecture 21

  13. Seamless development 13 TRANSACTION, PLANE, Specification CUSTOMER, ENGINE... STATE, USER_COMMAND... Design HASH_TABLE, Implementation LINKED_LIST... Example classes Chair of Software Engineering Programming in the large - Lecture 21

  14. Seamless development 14 TRANSACTION, PLANE, Specification CUSTOMER, ENGINE... STATE, USER_COMMAND... Design HASH_TABLE, Implementation LINKED_LIST... TEST_DRIVER, ... V & V Example classes Chair of Software Engineering Programming in the large - Lecture 21

  15. Seamless development 15 TRANSACTION, PLANE, Specification CUSTOMER, ENGINE... STATE, USER_COMMAND... Design HASH_TABLE, Implementation LINKED_LIST... TEST_DRIVER, ... V & V Genera- AIRCRAFT, ... lization Example classes Chair of Software Engineering Programming in the large - Lecture 21

  16. Analysis classes 16 deferred class VAT inherit TANK feature in_valve , out_valve : VALVE fill is -- Fill the vat. require in_valve.open out_valve.closed deferred ensure in_valve.closed out_valve.closed is_full end empty , is_full , is_empty , gauge , maximum , ... [Other features] ... invariant is_full = ( gauge >= 0.97 * maximum ) and ( gauge <= 1.03 * maximum ) end Chair of Software Engineering Programming in the large - Lecture 21

  17. Reversibility 17 S S D I V G Chair of Software Engineering Programming in the large - Lecture 21

  18. Seamless development 18 � Use consistent notation from analysis to design, implementation and maintenance. � Advantages: � Smooth process. Avoids gaps (improves productivity, reliability). � Direct mapping from problem to solution, i.e. from software system to external model. � Better responsiveness to customer requests. � Consistency, ease of communication. � Better interaction between users, managers and developers. Chair of Software Engineering Programming in the large - Lecture 21

  19. Single model principle 19 � Use a single base for everything: analysis, design, implementation, documentation... � Use tools to extract the appropriate views. Chair of Software Engineering Programming in the large - Lecture 21

  20. The cluster model 20 Feasibility study Division into clusters Cluster 1 S S Cluster 2 D D S S I I Cluster n D D V V I I S S G G D D V V I I G G V V G G Chair of Software Engineering Programming in the large - Lecture 21

  21. The cluster model: extreme variants (1) 21 Feasibility study “ Clusterfall” Division into clusters Cluster 1 Cluster n S S S S D D D D I I I I V V V V G G G G Chair of Software Engineering Programming in the large - Lecture 21

  22. The cluster model: extreme variants (2) 22 Feasibility study “ Trickle” Division into clusters S Cluster 1 D I V G S D I V G S D Cluster n I V G Chair of Software Engineering Programming in the large - Lecture 21

  23. Generalization 23 � Prepare for reuse � Possible tasks: � Remove built-in limits � Reorganize inheritance hierarchy � Abstraction (e.g. introduce deferred classes) � Improve documentation Chair of Software Engineering Programming in the large - Lecture 21

  24. Cluster development 24 � Bottom-up development: from the most general clusters (providing utility functions) to the most application-specific ones. � Flexible scheduling of clusters – depending on resources, team experience, customer and management demands. Waterfall is one extreme; “trickle” is the other. � Sub-lifecycle sequencing: specification, design and implementation, validation, generalization. � Relations between clusters: each cluster may be a client of lower-level ones. Chair of Software Engineering Programming in the large - Lecture 21

  25. Quality goals: the Osmond curves 25 Other qualities 1 2 3 4 Desirable Common Functionality Envisaged Release Chair of Software Engineering Programming in the large - Lecture 21

  26. The advice 26 � Add functionality at constant quality Chair of Software Engineering Programming in the large - Lecture 21

  27. Complementary material 27 � OOSC2: � Chapter 28: The software construction process Chair of Software Engineering Programming in the large - Lecture 21

  28. 28 End of lecture 21 Chair of Software Engineering Programming in the large - Lecture 21

Recommend


More recommend