PIM PERSONAL INFORMATION MANAGER. Århus Universitet Institut for informations- og medievidenskab

Størrelse: px
Starte visningen fra side:

Download "PIM PERSONAL INFORMATION MANAGER. Århus Universitet Institut for informations- og medievidenskab"

Transkript

1

2 PIM PERSONAL INFORMATION MANAGER Århus Universitet Institut for informations- og medievidenskab Eksamensopgave i digitale modeller 2. semester Juni 2010 Christine Risager Kaja Ravn Cramer Michael Christensen Vejleder: Pär-Ola Zander

3 Indholdsfortegnelse Indledning... 3 Projektbeskrivelse... 3 Metode... 5 Kildekritik... 5 UP... 6 Inception fasen... 7 Vision... 7 Glossary... 7 Risks... 9 Use case model... 9 Domænemodel Status efter inception fasen Fokus for 1. iteration Elaboration fasen iteration Vision Glossary Risks Domænemodel UML Klassemodel UML Designmodel Use case model GRASP Den kodemæssige proces Status efter 1. iteration Fokus for 2. iteration iteration Vision Glossary Risks GRASP Polymorphism Pure Fabrication Indirection Protected Variations Den kodemæssige proces Status efter 2. iteration Fokus for 3. iteration iteration Vision Side 1 af 41

4 Glossary Risks UML Designmodel Den kodemæssige proces Status efter 3. iteration Fokus for 4. iteration iteration Vision Glossary Risks Designmodel Use case Den kodemæssige proces Status efter 4. iteration Den kodemæssige arkitektur Model-View-Controller Refleksion GUI ets brugervenlighed Udvidelser Valg af udviklingsmetode Konklusion Litteraturliste Tegn indeholdt i opgaven: Opgaven er skrevet af: Christine Risager (s. 3-4, 10-11, 15-16, 19-20, 25, 29-30, 36-37) Kaja Ravn Cramer (s. 6-9, 12-15, 20-22, 32-33) Michael Christensen (s , 22-24, 26-28, 30-31, 34-35) I parenteserne er angivet, hvilke sider de enkelte er ansvarlige for. Vi har sammen udformet forside, indholdsfortegnelse, indledning, metode, konklusion og litteraturliste. Vedlagt denne opgave er en CD-ROM med vores kode. Side 2 af 41

5 Indledning Denne opgave tager afsæt i vores afslutningsprojekt; Personal Information Manager (PIM). Det centrale i opgaven omhandler, hvorledes vi har valgt at strukturere arbejdsprocessen i konstruktionen af PIM. Opgaven tager forhold i den teori, vi har lært på kurset Digitale Modeller, og her vil der laves redegørelser, refleksioner og dokumentation over arbejdsprocessen samt argumentationer for programmets opbygning. På denne måde viser vi, at have forstået princippet bag objektorienteret programmering, og hvordan det har været mest hensigtsmæssigt at arbejde sig igennem processen. Vi har afgrænset teorien ved at vælge den væsentlige teori ud, som vi selv har benyttet os af, så vi dermed formidler det essentielle. I det følgende vil vi give en kort beskrivelse af projektet PIM. Projektbeskrivelse PIM er en forkortelse for Personal Information Manager, som er et system, der kan holde styr på information i form af f.eks. kontaktpersoner og huskesedler. Vores PIM er til personligt brug og forudsætter, at brugeren kender til computerens grundlæggende funktioner. Nedenunder forekommer en liste over, hvilke typer information brugeren kan indtaste i vores PIM: Research (videnskabeligt arbejde med halvfærdige ideer og inspirationsmateriale) - Beskrivelse af case Appointments (aftaler) - Beskrivelse af aftale - Start og slut dato for aftale - Start og slut klokkeslæt for aftale - Kalenderfunktion Contacts (kontakter) - Navn på kontakt - Adresse på kontakt Side 3 af 41

6 - Postnummer på kontakt - By på kontakt - Land på kontakt - Mobilnummer til kontakt - Telefonnummer til kontakt - Mail til kontakt - Bemærkninger om kontakt Diary (dagbog) - Titel på dagbogs-indlæg - Dato for dagbogs-indlæg - Selve indlægget Notes (huskesedler) - Titel på note - Selve noten Indenfor alle typer information er det muligt at oprette, ændre og slette, hvilket gøres ved at trykke på de dertil indrettede knapper. Derudover er det muligt at vælge mellem, eksempelvis, de forskellige oprettede kontaktpersoner, som vil være at finde på en liste, for at se den information, som tidligere er givet om disse. Som basisfunktion skal systemet blot kunne huske den givne information, så længe programmet kører, men starter altså forfra, hver gang programmet har været lukket ned. Det vil sige, at alle felter nulstilles og al tidligere information dermed slettes. Det optimale vil selvfølgelig være, at information gemmes, til trods for at programmet lukker ned, men dette er ikke krav. Vi har skabt en gennemtænkt systemarkitektur, hvor GUI-design med knapper o.a. tilgodeser den travle bruger, hvilket betyder at opbygningen er simpel og klassisk i udseende. Side 4 af 41

7 Metode Vores PIM s udviklingsfase er bygget over en iterativ udviklingsmodel, som vil blive beskrevet i afsnittet UP og i de efterfølgende beskrivelser af faserne. Opgaven er opbygget således, at vi starter med en gennemgang af inceptionfasen. Derefter vil vi komme ind på elaborationfasen, hvorunder de gennemgåede iterationer uddybes. Det er i både inception- og elaborationfasen, at vores udvikling af selve programmet vil blive beskrevet. Til at overskueliggøre, hvor vi befinder os i faserne og iterationerne, har vi visualiseret dette med pile, hvor en rød pil indikerer, hvor i projektets forløb læser er kommet til. Efter inception- og elaborationfasen, vil vi komme ind på den kodemæssige arkitektur, som beskriver vores fremgang i selve kodekonstruktionen samt arkitekturen af vores Personal Information Manager (PIM). Denne proces vil blive gennemgået vha. uddybelse af den specifikke software i form af modeller og diagrammer. I afslutningsfasen vil vi, i et reflekterende afsnit, komme med positive og negative overvejelser omkring systemet og hele arbejdsprocessen, hvor vi også vil komme ind på brugen af UP, samarbejdet og eventuelle udvidelser. Slutteligt vil vi runde af med et konklusionsafsnit. Herudover har vi også forsøgt at styre vores kodemæssige arkitektur i forhold til GRASP principperne og Model-View-Controller, som vil blive uddybet i afsnittende om de forskellige iterationer og den kodemæssige arkitektur. Disse teorier kommer fra bøgerne Applying UML and patterns af Craig Larman og UML distilled af Martin Fowler, som er anerkendte teorier. Kildekritik Til vores opgave har vi brugt bøger omhandlende software udvikling. Denne slags litteratur adskiller sig noget fra andre faglitteratur bøger ved ikke at være overvejende akademiske i argumentationen. Der er ikke den store rygdækning i bøgerne, og det kan give visse svage punkter samtidig med, at forfatteren ikke forholder sig kritisk til alle vinkler i bogen. F.eks. lovpriser Larman og Fowler den iterative UP metode og er ikke kritiske overfor metoden, hvorimod vandfaldsmetoden bliver sat i et dårligt lys. Dermed har vi, for også at have en kritisk vinkel, søgt materiale, som nævner ulemper ved UP. Side 5 af 41

8 I vores programmerings proces har vi, til tider, benyttet kode udgivet på internettet. Der kan være komplikationer og fælder ved at benytte kode fra internettet, da det ofte kommer fra ukendte kilder, hvorfor fejlfri og rigtig kode ikke kan garanteres. Derudover er der ingen sikkerhed for, at udgiveren selv har skrevet koden, da han i princippet kan have kopieret koden fra en helt tredje udgiver. Vi har derfor måttet være ekstra påpasselige med brug af kode fra internettet og set kritisk på denne. UP UP står for Unified Process, som er en iterativ udviklingsproces til opbygningen af objekt orienterede systemer. UP projekter organiserer arbejdet og iterationerne over fire faser: inception, elaboration, constuction og transition. 1 Vi har i vores projekt valgt at tage udgangspunkt i denne proces, men vil først og fremmest koncentrere os om de to førstnævnte faser, inception og elaboration. Dette gør vi, fordi størrelsen og tidsrammen på vores projekt ikke er stor nok til også at komme omkring de to sidste faser. 1 Larman (2005), s. 18 Side 6 af 41

9 Inception elaboration 1. iteration 2. iteration 3. iteration 4. iteration Inception fasen Inception fasen er den første fase i udviklingsforløbet. I denne fase har vi udtænkt en vision for projektet og udviklet artefakterne use case og domænemodel. Derudover har vi haft fokus på glossary og risks. Vi har afslutningsvis gjort status over arbejdet med inception fasen, og sat et fokus for vores mål med 1. iteration i næste fase, elaboration fasen. Nedenfor ses beskrivelse af vores arbejde med de forskellige artefakter. Vision Vores vision med systemet er, at brugeren får et velfungerende system, hvori han/hun kan skrive informationer om sit liv og sine omgivelser. Vi ønsker, at systemet skal indeholde informationstyperne contacts, notes, appointments, research og diary. Et velfungerende system, i vores øjne, indebærer, at systemet kan gemme nedskrevne data, selvom programmet lukkes ned, således at brugeren kan finde tidligere information frem, når der er brug for det. Vi vil gøre det let for brugeren at udfylde tekstfelterne i systemet. Dette gøres ved f.eks. kun at tillade tal i feltet til mobilnummer og kun tillade bogstaver i feltet til navn. Brugeren skal ydermere kunne indsætte billeder. Tanken omkring visionen er, at vi hele tiden vil have den i baghovedet og gå målrettet efter den. Dog vil vi tage den op til revision under hver iteration, i tilfælde af at målene bliver for urealistiske at nå eller i modsat fald kan udstykkes. Glossary Glossary er en liste med interessante termer fra systemet og projektet som helhed samt definitioner af disse termer. Dette kan være for at lette kommunikationen, da termer oftest opfattes forskelligt, afhængig af hvilken stakeholder, der gennemgår projektet. I inception fasen skal glossary primært fungere som et simpelt dokument, men kan i elaboration fasen udvides og fungere som en decideret Side 7 af 41

