Design Patterns - mønstre. Kirsten Ribu

Like dokumenter
Design Patterns - mønstre

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

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

UML-Unified Modeling Language

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

IN2001: Kravhåndtering, modellering, design

Tittel Objektorientert systemutvikling 3

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

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

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

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

Mer om objektorientering og UML

Mer$om$objektorientering$og$UML

UML 1. Use case drevet analyse og design Kirsten Ribu

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

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

Spesifikasjon av Lag emne

INF5120 Eksamen Løsningsforslag Oppgave 1a,b COMET

Estimeringsmetoder. I dag. Kostnadsestimering. Kostnader og prisfastsettelse. Ulike estimeringsmetoder. Måling av programvare. Estimeringsteknikker

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

(MVC - Model, View, Control)

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

Ulike typer prosessmodeller. Systemutvikling. Utviklingsmodeller. Prosessmodell - faser

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

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

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

Arkitektur. Kirsten Ribu Høgskolen i Oslo

Kapittel 7: Mer om arv

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

UNIVERSITETET I OSLO

Objektorientert design av kode. Refaktorering.

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

Tilstandsmaskiner med UML og Java

UKE 11 UML modellering og use case. Gruppetime INF1055

Måling Hvordan ta beslutninger Estimeringsteknikker

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

Object interaction. Innhold. Abstraksjon Grunnleggende programmering i Java Monica Strand 3. september 2007.

Introduksjon til objektorientert programmering

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Repitisjonskurs. Arv, Subklasser og Grensesnitt

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

Modellering IT konferanse

Estimeringsmetoder. I dag. Estimering = måling. Kostnader og prisfastsettelse

19. januar 2012 Noen punkter fra i går

Use Case-modellering. INF1050: Gjennomgang, uke 04

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

Distributed object architecture

Eksamen 2013 Løsningsforslag

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

HØGSKOLEN I SØR-TRØNDELAG

Produktrapport Gruppe 9

Læringsmål for forelesningen

INF 5120 Modellering med objekter

case forts. Generell interaktor Integer- interaktor Domenemodell Eksemplifisering av modellbasert tilnærming til design av brukergrensesnitt

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

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

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Oppsummering av Software Architecture

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

INF1010 MVC i tekstbaserte programmer

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

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

EKSAMEN I FAG TDT MMI Lørdag 11. august 2012 Tid: kl

Use case modellering

Kapittel 7 & 8. Kravspesifikasjoner & Data design. Thomas Tjøstheim og Thomas Edvinsen. 20 September Kapittel 7 & 8 p.1/20

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

Kirsten Ribu - Høgskolen i Oslo

INF1000: Forelesning 7

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

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

INF5120 Modellbasert Systemutvikling. F09: Service Design - GRASP Patterns, Design Patterns, SOA Patterns and Refactoring

Universitetet i Oslo Institutt for informatikk. Eskild Busch. UML hefte

Klasser, objekter, pekere og UML. INF gruppe 13

UNIVERSITETET I OSLO

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

UNIVERSITETET I OSLO

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

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Løsningsforslag til eksamen i INF1000 våren 2006

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

OPPGAVE 5b og 8b Java Kode

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

INF1000: Forelesning 7. Konstruktører Static

"Nelsons kaffebutikk"

Rekursjon. Binærsøk. Hanois tårn.

Transkript:

Design Patterns - mønstre Kirsten Ribu 04.02.2004 1

I dag Om estimeringseksperimentet Mer om use case estimering, fortsetter fra i går Verktøy Visual Paradigm www.visual-paradigm.com Mønstre Patterns Mari Mæhlen kommer kl 1500 for å snakke om statistikkfaget 2

Eksperimentet 11 deltakere 5 fikk oppgitt 50 timer 6 fikk oppgitt 200 timer Hvordan gikk det.? 3

Resultat: Lavt anker - 50 timer: Svar: 40, 64,70,70,120 Gjennomsnitt: 72,8 timer Høyt anker - 200 timer: Svar: 78,100,100,190,250,700 Gjennomsnitt: 236,3 timer (minus høyeste og laveste: 160 timer) 4

Use case estimering - oppsummering Tell antall aktører, klassifiser som enkel, middels eller kompleks Tell antall use case, klassifiser som enkel, middels, kompleks Legg sammen til Ujusterte use case poeng UUCP Bestem omgivelsesfaktorer på en skal fra 1-5 for å få E- Faktor (E = Environment) Formelen: Omgivelsesfaktoren (environmental factor) EF =1.4+(-0.03*EFactor) Sum use case poeng: UCP = UUCP*EF 5

Use case estimering eksempel: Regnearket 6

Mønstre 7

Hva er et mønster (pattern)? Begrepet pattern ble definert av Christopher Alexander et al. i 1977, der det var snakk om mønstre i arkitektur 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 (pattern) er en formalisering av et problem med løsning. 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 8

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 9

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 10

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 11

Tilbake til use case modell for Ordrebehandlingssystem 12

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

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 14

Use casemodell for Kjøp/salgsystem 15

Mønster for klassediagram 16

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 17

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 18

Patterns har navn Bruk av patterns blir stadig mer populært GoF patterns (Gang of Four) -> Creator, Factory, Singleton 19

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 20

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 21

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: Oppnår på denne måten lav kobling og høy kohesjon Ulemper: Kan få for store klasser ved at for mye ansvar puttes inn i en klasse. Løsning: Fordel ansvaret på to klasser 22

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 23

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 24

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 25

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 26

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

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

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

Creational patterns Abstract factory Builder Factory method Prototype Singleton 30

Structural patterns Adapter Bridge Composite Decorator Facade Flyweight Proxy 31

Patterns (Gamma 1995) 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 32

Eksempel: Singleton (GoF) Brukes når kun en instans av klassen forekommer: Class Depot { public static getinstance() //Get instance of the single depot { return instance; } private static Depot instance = new Depot(); private Depot() { } } 33

Patterns (Gamma 1995) 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 34

Eksempel på et mønster Navn Observer (Observatør) Beskrivelse Skiller visning av en objekttilstand fra selve objektet Problem beskrivelse Brukes når tilstanden skal vises i flere former Løsningsbeskrivelse Se neste side Konsekvenser Vanskelig å optimalisere visningsytelsen. 35

Multippel framvisning C D B A 50 25 0 A B C D Subject Observer 1 A: 40 B: 25 C: 15 D: 20 Observer 2 36

The Observer pattern = Observatørmønsteret Subject Observer Attach (Observer) Detach (Observer) Notify () for all o in observers o -> Update () Update () ConcreteSubject ConcreteObserver GetState () subjectstate return subjectstate Update () observerstate observerstate = subject -> GetState () 37

Oversikt over patterns i boka Se side 270 i G&H for beskrivelser av kjente patterns 38

Ressurser: JAVA Patterns http://java.sun.com/blueprints/corej2ee patterns/patterns/index.html http://java.sun.com/blueprints/patterns/ catalog.html 39

http://java.sun.com/blueprints/corej2eepatterns/index.html 40

Neste gang Arkitektur Model-view-controller MVC 41