SE 1
SE 1
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1
Object-Oriented Software Engineering
Using UML, Patterns, and Java Chapter 1: Introduction
Objectives of the Class
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3
Acquire Technical Knowledge
♦ Understand System Modeling
♦ Learn About Modeling
Using (~20% and some) Aspects of UML (Unified Modeling Language)
* An old school of thought mixing the domain model with the solution model, being design-oriented, and in a
Waterfall fashion.
♦ Learn about Traceability among Models
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6
Why Software Engineering?
Used as delivered
2%
Usable w. rework
Paid for, but
3% not delivered
30%
Used w. extensive rework,
but later abandoned
20%
Take a &look
Bernd Bruegge at the StandishObject-Oriented
Allen H. Dutoit Report (The
Software “Chaos”
Engineering: Report)
Using UML, Patterns, and Java 7
Software Engineering: A Problem Solving Activity
Isn’t there
Bernd Bruegge something
& Allen H. Dutoit more fundamental
Object-Oriented Softwarethan problem
Engineering: “solving”?
Using UML, Patterns, and Java 8
Software Engineering: Definition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 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 10
Factors affecting the quality of a software system
♦ Complexity:
⬥ The system is so complex that no single programmer can understand it
anymore
♦ 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 11
Complex Server Connections
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12
Complex Message Flow
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13
Dealing with Complexity
1. Abstraction
2. Decomposition
3. Hierarchy
What is this?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14
1. Abstraction
1. Models are used to provide abstractions 2. Decomposition
3. Hierarchy
♦ Inherent human limitation to deal with complexity
⬥ The 7 +- 2 phenomena
♦ Chunking: Group collection of objects
♦ Ignore unessential details: => Models
What does this refer to?
♦ 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 ? In UML?
♦ 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 15
The “Bermuda Triangle” of Modeling
Constraints
Arguments Org Chart
Issues Pro Con
PERT Chart
Proposals Gantt Chart
};
⬥ Church: The earth is the center of the universe. Why? Aristotle says
so.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
Issue-Modeling
Issue:
Resolution (1998): What is the Resolution (1615):
The church Center of the The church
declares Universe? decides proposal 1
proposal 1 was is right
wrong
Proposal1: Proposal2:
The earth! The sun!
Pro: Pro:
Aristotle Con: Copernicus
says so. Jupiter’s moons rotate says so.
around Jupiter, not
Pro: around Earth.
Change will
disturb Anything missing?
the people.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19
1. Abstraction
2. Decomposition 2. Decomposition
3. Hierarchy
IsBernd
this about
Bruegge & Allen H. the
Dutoit requirements or a design?
Object-Oriented Software Engineering: Using UML, Patterns, and Java 21
Functional Decomposition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22
Functional Decomposition: Autoshape
Autosh
ape
Change Chang
Change
Rectangl e
Oval
e Circle
Then, depending on the purpose, could a functional decomposition be better than an OO decomposition?
Which isBruegge
Bernd UML& Allen
for,H.functional-
Dutoit or OO-decomposition?
Object-Oriented Software Engineering: Using UML, Patterns, and Java 24
Model of an Eskimo
Eskimo
Size
Dress()
Smile()
Sleep()
Shoe
* Coat
Size Size
Color Color
Type Type
Wear() Wear()
*
Entrance
Windhole MainEntrance
Diameter Size
Indian
Hair
Dress()
Smile()
Sleep()
Face Mouth
Ear Nose NrOfTeeths
Size * smile() Size
open()
listen() close_eye()
speak()
♦ 2 important hierarchies
⬥ "Part of" hierarchy
⬥ "Is-kind-of" hierarchy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
Part of Hierarchy
Computer
Cache AL Program
U Counter
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
Is-Kind-of Hierarchy (Taxonomy)
Cell
Any issue?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30
So where are we right now?
*An old school of thought mixing the domain model with the solution model, being design-oriented, and in a Waterfall fashion.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31
Software Lifecycle Definition
♦ Software lifecycle:
⬥ Set of activities and their relationships to each other to support the
development of a software system
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Software Lifecycle Activities
Deliverable 0
Deliverable 1 Deliverable 2 Deliverable 3 Deliverable 4 Deliverable 5 Deliverable 6
Requirement Impleme
Requirements System Object
s n- Testing
Elicitation Design Design
Analysis tation
Implemented
Expressed in By
Structured By Realized By
Terms Of Verified
By
class...
class...
class... ?
class.... ?
Use Case Application Solution
Domain SubSystems Source Test
Model Domain
Objects Code Cases
Objects
♦ 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 34
Patterns are used by many people
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35
Summary
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36