10 data ordbog. 2 Da vores PIM ikke umiddelbart er fyldt med svære gloser, er vores glossary ikke svært avanceret, men kan, som nævnt, udvides i elaboration fasen. Derfor har vi, i første omgang, lavet en simpel gennemgang af de forskellige typer information, som vores PIM kan indeholde, således at disses betydninger klargøres. Contacts: Her kan brugeren holde styr på sine kontakter og information om disse, i form af navn, adresse, telefonnummer, mobilnummer, og andre bemærkninger. Det er muligt at tilføje kontakter, redigere i kontaktoplysningerne og slette kontakter. For at gøre det lettere for brugeren, at indskrive korrekt data i de enkelte felter, har vi lavet kode, der gør, at der kun kan indtastes bestemte tegn i bestemte felter. Typen Name kan kun bestå af bogstaver. Typen Address er opdelt i tre felter, hvor address og city kun kan bestå af bogstaver, og zip code kun kan bestå af tal. Typen Telephone no. og Mobile no. kan ligeledes kun bestå af tal. Slutteligt kan typerne og Notes bestå af både bogstaver, tal og andre tegn, som (snabel a). Notes: Her kan brugeren holde styr på sine huskesedler ved at navngive dem med f.eks. indkøbsseddel, lektier osv. Igen er det muligt at tilføje nye sedler, redigere dem og slette dem. Notes består af et navn og et tekstfelt, hvori der både kan skrives bogstaver, tal og diverse andre tegn. Appointments: Her kan brugeren holde styr på sine aftaler. Igen ved at give aftalerne navn og ydermere tilføje en dato til hver aftale. Der er mulighed for at oprette aftaler, redigere dem og slette dem. Appointments består af et navn, en dato og et tekstfelt, som alle kan bestå af bogstaver, tal og diverse andre tegn. Research: Her kan brugeren holde styr på sit arbejde med forskellige cases. På den måde er det hele tiden muligt for brugeren at skrive noter osv. til forskellige cases, og på den måde skabe et overblik. Igen er der mulighed for at oprette, redigere og slette cases. Denne type information er den, der appellerer mest til at bruge slet-funktionen. Når brugeren afslutter et case, kan han/hun slette caset, hvilket hele tiden vil give brugeren struktur og overblik over, 2 Larman (2005), s. 115 Side 8 af 41

11 hvor mange cases der arbejdes med. Research består af et navn og et tekstfelt, som begge kan bestå af bogstaver, tal og diverse andre tegn. Diary: Her kan brugeren nedskrive sine daglige erindringer. Selvom det måske ikke vil være så aktuelt, er det her også muligt at redigere og slette nedskrivninger. Hvis brugeren gør dette, vil det dog ødelægge en del af princippet med en dagbog. Diary består af et navn, en dato og et tekstfelt, som alle kan bestå af bogstaver, tal og diverse andre tegn. Risks I inception fasen har vi ikke nedskrevet nogle kodemæssige risks. Det har været for tidligt for os, at overveje nogle specifikke risks, da vi knap nok har vist, hvilke klasser der skal implementeres, og hvordan disse skal opstilles. Derfor er dette et punkt, som først udvides i elaboration fasen, hvor den egentlige kodning begynder. Use case model Use case er en teksthistorie, som beskriver en actors brug af systemet til at understøtte et specifikt mål. Det er en samling af detaljerede successcenarier og fejlscenarier samt andre vigtige forudsætninger for, at målet kan nås. 3 Vores første use case er ikke særlig fyldestgørende, men er lavet primært for at skabe overblik. Vi har indsat grundlæggede information, så som primary actor, stakeholders og success guarantees, og har også overvejet en række successcenarier og problemer, der vil kunne opstå undervejs. Et sådant use case kaldes for et brief use case. Det er en kortfattet opsamling, som er god at bruge i opstartsfasen, hvor krav, emne og omfang fastsættes. 4 Vores mål er, at videreudvikle dette use case i 1. iteration, hvor et bedre overblik over forløbet, forhåbentlig vil være aktuelt. Se bilag M: Use Case Inception fasen. 3 Larman (2005), s Larman (2005), s. 66 Side 9 af 41

12 Domænemodel Domænemodellen er den første model vi har tegnet, for på den måde at få vores primære tanker ned på papir. En domænemodel skal tænkes som en kilde af inspiration til videre udvikling. Det er en visuel fremstilling af virkeligheden, ikke af systemet eller softwaren. 5 Vi er enige om, at de forskellige typer information hver skal tegnes for sig, samt at disse alle skal forbindes til centrum i form af Information. Derudover har vi også tegnet View, da det rent logisk er nødvendigt med en visuel grænseflade, hvis systemet skal gøre gavn for brugeren. Figur 1 viser vores første simple domænemodel. Figur 1: Domænemodel Inception fasen Status efter inception fasen Efter inception fasen er vi klar til for alvor at gå i gang med projektet. Vi har fået ord og modeller på vores ideer, så vi har et godt grundlag for næste fase. Vi har lavet en blog, hvorpå alle disse ord og modeller er sat op, så vi hele tiden har kunnet følge processen og tænke fremad. Arbejdet med bl.a. domænemodel og use case har fået os til at se PIM opgaven fra andre vinkler end de umiddelbare, og vi har derfor fundet det fornuftigt at få skelettet til disse modeller på plads, inden selve kodningsarbejdet er begyndt. 5 Larman (2005), s. 135 Side 10 af 41

13 Fokus for 1. iteration Efter en veloverstået inception fase, føler vi os klar til at begive os ind i elaboration fasen og 1. iteration. Her vil vi i gang med at implementere de enkelte klasser fra domænemodellen i Flex og derefter gå i gang med selve kodningsarbejdet. Samtidig vil vi udbygge domænemodellen og tegne den ind på computeren, så den fremstår mere professionel. Vi vil ydermere tegne en klassemodel, så vi kan få sat attributter og funktioner på de enkelte klasser. Slutteligt vil vi igen se på use case, vision, glossary og risks, for at se om disse skal udvides og/eller ændres. Side 11 af 41

14 Inception Elaboration 1. iteration 2. iteration 3. iteration 4. iteration Elaboration fasen I en iterativ udviklingsmodel, som elaborationfasen er, bygges der på, at udviklingen til et færdigt produkt bliver organiseret i korte serier af miniprojekter kaldet iterationer. Ved at arbejde i miniprojekter, begrænses man til kun at sætte mål for udviklingen frem til næste iteration. Man kan lave iterationerne timeboxed, dvs. at længden af iterationerne er fastlagte, hvilket gør det muligt at have et præcist mål for hver iteration. Vi har valgt, at hver af vores fire iterationer skal have en varighed svarende til tre-fire arbejdsdage. I arbejdet med timeboxed iterationer er det vigtigt aldrig at forkorte eller forlænge en deadline, men hellere at overdrage opgaver fra eksempelvis 1. til 2. iteration, hvis ikke alle opgaver og mål er nået. 6 Arbejdet med iterationer giver os mulighed for ofte at drage nye refleksioner og komme med tilføjelser, hvilket gør os fleksible til at agere efter givne problemer og dermed konstant at være på rette kurs. Vha. struktur, klare mål og deadlines, sikrer vi, at vi altid har noget at sigte efter, og vi forhindrer derved mulighederne for at udskyde problemer. Som kontrast til den iterative udviklingsmodel, står vandfaldsmodellen. Ved brug af denne model, fastsættes projektets mål fra første dag, hvorefter dette mål bliver styrepinden for resten af processen, uden at kunne medtage yderligere refleksioner og restriktioner. Vi finder ikke denne model hensigtsmæssig, da vi har brug for de enkelte iterationer til konstant at kunne tilpasse os projektets situation ved f.eks. at ændre målsætninger. 6 Larman (2005), s Side 12 af 41

15 Inception Elaboration 1. iteration 2. iteration 3. iteration 4. iteration 1. iteration I 1. iteration har vi brugt en del af tiden på at få det grundlæggende på plads. Vi har udviklet og computertegnet modeller som domænemodel, klassemodel, use case og designmodel, hvilket har givet os en fast ramme at arbejde ud fra. De tre begreber vision, glossery og risks er blevet gennemtænkt, således at vi hele tiden er bevidste om vores mål og om de eventuelle problemer, der kan opstå undervejs. Det er vores ide, at holde fat i disse fire begreber gennem alle iterationer, så vi på den måde bevarer overblikket og hele tiden ser med nye øjne på vores situation. Rent kodemæssigt har vi implementeret alle klasserne fra klassemodellen samt de klasser, der udgør MVC. Dertil har vi haft fokus på nogle GRASP principper, som skal hjælpe os til at beherske objekt orienteret programmering samt at tildele ansvar i koden. Vision Visionen, beskrevet i inception fasen, har ikke ændret sig. Vi vurderer, at vi ikke er kommet langt nok i forløbet endnu til at konkludere, om visionen er sat for højt eller for lavt. Dette formoder vi vil være lettere og mere hensigtsmæssigt at se nærmere på i 2. iteration, hvor vi forhåbentlig er nået længere med projektet, både kodemæssigt og rapportmæssigt. Glossary Som nævnt i inception fasen, er det, i elaboration fasen, muligt at udbygge sit glossary med henblik på at lave det til en decideret data ordbog. En sådan ordbog kan indeholde kaldenavne, forbindelser mellem elementer og beskrivelser af en række værdier og valideringsregler, herunder med indblanding af systemets adfærd. 7 Vi finder det dog unødvendigt at lave en sådan data ordbog, da vi ikke har svære gloser i koden. Derfor forbliver glossary i 1. iteration magen til det fra elaboration fasen. 7 Larman (2005), s. 115 Side 13 af 41

16 Risks Risks for første iteration, er mest gået på at få implementeret klasser og funktioner i Flex Builder. Grundet tidligere erfaringer, kan startprocessen ofte være vanskelig, da man sidder med et helt nyt projekt og en masse tomme klasser. Vi har erfaret, at det er godt at få en sikker start, hvor koden er korrekt, og hvor man formår at vælge den korrekte og mest hensigtsmæssige vej. Derudover har vi set det som en ekstra udfordring at indføre MVC og hele tiden bevare denne model, som en grundlæggende del af projektet. Slutteligt har vi ikke arbejdet med opdaterende funktioner før, hvilket selvfølgelig har fået os til at stille spørgsmålstegn om, hvorvidt vi kan finde en løsning på sådanne. Domænemodel Vores domænemodel har været det første skridt på vejen mod udførelsen af PIM. Vi har haft en simpel tegnet model fra inception fasen, som vi nu har tegnet på computeren. Ud fra eksamensvejledningen er det stort set bestemt, hvilke typer information vi skal inddrage, hvilket gør det forholdsvis simpelt at lave domænemodellen. Domænemodellen består af de fem informationstyper: Research, Appointments, Contacts, Diary og Notes samt den overordnede klasse Information, som alle informationstyperne er forbundet til. Derudover består selve grænsefladen af et View, som brugeren kan interagerer med. Domænemodellen er at finde i bilag O: Domænemodel. UML Klassemodel Da domænemodellen er på plads, har vi været i gang med at sætte attributter og funktioner på de forskellige klasser, således at vi kan skabe os en klassemodel. En klassemodel har til formål, at illustrere klasser, grænseflader og associationer mellem dem 8. Dette har givet os en mere detaljeret idé om, hvordan projektet skal opbygges, og hvilke variabler og funktioner vi skal have implementeret. UML klassemodellen er at finde i bilag P: Klassemodel. UML Designmodel Når en klassemodel bruges i et softwareperspektiv, bruges begrebet designmodel. Her indskrives 8 Larman (2005), s. 249 Side 14 af 41

