Chair of Software Engineering

Download Report

Transcript Chair of Software Engineering

1
Object-Oriented Software Construction
Bertrand Meyer
Chair of Software Engineering
OOSC - Summer Semester 2004
Contact
2
 Chair of Software Engineering:
 http://se.inf.ethz.ch
 Course assistant:
 Joseph N. Ruskiewicz
 http://se.inf.ethz.ch/people/ruskiewicz
Chair of Software Engineering
OOSC - Summer Semester 2004
3
Lecture 1:
Introduction, Quality issues, Lifecycle
Chair of Software Engineering
OOSC - Summer Semester 2004
Agenda for today
 Introduction
 Quality issues
 Lifecycle
Chair of Software Engineering
OOSC - Summer Semester 2004
4
Agenda for today
 Introduction
 Quality issues
 Lifecycle
Chair of Software Engineering
OOSC - Summer Semester 2004
5
Introduction







6
Course objectives
Topics
Technologies
Guest lectures
Textbook
Grading
Practical setup
Chair of Software Engineering
OOSC - Summer Semester 2004
Course objectives
 Provide you with solid knowledge of:
 Object technology principles and methods
 The practice of object-oriented analysis, design
and implementation
 Some open issues
 Some recent developments
 Two specific technologies
Chair of Software Engineering
OOSC - Summer Semester 2004
7
Topics












8
Quality issues
Lifecycle
Abstract Data Types
Object model choices
Inheritance techniques
Design patterns
Concurrent object-oriented computation
Language mechanisms
Persistence and O-O database
Project management
Genericity, typing issues, covariance
…
Chair of Software Engineering
OOSC - Summer Semester 2004
Technologies
9
 Eiffel
 .NET
Chair of Software Engineering
OOSC - Summer Semester 2004
Textbook
10
 Bertrand Meyer: Object-Oriented Software
Construction, 2nd edition. Prentice Hall, 1997.
 Available from Ruth Bürkli, RZ-F8
 Price: CHF 81.00
 Recommended:
 Erich Gamma et al.: Design Patterns. AddisonWesley, 1995.
Chair of Software Engineering
OOSC - Summer Semester 2004
Grading
11
 Exam (2h): 40%
 28 June 2004
 Project: 60%
 Development of an “Object-Oriented
Requirements Annotator”
 Deadline: 30 June 2004
Chair of Software Engineering
OOSC - Summer Semester 2004
Practical setup
 Course page:
 http://se.inf.ethz.ch/teaching/ss2004/0250/
 Slides:
 http://se.inf.ethz.ch/teaching/ss2004/0250/index.html#slides
Chair of Software Engineering
OOSC - Summer Semester 2004
12
Practical setup (cont’d)
 Please send an email:
 To: [email protected]
 Subject: OOSC course participant
 Content:
 Your name
 Preferred email address
 Status
 Diplom student (semester), Ph.D. student, other.
 Taking the course for credit or not.
 Attach a picture (JPEG, GIF, PNG) if you wish
Chair of Software Engineering
OOSC - Summer Semester 2004
13
Practical setup (cont’d)
 If any questions / problems, contact:




Joseph N. Ruskiewicz
http://se.inf.ethz.ch/people/ruskiewicz
Office: RZ-J22
Phone: 01 632 67 61
Chair of Software Engineering
OOSC - Summer Semester 2004
14
Before getting started…
 Please fill in the questionnaire:
 Anonymous!
 You have 10 minutes
Chair of Software Engineering
OOSC - Summer Semester 2004
15
Some words of warning
 Steps in reacting to O-O (from the preface to
Object-Oriented Software Construction):
 “(1) It’s trivial;
 (2) It’s wrong;
 (3) That’s how I did it all along anyway.”
 Beware of the “mOOzak” phenomenon.
Chair of Software Engineering
OOSC - Summer Semester 2004
16
Some words of warning (cont’d)
benefit_from_course is
-- Make students succeed.
require
some_humility
do
all_exercises
ensure
OO_mastery_for_fun_and_profit
end
Chair of Software Engineering
OOSC - Summer Semester 2004
17
Terminology
18
 I will be strict about terminology:
 Endless confusions in the literature and in discussions.
 Basic concepts have precise definitions — no justification
