CH 01 Lect 1
CH 01 Lect 1
You want to learn more about the technical aspects of analysis and
design of complex software systems
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
Learn about different software lifecycles
Greenfield Engineering, Interface Engineering, Reengineering
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:
I. Sommerville. Software Engineering. Prentice Hall
UML e Unified Process. Analisi e Progettazione Object Oriented. J. Arlow
e I. Neustadt. McGraw-Hill
J. Rumbaugh,I. Jacobson, G. Booch. The Unified Modeling Languge
Reference Manual. Addison Wesley
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
Software Engineering: A Problem Solving Activity
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11
Software Engineering: Definition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 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
Has finite (usually enough) time…
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 13
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
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 14
Why are software systems so complex?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15
Dealing with Complexity
1. Abstraction
2. Decomposition
3. Hierarchy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16
1. Abstraction
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18
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 19
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 20
Model-based software Engineering:
Code is a derivation of object model
Pr oblem Statement : A stock exchange lists many companies.
Each company is identified by a ticker symbol
Analysis phase results in cbject 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 22
2. Decomposition
Produce
Read Input Transform Level 1 functions
Output
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26
Functional Decomposition
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27
Functional Decomposition: Autoshape
Autoshape
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28
What is This?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29
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 30
Iterative Modeling then leads to ....
lives in
Eskimo
Size Outside
Dress() moves Temperature
Cave around Light
Smile()
Lighting Sleep() Season
Enter() Hunt()
Leave() Organize()
*
Entrance
Windhole MainEntrance
Diameter Size
Indian
Hair
Dress()
Smile()
Sleep()
Face Mouth
Ear Nose NrOfTeeths
Size * smile() Size
open()
listen() close_eye()
speak()
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32
Class Identification
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33
What is this Thing?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34
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 35
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 36
Questions
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37
3. Hierarchy
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 38
Part of Hierarchy
Computer
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39
Is-Kind-of Hierarchy (Taxonomy)
Cell
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40
So where are we right now?
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41
Software Lifecycle Activities ...and their models
Implemented
Expressed in Terms By
Structured By Realized By
Of Verified
By
class...
class...
class... ?
class....?
Use Case Application Solution
Domain Subsystems Source Test
Model Domain
Objects Code Cases
Objects
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42
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 43
Reusability
How?
Use design patterns and frameworks whenever possible
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44
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 datastructures (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 45
Patterns are used by many people
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46
Summary
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47