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 - Lecture 21
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
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
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
Quality control? 6 Analysts Designers Implementers Testers Customers Chair of Software Engineering Programming in the large - Lecture 21
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
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
The Spiral model 9 M.C Escher: Waterval Chair of Software Engineering Programming in the large - Lecture 21
Tasks 10 Analysts Designers Implementers Testers Chair of Software Engineering Programming in the large - Lecture 21
Seamless development 11 TRANSACTION, PLANE, Specification CUSTOMER, ENGINE... Example classes Chair of Software Engineering Programming in the large - Lecture 21
Seamless development 12 TRANSACTION, PLANE, Specification CUSTOMER, ENGINE... STATE, USER_COMMAND... Design Example classes Chair of Software Engineering Programming in the large - Lecture 21
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
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
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
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
Reversibility 17 S S D I V G Chair of Software Engineering Programming in the large - Lecture 21
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
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
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
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
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
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
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
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
The advice 26 � Add functionality at constant quality Chair of Software Engineering Programming in the large - Lecture 21
Complementary material 27 � OOSC2: � Chapter 28: The software construction process Chair of Software Engineering Programming in the large - Lecture 21
28 End of lecture 21 Chair of Software Engineering Programming in the large - Lecture 21
Recommend
More recommend