17 attributter og funktioner, præcis som i klassemodellen, blot som en total visuel præsentation af den kodemæssige opbygning og med kodemæssige termer. 9 Da vi stadig er så relativt tidlig i processen, vil vores designmodel kun være en foreløbig model, da den inddrager klasser, attributter og funktioner fra nuværende kode, som ikke er færdigudviklet endnu. Dog er der, i forhold til klassemodellen, især fokus på MVC, så denne tydeliggøres i modellen. Tankerne om implementeringen i forhold til MVC kan læses i afsnittet omhandlende den kodemæssige arkitektur. Vores designmodel er at finde i bilag Q: Designmodel. Use case model Udformningen af vores use case har først for alvor fundet sted efter, at klassemodellen er kommet på plads. Udformningen har sat en masse tanker og overvejelser i gang, som har givet mere struktur og en større bredde på opgaven. Vi har talt om risici, specifikke scenarier osv. I forhold til use caset fra inception fasen, er dette use case noget mere fyldestgørende, og det giver nu mere mening, hvorfor vi har lavet det. Vi er altså gået fra at have et brief use case til at være godt på vej mod et fully dressed use case. Her er alle variationer og tanker skrevet ned i detaljer, og vi kommer godt omkring forskellige scenarier. 10 Vi har kaldt vores use case for version 1.0, da vi regner med, at vi én eller flere gange inden projektet slutter, vil lave nyt use case, så vi kan lave sammenligninger. Slutteligt i rapporten, forventer vi, at kunne præsentere et udførligt fully dressed use case, hvor alle steps er overvejet og beskrevet. Vores nuværende use case er at finde i bilag R: Use Case. GRASP Selvom vi, i denne iteration, ikke er kommet langt kodemæssigt og derfor ikke har kunnet indbygge GRASP i koden, har vi alligevel tænkt over de forskellige principper omkring ansvarsfordeling. GRASP står for general responsibility assignment software patterns og via fokus på GRASP, har vi mulighed for at holde fast på nogle guidelines for ansvarsfordelingen i vores systems kodeopbygning. På nuværende tidspunkt finder vi de nedenfor skrevne principper mest relevante. Vi forventer dog senere en udbygning, hvor flere principper vil inddrages. 9 Larman (2005), s Larman (2005), s. 67 Side 15 af 41

18 Creator: Afgørelse af, hvilken klasse, der skal have ansvar for at oprette en anden klasses objekter. Ved et overvejet valgt af Creator ansvar, kan dette understøtte princippet Low Coupling, som beskrives længere nede. 11 Information Expert: Betyder, at man tildeler klasserne ansvar i forhold til, hvor ansvaret vil være mest relevant med henblik på klassens information. Dette kan give en fordel i, at klasser ikke er tæt forbundne til hinanden, hvilket giver et mindre komplekst kodeomfang, hvori der lettere kan redigeres. Dertil bliver relevante klasser til en specifik opgave også kun taget i brug, under programmets kørsel, hvilket giver høj samhørighed, som også er et GRASP princip. 12 Low Coupling: Betyder, at klasserne er lavt koblede til hinanden således, at hvis der ændres i én klasses kode, skal det ikke have stor indflydelse på de andre klassers funktionalitet. Den lave afhængighed klasserne imellem giver også mulighed for genbrug af klasser og udvidelse/fornyelse af systemet uden indviklede komplikationer. 13 High Cohesion: Cohesion er en måling for hvor stærkt relateret og fokuseret ansvarsfordelingen er for et element. Et element med høj samhørighed (High Cohesion) har højt relateret ansvar, men sætter ikke en enorm mængde arbejde i gang, når elementet køres. At dele et program op i klasser og subklasser er et eksempel på en aktivitet, som øger samhørigheden i et system. Fordelen ved høj samhørighed er bl.a., at det bliver lettere at vedligeholde og forbedre koden. 14 Controller: Dette princip tilkobles bl.a. når, der er fokus på MVC metoden, hvilket vi har intentioner om. Controlleren modtager og koordinerer systemoperationer i softwaren og sørger for kommunikationen mellem Model og View. Controller princippet vil blive gået nærmere i dybden under afsnittet om Model-View-Control. 15 Vi vil gennem beskrivelserne af vores kommende iterationer nævne brugen af GRASP 11 Larman (2005), s Ibid., s Ibid., s Ibid., s Ibid., s Side 16 af 41

19 principperne. Den kodemæssige proces I 1. iteration er vores risks blevet synliggjorte, i og med kodningen af vores PIM er påbegyndt. Der har været en række startproblemer, da vi startede kodeprocessen med en forkert opsætning. I farten med at få den første kode stablet på benene, var vi tæt på at glemme essensen af implementeringen, nemlig klassemodellen. Vi havde ikke fået implementeret alle klasserne fra klassemodellen, og havde derfor alt for mange funktioner og variabler fordelt på kun to klasser. Dette viste sig hurtigt at blive for løst og ustruktureret, og gjorde det tilmed svært for vores instruktorer at hjælpe os, når vi sad fast. Med startproblemerne løst, fik vi dog skabt god struktur og overblik over koden. Vi har implementeret alle klasserne fra klassemodellen, hvilke vi har udfyldt med den mest basale information, så som navn, id, variabler, og funktioner, således at det overordnede skelet er på plads. Dette har givet os mere overblik over, i hvilken retning vi skal gå. Første kodeskridt på vejen til vores PIM har været at få knapperne til at virke. Vi har hurtigt fået knapperne til at trace den data, der skrives i textinputtet, men har ikke kunne få denne data opdateret til listen. Næste større problem vi har haft, har været at skabe en funktion til opdatering af de forskellige informations-felter. Dette problem er noget mere komplekst end nødvendigt, grundet en konstant tankegang om, at have MVC en som fundament i hele systemet. Update funktionen er et emne, som vi tager med over i 2. iteration, hvor vi forventer dette problem, endelig løst. Status efter 1. iteration Med første iteration i elaboration fasen, har vi fået skabt en god forbindelse til inception fasen. Vi har bygget videre på artefakterne i takt med, at koden har udviklet sig og er blevet mere kompleks. Som en vigtig virkning heraf, har vi sat MVC i forhold til både kodning og designmodel, hvilket har givet en god struktur på systemet og en bedre forståelse af, hvad der sker. Derudover har udformningen af et mere detaljeret use case fået os til at overveje forskellige mulige scenarier, risici mv., som har givet os et mere nuanceret billede af projektet. Fokus for 2. iteration I 2. iteration forventer vi, at nå et markant skridt med koden såvel som rapportskrivningen. Side 17 af 41

20 Rent kodemæssigt vil vi færdigudvikle note funktionen, dvs. gøre det muligt at tilføje, slette og vise notes. Dermed forventer vi, at få den opdaterende funktion til at virke, som har voldt os mange problemer i denne iteration. Rapportmæssigt ønsker vi at udforme en opgavestruktur, således at vi har et overblik over, hvordan opgaven skal struktureres. Vi vil fortsat benytte os af princippet med pilot og co-pilot, således at den sidste person udelukkende skriver på rapporten. I rapporten kan udformningen af metode, inceptionfasen og elaboration fasen så småt begynde, og vi kan ydermere opskrive de kodemæssige op- og nedture, der har og vil opstå undervejs. Derudover vil vi igen se på de forskellige artefakter, samt på vision, glossary og risks, og derved afgøre om disse skal udvides eller ændres. Side 18 af 41

21 Inception Elaboration 1. iteration 2. iteration 3. iteration 4. iteration 2. iteration Som beskrevet i foregående afsnit, ønsker vi, i 2. iteration, at færdigudvikle note funktionen. Ved tilføjelse af note, menes at indtastet data gemmes og vises i en liste. Ønsker brugeren den tilføjede note slettet, skal denne specifikke note kunne markeres på listen og derefter fjernes. Ønsker brugeren derimod at se den tilføjede note igen, dvs. se de tidligere indtastede data, skal denne specifikke note kunne markeres på listen og derved vises i informations-felterne igen. Når denne del af programmet er færdigudviklet, formoder vi, at det vil være forholdsvis nemt at videreføre fremgangsmåden til de øvrige informationstyper. Derudover vil vi, hvis nødvendigt, opdatere alle artefakterne og igen se på glossary, vision og risks. Vision Vi har reduceret visionen en anelse ved at skære ønsket om en save funktion samt indsættelsen af billeder fra. Altså ønsker vi ikke længere, at systemet kan gemme nedskrevne data, hvis programmet lukker ned, ej heller ønsker vi, at brugeren skal kunne indsætte billeder. I stedet har vi valgt, at indsætte nogle standard data, som altid står fast i systemet, når brugeren åbner det. Dette vil gøre det lettere for brugeren og for stakeholders at teste systemet, og således hurtigt give en fornemmelse af, om systemet har den passende funktionalitet. Beslutningen om at fjerne disse funktioner fra visionen, er taget i samarbejde med vores instruktorer. Da funktionerne ikke er et krav i systemet, er vi blevet enige om, at det er bedre at fokusere på udførslen af et fejlfrit system og en fuldt gennemført rapport, i stedet for at bruge tid på en funktion, som vi ikke nødvendigvis får til at virke alligevel. Glossary Vores glossary i 2. iteration bevares stort set uændret, dog med en rettelse i informationstypen Research. Denne rettelse kan ses i bilag S og uddybes i afsnittet omhandlende kodeprocessen. Risks Ser man på potentielle risks i 2. iteration, kan nævnes: Side 19 af 41

22 De objekter vi nu har fået tilføjet vores arraycollection, skal vi have vist i en liste i viewet. Herefter skal vi kunne slette objekterne fra denne liste, og dermed også fra vores arraycollection. Når et objekt vælges fra listen, skal de data der er gemt i det pågældende objekt fremvises i vores input felter. GRASP I denne iteration har vi haft fokus på de, i foregående iteration, redegjorte principper: Creator, Information Expert, Low Coupling, High Cohesion, Controller. I forhold til Information Expert har vi i koden sørget for at lave controllere til PIM ens forskellige funktionalitet; note, research, appointments, diary og contacts. Dermed har vi fordelt ansvaret på flere forskellige klasser, således at f.eks. NoteController sørger for at holde styr på note, i stedet for at al funktionalitet ligger i én klasse med navnet note. Ved at lave forskellige Controller klasser til PIM ens funktionalitet, sørger vi også for at opretholde High Cohesion. Vi har igennem hele opbygningen af koden fokuseret på at have så lavt koblede klasser så muligt, således at vi i et fremtidsperspektiv vil have mulighed for at ændre i koden uden komplikationer. F.eks. kan det ses at note klassen, i vores kode, kun kender sig selv og ingen andre. Dertil kan note kun oprettes af NoteController klassen, og dermed bliver NoteController creator for klassen Note. I 1. iteration præsenterede vi GRASP og gjorde brug af fem ud af de ni GRASP-principper: Information Expert, Creator, High Cohesion, Low Coupling and Controller. I 2. iteration udvider vi vores brug af GRASP, og gør dermed også brug af de sidste fire principper: Polymorphism, Pure Fabrication, Indirection, og Protected Variations. Polymorphism Designprincippet polymorphism siger, at når relaterede alternativer eller opførsler varierer efter type (klasse), skal der fastsættes ansvar for opførslen, hos de typer som den varierer hos. Dette princip bygger altså på, at der ikke skal testes for en bestemt type af et objekt og ikke skal gøres brug af conditional logic, når der fremstilles varierende alternativer. 16 I stedet for klassers brug af nedarvning af funktioner og metoder fra en superklasse, foreslås det, at superklassen laves {abstract}. Derudover bruges der ikke if og if-else statements, da disse vil gøre det svært at ændre 16 Larman (2005), s. 416 Side 20 af 41

