Subsystem. Klasser är ett bra sätt att organisera små system. Klasser är för små enheter för att organisera stora system

Relevanta dokument
Systemdesign fortsättningskurs

Design mönster. n n n n n n. Command Active object Template method Strategy Facade Mediator

Databaser - Design och programmering. Databasdesign. Kravspecifikation. Begrepps-modellering. Design processen. ER-modellering

Återanvändning. Två mekanismer. Nedärvning av egenskaper (inheritance) Objekt komposition

Vi har... Diskuterat olika objektorienterade mekanismer. Ha också tagit upp några krav på hur dom här mekanismerna ska användas

Webprogrammering och databaser. Begrepps-modellering. Exempel: universitetsstudier Kravspec. ER-modellen. Exempel: kravspec forts:

Datorövning 2 Fördelningar inom säkerhetsanalys

Databaser - Design och programmering. Programutveckling. Programdesign, databasdesign. Kravspecifikation. ER-modellen. Begrepps-modellering

101. och sista termen 1

Lösningar och kommentarer till uppgifter i 1.1

c n x n, där c 0, c 1, c 2,... är givna (reella eller n=0 c n x n n=0 absolutkonvergent om x < R divergent om x > R n n lim = 1 R.

MARKNADSPLAN Kungälvs kommun

Mönster. n n n n n n n n n n. Singleton Monostate Null object Factory Composite Observer Abstract server Adapter Bridge Proxy

ENDIMENSIONELL ANALYS B1 FÖRELÄSNING VI. Föreläsning VI. Mikael P. Sundqvist

Mönster. n n n n n. Visitor Decorator Extension Object State Taskmaster

Föreläsning G04: Surveymetodik

Egna funktioner. Vad är sin? sin är namnet på en av många inbyggda funktioner i Ada (och den återfinns i paketet Ada.Numerics.Elementary_Functions)

Kontrakt baserad design. Design by contract

Tentamenskrivning, , kl SF1625, Envariabelanalys för CINTE1(IT) och CMIEL1(ME ) (7,5hp)

Vad är det okända som efterfrågas? Vilka data är givna? Vilka är villkoren?

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Borel-Cantellis sats och stora talens lag

b 1 och har för olika värden på den reella konstanten a.

Remiss Remissvar lämnas i kolumnen Tillstyrkes term och Tillstyrkes def(inition) och eventuella synpunkter skrivs i kolumnen Synpunkter.

Fakta om plast i havet

Datorövning 2 Fördelningar inom säkerhetsanalys

Datastrukturer och algoritmer

IAB Sverige Juni 2017

Konsoliderad version av. Styrelsens för ackreditering och teknisk kontroll föreskrifter (STAFS 1993:18) om EEG-märkning av färdigförpackade varor

Allmänna avtalsvillkor för konsument

Hambley avsnitt 12.7 (även 7.3 för den som vill läsa lite mer om grindar)

Universitetet: ER-diagram e-namn

Tentamen i Statistik, STA A10 och STA A13 (9 poäng) 26 mars 2004, klockan

Höftledsdysplasi hos dansk-svensk gårdshund - Exempel på tavlan

Föreläsning 10: Kombinatorik

DEL I. Matematiska Institutionen KTH

Databaser - Design och programmering. Databasdesign. Funktioner. Relationsmodellen. Relationsmodellen. Funktion = avbildning (mappning) Y=X 2

Genomsnittligt sökdjup i binära sökträd

Ekvationen (ekv1) kan beskriva en s.k. stationär tillstånd (steady-state) för en fysikalisk process.

z Teori z Hypotesgenerering z Observation (empirisk test) z Bara sanningen : Inga falska teser z Hela sanningen : Täcker alla sanna teser

(a) om vi kan välja helt fritt? (b) om vi vill ha minst en fisk av varje art? (c) om vi vill ha precis 3 olika arter?

Digital signalbehandling Fönsterfunktioner

S0005M V18, Föreläsning 10

Hambley avsnitt 12.7 (även 7.3 för den som vill läsa lite mer om grindar)

MS-A0409 Grundkurs i diskret matematik I

2. Konfidensintervall för skillnaden mellan två proportioner.

PTKs stadgar. Fastställda vid stämman

Universitetet: ER-diagram e-namn

SveTys. Affärskultur i Tyskland. Vad är det? Och vad ska jag tänka på?

Jag läser kursen på. Halvfart Helfart

Andra ordningens lineära differensekvationer

Anmärkning: I några böcker använder man följande beteckning ]a,b[, [a,b[ och ]a,b] för (a,b), [a,b) och (a,b].

Förfrågan till Klockarens redaktörer

Tentamen i Statistik, STA A13 Deltentamen 2, 5p 20 januari 2007, kl

Stort massflöde Liten volym och vikt Hög verkningsgrad. Utföranden Kolv (7) Skruv (4) Ving (4) Roots (1,5) Radial (2-4) Axial (1,3) Diagonal.

Tentamen i Elektronik, ESS010, del 2 den 14 dec 2009 klockan 14:00 19:00.

Lärarhandledning Att bli kvitt virus och snuva - När Lisa blev av med förkylningen

SANNOLIKHETER. Exempel. ( Tärningskast) Vi har sex möjliga utfall 1, 2, 3, 4, 5 och 6. Därför är utfallsrummet Ω = {1, 2, 3, 4, 5,6}.

Många tror att det räcker

H1009, Introduktionskurs i matematik Armin Halilovic POLYNOM, POLYNOMDIVISION, ALGEBRAISKA EKVATIONER, PARTIALBRÅKSUPPDELNING. vara ett polynom där a

Kontrollskrivning 3 i SF1676, Differentialekvationer med tillämpningar. Tisdag kl 8:15-10

Introduktion till statistik för statsvetare

Statistisk analys. Vilka slutsatser kan dras om populationen med resultatet i stickprovet som grund? Hur säkra uttalande kan göras om resultatet?

Leica Lino. Noggranna, självavvägande punkt- och linjelasers

Tentamen i Statistik, STA A13 Deltentamen 2, 5p 5 juni 2004, kl

UTVECKLINGSTRAPPA BOXARE VÄRDEGRUND DIPLOMBOXNING

Exempel. En klass för att inkapsla funktionen hos ett tangentbord. Nu kan många objekt skapas av klassen

Linjär Algebra (lp 1, 2016) Lösningar till skrivuppgiften Julia Brandes

Uppgifter 3: Talföljder och induktionsbevis

Räkning med potensserier

Tentamen i Statistik STG A01 (12 hp) 5 mars 2010, kl

Applikationen kan endast användas av enskilda användare med förtroenderapportering.

Ca m 3 = ton. Masshantering Sven Brodin. Dessa mängder ska Stockholms Stad transportera varje månad.

Föreläsning F3 Patrik Eriksson 2000

Tentamen i matematisk statistik, Statistisk Kvalitetsstyrning, MSN320/TMS070 Lördag , klockan Lärare: Jan Rohlén

1. Ange myndighet och kontaktperson

. Mängden av alla möjliga tillstånd E k kallas tillståndsrummet.

Kontextfri grammatik (CFG)

Jag läser kursen på. Halvfart Helfart

1. Hur gammalt är ditt barn?

vara ett polynom där a 0, då kallas n för polynomets grad och ibland betecknas n grad( P(

LÖSNINGAR TILL. Räkningar: (z i z) 2 = , Δ = z = 1 n. n 1. Konfidensintervall:

Bilaga 1 Formelsamling

KOM IHÅG ATT NOTERA DITT TENTAMENSNUMMER NEDAN OCH TA MED DIG TALONGEN INNAN DU LÄMNAR IN TENTAN!!

Z-Testet. Idè. Repetition normalfördelning. rdelning. Testvariabel z

NEWTON-RAPHSONS METOD (en metod för numerisk lösning av ekvationer)

Föreläsning G70 Statistik A

Lycka till! I(X i t) 1 om A 0 annars I(A) =

================================================

Armin Halilovic: EXTRA ÖVNINGAR

INSTALLATIONSMANUAL COBRA 8800/8900 CAN

1. Test av anpassning.

Bertrands postulat. Kjell Elfström

Duo HOME Duo OFFICE. Programmerings manual SE

Utlandskyrkans krisberedskap

Handbok i materialstyrning - Del F Prognostisering

Avtalet End user software licence agreement skall gälla, och finns att läsa på VAIO Info Centre.

Induktion LCB Rekursion och induktion; enkla fall. Ersätter Grimaldi 4.1

Örserumsviken. Förorenade områden Årsredovisning. Ansvar för sanering av förorenade områden. Årsredovisningslagen och god redovisningssed

Sannolikheten. met. A 3 = {2, 4, 6 }, 1 av 11

Transkript:

Desig av subsystem

Subsystem Klasser är ett bra sätt att orgaisera små system Klasser är för små eheter för att orgaisera stora system Större eheter behövs för orgaiserige Subsystem Sex priciper diskuteras Tre beskriver kohesio hos subsystem Hjälper till att allokera klasser till subsystem De tre sista beskriver kopplig mella subsystem Beskriver hur subsystem ska relatera till varadra

Subsystem i Java I Java - package E klass C sätts till ett subsystem sub med, package sub; Sätts i börja av file C.java Ma ka aväda e klass C i paket sub geom att Referera till sub.c Referera till C, me först importera klasse sub.c, import sub.c; Referera till C, me först importera alla klasser i sub, import sub.*; Subsystem ka vara hierarkiska Subsystem iaför subsystem package deklaratioera måste motsvara orgaiserige av filer i filsystemet

Desig med subsystem I UML ka subsystem (packages) avädas för att gruppera klasser Med hjälp av subsystem ka ma ka aalysera systemet på e högre abstraktiosivå De ka också hjälpa till att hatera utvecklig och distributio av programmet Målet är att partitioera klassera i systemet eligt ågot kriterium och seda allokera dessa partitioer till paket

Desig med subsystem Klasser beror av varadra Beroede korsar ofta subsystem gräser Subsystem beror därför på varadra Dessa beroede beskriver högivå strukture på applikatioe Följade frågor fis Vilka priciper fis för allokerig av klasser till subsystem? Vilka desig priciper fis för beroede mella subsystem? Ska subsystem desigas före klasser (eller tvärtom)? När subsysteme har skapats, hur ska de avädas?

The reuse-release equivalece priciple (REP) The graule of reuse is the graule of release E ehet som ma återaväder är också e ehet som ma publicerar Klasser ofta oödigt små eheter för återavädig Flera klasser hör ofta ihop Återaväd subsystem Allt som återaväds måste också publiceras och spåras Olika versioer måste hateras Återavädig edast möjlig, om det fis garatier om stöd, uderhåll, meddelade om uppdaterig osv.

The reuse-release equivalece priciple (REP) Ger e pricip för att allokera klasser till subsystem Återavädbarhet baserar sej på subsystem Återavädbara subsystem måste iehålla återavädbara klasser För att få återavädbar kod måste ma ha delar som är lätta att aväda Om ett subsystem är ämat för återavädig så ska det ite iehålla klasser som ite är återavädbara

The commo-reuse priciple (CRP) The classes i a package are reused together. If you reuse oe of the classes i the package, you reuse them all. Klassera i ett subsystem återaväds tillsammas. Om e applikatio återaväder e klass i ett subsystem, återaväds alla klasser i subsystemet Klasser som återaväds tillsammas ska placeras i samma subsystem Klasser som ofta har stark kopplig mella sej Om kod ädras i ett subsystem kommer edast de som verklige behöver fuktioalitete att påverkas Aars påverkar det också avädare som aväder paketet me ite ödvädigtvis fuktioalitete som ädrats

The commo-reuse priciple (CRP) Ger också e pricip är ma ite ska sätta klasser i samma subsystem Exempel: om e applikatio bara aväder e klass ur ett subsystem Applikatioe beror alltså på subsystemet Applikatioe måste valideras (och möjlig omkompilers och avädaras istallatioer uppdateras) på ytt om subsystemet modifieras, också om applikatioe ite aväder klasse.

The commo-reuse priciple (CRP) Ofta har subsystemet e fysisk represetatio JAR fil för java DLL eller.so fil för kompilerade språk (C/C++) Uppdaterig av subsystemet skapar e uppdaterig av JAR, DLL, so-file. Måste distribueras till avädare Om ett subsystem iehåller klasser med hög kohesio miskar ma problem med uppdaterigar Uppdaterigar görs då det är ödvädigt

The commo-closure priciple (CCP) The classes i the package should be closed together agaist the same kid of chages. A chage that affects the package affects all the classes i that package ad o other package Klassera i ett subsystem ska vara sluta för samma typ av ädrigar. E ädrig som påverkar ett subsystem påverkar alla klasser i subsystemet och iga adra subsystem Ett subsystem ska ite ha flera orsaker för att modifieras på grud av förädrade avädarkrav Ofta är uderhållbarhet viktigare ä återavädbarhet Ma vill göra ädrigar på bara ett ställe

The commo-closure priciple (CCP) Om två klasser hör ihop fysiskt eller koceptuellt så att dom ataglige kommer att bli modifierade av samma orsak så hör dom i samma subsystem Pricipe är ära besläktad med Ope-Closed Priciple (OCP) 100% slutehet är ite möjlig Måste välja oga vilke typ av modifikatioer som subsystemet (klasse) är slute för

Priciper för koppligar mella subsystem De tre följade pricipera behadlar koppligar (beroede) mella subsystem Beroede mella subsystem Två fall: Avädig eller arv mella två klasser i olika subsystem X Y X Y A (from X) B (from Y) C (from X) D (f rom Y)

The acyclic-depedecy priciple (ADP) Allow o cycles i the package-depedecy graph. Tillåt iga cykler i subsystemes beroedegraf Problem: Flera utvecklare jobbar med samma system Det blir lätt att modifikatioer och ya fuktioer som sätts till av olika utvecklare är ikompatibla med varadra Mycket tid går åt att itegrera bidrag frå olika persoer Midre tid att sätta till y fuktioalitet

The acyclic-depedecy priciple (ADP) Lösig: dela upp utvecklige i idividuella subsystem Subsysteme utvecklas idividuellt När e versio är klar för avädig publiceras de till adra utvecklare Det ger e stabil versio att jobba mot Utvecklig av subsystemet fortsätter efter seda med e y versio Adra utvecklare ka aväda vilke versio av subsystemet som de öskar Itegrerig av y fuktioalitet går smidigt Det här fugerar bara om det ite fis cykler i subsystemes beroede graf

ADP exempel Beroede mella subsysteme bildar e a-cyklisk graf MyApplicatio MessageW idow TaskW idow MyTasks Database Tasks MyDialogs Widows

ADP exempel Nu e graf med cykliskt beroede MyApplicatio MessageWidow TaskW idow MyTasks Dat abase Tas ks MyDialogs Widows

ADP problem med cykler Ett subsystem i systemet blir lätt beroede av måga adra subsystem Här blir subsystemet MyDialogs beroede av alla subsystem Validerig kräver att vi testar att ett subsystem fugerar då ågot av subsysteme det beror av uppdateras Cykler ökar beroede betydligt Ökade beroede - svårare att göra tester Kompilerigs tider ökar med ökade beroede Speciellt C++ Me också java kompilerig ka få problem

ADP Hur ta bort cykliska beroede? Tillämpa Depedecy Iversio Priciple (DIP) och Abstrakt server desig möstret X (from MyDi alo gs) Y (from M yapplicatio) X (from MyDialogs) XServer (from MyDialogs) Y (from MyApplicatio) MyDialogs MyApplicatio MyDialogs MyApplicatio

ADP Hur ta bort cykliska beroede? Skapa ett ytt subsystem som både MyDialogs och MyApplicatio beror av. Flytta klassera som båda beror av dit.

Idetifierig av subsystem - top-dow desig Ett sätt att hitta subsystem strukture är att dela upp systemet eligt högivå fuktio (top-dow) Logiskt sätt att dela upp systemet i subsystem frå börja Verkar ite riktigt stämma överes med beroedea i grafe tidigare Subsystem har ofta lite att göra med fuktio Beskriver hur systemet ka kompileras/byggas (buildability) Subsystemet beskriver e build map Aväd REP och CCP för att gruppera klasser Aväd CRP för återavädbarhet Aväd ADP för att hatera beroede

The stable-depedecies priciples (SDP) Deped i the directio of stability Beroede pekar mot stabilitet Vissa paket är desigade för att kua modifieras Ska ite bero av subsystem som är svåra att modifiera Måga beroede på ett subsystem som är lätt att modifiera i sej själv ka göra att subsystemet ite ka modifieras uta att störa adra subsystem Subsystem som ska vara lätta att modifiera ska ite bero på subsystem som är svårare att modifiera

Stabilitet Subsystem X asvarig för tre subsystem X är oberoede för X har iga extera orsaker att modifieras X är stabilt (stable) X

Istabilitet Y är ett istabilt subsystem Beror av tre adra subsystem tre orsaker att modifieras Ite asvarigt för ågot aat subsystem Y

Stabilitets mått Stabilitet ka mätas Räka atalet beroede mella klasser iaför och utaför subsystemet (C a ) Affaret coupligs Atalet klasser utaför subsystemet som beror av klasser i subsystemet (C e ) Efferet coupligs Atalet klasser i subsystemet som beror av klasser utaför subsystemet (I) istabilitet I = C a Ce + C e I=1 idikerar istabilt subsystem, och I=0 idikerar stabilt subsystem

SDP Tumregel Stabilitete ökar då ma går eråt i subsystem hierarki Stabila subsystem behöver ite vara lätta att modifiera Måga beroede på dem svårt att modifiera i alla fall Vissa delar av programmet borde ite ädra ofta Högivå arkitektur Desigbeslut Dessa typer av klasser borde vara i stabila subsystem Aväd OCP för att få tillräcklig flexibilitet i systemet

The stable abstractios priciple (SAP) A package should be as abstract as it is stable Ett subsystem ska vara så abstrakt som det är stabilt Relatio mella abstrakthet och stabilitet Ett stabilt subsystem ska också vara abstrakt Stabilitete förhidrar ite att subsystemet utvidgas Ett istabilt subsystem ska ite vara abstrakt - ekelt att modifiera kode ädå DIP ka avädas för att ädra riktig på beroede SAP och SDP för subsystem motsvara DIP för klasser

Exempel: java.soud.sampled Hög abstrakthet Består av grässitt Hög stabilitet Appli katio Aväds av applikatioer Grässitte implemeteras av olika audiosystem Flexibelt system Ekelt att lägga till y fuktioalitet Ekelt att aväda java.sou d.sampl ed Ba cked1 Backed2

Mått på abstrakthet Ma mäter förhålladet mella abstrakta klasser (och grässitt) och valiga klasser N c Atalet klasser i subsystemet N a Atalet abstrakta klasser i subsystemet. E abstrakt klass är e klass ma ite ka skapa istaser av. A - Abstrakthet A = N N a c

Abstrakthet vs Istabilitet Ma ka rita upp abstrakthet och istabilitet (0,1) (1,1) Oavädbar A The mai sequece Svår att modifiera I (1,0)

Abstrakthet vs. Istabilitet Ma vill valige att subsystem ska vara ära lije the mai sequece i diagrammet. Ma ka defiiera ett mått på avstådet Normaliserat avståd D Ger ett värde i itervallet [0,1] D' = A + + I 1 Desige ka utvärderas eligt det här kriteriet Subsystem med stort värde på D ska udersökas ärmare Är ite ett absolut mått på e desigs godhet