whatsoever for such confusions.
 Object technology is (in part) about bringing rational,
scientific principles to software. No excuse for sloppy
terminology.
 Alternative conventions will be mentioned when
necessary.
 CHF 5 fine for saying “object” when meaning
“class” (after lecture 4)
Chair of Software Engineering
OOSC - Summer Semester 2004
Agenda for today
 Introduction
 Quality issues
 Lifecycle
Chair of Software Engineering
OOSC - Summer Semester 2004
19
The goal: Software quality









REUSABILITY
EXTENDIBILITY
RELIABILITY
 Correctness
 Robustness
 Integrity
PORTABILITY
EFFICIENCY
…
20
SPECIFICATION
Correctness
Robustness
Integrity
Correctness:
 The ability of a software system to perform according to
specification, in cases defined by the specification.
Robustness:
 The ability of a software system to react in a reasonable manner
to cases not covered by the specification.
Integrity:
 The ability of a software system to react in a reasonable manner
to cases of unauthorized access and modification.
Chair of Software Engineering
OOSC - Summer Semester 2004
The challenge of software quality
21
 Reliability [correctness + robustness]:
 It should be easier to build software that
functions properly, and easier to guarantee what
it does.
 Modularity [reusability + extendibility]:
 We should build less software!
 Software should be easier to modify.
Chair of Software Engineering
OOSC - Summer Semester 2004
Agenda for today
 Introduction
 Quality issues
 Lifecycle
Chair of Software Engineering
OOSC - Summer Semester 2004
22
The waterfall model of the lifecycle
FEASIBILITY STUDY
REQUIREMENTS
ANALYSIS
SPECIFICATION
GLOBAL DESIGN
DETAILED DESIGN
IMPLEMENTATION
VALIDATION &
VERIFICATION
DISTRIBUTION
PROJECT PROGRESS
Chair of Software Engineering
OOSC - Summer Semester 2004
23
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.
Chair of Software Engineering
OOSC - Summer Semester 2004
24
The waterfall model of the lifecycle
FEASIBILITY STUDY
REQUIREMENTS
ANALYSIS
DESIGN AND
IMPLEMENTATION
SPECIFICATION
GLOBAL DESIGN
DETAILED DESIGN
IMPLEMENTATION
VALIDATION &
VERIFICATION
DISTRIBUTION
PROJECT TIME
Chair of Software Engineering
OOSC - Summer Semester 2004
25
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%
of software costs?).
 Division of labor hampering Total Quality
Management.
 Impedance mismatches.
 Highly synchronous model.
