You are on page 1of 38

Profession

APhysician,aCivilEngineerandaComputerScientistwerearguing
aboutwhatwastheoldestprofessionintheworld.

ThePhysicianremarked,

"Well,intheBible,itsaysthatGodcreatedEvefromaribtakenoutofAdam.
Thisclearlyrequiressurgery,andsoIcanrightlyclaimthatmineistheoldest
professionintheworld."

TheCivilEngineerinterrupted,andsaid,

"ButevenearlierinthebookofGenesis,itstatesthatGodcreatedtheorderof
theheavensandtheearthfromoutofthechaos.Thiswasthefirstandcertainly
themostspectacularapplicationofcivilengineering.Therefore,fairdoctor,
youarewrong;mineistheoldestprofessionintheworld.

TheComputerScientistleanedbackinthechair,smiledand
thensaidconfidently,
"Ah,butwhatdoyouthinkcreatedthechaos?"

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

UsingUML,Patterns,andJava

ObjectOrientedSoftwareEngineering

Chapter1:Introduction

ObjectivesoftheClass

AppreciateSoftwareEngineering:
Buildcomplexsoftwaresystemsinthecontextoffrequentchange

Understandhowto
produceahighqualitysoftwaresystemwithintime
whiledealingwithcomplexityandchange

Acquire technical knowledge(mainemphasis)


Acquiremanagerialknowledge

UnderstandtheSoftwareLifecycle
ProcessvsProduct
Learnaboutdifferentsoftwarelifecycles
GreenfieldEngineeringfromscratch,
InterfaceEngineeringakindofReengineeringforlegacysystems,
Reengineering[Hammer&Champy,1993]

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

AcquireTechnicalKnowledge

UnderstandSystemModeling
LearnAboutModeling
Using(~20%andsome)AspectsofUML(UnifiedModelingLanguage)

Brugges
Learnaboutmodelingatdifferentphasesofsoftwarelifecycle:
RequirementsElicitation[Chap.4]
(Requirements)Analysis*[Chap5]

ArchitecturalDesign[Chap6&7]
Object/ComponentDesign[Chap8]
Coding[Chap10]

Testing[Chap11]

Deliverable1
Deliverable2
Deliverable3
Deliverable4
Deliverable5
Deliverable6
(duringdemo)

* Anoldschoolofthoughtmixingthedomainmodelwiththesolutionmodel,beingdesignoriented,andina
Waterfallfashion.

LearnaboutTraceabilityamongModels

LearnhowtouseTools:CASE(ComputerAidedSoftwareEngineering)
e.g.,RationalRose
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

Readings

Required:
BerndBruegge,AllenDutoit:ObjectOrientedSoftware
Engineering:UsingUML,Patterns,andJava,PrenticeHall,2003.
Recommended:
ApplyingUMLandPatterns:AnIntroductiontoObjectOrientedAn
alysisandDesignandtheUnifiedProcess,2nded.,C.Larman
ErichGamma,RichardHelm,RalphJohnson,JohnVlissides:
DesignPatterns,AddisonWesley,1996.
GradyBooch,JamesRumbaugh,IvarJacobson,TheUnified
ModelingLanguageUserGuide,AddisonWesley,1999.
K.Popper,ObjectiveKnowledge,anEvolutionaryApproach,
OxfordPress,1979.
Additionalbooksmayberecommendedduringindividualslectures

LectureNoteswilladaptBruegges,
LectureNoteswilladaptBruegges,
butwithadditionalpointsandquestions
butwithadditionalpointsandquestions
possiblyfromverydifferentperspectives.
possiblyfromverydifferentperspectives.
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

OutlineofTodaysLecture

SoftwareEngineeringWhy,WhatandHow?
Modelingcomplexsystems
Functionalvs.objectorienteddecomposition

SoftwareLifecycleModeling
Reuse:
DesignPatterns
Frameworks

Concludingremarks

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

WhySoftwareEngineering?

9 software projects totaling $96.7 million: Where The Money Went


[Report to Congress, Comptroller General, 1979]

Delivered, but never


successfully used
45%
Used as delivered
2%
Usable w. rework
3%

Used w. extensive rework,


but later abandoned
20%

Paid for, but


not delivered
30%

TakealookattheStandishReport(TheChaosReport)
TakealookattheStandishReport(TheChaosReport)

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

SoftwareEngineering:AProblemSolvingActivity

Analysis:Understandthenatureoftheproblemandbreakthe
problemintopieces
Synthesis:Putthepiecestogetherintoalargestructure

