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

Relevanta dokument
Systemdesign fortsättningskurs

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

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

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

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

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

Kontrakt baserad design. Design by contract

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

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

Datastrukturer och algoritmer

Tentamen 19 mars, 8:00 12:00, Q22, Q26

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].

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)

REGULJÄRA SPRÅK (8p + 6p) 1. DFA och reguljära uttryck (6 p) Problem. För följande NFA över alfabetet {0,1}:

Universitetet: ER-diagram e-namn

Datorövning 2 Fördelningar inom säkerhetsanalys

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

MS-A0409 Grundkurs i diskret matematik Sammanfattning, del I

Befolkning per födelseland Reviderad metod vid framskrivningar. Version: 2

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

Analys av algoritmer. Beräkningsbar/hanterbar. Stora Ordo. O(definition) Datastrukturer och algoritmer. Varför analysera algoritmer?

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

Extrem prestanda Nu utan BPA UPPLEV DEN FANTASTISKA STYRKAN HOS VÅRA BPA-FRIA PRODUKTER

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

Föreläsning 10: Kombinatorik

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

Universitetet: ER-diagram e-namn

Uppgifter 3: Talföljder och induktionsbevis

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

Föreläsning G04: Surveymetodik

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

1. Hur gammalt är ditt barn?

1. Hur gammalt är ditt barn?

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

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

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

Operativsystem - Baklås

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

Lösningar och kommentarer till uppgifter i 1.1

DEL I. Matematiska Institutionen KTH

Datorövning 2 Fördelningar inom säkerhetsanalys

Ny lagstiftning från 1 januari 2011

Jag läser kursen på. Halvfart Helfart

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

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}.

Räkning med potensserier

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

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

x 1 x 2 x 3 x 4 x 5 x 6 HL Z x x x

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

Tommy Färnqvist, IDA, Linköpings universitet

Fakta om plast i havet

1. Ange myndighet och kontaktperson

Minsta kvadrat-metoden, MK. Maximum likelihood-metoden, ML. Medelfel. E(X i ) = µ i (θ) MK-skattningen av θ fås genom att minimera

Parsningsalgoritmer. Parsningsalgoritmer: inledning. OH-serie 1: introduktion. Parsningalgoritmer I. Algoritmer. Vad är parsning? Vad är en algoritm?

Förfrågan till Klockarens redaktörer

PTKs stadgar. Fastställda vid stämman

Kollektivt bindande styre på global nivå

Solgläntans föräldrakooperativ Kvalitet och måluppfyllelse läsåret 2012/13

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

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

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

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.

MS-A0409 Grundkurs i diskret matematik I

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

Borel-Cantellis sats och stora talens lag

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

INSTALLATIONSMANUAL COBRA 8800/8900 CAN

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

Föreläsningar 7,8 sept 24, sept 26 v 39). delvis DD Chapter 6.

AMF. I princip är det bara möjligt att flytta privat sparande och sparande där avtalet tecknats efter den 2 februari i fjol.

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

Tentamen 9 juni 2016, 8:00 12:00, Q21

Plattformshissar från Cibes Lift för alla byggnader

Mätbar vetskap om nuläget och tydliga målbilder om framtiden. Genomför en INDICATOR självvärdering och nulägesanalys inom tre veckor

IAB Sverige Juni 2017

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

