Kapitel 21: Softwarearkitektur designprincipper Miriam Tang Jacob Jensen Lars Christensen Jacob Atzen Onsdag 9/3
Dagens program Definitioner Analyseværktøjer Designprocessen Raffinering Afrunding
Design af Softwarekomponentinfrastrukturer Infrastruktur: Den grundlæggende struktur og services i et system Softwarekomponentinfrastruktur: En struktur og en samling komponenter Mål: At designe en infrastruktur, der understøtter en mængde af applikationer
Softwarearkitektur Softwarearkitekturen for et program er programmets struktur, dette omfatter softwarekomponenter, de eksternt synlige egenskaber ved komponenterne og sammenhængen imellem disse. En komponent er en logisk sammenhængende samling funktionalitet Softwarearkitektur: En specifik softwarekomponentinfrastruktur med tilknyttede designregler
Funktionelle krav Der skal være både abstrakte og konkrete krav Abstrakte krav identificeres og kategoriseres ud fra den basale anvendelse af komponentinfrastrukturen Use cases konkretiserer, verificerer og afdækker yderligere krav Eksempel: Abstrakt: Der skal være en af piloten regulerbar motor i en fly- simulator Use case afdækker at der mangler en reguleringsmetode for piloten Konkret: Lav regulator metode
Kvalitets krav Skal ligesom funktionelle krav eksistere i abstrakt og konkret form Må ikke blive for abstrakte Eksempel: For abstrakt: Systemet skal være sikkert Tilpas abstrakt: Systemet skal være sikkert mod aflytning Konkret: Det skal ikke være muligt at aflytte bestemt kommunikationskanal Funktionelle krav må ikke blive for konkrete Kvalitetskrav må ikke blive for abstrakte.
Arkitektoniske Drivers Vigtigste krav fungerer som "Drivers" for design Driver identifikation: Funktionelle, kvalitets og forretningskrav Formålet med systemet Drivers er abstrakte (ikke knyttet til specifik funktionalitet) Et design skal kunne tilfredsstille drivers Eksempel: Formålet med en fly- simulator er at træne piloter Dette kræver at simulatoren kan lave real- tids simulationer
Opdeling af komponent infrastruktur Delmængder af funktionalitet skal opdeles i komponenter der interagerer Hjælp: Arkitektoniske stilarter Arkitektoniske drivers bestemmer valget af stilart Eksempel: Real- tids simulation / Bus stilarten Stilarter er abstrakte (beskriver ikke specifik funktionalitet) Stilarter er udgangspunkt for den konkrete opdeling af komponent infrastrukturen
Grundlæggende designproces Quality Requirements Architectural Drivers Basic Style Tailored Style Software Architecture Functional Requirements Functional Blocks
Udbygget designproces Quality Requirements Architectural Drivers Basic Style Tailored Style Software Architecture Shared Services Functional Requirements Functional Blocks Final Application Other Functions Deployed Components
Identifikation af komponentinfrastruktur og komponenter Grundmængden af applikationer skal være designet delvist Interaktion mellem komponenter og delte services skal designes Iterativ designproces Definer delte services Itererer gennem opdelingerne af funktionalitet og raffinerer softwarekomponentinfrastrukturen og komponenterne Softwarekomponentinfrastruktur og komponenter designes sideløbende
Softwaretemplate Beskriver fællestræk Designelement: Del af komponentinfrastruktur eller komponent Beskriver interaktion mellem komponenter og infrastruktur Identificerer placering af ansvar Templates er typebaserede Forfines igennem nedarvning
Softwaretemplate Design af infrastruktur: Alle komponenter og deres ansvar skal være identificeret Iterativ proces, hvori identificeret ansvar løbende fordeles til elementer i templaten Under hvert trin af forfiningsproces skal hvert software element undersøges igen Analyser kvalitetsegenskabers krav til hele systemet Slutresultat: et antal softwaretemplates der beskriver de interfaces der bruges i interaktion mellem komponentinfrastruktur og komponenter
Perspektiver Perspektiver gør det muligt at besvare spørgsmål om systemer udviklet omkring en bestemt komponentinfrastruktur Er deadlocks mulige? Kan performancemål overholdes? Kan ønskede ændringer foretages?
Perspektiver Kruchtens perspektiver: Logisk Samtidighed Implementation Idriftsættelse
Afrunding Identificér krav til funktionalitet og kvalitet eksplicit både på højt niveau og konkret Identificer arkitektur drivers Vælg en arkitekturstil, der bedst muligt tilgodeser arkitektur driverne Opdel funktionalitet på en måde, der understøtter kvalitetskravene Brug samtidigheds- og anvendelsessynsvinkler til at identificere funktionalitet, der ikke tidligere er overvejet Verificer vha. konkrete og funktionelle krav Identificer den passende komponentmodel Iterer mhp. at raffinere designelementerne