Forproblemsolvingweuse
Techniques(methods):
Formalproceduresforproducingresultsusingsomewelldefined
notation

Methodologies:
Collectionoftechniquesappliedacrosssoftwaredevelopmentand
unifiedbyaphilosophicalapproach

Tools:
Instrumentorautomatedsystemstoaccomplishatechnique
Isnttheresomethingmorefundamentalthanproblemsolving?
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

BerndBruegge&AllenH.Dutoit

SoftwareEngineering:Definition
SoftwareEngineeringisacollectionoftechniques,
methodologiesandtoolsthathelp
withtheproductionof

ahighqualitysoftwaresystem
withagivenbudget
beforeagivendeadline

whilechangeoccurs.

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

20

ScientistvsEngineer

ComputerScientist
Provestheoremsaboutalgorithms,designslanguages,defines
knowledgerepresentationschemes
Hasinfinitetime

Engineer
Developsasolutionforanapplicationspecificproblemforaclient
Usescomputers&languages,tools,techniquesandmethods

SoftwareEngineer
Worksinmultipleapplicationdomains
Hasonly3months...
whilechangesoccursinrequirementsandavailabletechnology
IsnttheresomethingmorefundamentalaboutSoftwareEngineer?
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

10

Factorsaffectingthequalityofasoftwaresystem

Complexity:
Thesystemissocomplexthatnosingleprogrammercanunderstandit
anymore
Theintroductionofonebugfixcausesanotherbug

Change:
TheEntropyofasoftwaresystemincreaseswitheachchange:Each
implementedchangeerodesthestructureofthesystemwhichmakesthe
nextchangeevenmoreexpensive(SecondLawofSoftware
Dynamics).
Astimegoeson,thecosttoimplementachangewillbetoohigh,and
thesystemwillthenbeunabletosupportitsintendedtask.Thisistrue
ofallsystems,independentoftheirapplicationdomainortechnological
base.
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

11

ComplexServerConnections

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

12

ComplexMessageFlow

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

13

DealingwithComplexity
1.
2.
3.

Abstraction
Decomposition
Hierarchy

Whatisthis?

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

14

1.

1.Modelsareusedtoprovideabstractions

2.
3.

Inherenthumanlimitationtodealwithcomplexity
The7+2phenomena
Chunking:Groupcollectionofobjects
Ignoreunessentialdetails:=>Models

SystemModel:

Abstraction
Decomposition
Hierarchy

Whatdoesthisreferto?

ObjectModel:Whatisthestructureofthesystem?Whataretheobjectsandhow
aretheyrelated?
Functionalmodel:Whatarethefunctionsofthesystem?Howisdataflowing
throughthesystem?
Dynamicmodel:Howdoesthesystemreacttoexternalevents?Howistheeventflow
inthesystem?
InUML?

TaskModel:
PERTChart:Whatarethedependenciesbetweenthetasks?
Schedule:Howcanthisbedonewithinthetimelimit?
OrgChart:Whataretherolesintheprojectororganization?

IssuesModel:
Whataretheopenandclosedissues?Whatconstraintswereposedbytheclient?
Whatresolutionsweremade?
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

15

ModelbasedsoftwareEngineering:
Codeisaderivationofobjectmodel

Isthisaproblem?

ProblemStatement :Astockexchangelistsmanycompanies.
Eachcompanyisidentifiedbyatickersymbol
Analysis phase results in object model (UML Class Diagram):

StockExchange

Lists

Company
tickerSymbol

Implementation phase results in code


publicclassStockExchange
{
publicVectorm_Company=newVector();

Whereisthedesign,then?

};
publicclassCompany
{
publicintm_tickerSymbol
publicVectorm_StockExchange=newVector();
};

Agoodsoftwareengineerwritesaslittlecodeaspossible
Agoodsoftwareengineerwritesaslittlecodeaspossible
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

17

ExampleofanIssue:GalileovstheChurch

WhatisthecenteroftheUniverse?
Church:Theearthisthecenteroftheuniverse.Why?Aristotle
saysso.
Galileo:Thesunisthecenteroftheuniverse.Why?Copernicus
saysso.Also,theJupitersmoonsrotateroundJupiter,notaround
Earth.

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

18

IssueModeling
Issue:
Whatisthe
Centerofthe
Universe?

Resolution(1998):
Thechurchdeclares
proposal1waswrong
Proposal1:

Theearth!

Pro:

Changewilldisturb

thepeople.

BerndBruegge&AllenH.Dutoit

Proposal2:
Thesun!

Pro:

Con:
Jupitersmoonsrotate
aroundJupiter,not
aroundEarth.

Aristotle
saysso.
Pro:

Resolution(1615):
Thechurch
decidesproposal1
isright

Copernicus
saysso.

Anythingmissing?
Anythingmissing?

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

19

1.

2.Decomposition

2.
3.

Abstraction
Decomposition
Hierarchy

Atechniqueusedtomastercomplexity(divideandconquer)
Functionaldecomposition
Thesystemisdecomposedintomodules
Eachmoduleisamajorprocessingstep(function)inthe
applicationdomain
Modulescanbedecomposedintosmallermodules

Objectorienteddecomposition
Thesystemisdecomposedintoclasses(objects)
Eachclassisamajorabstractionintheapplicationdomain
Classescanbedecomposedintosmallerclasses

Whichdecompositionistherightone?
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

20

FunctionalDecomposition
System
Function

ReadInput

ReadInput

Transform

LoadR10

TopLevelfunctions
Produce
Output

Transform

Level2functions

Produce
Output

AddR1,R10

Isthisabouttherequirementsoradesign?

BerndBruegge&AllenH.Dutoit

Level1functions

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

MachineInstructions

21

FunctionalDecomposition

Functionalityisspreadalloverthesystem
Maintainermustunderstandthewholesystemtomakeasingle
changetothesystem
Consequence:
Codesarehardtounderstand
Codethatiscomplexandimpossibletomaintain
Userinterfaceisoftenawkwardandnonintuitive

Example:MicrosoftPowerpointsAutoshapes

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

22

FunctionalDecomposition:Autoshape
Autoshape

Mouse
click
Change
Rectangle

Draw

Change

Change
Oval

Change
Circle

Draw
Rectangle

Draw
Oval

Draw
Circle

HowisthisdifferentfromOO?
HowareFunctionallyOrientedsystemsdifferentfromOOsystems?
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

23

OODecompositionClassIdentification

Classidentificationiscrucialtoobjectorientedmodeling
Basicassumption:
1. Wecanfindtheclassesforanewsoftwaresystem:Wecallthis
GreenfieldEngineering
2. Wecanidentifytheclassesinanexistingsystem:Wecallthis
Reengineering
3. Wecancreateaclassbasedinterfacetoanysystem:Wecallthis
InterfaceEngineering

Whycanwedothis?Philosophy,science,experimental
evidence

Whatarethelimitations?Dependingonthepurposeofthe
systemdifferentobjectsmightbefound
Howcanweidentifythepurposeofasystem?
Then,dependingonthepurpose,couldafunctionaldecompositionbebetterthananOOdecomposition?
WhichisUMLfor,functionalorOOdecomposition?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
24

ModelofanEskimo
Eskimo
Size
Dress()
Smile()
Sleep()

Shoe
Size
Color
Type
Wear()

BerndBruegge&AllenH.Dutoit

Coat
Size
Color
Type
Wear()

Isthisagoodmodel?

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

25

IterativeModelingthenleadsto....
Eskimo
Size
Dress()
Cave
Smile()
Lighting Sleep()
Enter()
Leave()
lives in

moves
around

Outside
Temperatur
e
Light
Season
Hunt()
Organize()

Entrance

Windhol
e
Diamete
r
BerndBruegge&AllenH.Dutoit

MainEntrance
Size

butisittherightmodel?
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

26

AlternativeModel:TheHeadofanIndian
Indian
Hair
Dress()
Smile()
Sleep()

Ear
Size
listen()

BerndBruegge&AllenH.Dutoit

Face
Nose
smile()
close_eye(
)

Mouth
NrOfTeet
hs
Size
open()
speak()

Isthisagoodmodel?

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

27

1.

3.Hierarchy

2.
3.

Abstraction
Decomposition
Hierarchy

2importanthierarchies
"Partof"hierarchy
"Iskindof"hierarchy

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

28

PartofHierarchy
Computer

I/O Devices

CPU

Memory

Cache

ALU

Program
Counter

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

29

IsKindofHierarchy(Taxonomy)
Cell

Muscle Cell

Striate

Smooth

Blood Cell

Red

White

Nerve Cell

Cortical

Pyramidal

Anyissue?

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

30

Sowherearewerightnow?

Threewaystodealwithcomplexity:
Abstraction
Decomposition
Hierarchy

Objectorienteddecompositionisagoodmethodology
Unfortunately,dependingonthepurposeofthesystem,different
objectscanbefound

