Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ObjectOrientedSoftwareEngineering
Chapter1:Introduction
RequirementsforthisClass
Youareproficientinaprogramminglanguage,butyouhaveno
experienceinanalysisordesignofasystem
Youwanttolearnmoreaboutthetechnicalaspectsofanalysisand
designofcomplexsoftwaresystems
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
ObjectivesoftheClass
AppreciateSoftwareEngineering:
Buildcomplexsoftwaresystemsinthecontextoffrequentchange
Understandhowto
produceahighqualitysoftwaresystemwithintime
whiledealingwithcomplexityandchange
Acquiretechnicalknowledge(mainemphasis)
Acquiremanagerialknowledge
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
AcquireTechnicalKnowledge
UnderstandSystemModeling
LearnUML(UnifiedModelingLanguage)
Learndifferentmodelingmethods:
UseCasemodeling
ObjectModeling
DynamicModeling
IssueModeling
LearnhowtouseTools:
CASE(ComputerAidedSoftwareEngineering)
Tool:TogetherJ
ComponentBasedSoftwareEngineering
LearnhowtouseDesignPatternsandFrameworks
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
AcquireManagerialKnowledge
UnderstandtheSoftwareLifecycle
ProcessvsProduct
Learnaboutdifferentsoftwarelifecycles
GreenfieldEngineering,InterfaceEngineering,Reengineering
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
Readings
Required:
BerndBruegge,AllenDutoit:ObjectOrientedSoftwareEngineering:
UsingUML,Patterns,andJava,PrenticeHall,2003.
Recommended:
I.Sommerville.SoftwareEngineering.PrenticeHall
UMLeUnifiedProcess.AnalisieProgettazioneObjectOriented.J.Arlow
eI.Neustadt.McGrawHill
J.Rumbaugh,I.Jacobson,G.Booch.TheUnifiedModelingLanguge
ReferenceManual.AddisonWesley
(Perstudentiv.o.)A.Guidi,D.Bordol.GuidaaSQL.Apogeo
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
OutlineofTodaysLecture
Highqualitysoftware:Stateoftheart
Modelingcomplexsystems
Functionalvs.objectorienteddecomposition
Dealingwithchange:
Softwarelifecyclemodeling
Concludingremarks
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
Canyoudevelopthis?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
LimitationsofNonengineeredSoftware
Requirements
Hereistheproblem!!
Software
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
SoftwareProductionhasaPoorTrackRecord
Example:SpaceShuttleSoftware
Cost:$10Billion,millionsofdollarsmorethanplanned
Time:3yearslate
Quality:FirstlaunchofColumbiawascancelledbecauseofa
synchronizationproblemwiththeShuttle's5onboardcomputers.
Errorwastracedbacktoachangemade2yearsearlierwhena
programmerchangedadelayfactorinaninterrupthandlerfrom50to80
milliseconds.
Thelikelihoodoftheerrorwassmallenough,thattheerrorcausedno
harmduringthousandsofhoursoftesting.
Substantialerrorsstillexist.
Astronautsaresuppliedwithabookofknownsoftwareproblems
"ProgramNotesandWaivers".
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
10
SoftwareEngineering:AProblemSolvingActivity
Analysis:Understandthenatureoftheproblemandbreakthe
problemintopieces
Synthesis:Putthepiecestogetherintoalargestructure
Forproblemsolvingweuse
Techniques(methods):
Formalproceduresforproducingresultsusingsomewelldefined
notation
Methodologies:
Collectionoftechniquesappliedacrosssoftwaredevelopmentandunified
byaphilosophicalapproach
Tools:
Instrumentorautomatedsystemstoaccomplishatechnique
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
11
SoftwareEngineering:Definition
SoftwareEngineeringisacollectionoftechniques,
methodologiesandtoolsthathelpwiththeproductionof
ahighqualitysoftwaresystem
withagivenbudget
beforeagivendeadline
whilechangeoccurs.
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
12
20
ScientistvsEngineer
ComputerScientist
Provestheoremsaboutalgorithms,designslanguages,definesknowledge
representationschemes
Hasinfinitetime
Engineer
Developsasolutionforanapplicationspecificproblemforaclient
Usescomputers&languages,tools,techniquesandmethods
Hasfinite(usuallyenough)time
SoftwareEngineer
Worksinmultipleapplicationdomains
Hasonly3months...
whilechangesoccursinrequirementsandavailabletechnology
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
13
Factorsaffectingthequalityofasoftwaresystem
Complexity:
Thesystemissocomplexthatnosingleprogrammercanunderstandit
anymore
Theintroductionofonebugfixcausesanotherbug
Change:
TheEntropyofasoftwaresystemincreaseswitheachchange:Each
implementedchangeerodesthestructureofthesystemwhichmakesthenext
changeevenmoreexpensive(SecondLawofSoftwareDynamics).
Astimegoeson,thecosttoimplementachangewillbetoohigh,andthe
systemwillthenbeunabletosupportitsintendedtask.Thisistrueofall
systems,independentoftheirapplicationdomainortechnologicalbase.
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
14
Whyaresoftwaresystemssocomplex?
Theproblemdomainisdifficult
Thedevelopmentprocessisverydifficulttomanage
Softwareoffersextremeflexibility
Softwareisadiscretesystem
Continuoussystemshavenohiddensurprises(Parnas)
Discretesystemshave!
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
15
DealingwithComplexity
1.
2.
3.
Abstraction
Decomposition
Hierarchy
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
16
1.Abstraction
Inherenthumanlimitationtodealwithcomplexity
The7+2phenomena
Chunking:Groupcollectionofobjects
Ignoreunessentialdetails:=>Models
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
18
Modelsareusedtoprovideabstractions
SystemModel:
ObjectModel:Whatisthestructureofthesystem?Whataretheobjects
andhowaretheyrelated?
Functionalmodel:Whatarethefunctionsofthesystem?Howisdata
flowingthroughthesystem?
Dynamicmodel:Howdoesthesystemreacttoexternalevents?Howisthe
eventflowinthesystem?
TaskModel:
PERTChart:Whatarethedependenciesbetweenthetasks?
Schedule:Howcanthisbedonewithinthetimelimit?
OrgChart:Whataretherolesintheprojectororganization?
IssuesModel:
Whataretheopenandclosedissues?Whatconstraintswereposedbythe
client?Whatresolutionsweremade?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
19
InterdependenciesoftheModels
SystemModel(Structure,
Functionality,
DynamicBehavior)
IssueModel
(Proposals,
Arguments,
Resolutions)
BerndBruegge&AllenH.Dutoit
TaskModel
(Organization,
Activities
Schedule)
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
20
ModelbasedsoftwareEngineering:
Codeisaderivationofobjectmodel
ProblemStatement :Astockexchangelistsmanycompanies.
Eachcompanyisidentifiedbyatickersymbol
Analysis phase results in cbject model (UML Class Diagram):
StockExchange
Lists
Company
tickerSymbol
Agoodsoftwareengineerwritesaslittlecodeaspossible
Agoodsoftwareengineerwritesaslittlecodeaspossible
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
22
2.Decomposition
Atechniqueusedtomastercomplexity(divideandconquer)
Functionaldecomposition
Thesystemisdecomposedintomodules
Eachmoduleisamajorprocessingstep(function)intheapplication
domain
Modulescanbedecomposedintosmallermodules
Objectorienteddecomposition
Thesystemisdecomposedintoclasses(objects)
Eachclassisamajorabstractionintheapplicationdomain
Classescanbedecomposedintosmallerclasses
Whichdecompositionistherightone?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
25
FunctionalDecomposition
System
Function
ReadInput
ReadInput
Transform
LoadR10
BerndBruegge&AllenH.Dutoit
Transform
TopLevelfunctions
Produce
Output
Level1functions
Level2functions
Produce
Output
AddR1,R10
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
MachineInstructions
26
FunctionalDecomposition
Functionalityisspreadalloverthesystem
Maintainermustunderstandthewholesystemtomakeasingle
changetothesystem
Consequence:
Codesarehardtounderstand
Codethatiscomplexandimpossibletomaintain
Userinterfaceisoftenawkwardandnonintuitive
Example:MicrosoftPowerpointsAutoshapes
(seenextpage)
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
27
FunctionalDecomposition:Autoshape
Autoshape
Mouse
click
Change
Rectangle
Draw
Change
Change
Oval
Change
Circle
Draw
Rectangle
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
Draw
Circle
Draw
Oval
28
WhatisThis?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
29
ModelofanEskimo
Eskimo
Size
Dress()
Smile()
Sleep()
Shoe
Size
Color
Type
Wear()
BerndBruegge&AllenH.Dutoit
Coat
Size
Color
Type
Wear()
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
30
IterativeModelingthenleadsto....
lives in
Cave
Lighting
Enter()
Leave()
Eskimo
Size
Dress()
Smile()
Sleep()
moves
around
Outside
Temperature
Light
Season
Hunt()
Organize()
Entrance
Windhole
Diameter
MainEntrance
Size
butisittherightmodel?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
31
AlternativeModel:TheHeadofanIndian
Indian
Hair
Dress()
Smile()
Sleep()
Ear
Size
listen()
BerndBruegge&AllenH.Dutoit
Face
Nose
smile()
close_eye()
Mouth
NrOfTeeth
s
Size
open()
speak()
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
32
ClassIdentification
Classidentificationiscrucialtoobjectorientedmodeling
Basicassumption:
1. Wecanfindtheclassesforanewsoftwaresystem:Wecallthis
GreenfieldEngineering
2. Wecanidentifytheclassesinanexistingsystem:Wecallthis
Reengineering
3. Wecancreateaclassbasedinterfacetoanysystem:Wecallthis
InterfaceEngineering
Whycanwedothis?Philosophy,science,experimentalevidence
Whatarethelimitations?Dependingonthepurposeofthesystem
differentobjectsmightbefound
Howcanweidentifythepurposeofasystem?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
33
WhatisthisThing?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
34
ModelingaBriefcase
BriefCase
Capacity:Integer
Weight:Integer
Open()
Close()
Carry()
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
35
AnewUseforaBriefcase
BriefCase
Capacity:Integer
Weight:Integer
Open()
Close()
Carry()
SitOnIt()
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
36
Questions
WhydidwemodelthethingasBriefcase?
Whydidwenotmodelitasachair?
WhatdowedoiftheSitOnIt()operationisthemost
frequentlyusedoperation?
Thebriefcaseisonlyusedforsittingonit.Itisnever
openednorclosed.
IsitaChairoraBriefcase?
Howlongshallwelivewithourmodelingmistake?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
37
3.Hierarchy
Wegotabstractionsanddecomposition
Thisleadsustochunks(classes,objects)whichweviewwithobjectmodel
Anotherwaytodealwithcomplexityistoprovidesimple
relationshipsbetweenthechunks
Oneofthemostimportantrelationshipsishierarchy
2importanthierarchies
"Partof"hierarchy
"Iskindof"hierarchy
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
38
PartofHierarchy
Computer
I/O Devices
CPU
Cache
ALU
BerndBruegge&AllenH.Dutoit
Memory
Program
Counter
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
39
IsKindofHierarchy(Taxonomy)
Cell
Muscle Cell
Striate
Smooth
BerndBruegge&AllenH.Dutoit
Nerve Cell
Blood Cell
Red
White
Cortical
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
Pyramidal
40
Sowherearewerightnow?
Threewaystodealwithcomplexity:
Abstraction
Decomposition
Hierarchy
Objectorienteddecompositionisagoodmethodology
Unfortunately,dependingonthepurposeofthesystem,differentobjects
canbefound
Howcanwedoitright?
Manydifferentpossibilities
Ourcurrentapproach:Startwithadescriptionofthefunctionality(Use
casemodel),thenproceedtotheobjectmodel
Thisleadsustothesoftwarelifecycle
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
41
SoftwareLifecycleActivities
Requirements
Elicitation
System
Design
Analysis
Expressed in
Terms Of
Structured By
...andtheirmodels
Object
Design
Implemen
tation
Implemented
By
Realized By
Verified
By
class...
class...
class...
Use Case
Model
Applicatio
Subsystems
n
Domain
Objects
BerndBruegge&AllenH.Dutoit
Testing
Solution
Domain
Objects
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
Source
Code
?
class.... ?
Test
Cases
42
SoftwareLifecycleDefinition
Softwarelifecycle:
Setofactivitiesandtheirrelationshipstoeachothertosupportthe
developmentofasoftwaresystem
TypicalLifecyclequestions:
WhichactivitiesshouldIselectforthesoftwareproject?
Whatarethedependenciesbetweenactivities?
HowshouldIscheduletheactivities?
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
43
Reusability
Agoodsoftwaredesignsolvesaspecificproblembutisgeneral
enoughtoaddressfutureproblems(forexample,changing
requirements)
Expertsdonotsolveeveryproblemfromfirstprinciples
Theyreusesolutionsthathaveworkedfortheminthepast
Goalforthesoftwareengineer:
Designthesoftwaretobereusableacrossapplicationdomainsanddesigns
How?
Usedesignpatternsandframeworkswheneverpossible
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
44
DesignPatternsandFrameworks
DesignPattern:
Asmallsetofclassesthatprovideatemplatesolutiontoarecurring
designproblem
Reusabledesignknowledgeonahigherlevelthandatastructures(link
lists,binarytrees,etc)
Framework:
Amoderatelylargesetofclassesthatcollaboratetocarryoutasetof
responsibilitiesinanapplicationdomain.
Examples:UserInterfaceBuilder
Providearchitecturalguidanceduringthedesignphase
Provideafoundationforsoftwarecomponentsindustry
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
45
Patternsareusedbymanypeople
ChessMaster:
Openings
Middlegames
Endgames
Writer
TragicallyFlawedHero(Macbeth,
Hamlet)
RomanticNovel
UserManual
SoftwareEngineer
CompositePattern:Acollectionof
objectsneedstobetreatedlikea
singleobject
AdapterPattern(Wrapper):
Interfacetoanexistingsystem
BridgePattern:Interfacetoan
existingsystem,butallowittobe
extensible
Architect
OfficeBuilding
CommercialBuilding
PrivateHome
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
46
Summary
Softwareengineeringisaproblemsolvingactivity
Developingqualitysoftwareforacomplexproblemwithinalimitedtime
whilethingsarechanging
Therearemanywaystodealwithcomplexity
Modeling,decomposition,abstraction,hierarchy
Issuemodels:Showthenegotiationaspects
Systemmodels:Showthetechnicalaspects
Taskmodels:Showtheprojectmanagementaspects
UsePatterns:Reducecomplexityevenfurther
Manywaystododealwithchange
Tailorthesoftwarelifecycletodealwithchangingprojectconditions
Useanonlinearsoftwarelifecycletodealwithchangingrequirementsor
changingtechnology
Provideconfigurationmanagementtodealwithchangingentities
BerndBruegge&AllenH.Dutoit
ObjectOrientedSoftwareEngineering:UsingUML,Patterns,andJava
47