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

programming in the large
SMART_READER_LITE
LIVE PREVIEW

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 -


slide-1
SLIDE 1

Programming in the large - Lecture 21

1

Chair of Software Engineering

Programming in the large

Bertrand Meyer

Last update: 21 June 2004

slide-2
SLIDE 2

Programming in the large - Lecture 21

2

Chair of Software Engineering

Lecture 21: Software lifecycle models

slide-3
SLIDE 3

Programming in the large - Lecture 21

3

Chair of Software Engineering

Arguments for the waterfall

(After B.W. Boehm: Software engineering economics) The activities are necessary

(But: merging of middle activities)

The order is the right one.

slide-4
SLIDE 4

Programming in the large - Lecture 21

4

Chair of Software Engineering

DESIGN AND IMPLEMENTATION

The waterfall model of the lifecycle

FEASIBILITY STUDY

PROJECT PROGRESS

REQUIREMENTS ANALYSIS SPECIFICATION GLOBAL DESIGN DETAILED DESIGN IMPLEMENTATION VALIDATION & VERIFICATION DISTRIBUTION

slide-5
SLIDE 5

Programming in the large - Lecture 21

5

Chair of Software Engineering

Problems with the waterfall

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%

  • f software costs?).

Division of labor hampering Total Quality Management. Impedance mismatches. Highly synchronous model.

slide-6
SLIDE 6

Programming in the large - Lecture 21

6

Chair of Software Engineering

Quality control?

Analysts Designers Implementers Testers Customers

slide-7
SLIDE 7

Programming in the large - Lecture 21

7

Chair of Software Engineering

Impedance mismatches

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)

slide-8
SLIDE 8

Programming in the large - Lecture 21

8

Chair of Software Engineering

The Spiral model (Boehm)

Figure from: Ghezzi, Jazayeri, Mandrioli, Software Engineering, 2nd edition, Prentice Hall

slide-9
SLIDE 9

Programming in the large - Lecture 21

9

Chair of Software Engineering

The Spiral model

M.C Escher: Waterval

slide-10
SLIDE 10

Programming in the large - Lecture 21

10

Chair of Software Engineering

Tasks

Analysts Designers Implementers Testers

slide-11
SLIDE 11

Programming in the large - Lecture 21

11

Chair of Software Engineering

Seamless development

TRANSACTION, PLANE, CUSTOMER, ENGINE...

Example classes Specification

slide-12
SLIDE 12

Programming in the large - Lecture 21

12

Chair of Software Engineering

Seamless development

TRANSACTION, PLANE, CUSTOMER, ENGINE...

Example classes

Design

Specification

STATE, USER_COMMAND...

slide-13
SLIDE 13

Programming in the large - Lecture 21

13

Chair of Software Engineering

Seamless development

Implementation

TRANSACTION, PLANE, CUSTOMER, ENGINE...

Example classes

Design

Specification

STATE, USER_COMMAND... HASH_TABLE, LINKED_LIST...

slide-14
SLIDE 14

Programming in the large - Lecture 21

14

Chair of Software Engineering

Seamless development

Implementation

V & V

TRANSACTION, PLANE, CUSTOMER, ENGINE... TEST_DRIVER, ...

Example classes

Design

Specification

STATE, USER_COMMAND... HASH_TABLE, LINKED_LIST...

slide-15
SLIDE 15

Programming in the large - Lecture 21

15

Chair of Software Engineering

Seamless development

Implementation

V & V

TRANSACTION, PLANE, CUSTOMER, ENGINE... TEST_DRIVER, ...

Example classes

Design

Specification

STATE, USER_COMMAND... HASH_TABLE, LINKED_LIST...

Genera- lization

AIRCRAFT, ...

slide-16
SLIDE 16

Programming in the large - Lecture 21

16

Chair of Software Engineering

deferred class VAT inherit TANK feature in_valve, out_valve: VALVE fill is

  • - Fill the vat.

require in_valve.open

  • ut_valve.closed

deferred ensure in_valve.closed

  • ut_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

Analysis classes

slide-17
SLIDE 17

Programming in the large - Lecture 21

17

Chair of Software Engineering

Reversibility

S V D I S G

slide-18
SLIDE 18

Programming in the large - Lecture 21

18

Chair of Software Engineering

Seamless development

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.

slide-19
SLIDE 19

Programming in the large - Lecture 21

19

Chair of Software Engineering

Single model principle

Use a single base for everything: analysis, design, implementation, documentation... Use tools to extract the appropriate views.

slide-20
SLIDE 20

Programming in the large - Lecture 21

20

Chair of Software Engineering

The cluster model

I

V

D

S G

I

V

D

S G

I

V

D

S G Cluster 1 Cluster 2

I

V

D

S G Cluster n

I

V

D

S G

I

V

D

S G

Feasibility study Division into clusters

slide-21
SLIDE 21

Programming in the large - Lecture 21

21

Chair of Software Engineering

The cluster model: extreme variants (1)

“Clusterfall”

I

V

D

S G

I

V

D

S G

I

V

D

S G

Cluster 1

I

V

D

S G

Feasibility study Division into clusters Cluster n

slide-22
SLIDE 22

Programming in the large - Lecture 21

22

Chair of Software Engineering

The cluster model: extreme variants (2)

“Trickle”

I V D S G

Cluster 1 Feasibility study Division into clusters Cluster n

I V D S G I V D S G

slide-23
SLIDE 23

Programming in the large - Lecture 21

23

Chair of Software Engineering

Generalization

Prepare for reuse Possible tasks: Remove built-in limits Reorganize inheritance hierarchy Abstraction (e.g. introduce deferred classes) Improve documentation

slide-24
SLIDE 24

Programming in the large - Lecture 21

24

Chair of Software Engineering

Cluster development

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.

slide-25
SLIDE 25

Programming in the large - Lecture 21

25

Chair of Software Engineering

Quality goals: the Osmond curves

Envisaged Release

Desirable

Other qualities

Functionality

Common

1 2 3 4

slide-26
SLIDE 26

Programming in the large - Lecture 21

26

Chair of Software Engineering

The advice

Add functionality at constant quality

slide-27
SLIDE 27

Programming in the large - Lecture 21

27

Chair of Software Engineering

Complementary material

OOSC2: Chapter 28: The software construction process

slide-28
SLIDE 28

Programming in the large - Lecture 21

28

Chair of Software Engineering

End of lecture 21