Howcanwedoitright?
Manydifferentpossibilities
Ourcurrentapproach:Startwithadescriptionofthefunctionality
(Usecasemodel),thenproceedtotheobjectmodel
Thisleadsustothesoftwarelifecycle
*Anoldschoolofthoughtmixingthedomainmodelwiththesolutionmodel,beingdesignoriented,andinaWaterfallfashion.

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

31

SoftwareLifecycleDefinition

Softwarelifecycle:
Setofactivitiesandtheirrelationshipstoeachothertosupportthe
developmentofasoftwaresystem

TypicalLifecyclequestions:
WhichactivitiesshouldIselectforthesoftwareproject?
Whatarethedependenciesbetweenactivities?
HowshouldIscheduletheactivities?

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

32

SoftwareLifecycleActivities
Deliverable0
Deliverable1

Deliverable2

Requirements Requirements
Elicitation
Analysis

Expressed in
Terms Of

Deliverable3

Deliverable4

Deliverable5

Deliverable6

System
Design

Object
Design

Implementation

Testing

Structured
By

Implemente
d
Realized By
By

class...
class...
class...

Use Case
Model

Applicatio
Solution
SubSystems
n
Domain
Domain
Objects
Objects

Each
activity produces oneObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
or more models
BerndBruegge&AllenH.Dutoit

Source
Code

Verified
By

?
class.... ?
Test
Cases
33

Reusability:DesignPatternsandFrameworks

DesignPattern:
Asmallsetofclassesthatprovideatemplatesolutiontoarecurring
designproblem
Reusabledesignknowledgeonahigherlevelthandatastructures
(linklists,binarytrees,etc)

Framework:
Amoderatelylargesetofclassesthatcollaboratetocarryoutaset
ofresponsibilitiesinanapplicationdomain.

Examples:UserInterfaceBuilder

Providearchitecturalguidanceduringthedesignphase
Provideafoundationforsoftwarecomponentsindustry

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

34

Summary

Softwareengineeringisaproblemsolvingactivity
Developingqualitysoftwareforacomplexproblemwithinalimited
timewhilethingsarechanging

Therearemanywaystodealwithcomplexity
Modeling,decomposition,abstraction,hierarchy
Issuemodels:Showthenegotiationaspects
Systemmodels:Showthetechnicalaspects
Taskmodels:Showtheprojectmanagementaspects
UsePatterns:Reducecomplexityevenfurther

Manywaystodealwithchange
Tailorthesoftwarelifecycletodealwithchangingprojectconditions
Useanonlinearsoftwarelifecycletodealwithchanging
requirementsorchangingtechnology
Provideconfigurationmanagementtodealwithchangingentities
BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

35

AdditionalSlides

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

36

SoftwareProductionhasaPoorTrackRecord
Example:SpaceShuttleSoftware

Cost:$10Billion,millionsofdollarsmorethanplanned
Time:3yearslate
Quality:FirstlaunchofColumbiawascancelledbecauseofa
synchronizationproblemwiththeShuttle's5onboard
computers.
Errorwastracedbacktoachangemade2yearsearlierwhena
programmerchangedadelayfactorinaninterrupthandlerfrom
50to80milliseconds.
Thelikelihoodoftheerrorwassmallenough,thattheerrorcaused
noharmduringthousandsofhoursoftesting.

Substantialerrorsstillexist.
Astronautsaresuppliedwithabookofknownsoftwareproblems
"ProgramNotesandWaivers".
TakealookattheStandishReport(TheChaosReport)
TakealookattheStandishReport(TheChaosReport)

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

37

Reusability

Agoodsoftwaredesignsolvesaspecificproblembutis
generalenoughtoaddressfutureproblems(forexample,
changingrequirements)
Expertsdonotsolveeveryproblemfromfirstprinciples
Theyreusesolutionsthathaveworkedfortheminthepast

Goalforthesoftwareengineer:
Designthesoftwaretobereusableacrossapplicationdomainsand
designs

How?
Usedesignpatternsandframeworkswheneverpossible

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

38

Patternsareusedbymanypeople

ChessMaster:

Openings
Middlegames
Endgames

Writer
TragicallyFlawedHero
(Macbeth,Hamlet)
RomanticNovel
UserManual

SoftwareEngineer
CompositePattern:Acollection
ofobjectsneedstobetreated
likeasingleobject
AdapterPattern(Wrapper):
Interfacetoanexistingsystem
BridgePattern:Interfacetoan
existingsystem,butallowitto
beextensible

Architect
OfficeBuilding
CommercialBuilding
PrivateHome

BerndBruegge&AllenH.Dutoit

ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava

39

You might also like