23 og tilføje i et system. I tilfælde af en ny variation i en klasse, vil en if statement ofte kræve, at der ændres på koden flere steder, hvorimod en klasse med individuelle metoder, kun kræver ændringer i selve klassens kode. Vi har grundlæggende gjort stor brug af Polymorphism i koden, hvilket var et valg vi tog i starten af processen. Her havde vi i tankerne, at sætte alle metoderne i klassen Information, således at informationstyperne i form af de øvrige klasser, blot kunne nedarve herfra. Dette kom vi dog hurtigt fra igen, da det viste sig, at de enkelte metoder varierede en smule fra type til type, og da vi ved brug af Polymorphism indså, at muligheden for ændringer og eventuelle tilføjelser blev nemmere. Pure Fabrication Pure Fabrication er en strategi, som bruges, når der skal gives ansvar til et objekt, hvor Information Expert ikke har nogle mulige løsninger. Strategien har fokus på opretholdelsen af High Cohesion og Low Coupling, vha. introduktion af nye objekter. Disse nye objekter er ikke direkte relateret til det fabrikerede og repræsenterer ikke et problemkoncept, men er kunstigt fremstillet klasser. Klasserne tildeles ansvar som opretholder disse principper, således at fremstillingen af fabrikationer fremstår rene, hvoraf navnet Pure Fabrication kommer. 17 Vi gør brug af Pure Fabrication i arbejdet med MVC, hvor vi bevidst har oprettet objekter som fungerer med MVC-modellen. Vi har skabt tre klasser, der udgør henholdsvis Model, View og Controller, og samtidig sørget for en ansvarsfordeling, som f.eks. tager højde for Low Coupling. Gennem hele processen med kodningsarbejdet har MVC ligget i vores bagtanker, hvorfor objekter, funktioner og ansvar konstant er tilpasset vores ønsker. Arbejdet med MVC er uddybet i afsnittet omhandlende den kodemæssige arkitektur. Indirection Indirection er princippet om at undgå direkte kobling mellem to objekter ved at indsætte et mellemliggende objekt og tildele dette objekt ansvar. Ansvaret kan bestå i at formidle information mellem komponenter eller services, så to objekter ikke er direkte koblet til hinanden. 18 Dette princip ses også i MVC, hvor Controller introduceres som mellemled mellem data i form af Model og repræsentationen i form af View. Denne ansvarsfordeling forklares yderligere i afsnittet omhandlende den kodemæssige arkitektur. 17 Larman (2005), s Larman (2005), s. 426 Side 21 af 41

24 Protected Variations Princippet Protected Variations beskytter elementer fra eventuelle variationer af andre elementer. Dette gøres ved at indkapsle fokus på usikkerheden med et interface og ved at bruge Polymorphism. 19 Som tidligere nævnt, har vi benyttet os af Polymorphism, hvor hver enkelt klasses ansvar er tæt koblet til klassen og kan redigeres i dennes kode. Dette sikrer Low Coupling. Den kodemæssige proces I arbejdet med opbygningen i den kodemæssige proces, har vi bl.a. haft en del fokus på GRASP og MVC. Vi har flere gange omrokeret koden, således at de rigtige klasser har fået det tiltænkte ansvar i forhold til MVC. Heriblandt har vi været nødt til at se på Information Expert princippet, som kan bruges som guideline, når ansvaret skal fordeles. Dette har endvidere givet os problemer med høj kobling mellem klasserne, fordi ansvaret er fordelt på en bestemt måde. Den høje kobling gør det svært for os at ændre i andre klasser, hvilket kan være et problem, hvis vi f.eks. ønsker at ændre i viewet eller andet. Dette vil vi tilstræbe at ændre, således at vi får lavt koblede klasser. I arbejdet med at få den opdaterende funktion til at virke, har vi oprettet en ny knap i systemet, kaldet update, således, at der nu er fire knapper i vores view. Denne ændring var nødvendig i arbejdet med at få funktionen til at virke. Med den opdaterende funktion på plads, har vi færdigudviklet informationstypen note. Med den fuldt udbyggede note, har vi også forsøgt at færdigudvikle informationstyperne diary og contacts. Vi har umiddelbart anset denne udbygning af disse to informationstyper som værende let, eftersom at de benytter sig af den samme kodestruktur og har den samme funktionalitet, som note typen har. Vi er dog rendt ind i uforudsete problemer, som ikke umiddelbart lader sig løse. Ved programmets runtime, får vi en null object reference fejl på de ny udbyggede diary og contacts. En gennemlæsning af den nye kode har ikke umiddelbart ført til noget svar eller nogen løsning på vores fejl, og derfor tages denne fejlretning med over i den 3. iteration. Status for note typen er ellers, at man nu kan tilføje, slette, opdatere og nulstille de forskellige inputfelter. Listen med de oprettede objekter er endvidere sorteret henholdsvis alfabetisk. 19 Larman (2005), s. 427 Side 22 af 41

25 Som nævnt i Glossary, er layoutet i typen Research ændret, således at den skiller sig ud fra de resterende typer. I stedet for muligheden for, at have flere cases i gang på samme tid, er det nu kun muligt med ét case ad gangen. Research består nu af ét stort felt, hvilket vi mener, giver bedre mulighed for brugeren til at arbejde som en rigtig researcher. Til feltet er der tilkoblet muligheden for at ændre farve, størrelse og skrift på teksten, således at researcheren kan understrege eller farvesortere de vigtigste emner. Dette giver en ny måde at arbejde på, hvilken vi finder mest hensigtsmæssig, da typen er udviklet til et sådant research arbejde. Desuden giver det variation i forhold til de andre typer. Sidst men ikke mindst, er vi startet på implementeringen af kodeværktøjet FlexLib i informationstypen Appointments. FlexLib er en kalenderfunktion, som skal gøre det muligt for brugeren, at se sine aftaler i et kalender-layout. Det er et værktøj, som vi ikke tidligere har arbejdet med, hvorfor det forvolder os en del besvær. Appointments er altså den eneste informationstype, som ikke på nuværende tidspunkt har den fulde funktionalitet. Udarbejdelsen af koden i den 2. iteration, har fulgt den iterative proces. Dette vil sige, at vi har udbygget vores program funktion for funktion, og efterfølgende overført de fungerende funktioner til andre dele af programmet. Således har vores kode udbygget sig stille og roligt i starten, hvor der kun blev tilføjet én ny funktion ad gangen. Men med udfærdigelsen af én af vores informationstyper, har koden kunne ekspanderer kraftigt, idet de næste par typer stort set skulle indeholde den samme kode. Dette viste sig dog, som nævnt, at forvolde nogle problemer. Status efter 2. iteration I 2. iteration har vi været produktive og er kommet langt både kodemæssigt og rapportmæssigt. Kodemæssigt har vi færdigudviklet note funktionen. Dette har ført til yderligere udvikling af funktionerne contacts og diary, der dog mangler nogle fejlretninger, som tages med over i den 3. iteration. Sidste funktion, appointments, er stadig under udvikling, grundet problemer med implementeringen af FlexLib. Det grundlæggende layout er forandret en anelse siden start, hvor vi eksempelvis er gået fra at have tre knapper på stage, til at have fire. Dette er gjort for at få den opdaterende funktion til at fungere. Derudover er Research funktionen blevet anderledes, da det nu kun er muligt at køre ét case af Side 23 af 41

26 gangen. Denne ændring vil skabe ændringer i klasse- og designmodellen, da nogle af variablerne og funktionerne fra Research klassen skal fjernes. Disse omfangsrige ændringer i modellen, vil dog først blive foretaget i 3. iteration. Rapportmæssigt har vi fået skrevet processen med 1. iteration færdig, samt et godt stykke af 2. iteration. Vi har fået lavet en indledning, større metodeafsnit, uddybning af vision og risk osv.. Fokus for 3. iteration I 3. iteration forventer vi at blive færdige med størstedelen af kodningsarbejdet og dermed have en velfungerende software, som kan benyttes af en bruger. Som følge af den sene udmelding om kravet til implementering af FlexLib, er vores fokus i denne iteration bl.a. rettet imod at få FlexLib til at fungere optimalt. Dertil har vi bestemt at flex scheduling framework skal anvendes i klassen calendarcontroller samt klassen calendar. Derudover skal vi have lavet et mere udførligt UML designmodel, som beskriver attributterne og funktionerne i hver enkelt klasse, så snart FlexLib er implementeret og fungerer. Side 24 af 41

27 Inception Elaboration 1. iteration 2. iteration 3. iteration 4. iteration 3. iteration 2. iteration er næsten forløbet som forventet, og vi har nået de fleste af de mål, som vi har opstillet. Dermed kan vi gå videre til 3. iteration, ved kun at trække ét mål med fra 2. iteration. Dette er nogle compiler problemer, som vi er begyndt at løse i 3. iteration. Det har lykkes os at omgå fejlene ved at tilgå Viewets elementer direkte. Dette vil beskrives yderligere i senere afsnit om kodningsprocessen. Derudover har vi optimeret enkelte elementer i vores View, således at man i feltet zipcode kun kan skrive tal og ikke andre tegn. Ligeledes kan man i feltet med mobil nr. og telefon nr. kun skrive tegnet + og tal. Samtidig har vi opdelt vores kode i flere controller klasser, således at koden er blevet mere struktureret. Kodestrukturen kan ses i bilag A-L. Desuden er kravet til FlexLib kommet i slutningen af 2. iteration og dermed er fokus videre i 3. iteration at få implementeret FlexLib i softwaren, således at det fungerer optimalt. Vision Visionen, videreudviklet i 2. iteration, forbliver uændret. Glossary Glossary, videreudviklet i 2. iteration, forbliver uændret. Risks Vores risks for denne iteration er, at få Flex Scheduling Framework til at virke optimalt. UML Designmodel Vi har, som afslutning på 3. iteration, opdateret vores designmodel med alle eksisterende attributter og funktioner. Denne designmodel kan ses i bilag T: Designmodel 3. iteration. Side 25 af 41

