Programmering og systemudvikling

Slides:



Advertisements
Lignende præsentationer
Notation Oversigt Kapitel 18.
Advertisements

Mapning af klasser til relationer
Velkommen til Softwarekonstruktion
06.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Brug Oversigt, principper og teknikker Kapitel 6.
Krav og usecases Larman kap. 5 og 6 (del1) Larman kap del1
07 – Kort om OO Introduktion.
Objektorienteret programmering
Analyse af anvendelsesområde
Programklasser for bladhus Den efterfølgende beskrivelse er ikke komplet. Der er ikke taget afsæt i use cases, sekvensdiagrammer og operationsbeskrivelser.
Beskrivelses- og analyse-teknikker understøttet af Oracle Designer Del 2 af 2: Proces- og funktionsdiagrammering Aalborg Universitet, d. 9. oktober 2006.
Beskrivelses- og analyse-teknikker understøttet af Oracle Designer
04.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Struktur Oversigt, principper og teknikker Kapitel 4.
03.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Klasser Oversigt, principper og teknikker Kapitel 3.
10.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Komponenter Oversigt, principper og teknikker Kapitel 10.
Klasser Modeller.
1 Dagens gang Repeter systemvalg Gennemgang af klasser og strukturer (kap. 3+4 OOA+D) Tavle opgave Gruppe opgave til næste gang.
07.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Funktioner Oversigt, principper og teknikker Kapitel 7.
12.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Modelkomponent Oversigt, principper og teknikker Kapitel 12.
11.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Processer Oversigt, principper og teknikker Kapitel 11.
Oversigt, principper og teknikker
13.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Funktionskomponent Oversigt, principper og teknikker Kapitel 13.
Context- og flow-diagrammer (databaser, del 3)
Dagens gang Sidste uges opgaver Design af grænseflader
OOA&D Et Crash-kursus.
05.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Adfærd Oversigt, principper og teknikker Kapitel 5.
1 Dagens gang Sidste uges opgaver –Klasse opgaver –Adfærdsmønstre (Låner, Reservation, Materiale, Eksemplar) Brugsmønstre og funktioner Nye opgaver.
09.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Kriterier Oversigt, principper og teknikker Kapitel 9.
17.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Implementering Principper, teknikker og vurdering Kapitel 17.
1 Dagens gang Sidste uges opgaver OA+D: Adfærd Nye opgaver.
Serviceorienteret arkitektur SOA. SOA bygger på Der findes en serviceleverandør, som udstiller en formåen til at udføre en veldefineret og afgrænset aktivitet,
Eksempel på realisering af domænemodel
Objekter og klasser Rasmus D. Lehrmann DM
Interaktionsformer En begrebsmæssig model kan understøttes med forskellige interaktionsformer Interaktionsformen fastlægger centrale egenskaber: Hvordan.
Use Case Modellering. En form for requirements engeneering – dvs. fastlæggelse af systemkrav.
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
Generelt om abstraktion og modellering Tietgen Skolen.
DIEB3.1 Kursusgang 3 Oversigt: Sidste kursusgang Design og dialognotationer ­ Fra analyse til design (Dix) ­ Notation: state transition networks (STN)
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design interaktionselementer Analysedokumentet.
Database.
Objektorienteret programmering – UML2Java.  Jens Bennedsen 2001Multimedie programmering8.2 Indhold Klasser og associering til enkelt objekt –Programmering.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Systemudvikling – Fra idé til kode.  Jens Bennedsen 2001Multimedie programmering9.2 Begrebsmodellering Problemspecifikke begreber Problem/vision vedrørende.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Jens Bennedsen 2002Objektorienteret systemudvikling Persistens.
 Jens Bennedsen 2002Objektorienteret systemudvikling Interaktionsdiagrammer Hvordan beskrives objektinteraktion? Sekvensdiagrammer Collaborationsdiagrammer.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design -> kode Mapning af et klassediagram til kode.
Indledende Programmering Uge 6 - Efterår 2006
Dagens gang Komponenter Projektetablering Opgave i komponenter til næste gang.
 Jens Bennedsen 2002Objektorienteret systemudvikling Arkitektur.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
 Jens Bennedsen 2001Multimedie programmering13.1 Lingo Objectorienteret Lingo.
 Jens Bennedsen 2001Multimedie programmering11.1 Lingo Basis.
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DIEB8.1 Kursusgang 8 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
Programmering og systemudvikling
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Jens Bennedsen 2002Objektorienteret systemudvikling Begrebsmodellering Hvordan får vi opbygget en domænemodel/begrebsmodel?
 Jens Bennedsen, 2003, revideret af EE Introducerende objektorienteret programmering MVC Et mønster for grænseflader.