(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?

Repetition: Enkel sampling. Systemplanering VT11. Repetition: Enkel sampling. Repetition: Enkel sampling

Funktionsteori Datorlaboration 1

101. och sista termen 1

Handbok i materialstyrning - Del F Prognostisering

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

Identfiera orsaker och ge förslag på åtgärder och resultatmått Åtgärdstyp Ska risken åtgärdas genom att orsaken: Bakomliggande orsaker

För rörformiga instrument, slangar och liknande krävs speciella insatser för genomspolning för att få ett fullgott resultat.

Digital signalbehandling Alternativa sätt att se på faltning

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

RESTARITMETIKER. Avsnitt 4. När man adderar eller multiplicerar två tal som t ex

1. Hur gammalt är ditt barn?

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

7 Sjunde lektionen. 7.1 Digitala filter

KONSEKVENSANALYS 1 (5) INDIVID ALT ORGANISATION (markera vad bedömningen avser)

god stiftelsepraxis

Smärtlindring vid medicinsk abort

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

Grammatik för språkteknologer

Digital signalbehandling Fönsterfunktioner

1. Test av anpassning.

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

Sannolikhetslära. c 2015 Eric Järpe Högskolan i Halmstad

Transkript:

Desig priciper

Vi har... Diskuterat olika objektorieterade mekaismer Nedärvig Delegerig Typ-parametriserig Kotrakt baserad desig Ha också tagit upp ågra krav på hur dom här mekaismera ska avädas Hur ska ma då desiga mjukvara?

Vad är bra desig Är e bra desig Lätt att förstå och implemetera? Uderlättar återavädig, och är lätta att få e överblick över? Lätt att återaväda? Full med desig möster, måga kommetarer? Åtföljs av måga sygga diagram?...

Bra desig Eligt Coad ad Yourdo 1991 A good desig is oe that balaces trade-offs to miimize the total cost of the system over its etire lifetime Och Järvi har att tillägga [Järvi 2005]...ad mitigates developmet ad busiess risks, promotes ew busiess opportuities ad cotributes to future high level reuse Det fis ite e eda korrekt desig. Det fis bara mera och midre avädbara desiger

Desig mål Måga olika mäskor som prioriterar olika saker kommer att ha att göra med systemet uder dess livstid Till exempel Vi vill spara tid och pegar, miska itroduktioe av ya defekter och miska börda för utvecklara Vi desigar då systemet för att miimera effektera av ädrigar Alltså behöver systemet vara löst kopplat Desigar för att hatera all möjlig variatio

Modularitet Mjukvarusystem är för stora för att kua förstås i si helhet Måste delas upp i midre delar E metod som stöder detta behövs Objekt orieterad programmerig Modulär utvecklig eligt Meyer [Meyer 1997]...method is modular, the if it helps desigers produce software systems made of autoomous elemets [modules] coected by coheret, simple structure.

Typisk desig Dela upp systemet i kompoeter Defiiera beroede mella kompoeter (asvarsområde, beroede och kommuikatio) Specificera grässitt Beskriv kompoeteras grässitt Måga defiitioer på kompoet eller modul, måga kriterier för uppdelig

Dekompositio / Modularitet Ett modulärt system är uppdelat i idetifierbara abstraktioer som kallas moduler moduler ska ha hög kohesio och lite kopplig till varadra Moduler ska ha väldefiierade abstrakta grässitt Fördelar med e välgjord modulär desig Lätt att utvidga systemet Återavädbarhet pga. hög kohesio och låg kopplig Uppdelig av asvar Uppdelig av utvecklig parallell utvecklig Haterig av komplexitet Viktigt för e bra desig Meyer ger 5 kriterier, 5 regler och 5 priciper som täcker de viktigaste krave för e modulär desig metod [Meyer 1997] Krave ite specifika för objektorieterig

Fem kriterier: Modular decomposability Metode delar upp problemet i midre problem som också har midre komplexitet Subprobleme är kopplade med e ekel struktur Miimalt och explicit beroede mella olika delproblem Subprobleme ka lösas idividuellt med samma metod Till exempel traditioell top-dow desig

Fem kriterier: Modular composability Metode producerar moduler modulera ka fritt kombieras med varadra för att producera ya system modulera ka fritt avädas äve i omgivigar som de ite var plaerade för modulera bör vara tillräckligt autooma (delar ka återavädas för adra ädamål) Till exempel mjukvarubibliotek

Fem kriterier: Modular uderstadability Metode uppmutrar skapadet av moduler som också mäskor förstår Beskrivige av e modul ka förstås uta beskrivig av adra moduler (eller i värsta fall edast ågra adra ärliggade moduler) Nödvädigt för effektivt uderhålla ett mjukvarusystem Atar att det fis ett gemesamt språk och termiologi, gör systemet lättare att uderhålla

Fem kriterier: Modular cotiuity Metode producerar strukturer av moduler så att e lite ädrig i problemspecifikatioe kräver edast små ädrigar i ågra (ärliggade)moduler Atar delig av asvar. Gör det möjligt att utvidga systemet Exempel 1: Symboliska kostater Exempel 2: Uified access priiciple

Fem kriterier: Modular protectio Om ett oormalt tillståd (fel) uppstår uder exekverig så ska effektera av de staa iaför module (eller i värsta fall hållas iom de ärmaste graara) Fel måste upptäckas och isoleras (hårdvarufel, resursbrister ) Exempel 1: Validerig av iput data vid källa

Fem regler: Direct mappig Varje mjukvarusystem försöker lösa problem frå ågo problemdomä Strukture för implemetatioe av systemet ska vara likade till strukture på modelle som skapats för att modellera problemdomäe Problem och lösig har likade struktur Följer frå: cotiuity ad decomposability

Fem regler: Few iterfaces Varje modul ska kommuicera med så få adra moduler som möjligt Följder av ädrigar och fel propagerar edast geom grässittet Följer frå: cotiuity och protectio Också till e del frå de adra

Fem regler: Small iterfaces Om två moduler kommuicerar så ska dom utbyta så lite iformatio som möjligt Följer frå: Cotiuity och protectio

Fem regler: Explicit iterfaces Om två moduler kommuicerar med varadra så måste detta vara klart syligt frå programkode för modulera Måste vara lätt se vad för moduler e ädrig påverkar E modul ka ite förstås om de beror på ågo aa på ågot märkligt ej syligt sätt Följer frå: Decomposability, Composability, Cotiuity och Uderstadability

Fem regler: Iformatio hidig E modul måste erbjuda e delmägd av sia egeskaper som officiell iformatio om module Modules grässitt De officiella iformatioe är tillgäglig för alla adra moduler Klietmoduler ska ite bero på de icke-officiella iformatioe Publicera bara desigbeslut som är stabila ite såa som ma äu ädrar Följer frå: Cotiuity

Fem priciper: Liguistic modular uit Moduler ska motsvara sytaktiska eheter i språket Förhidrar mauell översättig och strukturerig Java har klasser och paket (packages) Implemetera objekt orieterad desig i t. ex. C är ite ödvädigtvis e bra idé

Fem priciper: Self-documetatio priciple All iformatio om module är del av module själv Det fis ige begräsig på hur iformatioe är represeterad eller hur ma kommer åt de Viktigt för modular uderstadability Viktigt för att hålla kod och dokumetatio sykroiserad

Fem priciper: Uiform access Varje service i e modul måste vara åtkomliga med e ehetlig otatio Ska ite vara ågo skillad om resultatet åstadkoms geom beräkig eller om det fas lagrat Varje service döljer iformatio som ite är del av dess grässitt

Fem priciper: Ope-closed Moduler ska vara både öppa och sluta Det ska vara möjligt att utvidga moduler (öppa) Moduler ska vara tillgägliga för adra moduler. Alltså behöver modulera väldefiierade och stabila grässitt (sluta) Detta är e mycket viktig pricip för objektorieterade system

Fem priciper: Sigle choice När systemet måste stöda e mägd alterativ, ska exakt e modul käa till de kompletta lista alterativ Att sätta till ett alterativ kräver då (förhoppigsvis) ädrigar i bara e modul De här type av problem uppstår ofta då det fis ett atal alterativ Lista på alterativ kommer ataglige att förädras Desige ska ite påverkas av detta

SCP - Exempel class Publicatio{ eum Type {joural, book, proceedigs}; public Type type;... } Vilka typer av publikatioer det fis måste käas till överallt... switch (p.type){ case joural: //hatera tidskrifter case book: //hatera böcker case proceedigs: //hatera koferespublikatioer... }

Ett sceario Du börjar kostruera systemet. Det är väldesigat och de första versioe släpps Då börjar det gå fel... Ädrigar och ya fuktioer blir svårare och svårare att göra De ursprugliga desige måste överges Också små ädrigar orsakar ovätade fel Till slut skrivs hela systemet om frå grude Ädå var allt gjort eligt bästa förmåga. Så vad gick fel?

Tecke på dålig desig Rigidity Det är svårt att göra ädrigar i systemet eftersom ädrigar propagerar till måga moduler Motvillighet till att göra ädrigar då ma ite vet på förhad vad som behöver ädras Fragility Ädrigar i systemet orsakar fel i moduler som ite har ågot koceptuellt förhållade till de ädrade module Lösigar på dom första probleme skapar ya problem på adra ställe Ige vill göra ädrigar eftersom resultatet är omöjligt att förutsäga

Tecke på dålig desig Immobility Modulera i systemet är så hårt kuta till varadra att det är omöjligt att återaväda dem Omöjligt att förstå på grud av alla beroede Viscosity (två typer) Viskositet i systemet Att göra saker på rätt sätt är svårare ä att göra dom fel Att göra saker så att desige bevaras är svårare ä att göra sabba hacks Viskositet i omgivige Utveckligsmiljö lågsam och ieffektiv Låga kompilerigstider, dålig källkodshaterig

Tecke på dålig desig Needless complexity Systemet har strukturer som ite tillför ågo ytta Resultat av att ha försökt förutsäga vad som behövs i framtide till e för stor utsträckig Needless repetitio Systemet iehåller repeterade strukturer Opacity Kode är svår att läsa och förstå. Meige framgår ite klart Kode blir mera komplicerad och svårhaterlig med tide

Orsaker till dålig desig... Ädrade krav har ite tagits i beaktade Sabba hacks förstör de uderliggade strukture Om desige ite är ekel att förstå, kommer de att bli förstörd Beroede mella kompoeter är ite haterade Det är e aturlag för utvecklig av mjukvara?

Exempel på ruttade desig Ett mycket ekelt program som kopierar tecke frå tagetbordet till e priter Illustrerar poäge char Read Keybord Copy char Write priter void copy(){ it c; while( (c=rdkbd())!=eof ) WrtPrt(c); }

Exempel (forts.) Krave förädras Programmet ska u också kua läsa frå e pappersbadläsare (?) Grässittet till Copy fuktioe ka ite ädras Har reda måga öjda avädare Aväd globala variabler! bool ptflag=false //kom ihåg att sätta de här flagga void Copy(){ it c; while( (c=(ptflag? RdPt() : RdKdb()))!= EOF) WrtPrt(c); }

Exempel (forts.) Krave ädras äu mera Nu ska ma också kua skriva till e paper tape puch bool ptflag=false; bool puchflag=false; //kom ihåg att sätta flaggora void Copy(){ it c; while( (c=(ptflag? RdPt() : RdKdb()))!= EOF) puchflag? WrtPuch(c) : WrtPrt(c); }

Exempel desig Desige var ekel och bra för orgialproblemet Förädrigar gjorde att programmet började visa alla tecke på dålig desig Förädrigar måste beaktas

Objektorieterad desig iterface Reader{ it read(); } iterface Writer{ write(it c); } class KeyboardReader implemets Reader{ it read(){ retur RdKbd(); } } class TapeReader implemets Reader{... } void Copy(Reader r, Writer w){ it c; while( (c=r.read())!=eof) w.write(c); }

Hur motverka ruttade desiger Måga olika utveckligsprocesser Agile methods (Extreme programmig, etc...) RUP Skapa desige med take på att systemet kommer att modifieras Krave ädras Ny fuktioalitet kommer sättas till Refaktoriserig Omstrukturerig av kode som bevarar futioalitet me förbättrar strukture Kvalitete på desige ska alltid hållas hög uder systemets utvecklig Det är omöjligt att desiga ett perfekt system på första försöket