28 Den kodemæssige proces Vores tidligere nævnte runtime fejl skyldes, at Flex ikke har kunnet assigne så mange variabler ved start, som vi har haft oprettet. Vi har, i et forsøg på at forenkle vores kode, skabt variabler for hver af Viewets elementer. Vi har forsøgt at oprette variablerne lidt efter lidt, som programmet er compilet, men dette har ikke hjulpet. For at omgå denne fejl, har vi ydermere forsøgte at tilgå Viewet direkte via direkte henvisninger til Viewets elementer, hvilket har vist sig at være løsningen på vores fejl. Vi finder dog ikke denne løsning helt optimal, eftersom en ændring i Viewet nu kræver, at koden skal rettes til i mange forskellige linjer og dermed øger kodens kompleksitet og fleksibilitet. Men eftersom Flex Builder tilsyneladende ikke kan håndtere så mange variabler på én gang, ser vi ingen anden løsning, end at tilgå vores View direkte. Med denne løsning, er udbygningen af informationstyperne, notes, contacts samt diary nu færdig. Således har alle tre typer den samme funktionalitet, nemlig at tilføje, slette, opdaterer samt at nulstille inputfelterne. De respektive informationstypers lister er desuden også sorteret efter henholdsvis navn og dato. Sorterings funktionen er ikke en funktion, vi umiddelbart selv har kunnet udarbejde. Vi har forsøgt først at skifte vores list elementer ud med elementet datagrid, men dette har ikke fungeret, og vi er har derfor rettet fokus tilbage på list. Vi er endt med at inkorporere en sorterings funktion, som er at finde på en ActionScript udviklernes hjemmeside. 20 Efter vejledning har vi besluttet os for at omstrukturere vores kode. Før har vores kode været struktureret som vist i bilag Q, med et view, en controller, en informationsklasse samt en klasse til hver af informationstyperne. Således har funktionaliteten været lagt ud i de enkelte informationstyper, hvor controlleren således kun har stået for tolkningen af brugerinputs. Vores omstrukturering af koden fremgår af bilag T. Heraf ses det, at vores kode nu består af et view, en informationsklasse, samt en controller og en klasse for hver informationstype. Således er det nu den enkelte controller, der besidder funktionaliteten til at ændre i modellen. Således er koden nu blevet mere fleksibel, og det er dermed lettere at udskifte elementer i vores program. 20 [3] Flex Exampels, sorting an arraycollection, Side 26 af 41

29 Vi har, i løbet af 3. iteration, også integreret Flex Scheduling Framework. Eftersom der ikke umiddelbart er nogen dokumentation eller opstartshjælp til brugen af FlexLib, har vi fundet inspiration i koden fra de eksempler, som folkene bag FlexLib har lavet. 21 Ved hjælp af denne kode, har vi således fået udbygget vores informationstype klasse calendar, således at man kan zoome ind og ud på tidslinjen, gå til det nuværende tidspunkt samt til det markerede element i tidslinjen. Vi har selv udviklet funktionerne til at tilføje nye elementer samt at slette elementer igen. Netop det, at slette elementer igen, har været det, der har voldt os allermest besvær. Vi har forsøgt, i første omgang, at bruge samme fremgangsmåde til at slette på, som vi har gjort brug af i de øvrige informationstyper. Men her er vi stødt på to problemer. For det første har det vist sig, at FlexLib ikke tildeler elementerne på viewet et index. Dette har skabt problemer for os, eftersom vi har forsøgt at lave vores slettefunktion på samme måde som i de tidligere informationstyper, nemlig ved at slette det valgte index. Vi har forsøgt, som løsning herpå, at slette ud fra aftalens navn. Her har det dog vist sig, at FlexLib ikke tillader, at man skriver til eller læser attributten label. Rent tilfældigt, har vi også forsøgt at slette ud fra aftalens starttidspunkt, og her er løsningen på vores problem. Vi har ikke kunne finde ud af netop, hvorfor denne starttid er unik, da to aftaler, oprettet til samme tidspunkt, har samme start tid, men ikke desto mindre virker det efter hensigten. Status efter 3. iteration Vi har i 3. iteration opnået at få FlexLib implementeret, og programmet opfylder nu kravene fra opgavestillingen. Udover FlexLib har vi også udvidet programmet til, at brugeren nu f.eks. kun kan skrive tal i tekstfeltet zipcode samt kun tal og + i tekstfelterne phone og mobile. Med kravet til FlexLib er det grundlæggende GUI layout også ændret. Vi valgte at placere funktionaliteten af FlexLib under appointments, således at bruger kan se en aftales varighed samt dato. Slutteligt har vi lavet en designmodel over det nuværende programs funktioner og attributter. Fokus for 4. iteration Da vi efter 3. iteration sidder tilbage med et færdigudviklet system, forventer vi igen at ændre visionen i 4. iteration. Da vi er i overskud af tid, vil vi benytte muligheden for alligevel at forsøge at 21 [4] Google Code, FlexLib, Side 27 af 41

30 gennemføre den vision, vi udtænkte i starten af hele processen. Vores fokus for 4. iteration er derfor at få udvidet PIM ens funktionalitet til at kunne gemme data. Dette bliver vores fokus, da vi mener, at vi med en sådan funktionalitet, har udviklet et fuldt funktionsdygtigt program. Derudover vil vi afslutningsvis lave sekvensdiagram, designmodel og use case diagram over den endelige opbygning. Dertil vil vi rette fejl og tilpasse kodearkitekturen samt måske rette GUI designet til. Side 28 af 41

31 Inception Elaboration 1. iteration 2. iteration 3. iteration 4. iteration 4. iteration Ved begyndelsen til 4. iteration, står vi tilbage med et færdigudviklet system, som har opfyldt vores vision. Med udsigten til en hel iteration, bestående af tre dage, har vi besluttet at udvide visionen ved stort set at ændre den tilbage til den oprindelige. Vi fornemmer et overskud af tid, som derved giver os mulighed for at opnå det fulde funktionsdygtige program, som vi gik efter fra starten. Dvs. at det kodemæssige fokus for 4. iteration bliver, at udvide PIM ens funktionalitet til at kunne gemme data. Derudover vil vi lave et sekvensdiagram, som bl.a. kan være med til at understøtte arbejdet med MVC og andre dele af den kodemæssige opbygning. Vi vil færdigudvikle vores use case, så den tilpasses det system, vi ender ud med. Dette vil ligeledes blive gjort med designmodellen, således at alle attributter og funktioner indskrives. Dertil vil vi rette fejl og tilpasse kodearkitekturen samt eventuelt rette GUI designet til. Slutteligt vil vi i 4. iteration færdiggøre rapportskrivningen, hvor refleksion og konklusion vil være i centrum. Vision Da dette er sidste iteration, kommer der her en endelig udformning af visonen: Vores vision med systemet er, at brugeren får et velfungerende system, hvori han/hun kan skrive informationer om sit liv og sine omgivelser. Vi ønsker at systemet skal indeholde informationstyperne contacts, notes, appointments, research og diary. Et velfungerende system i vores øjne indebærer, at systemet kan gemme nedskrevne data, selvom programmet lukkes ned, således at brugeren kan finde tidligere information frem, når der er brug for det. Vi vil gøre det let for brugeren at udfylde tekstfelterne i systemet. Dette gøres ved f.eks. kun at tillade tal i feltet til mobilnummer og kun tillade bogstaver i feltet til navn. Glossary Glossary fra 2. iteration forbliver uændret og ender altså som det endelige glossary. Side 29 af 41

32 Risks Vores risk for den 4. iteration, er at få programmet til at gemme data i form af et sharedobject. Designmodel Designmodellen er nu fuldt opdateret, således at den passer til det færdigudviklede system. Designmodellen er udbygget med to klasser, nemlig ResearchController og Research, således at data herfra også vil kunne gemmes i et sharedobject. Designmodellen for 4. iteration kan ses i bilag V. Use case Vores use case er nu fuldt opdateret, således at det passer til det færdigudviklede system, se bilag U. Den kodemæssige proces Efter to dages arbejde må vi erkende, at visionen alligevel ikke lykkes og, at gemmefunktionen altså ikke bliver en realitet. I løbet af iterationen har vi haft flere problemer med vores sharedobject. I første omgang lykkedes det os at få gemt vores data i et sharedobject. Vi havde dog problemer med, at vores sharedobject gemte data som objekter, og altså ikke som ønsket af f.eks. typen note. Vi troede i første omgang, at dette skyldtes en manglende tostring funktion på vores sharedobject, men en gennemlæsning af sharedobject viste, at denne altid bliver gemt i et tekst format, og dermed altid vil indsættes som typen object. Vores løsnings forsøg på dette problem blev, at oprette endnu en arraycollection, som skulle indeholde objekterne fra vores sharedobject. Fra denne arraycollection skulle objekterne så tilføjes til vores oprindelige arraycollection ved at konventer objekterne om til den korrekte type, f.eks. note. Det er dog ikke lykkes os at få dette til at fungere, hvorfor vi har valgt at udelade denne funktionalitet fra iterationen. I stedet har resten af iterationen været brugt til at skabe kodedokumentation samt at rette kritiske fejl i koden. En af disse fejlrettelser har været i vores scheduleviewer. Her har det hidtil været muligt for brugeren at indtaste en slut dato, der ligger før en start dato, hvilket ikke giver mening. ScheduleViewer angiver ikke selv nogle fejl ved en sådan indtastning, og derfor har vi først opdaget fejlen så sent. Fejlen er rettet ved, at slut datoens tilladte dato skal være lig den fra start datoen eller større. I forbindelse hermed har det også været nødvendigt at deaktivere slut datoen, så længe der ikke er indtastet nogen start dato. Side 30 af 41

33 Status efter 4. iteration Vi har i den 4. iteration måtte sande, at vi ikke kunne opnå vores vision om at kunne gemme data. Som tidligere nævnt, skyldes dette komplikationer med sharedobject. Til gengæld har den 4. iteration udmøntet sig i forbedret kodedokumentation samt fejl retninger. Vi har således også fået udarbejdet en designmodel over vores endelige program, se bilag V. Hermed er udviklingen af vores PIM afsluttet. Side 31 af 41

34 Den kodemæssige arkitektur Dette afsnit omhandler den kodemæssige arkitektur, dvs. processen med at indføre klasser, variabler og funktioner fra klassemodellen til programmeringsprogrammet Flex Builder. Denne proces er uafhængig af den iterative udviklingsproces, og omhandler begrundelser for valg af kode, beskrivelser af kodefunktionalitet og detaljerede redegørelser for specifikke kodeafsnit. Herunder vil vi komme ind på de tidligere nævnte GRASP-principper, samt Model-View-Controller (MVC). Formålet med afsnittet er, at vise vores forståelse for kodningsarbejdet og betydningen af de valg, vi har foretaget omkring kodestrukturen i et kodenært perspektiv. Som det ses i designmodellen (bilag V), har vi implementeret alle klasserne fra klassemodellen, hvilket vil sige, at hver type af information har fået sin egen klasse i kodningen. Det har givet god struktur og overblik, at hver type information har en selvstændig klasse. I disse klasser er der indsat variabler og funktioner, præcis som set i klassemodellen, hvilket giver et parallelt forløb mellem klassemodellen og kodningen. Designmodellen minder altså meget om klassemodellen, hvilket giver os et hint om, at koden ikke ligger langt fra den oprindelige model. Model-View-Controller Udover de fem typer af information, repræsenteret af hver deres klasse, er der implementeret yderligere tre klasser. Disse tre klasser udgør Model-View-Controller, forkortet MVC. MVC er et designmønster, som ofte bruges i udformningen af systemer med en brugergrænseflade. Kort og godt, bidrager MVC til en opdeling af systemet i tre dele, bestående af en model, en præsentation og en kontrollør. 22 Den første klasse, Information, forbindes med de fem typer information, med hvem den tilsammen udgør Model. Model håndterer domænets data og adfærd, ved f.eks. at reagere på instrukser om at ændre tilstanden (ofte fra Controller). Der kan kun gives instrukser og udføres ændringer gennem et Figur 2: Model-View-Controller 22 [2] Javabog, kapitel 19, Model-View-Controller, Side 32 af 41

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Hassansalem.dk/delpin User: admin Pass: admin BACKEND Hassansalem.dk/delpin User: admin Pass: admin BACKEND 1/10 Indledning Dette projekt er den afsluttende del af web udvikling studiet på Erhvervs Lillebælt 1. semester. Projektet er udarbejdet med Del-pin

