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

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend