Upload
gemma-ware
View
22
Download
7
Tags:
Embed Size (px)
DESCRIPTION
Lektion 8. Arkitektur, lagdeling og pakker. Arkitektoniske view’s i UP (afspejles bl.a. Rational Rose’s mappestruktur). Logical view : Lagdeling/pakker - analyse. Arkitektonisk analyse. Hvilke pakker ? Se fx på tætte strukturer i analysemodellen (arv og aggregeringer) - PowerPoint PPT Presentation
Citation preview
Lektion 8Lektion 8Arkitektur, lagdeling og pakker
Arkitektoniske view’s i UPArkitektoniske view’s i UP(afspejles bl.a. Rational Rose’s (afspejles bl.a. Rational Rose’s mappestruktur)mappestruktur)
19-04-23 2Softwarekonstruktion 8
Logical view: Logical view: Lagdeling/pakker - analyseLagdeling/pakker - analyse
«komponent»Lag i+1
• • • •«komponent»
Deli,n
«komponent»Lag i
«komponent»Deli,2
«komponent»Deli,1
• • • •«komponent»
Deli-1,m
«komponent»Lag i-1
«komponent»Deli-1,2
«komponent»Deli-1,1
Lag: beskriver enkomponents ansvar vedhvilke operation, dertilbydes opad og hvilkeder udnyttes nedefra
Del: Ingen væsentliginteraktion med andre delei samme lag
Lukket arkitektur: kunanvende operationer pådet umiddelbart under-liggende lag
Åben arkitektur: anvendealle underliggende lag
19-04-23 3Softwarekonstruktion 8
Arkitektonisk analyseArkitektonisk analyse
Hvilke pakker ?
Se fx på tætte strukturer i analysemodellen (arv og aggregeringer)
Associering er den løseste forbindelse
Se derefter på use cases !
19-04-23 4Softwarekonstruktion 8
Eks. 1: Lagdelt arkitektur Eks. 1: Lagdelt arkitektur Use case realisering indenfor en
lagdelt arkitektur med grænsefladelag, managerlag, modellag og DBlag:◦ Grænsefladeklasser der håndterer interaktionen
mellem aktøren og grænsefladen◦ Managerklasser der får ansvaret for at danne
”limen” mellem grænseflade- og domæneklasserne (medtages i et selvstændigt lag – eller i modellaget). Her fra styres use case afviklingen.
◦ Modelklasser der findes ud fra domæne modellen af problemområdet. De modelklasser der understøtter use cases medtages
◦ DBklasser der indpakker sql’en til databasen
19-04-23 5Softwarekonstruktion 8
Afprøvning af arkitekturAfprøvning af arkitekturLav interaktionsdiagrammet til
den arkitekturbærende use casePlacer objekterne i de lag de
hører til (der skal være objekter i alle lag)
Udarbejd kodenAfprøv! (baseline for elaboration)
19-04-23 6Softwarekonstruktion 8
Eks. 2: Arkitektur med lag Eks. 2: Arkitektur med lag og pakkerog pakker
Log4J
Technical Services
Domain
UI
Persistence
DBFacade
Sales
Register Sale
Swing
ProcessSaleFrame
Jess SOAP
for applications with only a few system operations, perhaps only one object acts as the facade into the layer
The Technical Services layer typically exposes many interfaces--at least one per subsystem
19-04-23 7Softwarekonstruktion 8
Eks 2 fortsat: Interaktion Eks 2 fortsat: Interaktion mellem lag/pakker mellem lag/pakker
: Domain::Sales::
Register
:Cashier
: UI::Swing::Process
SaleJFrame
enterItem(id, qty)
1: Tech-
Services::Persistence::Persistence-
Facade
desc = getProductDesc(id)
x = isInvalid(lineItem, sale)
desc = getObject(...,id)
1: Domain::POSRule-Engine::
POSRule-EngineFacade
enterItem(id, qty)
s : Domain::Sales::Sale
: Domain::Products::ProductCatalog
makeLineItem(desc, qty)
«subsystem»: Tech-
Services::Jess
someJessCalls(lineItem, sale)
Points of crossing interesting boundaries or layers. These are especially noteworthy for people who need to understand the system, and thus are highlighted in this diagram. This diagram supports communicating the logical view of the architecture (a UP term) because it emphasizes architecturally significant information.
UML notation: Note that a subsytem can be modeled as an object in the UML.
This is useful in this case where I don't know or want to describe the details of how the Jess rule engine works, but just want to show collaboration with it.
UML notation: UML path name to indicate packaging
onPropertyEvent(s, "sale.total", total)
19-04-23 8Softwarekonstruktion 8
Design af subsystemer og Design af subsystemer og interfacesinterfacesI design bliver
◦ Analyse pakker til design subsystemer◦ Analyse klasser til designklasser og
interfaces (jvf forrige lektion)Design af subsystemer handler om at
dele systemet op i så uafhængige dele som muligt◦ Der tages udgangspunkt i analysens
pakker, som er designet ud fra principper om lav kobling og høj binding og
◦ Som suppleres med interfaces, der er en separat specifikation (kontrakt), der adskiller funktionalitet fra dets implementering
19-04-23 9Softwarekonstruktion 8
Facade patternFacade pattern
Hvordan opfyldes krav om et fælles ens interface til helt forskelligartede implementeringer?
Ved en ”front-end” eller facade der pakker subsystemet ind. Facade objektet repræsenterer et ens interface og er ansvarlig for samarbejdet til subsystemets komponenter
19-04-23 10Softwarekonstruktion 8
Anvendelse af facadeAnvendelse af facadeFacade mønstret simplificerer
tilgangen til en samling af relaterede objekter ved at lave et objekt som alle objekter udefra bruger til at kommunikere med samlingen af objekter
Vil typisk kunne anvendes mellem de forskellige lag i den lagdelte arkitektur
Managerlaget er fx en facade, hvis acces sker gennem et objekt fx et ManagerInterface
19-04-23 11Softwarekonstruktion 8
Eks. 3. Interfaces og Eks. 3. Interfaces og subsystemer - Designsubsystemer - Design
19-04-23 12Softwarekonstruktion 8
TilstandsdiagrammerTilstandsdiagrammer
TilstandsdiagrammerTilstandsdiagrammer Tilstandsdiagrammer kan bl.a. bruges til modellere
dynamiske aspekter i et system◦ Er et objekts historie, livsforløb eller adfærdsmønster –
eller systemtilstande i en use case. Tilstand (state):
◦ En tilstand eller situation i et objekts livsforløb, hvor visse betingelser er opfyldt, udfører noget aktivitet eller der ventes på nogle hændelser
Hændelse (event):◦ En øjeblikkelig begivenhed i tid og rum, som
involverer en/flere objekter Tilstandsovergang (transition):
◦ Bevægelsen fra en tilstand til en anden som svar på en hændelse
19-04-23 14Softwarekonstruktion 8
Basis notation (State Basis notation (State diagrams i Rose)diagrams i Rose)
Tilstand1
Tilstand2
hændelse( attributter )[ betingelse ]
Start
Tilstand
Slut
Tilstandsovergang
Hændelse
Vent
Klar
Reservation registreres
Reservation afsluttes( dato )
Reservation bekræftes( dato )
[ Svarfrist overskrides ]
Eksempel Reservation
19-04-23 15Softwarekonstruktion 8
Notation udvidet med Notation udvidet med handlinger og aktiviteterhandlinger og aktiviteter
Tilstand
Hændelse
19-04-23 16Softwarekonstruktion 8
SamlingspunkterSamlingspunkter
19-04-23 17Softwarekonstruktion 8
BeslutningspunkterBeslutningspunkter
19-04-23 18Softwarekonstruktion 8
Call’sCall’s
19-04-23 19Softwarekonstruktion 8
SignalerSignaler
19-04-23 20Softwarekonstruktion 8
Anvendelse af Anvendelse af tilstandsdiagrammer i tilstandsdiagrammer i analysenanalysen Tilstandsdiagrammer over objekters livsforløb kan
bruges til vurdering af:◦ Hvad skal der skal gemmes om livsforløbet?◦ Hvordan opdateres?
Livsforløb kan gemmes som kombinationer af:◦ Strukturer◦ Klasser◦ Attributter, eksempelvis statusattribut
Livsforløb opdateres gemmen use cases For hver tilstand i tilstandsdiagrammet stilles følgende
spørgsmål:◦ Skal tilstandes gemmes? ◦ Kan tilstandene registreres i domænemodellen?◦ Er der defineret en use case til opdatering af tilstanden?
Især dynamiske klasser er interessante, fx ”aftale” klasser!!!
19-04-23 21Softwarekonstruktion 8
Øvelse 1: Lav Øvelse 1: Lav tilstandsdiagrammer for Nør tilstandsdiagrammer for Nør Halne bibliotekHalne bibliotek
Følgende hændelser er fundet vedr. objekter i klassen: Reservation◦ Reserveret (dato) ◦ Annulleret (dato)◦ Besked sendt (dato,
frist)◦ Afhentningsfrist
overskredet (dato)◦ Udlånt (dato)
Følgende hændelser er fundet vedr. objekter i klassen: Udlån◦ Udlånt (dato, frist)◦ Afleveret (dato)◦ Afleveringsfrist
overskredet (dato)◦ Rykker sendt (dato,
frist)◦ Afleveret (dato, bøde)◦ Erstatning(dato, beløb)
19-04-23 22Softwarekonstruktion 8
Øvelse 2: Hvad skal Øvelse 2: Hvad skal registereres? Hvordan? (registereres? Hvordan? (se se domænemodellen næste slide)domænemodellen næste slide)
Tilstandsdiagram for Reservation
Genstand registreret
Klar
Reservation registreres
Reservation bekræftes( dato, frist )
[ Svarfrist overskrides ]
[ Reservationsfrist overskrides ]
Reservation annulleres( dato )
Genstand afhentet
Besked sendes( dato, frist )
Genstand udlånt
Genstand udlånes( dato, frist )
Genstand hjemkaldes
Genstand afleveres( dato )
Afleveringsfrist overskrides( dato )
Rykker udskrives( dato, frist )
Genstand aflevers( dato, bøde )
Erstatning opkræves( dato, beløb )
Tilstandsdiagram for Udlån
19-04-23 23Softwarekonstruktion 8
1. version af domæne 1. version af domæne modelmodel
BogCD
genre
FremmedBog
udlånsBibliotekreturDato
Låner
navnadressepostnummerbynavntelefonnremailbrugerIdkodeOrd
Reservation
reservationsDato
0..*
1
0..*
1
Udlån
udlånsDatoafleveringsDato
0..*
1
0..*
1
Genstand
titeludgivelsesÅrkunstner/forfatterforlag/selskabisbnNr/idNr
0..* 10..* 1
Eksemplar
eksemplarNrreolPlads10..* 10..*
0..*
11
0..*
19-04-23 24Softwarekonstruktion 8
Løsning: Justeret Løsning: Justeret domænemodeldomænemodel
0..*
BogCD
genre
FremmedBog
udlånsBibliotekreturDato
Låner
navnadressepostnummerbynavntelefonnremailbrugerIdkodeOrd
Reservation
reservationsDatobeskedDatoafhentDatostatus
0..*
1
0..*
1
Genstand
titeludgivelsesÅrkunstner/forfatterforlag/selskabisbnNr/idNr
0..* 10..* 1
Eksemplar
eksemplarNrreolPlads
0..*
11
0..*Udlån
udlånsDatoafleveringsDatostatus
0..*
1
0..*
1
10..* 10..*
Hjemkaldelse
nrdato
0..*
11
Værdimængde: reserveret, hjemkommet,
afhentet, annulleret
Værdimængde:udlånt, hjemkaldt,
afleveret
19-04-23 25Softwarekonstruktion 8
Opgave 1: Arkitektur for Opgave 1: Arkitektur for ”Camplet””Camplet”Kom med forslag til en
overordnet arkitekturOvervej opdeling af manager lag
og model lag i logiske pakker Overvej interfaces og
subsystemer
19-04-23 26Softwarekonstruktion 8
Opgave 2: Opgave 2: Tilstandsdiagrammer for Tilstandsdiagrammer for Camplet”Camplet”Overvej vigtige hændelser på jeres
aftaleklasse(r) Lav et tilstandsdiagram for
aftaleklassen(erne)For hver tilstand i tilstandsdiagrammet
stilles følgende spørgsmål:◦ Skal tilstandes gemmes? ◦ Kan tilstandene registreres i
domænemodellen?◦ Er der defineret en use case til opdatering af
tilstanden? Juster jeres domænemodel og use case
diagram
19-04-23 27Softwarekonstruktion 8
KvalitetssikringKvalitetssikringTestReview
Om testOm testTest udføres altid i henhold til
specifikationer.En test kan aldrig påvise korrekthed -
kun tilstedeværelse af fejl!En succesfuld test finder fejl!!!Udvikleren skal ikke teste sig selv.Et system er færdigtestet, når
hyppigheden af fejl er reduceret til et forretningsmæssigt acceptabelt niveau!!
19-04-23 29Softwarekonstruktion 8
TestmodelTestmodel
En samling af◦test-cases◦test-procedurer◦eksekverbare komponenter, som
tester
Omfatter typer af test:◦ modultest eller unit-test
(klasseniveau)◦integrationstest◦systemtest
19-04-23 30Softwarekonstruktion 8
Modultest (unit-test)Modultest (unit-test)Alle en klasses metoder skal
testesBlack-box test ud fra
specifikation (pre- og post-betingelser)
White-box test ud fra kendskab til intern struktur:◦test grænsetilfælde og
normaltilfælde
19-04-23 31Softwarekonstruktion 8
Integrations- og Integrations- og systemtestsystemtestIntegrationstest skal finde fejl i
måden moduler spiller sammen på og udføres efter hvert build. (Design by Contract er vigtigt.)
Systemtest skal finde fejl i systemet som helhed og udføres i slutningen af hvert gennemløb af implementations processen
19-04-23 32Softwarekonstruktion 8
Test casesTest casesTest cases findes ud fra use case
modellenHver test case tester et
scenarium for en use caseEn test case skal specificere
input, forventet output og evt. betingelser for testen
Husk også belastningstest!!!
19-04-23 33Softwarekonstruktion 8
Test procedurer og Test procedurer og komponenterkomponenterTest procedurer specificerer,
hvordan en test gennemføres◦kan være manuelle◦eller - bedre - automatiske
Test komponenter - eller drivere◦automatisering af test procedurer
Tilstræb design af test procedurer og -komponenter, så der er så meget genbrug som muligt
19-04-23 34Softwarekonstruktion 8
Nyt syn på test/XP - Nyt syn på test/XP - eXtreme eXtreme Programming (Kent Beck)Programming (Kent Beck)unit-test skrives før unit i en rytme,
der siger:◦ ”skriv en test - skriv unitten - test den - skriv den
næste test...”dette har angiveligt følgende fordele:
◦ unit-test bliver faktisk udført!◦ det giver en programmør tilfredshed at skrive en
test, skrive noget kode og så se sin kode bestå testen
◦ klassedesign bliver mere klart: man tvinges til at være helt præcis vedr. interface (metode-signaturer, specifikationer mv.)
◦ programverifikation bliver bedre dokumenteret ◦ større lyst til at ændre eksisterende kode
(refactoring), da test-driverne er klare og lige til at køre.
19-04-23 35Softwarekonstruktion 8