Læs mere

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1 Spørgsmål 1 Unified Process Du skal give en beskrivelse af Unified Process. Beskrivelsen skal indeholde forklaring på følgende begreber: Phase Iteration Discipline Activity Milestone Artifact Spørgsmål

Læs mere

Tips og vejledning vedrørende den tredelte prøve i AT, Nakskov Gymnasium og HF

Tips og vejledning vedrørende den tredelte prøve i AT, Nakskov Gymnasium og HF Tips og vejledning vedrørende den tredelte prøve i AT, Nakskov Gymnasium og HF Den afsluttende prøve i AT består af tre dele, synopsen, det mundtlige elevoplæg og dialogen med eksaminator og censor. De

Læs mere

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1 Spørgsmål 1 Unified Process Du skal give en beskrivelse af Unified Process. Beskrivelsen skal indeholde forklaring på følgende begreber: Phase Iteration Discipline Activity Milestone Artifact Spørgsmål

Læs mere

Tips og vejledning vedrørende den tredelte prøve i AT, Nakskov Gymnasium og HF

Tips og vejledning vedrørende den tredelte prøve i AT, Nakskov Gymnasium og HF Tips og vejledning vedrørende den tredelte prøve i AT, Nakskov Gymnasium og HF Den afsluttende prøve i AT består af tre dele, synopsen, det mundtlige elevoplæg og dialogen med eksaminator og censor. De

Læs mere

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning: Introduktion til EA3 Mit navn er Marc de Oliveira. Jeg er systemanalytiker og datalog fra Københavns Universitet og denne artikel hører til min artikelserie, Forsimpling (som også er et podcast), hvor

Læs mere

Software Dokumentation

Software Dokumentation Software Dokumentation Jan Boddum Larsen Teknologi B og A på HTX Dokumentation af software i Teknologi I samfundet sker der en bevægelse mod mere digitale løsninger i teknologi. Det betyder at software

Læs mere

Vejledning til KOMBIT KLIK

Vejledning til KOMBIT KLIK Vejledning til KOMBIT KLIK KOMBIT A/S Halfdansgade 8 2300 København S Tlf 3334 9400 www.kombit.dk kombit@kombit.dk CVR 19 43 50 75 0 Version Bemærkning til ændringer/justeringer Dato Ansvarlig 1.0 Første

Læs mere

Svendeprøve Projekt Tyveri alarm

Svendeprøve Projekt Tyveri alarm Svendeprøve Projekt Tyveri alarm Påbegyndt.: 8/2-1999 Afleveret.: 4/3-1999 Projektet er lavet af.: Kasper Kirkeby Brian Andersen Thomas Bojer Nielsen Søren Vang Jørgensen Indholds fortegnelse 1. INDLEDNING...3

Læs mere

Guide til Mobilize Me v2.0. Original skrevet af:

Guide til Mobilize Me v2.0. Original skrevet af: Guide til Mobilize Me v2.0 Original skrevet af: Opdateret af Mobilize Me 18-09-2014 1 INDHOLD Login... 4 Planlægningsklienten... 4 Afviklingsklienten... 4 Guide til planlægningsklienten... 5 Opret ny aktivitet...

Læs mere

Vistemmernu. Et webbaseret værktøj udviklet af Programdatateket i Skive. E-mail: programdatateket@viauc.dk Web: http://www.programdatateket.

Vistemmernu. Et webbaseret værktøj udviklet af Programdatateket i Skive. E-mail: programdatateket@viauc.dk Web: http://www.programdatateket. Vistemmernu Et webbaseret værktøj udviklet af Programdatateket i Skive E-mail: programdatateket@viauc.dk Web: http://www.programdatateket.dk Kolofon HVAL-vejledning Vistemmernu på HVAL.DK Forfatter: Susanne

Læs mere

Case: Svømmeklubben Delfinen

Case: Svømmeklubben Delfinen 1. Semesterprojekt Datamatikeruddannelsen, 2. Obligatoriske opgave, efterår 2017 Case: Svømmeklubben Delfinen Svømmeklubben Delfinen er en mindre klub, der er i vækst. Klubbens ledelse ønsker derfor udviklet

Læs mere

Daglig brug af JitBesked 2.0

Daglig brug af JitBesked 2.0 Daglig brug af JitBesked 2.0 Indholdsfortegnelse Oprettelse af personer (modtagere)...3 Afsendelse af besked...4 Valg af flere modtagere...5 Valg af flere personer der ligger i rækkefølge...5 Valg af flere

Læs mere

ITWIN1. Afsluttende projekt. PhotoDays. Benjamin Sørensen (02284) Tomas Stæhr Berg (03539)

ITWIN1. Afsluttende projekt. PhotoDays. Benjamin Sørensen (02284) Tomas Stæhr Berg (03539) ITWIN1 Afsluttende projekt PhotoDays Benjamin Sørensen (02284) Tomas Stæhr Berg (03539) ITWIN1 - AFSLUTTENDE PROJEKT PhotoDays Benjamin Sørensen & Tomas Stæhr Berg 02284 & 03539 1 1 Underskrifter Rapporten

Læs mere

DIO. Faglige mål for Studieområdet DIO (Det internationale område)

DIO. Faglige mål for Studieområdet DIO (Det internationale område) DIO Det internationale område Faglige mål for Studieområdet DIO (Det internationale område) Eleven skal kunne: anvende teori og metode fra studieområdets fag analysere en problemstilling ved at kombinere

Læs mere

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX IT -Eksamen Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX [Vælg en dato] Indhold Indledning... 2 Teori... 3 Hvorfor dette design... 4 Produktet... 4 Test og afprøvning... 9 Konklusion... 10 Indledning

Læs mere

FORCE Inspect Online Manual v. 1.02. FORCE Inspect Online Manual. 1 af 18

FORCE Inspect Online Manual v. 1.02. FORCE Inspect Online Manual. 1 af 18 FORCE Inspect Online Manual 1 af 18 Indholdsfortegnelse Indholdsfortegnelse... 2 FORCE Inspect Online Manual... 3 Generelt... 3 Login... 3 Main... 4 Intro sektion... 4 Links sektion... 4 News sektion...

Læs mere

Indholdsfortegnelse... 2. Projektplan... 3. Vores research... 4 HCI... 5. Formidlingsmetode og teori... 6. Valg af Målgruppe... 8. Layout flyer...

Indholdsfortegnelse... 2. Projektplan... 3. Vores research... 4 HCI... 5. Formidlingsmetode og teori... 6. Valg af Målgruppe... 8. Layout flyer... Indholdsfortegnelse Indholdsfortegnelse... 2 Projektplan... 3 Vores research... 4 HCI... 5 Formidlingsmetode og teori... 6 Valg af Målgruppe... 8 Layout flyer... 9 Vores flyer... 10 Kildefortegnelse...

Læs mere

Dynamic Order Kom godt i gang

Dynamic Order Kom godt i gang Dynamic Order Kom godt i gang Projektstyring Ressourcestyring Kompetencestyring - Timeregistrering Side 1 af 17 Indholdsfortegnelse Dynamic Order Kom godt i gang... 1 Indholdsfortegnelse... 2 Introduktion...

Læs mere

Lavet af Danni jensen og David Olsen

Lavet af Danni jensen og David Olsen Projekt Delfin Lavet af Danni jensen og David Olsen 19/5-2008 Indholdsfortegnelse. Side 1: Indholdsfortegnelse og forord. Side 2: Kravsliste. Side 3: Use Case Model. Side 4: Formandens aktørbeskrivelse

Læs mere

DATABASE Projekt 1-3. semester

DATABASE Projekt 1-3. semester DATABASE Projekt 1-3. semester Gruppe 2- CLmul-a12e Projekt URL http://www.lucasperch.dk/projekter/database.pdf Gruppe 2 Lucas Perch-Nielsen cph-lp14@cphbusiness.dk http://lucasperch.dk/skole.php Niclas

Læs mere

Afsluttende Projekt - Kom/IT

Afsluttende Projekt - Kom/IT 1 Afsluttende Projekt - Kom/IT Rasmus H. Plaep 1 Billedkilde: http://blog.snelling.com/files/2015/01/business-107.jpg Indhold... 0 Indledning... 2 Problemafgrænsning... 2 Problemformulering... 2 Teori...

Læs mere

Programmering 19/03-2012 ROSKILDE TEKNISKE GYMNASIUM. Projektbeskrivelse. Programmering. Rasmus Kibsgaard Riehn-Kristensen

Programmering 19/03-2012 ROSKILDE TEKNISKE GYMNASIUM. Projektbeskrivelse. Programmering. Rasmus Kibsgaard Riehn-Kristensen ROSKILDE TEKNISKE GYMNASIUM Projektbeskrivelse Programmering Rasmus Kibsgaard Riehn-Kristensen 19-03-2012 Indholdsfortegnelse 1. Indledning... 3 2. Problemobservation.... 4 2.1 Egen erfaring... 4 3. Problemformulering...

Læs mere

F2 Godkendelser. Version 4.4

F2 Godkendelser. Version 4.4 F2 Godkendelser Version 4.4 Indholdsfortegnelse Generelt om F2 godkendelser... 3 Oversigt... 4 Oprettelse af godkendelse... 5 Skabelon... 5 Godkendelsesforløb... 6 Gem godkendelsesskabelon... 8 Godkendelsesoverblik...

Læs mere

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1 Spørgsmål 1 Unified Process Du skal give en beskrivelse af Unified Process. Beskrivelsen skal indeholde forklaring på følgende begreber: Phase Iteration Discipline Artifact Milestone Du skal relaterer

Læs mere

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin 2016-2017 Institution Uddannelse Fag og niveau Lærer(e) Hold Rybners Tekniske Gymnasium HTX Kommunikation/IT

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

Klasse 1.4 Michael Jokil 03-05-2010 HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk

Læs mere

Jysk Online Medie ApS - Vestergade 32, 8600 Silkeborg - Tlf.:

Jysk Online Medie ApS - Vestergade 32, 8600 Silkeborg - Tlf.: Brugervejledning til hjemmeside Kristian Kalajdzic Denne vejledning har til formål at hjælpe dig til at tilgå, vedligeholde og benytte din hjemmeside. Vejledningen henvender sig til hjemmesider bygget

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

