Está en la página 1de 43

UsingUML,Patterns,andJava

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

Implementation phase results in code


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

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

También podría gustarte