Professional Documents
Culture Documents
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
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?
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
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