ActiveBuilder Brugermanual

ActiveBuilder Brugermanual ActiveBuilder Brugermanual Forfatter: TalkActive I/S Dato: Juni 2004 Version: R. 1.01 Sprog: Dansk Copyright 2004 - Talk Active - all rights reserved. Indhold: 1. INDLEDNING...2 2. QUICK-START...3 3. OPBYGNINGEN

Læs mere

Automatisk Vandingssystem

Automatisk Vandingssystem Automatisk Vandingssystem Projektdokumentation Aarhus Universitet Gruppe 6-3. Semester - F15 vejleder: Michael Alrøe dato: 28-05-2015 Lærke Isabella Nørregård Hansen - 201205713 - IKT Kasper Sejer Kristensen

Læs mere

Afsluttende - Projekt

Afsluttende - Projekt 2014 Afsluttende - Projekt Rapporten er udarbejdet af Ali, Andreas og Daniel Vejleder Karl G Bjarnason Indholdsfortegnelse Indledning... 2 Case... 3 Design... 4 Python kalender:... 4 Poster:... 4 Planlægning...

Læs mere

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011

Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011 Spil Rapport Spil lavet i GameMaker Kevin, Mads og Thor 03-02-2011 Indholdsfortegnelse Indledning... 2 HCI... 2 Planlægning / Elementær systemudvikling... 2 Kravspecifikationer... 4 Spil beskrivelse...

Læs mere

Component based software enginering Diku 2005 Kritikopgave

Component based software enginering Diku 2005 Kritikopgave Component based software enginering Diku 2005 Kritikopgave Nicolas Møller Henschel 17. april 2005 1 Indhold 1 Indledning 3 2 Indhold 3 2.1 Introduktionen.......................... 3 2.1.1 Mangler..........................

Læs mere

HTX, RTG. Rumlige Figurer. Matematik og programmering

HTX, RTG. Rumlige Figurer. Matematik og programmering HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with

Læs mere

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

Gruppe: 2 Hold: MulB Årgang 2013 Lærere: Merete Geldermann Lützen & Jesper Hinchely

Gruppe: 2 Hold: MulB Årgang 2013 Lærere: Merete Geldermann Lützen & Jesper Hinchely Bannerpage: http://spicegirls.creativefolder.dk/bannerpage/ Landingpage: http://spicegirls.creativefolder.dk/ René Skovgaard Andersen cph-ra73@cphbusiness.dk Stig Hamborg Nielsen cph-sn9@cphbusiness.dk

Læs mere

Elektronisk signering manual 1.3

Elektronisk signering manual 1.3 Estatetool ApS support@systembolig.dk +45 70 20 11 90 ELEKTRONISK SIGNERING Elektronisk signering manual 1.3 Hvem har min. adgang til at styre denne funktion: Projektadmin Hvem har min. adgang til at benytte

Læs mere

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE

Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE Modul 2 Database projekt Multimediedesign 3. semester Gruppe 3 IRF/TUJE Fact sheet Indholdsfortegnelse Fact Sheet Gantt kort Valgt af virksomhed Brainstorm Attribut tabel ER-diagram Skitse MySQLWorkbench

Læs mere

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4

IT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4 IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...

Læs mere

Guide til din computer

Guide til din computer Guide til din computer Computerens anatomi forklaret på et nemt niveau Produkt fremstillet af Nicolas Corydon Petersen, & fra Roskilde Tekniske Gymnasium, kommunikation & IT, år 2014 klasse 1.2 12-03-2014.

Læs mere

Opgaveteknisk vejledning Word 2016 til Mac. Tornbjerg Gymnasium 10. december 2015

Opgaveteknisk vejledning Word 2016 til Mac. Tornbjerg Gymnasium 10. december 2015 Opgaveteknisk vejledning Word 2016 til Mac Tornbjerg Gymnasium 10. december 2015 Gem!!! Så snart et dokument er oprettet skal det gemmes under et fornuftigt navn, gør det til en vane at gemme hele tiden

Læs mere

Vejledning til indberetningsløsning for statslige aktieselskaber m.v. www.offentlige-selskaber.dk

Vejledning til indberetningsløsning for statslige aktieselskaber m.v. www.offentlige-selskaber.dk Vejledning til indberetningsløsning for statslige aktieselskaber m.v. www.offentlige-selskaber.dk 1 Offentlige-selskaber.dk s startside giver direkte adgang til at foretage en indberetning. Som en service

Læs mere

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau

Roskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau Roskilde Tekniske Gymnasium Eksamensprojekt Programmering C niveau Andreas Sode 09-05-2014 Indhold Eksamensprojekt Programmering C niveau... 2 Forord... 2 Indledning... 2 Problemformulering... 2 Krav til

Læs mere

Netbaseret spørgeskemaundersøgelse

Netbaseret spørgeskemaundersøgelse E-læringsmodul til samfundsfag i folkeskolen Netbaseret spørgeskemaundersøgelse It-færdighedsniveau: 1 2 3 4 5 Udarbejdet af: Hasse Francker Christensen Indhold af modulet Indholdsfortegnelse 1 - Hvorfor

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Tema 1. Gruppe 6 Mads Balslev & Kristian Gasberg. Vejledere Yngve Brækka Stensaker & Kristoffer Wendelboe

Tema 1. Gruppe 6 Mads Balslev & Kristian Gasberg. Vejledere Yngve Brækka Stensaker & Kristoffer Wendelboe Tema 1 Gruppe 6 Mads Balslev & Kristian Gasberg Vejledere Yngve Brækka Stensaker & Kristoffer Wendelboe Link http://des-iis.ucn.dk/mmda0914/1034387/ Database Mmda0914/1034387 Indledning Til dette projekt

Læs mere

Metodehåndbog til VTV

Metodehåndbog til VTV Metodehåndbog til VTV Enheden for Velfærdsteknologi KØBENHAVNS KOMMUNE SOCIALFORVALTNINGEN 1. udgave, maj 2017 Kontakt og mere info: velfaerdsteknologi@sof.kk.dk www.socialveltek.kk.dk 1 Indholdsfortegnelse

Læs mere

Vejledning til 5 muligheder for brug af cases

Vejledning til 5 muligheder for brug af cases Vejledning til 5 muligheder for brug af cases Case-kataloget kan bruges på en række forskellige måder og skabe bredde og dybde i din undervisning i Psykisk førstehjælp. Casene kan inddrages som erstatning

Læs mere

DATO DOKUMENT SAGSBEHANDLER MAIL TELEFON. 17. december 2015 Version 1.2 JobManager supporten

DATO DOKUMENT SAGSBEHANDLER MAIL TELEFON. 17. december 2015 Version 1.2 JobManager supporten DATO DOKUMENT SAGSBEHANDLER MAIL TELEFON 17. december 2015 Version 1.2 JobManager supporten Jobmanager@vd.dk 7244 7300 AFGIV TILBUD ENTREPRENØR Guldalderen 12 2640 Hedehusene vd@vd.dk EAN 5798000893450

Læs mere

DPSD undervisning. Vejledning til rapport og plan opsætning

DPSD undervisning. Vejledning til rapport og plan opsætning DPSD undervisning Vejledning til rapport og plan opsætning Side 1 Vejledning Oversigt over vejledningerne Opret en simpel listerapport... 2 Opret en krydstabuleringsrapport... 14 Opret en visualiseringsrapport...

Læs mere

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6 Side 1 af 6 Indholdsfortegnelse INDHOLDSFORTEGNELSE 1 INTRO 3 STARTEN AF SPECIALISERINGEN 3 ANKOMST TIL SKOTLAND 4 DATABASER 5 NETVÆRK 5 INTERAKTION 5 AFSLUTNING AF SPECIALISERINGEN 5 KONKLUSION 6 Side

Læs mere

App til indmelding af glemt check ud

App til indmelding af glemt check ud App koncept til indmelding af glemt check ud App til indmelding af glemt check ud 5. mar. 2015 Side 1 App koncept til indmelding af glemt check ud 1 Introduktion Flg. er en besvarelse til en idekonkurrence

Læs mere

Reflekstions artikel

Reflekstions artikel Reflekstions artikel Kommunikation/IT er et fag hvor vi lærer at kommunikere med brugeren på, og hvorledes mit produkt skal forstås af brugeren. Når man laver en opgave i faget, er det brugeren der lægges

Læs mere

HHBR. Design. Kvalitets vurdering. Opgaven. Målgruppe og Budskab. De Grafiske valg

HHBR. Design. Kvalitets vurdering. Opgaven. Målgruppe og Budskab. De Grafiske valg Opgaven Der skal designes en hjemmeside til en pensioneret revisor, som ønsker at starte en fritids beskæftigelse op, som privat revisor. Han Ønsker en hjemmeside der skal kort fortælle om hans forretning.

Læs mere

ALGORITMER OG DATA SOM BAGGRUND FOR FORUDSIGELSER 8. KLASSE. Udfordring

ALGORITMER OG DATA SOM BAGGRUND FOR FORUDSIGELSER 8. KLASSE. Udfordring ALGORITMER OG DATA SOM BAGGRUND FOR FORUDSIGELSER 8. KLASSE Udfordring INDHOLDSFORTEGNELSE 1. Forløbsbeskrivelse... 3 1.1 Overordnet beskrivelse tre sammenhængende forløb... 3 1.2 Resume... 5 1.3 Rammer

Læs mere

Manual til Kundekartotek

Manual til Kundekartotek 2016 Manual til Kundekartotek ShopPlanner Customers Med forklaring og eksempler på hvordan man håndterer kundeoplysninger www.obels.dk 1 Introduktion... 3 1.1 Formål... 3 1.2 Anvendelse... 3 2 Referencer...

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-2012 IT-vejleder: Karl G. Bjarnason

Læs mere

Når man skal udfylde i feltet: branche, kan det være relevant, at se valgmulighederne lidt igennem for at finde den mest passende.

Når man skal udfylde i feltet: branche, kan det være relevant, at se valgmulighederne lidt igennem for at finde den mest passende. Sådan opretter du en LinkedIn profil: - Først starter man med at klikke ind på LinkedIn.com På forsiden ser man en boks til højre på skærmen. Her har man mulighed for at oprette sin profil ved hjælp af

Læs mere

Inspiration til arbejdet med børnefaglige undersøgelser og handleplaner INSPIRATIONSKATALOG

Inspiration til arbejdet med børnefaglige undersøgelser og handleplaner INSPIRATIONSKATALOG Inspiration til arbejdet med børnefaglige undersøgelser og handleplaner INSPIRATIONSKATALOG 1 EKSEMPEL 03 INDHOLD 04 INDLEDNING 05 SOCIALFAGLIGE OG METODISKE OPMÆRKSOMHEDSPUNKTER I DEN BØRNEFAGLIGE UNDERSØGELSE

Læs mere

Software Design (SWD) Spørgsmål 1