Hvad er en inkrementel og iterativ process?
01.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Objektorienteret Analyse & Design (OOA&D) Grundbegreber, principper og metode Kapitel 1.
Forretningsmodellering 2. Modul Foråret 2008 Nord LBP.
Abstraktioner.
Dokumentation.
Dokumentation.
Dokumentation.
Præsentationens transcript:

Programmering og systemudvikling Lektion 5 Dynamik og interaktion Ó Bennedsen 2001 Dynamik

Formål Dynamik Teknikker til beskrivelse af begreber med et interessant dynamisk forløb. Sammenhæng mellem den dynamiske model og klassemodellen. Anvendelse af den dynamiske model gennem systemudviklingsforløbet. Hvorledes realiseres systemets funktionalitet (udtrykt i termer af brugsmønstre) ved hjælp af samarbejdende objekter. Sekvens diagrammer — hvad anvendes de til og hvornår? Ó Bennedsen 2001 Dynamik

Virkeligheden vs. systemet Gift hændelse, der skal ændre tilstanden af de to involverede objekter Peter bliver associeret til Lise Ja - selvfølgelig gift Er ugift Er gift Ó Bennedsen 2001 Dynamik

Dynamiske syn Livsforløbet af et objekt De (overordnede) tilstande der er for et objekt Overgange mellem tilstandene Hændelser Betingelser Attributter Adfærdsmønster der fastlægger de lovlige hændelsesforløb for ALLE objekter af en klasse Ó Bennedsen 2001 Dynamik

Hændelse En øjeblikkelig begivenhed der involverer et eller flere objekter begivenhed i problemområdet der skal afspejles i systemet. Øjeblikkelig skal defineres ex: Aftaleindgåelse Hændelse og use case: En use case beskriver en sammenhængende klump funktionalitet, der godt må have tidslig udbredelse En hændelse kan have parametre Ó Bennedsen 2001 Dynamik

Find hændelser Fokuser på udsagnsord i beskrivelser af systemet Se på tilsvarende edb-systemer Se på faglitteratur Se på generelle typer Ó Bennedsen 2001 Dynamik

Vurder hændelser Hændelser skal være forretningsmæssige Check: Beskriver hvad der kan ske i systemet bør være relevant for en eller flere use cases bør ikke beskrive hvad der sker ret teknisk Check: Er hændelsen atomar? Er hændelsen øjeblikkelig Kan hændelsen identificeres når den sker Ó Bennedsen 2001 Dynamik

Navngiv hændelser Brug simple og læsbare betegnelser Brug betegnelser fra domæne modellen Vare solgt <> salg Brug enkle udsagnsord eller korte sætninger Brug betegnelsen om en enkelt hændelse Ó Bennedsen 2001 Dynamik

Hændelsestabel Lav en tabel over (alle) hændelsser i systemet og deres tilknytning til klasserne Fælles hændelse Sammenhæng mellem klasserne Ó Bennedsen 2001 Dynamik

Adfærd De lovlige hændelser samt deres sammenhæng beskriver hvordan objekter af en given klasse udvikler sig gennem tid jf. sekvensdiagram for use case Hændelsernes sammenhæng beskrives i et tilstandsdiagram vha: sekvens selektion iteration ... Ó Bennedsen 2001 Dynamik

Eksempel: Patient venteliste aflys indkald indkaldt udskriv udskriv tilknytSeng tilknytSeng rekreer indlagt rekrevativ operer Ó Bennedsen 2001 Dynamik

Keep it simple Beskrivelsen af adfærden skal indfange alle hændelsesforløb, men ikke være unødigt kompliceret Lad være med at inkludere specielle og detaljerede forhold i diagrammet, men beskriv det almindelige forløb og lav en kommentar om de andre Brug hierarkiske beskrivelser ... ... Ó Bennedsen 2001 Dynamik

Adfærd og arv Adfærd nedarves fra superklassen til subklassen Subklassen har alle superklassens hændelser Subklassen skal overholde superklassens adfærdsmønster Overtræksretskonto: Konto: Ó Bennedsen 2001 Dynamik

