IMT3102 - OOSU 28.sept Dagens tema : forts. DESIGN PATTERNS ObjektOrientert Design = Bevissthet i tildeling/fordeling av ansvar til softwareklasser for.

Slides:



Advertisements
Liknende presentasjoner
Objektorientert systemutvikling og UML  OOSU er den mest anvendte metoden på både store og små prosjekter  UML er det mest anvendte beskrivelsesspråk.
Advertisements

Del 3 : Patterns (Kap 16 – kap 20, Craig Larman) Arne Maus Inst. for informatikk, UiO.
Memento Object Behavioral Design Pattern. Lagre og hente tilstander • Et system inneholder ofte mekanismer som trenger gjenbruk av tilstander • Memento.
Realisering av Software Patterns Software Design Patterns Realisering med kode Refaktorering Gjenkjenning av mønstre.
Programmering i ActionScript - hva er det, og hvordan undervise?
Objektorientert systemutvikling og UML
Hva trenger jeg av data, og hvordan skal jeg innhente disse?
GROW modellen.
OOSU 21.sept 2011 PATTERNS (mønstre)  Hva er et Pattern – opprinnelsen  Mal for en Patternbeskrivelse  Hva er et Pattern Language ?  Ulike typer Pattern.
Samler informasjon – alt på ett brett Brukervennlig Integrerbart
Variasjoner i subklasser.  Prinsippskissen er meget enkel  En abstrakt klasse har en konkret metode og en abstrakt metode  Hver subklasse realiserer.
Mønstre og tekniske applikasjoner
Levende HMS-system – hva betyr det i praksis?
VELKOMMEN TIL URO OPPLÆRING
Moralsk arbeidsdeling og bedrifters samfunnsansvar Alexander W. Cappelen Senter for etikk og økonomi, NHH.
Gruppe 9 Design evaluering og validering.
Prototyping In 140 Sommerville kap. 8. Mål Forstå hensikten med prototyping i forskjellige utviklingsprosjekt Forstå forskjellen mellom evolusjonær og.
Objektorientert utforming In 140 Forelesning Nr 13 Sommerville kap 12 – del 2.
Introduksjon til systemutvikling
OOSU PATTERNS (mønstre) Hva er et Pattern – opprinnelsen Mal for en Patternbeskrivelse Typer Pattern vi anvender innen systemutvikling Noen eksempler.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Prosjektet transparente lag Composite og tegnende objekter Decorator og gui-kontrollere Factory Method Iterator.
GRASP General Responsibility Assignment SP GRASP er et hjelpemiddel for å lære om OD GRASP er retningslinjer for å fordele og tildele ansvar mellom klasser.
En kort innføring i Design Patterns
GoF GoF er fire systemutviklere, Gang of Four GoF fikk utgitt boken Design Patterns høsten 1994 Boken Design Patterns er en klassiker Design Patterns beskriver.
21.Januar 2003 Design Patterns 1.Kort repetisjon av viktige patterns 2.Oppgave 3.Felles gjennomgang Bendik Bygstad Høgskolen i Vestfold.
Hovedprinsipper i Rational Unified Process
Bendik Bygstad Høgskolen i Vestfold RUP-prosjekt Sammenhengen med UML 1.Hovedstruktur i RUP-prosjekter 2.Faser og iterasjoner 3.Sammenhengen med.
Patterns (mønstre) Patterns er erfaringer Patterns er best-practices Patterns er how-to Patterns er velkjent design Larman: ” ’new Pattern’ is an Oxymoron”
Kirsten Ribu HiO Ansvarsdrevet design og bruk av design-mønstre Kirsten Ribu.
1 Skal vi snakke sammen? Jan Håvard Skjetne SINTEF / University of Melbourne
Innledning SIF80AP Future and HCI av Brad Myers m.fl.
Combining Compound Conceptual User Interface Components with Modelling Patterns - a Promising Direction for Model-based Cross-platform User Interface Development.
UML og grensesnitt UML er standard for modellering innen objekt-orientert programvare kan UML også brukes til modellering av grensesnitt? fordel: bedre.
PPS 2007 og BI rpporteringsløsninger 11 april 2007.
Design Patterns Iterator & Mediator. Gruppe 8 Presentasjonsgruppe:Resten av gruppen: Marianne AtesAndrè Johansen Tom Vidar LundeHege-Kristin Johansen.
Gruppe 3 – Presentasjon 2 Henning Kristiansen, Mats Lindh, André Hauge og Vegard Simensen.
DEKOMPONERING OG MODULARITET ~Gruppe 4~. Gjennomgang Designtyper/kriterier innen dekomponering Dekomponeringsspesifikasjon Strukturert og objektorientert.
Singleton & Adapter Pattern Gruppe 3. Singleton Pattern Sørger for at en klasse kun kan ha en instans Vanligvis implementert med globale variabler –Singleton.
Teknikker for å bedre design- prosessen -Design by contract -Prototyping design -Fault-tree analyses.
Object Oriented Measurement
Læring prosjektpraksis Førsteamanuensis Prosjektledelse,
Information Expert GRASP Grunnleggende prinsipp i programdesign.
Kvalitative og kvantitative metoder
Induktivt og deduktivt design, metodevalg.
INF 4130 Eksamen 2008 Gjennomgang.
Samordning, arkitektur, PKI Hva skjer? Endre Grøtnes, Statskonsult
Gruppe 5 består av: – Cecilie Vitting – – Marit S. Asklien -
Testing av objektorienterte systemer Testplanlegging
Skjemaendringer i systemer bestående av XML-data i relasjonsdatabaser Høgskolen i Gjøvik Master i Medieteknikk, Marianne Brattrud.
PUG-NORWAY OKTOBER 2008 THOMAS SKJØRTEN, HILDE ANDREASSEN UML og OpenEdge OOABL.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
Objektorientert utforming
ORGANISASJON OG PROSESSER Kjetil Hoff Partner Innsikt1 AS.
11. Balancing technology with people’s needs Bruk av teknologi.
Objektorientert utforming In 140 Sommerville kap. 12.
Brukermedvirkning In 140 Forelesning. Historie Skandinaviske tradisjon Sosio-teknisk metode NJMF-prosjektet( ) –Dataavtalen LO-NAF(i dag NHO) –Arbeidsmiljøloven.
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Objektorientert design
Senter for teknologi, innovasjon og kultur (TIK) - Universitetet i Oslo ORGANIZATIONS AND KNOWLEDGE TIK ESST Module 4 Jon Vatnaland.
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
1 Ansvarsdrevet design og bruk av design-mønstre Utforming av klassediagrammer
Objektorientert design In 140 Sommerville kap 12 – del 1.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
IN 265 Våren 2003 : Forelesning : Design av arkitektur og komponent 1 IN250 – Om komponent design Mål for forelesningen: l Se på prinsipper.
Revisjonsutvalget Temalunsj 12. februar PwC Bakgrunn EU vedtok den 16. april 2014 en ny forordning og endringer i direktivet om revisjon og revisorer.
Hvordan skrive egne dilemma
Litt om å skrive forvaltningsinformatikk
Litt om å skrive forvaltningsinformatikk
Utskrift av presentasjonen:

IMT OOSU 28.sept Dagens tema : forts. DESIGN PATTERNS ObjektOrientert Design = Bevissthet i tildeling/fordeling av ansvar til softwareklasser for å ivareta systemoperasjonene (realisere brukernes krav).  Grunnleggende prinsipper for ansvarstildeling  Modelleringsteknikker for å fremme, diskutere og dokumentere plassering av ansvar på softwareklasser. (RDD – Responsibility Driven Design)

Ansvarsformer : Handling og Kunnskap Handling (Doing) :  Doing something itself, such as creating an object or doing calculation  Initiating action in other objects  Controlling and coordination activities in other objects Kunnskap (Knowing):  Knowing about private encapsulated data  Knowing about related objects  Knowing about things it can derive or calculate Craig Larman, Det er objektene som ivaretar selve ansvaret. Ansvarsformene implementerer man i form av metoder som defineres av klassene. I vårt emne er målet å øke bevissthet rundt plassering av ansvar på klasser. Det blir mest fokus på Applikasjons- og Domenelaget og dermed i mindre grad Presentasjons- og Databaselaget (jfr. en fire- lags arkitektur).

Hva er GRASP ?  Grasp = forstå, fatte, gripe tak i  Grasp: General Responsibility Assignment Software Patterns  Craig Larman har lansert ni ulike GRAS-Patterns til bruk i forbindelse med at man gjennomfører et objektorientert design  Dette er ”patterns” som i stor grad utgjør byggestenene for de mer detaljerte Design Patterns.  GRASP navngir og beskriver fundamentale prinsipper for tildeling av ansvar innen OOD, fremfor å gi utvikleren en generell løsningsskisse for en konkret problemstilling (jfr. Pattern). De betraktes derfor av mange som byggeklosser for øvrige Design Patterns som vi skal gå gjennom senere.