Software Design (SWD) Spørgsmål 1 Spørgsmål 1 Unified Process Du skal give en beskrivelse af Unified Process. Beskrivelsen skal indeholde forklaring på følgende begreber: Phase Iteration Discipline Artifact Milestone Du skal relaterer

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Der er forsøgt skrevet en lille notits hver gang der er lavet noget, dog kan der være nogle ting som ikke er blevet kommenteret.

Der er forsøgt skrevet en lille notits hver gang der er lavet noget, dog kan der være nogle ting som ikke er blevet kommenteret. Indhold 1 Logbog 2 1.1 Log den 01-02-10.................................. 2 1.2 Log den 02-02-10.................................. 2 1.3 Log den 08-02-10.................................. 2 1.4 Log den

Læs mere

Sådan får du anvendt dit kursus i praksis. - Guide til at maksimere dit udbytte så du får størst værdi ud af dit kursus

Sådan får du anvendt dit kursus i praksis. - Guide til at maksimere dit udbytte så du får størst værdi ud af dit kursus Sådan får du anvendt dit kursus i praksis - Guide til at maksimere dit udbytte så du får størst værdi ud af dit kursus Introduktion Ifølge Robert Brinkerhoffs, studier om effekten af læring på kurser,

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Klassens egen grundlov O M

Klassens egen grundlov O M Klassens egen grundlov T D A O M K E R I Indhold Argumentations- og vurderingsøvelse. Eleverne arbejder med at formulere regler for samværet i klassen og udarbejder en grundlov for klassen, som beskriver

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Arduinostyret klimaanlæg Afsluttende projekt programmering C Arduinostyret klimaanlæg Afsluttende projekt programmering C Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleverings-dato: 02-03-2012 Afleverings-dato: 11-05-2012 Programmeringvejleder: Karl G. Bjarnason

Læs mere

Datatekniker med programmering som speciale

Datatekniker med programmering som speciale Datatekniker med programmering som speciale H2 H1 varer ti uger bestående af ti uddannelsesspecifikke fag. Indhold På H2 er der fokus på at integrere Objektorienteret Programmering i dine programmer. Fagene

Læs mere

kollegiekokkenet.tmpdesign.dk Side 1

kollegiekokkenet.tmpdesign.dk Side 1 kollegiekokkenet.tmpdesign.dk Side 1 Indholdsfortegnelse Forord 3 Problemformulering 4 Udviklingsmetode 5 Tidsplan 6 Målgruppe 7 Design brief 8 Logo 10 Typografi og farve 11 Navigationsdiagram 12 Usecase

Læs mere

Opgaveteknisk vejledning Word 2011 til Mac. Tornbjerg Gymnasium 10. december 2015

Opgaveteknisk vejledning Word 2011 til Mac. Tornbjerg Gymnasium 10. december 2015 Opgaveteknisk vejledning Word 2011 til Mac Tornbjerg Gymnasium 10. december 2015 Gem!!! Så snart et dokument er oprettet skal det gemmes under et fornuftigt navn, gør det til en vane at gemme hele tiden

Læs mere

ViKoSys. Virksomheds Kontakt System

ViKoSys. Virksomheds Kontakt System ViKoSys Virksomheds Kontakt System 1 Hvad er det? Virksomheds Kontakt System er udviklet som et hjælpeværkstøj til iværksættere og andre virksomheder som gerne vil have et værktøj hvor de kan finde og

Læs mere

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

Læs mere

2 Få adgang til CropNote

2 Få adgang til CropNote [1] CropNote brugerguide CropNote er et nyt system udviklet til DLBR virksomhederne. Systemet gør det muligt for DLBR centrene at udsende egne plantefaglige påmindelser til deres landmænd via FarmTracking

Læs mere

Vejledning til udfyldelse af ansøgningsskema vedrørende Kvalitetsudviklings og forskningsprojekter

Vejledning til udfyldelse af ansøgningsskema vedrørende Kvalitetsudviklings og forskningsprojekter Vejledning til udfyldelse af ansøgningsskema vedrørende Kvalitetsudviklings og forskningsprojekter Det er vigtigt, at ansøgningsskemaet udfyldes korrekt. Kun fyldestgørende ansøgninger kan indsendes til

Læs mere

Kræves det, at eleverne opbygger og anvender viden? Er denne viden tværfaglig?

Kræves det, at eleverne opbygger og anvender viden? Er denne viden tværfaglig? VIDENSKONSTRUKTION Kræves det, at eleverne opbygger og anvender viden? Er denne viden tværfaglig? Oversigt Mange skoleaktiviteter kræver, at eleverne lærer og gengiver de oplysninger, de modtager. Det

Læs mere

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge: Side 1 af 5 Ide med Diff. Min ide med differenertierings modulet er at lave et program som kan vise 3d objekter, og få lavede en konverter som kan konventer 3ds filer over til noget som flash kan bruge.

Læs mere

Indhold. Side 2 af 26

Indhold. Side 2 af 26 Tema Design Design, Programmering og test af Adressebog Fra d. 17 april til 20 april 2012 Vejledere: Gunhild Marie Andersen Kis Boisen Hansen Gruppe B Deltagere Side 1 af 26 Indhold Indledning.... 3 Kodestandard...

Læs mere

Aftenskole i programmering sæson Registrering af tid. Sæson 2 - Lektion 5

Aftenskole i programmering sæson Registrering af tid. Sæson 2 - Lektion 5 Registrering af tid Sæson 2 - Lektion 5 Før jul Vi har designet og bygget en model til håndtering af en timeregistrering Vi har kigget på hvordan vi håndterer fejl Vi har kopieret koden over i Bents x-code

Læs mere

Elevforudsætninger I forløbet indgår aktiviteter, der forudsætter, at eleverne kan læse enkle ord og kan samarbejde i grupper om en fælles opgave.

Elevforudsætninger I forløbet indgår aktiviteter, der forudsætter, at eleverne kan læse enkle ord og kan samarbejde i grupper om en fælles opgave. Undersøgelse af de voksnes job Uddannelse og job; eksemplarisk forløb 0-3.klasse Faktaboks Kompetenceområde: Fra uddannelse til job Kompetencemål: Eleven kan beskrive forskellige uddannelser og job Færdigheds-

Læs mere

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails

Casper Fabricius http://casperfabricius.com. ActiveRecord. O/RM i Ruby on Rails Casper Fabricius http://casperfabricius.com ActiveRecord O/RM i Ruby on Rails Casper Fabricius Freelance webudvikler - casperfabricius.com 9 års erfaring med webudvikling 6 år med ASP/ASP.NET/C# 3 år med

Læs mere

Vejledning: AMUUDBUD.DK

Vejledning: AMUUDBUD.DK Vejledning: AMUUDBUD.DK Henvendt til uddannelsesinstitutioner Websiden amuudbud.dk bruges af uddannelsesinstitutioner til at ansøge om godkendelse til at udbyde AMU. Du skal have modtaget en e-mail med

Læs mere

HCO Håndbyggede Cykler Online

HCO Håndbyggede Cykler Online HCO Håndbyggede Cykler Online Opgave beskrivelse Et nyudviklet koncept skal realiseres af en lille gruppe unge, danske cykelmekanikere og igangsættere. Ideen er at producere skræddersyede kvalitetscykler

Læs mere

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

Læs mere

Vejledning Rapportbanken

Vejledning Rapportbanken Vejledning Rapportbanken Version 1.2 (opdateret 18. november 2013) Support KL yder kun begrænset support på anvendelse af Rapportbanken. Brug derfor gruppen KOMHEN 2.0 på Dialogportalen (http://dialog.kl.dk)

Læs mere

Få din egen hjemmeside

Få din egen hjemmeside I dette afsnit lærer du at bygge din egen hjemmeside tilføje tekst og billeder lave dit eget design lægge en baggrund på hjemmesiden I næste nummer får du hjælp til at bygge en større hjemmeside til en

Læs mere

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4

Læringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 Læringsprogram Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 R o s k i l d e T e k n i s k e G y m n a s i u m Indholdsfortegnelse FORMÅL...

Læs mere

Førsteårsprøven 2015. Projektbeskrivelse 2. Semester Multimediedesigner

Førsteårsprøven 2015. Projektbeskrivelse 2. Semester Multimediedesigner Førsteårsprøven 2015 Projektbeskrivelse 2. Semester Multimediedesigner Projektbeskrivelse Formål Som afslutning på første studieår skal I gennemføre et tværfagligt projektforløb, der skal afspejle væsentlige

Læs mere

Kildehenvisninger. - Information og guide til korrekte kildehenvisninger

Kildehenvisninger. - Information og guide til korrekte kildehenvisninger Kildehenvisninger - Information og guide til korrekte kildehenvisninger Af: Emil Madsen Slotshaven Gymnasium d.12/12 2016 Indhold Hvorfor overhovedet kildehenvise?:... 1 Hvad er en kildehenvisning så?:...

Læs mere

Brugerskabte data en national service (BSD) - produktbeskrivelse

Brugerskabte data en national service (BSD) - produktbeskrivelse - 1 Brugerskabte data en national service (BSD) - produktbeskrivelse Brugerskabte data en national service (BSD) - produktbeskrivelse...1 Indledning...1 Formål...1 Beskrivelse...1 Basale krav til det bibliotek/website

Læs mere

Guide 3 Gode råd og anbefalinger om brugen af Ajour

Guide 3 Gode råd og anbefalinger om brugen af Ajour Guide 3 Gode råd og anbefalinger om brugen af Ajour 1 Indhold De efterfølgende sider indeholder gode råd og anbefalinger der kan benyttes i forbindelse med at du skal benytte Ajour. Inddragelse af underentreprenører:

Læs mere

Vejledning til udfyldelse af ansøgningsskema vedrørende Kvalitetsudviklings og forskningsprojekter Fonden for faglig udvikling i speciallægepraksis

Vejledning til udfyldelse af ansøgningsskema vedrørende Kvalitetsudviklings og forskningsprojekter Fonden for faglig udvikling i speciallægepraksis Vejledning til udfyldelse af ansøgningsskema vedrørende Kvalitetsudviklings og forskningsprojekter Fonden for faglig udvikling i speciallægepraksis Det er vigtigt, at ansøgningsskemaet udfyldes korrekt.

Læs mere

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

Læs mere

Afstande, skæringer og vinkler i rummet

Afstande, skæringer og vinkler i rummet Afstande, skæringer og vinkler i rummet Frank Nasser 9. april 20 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her.

Læs mere

Indholdsfortegnelse for kapitel 2

Indholdsfortegnelse for kapitel 2 Indholdsfortegnelse for kapitel 2 Kapitel 2. Analyse.......................................................... 2 Analyse af 2.1...................................................... 2 Analysen af Database.................................................

Læs mere

Vi samler billeder og laver katalog/planche/novelle

Vi samler billeder og laver katalog/planche/novelle Side: 1/6 Vi samler billeder og laver katalog/planche/novelle Forfattere: Thomas Brahe Redaktør: Cathrine Terkelsen Info: Undervisningsforløbet er udviklet i samarbejde med Klavs Styrbæk og Pia Styrbæk.

Læs mere