Design Patterns - mønstre



Like dokumenter
Design Patterns - mønstre. Kirsten Ribu

UML- Use case drevet analyse og design. Domenemodeller Sekvensdiagrammer Use case realisering med GRASP patterns Klassediagram - designmodeller

Use case drevet design med UML

Mer om objektorientering og UML

IN2001: Kravhåndtering, modellering, design

UML-Unified Modeling Language

OOSU 22.sept Pattern har sin opprinnelse innen arkitektur (byplanlegging / bygninger)

UML-Unified Modeling Language. Prosess-oversikt. Use case realisering

I dag UML. Domenemodell visualisering av konsepter. Eksempel. Hvordan finne domeneklasser?

Hva gjøres i design? 19. september 2002, Tore Berg Hansen, TISIP

UML 1. Use case drevet analyse og design Kirsten Ribu

IN2000:&Kravhåndtering,&modellering,&design

Flere design mønstre. 19. september 2002, Tore Berg Hansen, TISIP

Mer om objektorientering og UML

Tittel Objektorientert systemutvikling 3

Hensikten med denne delen av kurset. Objektets egenskaper. Objektorientering hva er det? Best practises ved programvareutvikling. Kravspesifikasjonen

Mer$om$objektorientering$og$UML

INF5120 Eksamen Løsningsforslag Oppgave 1a,b COMET

God objektorientert design Flere UML diagrammer UML Distilled kap. 7,8, 9 Using UML, kap. 11, 12, 14 Kirsten Ribu

Use case drevet design med UML. I dag

Ulike typer prosessmodeller. Systemutvikling. Utviklingsmodeller. Prosessmodell - faser

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

Factory Patterns Interface Deklarerer at klassen skal bruke et interface (implements i Java) Definerer implementasjoner for alle metodene i interfacet

UNIVERSITETET I OSLO

Systemutvikling - oppsummering. Alexander Nossum blog.eksplisitt.net 22. mai 2006

Spesifikasjon av Lag emne

Gruppenavn. Prosjektnavn Beskrivelse av design For Navn på systemet. Versjon <1.0>

UKE 11 UML modellering og use case. Gruppetime INF1055

Arkitektur. Kirsten Ribu Høgskolen i Oslo

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case? Use case modellering. Eksempel

Distributed object architecture

Kirsten Ribu - Høgskolen i Oslo

(MVC - Model, View, Control)

Produktrapport Gruppe 9

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

A Study of Industrial, Component-Based Development, Ericsson

UNIVERSITETET I OSLO

Objektorientering og UML. INF1050: Gjennomgang, uke 06

Modellering IT konferanse

Kirsten Ribu - Høgskolen i Oslo

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Use Case-modellering. INF1050: Gjennomgang, uke 04

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell. Dagens forelesning. Fra krav til objekter

Arkitektur. 4 april Mål for forelesningen: Se på kriterier for design, arkitektur av komponent og prosess. Kriterier. Komponenter.

t Institutt for informatikk Erik Arisholm 13. mai 2009 INF1050-oppsummering-1

Objektorientert design av kode. Refaktorering.

Hvordan komme i gang med ArchiMate? Det første modelleringsspråket som gjør TOGAF Praktisk

Tom Røise IMT 2243 : Systemutvikling 1. Forelesning IMT Mars Designfasen i SU-prosjekter : Generelle steg i Designprosessen

Use case modellen. Use case modellering i analysefasen. Hva er en Aktør? Hva er et Use case?

Eksamen i fag TDT4140 Systemutvikling. 6. juni, 2006 kl

Eksamen 2013 Løsningsforslag

AlgDat 12. Forelesning 2. Gunnar Misund

Programvare arkitekturer

19. januar 2012 Noen punkter fra i går

INF1500 Introduksjon til design, bruk, interaksjon Kapittel 10 Identifisere behov og etablere krav

Forskningsmetoder. INF1050: Gjennomgang, uke 13

INF 5120 Modellering med objekter

SOFTWARE REQUIREMENT & DESIGN DOCUMENT

Sist oppdatert: 18.november Øvelsesoppgaver til INF1500

Behandling av data bli treffsikker!

1. Modellering av objektorienterte systemer

Et lite oppdrag i bakgrunnen

Spesifikasjon av Lag emne. Kursregistrering g bruksmønstermodell. Dagens forelesning. Fra krav til objekter

Eksamen i fag SIF8018 Systemutvikling. Fredag 25. mai 2001 kl

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

SPPR Software Project Progress Report Uke 42-43

Fra krav til objekter. INF1050: Gjennomgang, uke 05

AMS-case. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

case forts. Alternativ 1 Alternativer Sammensetning Objekt-interaktor med valg

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Lykke til! Eksamen i fag TDT4140 Systemutvikling NTNU Norges teknisk-naturvitenskapelige universitet

Eksamen INF

