Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

OOSU 271005 PATTERNS (mønstre) Hva er et Pattern – opprinnelsen Mal for en Patternbeskrivelse Typer Pattern vi anvender innen systemutvikling Noen eksempler.

Liknende presentasjoner


Presentasjon om: "OOSU 271005 PATTERNS (mønstre) Hva er et Pattern – opprinnelsen Mal for en Patternbeskrivelse Typer Pattern vi anvender innen systemutvikling Noen eksempler."— Utskrift av presentasjonen:

1 OOSU 271005 PATTERNS (mønstre) Hva er et Pattern – opprinnelsen Mal for en Patternbeskrivelse Typer Pattern vi anvender innen systemutvikling Noen eksempler på ulike typer Patterns Hva er et Pattern Language Dagens Pensum : Brad Appleton : ”Patterns and Software : Essensial Concepts and Terminology” (Artikkelsamlingen, nr.8)

2 Hva har vi sagt om patterns i OOSU hittil ?  GRASP: General Responsibility Assignment Software Patterns Information expert Creator High Cohesion Low Coupling Controller  Dette er snarere prisipper enn reelle patterns, men de har satt oss inn i tankegangen om og verdien i å ha generelle løsningsskisser.  Verdien ligger i anvendelse av løsningsskissene i beslektede problemsituasjoner vi til stadighet kommer i når vi utvikler programvare.

3 Pattern – har sin opprinnelse innen arkitektur (byplanlegging / bygninger)  Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. (Christopher Alexander e.a. 1977)  Opererer med flere nivåer av patterns som samlet utgjør en helhet ( 253 i alt ) Region og by  (Community of 7000, Ring roads, Nine per cent parking ) Nabolag og bygningsgrupper  (Number of stories, Pedestrian street) Enkeltbygninger og rom  (Main enterance, The flow through rooms, Cooking layout)

4 Software Pattern  A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context (Gang of Four, 1995)

5 Hvordan ser en Patternbeskrivelse ut ? Et Pattern er en beskrivelse. Det skal alltid være veldokumentert. Det har dannet seg en viss uniformitet, dog ingen standard for hvordan beskrivelsene bør være. Lista i artikkelen til Appleton viser sentrale elementer i oppbygningen av et pattern, og er mer detaljert enn den vi finner hos Larman : Name :Skal inneholde “betydningen”. Viktig i kommunikasjon Problem :Forteller om hva vi vil oppnå med Patternet - hensikten Context :I hvilken sammenheng er dette relevant å anvende Forces :Forklaring på kompleksiteten i problemets natur. Det gis en beskrivelse av sentrale krefter og rammer i omgivelsene. Solution :Beskrivelse på hvordan vi realiserer et design som løser problemet. Angir struktur, samarbeidsforhold og deltagere i løsningen.

6 forts. Examples :Viser eksempler på sammenhenger, anvendelse og |virkning av patternet i en eller flere situasjoner Resulting Context : Forteller om tilstanden, positive og negative etter anvendelse av Pattern’et Rationale :Gir en forklaring på hvordan patternet i detalj virker Related Patterns :Samhandling med andre patterns innen samme språk, evt. andre navn det kan gå under etc. Known Uses :Kjent bruk av patternet. (Det er ikke et pattern før man har vist dets styrker gjennom konkret anvendelse)

7 Hvilke typer Patterns har vi innen systemutvikling ? Patterns – et eksempel på at fagfeltet systemutvikling har lært mye fra andre fagfelt, og ut fra dette laget sine fagspesifikke beskrivelser. Men det har kommen en gigant “hype” rundt patterns. Listen under viser noen kategorier som er omtalt i litteraturen – benytt dem, men gjør det kritisk.  Organizational Patterns  Process Patterns  Analysis Patterns  Architecture Patterns  Design Patterns  HCI / GUI Patterns  Idioms  Software Anti-Patterns

8 Patterns – i teorien I OOSU fokuserer vi ikke på implementering av Patterns, men snarere på at dere skal :  få en forståelse av ideene bak og nytten i Patterns  kjenne oppbygningen i et Pattern  kunne lese og sette dere inn i et Pattern  bli innstilt på å søke i ekspertenes generelle løsningsskisser fremfor å “finne opp hjulet på nytt” når dere utvikler programvare

9 Patterns i praksis Bruk av Pattern fungerer bare godt hvis du etterhvert på en rimelig enkel måte kan: tolke den sammenheng du står overfor identifisere et Pattern som tilbyr løsning på dette ut fra Pattern-beskrivelsen være i stand til å realisere løsningen i det miljøet du utvikler systemet (ved å finne ferdigdefinerte idioms eller ved å kode selv ut fra løsningsskissen)

10 Hva er et Pattern Language ? En samling av Patterns i en helhetlig struktur er et Pattern Language. “ Each pattern can exist in the world, only to the extent that is supported by other patterns: the larger patterns in which it is embedded, the pattern of the same size that surround it, and the smaller patterns which are embedded in it.” (Alexander, 1977) Dette skal gi deg en helhet du har å velge i når du skal komme frem til en helhetlig oppbygning av en løsning. Språket skal utover beskrivelsen av det enkelte pattern, gi deg retningslinjer i anvendelsen, og en beskrivelse av sammenhengen mellom de enkelte Pattern. Du må likevel ha frihet i dine valg og muligheter for tilpasninger for at språket skal være godt.

11 Patterns vi ser på de kommende to ukene: Architecture Patterns : Layer Model – View - Controller Design Patters : Creational : Singleton, Factory Structural : Adapter, Facade, Decorator Behavioral : Observer, Strategy


Laste ned ppt "OOSU 271005 PATTERNS (mønstre) Hva er et Pattern – opprinnelsen Mal for en Patternbeskrivelse Typer Pattern vi anvender innen systemutvikling Noen eksempler."

Liknende presentasjoner


Annonser fra Google