Patient klasse Enten tilstands- attribut eller andet Hændelser fra til- stands- diagram Ó Bennedsen 2001 Dynamik

Repræsentation af hændelser En hændelse er et udtryk for en betydningsfuld forandring i domænet som skal afspejles i edb-systemets modelkomponent Overvej om der skal holdes styr på de hændelser der er indtruffet Påvirker kun saldoen, men vi vil gerne holde styr på rækken af indsættelser og hævninger Ó Bennedsen 2001 Dynamik

Repræsentation af hændelser (2) Selektion og sekvens kan repræsenteres af en attribut, iteration kræver som oftest en ny klasse Ó Bennedsen 2001 Dynamik

Repræsentation af hændelser (3) Ó Bennedsen 2001 Dynamik

UML Tid Aktivitet i tilstanden Start tilstand Betingelse Handling på overgangen Ó Bennedsen 2001 Dynamik

Concurrent states Slut tilstand Ó Bennedsen 2001 Dynamik

Sending messages Ó Bennedsen 2001 Dynamik

Kontekst CALL BEFOREPGM Ó Bennedsen 2001 Dynamik USING RESPFROMCALL, SELF-I, THISOPERATION IN CONCRETEPGM ATTRNAME-I. IF SEVERITY IN RESPFROMCALL > 3 MOVE RESPFROMCALL TO RESPONSE-O GO TO L-CHECK-ERROR END-IF. PERFORM P-GETATTRIBUTE THRU P-GETATTRIBUTE-X. IF SEVERITY IN RESPONSE-O > 3 Ó Bennedsen 2001 Dynamik

Sekvens diagram Control focus Objekt Attribut Aktuelle parametre Tid aCustomer anOrder aPayment aDiscountAgrement debt(date) price Aktuelle parametre Tid amount discount(totalPrice, discountedPrice) besked operation Ó Bennedsen 2001 Dynamik

Besked En besked svarer til et konkret kald af en operation (eller en aflæsning af en attribut) Parametre i besked er aktuelle parametre attribut, rolle.attribut, rolle.rolle.attribut,.. fast værdi medsendt parameter Ó Bennedsen 2001 Dynamik

Formål med sekv. diag Arbejdsredskab Produkt til brug for test til design af funktionalitet operationer afledte attributter til overblik/fokus på ansvarsdelegering mellem klasser Produkt til brug for test Ó Bennedsen 2001 Dynamik

Eksempel Ó Bennedsen 2001 Dynamik Ordremodtager Ordremodtagelse «Uses» Kunde_gæld «Uses» Debitorstatistik Kvartalsstatistik Ó Bennedsen 2001 Dynamik

Klassemodel (problemområdet) Ó Bennedsen 2001 Dynamik

Kunde_gæld Bruger: Ordre-modtager, Kvartalsstatistik Formål: At beregne kundens gæld Hvad sætter casen igang: Ordremodtagelse, eller Kvartalsstatistik Startbetingelse: Kunden skal have tilknyttet allerede ekspederede ordrer indenfor den specificerede periode Hyppighed/frekvens: Ca. 50 gange om dagen (Odremodtagelse), ca. 1 gang pr. kunde pr. kvartal (Kvartalsstatistik) Ó Bennedsen 2001 Dynamik

Kunde_gæld(2) Beskrivelse: Ordre-modtager: 1) Kundeoplysninger initieres (jf. hoved-Use Case) 2) Beregningsdato initieres 3) Beregning af kundegæld pr. dato anfordres SYSTEM: 4) Den angivne Kundes gæld beregnes pr. den angivne dato : Gælden beregnes som prisen for alle kundens ikke afsluttede ordrer fratrukket evt. indbetalinger og rabat. Ó Bennedsen 2001 Dynamik

Kunde_gæld(3) a) Følgende ordrer indgår i beregningsgrundlaget : * Der skal eksistere en reference til kunden (fra input) * Må ikke være afsluttet (afslutningsdato ikke udfyldt) * Ordre-optagelsesdatoen skal være mindre end beregningsdatoen b) Summen af ikke-afsluttede ordrers pris beregnes : * Ordrelinierne til ovenstående ordrer udsøges * Prisen på den enkelte ordrelinie beregnes på baggrund af det registrerede kvantum og prisen (fratrukket rabat) på den tilknyttede vare. * Prisen for den samlede ordre summeres på baggrund af ordrelinierne. Ó Bennedsen 2001 Dynamik

Kunde_gæld(4) c) Indbetalinger knyttet til kunden summeres : * Indbetalingsdatoen skal være mindre end beregningsdatoen d) Kundens rabat beregnes med udgangspunkt i den samlede pris for kundens totale ordremængde. [Undtagelse 1] : Prisen for kundens ordrer fratrukket indbetalinger og rabat giver et negativt beløb] Sluttilstand:Kundens gæld er beregnet, evt. er markeret at kundens gæld er negativ. Undtagelser: 1) : Kundens gæld returneres som et negativt beløb, dog medsendes også en markering af, at dette er tilfældet, således at resultatet ikke forveksles med en regnefejl. Ó Bennedsen 2001 Dynamik

Sekvens diagram aCustomer anOrder aPayment aDiscountAgreement debt(date) For all Orders associated with this Customer where Orders.admissionDate<date price For all Payments associated with this Customer amount sum(Payments.amount) if Payments.admissionDate<date then discount(totalPrice,discountedPrice) DiscountAggreement.discount Ó Bennedsen 2001 Dynamik

Niveau aCustomer anOrder aPayment anDiscountAgreement debt(date) price amount discount(totalPrice,discountedPrice) Ó Bennedsen 2001 Dynamik

Niveau (2) Egenskaben price på Item er begrenet  aflæsning i anden klasse Order OrderLine Item Price price price price Ó Bennedsen 2001 Dynamik

Niveau (3) (En del af) niveauet fastlægges allerede i use case struktureringen: gentagne dele af use case  udfaktorisering vha. <<uses>>  kunde.1 hele «uses» udfaktoriseret del Ó Bennedsen 2001 Dynamik

Udvidelser <<uses>>  <<extends>>  exceptions flaghejsning, eksplicit kodning (besk. i description feltet) cvblæckvbkæcvhbcv Hjkgfhjkhjkblcvbc vcbcvbcvbcvbcv bcvb cvbcv bcvbcvbcvbcvbcvbcvb Extends <diagramnavn, entydig placering> Ó Bennedsen 2001 Dynamik

Alt dette lyder meget godt men ... Husk det skal være naturligt for en klasse at ”eje” egenskaben forestil dig at objektet er levende - giver det mening at spørge det om egenskaben? Ó Bennedsen 2001 Dynamik

Agent Hvad sker der, når jeg forsøger at sende en buket blomster til Alice i Svendborg? Ó Bennedsen 2001 Dynamik

Interaktion Vi opfatter klasserne som agenter, der kan foretage en række handlinger Beskrevet i klassens grænseflade Vi skal beskrive samarbejdet mellem klasserne: Ó Bennedsen 2001 Dynamik

Hjælpemidler til egenskabsplacering Fornuft Erfaring shopping list approach Retningslinier GRASP patterns Best practices Tommelfingerregler Ó Bennedsen 2001 Dynamik

CRC-kort Class responsibility card navnet på klassen klassens ansvar de klasser der samarbejdes med for at opnå ansvaret Ó Bennedsen 2001 Dynamik

Kobling Afhængighed mellem klassers egenskaber Minimer en klasses afhængighed af andre klassers egenskaber (viden og kunnen) sådan at ændringer et sted påvirker andre mindst muligt! Minimer Kobling! Ó Bennedsen 2001 Dynamik

Kobling - eksempel totalPriceOrders : forAll(Orders where Orders.admissionDate < debtDate) do sum(Order.price) totalPriceOrders:= 0; Per Order forAll(Order.OrderLines) do Per OrderLine x:= sum(OrderLine.Item.Price.price)) totalPriceOrders:= totalPriceOrders + x Ó Bennedsen 2001 Dynamik

Specielt om kobling! Hierarkier Aggregering (UML’s ”Composition”) En superklasse bør være LØST koblet med sine subklasser En subklasse ER STÆRKT koblet med sin superklasse Aggregering (UML’s ”Composition”) Den ”indeholdende klasse” ER STÆRKT koblet med sit indhold Indholdet ER STÆRKT koblet med den ”indeholdende klasse” Ó Bennedsen 2001 Dynamik

Binding Entydighed indenfor en klasses egenskaber Maximer entydigheden i en klasses ansvar så ansvaret for det samlede system er fordelt på en entydig og overskuelig måde Maximer samhørigheden mellem klassens egenskaber så klassens ansvar er veldefineret også udenfor det aktuelle system Tilstræb høj grad af Binding! Ó Bennedsen 2001 Dynamik

Binding - eksempel Ó Bennedsen 2001 Dynamik

Hvor skal operationen placeres? Har koen en ”afMælk” operation eller har mælken en ”udKo” operation? Det er ikke altid oplagt at operationalitet kan placeres på et domæne begreb Ó Bennedsen 2001 Dynamik

Kontrolklasse Når ”styringen” af en use case ikke kan placeres operation på speciel klasse - kontrolklasse kontrolklasse  procedure En kompleks use case  en eller flere kontrolklasser Ó Bennedsen 2001 Dynamik

Et eksempel Vi ønsker at ændre leveringen af en bestemt vare - ”Flytte” varen til en anden ordre Ó Bennedsen 2001 Dynamik

Flyt ordrelinie BRUGER: 1) Følgende indtastes : Kundenummer, FraOrdre, TilOrdre, Vare SYSTEM: 1) Ordrerne fremfindes udfra ordrenumrene. 2) Hvis FraOrdren ikke er leveret flyttes netop den Ordrelinie, som er knyttet til den indtastede Vare. [Undtagelse 1) FraOrdren er leveret] 3) Den relevante ordrelinie knyttes til den indtastede TilOrdre. [Undtagelse 2) TilOrdren har allerede en Ordrelinie med denne Vare] Ó Bennedsen 2001 Dynamik

flytOrdrelinie (2) Sluttilstand: Ordrelinien er flyttet til den ønskede ordre Undtagelser: 1) FraOrdren er ekspederet: Der gives en fejlmeddelelse 2) TilOrdren har allerede en OrdreLinie for den aktuelle Vare: Antallet på den eksisterende OrdreLinie opdateres med antallet fra den flyttede OrdreLinie. Ó Bennedsen 2001 Dynamik

Flyt ordrelinie (2) Hvor skal operationen der styrer flow’et i use case’n placeres? Order OrderLine Customer Item moveOrderLine kontrolklasse Ó Bennedsen 2001 Dynamik

FlytOrdreLinie (3) Ó Bennedsen 2001 Dynamik moveOrderLine OrderLine moveOrderLine(fromOrder, toOrder, customer, item) state if fromOrder.state<>delivered then fromOrderLine:= select from fromOrder.OrderLines select where OrderLine.Item=item Delete fromOrderLine.delete CREATE(toOrder,...) OrderLine.CREATE(toOrder, info from fromOrderLine) Ó Bennedsen 2001 Dynamik

Typer af kontrol ”Fork” struktur: En operation styrer kalder alle andre operationer ”Stair” struktur: Ansvaret er delegeret Der er ingen "central" klasse. Alle klasser kender kun få andre klasser - ved hvilken klasse der kan hjælpe med en specifik egenskab. Ó Bennedsen 2001 Dynamik

Stair versus fork En ”stair” struktur bruges når: operationerne er tæt koblede Klasserne er aggregeringsstruktur Associeringerne repræsenterer en fast tidsmæssig sammenhæng advertisement-order-invoice-delivery- payment operationerne altid skal udføres i den samme rækkefølge Ó Bennedsen 2001 Dynamik

Stair vs. Fork (2) En ”fork” struktur anvendes når: operationerne kan/vil ændre rækkefølge nye operationer skal kunne indføjes der er tale om en kontrolklasse Ó Bennedsen 2001 Dynamik

Eksempel Stair: Fork Ó Bennedsen 2001 Dynamik

3 lags arkitektur Grænseflade- komponent <<interface>> Funktions- komponent <<control>> Model- komponent <<entity>> Ó Bennedsen 2001 Dynamik

Processen og klassemodellen Mønstre class Customer { ….. } Interaktion Claus Mønstre Dynamik Ó Bennedsen 2001 Dynamik

Endemål Mål: Udvikling af et system, der består af en række samarbejdende objekter Struktur af systemet: Class8 Class3 Class4 Class7 Class1 Class8 Class3 Class4 Class2 Class7 Class6 Class1 Class9 Class5 Class3 Class4 Class7 Class1 Class1 Class4 1 2 3 4 5 6 7 8 9 Grænse flade Grænse flade kompo- nent Funktions- komponent Model- komponent Persistens- kompoent Rela- tionel DB Ó Bennedsen 2001 Dynamik