EKSAMENSOPPGAVE. Adm.bygget, rom K1.04 og B154 Ingen. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: JA / NEI Hvis JA: ca. kl.

Digitalisering for morgendagens samfunn

UKEOPPGAVER 2: SYSTEMUTVIKLINGSPROSESSER OG PROSJEKTARBEID INNSPILL TIL SVAR

Hva er programmering og hva vil det si å lære det?

Distributed object architecture

Presentasjon 1, Requirement engineering process

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

Web Service Registry

Læringsmål for forelesningen

INF1010 MVC i tekstbaserte programmer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling

Systemutviklingsprosesser Forelesning 2 - INF1050 Systemutvikling

INF Introduksjon til design, bruk, interaksjon Kapittel 10 - Iden%fisere behov og etablere krav

Tilstandsmaskiner med UML og Java

EKSAMEN 05HBINDA, 05HBINFA, 05HBISA, 05HBMETEA, 06HBINFA. Tom Røise. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

Transkript:

Design Patterns - mønstre Om mønstre i design Kirsten Ribu 28.02.2005 1

I dag Om estimeringseksperimentet Mønstre Patterns 2

Estimeringsksperimentet 22 deltakere 11 fikk oppgitt 50 timer 11 fikk oppgitt 400 timer Hvordan gikk det.? 3

Resultat: Lavt anker - 50 timer: Svar: 30,50,60,60,70,70,75,80,100, 100,150 Gjennomsnitt: 76,8 timer 50 Høyt anker - 400 timer: Svar: 100,150,190,200,200, 250,300,350, 400,400,400+ Gjennomsnitt: 267,3 timer 400 4

Designmønstre = oppskrifter 5

Opprinnelsen til begrepet mønstre Ideene bak design patterns stammer fra arkitektfaget, hvor Christopher Alexander utviklet et stort antall designmønstre Professor i arkitektur ved University of California, Berkeley Har skrevet en rekke bøker, som viser 'en ny vei' til bedre design Tar et oppgjør med det tradisjonelle designparadigmet, som er basert på en faseoppdelt framgangsmåte: Analyse leder til spesifikasjon, som er grunnlag for konstruksjon (fossefall) 6

Sitat Model, process, context and artifact are intertwined aspects of the same system 7

8

Hva er et designmønster (pattern)? Et mønster (pattern) er en formalisering av et problem med løsning. Bruken av mønstre i en systemdesign kontekst er relativt ny Mesteparten av arbeidet på dette området er gjort etter 1994. Et mønster skisser et par (problem + løsning) Brukes til å ta en beslutning om designet. Et mønster kan være nyttig for mange slags problemstillinger som har grunnleggende likhetstrekk 9

Mer. Designmønstre er uformelle verbale beskrivelser av et problem og hvordan vi generelt løser problemet. Sammen med mønsteret følger det et konkret eksempel på bruk av mønsteret. Et designmønster er et navngitt 'gullkorn' av instruktiv informasjon som fanger vesentlige strukturer og innsikt om utprøvede løsninger på tilbakevendende problemer i en bestemt kontekst. Brad Appleton: http://www.cmcrossroads.com/bradapp/docs/patternsintro.html 10

Delprosesser i en utviklingsprosess Pilene viser delaktiviteter der mønstre hjelper utviklingen. 11

Patterns - gjenbruk av kunnskap om utforming (design). Historikk Standardalgoritmer (1971 Knuth) Abstrakte datatyper- trær, stakk, lister (1987 Booch) Utformingsmønstre (1995) fra Christopher Alexander(1977) mønstre i bygningsutforming Mønster beskriver et problem og dets generelle løsning ikke detaljert basert på erfaring 12

Hvorfor bruke mønstre (patterns) for informasjonssystemer? Mye av vårt daglige virke består i å lete etter strukturer (mønstre) i omgivelsene Mønstre er vanlige løsninger på vanlige problemer Det samme gjelder utvikling av informasjonssystemer Mange systemer har grunnleggende fellestrekk Det finnes mange mønstre (patterns) som er blitt utviklet gjennom systemutviklingens historie 13

Produksjon og konsumpsjon Påstand: Mennesker er: Produsenter av varer og tjenester Konsumenter av varer og tjenester Mange av våre aktiviteter er former for kjøp/salg og produksjon Informasjonssytemer gjenspeiler og styrer våre aktiviteter Vi kan derfor (grovt) betrakte informasjonssystemer som varianter av kjøp/salg/produksjons-systemer 14

Tilbake til use case modell for Ordrebehandlingssystem 15

Fellestrekk ved informasjonssystemer Kan et kjøp/salg/produksjon system kan danne et grunnlag mønster for andre informasjonssystemer? I et hvilket som helst system, hva er det som tilsvarer Ordrene Varene Regnskap Leverandøren Kunden etc. 16

Gjenkjennelige trekk Vi finner igjen salgssituasjonen i mange sammenhenger Det er ofte nok til å komme i gang med en use case modell Og deretter et klassediagram. Vanlige klasser i et slikt system kan f.eks være: Ordre Lager Leverandør Kunde Produkt Faktura 17