Chair of Software Engineering
OOSC - Summer Semester 2004
26
Quality control?
Analysts
Designers
Implementers
Testers
Customers
Chair of Software Engineering
OOSC - Summer Semester 2004
27
Impedance mismatches
As Management requested it.
As Programming developed it.
As the Project Leader defined it.
As Operations installed it.
28
As Systems designed it.
What the user wanted.
(Pre-1970 cartoon; origin unknown)
Chair of Software Engineering
OOSC - Summer Semester 2004
The escherfall (Spiral)
29
M.C Escher:
Waterval
Chair of Software Engineering
OOSC - Summer Semester 2004
Tasks
30
Analysts
Designers
Implementers
Testers
Chair of Software Engineering
OOSC - Summer Semester 2004
Seamless development (1)
Specification
TRANSACTION, PLANE,
CUSTOMER, ENGINE...
Example classes
Chair of Software Engineering
OOSC - Summer Semester 2004
31
Seamless development (2)
Specification
Design
TRANSACTION, PLANE,
CUSTOMER, ENGINE...
STATE, USER_COMMAND...
Example classes
Chair of Software Engineering
OOSC - Summer Semester 2004
32
Seamless development (3)
Specification
Design
Implementation
TRANSACTION, PLANE,
CUSTOMER, ENGINE...
STATE, USER_COMMAND...
HASH_TABLE,
LINKED_LIST...
Example classes
Chair of Software Engineering
OOSC - Summer Semester 2004
33
Seamless development (4)
Specification
Design
TRANSACTION, PLANE,
CUSTOMER, ENGINE...
STATE, USER_COMMAND...
Implementation
HASH_TABLE,
LINKED_LIST...
V&V
TEST_DRIVER, ...
Example classes
Chair of Software Engineering
OOSC - Summer Semester 2004
34
Seamless development (5)
Specification
Design
TRANSACTION, PLANE,
CUSTOMER, ENGINE...
STATE, USER_COMMAND...
Implementation
HASH_TABLE,
LINKED_LIST...
V&V
TEST_DRIVER, ...
Generalization
AIRCRAFT, ...
Example classes
Chair of Software Engineering
OOSC - Summer Semester 2004
35
Analysis classes
36
deferred class VAT
inherit
TANK
feature
in_valve, out_valve: VALVE
fill is
require
deferred
ensure
end
Precondition
-- Fill the vat.
in_valve.open
out_valve.closed
in_valve.closed
out_valve.closed
is_full
-- i.e. specified only.
-- not implemented.
Postcondition
empty, is_full, is_empty, gauge, maximum, ... [Other features] ...
invariant
Class invariant
is_full = (gauge >= 0.97 * maximum) and (gauge <= 1.03 * maximum)
end
Chair of Software Engineering
OOSC - Summer Semester 2004
At the source of object technology
Kristen Nygaard (Oslo, 1967)
To program is to understand
Chair of Software Engineering
OOSC - Summer Semester 2004
37
Reversibility
38
S
S
D
I
V
G
Chair of Software Engineering
OOSC - Summer Semester 2004
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.
Chair of Software Engineering
OOSC - Summer Semester 2004
39
Single model principle
 Use a single base for everything: analysis, design,
implementation, documentation...
 Use tools to extract the appropriate views.
Chair of Software Engineering
OOSC - Summer Semester 2004
40
Generalization
 Prepare for reuse
 For example:
 Remove built-in limits
 Remove dependencies on specifics of project
 Improve documentation, contracts...
 Extract commonalities and revamp inheritance
hierarchy
 Few companies have the guts to provide the
budget for this
Chair of Software Engineering
OOSC - Summer Semester 2004
41
The cluster model
S
42
Cluster 1
Cluster 2
D
I
V
G
S
D
I
V
G
Chair of Software Engineering
Cluster n
S
S
D
D
I
I
V
V
G
G
OOSC - Summer Semester 2004
The cluster model: extreme variants (1)
Feasibility
study
Division into
clusters
Cluster 1
Cluster 2
Cluster 4
Cluster 3
Cluster 5
Specification
Specification
Specification
Specification
Specification
Specification
Specification
Specification
Specification
Specification
Design
Design
Design
Design
Design
Implementation
Implementation
Implementation
Implementation
Implementation
V&V
V&V
V&V
V&V
V&V
Generalization
Generalization
Generalization
Generalization
Generalization
“Clusterfall”
Chair of Software Engineering
OOSC - Summer Semester 2004
43
The cluster model: extreme variants (2)
Feasibility
study
Division into
clusters
Cluster 1
Cluster 2
Cluster n
The Trickle model
Chair of Software Engineering
OOSC - Summer Semester 2004
44
Quality goals: the Osmond curves
Other qualities
DESIRABLE
Debugging
COMMON
Functionality
Envisaged
Early releases
Chair of Software Engineering
OOSC - Summer Semester 2004
45
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.
Chair of Software Engineering
OOSC - Summer Semester 2004
46
Reading assignment
 For Monday 5 April 2004: OOSC2 chapters
 Chapter 1: Software quality
 Chapter 28: The software construction process
Chair of Software Engineering
OOSC - Summer Semester 2004
47
48
End of lecture 1
Chair of Software Engineering
OOSC - Summer Semester 2004