forts. GRASP  GRASP: General Responsibility Assignment Software Patterns (kommenterer 5 av totalt 9)  Low Coupling  High Cohesion  Information expert  Creator  Controller  Dette er snarere OO-prisipper enn reelle patterns, men de setter oss inn i tankegangen om og verdien i å ha generelle løsningsskisser.

GRASP # 1 : Low Coupling Problem :Hvordan holde avhengigheter og konsekvenser av endringer lave og muliggjøre gjenbruk ? Løsning : Plasser ansvaret slik at koblinger forblir rimelig lave Diskusjon :Har alltid vært et ideal innen software-design, ut fra at det øker vedlikeholdbarheten, lettfatteligheten og erstatningsmulighetene og gjenbruksmulighetene til sub-systemer, moduler og komponenter Motforestillinger : Høy kobling til stabile elementer (som for eksempel standardbiblioteker i utviklingsverktøy) er ikke noe problem. Man må finne ikke overdrive og lage få store klasser som løser alt mulig selv, og dermed ikke er avhengig av tjenester fra andre. Fordeler :Vedlikeholdbarhet og robusthet i løsningen

GRASP # 2 : High Cohesion Problem :Hvordan beholde oversikt og styring i komplekse og store systemer Løsning : Plasser ansvaret slik at den funksjonelle styrken blir høy i hver enkelt del av systemet Kontekst :Konsekvensene av å ha en “allviter-klasse” til ta ansvar for mange systemoperasjoner gjør at denne får ansvar for en rekke ureltaterte oppgaver Diskusjon :Legg et relativt lite antall metoder på klassen. Disse bør ha funksjonalitet klart relatert til det klassen er tenkt å ivareta. Motforestillinger :Det kan være hensiktsmessig å samle spesiell funksjonalitet / tjenester i en løsning til noen få klasser. Fordeler :Lett å sette seg inn i løsningen og trykt å endre

GRASP # 3 : Information Expert Problem :Hva bør være det generelle prinsipp når det gjelder å knytte ansvar til objekter Løsning : Plasser ansvaret på den klassen som har nok informasjon til å oppfylle ansvaret. (Gjennom “doing” og “knowing”) Eksempel :Ordre er informasjonsekspert for Totalsum, Ordrelinjen er informasjonsekspert for delsummene, Produktbeskrivelse vet prisen Diskusjon :I stor grad intuisjonsbasert OO Fordeler :Vedlikeholdbarhet og robusthet i løsningen Beslektede patterns / prinsipper : Low Coupling og High Cohesion Kjent som :”Do It Myself”, ”Place responsibilities with data”

GRASP # 4 : Creator (intro til Singleton) Problem :Hvem skal ha ansvaret for å kreere nye instanser av en klasse Løsning : Gi klassen B ansvaret for å kreere instanser av klassen A hvis : B aggregerer / inneholder A, B arkiverer A objekter, B hyppig bruker A, B har initialiseringsdata for A Eksempel :Salg aggregerer Salgslinje, og bør ha ansvar for at det kreeres instanser av Salgslinje Diskusjon :Legger ansvaret for å kreere instanser til et objekt som uansett skal være tett knyttet til den aktuelle objektet. Motforestillinger: Dette er en ”enkel” og rimelig ”lokal” løsning. Omstendighetene rundt kreering kan ofte være kompleks, og en delegering av ansvaret for kreering til spesialiserte klasser håndteres av ulike Design Patterns. Fordeler :Ivaretar lave koblinger og dermed vedlikeholdbarhet og robusthet Beslektede patterns / prinsipper : Low Coupling, Factory

GRASP#5: Controller (intro til Observer) Problem :Hvem skal være ansvarlig for å håndtere system hendelse som er initiert av en ekstern aktør ? Løsning : Plasser ansvaret for å håndtere “system event message” til en klasse som er spesialiert på å delegere ansvar og koordinere aktiviteten Eksempel :En ren system-kontrollklasse Egne kontrollerklasser pr Use-Case Diskusjon :Kontrolleren blir en fasade inn mot applikasjonslaget fra presentasjonslaget. Ikke la GUI-klassene sitte med kontroll over hvordan ”forespørsler” blir håndtert og ansvaret blir fordelt. Dette overlates til en Kontroller. Fordeler :Gir fleksibilitet med hensyn til hyppige endringer i presentasjonslaget i løsningen.