Use casemodell for Kjøp/salgsystem 18

Mønster for klassediagram 19

Problem/løsning - par Kritiske designspørsmål: Hvordan allokere ansvar til klasser? Hvordan skal objekter samarbeide? Hvilke klasser skal gjøre hva? Noen utprøvde løsninger på designproblemer = best-practice prinsipper (mønstre) = patterns: eksemplifiserte kodeløsninger på design-prinsipper 20

Gjenbruk av løsninger Hensikt: å omsette eksisterende design kunnskap til et kodeskjelett Man trenger ikke finne opp hjulet på nytt hver gang. Å navngi mønstrene letter kommunikasjonen mellom utviklerne 21

Fire essensielle deler Meningsfullt navn på mønsteret. En beskrivelse av problemet mønsteret kan brukes på. En løsningsbeskrivelse. Ikke konkret Ofte grafisk framstilt Beskrivelse av konsekvensene resultater kompromisser 22

Hva har vi sett på før: GRASP - General Responsibility Assignment Software Patterns. Information Expert (Eksperprinsippet) Creator (skaperprinsippet) Controller (kontrollprinsippet) Høy kohesjon Lav kobling 23

Objektdesign Ekspertprinsippet: La det objektet som har kunnskapen (dataene) også behandle den Kontrollobjektprinsippet: To typer kontrollere: Fasadekontroller: En kontrollklasse har ansvar for alt (brukes i et lite system) Use case kontroller: Styrer ett use case (brukes i større systemer. Et kontrollobjekt for hvert use case). Skaperprinsippet: Legg ansvar for å opprette et nytt objekt i klassen som må vite om det nye objektet 24

Information Expert Tildel ansvar til den klassen som har tilgang til den nødvendige informasjonen for å gjøre jobben Eksempel: I et salgssystem: Metoden hentkundenummer() legges i klassen som har variabelen kundenr. Fordel: Ulemper: Oppnår på denne måten lav kobling og høy kohesjon Kan få for store klasser ved at for mye ansvar puttes inn i en klasse. Løsning: Fordel ansvaret på to klasser 25

Creator Problem: Hvilken klasse er ansvarlig for å opprette nye objekter? Løsning: La det objektet som må vite om de nye objektene lage dem Hvordan: Gi klasse B ansvaret for å opprette et objekt av klasse A dersom ett av følgende er sant: B inneholder A-objekter B bruker A-objekter B har data som sendes til A-objektet når det opprettes Eksempel: KlasseB objekta = new KLasseB() Ulempe: Klasse A og B har høy kobling 26

Controller Hvilken klasse skal behandle en systemhendelse/melding? Kontrolleren ligger gjerne på klienten Kontrolleren har bare metoder, få eller ingen variabler. Kontrolleren gjør ikke jobben selv, men mottar og fordeler oppgaver er en slags administrator Delegerer oppgaver og styrer use case. Er et bindeledd mellom brukergrensesnittet og applikasjonslaget 27

Controller eksempel GUI Controller Kunde fasade kundedatabase Fordel: Lett å bytte ut klassene over og under kontrollklassen, spesielt grnesesnitt Styrer hendelsesforløpet i et use case 28

Controller forts. Ulemper: Mange metodekall sinker systemet Mye koding Flere klasser Kontrollere får for mye ansvar = mangel på kohesjon: Kontrolleren har for mange jobber å gjøre. Ansvaret og attributtene skulle vært distribuert 29

Mer.. Bruk av patterns blir stadig mer populært GoF patterns (Gang of Four) -> Creator, Factory, Singleton 30

Gang of Four (GoF) Erich Gamma Richard Helm Ralph Johnson John Vlissides forfatterne av boka Design Patterns, Elements of Reusable Object-oriented Software ble kjent som Gang of Four. Navnet var for langt til å brukes i e-mail, derfor firerbanden. Deres mønstre er kjent som GoF patterns. 31

GOF (Gang of Four) 23 Mønstre Creational Patterns (5) Abstract Factory, Builder, Factory Method, Prototype, Singleton Structural Patterns (7) Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy Behavioural Patterns (11) Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template method, Visitor Bok: Design Patterns av Erich Gamma (Author), Richard Helm (Author), Ralph Johnson (Author), John Vlissides (Author), Publisher: Addison-Wesley Pub Co; 1st edition (January 15, 1995) ISBN: 0201633612 32

GoF Patterns http://www.tml.hut.fi/~pnr/gof-models/html/ Behavioral Oppførsel Creational Skaper Structural - Struktur 33

Behavioral patterns Chain of responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template method Visitor 34

Creational patterns Abstract factory Builder Factory method Prototype Singleton 35

Structural patterns Adapter Bridge Composite Decorator Facade Flyweight Proxy 36

Neste gang Arkitektur 37