OOSE Chapter1
OOSE Chapter1
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2
Objectives of the Class
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Acquire Technical Knowledge
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4
Acquire Managerial Knowledge
Understand the Software Lifecycle
Process vs Product [Both have models - RJL]
Learn about different software lifecycles
Greenfield Engineering, Interface Engineering, Reengineering,
[Refactoring (10.3.2, 16.4.2) - RJL]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5
Readings
Required:
Bernd Bruegge, Allen Dutoit: “Object-Oriented Software
Engineering: Using UML, Patterns, and Java”, Prentice Hall, 2003.
Recommended:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides:
“Design Patterns”, Addison-Wesley, 1996.
Grady Booch, James Rumbaugh, Ivar Jacobson, “The Unified
Modeling Language User Guide”, Addison Wesley, 1999.
K. Popper, “Objective Knowledge, an Evolutionary Approach,
Oxford Press, 1979.
Additional books may be recommended during individuals
lectures.
[Added byRJL:]
JWCooper: Java [1.2] Design Patterns: A Tutorial, AWL, 2000.
CHorstmann: OO Design and Patterns, Wiley, 2004. [J2SE 1.4]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Outline of Today’s Lecture
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7
Can you develop this?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8
Limitations of Non-engineered Software
Requirements
Software
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9
Software Production has a Poor Track Record
Example: Space Shuttle Software
Cost: $10 Billion, millions of dollars more than planned
Time: 3 years late
Quality: First launch of Columbia was cancelled because of a
synchronization problem with the Shuttle's 5 onboard
computers.
Error was traced back to a change made 2 years earlier when a
programmer changed a delay factor in an interrupt handler from
50 to 80 milliseconds.
The likelihood of the error was small enough, that the error caused
no harm during thousands of hours of testing.
Substantial errors still exist.
Astronauts are supplied with a book of known software problems
"Program Notes and Waivers".
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10
Quality of today’s software….
QuickTime™ and a
Cinepak decompressor
are needed to see this picture.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
…has major impact on Users
QuickTime™ and a
decompressor
are needed to see this picture.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Software Engineering: A Problem Solving Activity
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Software Engineering: Definition
Software Engineering is a collection of techniques,
methodologies and tools that help
with the production of
[These three constraints are incompatible. One has gotta’ give. - RJL]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 20
Scientist vs Engineer
Computer Scientist
Proves theorems about algorithms, designs languages, defines
knowledge representation schemes
Has infinite time…
Engineer
Develops a solution for an application-specific problem for a client
Uses computers & languages, tools, techniques and methods
Software Engineer
Works in multiple application domains
Has only 3 months...
…while changes occurs in requirements and available technology
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Factors affecting the quality of a software system
Complexity:
The system is so complex that no single programmer can understand it
anymore
The introduction of one bug fix causes another bug [7::1 ratio - RJL]
Change:
The “Entropy” of a software system increases with each change: Each
implemented change erodes the structure of the system which makes the
next change even more expensive (“Second Law of Software
Dynamics”).
As time goes on, the cost to implement a change will be too high, and
the system will then be unable to support its intended task. This is true
of all systems, independent of their application domain or technological
base.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
Why are software systems so complex?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17
Dealing with Complexity
1. Abstraction
2. Decomposition
3. Hierarchy [ = assymetry – RJL]
4. [What if real-world relationships are symmetric?]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
What is this?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
1. Abstraction
_______
*[“It has already been emphasized repeatedly that our abstracting from physical
objects and situations proceeds by missing, neglecting and forgetting, and that these
disregarded characteristics usually produce errors in evaluation resulting in the
disasters of life.” – From Korzybski: Insights for the Age of Aquarius, p. 65, quoted
in Peter Neumann: A Note on the Psychology of Abstraction, ACM SIGSOFT
SENotes 4(1) 1/1979 (21). - RJL]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20
Models are used to provide abstractions
System Model:
Object Model: What is the structure of the system? What are the
objects and how are they related?
Functional model: What are the functions of the system? How is
data flowing through the system?
Dynamic model: How does the system react to external events?
How is the event flow in the system ?
Task Model:
PERT Chart: What are the dependencies between the tasks?
Schedule: How can this be done within the time limit?
Org Chart: What are the roles in the project or organization?
Issues Model:
What are the open and closed issues? What constraints were posed
by the client? What resolutions were made?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Interdependencies of the Models
Issue Model
(Proposals, Task Model
Arguments, (Organization,
Resolutions) Activities
Schedule)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Model-based software Engineering [MDA]:
Code is a derivation of object model
Problem Statement: A stock exchange lists many companies.
Each company is identified by a ticker symbol.
Analysis phase results in object model (UML Class Diagram):
StockExchange * * Company
Lists tickerSymbol
};
};
AAgood
goodsoftware
softwareengineer
engineerwrites
writesas
aslittle
littlecode
codeas
aspossible
possible
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Example of an Issue: Galileo vs the Church
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25
Issue-Modeling
Issue:
What is the Resolution (1615):
Resolution (1998): Center of the The church
The church declares Universe? decides proposal 1
proposal 1 was wrong is right
Proposal1: Proposal2:
The earth! The sun!
Pro: Pro:
Aristotle Con: Copernicus
says so. Jupiter’s moons rotate says so.
around Jupiter, not
around Earth.
Pro:
Change will disturb
the people.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
2. Decomposition
Produce
Read Input Transform Level 1 functions
Output
[Structured Design: ‘Structure Chart’: Call Tree with in-out data flows as link labels;
Its abstraction = Structured Analysis: ‘DFD’: Data Flows link Producers-{buffers}-Consumers]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
Functional Decomposition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Functional Decomposition: Autoshape
Autoshape
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
What is This?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
‘Class’ Model of an Eskimo
Eskimo
Size
Dress()
Smile()
Sleep()
Shoe
* Coat
Size Size
Color Color
Type Type
Wear() Wear()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Iterative Modeling then leads to ....
Eskimo
lives in
Size Outside
Dress() moves Temperatur
Cave around e
Smile()
Lighting Sleep() Light
Enter() Season
Leave() Hunt()
Organize()
Entrance*
Windhol MainEntrance
e Size
Diamete
r but is it the right model?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
Alternative Model: The Head of an Indian
Indian
Hair
Dress()
Smile()
Sleep()
Face Mouth
Ear Nose NrOfTeet
Size * smile() h
Size
listen() close_eye(
) open()
speak()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
Class Identification
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
What is this Thing?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36
Modeling a Briefcase
BriefCase
Capacity: Integer
Weight: Integer
Open()
Close()
Carry()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
A new Use for a Briefcase
BriefCase
Capacity: Integer
Weight: Integer
Open()
Close()
Carry()
SitOnIt()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Questions
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
3. Hierarchy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
Part of Hierarchy
Computer
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
Is-Kind-of Hierarchy (Taxonomy)
Cell
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
So where are we right now?
Three ways to deal with complexity:
Abstraction
Decomposition
Hierarchy
[Or network, of inter-related objects – RJL]
Object-oriented decomposition is a good methodology
Unfortunately, depending on the purpose of the system, different
objects can be found [and different use cases – RJL]
How can we do it right?
Many different possibilities
Our current approach: Start with a description of the functionality
(Use Case model), then proceed to the object model
This leads us to the software lifecycle [An iterative approach – RJL]
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43
Software Lifecycle Activities ...and their models
Implemented
Expressed in By
Structured Realized By
Terms Of By Verified
By
class...
class...
class... ?
class.... ?
Use Case Applicatio Solution
n Subsystems Source Test
Model Domain
Domain (‘Packages’) Objects
Code Cases
Objects (‘Actions’)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
Software Lifecycle Definition
Software lifecycle:
Set of activities and their relationships to each other to support the
development and deployment of a software system
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45
Reusability
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46
Design Patterns and Frameworks
Design Pattern:
A small set of classes that provide a template solution to a recurring
design problem
Reusable design knowledge on a higher level than data structures
(link lists, binary trees, etc)
Framework:
A moderately large set of classes that collaborate to carry out a set
of responsibilities in an application domain.
Examples: User Interface Builder
Provide architectural guidance during the design phase
Provide a foundation for software components industry
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47
Patterns are used by many people
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48
Summary
Software engineering is a problem solving activity
Developing quality software for a complex problem within a limited
time while things are changing
There are many ways to deal with complexity
Modeling, decomposition, abstraction, hierarchy
Issue models: Show the negotiation aspects
System models: Show the technical aspects
Task models: Show the project management aspects
Use Patterns: Reduce complexity even further
(more predictability, for better comprehension)
Many ways to do deal with change
Tailor the software lifecycle to deal with changing project conditions
Use a nonlinear software lifecycle to deal with changing
requirements or changing technology
Provide configuration management to deal with changing entities
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49