5. semesters projekt. Personalesystem. EDBskolen, Erhvervs akademiet Lillebælt Eksamensprojekt Efterår 2009 Vejleder: Per Larsen Dat07a Skrevet for

Størrelse: px
Starte visningen fra side:

Download "5. semesters projekt. Personalesystem. EDBskolen, Erhvervs akademiet Lillebælt Eksamensprojekt Efterår 2009 Vejleder: Per Larsen Dat07a Skrevet for"

Transkript

1 5. semesters projekt EDBskolen, Erhvervs akademiet Lillebælt Eksamensprojekt Efterår 2009 Vejleder: Per Larsen Dat07a Skrevet for Personalesystem Jørn Justesen: Kasper Holm:

2 Indholdsfortegnelse Projektetablering... 6 Problemformulering... 6 Indledning... 6 Overordnede krav til programmet... 6 Forventninger... 6 Underskrifter... 6 Foranalyse... 7 Interessentanalyse... 7 Strategianalyse... 7 Risikoanalyse... 8 Valg af udviklingsmodel... 8 Projektstyringsmodel... 9 Styring af de enkelte sprints (Jørn)... 9 Refleksion forhold til sprint 1 og 2 (Jørn) Faseovergang (Jørn) Afslutning af projektet (Jørn) Mål for produktet Product Backlog Proof of concept Subversion (Jørn) AnkhSVN Kdiff TortoiseSVN Google code Reporting Services (Jørn) Første Sprint Sprint backlog Argumentation Design (Jørn) Visning af en ansattes oplysninger(jørn) Database (Jørn) Fake it (kasper) city tabel (Kasper)

3 DCD Første sprint(kasper) Database connections (Jørn) Kontrol af lister af Employees(Jørn) Create Employee(Kasper) Create Employee ændringer(kasper) Login(Kasper) Hashing af adgangskoder (Jørn) Brug af SVN Reporting Services Sprint Review Konklusion på første sprint Andet sprint Sprint backlog Argumentation Database + backup(jørn) ER-Diagram(Jørn) DCD andet sprint (Kasper) Properties (Kasper) Ændre Properties (Kasper) Datamoddeler (Kasper) Employeebasis (Kasper) WebUserControl (Kasper) Reporting services generelt(jørn) Reporting services reporter(jørn) Installationsvejledning(Jørn) Computer Problemer(Kasper) Sprint review Konklusion på andet sprint Tredje sprint Sprint backlog Arbejdspakker til Authorise work Issues Argumentation Database (Jørn)

4 Menuen rapporter (Jørn) Redigering af Jobprofile (Jørn) WebUserControl ændret (Kasper) Create, Update Education(Kasper) Proof of concept på integrasion serviceses(kasper) Integration Services(Kasper) Find kvalificerede employees til en job profil (kasper) Sprint Review Forberedelse til Sprint review Konklusion på tredje spring Fjerde sprint Sprint Backlog Arbejdspakker til Authorise work Argumentation DCD fjerde sprint (Kasper) Database (Jørn) Find alle employees der passer til en Jobprofil (Jørn) Rapport der sammenligner en ansat med hans jobprofil (Jørn) Understøttelse i subversion (Jørn) Dynamiske rapporter (Jørn) Rapport der viser properties, uddannelser og kurser for en ansat (Jørn) Rettelser til Product backlog (Jørn) Create / Update Education Category (Kasper) Create / Update Unit (Kasper) Add / Remove Unit from / to a user (Kasper) Ændringer i EmployeeProberty(Kasper) Ændringer i Jobprofile (Kasper) Add traning need Indsæt test data i databasen Sprint Review Konklusion på fjerde sprint Femte sprint Sprint Backlog Arbejdspakker til Authorise work

5 Argumentation Database (Jørn) Tabeller omkring pris til et kursus (Jørn) Rapport der sammenligner en ansats properties med hans jobprofil(jørn) Tests Webserver hukommelse database (Jørn & Kasper) Complete Training need (Kasper) Opdatering på traning needs (Kasper) Create / Update Course (Kasper) Complete traning Page validation Sprint review Konklusion på femte sprint Afslutning af projektet Installationsvejledning Integration service installations manual (Kasper) Systemkrav (Jørn) Tests User stories Issues og arbejdspakker Projektstyring Sammenligning af produkter Konklusion Resume Produkt Proces Kildeliste

6 Projektetablering Problemformulering Vi er en gruppe bestående af Kasper Holm og Jørn Justesen. Som 5 semesterprojekt skal vi lave et nyt personalesystem til ADP. Vi forventer at opgaveperioden vil løbe fra den 17. august 2009 til den 30. oktober Indledning ADP står over for at skal have opdateret deres personalesystem, i den anledning har vi fået til opgave at udvikle et program i c# med web-interface og forbindelse til en MS sql server Kommunikationen mellem projektgruppen og ADP kommer til at foregå ved møder hver 14 dag. Målet med disse møder er at give virksomheden mulighed for at styre hvilke dele af systemet de vil prioritere at få lavet færdig. Derudover kommer kommunikationen til at foregå gennem mail eller telefonisk. Som forberedelse til projektet får vi mulighed for at se på strukturen i deres hidtidige database. Det er dog op til projektgruppen at modellere den nye database. Overordnede krav til programmet Der skal være 2 brugergrupper i programmet, en almindelig bruger del, til afdelingschefer, hvor adgangen kan begrænses til specifikke afdelinger og en administrator del med udvidet funktionalitet. Det skal være muligt at oprette forskellige profiler. Eksempelvis en medarbejderprofil eller en virksomhedsprofil. Disse kan bruges til at se hvilke medarbejdere der er kvalificerede til en opgave. Det skal være mulighed for at se grafik i programmet. Til at generere dette kan benyttes Reporting services. Se desuden alle krav til systemet i product backloggen Forventninger Det forventes at vi tager udgangspunk i dele af det tidligere personalesystems funktionalitet i programmet og at vi aftaler yderligere funktionalitet med Søren Krogager fra ADP. Desuden forventes det at systemet er så fleksibelt opbygget så det efterfølgende er nemt for andre at tilføje moduler til programmet. Underskrifter Jørn Justesen Kasper Holm Søren Krogager 6

7 Foranalyse Interessentanalyse Der er 3 interessenter i vores projekt. Projektgruppen, kontaktlæreren, og opgavestiller. Interessent Interesse Mulige handlinger Forholdsregler Projektgruppe Kontaktlæreren Opgavestiller Opgavestiller Opgavestiller Strategianalyse Fokusere på det sjove i at lave et færdigt system, frem for at lave en god rapport. Kan mangle tid til at vejlede os. Få Mest mulig kode ud af projektet. Få et system af høj kvalitet, så det er nemt at arbejde videre med. Nedprioritere projektet hvis han får travlt Prioritere programmering frem for rapportskrivning. Udskyde vejledning for at få tid til f.eks. at undervise. Presse på for at vi når mere. Rådgive os og fokusere på ændringer til produktet Aflyse møder Sørge for at der er afsat tid til rapportskrivning og fokusere på at en opgave ikke er færdig før der er skrevet teori til den. Tage fat i kontaktlæreren i god tid og booke faste møder med ham. Sørge for at der er afsat tid til rapportskrivning og fokusere på at en opgave ikke er færdig før der er skrevet teori til den. Lytte til opgavestiller og gennemføre ændringerne. Samtidig med at vi dokumenterer dette i rapporten. Finde en løsning i samråd med vores kontaktlærer. Da vi har arbejdet sammen i gruppen før, har vi en god idé om hinandens kompetencer og kan på den måde udnytte hinandens styrker. Vi laver en strategianalyse for hele projektet, altså både produkt og rapport. Mål og vilkår Styrke Svaghed Beslutning Teknik (Reporting services) Teknik (Subversion) Udvikler Resultat Bruger Vi har haft tid til at undersøge brugen af reporting services så vi på forhånd har prøvet at sætter det op og laver simple rapporter. Vi har lavet et grundigt proof of concept på subversion med de programmer vi forventer at bruge. Har brugt tid i sommerferien på at opnå viden om nye teknikker. Opgavestiller har givet udtryk for at han vægter et godt resultat højt. Der er en brugergruppe der har en interesse i at få indflydelse på systemet Vi ved ikke hvilke funktioner vi skal bruge og har fra starten kun meget begrænset kendskab til at lave rapporter med det. Begrænset kendskab til subversion, som vi forventer at udbygge under projektet. Ved ikke i detaljer hvor meget vi skal bruge teknikker. Vi har i tidligere projekter fokuseret mere på at få et færdigt produkt end at lave en god rapport. Det er ikke sikkert at brugerne har tid til at teste systemet for os. Vi har indkøbt en lærebog for at imødegå de problemstillinger der sikkert vil opstå. Har udvalgt produkter vi forventer dækker vores behov. Dog har vi ikke tjekket at alle de formater vi bruger er dækket i subversion. En person specialiserer sig i teknikken og underviser den anden i brugen heraf. Sætte tid af til rapportskrivning i hvert sprint. Give brugerne mulighed for at benytte systemet Tidligst muligt i projektet. Derved får de mulighed for at få indflydelse på systemet og vi får det 7

8 testet. Risikoanalyse Vi kan ikke se nogen punkter, hvor vores projekt skulle være udsat for specielle risici. De risici vi ser vurdere vi på en skala der går fra: - Lav, der bruges mindre tid på at løse problemet. - Moderat, løsningen af problemet kan tage mere end 1 mandedag. - Alvorlig, vi er nødt til at genestimere projektet. Risiko Sandsynlighed Effekt Forholdsregel General sygdom 30 % Lav Da der er udbrudt svin influenza der forventes at ramme 30 % af befolkningen må vi tage forbehold for dette. Vi forventer at et gruppemedlem kan arbejde hjemmefra under sygdommen og at vi kan bruge skype og subversion til at kommunikere og opdatere vores arbejde. Alvorlig Sygdom < 5 % Alvorlig Hjemme opgaver, hvis det er muligt og mere arbejde til de andre gruppemedlemmer. Hvis det er nødvendigt vil vi sænke målet for projektet. Fravær pga. andre årsager 20 % Lav Hjemmearbejde til det fraværende medlem så vi når vores planlagte arbejde. Computer sammenbrud 3 % Moderat Subversion sørger for backup, men der vil tabes tid på at få computeren til at virke igen. Mangler resurser til et 10 % Moderat Sørger rådgivning ved opgavestiller bestemt område eller emne Program ændringer på grund af misforståelser 20 % Moderat Vi har modtaget en database med testdata for at undgå dette. Desuden vil vi holde opgavestiller informeret for at om udviklingen i projektet. Mistet data 25 % Moderat Vi bruger subversion for at undgå dette. Mistet store mængder data < 1 % Alvorlig Hvis vi mister store mængder data og ikke kan hente det igen fra subversion må vi genestimere projektet. Valg af udviklingsmodel For at definere en projektmodel har vi valgt at analysere projektet ved at opstille krav til projektet og vurdere dem ud fra cockburn skalaen. Desuden benytter vi Larmans metodeklassifikation til at understøtte vores valg af formalisme og iterationer. I begge diagrammer er vores projekt markeret med sort. Vi måler kun på de udviklingsmodeller vi kender fra undervisningen. Cockburn skalaen Criticality/antal projektdeltagere Tab af liv Direkte tab af penge Indirekte tab af penge Scrum/UP Vandfald XP Tab af komfort Larmans metodeklassifikation 8

9 1 Iteration Vandfald Scrum Høj formalisme XP UP Der er tale om en lille projektgruppe der skal udvikle et system hvor en kritisk fejl kan medføre tab af komfort. Desuden forventer vi ikke at kompleksiteten gør det nødvendigt med en høj grad af formalisme dog skal vi være opmærksomme på at der skal videreudvikles på systemet efter vi er færdige med hovedopgaven. Derfor bliver vi nødt til at dokumenterer systemet med henblik på dette. Ud fra de 2 modeller ser vi det som oplagt at bruge enten scrum eller UP. Da vi før haft gode erfaringer med scrum vælger vi denne udviklingsmodel. Til at dokumentere projektet Vil vi benytte et ER diagram over databasen og et designklassediagram over programmet. Desuden vil vi gå ind i en dialog med product owner omkring, hvilken dokumentation der efterfølgende er brug for. Projektstyringsmodel Gennem ADP er vi blevet opmærksomme på projektstyringsmodellen Prince2. Blandt andet har vi fået lidt rådgivning i hvilke dele af modellen vi kan drage fordel af i vores projekt. Derfor vil vi benytte teknikker fra Prince2 til at: - Styre de enkelte sprints. - Faseovergang. - Afslutning af projektet. Vi blev første gang gjort opmærksomme på prince2 ved første sprint review. Men var ikke i stand til at skaffe litteratur omkring emnet før slutningen af sprint 2. Derfor er projektstyringsmodellen først implementeret fra sprint 3. Styring af de enkelte sprints (Jørn) Der er en stor lighed mellem faser i prince2 og sprints i scrum. Især fordi vi valgt at arbejde med scrum som en cyklisklignende udviklingsmodel, hvor vi med udgangspunkt i sprint meetings / reviews viser en demo af produktet og derudfra aftaler hvilke dele der skal arbejdes på i næste sprint. Ved at tilføje nogle teknikker omkring faser og faseovergange, kan vi opnå en bedre styring og et større overblik over sprintet. Udvikling Planlægning: (Sprint meeting og Udarbejdelse af dokumentation til sprintet) Evaluering (Sprint review) 9

10 For at styre faserne vil vi bruge følgende model: - Authorise work: Input af opgaver der uddelegeres med en rapport der beskriver hvor lang tid der er til rådighed til opgaven og en beskrivelse af opgaven. En opgavebeskrivelse bør ikke overskride et sprint, men i stedet splittes op i mindre dele. - Confirm work completion: Dette gør vi gennem rapporterne fra ovenstående punkt, hvor vi registrere hvornår de er udført og om den afsatte tid er overholdt. Desuden sætter vi i vores sprint backlog et tegn ud for de opgaver der er færdiggjorte. Sprint backloggen er altid skrevet på en tavle ved vores arbejdsplads for at holde fokus på opgaven. Desuden gennemgår vi rapporter og productbacklog ved sprint reviews for at få product owners godkendelse af løsningerne. - Capture and log issues: Omhandler alle de ændringer der tilføres projektet. Dette kan være alle former for ændringer der har indflydelse på projektet. En ændring kan komme fra product owner eller fra et af grupemedlemmerne. Når en opgave opstår, registrerer vi den med opgavenummer, forfatter opgavetype, beskrivelse, prioritet og status. - Analyse the impact of the issues: Dette gøres gennem samtale I gruppen under daily scrum og registreres med hvilke effekt sprintet, estimat på hvor lang tid det vil tage at løse opgaven og evt. risiko herved. - Review progress, quality work, issues and risk status: under et skal vi være opmærksomme på disse ting og reagere på dem hvis de opstår o Report progress to project board: ved Sprint reviews laves en rapport der præsenteres for produst owner. o Escalate problems to Project board: Hvis der opstår problemer vi ikke selv kan løse beder vi enten vores kontaktlærer eller procuct owner om rådgivning. 10

11 o Take corrective action: Hvis der opstår problemer vi selv kan løse laver vi en rapport over dette og løser problemet. Refleksion forhold til sprint 1 og 2 (Jørn) Under arbejdet med at opnå viden omkring Prince2 gik det op for os at denne projektstyringform kunne have sparet os for tid med hensyn til vores problemer med database serveren og reporting services. Hvis vi fra starten havde afsat tid til disse problemer ville vi tvinge os selv til at søge efter andre løsninger tidligere end vi endte med at gøre. Desuden ville formaliseringen omkring problemet med computernedbruddet i 2 sprint have mindsket forvirringen og irritationen, hvilket kunne have resulteret i en mere effektiv brug af den computer der stadig virkede. Desuden ser vi prince2 som en effektiv måde at dokumentere de arbejdsprocesser vi tidligere har haft problemer med. Faseovergang (Jørn) En faseovergang stiller krav til, hvordan et produkt afleveres efter et sprint. Forberedelsen til dette starter allerede under planlægningen af sprintet, hvor det er vigtigt at opnå product owners godkendelse af, hvilke opgaver der skal arbejdes på i sprintet. I praksis gør vi dette, under sprint meetings, ved at aftale hvilke user stories og rettelser der skal laves i systemet. Efter mødet vil vi så lave arbejdspakker ud fra disse aftaler. Dette kan ses i de 2 første punkter i nedenstående figur. Tredje punkt (Supervise the team s work) gøres gennem arbejdspakkerne og issues. Dette giver et godt overblik over hvordan fremdriften i sprintet forløber. Desuden opdater vi dagligt vores burndownchart, hvis en user story afsluttes, hvilket også er med til at give et mere overordnet billede over fremdriften. For at reportere på kvalitet og process sørger vi op til et sprint review for at udskrive: - Arbejdspakker. - sprint backlog og product backlog. - brundown chart for sprint og projektet. 11

12 - ER diagram og designklasse diagram. Da vi har en product owner der forstår disse kan vi lige så godt udnytte dette til at give ham et overblik over systemet. Desuden sætter vi systemet op til at kører på en lokal database og kopiere alt data til denne så vi kan vise et fuldt opdateret system. Dette gør det nemt for product owner at godkende arbejdet, eller give input til, hvilke ændringer der ønskes. Ændringerne udformes så til en arbejdspakke i det efterfølgende sprint. Afslutning af projektet (Jørn) Når projektet skal afsluttes vil vi tage udgangspunkt i nedenstående figur og de øvrige teknikker, inden for Prince2, der findes til at aflevere et produkt. Når projektet afsluttes står vi i en lidt speciel situation. Vi ved allerede fra projektstart at systemet ikke vil være færdigt. Derfor vil vi følge retningslinjerne for en tidlig afslutning af projektet. Det betyder at vi ved afleveringen af projektet vil lave en opgørelse over hvilke user stories der er opfyldt og hvilke der er godkendt af product owner. Derudover vil vi arbejde på at vi ikke har uløste arbejdsopgaver eller issues, hvis dette alligevel er tilfælde vil vi komme med anbefalinger om hvordan de kan løses. I prince2 vil man ved afslutningen af et projekt lave dokumentation over hvad man har lært under projektet. Meningen med dette er at øge virksomhedens vidensindeks til senere projekter. Ved at udforme dokumentationen giver man projektledere mulighed for senere at udnytte dette til at forbygge lignende problemer i senere projekter. Da dette projekt er en hovedopgave giver denne dokumentation ikke den samme fordel for ADP. Vi laver det dog alligevel da det giver os en mulighed for at reflektere over de erfaringer vi har gjort os i løbet af projektet. Dette bør indeholde fejl vi har gjort i processen, ting vi kunne have gjort bedre og ting der har fungeret optimalt og hvorfor de har fungeret. For at vurdere fordele ved det nye system frem for det gamle system vil vi sammenligne det produkt vi har lavet med det de har brugt indtil nu. Desuden vil vi snakke med product owner omkring hvorvidt hans forventninger er opfyldt, både med hensyn til det leverede produkt og det samarbejde vi har haft under projektet. Dette er dog ikke den normale procedure, Prince2 beskriver at projektlederen arrangerer et møde med kunden 1 måned et halvt år efter overdragelsen af produktet og her diskutere brugernes oplevelse af produktet. Der lægges her vægt på at det ikke er projektgruppens opgave at evaluere på produktet, men projektlederen i samarbejde med kunden. 12

13 En ting er at lave et produkt og dokumentere dette gennem en rapport. For at vores arbejde har været en succes bør vi have et mål om at vores software bliver brugt. For at sikre dette vil vi udforme en installationsvejledning til systemet. Denne vejledning skal forklare hvilke krav der stilles til server og hvilke måder programmet skal rettes til på. Mål for produktet Da vi vurderer personalesystemet til at være af en størrelse så vi ikke kan nå at færdiggøre det, i løbet af projektet vil vi fokusere på at det produkt vi aflevere skal være nemt at arbejde videre med. Dette betyder at vi ikke vil være bange for at bruge tid på at forbedre kode, hvis vi opdager fejl eller finder den uoverskuelig ved senere gennemlæsning. Hvordan produktet skal se ud ved slutningen af projektet afhænger af de sprint backlogs vi sammensætter ud fra vores sprint meetings. Dog er det et krav at vi har udbygget programmet nok til at kunne sammenligne jobprofiler med ansatte og finde ansatte der er kvalificerede til en stilling. Desuden må der ikke være ventetid på at udføre operationer i programmet. Vi ser hellere at der er en lille ventetid på at hente et modul i programmet. Vi måler fremdriften i projektet i 2 omgange. Vi laver burndown charts der viser fremdriften for de enkelte sprints. Desuden har vi et burndown chart vi vedligeholder efter hvert sprint. Dette burndown chart indeholder 2 grafer, en der viser fremdriften for hele projektet og en der er konstant og viser et mål for hvor langt vi skal være nået ved projektets afslutning. Alle fejl i programmet som vi kender til skal enten være rettet eller beskrevet så godt at de nemt kan laves af dem der færdiggøre skal programmet. Vi har 2 vigtige mål for projektet er at lave en rapport der giver en god beskrivelse af processen og produktet. Og lave et produkt der tilfredsstiller ADPS forventniger. Vi har valgt at lave en webbaseret løsning, for at give et hurtigt overblik over systemet har vi valgt at lave et deployment diagram der viser hvordan en bruger benytter vores system. Præsentation lag (web interface) Web Browser webserver Database server user Product Backlog Beskrivelse O P Sa M Sp V 1 Administratorer skal have mulighed for at oprette nye ansatte ,2 0,6 0,36 2 Brugerne skal have mulighed for at liste alle ansatte i deres egen afdeling i en rapport ,4 0,4 0,16 3 En bruger skal have mulighed for at vise basisinformationer omkring ansatte i de afdelinger brugeren har adgang til. De ønskede informationer kan ses i det gamle program ,2 0,2 0,04 4 Brugere skal kunne se hvilke kurser ansatte i deres afdelinger har taget ,4 0,4 0,16 5 Brugere skal kunne vise og oprette uddannelser, for ansatte de har rettigheder til at se ,4 0,16 6 Brugerne skal kunne se udviklingen i deres ansattes karriere ,4 0,4 0,16 13

14 7 Brugere skal kunne vise, oprette og ændre faglige kompetencer (properties) for ansatte de har rettigheder til at se ,2 0,6 0,36 8 Lav en rapport der viser en liste over en ansats properties sammenlignet med de krav hans jobprofil stiller. Der skal desuden være en kolonne der viser differencen på de 2 værdier ,4 0,8 0,64 9 Brugere skal kunne vise en ansats udvikling i faglige kompetencer for de ansatte de har rettigheder til at se ,4 0,16 10 Administratorer skal kunne oprette og ændre informationer for en jobprofil og brugere skal kunne vise informationerne , Administratorer skal kunne oprette og ændre uddannelsesinformationer ,4 0,8 0,64 12 Brugere skal kunne vise ansatte der lever op til en jobprofil. Dette skal både være muligt for de ansatte brugeren har rettigheder til at se og for alle ansatte ,8 1,2 1,44 13 Administratorer skal kunne ændre hvilke og hvor mange jobprofiler der er behov for i virksomheden, brugere skal kunne vise informationerne ,2 0,6 0,36 14 Brugere skal kunne se informationer omkring virksomheden. De ønskede informationer kan ses i det gamle program ,4 0,16 15 Brugere skal kunne vise en liste over ansatte der er i gang med et træningsforløb (course). Det skal desuden være muligt at afslutte træningen ,4 0,8 0,64 16 Brugere skal kunne se en liste over ansatte der har færdiggjort et træningsforløb i et tidsrum ,4 0,16 17 Administratorer skal kunne vise oprette og ændre kursusinformationer og omkostninger for kurser (course) ,4 0,8 0,64 18 Brugere skal kunne vise en rapport der lister alle ændringer i properties for en medarbejder ,4 0,16 19 Administratorer skal kunne vise et vidensindeks for virksomheden og historisk data herom. Et vidensindeks udregnes ved at summere uddannelsesniveauet for ansatte. Der bør også være en rapport der viser fordelingen af uddannelsesniveauer grafisk (Education category rating) ,8 0,64 20 Administratorer skal have mulighed for at oprette nye brugere af systemet ,4 0,16 21 Administratorer skal mulighed for at tilknytte afdelinger til brugere ,4 0,16 22 Administratorer skal mulighed for at oprette nye videnskategorier (qualification) ,4 0,16 23 Administratorer skal Mulighed for at tilknytte kompetencer til en videnskategori (qualification) ,4 0,16 24 Administratorer skal have mulighed for at oprette nye uddannelsesniveauer. (education category) ,4 0,16 25 Administratorer skal have mulighed for at oprette nye afdelinger ,4 0,16 26 Brugere skal have mulighed for at liste alle ansatte, de har rettigheder til at se, med deres summerede properties i forhold til deres jobprofil. Dette skal laves som en rapport ,4 0,16 27 Brugere skal kunne vise en liste med uddannelse, kurser og kompetencer for de ansatte brugeren har rettigheder til at se. Dette skal laves som en rapport ,8 0,6 0,36 28 Brugere skal have mulighed for at oprette træningsbehov for de ansatte brugeren har rettigheder til at se ,2 0,6 0,36 29 En bruger skal have mulighed for at se ansattes properties i et diagram, hvis han har rettigheder til at se informationer om den ansatte , En bruger skal have mulighed for at vise en ansats properties i forhold til hans jobprofil. Dette skal vises i et radardiagram , En bruger skal have mulighed for at vise udviklingen i en ansats kompetences i en valgt periode. Hvis brugeren har rettigheder til at se informationer for den valgte ansatte ,2 0,6 0,36 32 Brugere skal have mulighed for at vise en afdelings uddannelsesprofil. Denne består af en grafisk visning af uddannelsesniveauet i afdelingen ,4 0,16 14

15 33 Brugere skal have mulighed for at vise en afdelings mål for uddannelsesprofil. Denne består af en grafisk visning af målet for uddannelsesniveauet i afdelingen ,4 0,16 34 Vise en rapport med ansatte en bruger har rettighed til indeholdende deres properties og deres summerede properties ,2 0,6 0,36 35 En bruger skal have mulighed for at vise en ansats kompetencer i forhold til deres jobprofil. Dette skal gøres i en rapport i listeform ,4 0,16 36 En bruger skal have mulighed for at vise en liste med kvalifikationer krævet i en afdeling og ansattes kvalifikationer (qualifications) i forhold til ,2 0,6 0,36 37 Brugere skal have mulighed for at vise et diagram med virksomhedens behov for jobprofiler sammenlignet med det faktiske antal ,4 0,16 38 Brugere skal have mulighed for at vise et diagram over uddannelsesniveauet i virksomheden ,4 0,16 39 Brugere skal have mulighed for at vise virksomhedens mål for uddannelsesniveauet ,4 0,16 40 Brugere skal kunne vise mængden af ansatte i virksomheden med viden inden for udvalgte kvalifikationer ,2 0,6 0,36 41 Brugere skal have mulighed for at logge på systemet ,4 0,16 42 Brugere skal have mulighed for at ændre adgangskode til systemet ,4 0,16 43 Brugere skal have mulighed for at ændrer basisinformationer for en ansat ,4 0,16 I alt ,8 Efter at have estimeret på de enkelte user stories finder vi et samlet estimat ved at summere middelværdien for user storiesne. Derefter findes en standardafvigelse ved at tage kvadratroden af den samlede varians. Ved at multiplicere dette tal med 2 findes en dobbelt standardafvigelse der har 95 % chance for at holde. - Standard afvigelse: 3,6. - Dobbelt standardafvigelse: 7,2. Ifølge vores estimat skal vi bruge mellem 111 og 126 mandedage på at designe systemet. Derudover kommer tid til at skrive rapporten. Det vil sige at vi ikke kan forvente at færdiggøre systemet i projektperioden. Vi forventer i gennemsnit at lave 13 mandedages arbejde i løbet af et sprint. Dette vil dog variere i forhold til hvor mange andre opgaver der er i sprintet, derfor vil der i hvert sprint blive oplyst hvor mange dage der estimeres med. Vi vil i samarbejde med ADP beslutte hvilke user stories der skal arbejdes på i sprintet og derved sikre at vi færdiggøre de dele af systemet der giver virksomheden mest forretningsværdi. Da vi forventer at lave 65 mandedages arbejde (13dages gennemsnitligt arbejde x 5 sprints) og estimatet over systemet er på 119 mandedage forventer vi at der (med en afvigelse på 7,2) mangler mellem 47 og 61 dages arbejde når projektet stopper. Se et burndown chart for projektet under afsnittet afslutning af projektet. Proof of concept Før vi startede på projektet havde vi brug for at forberede os ved at teste om vi ville være i stand til at benytte de nødvendige funktioner / arbejdsgange. 15

16 Subversion (Jørn) Under tidligere projekter har et gentagende problem været, både for vores og andre grupper, været at versionsstyre koden under programmeringen. Dette har vi tidligere løst ved at bruge hele dage til at sidde og sammenflette den kode vi hver især har skrevet. Efter at have snakket med datamatikere ude den virkelige verden har vi fået indtryk af at mange virksomheder benytter Microsoft Foundation server til at sammenflette og versionsstyre kode. Ved at søge yderligere oplysninger omkring versionsstyring fandt vi frem til subversion 1 der er et open source projekt. Til første test satte vi subversion op med VirtualSVN 2, AnkhSVN 3 og Kdiff3 4. Som proof of concept lavede vi et backupprogram (screenshots af programmet kan ses i bilag 3 og kildekoden til programmet ligger i mappen Proof of Concept). Under udviklingen af programmet var vi begge i stand til at programmere på samtidigt og de konflikter der opstod når vi redigerede en fil på en gang løste vi hurtigt vha. Kdiff3. Den eneste mangel vi oplevede var en mulighed for at benytte systemet online, dette løste vi vha. Hamachi 5. Efterfølgende blev vi opmærksomme på google code 6 hvor man for mulighed for at oprette et projekt på deres server og dermed have online backup af arbejdet. Efter en hurtig test af dette kom vi frem til det endelige setup. AnkhSVN Tilføjer en menu (pending changes) til Visaul Studio der gør det muligt at Commit(skrive til subversion) eller Update(hente det nyeste opdaterede fra subversion) fra Visual Studio. Desuden er der mulighed for at skrive en kommentar til de ændringer man foretager, når man benytter Commit. Desuden viser programmet status på filerne i solution explorer ved at tilføje ikoner der viser deres stadie i forhold til filerne på SVN-serveren (til højre de mulige ikoner, til venstre eksempel på soulution explore) En subversion server, læs mere på: 3 En addon der gør det muligt at fortage versionsstyring fra Virsual Studio: 4 Et program der hjælper med at håndtere konflikter når man fletter 2 filer: 5 Et vpn-program der kan lave et LAN over internettet:

17 Kdiff3 7 Hvis der opstår en konflikt Benyttes Kdiff3 til at sammenflette koden så der igen opstår sammenhæng mellem: - Den kode man prøver at commit. - Den sidste kode man har updatet. - Den kode der er commitet mellem ens egen update og commit. Dette fungere ved at der vises 3 vinduer. Man kan så sammensætte koden til et nyt vindue og på den måde få ændringerne med. TortoiseSVN 8 Et program der bruges til at synkronisere med subversion gennem Windows explorer. Vi bruger dette til at versionsstyrer word-dokumenter og andet der ikke kan åbnes i Visual Studio. I Windows explorer kan man se hvilke filer man har commitet ved de ikoner der tilføjes til filerne. Google code 9 Bruges som server og kan administreres gennem vores Google-konti. De vigtigste funktioner her er muligheden for at: - Browse, se versionsnummer på og åbne filerne som tekstdokumenter 7 Se bilag 4 for screenshots Se bilag 2 for screenshots. 17

18 - Se de committede ændringer i projektet. Med rev. nr, noter til ændringerne, forfatter og tidspunkt for ændringerne. - Oprette spørgsmål til koden, hvis man har spørgsmål eller konstateret fejl. Reporting Services (Jørn) Gennem møder med Product owner er vi blevet opfordret til at sætte os ind i reporting services. Derfor har vi som forberedelse til projektet benyttet bogen Professional Microsoft SQL Server 2008 Reporting Services til at lære grundlæggende funktioner. For at klargøre vores computere til Reporting Services har vi installeret: - SQL Server 2008 med Reporting Service. - Microsoft Reporting Services Samples og sample databases fra Codeplex.com. Reporter til Reporting Services kan laves i Report Builder og BIDS (Business Intelligence Development Studio) vi har valgt at benytte BIDS da dette kan køre gennem Microsoft Visual Studio og derved giver et kendt udviklingsmiljø. For at skaffe viden omkring produktet har vi lavet nogle simple rapporter ud fra bogen og prøvedatabaserne og lagt dem op på en lokal rapport server. Desuden har vi lavet simple programmer til at vise og hente data fra rapporterne. Dette betyder at vi føler os bedre forberedt på at: - Udforme simple rapporter. - Tilknytte reporter til en rapportserver. - Opsætte parametre for rapporterne. - Hente parametre fra rapporterne og liste dem i en applikation. - Vise rapporterne i en applikation. Vi har dog ikke haft mulighed for at arbejde med adgangsbegrænsning til rapporter. Desuden ved vi på nuværende tidspunkt så lidt om de data vi skal vise at det ikke har været muligt at vælge relevante emner vi kunne gå i dybden med. Første Sprint Første sprint varer fra mandag den 17. august til fredag den 28. August, hvilket svarer til 20 mandedage. Heraf sætter vi 5 dage af til at skrive teori. Under estimeringen af første sprint har vi været hæmmet af ikke at kende den nuværende medarbejderdatabase i dybden, vi forventer dog at få den i starten af sprintet. Efter rådgivning fra Søren afsætter vi meget af dette sprint til udarbejde en ny database og er opmærksomme at vi kan komme til at arbejde med den igen i senere sprint. Sprint backlog Beskrivelse O P Sa M Sp V 1 Administratorer skal have mulighed for at oprette nye ansatte ,2 0,6 0,36 2 Brugerne skal have mulighed for at liste alle ansatte i deres egen afdeling i en rapport ,4 0,4 0,16 3 En bruger skal have mulighed for at vise basisinformationer omkring ansatte i de afdelinger brugeren har adgang til. De ønskede informationer kan ses i det gamle program ,2 0,2 0,04 20 Administratorer skal have mulighed for at oprette nye brugere af systemet ,4 0,16 41 Brugere skal have mulighed for at logge på systemet ,4 0,16 18

19 42 Brugere skal have mulighed for at ændre adgangskode til systemet ,4 0,16 43 Brugere skal have mulighed for at ændrer basisinformationer for en ansat ,4 0,16 41 Brugere skal have mulighed for at logge på systemet ,4 0,16 I alt 16,8 1,20 Standardafvigelse: 1,1 dage. Dobbelt standardafvigelse: 2,2 dage Ifølge vores estimering har vi arbejde til mellem 15 og 19 mandedage på dette sprint. Da vi har afsat 15 mandedage ligger dette lidt højt. Argumentation Design (Jørn) Under valg af design lagde vi vægt på at det skulle være hurtigt og let at overskue og have et menusystem der gjorde det hurtigt at komme rundt på siden. Som inspiration gik vi ind på og valgte at lægge os op af deres design med et sidehoved der indeholder logo og menu. I første omgang lavede vi dropdown menuer til punkterne i menuen, men efter vi begyndte at bruge systemet fandt vi det forstyrrende og tidskrævende. Derfor valgte vi at lave nye menuer der loades under hovedmenuen i stedet. Dette gør det meget hurtigere at navigere rundt i programmet. Visning af en ansattes oplysninger(jørn) I designet af en ansats oplysninger prøver vi at lægge os op af designet i deres gamle databaseapplikation. Det vil sige at vi får en side med basis informationer og en menu, hvor det er muligt at vælge andre informationer omkring den ansatte, f.eks. uddannelse, karriere og kurser. Her laver vi navnet i en dropdownlist så man hurtigt kan vælge mellem de ansatte (se bilag 9). Database (Jørn) Før vi fik den gamle personaledatabase fra ADP havde vi regnet med at det ville være nemt og forholdsvis hurtigt at lave en ny database ud fra tabellerne i den gamle database. Efter vi har haft mulighed for at se på den er det dog gået op for os at den er mere kompleks end først forventet, og væsentlig mere kompleks end de databaser vi tidligere har arbejdet med. Desuden indså vi hurtigt at vi ville komme til at kopiere mange af fejlene i databsen med, hvis vi lod os inspirere for meget af den. Derfor besluttede vi at lave en ny database fra bunden og kun oprette de tabeller der er nødvendige for at opfylde sprintets user stories. I første sprint betyder det at vi har fokuseret på de tabeller der er nødvendige for at hente basisoplysninger omkring en ansat og de oplysninger der er nødvendige for at lave et login. Et forløbig ER diagram over databasen kan ses i bilag 6. Fake it (kasper) Fake it er et princip fra test dreven systemudvikling vi har valgt at inkludere i vores projekt. Vi har valgt at inkludere det fordi at det er/kan være godt at bruge, hvis man skal teste om noget virker. Metoden går ud på at man altid returnerer en konstant hvis det ikke er muligt at returnere den korrekte variabel. Dette er smart fordi så lige meget input paramenterne, kan man se at den returnere den kontant, du har bedt den op. Også kan man altid bygge videre på sin metode, og stille og roligt komme frem til det endelige resultat. Dette gør, for mit vedkommende at jeg er mere tryg ved min kode og jeg har 100% styr på min kode. Der udover er det også godt til at lave hurtige 19

20 resultater, og det er super til prototype frem gangs metoden, da det handler om at vise noget der virker. Her kan man fake værdier, eller springe lag over i dit programs opbygning da du bare faker dig frem til dit resultat, man skal selvfølgelig rette op på disse ting som projketet skrider, frem men det er jo en del af fake it princippet. city tabel (Kasper) Vi har i vores database en tabel der indeholder postnumre og bynavne, de bruges som en fremmed nøgle til vores Employee tabel Dette er for at undgå redundans i databasen. da vi ikke ønskede at sidde og taste alle byer og postnumre ind i tabellen selv, hentede vi dem i en Excel fil fra Postdamarks hjemme sidde. Der efter skrev vi et lille program der gik ind og læste de nødvendige koloner og lagde dem over i vores database tabel, der opstod dog enkelte problemer, med at den ikke kunne holde forbindelsen til databasen, men efter et par forsøg fik vi alle postnumre og bynavne, over i vores tabel. DCD Første sprint(kasper) Vi har i vores Design Class Diagram har vi 3 klasser der ikke kører igennem Controller klassen: CustomMembershipProvider, CustomMembershipUser, CustomRoleProvider dette er fordi disse klasser bliver benyttet igennem asp.net forskellige login dele, og da vi ikke selv skriver nogle metode kald der, kan vi ikke rigtig påvirke den til at køre gennem controlleren. Derudover har vi employee og employees. Employee har vi lavet som en datatype, og som ligger kraftigt op af employee tabellen i databasen, dette har vi gjort for at nemt kunne sende en employee rundt i systemet i stedet for at boxe den, ved at pakke den ind i forskellige arrays. Employees klassen er den klasse der håndtere employee. Så er der unit, som er en datatype vi bruger flere steder i brugergrænsefalde, for at gøre det nemmere og mere overskueligt når vi skal bruge data fra databasen, og skal indsætte det steder i brugergrænsefalden, i dette tilfælde er det i en dropdownlist der skal indeholde forskellige afdelinger, til brug i createemployee.aspx og employeebasis.aspx (se bilag 8). Database connections (Jørn) For at mindske antallet af forbindelser til databasen har vi valgt at alle ansatte skal hentes ind i webserverens hukommelse når employee modulet startes op. Fordelen ved dette er at databaseserveren ikke skal kontaktes hver gang der skal listes nye informationer omkring en ansat og dermed bliver responstiden hurtigere. For at kunne gøre dette skal vi håndtere problemstillingen med at flere brugere samtidig skal kunne håndtere forskellige lister med ansatte. Dette kontrollerer vi med en singleton inspireret metode i Emplyees klassen (Se kodeeksempel i afsnit Kontrol af lister af Employees ) Metoden tjekker om brugeren har oprettet en liste af ansatte. Hvis brugeren ikke har hentet listen ind i webserverens hukommelse oprettes den og knyttes til brugeren. Kontrol af lister af Employees(Jørn) Da vi laver en hjemmeside skal det være muligt for flere brugere at tilgå lister af ansatte på samme tid uden at de kan se ansatte fra andre brugere. Dette løser vi med en singleton inspireret måde at hente sin liste af ansatte på. 20

21 public class Employees { private List<Employee> _employeelist; private static List<Employees> _instancelist; private string _user; private Employees(string user) { DB db = DB.GetInstance(); _user = user; _employeelist = db.employeelist(user); } public static Employees GetInstance(string user) { //Hvis der ikke er en liste over brugere, så opret en. if (_instancelist == null) { _instancelist = new List<Employees>(); } //Find den aktuelle bruger og retuner hans oplysninger. int userindexholder = 0; foreach (Employees emps in _instancelist) { if(user == emps._user) return _instancelist[userindexholder]; userindexholder++; } //Hvis brugeren ikke er på listen så tilføj ham med en //liste over hans ansatte. _instancelist.add(new Employees(user)); return _instancelist[_instancelist.count - 1]; } Dette betyder at første gang en bruger henter sin liste af ansatte bliver hans brugernavn gemt i _user og der laves et kald til databasen for at hente informationer omkring de ansatte han har rettigheder til at se. Disse informationer gemmes i webserverens hukommelse og hentes derefter herfra. Create Employee(Kasper) Da det skal være muligt at kunne oprette en employee, har vi lavet en side til dette (se billede her under) der er dog et par små fejl på denne side som vi har valgt at fake os ud af, da vi gerne ville kunne fremvise en virkende prototype, problemet opstår i den tomme dropdown boks, som skulle have den funktion at man skulle kunne vælge postnummer og derefter skulle den selv finde byen, dette er en ting som vi vil løse hurtigst muligt. vores måde at fake os ud af det på har været at hardcode et virkende postnummer, ind i metode kaldet, i det her tilfælde 7100, grunden til at det er et virkende postnummer er at postnumret er en fremmed nøgle i databasen, og skal derfor findes i city tabellen, ellers vil den ikke kunne oprette en ny employee. 21

22 Create Employee ændringer(kasper) Vi har opdateret vores Create Employee side da vi til at starte med havde nogle små ting der var faket på siden, dette var mere for at kunne bevise at vi kunne oprette en employee, og nu retter vi vores fake løsning til en mere holdbar løsning. det vi havde faket var postnummer dropdown boksen, og dette problem er nu løst ved vi har gjort sådan at der nu står både postnummer og by i dropdwon boksen, som er data vi henter fra databasen, og det er nu muligt at oprette en employee uden der er noget data der bliver faket. Login(Kasper) Vi har i vores projekt valgt at bruge det indbygget asp.net authentication, da vi mener dette skaber den største sikkerhed. Men da vores system ikke helt passer ind på standardsystemet, har vi været nød til at tilpasse det så vi kunne validere op mod vores egen database. Der er 3 ting der skal tilpasses når man skal kunne bruge asp authentication til sit eget system og det er MembershipProvider klasse MembershipUser klasse RoleProvider Klasse Vi startet med at lave en MemshipProvider klasse, da det er den der skal validere den bruger der logger in via asp login control, så vi startede med at lave en CustomMembershipProvider klasse, som vi satte til at arve fra MemshipProvider, som ligger i web.security namespacet, dette er en abstrakt klasse, og når vi sætter vores egen klasse til at arve fra den, kommer visualstudio og spørger om man vil implementere de nødvendige metoder med det samme, dette gør at man får en masse klasser og proberties, alle med en throw new NotImplementedException(), som bare betyder at man ikke har implementeret denne metode endnu. herefter skal man lige fortælle en web side at man ønsker at bruge asp authentication, og at man gerne vil gøre det med ens egen MembershipProvider og ikke standarden. Dette gør man selvfølgelig i web.config filen 22

23 Først aktivere vi asp authentication, og der efter fortæller vi den at den skal afvise alle brugere der ikke er logget ind. <authentication mode="forms" > <forms loginurl="login.aspx" name=".aspxformsauth" /> </authentication> <authorization> <deny users="?" /> </authorization> Og der efter fortæller vi den at vi ønsker at bruge en anden MembershipProvider end standarden <membership defaultprovider="custommembershibproviderkasperholm" userisonlinetimewindow="15"> <providers> <clear/> <add name="custommembershibproviderkasperholm" type="custommembershibprovider" connectionstringname="loginconn" enablepasswordretrieval="false" enablepasswordreset="true" requiresquestionandanswer="false" writeexceptionstoeventlog="false" /> </providers> </membership> Nu ville det være muligt at tage en asp login control, sætte den ind på en side også bruge den, den ville så gå til vores CustomMembershipProvider klasse og hoppe ned i ValidateUser metoden, som så returnere en bool, dette er selvfølgelig om bruger er godkendt eller afvist. Så vi startede her med at benytte os af FakeIt metoden fra Test dreven systemudvikling, og satte den til at returnere en konstant, og i dette tilfælde satte vi den til at returnere True, dette ville sige lige meget hvad man skriver i login felterne skulle man kunne komme ind på de beskyttede sider, og dette virkede også. Derefter begyndte vi at til føje dybde til metoden, så den tjekker de indtastede data op mod vores database, dette gør vi ved hjælp af en Stored procedure, som vi først havde til at tage både bruger og password som indput parametre, dette valgte vi at lave om til at den at kun at tage bruger navnet, da det ikke kan betale sig at tjekke passwordet nede i databasen, da den ikke er case sensitive, og det er vigtigt da det er kodeord vi har med at gøre. Create user controllen i asp.net benytter sig også af MembershipProvideren, nedenfor ser du den orginale create user til venstre, og til højre ser du vores Create user control. Vi har fjernet det hemelige spørgsmål da vi ikke mener det er realavant for vores system. Så det create user controllen gør at hente forskellige properties fra MembershipProvideren, så som hvor langt, et passwordet skal være og hvor mange alhanumeric chars der skal være. Dette er alt sammen ting man kan hardcode 23

24 ind i CustomMembershipProvider klassen. Dette har vi gjort, da dette system ikke har brug for at være så dynamisk igen. Alternativt er det muligt at skrive disse ting ind i web.config, også kan man bede den om at hente disse der fra. Når man så trykker på Create User, går den ind i vores CustomMembershipProvider klasse og bruger metoden CreateUser, som har en masse attributter i metode kaldet som vi ikke bruger. Her er Create User Controllen så smart at den bare sætter disse til null, og sørger for at der kun kommer værdier i dem vi skal bruge. MembershipUser klassen bliver brugt af asp.nets ChangePassword control, og et par metoder i MembershipProvider klassen, så det var nødvendigt for os at lave vores egen udgave af en da standarden i asp.net, desværre ikke passede 100% på de ting der var tilknyttet vores bruger, problemet var ikke at vi ikke havde nogle variabler der ikke var der. Tværtimod at vi havde mindre end dem der er i standarden, så vi lavede en CustomMembershipUser klasse, som vi satte til at arve fra MembershipUser klassen, hvor vi tilpasset constructeren så den passede til vores data. Da vi har 2 typer af brugere, administratorer og afdelingsledere, har vi brug for at kunne gøre sådan at der er visse dele af systemet som, afdelingslederene ikke kan komme ind på dette kan nemt gøres med asp authentication da det har en indbygget rolle funktion, som gør det nemt at tjekke om den enkelte bruger har en bestemt rolle og om han/hun har tilladelse til at være på siden. Heller ikke dette er svært at tilpasse, så det passer på systemet. Det er samme procedure som før, man opretter en ny klasse (CustomRoleProvider) og sætter den til at arve fra RoleProvideren, denne også ligger i namespacet web.security, og igen kan du vælge at Visual Studio skal oprette alle metoderne for dig. Derefter er det bare at gå i gang med at tilpasse de enkelte metoder, også skal man lige fortælle applikationen at den skal benytte din RoleProvider og ikke standarden, dette gøres inde i web.config filen. Det er også i web.config filen man skriver, hvilke roller eller brugere der skal have adgang forskellige sider. Derudover er det også muligt at sætte enkelte elementer til at kun at være vist hvis det er en adminstrator der er logget ind, dette gøres i koden, F.eks. på EmployeeBasis.aspx er der 2 knapper der skal være vist hvis det er en adminstrator der er logget ind, dette har vi løst ved at skjule knapperne, ved at sætte visible til false, som default i asp koden, men så i CS filen der tilhører siden laver vi et tjek på om brugeren er i den aktuelle rolle, dette gøres ved at skrive Roles.IsUserInRole("admin") som så kalder metoden IsUserInRole i CustomRoleProvider klassen, denne metode returnere en bool, som er true eller false alt efter om brugeren er i den role, i det her tilfælde rolen admin. 24

25 Hashing af adgangskoder (Jørn) 10 For at sikre adgangskoderne bruger vi en SHA256 hash med salt. Hashingen foregår ved at saltet oprettes i et bytearray af tilfældig størrelse. Derefter fyldes data på arrayet vha. en indbygget metode. saltbytes = new byte[saltsize]; RNGCryptoServiceProvider randomnumbergenerator = new RNGCryptoServiceProvider(); randomnumbergenerator.getnonzerobytes(saltbytes); Herefter omdannes passwordet i klartekst til et bytearray. Som med saltet findes der en indbygget metode til at klarer dette. HashAlgorithm hash = new SHA256Managed(); byte[] hashbytes = hash.computehash(plaintextwithsaltbytes); Nu samles de 2 passwords i et bytearray og hashes, hvorefter hashet og saltet samles i et nyt bytearray der omdannes til en string vha. Convert.ToBase64String(hashWithSaltBytes); og dette retuneres. Dette giver en ret høj sikkerhed da vi kun gemmer hashværdierne med saltet i databasen. Dermed får adgangskoderne tilfældig indhold. Her ses 2 Eksempeler på hashing af ordet password: Vi har valgt denne løsning da vi finder den passende i forhold til risikoen ved at udefrakommende får fat i adgangskoder til systemet og det arbejde det ville være at lave en mere sikker løsning. Brug af SVN Vores brug af svn har hjulpet os meget i løbet af første sprint. I starten af sprintet var vi meget opmærksomme på hvem der ændrede i de forskellige filer og at der blev commitet og opdateret efter selv små ændringer. Efter vi er blevet mere trykke ved systemet stoler vi så meget på det, at vi arbejder mere løst omkring hvor mange filer og ændringer vi laver på en gang. Selv med denne afslappede holdning har vi kun haft 1 konflikt som vi skulle løse manuelt. Dette var klaret på under 5 min. Vi har dog 2 gange oplevet problemer med midlertidige filer der forhindre en update. De gange det er sket har vi været nødt til at slette hele projektet fra vores lokale computer og hente det fra google code igen. Vi har dog identificeret grunden til problemet og ser det ikke som alvorligt da det ikke kan betyde datatab. Alt i alt har SVN sparet os for meget arbejde og gjort det muligt for os individuelt at fokusere på at løse og rette problemer uden at tænke på om ændringerne kommer med efter versionsstyringen. Reporting Services Vi har opsat en database og herunder installeret reporting services på en af skolens servere. Dog har det ikke været muligt at få kontakt til rapportserveren. Vi har efter en dags forsøg kontaktet itsupport for at hører om de havde en løsning på problemet som vi tror, har rod i sikkerhedsopsætningen af serveren. De måtte dog også give op og vi står nu med risikoen for at måtte opgive at gennemføre det på serveren og få det til at virke lokalt i stedet Indeholder information og kodeeksempler omkring hashing 25

26 Sprint Review Vi slår vores sprint review og sprint planning meeting til næste sprint sammen til et møde som vi fremover vil kalde sprint review. Sprint review for første sprint bliver holdt den 28/8 med Søren Krogager. Til mødet har vi lagt websitet online så vi kan vise en demo og give ham mulighed for efterfølgende at give andre adgang siden, så de kan komme med forslag til tilpasning. Desuden har vi spørgsmål til ham omkring hvorvidt det sikkerhedsniveau vi har valgt er passende og hvilke brugertyper der skal være i stand til at oprette nye ansatte. Til næste sprint foreslår vi at vi laver user story 4, 5, 7, 9 og desuden finde en løsning på vores rapport server problem. Til selve mødet havde vi ikke adgang til internettet og blev således nødt til at vise en lokal version af systemet. Vi gav dog en webadresse til siden, så der er mulighed for at teste systemet online. Konklusion på første sprint Vi har i første sprint haft en følelse af at arbejde meget effektivt og målrettet. Vi har haft overskud til at bruge tid på både den praktiske og den teoretiske del af opgaven. Vi har i dette sprint brugt ekstra tid på at planlægge projektet og opsætte en server der kan bruges til reporting services. Vi kommer til at bruge mere tid på sidstnævnte i næste sprint. Vi har også oprettet et projekt på google code til brug for subversion og testet at dette virker. Vi har desuden haft meget fokus på sikkerheden og derfor brugt tid på at sætte os ind i login og hashing af passwords. Problemerne med reporting services har betydet at vi ikke har kunnet færdiggøre user story 2 i vores sprint backlog. Den er dog forberedt så vi forventer hurtigt at kunne implementere den når vi får vores report server til at virke. Estimat Burndown Chart Dage Andet sprint Ved sprint meetinget til andet sprint blev vi enige om at arbejde på user story 2,5,7 og 9. Hvis vi får mere tid skal vi arbejde på at fylde mere funktionalitet på employee-delen. Vi diskuterede også vores problemer med reporting services og blev enige om at, hvis vi ikke får det til at virke i starten 26

27 af andet sprint, sætter vi det op på vores lokale computere i stedet. Desuden fik vi nogle kommentarer til vores arbejdsgang og til produktet. - Vi har backup af vores kode gennem svn, men mangler backup af databasen. Vi kan med fordel kopiere databasen ned på vores lokale computere og dermed mindske risikoen for datatab. - Vi havde en idé om, at vi senere i projektet ville lave et program til at flytte data fra deres gamle database til den nye. I stedet bør vi i dette sprint lave proof of concept på Visual Studio Intergression Service. Dette kan vi så benytte til at flytte data mellem databaserne når vi har færdiggjort den nye database. - Vi bør allerede nu tænke på dokumentation til setup og installation af programmet. - Vi havde lagt opret ansat under administration. Det ville være mere logisk at have denne funktion i forbindelse med den ansattes basisinformationer. Den bør derfor flyttes. - Vi havde valgt at liste medarbejdere i en Dropdownbox. Dette ønskes ændret til at alle medarbejdere listes på en side, hvor man kan vælge den ansatte. - Desuden bliver der i ADP lagt vægt på softwarekvalitet og vi bør derfor fokusere på at fejlrette produktet. - Vi bør desuden være opmærksom på om der senere bliver tilføjet moduler der kræver en hjælpe funktion. Vi tager dette til efterretning, men forventer ikke at det bliver nødvendigt, da alle brugere vil være edb- vante. Sprint backlog Beskrivelse O P Sa M Sp V 2 Brugerne skal have mulighed for at liste alle ansatte i deres egen afdeling i ,4 0,4 0,16 en rapport 5 Brugere skal kunne vise og oprette uddannelser, for ansatte de har ,4 0,16 rettigheder til at se. 7 Brugere skal kunne vise, oprette og ændre faglige kompetencer ,2 0,6 0,36 (properties) for ansatte de har rettigheder til at se. 9 Brugere skal kunne vise en ansats udvikling i faglige kompetencer for de ansatte de har rettigheder til at se ,4 0,16 I alt 10,6 0,84 Da vi skal tilpasse programmet til de rettelser vi kom frem til ved mødet, og desuden finde en løsning på vores problem omkring reporting services. Har vi valgt kun at fylde 4 user stoies på vores sprint. Med en dobbelt standard afvigelse på 1,8 giver det os mellem 9 og 13 dage. Argumentation Database + backup(jørn) Ved sidste sprint review blev vi opmærksomme på risikoen ved at vi ikke har backup af vores database. Derfor tager vi fra dette sprint én backup af databasen i hvert sprint. Dette forsøgte vi først at gøre ved at tage databasen offline og kopiere database filerne ned på vores lokale computere. Dette gav dog efterfølgende et problem da ingen af de brugere vi havde på serveren havde rettigheder til at ligge databasen online igen. Vi løste dette problem ved at få adgangskoden til en lokal administrator af serveren og bruge denne til at ligge databasen online. Efterfølgende kiggede vi på andre metoder til at lave backup af databasen. Og fandt frem til, at der i Sql server 2008 kan der genereres et script der opretter databasen med de tabeller, stored procedure m.m. der vælges. 27

28 Som forberedelse til at køre filen lokalt var vi nødt til at geninstallere Sql-server på en computer. Scriptet vi havde genereret var ikke understøttet i Sql-server-express som computeren kørte. Det har været en positiv oplevelse for os at opdage muligheden for at lave scripts der kan oprette databasen igen. Det gør det muligt hurtigt og nemt at lave backup eller flytte databasen rundt mellem computere. For fremtiden vil vi arbejde med databasen på databaseserveren og tager backup, hver gang vi laver større ændringer. Backuppen vil blive sikret gennem svn, og når vi får brug for en lokal kopi af databasen, kan den hurtigt oprettes. ER-Diagram(Jørn) Vi har tilføjet 2 nye arbejdsområder til databasen. En del der registrer kvalifikationer (properties) med en karakter for en ansat, og gør det muligt at se historisk data for disse. Dette registreres i tabellerne omkring parameter og properties. Den anden del af databasen vi har arbejdet på er registrering af informationer omkring en ansats uddannelse og de kvalifikationer (qualification) dette forventes at give. I arbejdet omkring en ansats uddannelser er det især hans qualification der har givet anledning til ændringer i forhold til deres tidligere database. Her lå de gemt i en tabel uden relationer, med det resultat at man skulle kunne huske tabellen, og de unikke koder på op til 5 ciffer i hovedet, for at kunne tilføje kvalifikationer. Dette havde den fordel at man kunne tilføje en hvilken som helst kvalifikation til en medarbejder (selv en kvalifikation der ikke eksisterede) uden at opleve nogen fejl i programmet. Arbejdet lå her i at forstå hvad formålet med tabellen havde været og implementer dette på en bedre måde. Resultatet i ER diagrammet blev en entitet med en n til m relation til entiteten uddannelsesinformation. Forskellen for systemet ligger i at der er skabt afhængighed mellem qualification og uddannelse og at der nu er mulighed for at registrere flere kvalifikationer på hver uddannelse. I forbindelse med en ansats properties ville vi gerne have en tabel der indeholdte de tilladte værdier for en property. Desuden overvejede vi flere forskellige løsninger for registrering af historikken. Til sidst valgte vi en løsning, hvor vi gemmer de kvalifikationer der er i brug i en tabel, og historikken i en anden tabel. Vi valgte denne løsning bevidst, selv om vi er klar over at der kommer en lille mængde redundant data i databasen. Den redundante data omfatter kun den data der gemmes i tabellen Emp_property da denne information også kan hentes fra historiktabellen. Vi vurdere at dette vil være en meget lille mængde data. Til gengæld føler vi at vi har en simpel og overskuelig løsning. DCD andet sprint (Kasper) Vi har siden første sprint tilføjet en del nye klasser, og vi har lavet lidt om i hvordan tingene løber igennem lagene. Til at starte med har vi tilføjet JobProfile, PropertyCategory, City, Education og Datamoddeller. Med undtagelse af DataModeller er alle de nye klasser i vores program datatyper. Dette vil sige at vi kun bruger dem til at indeholde data. Desuden bruger vi dem i flere af lagene, det vil sige at vi benytter dem i stedet for, at pakke vores data ind i arrays eller anden form for boxing. Dette er smart fordi, der så ikke ryger noget ekstra computer kræft på at konvertere data frem og tilbage hele tiden. Samtidig giver det en masse fordele oppe i GUI laget i forbindelse med databinds. 28

29 Desuden er unit blevet ændret så den nu ikke længere har forbindelse til databasen eller controlleren, dette klarer Datamoddeler nu for den(se bilag 8). Properties (Kasper) ADP har i deres personale system noget der hedder properties. Dette er egenskaber, og benyttes af flere forskellige ting, men til at starte med kobler vi det sammen med det vi har lavet. Altså hvilke egenskaber en ansat har, og hvad hans værdi på det enkelte emne er. For eksempel kunne C# være en property. For hver property der tilføjes en ansat vurderes han på en skala fra 1 7, hvor 7 er det bedste. For at sikre systemet mod fejlindtastninger har vi oprettet en tabel i databasen der indeholder skalaen. Samt en beskrivelse af den enkelte karakter dette har vi gjort fordi APD gerne ville have muligheden for at kunne ændre skalaen engang hvis det blev nødvendigt. Ændre Properties (Kasper) Det skal selvfølgelig være muligt at opdatere en ansats property, da det selvfølgelig er muligt for den enkelte ansatte at forbedrer sig på det enkelte område. Det er selvfølgelig også muligt at sænke en employees property hvis det er nødvendigt. Her kan man se designet til vores vis / opret / ændre property side. Det første man ser, er et gridview hvor man kan se hvilke properties den valgte ansatte har. Der er også mulighed for at ændre i personens mark, hvis det er nødvendigt. Lige neden under er det muligt at tilføje en ny property, hvis en ansat opnår en ny egenskab. Datamoddeler (Kasper) Datamoddeler klassen er lavet til at håndtere alle de datatype klasser vi har lavet. Det vil sige at den sørger for de datatyper som er konstante, og ikke som employees afhængige af brugeren. Datamoddeler håndtere altså kun data der er ens for alle brugere der er logget ind på siden. Employeebasis (Kasper) Efter vores scrum meeting i slutningen af første sprint. Hvor vi viste en prototype af systemet, havde product owner nogle små ændringer. Den ene lå i employebasis.aspx, hvor han mente det ville være naturligt at der var en knap til at kunne komme ind på siden create employee. Da vi var enige i dette lavede vi en knap som virker som et link til CreateEmployee.aspx. Denne kan kun ses af administratorrollerne, da det kun er dem der skal have mulighed for at oprette nye ansatte. 29

30 Samtidig lavede vi en update employee knap, som også kun kan ses af administratorrollerne, da vi mente at det var meget naturligt, at man kunne opdatere den enkeltes data. Hertil lavede vi også kode til så det virkede. WebUserControl (Kasper) Da vi på alle employees siderne har den samme ting til at stå i toppen af skærmen og da koden gentager sig på alle siderne. Fandt vi ud af at vi kunne lave en WebUserControl der indeholdte det vi skulle bruge. Derefter kunne vi genbruge den på alle siderne, i stedet for at skulle kopiere alt koden fra side til side. Dette er smart fordi, hvis vi ændrer i en linje skulle vi førhen ændre i alle siderne. Nu er det bare et sted vi skal ændre, og det er meget mere smart end at skulle ændre 10 steder. Der var dog et problem med at bruge en WebUserControl. Nemlig at det var at det der står i pageloaden på den, først blev udført til sidst. På nogle af vores sider var det påkrævet at det skete først. Vi løste dette problem ved at lave en redirect til den side man allerede er på i slutningen af vores webusercontrol. Dette er dog ikke en optimal løsning, da det gør at pageloaden bliver loadet 2 gange og det der står i if(!ispostback) også bliver kørt selvom det ikke er nødvendigt. Reporting services generelt(jørn) Vi har i dette sprint truffet beslutninger der løser vores problemer omkring reporting services. Vi har allerede brugt længere tid end forventet på opsætningen af skolens server. Og har endnu ikke opnået forbindelse til rapport serveren da vi ikke kan opnå rettigheder til at tilgå den. Desuden har vi opdaget at vores webhotel ikke understøtter reporting services. Derfor ville løsningen nu kræve at vi skaffede et nyt webhotel til at hoste websiden, og desuden løste problemet omkring database serveren. Derfor har vi valgt en anden løsning, hvor vi kører rapport serveren på vores egne computere og har databasen på serveren. Derved skal vi kun vedligeholde databasen ét sted. Dette betyder at vi ikke kan give product owner mulighed for at bruge websiden under udviklingen. I stedet vil vi op til sprint reviews, lave backup af databasen til en bærbar computer, som vi så kan tage med, og bruge til at vise product owner systemet. Dette giver lidt mere besvær da de enkelte rapporter skal vedligeholdes på begge vores computere. Til gengæld kommer det ikke til at have betydning for det endelige produkt da der stadig kun er en kodelinje der skal ændres for at tilpasse systemet til en ny rapport server. Reporting services reporter(jørn) Vi har i dette sprint færdiggjort de første 3 rapporter og gjort det muligt at se dem fra programmet. - Den første rapport viser en liste over de ansatte en bruger har rettigheder til at se. - Den anden viser en ansats uddannelser og de kvalifikationer uddannelsen giver. - Den tredje viser en ansats kvalifikationers historik. Rapporten til at kunne se en liste over ansatte der er tilknyttet en bruger kunne ligge under både menupunktet ansat og rapport. For at sikre en korrekt placering har vi taget kontakt til product owner og i samråd besluttet at ligge rapporten under punktet rapporter. Anden rapport kom til at ligge under ansat da det i sammenhæng hermed skal være mulighed for at tilføje nye uddannelser. Tredje rapport havde vi placeret under menuen ansat, men efter samtale med product owner blev vi bedt om også at tilføje den til menupunktet rapporter. For at hente en rapport gennem koden skal man først tilføje namespacet: 30

31 using Microsoft.Reporting.WebForms; Hvis rapporten skal modtage parametre oprettes der et array der kan indeholde disse: ReportParameter[] parameters = new ReportParameter[1]; parameters[0] = new ReportParameter("emp_Id", Session["selectedemp"].ToString()); Der laves en henvisning til rapportserveren og rapporten. Desuden besluttes om der skal være muligt at ændre parametre når rapporten kører og hvis parametre er sat sendes de til rapporten: ReportViewer1.ServerReport.ReportServerUrl = DataModeller.ReportUlr; ReportViewer1.ServerReport.ReportPath = "/EmployeeEducation"; ReportViewer1.ShowParameterPrompts = false; ReportViewer1.ShowPromptAreaButton = false; ReportViewer1.ServerReport.SetParameters(parameters); Ved rapporten der viser en ansats uddannelser skal rapporten opdateres hvis der vælges en ny ansat: ReportViewer1.ServerReport.Refresh(); Installationsvejledning(Jørn) Under sidste sprint review blev vi bedt om at gøre os nogle overvejelser angående installation af systemet. Allerede i første sprint var vi opmærksomme på at gøre dette nemt ved at databasen altid tilgås gennem den samme connection string, gemt i en variabel. I beslutningen om hvor forskellige konstante variabler skal placeres har vi diskuteret 2 muligheder: - At placere dem som statiske attributter, med tilhørende properties, i en klasse, hvorfra man henter dem rundt i programmet. På den måde ville de være nemme at finde frem til når systemet skulle implementeres på nye servere. - At placere dem logiske steder i koden, så de ligger i det miljø de naturligt bruges i. Fordelen ved dette er at de ligger lige ved hånden når der skal ændres i koden. Da vi ikke ved om systemet bliver installeret mens vi stadig står til rådighed har vi valgt løsningen, hvor vi placere alle de variabler de senere kunne tænkes at ændre i vores Datamodeller klasse. På denne måde bliver den del af dokumentationen til programmet nemmere at beskrive og forstå. Desuden forventer vi ikke at det vil give store problemer, at finde frem til disse variabler, hvis der senere skal arbejdes videre på systemet. Derfor er vores database string placeret i Datamodeller klassen og i sprint 2 skal vi desuden hente rapporter fra rapportserveren. Til dette benytter vi igen en string placeret i klassen Datamodeller. Computer Problemer(Kasper) Vi har i 2 sprint oplevet nogle computer problemer, da det ene medlem af gruppens computer brændte af. Her gik der selvfølgelig noget tid med at finde ud af om det var muligt, at finde en låne computer eller en anden løsning på problemet. 31

32 Der gik 2 dage med at finde en låne computer og få sat den op med programmer osv. Her var det godt vi havde subversion til version styring. Dette gjorde at der ikke gik så meget data tabt, og det var nemt at få projektet over på lånecomputeren. Det samme gør sig gældende når den rigtige computer kommer frem igen, der bliver det dejligt nemt at få både projektet og produktet opdateret til den nyeste version. Sprint review Til sprint review den 11. september har vi færdiggjort user story 2, 5 og 7. User story 9 er ret tæt på at være færdig, da det på nuværende tidspunkt er lavet GUI hertil, og da det er muligt at se en ansats faglige kompetencer. Derfor regner vi regner med at overføre denne user story til næste sprint. Herefter foreslår vi at der startes på jobprofil da dette kan øge kompleksiteten i programmet, og vil hjælpe til at færdiggøre databasen. Desuden har vi følgende spørgsmål angående systemet: - Vi har kigget på Intergration services, og har problemer med at forbinde til den gamle database, da der skal forbindes gennem en sikerhedsfil. Eksempelvis har vi lavet en genvej med nedenstående sti for at starte databasen. Vi kan dog ikke benytte denne sti til at give Intergration services adgang til databasen. Og vil hører om der er ansatte ved ADP der ved om det er muligt at oprette forbindelse uden filen Secured.mdw. "C:\Program Files (x86)\microsoft Office\Office12\MSACCESS.EXE" "D:\ADP\ADPInnovation(V1.1 - Demo).mdb" /WRKGRP "D:\ADP\Secured.mdw" - Vi har gjort os nogle overvejelser omkring dokumentation til installation og har nedskrevet de vigtigste ting, men vil gerne høre lidt mere om hvilke detaljer de forventer. Konklusion på andet sprint Andet sprint har været meget problemfyldt. Vi vidste at der ville være serverproblemer og havde sat tid af til dette. Dog har det virket forstyrrende og frustrerende først at have problemer med serveren, og derefter have en computer der brændte sammen. Desuden har vi været nødt til at droppe vores planer om at have en webserver, hvorfra brugere kunne starte på at bruge systemet. Der er dog også positive input i dette sprint, vi har fået lavet de første rapporter, og kan vise dem fra programmet. Og selv om vi har haft et computernedbrud kunne konsekvenserne have været meget værre, hvis vi ikke havde brugt subversion. Vi er dog kommet igennem sprintet med et tilfredsstillende resultat med én manglende user story. Da vi er godt i gang med denne ser vi ikke dette som et stort problem. 32

33 Estimat 12 Burndown chart for andet sprint Dage Tredje sprint Tredje sprint varer fra mandag den 14. september til fredag den 25. september. Da vi på nuværende tidspunkt mangler at beskrive dele af andet sprint, sætter vi 7 mandedage af til at skrive teori. Dette betyder at vi har 13 mandedage til rådighed i dette sprint. Ud over tingene i vores sprint backlog har vi følgende input fra sidste sprint meeting: - Listerne med kvalifikationer og medarbejdere har et meget massivt design, dette ønskes forbedret ved at vi fjerne knapperne og finde en anden løsning. - I alle rapporter skal overskrifterne rettes så de ikke står med fed. - Rapporten for historikken over en ansats kvalifikationer bør ligge under menupunktet rapporter og samtidig være tilgængelig når man kigger på en ansats kvalifikationer. - Vi skal finde en løsning på problemerne med Intergretion services og sikkerheden i deres gamle database. For at hjælpe os vil product owner finde frem til den medarbejder der har oprettet sikkerheden, og høre om han kan hjælpe os. Sprint backlog Beskrivelse O P Sa M Sp V 7 Brugere skal kunne vise, oprette og ændre faglige kompetencer (properties) for ansatte de har rettigheder til at se ,2 0,6 0,36 10 Administratorer skal kunne oprette og ændre informationer for en jobprofil og brugere skal kunne vise informationerne , Administratorer skal kunne oprette og ændre uddannelsesinformationer ,4 0,8 0,64 12 Brugere skal kunne vise ansatte der lever op til en jobprofil. Dette skal både være muligt for de ansatte brugeren har rettigheder til at se og for alle ansatte ,8 1,2 1,44 I alt 19 3,44 Med en standardafvigelse på 3,44 giver det os en sprint backlog på mellem 15 og 23 dage, hvilket er over de 13 dage vi har til rådighed. Da der ikke er taget højde for at vi har arbejdet på user story 7 i sidste sprint ser vi det dog alligevel som muligt. Det kræver dog at vi ligger lidt ekstra arbejde i, at nå user storiesne i dette sprint. 33

34 Arbejdspakker til Authorise work Arbejdspakke 1: Jørn den 11. september Forbered databasen til user stories for sprint 3. Opgaven bør løses på 3 timer. Opgaven er løst den 14/9 af Jørn inden for tidsgrænsen. Arbejdspakke 2: Jørn den 11. september Opnå forbindelse til testdatabasen gennem Intergretion services og hente tabeller fra den. Opgaven bør løses på 1 dag. Opgaven er løst den 14/9 af Jørn og Kasper inden for tidsrammen. Arbejdspakke 3: Jørn den 11. september Forbedrer designet til kvalifikationer og medarbejdere. Resultatet skal være mindre massivt end det er nu. Opgaven bør løses på 5 timer. Opgaven er løst den 16/9 af Kasper inden for tidsrammen. Arbejdspakke 4: Jørn den 11. september Ændre overskriften i rapporterne, til reporting services så de ikke står med fed. Opgaven bør løses på ½ time. Opgaven er løst den 16/9 af Jørn inden for tidsrammen. Arbejdspakke 5: Jørn den 11. september Rette placeringen for rapporten for en ansats properties, så den ligger under både ansat og rapporter. Læg mærke til at rapporten skal kaldes på forskellige måder. Med parametre fra ansat og uden fra rapporter. Opgaven bør løses på 2 timer. Opgaven er løst den 21/9 af Jørn inden for tidsrammen. Læs mere under afsnittet Menuen Rapporter. Arbejdspakke 6: Jørn den 11. september Vi skal flytte data fra testdatabasen til vores egen database. Dette bør først testes lokalt for at undgå problemer med den database vi arbejder på. Opgaven bør løses på 2 dage. Opgaven er ikke løst. Der dog lavet proof of concept, hvor der flyttes data til den nye tabel. Lavet den 24/9 Kasper. Der er ikke blevet flyttet data der har relation til uddannelse da vi har opdaget en fejl i tabellen. Læs mere i afsnittet om Integration services og issue 6. Arbejdspakke 7: Jørn den 11. september Tilføj kode til user story 7 så det bliver muligt at oprette en property. Opgaven bør løses på 3 timer. 16/9 Kasper inden for tidsrammen. Arbejdspakke 8: Jørn den 11. september Tilføj kode til user story 7 så det bliver muligt at opdatere property. Opgaven bør løses på 2 timer. 16/9 Kasper inden for tidsrammen. Arbejdspakke 9: Jørn den 11. september Lav stored procedures til user story 10 så det bliver muligt at oprette og opdatere informationer omkring en jobprofil i databasen. Opgaven bør løses på 3 timer. Opgaven er løst den 16/9 af Jørn inden for tidsrammen. Arbejdspakke 10: Jørn den 11. september Lav brugergrænseflade til user story 10. Opgaven bør løses på 5 timer. Opgaven er løst den 17/9 af Kasper og Jørn inden for tidsrammen. Arbejdspakke 11: Jørn den 11. september 34

35 Lav kode til user story 10 så det bliver muligt at se informationer omkring en jobprofil. Opgaven bør løses på 2 timer. 17/9 Kasper inden for tidsrammen. Arbejdspakke 12: Jørn den 11. september Lav kode til user story 10. Så det bliver muligt at oprette nye jobprofiler. Jobprofiler skal vedligeholdes i både webserverens hukommelse og databasen. Opgaven bør løses på 3 timer. Opgaven er løst den 18/9 af Jørn inden for tidsrammen. Arbejdspakke 13: Jørn den 11. september Lav kode til user story 10. Så det bliver muligt at ændre jobprofiler. Jobprofiler skal vedligeholdes i både webserverens hukommelse og databasen. Opgaven bør løses på 3 timer. Opgaven er løst den 22/9 af Jørn inden for tidsgrænsen Arbejdspakke 14: Jørn den 11. september Lav brugergrænseflade til user story 11. Opgaven bør løses på 2 dage. Opgaven er løst den 24/9 af Kasper inden for tidsrammen. Arbejdspakke 15: Jørn den 11. september Lav stored procedure til user story 11. Opgaven bør løses på ½ dag. Opgaven er løst den 24/9 af Kasper inden for tidsrammen. Arbejdspakke 16: Jørn den 11. september Lav kode til user story 11. Opgaven bør løses på 1 dag. Opgaven er løst den 24/9 af Kasper inden for tidsrammen. Arbejdspakke 17: Jørn den 11. september Lav brugergrænseflade til user story 12. Opgaven bør løses på 1½ dag. Opgaven er løst af Kasper den 22/9 indenfor tidsrammen. Arbejdspakke 18: Jørn den 11. september Lav kode til user story 12, Koden skal tage informationer fra en jobprofil og sammenligne disse data med ansatte fra de afdelinger en bruger har rettigheder til at se. Opgaven bør løses på 3 dage. Opgaven er løst af Kasper den 22/9 indenfor tidsrammen. Arbejdspakke 19: Jørn den 18. september Lav brugerinterface til user story 10. Så det bliver muligt at Oprette nye jobprofiler. Opgaven bør løses på 3 timer. Opgaven er løst den 18/9 af Jørn inden for tidsrammen. Arbejdspakke 20: Jørn den 24. september Lav et program der kan fylde testdata på databasen. Dette bør gøres for at give bedre mulighed for at teste systemet. Både med hensyn til responstider, tests på om de data systemet giver retur er korrekte og omkring de visninger vi bruger i brugergrænsefladen. Vi mener at et realistisk antal ansatte er omkring 100. Opgaven bør løses på 4 timer. Rykket til næste sprint Issues Issue 1. Forfatter: Jørn, opgavetype: Fejlrettelse, prioritet: Høj, status: Løst. WebUserControlEmployee virker ikke efter hensigten. Ved ændringer på de sider den bruges, køres den til sidst og giver dermed et postback der er fejlbehæftet. Gennem samtale i gruppen er vi blevet enige om at løse dette ved at lave en masterpage til siderne under employee menupunktet. 35

36 Problemet er oprettet den 16/9 og forventes at kunne løses på 5 timer. 16/9 Kasper inden for tidsrammen. Issue 2. Forfatter: Jørn, opgavetype: Forbedring, prioritet Høj, status: Løst Under udviklingen af systemet er det flere steder glemt at opdatere webserverens hukommelse når der oprettes eller ændres noget i databasen. Derfor skal dette ordnes. Problemet er oprettet den 16/9 og forventes at kunne løses på en halv dag. 17/9 Jørn inden for tidsrammen. Problemet opstod når man ændrede eller oprettede oplysninger for en ansat eller en kvalifikation. Dette blev løst ved at opdatere webserverens hukommelse med ændringerne. Desuden blev der rettet i brugerinterfacet da der her var opdateringsproblemer (dette problem var sammenkædet med problem 1) Issue 3. Forfatter: Jørn, opgavetype: Effektivisering, prioritet Medium, status: Løst Vi har problemer med det trådløse internet på skolen da det er meget ustabilt. Vi har prøvet at løse problemet ved at benytte LAN hvilket løser vores netværksproblemer, men gør det umuligt at opnå forbindelse til database serveren. Vi kontakter it-support over mail for at få løst problemet. Problemet er oprettet den 16/9 og det forventes at kommunikationen til at løse problemet kan klares på 30 min til at kontakte it-support. Problemet er løst den 17/9 med et tidsforbrug på ca. 1 time. IT-suport løste problemet. Issue 4. Forfatter Kasper, Opgavetype: Fejlrettelse, prioritet høj, Status: Løst Under udvikling af den del af programmet der opretter og opdater informationer omkring ansatte, blev der opdaget en fejl, da det i skal være muligt for at en ansat at tilhører mere end en afdeling. Dette er ikke understøttet i programmet, og giver en programfejl. Dette skal selvfølgelig rettes og forventes at kunne løses på 3 timer. Problemet viste sig at være mindre kompliceret end først antaget og kunne løses ved at rette en stored procedure. Problemet er løst den 24/9 af Kasper og Jørn inden for tidsrammen. Issue 5. Forfatter: Kasper, opgavetype: Fejlrettelse, prioritet Høj, status: Løst I databasen har tabellen Parameter en attribut (Patameter_Description) der er sat til VARCHAR(30), dette skal ændres til en VARCHAR(MAX). Løst den 24/9 af Jørn. Argumentation Database (Jørn) Som det kan ses i ER-diagrammet der det kun fortaget små ændringer til vores database i dette sprint. Der er tilføjet en mange mange relation mellem Job_Profile og Parameter. Denne tabel holder styr på de krav en jobprofil har til en ansats properties. For at sikre at der kun tilføjes relevante værdier er attributten en fremmednøgle med relation til Allowed_Property_Values. Desuden har vi lavet en mange mange relation mellem Job_Profile og Qualification. Dette har vi designet da vi forventer, at en jobprofil får brug for en liste af uddannelsesmæssige kvalifikationer. Der kan stilles som krav, før en ansat kan bestride stillingen. Den gamle database har et krav om uddannelsesniveau, men gennem samtaler med product owner har fået en opfattelse af at de fleste ansatte har stor anciennitet. Og mener at kunne spore en holdning til at når folk har været ansat mere end 10 år er det vigtigere hvordan de har udviklet sig, f.eks. gennem kurser, end hvilken 36

37 uddannelsesmæssige baggrund de har. Før vi ligger for meget arbejde i udviklingen af dette skal vi dog have det bekræftet vores opfattelse af product owner. Menuen rapporter (Jørn) I stedet for at lave en ny.aspx side for hver rapport, der skal vises. Har vi valgt, at de rapporter der skal vises under menuen rapporter, skal vises i den samme side. Dette kan vi gøre da siden indeholder en reportviewer control. Vi benytter så linket til at gemme information omkring hvilken rapport der skal vises. <menuitem title="reports" path="~/reports.aspx"> <menuitem title="education" path="~/reports.aspx?report=listemp"></menuitem> <menuitem title="list employees" path="~/reports.aspx?report=empeducation"></menuitem> </menuitem> I kodefilen til siden kan variablen fra linket så hentes ved hjælp af Request.QueryString["report"] og rapporten så findes med en switch. switch (Request.QueryString["report"]) { case "listemp": ListAllowedEmployees(); break; case "empeducation": EmployeeEducation(); break; default: break; } Redigering af Jobprofile (Jørn) Vi har valgt, at ligge aspx siderne for redigering af jobprofiler, og oprettelse af nye jobprofiler under Administration menuen. Dette er valgt da vi forventer at de sjældent skal bruges og kun bør bruges af administratorer. Det ville ikke være optimalt hvis alle afdelingschefer kunne ændre en jobprofil uden hensyn til effekten på andre afdelinger. Når man vælger jobprofile bliver man ført til en liste, hvor man kan vælge mellem alle jobprofiler eller at oprette en ny. 37

38 Hvis man vælger en jobprofil bliver man ført til en side, hvor det er muligt at ændre beskrivelsen og de properties der er knyttet til en jobprofil. Hvis man vælger opret en ny jobprofil bliver man ført til en side, hvor man skal indtaste et navn og en beskrivelse af en jobprofil. Herefter kan man via dropdownlists vælge de properties der skal tilføjes og disse vises så i et gridview (se bilag 10 for screenshots af oprettelse og ændringer). WebUserControl ændret (Kasper) Vi har opdaget at den giver nogle problemer, da vi blev tvunget til at lave en redirect i bunden af WebUserControllen for at få vist de ønskede data. Dette gav problemer med flere sider, så vi har nu valgt at fjerne dropdownlisten og textboxen fra WebUserControllen, og ligge dem på alle siderne. dette giver godt nok noget gentagene kode, men til gengæld giver det et meget mindre chance for fejl. Desuden giver det en mere flydende overgang hver gang man skifter den viste ansatte vh.a dropdownlisten. Create, Update Education(Kasper) Det skal selvfølgelig være muligt at tilføje en nye uddannelser til systemet, da der hele tiden opstår nye udannelser, som folk kan tage. Derfor har vi lavet en ny side under administration. Sådan her ser den så ud, det er en ret simpel lille side, der er ikke så meget ved det, man udfylder felterne, og i dropdownlisten vælger man selvfølgelig bare en kategori, da den bliver fyldt de forskellige kategorier hentet fra tabellen Education_Category. Update education, vil have de samme bokse som create education. Derfor lavede vi det sådan at den samme side kan genbruges. Dette gjorde vi ved at tilføje nogle selektioner i koden der ser sådan her ud. 38

39 if (Request.QueryString["education"]!= null) { Button1.Text = "Update Education"; HyperLink1.Text = "Create education"; HyperLink1.NavigateUrl = "CreateUpdateEducation.aspx"; update = true; string eduname =Convert.ToString(Request.QueryString["education"]); TextBoxEducation.ReadOnly = true; List<Education> list = _controller.geteducations(); for (int i = 0; i < list.count; i++) {... } } else { TextBoxEducation.ReadOnly = false; Button1.Text = "Create Education"; HyperLink1.Text = "Update education"; HyperLink1.NavigateUrl = "Listeducation.aspx"; } } Vi har lige skåret noget kode væk i iterationen, for at det ikke skulle fylde for meget, men det denne selektion gør, er at tjekke om der i url adressen er en variabel. Hvis der er, sættes den ene textbox til read only, alle boksene udfyldes med de relevante info om uddannelsen, teksten på knappen ændres til Update education i stedet for create education, hyperlinkets tekst sættes til Create i stedet for Update og siden som linket linker til ændres. Update variablen bliver erklæret i toppen af siden og det den gør, er at koden i længere nede ved om den skal update eller lave nye. For at der kan komme en variabel i url adressen, kræver det selvfølgelig at der er et sted man vælger den, og her har vi oprettet en simpel liste, med alle educations. Når man klikker på den man vil redigere i, bliver man navigeret videre til update siden. 39

40 Som det ses er der ikke nogen forskel på designet på update og create, udover at education textboxen er readonly og grunden til dette er at det er primærnøglen i databasen. Proof of concept på integrasion serviceses(kasper) Vi blev præsenteret for integrasion services af ADP. Integrasion services bruges til at overføre data fra en kilde til en anden, også selvom man ikke vil have alt data med. Man kan altså vælge det relevante data man skal bruge og kan også manipulere med data, hvis det er nødvendigt. For at se om vi kunne få det til at virke ville vi kopiere en tabel fra deres gamle database over i vores database. Her valgte vi Job_Profile da der ikke er den store forskel på den i vores tabel og deres. Men der opstod hurtigt et problem med at forbinde til deres gamle access database da den havde en sikkerhedsfil som skulle inkluderes i integrasion services. Det var ikke lige til at se hvordan dette skulle løses, så vi kontaktede ADP for at få lidt hjælp, og her fik vi et eksempel på en connection string som hjalp os med forbinde. "Data Source=" + "RegE_DATA.mdb;Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=True;Jet OLEDB:System database=" + "RegE.MDW;User ID=[userid];Password=[password];" Ud fra dette kunne vi se at vi før havde manglet sætningen Persist Security Info=True. Det var nu ret nemt at opnå forbindelse til begge databaser. Vi gjorde dette med følgende connection strings: Access database: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ADP\ADPInnovation(V1.1 - Demo).mdb; Jet OLEDB:System database=d:\adp\secured.mdw;persist Security Info=True;Password=**********;User ID=SK;Jet OLEDB:Database Password=SK SQL server database: Sådan ser det ud inde i et dataflow, man trækker bare en source ud og vælger hvilken database og tabel den skal hente fra. Så vælger man en source, og definere hvilken database og tabel. Så går man bare ind i den source og mapper hvordan data skal overføres. Nu er man klar til at køre programmet, dette gik også smertefrit, vi fik alle deres 40

41 Job_Profiles over i vores database, og vi er nu klar til at lave et større program der skal overføre mere en simpel tabel. Integration Services(Kasper) Efter at have lavet Proof of Concept på integrasion service, begyndte vi at lave en skabelon til at overføre alt data fra den gamle database til vores, her var det helt naturligt at starte med Employee. Dette gav dog problemer, da der opstod nogle foreign key constraints, på fremmednøgler med relation til tabellerne Job_Profile og Units. 41

42 Her ses at vi har oprettet 4 flow tasks, den første der bliver køret, data flow task, henter jobprofiles, fra deres database. Dernæst henter vi units i dataflow task 1, i data flow task burde vi hente postnumre fra den excel fil vi har hentet på postdanmarks hjemmeside. Men da vi allerede har skrevet et program til at overføre denne data er dette ikke nødvendigt, dog mener vi at den bør laves senere da ADP nok foretrækker at kunne nøjes med at køre en form for database overførsel. Her ses hvad der sker inde i data flow task 2, dette er selve overføreselen af Employess. Da vores og deres tabel ikke er ens, var det nødvendig at lave et script som kom ind i imellem og tilpassede data. Der er dog kun tale om en lille ændring, dette er fordi der i ADPs gamle database gemmes fornavn og efternavn i et en attribut. Vi har i vores database delt de to ting op, så scriptet går ind og tager alle fornavne, og gemmer dem i en ny output variabel, og tager efternavne og gemmer dem i en anden output variabel. 42

43 Her ses så hvordan vi mapper, fra deres gamle tabel til venstre over i vores nye tabel til højre. De 2 nederste parametre er dem som scriptet generer. Find kvalificerede employees til en job profil (kasper) Der skal i systemet selvfølgelig være muligt at se hvilke ansatte der lever op til en bestemt jobprofil. Dette er en af hovedfunktionerne i programmet, og pruduct owner har lagt stor vægt denne funktion. Til dette har vi lavet siden FindEmployee, hvor det er muligt at vælge en jobprofil. Nedenunder vises der så en liste over de employees der lever op til jobprofilens krav. Det er muligt at søge i alle ansatte, dette er dog ikke lavet optimalt. Da du ved at vælge denne funktion til, henter alle ansatte op i ramlageret og løber dem igennem, med søgefunktionen. Den optimale løsning ville være at have en løsning med en SQL-sætnning eller storedprocedure der kun returnere de aktuelle ansatte. Hvis man ikke søger i alle ansatte, er det optimalt fordi man allerede har alle ansatte i ens afdeling liggende i rammene. For at tjekke om en ansat matcher en jobprofil, skal han have en række properties, med en score der matcher eller ligger over kravet for jobprofilen. For at tjekke dette har vi skrevet denne kode. 43

44 for (int i = 0; i < emptemp.count; i++) { bool notqualified = false; bool educatet = false; bool[] hasproperty = new bool[jp.jobproperties.count]; for (int s = 0; s < hasproperty.length; s++) { hasproperty[s] = false; } for (int o = 0; o < JP.JobProperties.Count; o++) { for (int p = 0; p < emptemp[i].probertylist.count; p++) { if (JP.JobProperties[o].Parameter_id == emptemp[i].probertylist[p].parameter_id) { hasproperty[o] = true; if (JP.JobProperties[o].PorpertyValue > emptemp[i].probertylist[p].porpertyvalue) { notqualified = true; } } Her løber vi alle ansatte igennem. For hver ansat løber vi den gældende jobprofils properties igennem og tjekker om den aktuelle ansatte har de nødvendige parametre og scores. Bool arrayet hasproperty bruges til at tjekke om den aktuelle ansatte har alle de nødvendige parametre. I stedet for at lave endnu et bool array der viser om han har den nødvendige score eller der over, har vi valgt bare at sige, at vi laver en enkelt bool parameter (notqualified) der bliver sat, hvis den ansatte har parameteren men ikke har høj nok score i den. for (int a = 0; a < emptemp[i].educationlist.count; a++) { if (JP.Rating <= emptemp[i].educationlist[a].rating) { educatet = true; } } En jobprofil kræver også, at man ligger i en bestemt udannelseskategori. Her tjekkes der på den udannelseskategori som en jobprofil kræver rating i, sammenlignet med den højeste udannelseskategori-rating den enkelte ansatte har. Hvis den er lig med eller større end jobprofilens krav, sættes bool parameteren educatet til true. Og den aktuelle ansatte bliver tilføjet til listen over ansatte der bliver returneret. Hvis man skulle gøre søge funktionen bedre skulle man tjekke efter hver property om notqualified var sat til true. Hvis den var, kunne man breake løkken, da det i dette tilfælde ikke er nødvendigt at tjekke flere properties. Sprint Review Vi har haft et sprint hvor vi har fokuseret meget på produktet og overladt meget af dokumentationen for vores arbejde til Prince2 ved hjælp af arbejdspakker og issues. Umiddelbart har det fungeret godt da vi med denne projektstyringsmodel giver et godt billede af det arbejde vi udfører. I det hele taget mener vi at brugen af prince2 har ændret udseende på vores rapport til det bedre, da det betyder at vi får dokumenteret arbejde vi ellers ikke have dokumenteret. 44

45 Forberedelse til Sprint review - Vi forventer at gennemgå vores brug af Prince2 og få feedback på om vi har forstået principperne rigtigt. Dette indebærer at vi forklarer hvordan vi bruger Prince2, gennemgår rapporter og Issues og giver mulighed for at prøve de nye funktioner i systemet. - Vi har spørgsmål omkring uddannelsesdelen af tabellen da vi ser en risiko for at vi har misforstået brugen af uddannelse i systemet. - Ang. user story 12. Skal der tilføjes mulighed for at sortere efter uddannelsesmæssige kvalifikationer eller rated uddannelse? - Opfølgning på fremdriften ved at vise burndownchart for hele projektetperioden og for 3 sprint - I 4 sprint foreslår vi arbejde med user story: 21, 22, 23, 24, 25, 28, 29. Konklusion på tredje spring Vi har haft et sprint uden de store problemer og har nået alle de user stories vi havde sat os for. Desuden har vi brugt ekstra tid på at sætte os ind i integrasion services og prince2. Dog har vi været nødt til at skubbe Issue 6 og arbejdspakke 20 til næste sprint, hvilket vil give en ekstra arbejdsbyrde der. Estimat Burndown Chart Dage Fjerde sprint Fjerde sprint varer fra mandag den 28. september til fredag den 9. oktober. Vi føler vi er godt med fra sidste sprint afsætter vi 15 mandedage til at arbejde på programmet i dette sprint. Ud over user stories i vores sprint backlog hav vi følgende input fra sidste sprint meeting: - Vi gennemgik vores forståelse af Prince2 og fik positiv respons herpå. Dog bør vi bruge tid på at uddybe teorien hertil. - Qualification skal ikke bruges det er en gammel tabel de aldrig fik til at virke efter hensigten. I stedet bør vi lave en rating efter uddannelses kategori. Så der kommer et krav om et uddannelsesniveau for at en ansat kan opfylde en jobprofil. - Databasen skal rettes så der tilføjes en ny primærnøgle til Education_information. - Når man retter en property for en medarbejder skal man sætte checkboxen til true før der kan rettes i propertiesne. Dette skal ordnes for at undgå fejl. 45

46 - Det skal sørges for at rapporter kan tilføjes dynamisk. - Vi havde glemt at lave et link til siden for at finde ansatte der lever op til en jobprofil. - Vi skal forbedre søgefunktionen, på ansatte der søger på ansatte der lever op til en jobprofil. Hvis man søger i alle ansatte skal dette gøres i databasen og kun de ansatte der lever op til jobprofilen skal retuneres. Sprint Backlog Beskrivelse O P Sa M Sp V 21 Administratorer skal mulighed for at tilknytte afdelinger til brugere ,4 0,16 22 Administratorer skal mulighed for at oprette nye videnskategorier ,4 0,16 (qualification). 23 Administratorer skal Mulighed for at tilknytte kompetencer til en ,4 0,16 videnskategori (qualification). 24 Administratorer skal have mulighed for at oprette nye ,4 0,16 uddannelsesniveauer. (education category) 25 Administratorer skal have mulighed for at oprette nye afdelinger ,4 0,16 26 Brugere skal have mulighed for at liste alle ansatte, de har rettigheder til at ,4 0,16 se, med deres summerede properties i forhold til deres jobprofil. Dette skal laves som en rapport. 27 Brugere skal kunne vise en liste med uddannelse, kurser og kompetencer ,8 0,6 0,36 for de ansatte brugeren har rettigheder til at se. Dette skal laves som en rapport. 28 Brugere skal have mulighed for at oprette træningsbehov for de ansatte ,2 0,6 0,36 brugeren har rettigheder til at se. 30 En bruger skal have mulighed for at vise en ansats properties i forhold til ,6 1 1 hans jobprofil. Dette skal vises i et radardiagram. 36 En bruger skal have mulighed for at vise en liste med kvalifikationer ,2 0,6 0,36 krævet i en afdeling og ansattes kvalifikationer (qualifications) i forhold til. 40 Brugere skal kunne vise mængden af ansatte i virksomheden med viden inden for udvalgte kvalifikationer ,2 0,6 0,36 Arbejdspakker til Authorise work Arbejdspakke 1: Jørn og Kasper den 28. september Forbered databasen til fjerde sprint. Det vil sige at den skal udbygges så det bliver muligt at registrere træningsbehov for en ansat. Desuden skal databasen renses for tabellerne omkring Qualification. Opgaven bør løses på 1 dag. Opgaven er løst den 30/9 af Jørn der inden for tidsgrænsen. Arbejdspakke 2: Jørn og Kasper den 28. september Lav brugerinterface til user story 21. Opgaven bør løses på 5 timer. Opgaven er løst den 28/9 af Kasper inden for tidsrammen. Arbejdspakke 3: Jørn og Kasper den 28. september Lav kode så det er muligt at tilknytte afdelinger til en bruger (user story 21). Opgaven bør løses på 3 timer. Opgaven er løst den 28/9 af Kasper inden for tidsrammen. Arbejdspakke 4: Jørn den 28. september Lav kode så det er muligt at slette afdelinger fra en bruger (user story 21). Opgaven bør løses på 3 timer. Opgaven er løst den 29/9 af Kasper inden for tidsrammen. 46

47 Arbejdspakke 5: Jørn og Kasper den 28. september Lav brugerinterface til user story 24 så det er muligt at oprette nye uddannelseskategorier og rating hertil. Opgaven bør løses på 5 timer. Opgaven er løst den 30/9 af Kasper inden for tidsrammen. Arbejdspakke 6: Jørn og Kasper den 28. september Lav kode til user story 24 så det er muligt at oprette nye uddannelseskategorier og rating hertil. Opgaven bør løses på 3 timer. Opgaven er løst den 30/9 af Kasper inden for tidsrammen. Arbejdspakke 7: Jørn og Kasper den 28. september Lav brugerinterface til user story 25 så det er muligt at oprette afdelinger. Opgaven bør løses på 5 timer. Opgaven er løst den 29/9 af Kasper inden for tidsrammen.. Arbejdspakke 8: Jørn og Kasper den 28. september Lav stored procedure til user story 21. Opgaven bør løses på 2 timer. Opgaven er løst den 28/9 af Kasper inden for tidsrammen. Arbejdspakke 9: Jørn og Kasper den 28. september Lav stored procedure til user story 24. Opgaven bør løses på 2 timer. Opgaven er løst den 30/9 af Kasper inden for tidsrammen. Arbejdspakke 10: Jørn og Kasper den 28. september Lav stored procedure til user story 25. Opgaven bør løses på 2 timer Opgaven er løst den 30/9 af Kasper inden for tidsrammen.. Arbejdspakke 11: Jørn og Kasper den 28. september Lav brugerinterface til user story 28. Opgaven bør løses på 3 timer. Opgaven er løst den 8/10 af Kasper inden for tidsgrænsen. Arbejdspakke 12: Jørn og Kasper den 28. september Lav en rapport til user story 30. Opgaven bør løses på 6 timer. Opgaven er løst af Jørn på 1 dag. Den 1/10. Der opstod problemer med visning af rapporten. Arbejdspakke 13: Jørn og Kasper den 28. september Lav en rapport til user story 26 der laver en liste over en brugers ansatte og en deres summerede properties i forhold til deres jobprofil. Opgaven skal løses på 2 dage. Opgaven er løst den 8/10 af Jørn inden for tidsgrænsen Arbejdspakke 14: Jørn og Kasper den 28. september Lav en rapport til user story 27. Opgaven skal løses på 2 dage. Opgaven er løst den 2/10 inden for tidsgrænsen af Jørn Arbejdspakke 15: Kasper den 29. september Lav brugergrænseflade til funktionen tilføj rolle til bruger (user story 21). Opgaven skal løses på 4 timer Opgaven er løst den 29/9 af Kasper inden for tidsrammen. Arbejdspakke 16: Kasper den 29. september Lav kode til tilføj rolle til bruger (user story 21). Opgaven skal løses på 5 timer. Opgaven er løst den 29/9 af Kasper inden for tidsrammen. 47

48 Abejdspakke 15 og 16 opstod, efter at vi havde lavet arbejdspakke 2 og 3, og indså at det også skulle være muligt at tilføje en rolle til en bruger. Arbejdspakke 17: Jørn den 30. september Sørg for at der udover properties bliver tjekket på Education_Category i siden der viser en liste over ansatte der lever op til en jobprofil (Ansatte brugeren har rettigheder til at se). Opgaven skal løses på 1 dag. Opgaven er løst den 5/10 af Kasper inden for tidsrammen Arbejdspakke 18: Jørn den 30. september Når man retter en property for en medarbejder skal man sætte checkboxen til true før der kan rettes i propertiesne. Opgaven skal løses på 5 timer. Opgaven er løst af Kasper den 28/9 Inden for tidsrammen. Arbejdspakke 19: Jørn den 30. september Det skal sørges for at rapporter kan tilføjes dynamisk. Opgaven skal løses på 1 dag. Opgaven er løst den 6/10 på 1½ dag. Se afsnittet om dynamiske rapporter for forklaring. Arbejdspakke 20: Jørn den 30. september Vi skal lave et link til siden for at finde ansatte der lever op til en jobprofil. Opgaven skal løses på en ½ time. Opgaven er løst den 1/10 af Kasper inden for tidsrammen. Arbejdspakke 21: Jørn den 24. september Lav et program der kan fylde testdata på databasen for at vi kan tjekke responstider med et realistisk antal ansatte (omkring 100 ansatte). Opgaven bør løses på 4 timer. Opgaven er løst den 8/10 af Kasper på 1 dag. Arbejdspakke 22: Jørn og Kasper den 28. september Lav kode til user story 28. Opgaven bør løses på 3 timer. Opgaven er løst den 8/10 af Kasper inden for tidsrammen. Arbejdspakke 23: Jørn og Kasper den 28. september Lav stored procedure til user story 28 (visning af træningsbehov for en ansat). Opgaven bør løses på 2 timer. Opgaven er løst den 7/10 af Kasper inden for tidsrammen. Issue 6. Forfatter: Jørn, opgavetype: Fejlrettelse, prioritet Høj, status: Løst Vi har opdaget et problem i databasen omkring uddannelse. Navnet på uddannelsen bruges i øjeblikket som primærnøgle i tabellen. Dette giver problemer da en anden attribut der beskriver, hvor uddannelsen ligger, kan have flere forskellige værdier for det samme uddannelsesnavn. Dette bør rettes ved at der laves en ny primærnøgle i tabellen, f.eks. et løbenummer. Det forventes at tage 1 dag at løse dette problem og rette den tilhørende kode. Issuet er løst af Jørn den 29. september 2009 inden for tidsgrænsen. For at løse problemet var det nødvendigt at slette tabellerne Education_Information og Employee_Education. Til at gøre dette benyttede vi funktionen generate scripts i SQL server Ved at gøre dette havde vi muligheden for at lave nye tabeller med en ny primærnøgle og derefter overføre den testdata vi havde gemt i tabellen. Efterfølgende var det nødvendigt at rette stored procedurs der håndterede tabellerne: - AddEducation der tilføjer uddannelser til en ansat. - CreateUpdateEducation der opretter eller opdatere en uddannelse. Desuden var det nødvendigt at rette koden så den passede med ændringerne. 48

49 Issue 7. Forfatter: Kasper, opgavetype: Fejlrettelse, prioritet Høj, status: Løst Efter at have testet lidt på vores søgefunktion til find ansat til en jobprofil opdaget vi en fejl, der gjorde at nogle ansatte der ikke levet op til kravene dukkede op på listen, dette skyldes en fejl i søge metoden. Issue 7 er løst den 29/9 af Kasper Issue 8. Forfatter: Jørn, opgavetype: Optimering, prioritet Høj, status: Løst Søgningen (på alle ansatte) efter ansatte der lever op til en jobprofil bør foretages i databasen så vi slipper for at hente alle ansatte op i koden. Issutet bør løses på 1 dag. Issuet er løst den 30. september af Jørn og Kasper. Se afsnit Find alle employees der passer til en Jobprofil. Argumentation DCD fjerde sprint (Kasper) DCD et er blevet udvidet med den nye datatype course denne datatype opstår fordi vi nu har tilføjet traing needs som kan have et course tilknyttet sig. Der er blevet tilføjet en del nye attributter til klassen DataModeller. Dette kommer sig af at vi har samlet alle de attributter som systemet skal have hardcodet som URL adressen til report serveren, ind i DataModeller. Dette er gjort, for at gøre det nemmere for product owner at sætte systemet op(se bilag 8). Database (Jørn) Der er fortaget en del ændringer i databasen i dette sprint. Tabellen qualification og de tilhørende mange til mange relationer er slettet da vi fandt ud af at ADP ikke ønskede at bruge denne løsning. Desuden er tabellen Education rettet som beskrevet i Issue 6. Ud over disse rettelser til databasen er der tilføjet 2 tabeller. Course og Emp_Property_Goal der registrer de mål der sættes op for en medarbejder. I praksis vil dette virke gennem udviklingssamtaler mellem en ansat og afdelingslederen. Her bliver de enige om hvilke parametre den ansatte skal fokusere på at forbedre sig og hvordan lederen kan hjælpe ham med det. F.eks. gennem kurser registreret i tabellen Course. Dette registreres så i Emp_Property_Goal. Et ERdiagram over databasen i sin nuværende form kan findes i bilag 6. Find alle employees der passer til en Jobprofil (Jørn) Da vi i første omgang lavede den del af systemet der finder alle ansatte der passer til en jobprofil. Hentede vi alle ansatte fra databasen og sammenlignede dem i koden. Vi valgte denne løsning da den var simpel og hurtig at lave, men var samtidig klar over at løsningen ikke var optimal da vi langt fra brugte alle de data vi hentede. Derfor har vi i dette sprint flyttet sammenligningen til databasen og returnere nu kun de ansatte der opfylder den ønskede jobprofil. Vi laver denne ændring da vi ikke kender det miljø systemet kommer til at køre i. Der er en chance for at databasen kommer til at ligge på en databaseserver med mange andre vigtige databaser og derfor ikke bør bruge unødvendig store resurser. I den virkelige verden ville vi nok først have gjort dette når vi var sikre på at der var så mange ansatte og at programmet blev brugt nok til at det ville være økonomi i at lave denne ændring. De ansatte der skal returneres findes nu ved hjælp af en stored procedure der tager en jobtitel som inputparameter og finder de ansatte der skal bruges vha. følgende select statement: 49

50 SELECT DISTINCT Emp.Enterprise_Staff_Id, Emp.First_Name, Emp.Last_Name, Emp.Company_Number, Emp.Adress, Emp.Zipcode, City.Town, Emp.Phone, Emp.Mobile_Phone, Emp.Engagement_Date FROM Emp_Property INNER JOIN Employee Emp ON Emp_Id = Enterprise_Staff_Id INNER JOIN City ON City.Zipcode = Emp.Zipcode WHERE (SELECT COUNT(*) FROM Job_Property WHERE Job_Title = (SELECT COUNT(*) FROM Job_Property INNER JOIN Parameter ON Parameter.Id = Job_Property.Parameter_Id INNER JOIN Emp_Property empprop ON Parameter.Id = empprop.parameter_id WHERE Job_Property.Parameter_Id = empprop.parameter_id AND emp.enterprise_staff_id = empprop.emp_id AND Job_Property.Mark <= empprop.mark AND Job_Property.Job_Title AND (SELECT MAX(Education_Category.RATING) FROM Education_Category INNER JOIN Education_Information ON Education_Category.Name = Education_Information.Category INNER JOIN Employee_Education ON Employee_Education.Education_Id = Education_Information.Id WHERE Emp.Enterprise_Staff_Id = Employee_Education.Emp_Id) >= (SELECT DISTINCT Education_Category.RATING FROM Education_Category LEFT JOIN Job_Profile ON Education_Category.Name = Job_Profile.EducationTaken LEFT JOIN Job_Property ON Job_Property.Job_Title = Job_Profile.Title WHERE Title Rapport der sammenligner en ansat med hans jobprofil (Jørn) Til user story 30 skulle vi lave en rapport der sammenligner en ansat med hans jobprofil. Dette så vi som en ret nem opgave, der hurtigt kunne løses med joins på de nødvendige tabeller. Dog rendte vi ind i problemer da vi ikke kunne finde en løsning der gav os alle de informationer vi skulle bruge på denne måde. Problemet lå i at vi startede med at joine en jobprofil sammen med parametre på en jobtitel og derefter skulle joine dette sammen med en ansat og hans parametre ud fra hans staff id. For at rapporten kunne laves skulle der være mulighed for at både den ansatte og jobprofilen kunne have parametre som den anden ikke havde. Dette kunne vi ikke tage højde for. Derfor endte vi med en løsning der lavede 2 midlertidige tabeller og samlede dem i en tredje tabel. 50

51 --Opret table til Jobinformationer CREATE TABLE #CompareJob(Job_Parameter_Id INT,Job_Parameter_Name VARCHAR(MAX),Jobprofile VARCHAR(30),Job_Mark INT) INSERT INTO #CompareJob(Job_Parameter_Id, Job_Parameter_Name, Jobprofile,Job_Mark) SELECT Parameter.Id, Parameter.Patameter_Description, Job_Profile.Title, Job_Property.Mark FROM Job_Property INNER JOIN Job_Profile ON Job_Profile.Title = Job_Property.Job_Title INNER JOIN Parameter ON Job_Property.Parameter_Id = Parameter.Id WHERE Job_Profile.Title = (SELECT Employee.Job_Profile_Name FROM Employee WHERE Employee.Enterprise_Staff_Id --Opret table til informationer om en ansat CREATE TABLE #CompareEmp (Emp_Parameter_Id INT, Emp_Parameter_Name VARCHAR(MAX),Emp_Id INT, Emp_Name VARCHAR(100), Emp_Mark INT) INSERT INTO #CompareEmp(Emp_Parameter_Id, Emp_Parameter_Name, Emp_Id, Emp_Name,Emp_Mark) SELECT Parameter.Id, Parameter.Patameter_Description, Employee.Enterprise_Staff_Id, (Employee.First_Name + ' ' + Employee.Last_Name) empname, Emp_Property.Mark FROM Emp_Property INNER JOIN Employee ON Employee.Enterprise_Staff_Id = Emp_Property.Emp_Id INNER JOIN Parameter ON Parameter.Id = Emp_Property.Parameter_Id WHERE Employee.Enterprise_Staff_Id --Join de 2 tables sammen SELECT * FROM #CompareJob FULL OUTER JOIN #CompareEmp ON #CompareJob.Job_Parameter_Id = #CompareEmp.Emp_Parameter_Id --Slut af med at droppe tablesne så de ikke optager ram på databaseserveren DROP TABLE #CompareJob DROP TABLE #CompareEmp Nu er der oprettet 2 midlertidige tabeller, og det er muligt at få de fleste af de data vi skal bruge ud ved en full join. SELECT * FROM #CompareJob FULL OUTER JOIN #CompareEmp ON #CompareJob.Job_Parameter_Id = #CompareEmp.Emp_Parameter_Id Dette giver dog stadig nogle problemer med parametrenavne der ikke altid bliver vist i rapporterne. For at løse dette problem lavede vi i stedet en ny tabel der opdatere de NULL værdier der før var et problem. 51

52 CREATE TABLE #CompareJobEmp(Parameter_Id INT,Parameter_Name VARCHAR(MAX),Emp_Id INT, Emp_Name VARCHAR(100), Emp_Mark INT, Jobprofile VARCHAR(30),Job_Mark INT, Job_parameter_Name VARCHAR(MAX)) INSERT INTO #CompareJobEmp(Parameter_Id, Parameter_Name, Emp_Id, Emp_Name, Emp_Mark, Jobprofile, Job_Mark, Job_parameter_Name) SELECT Emp_Parameter_Id, Emp_Parameter_Name, #CompareEmp.Emp_Id, #CompareEmp.Emp_Name, #CompareEmp.Emp_Mark, #CompareJob.Jobprofile, #CompareJob.Job_Mark, #CompareJob.Job_Parameter_Name FROM #CompareEmp FULL OUTER JOIN #CompareJob ON #CompareJob.Job_Parameter_Id = #CompareEmp.Emp_Parameter_Id --Efter tabellen er oprettet køres der en update der sikre at alle parameterenavne ligger i Parameter_Name UPDATE #CompareJobEmp SET Parameter_Name = Job_parameter_Name WHERE Parameter_Name IS NULL SELECT * FROM #CompareJobEmp --Til sidst droppes de midlertidige tabeller. DROP TABLE #CompareJob DROP TABLE #CompareEmp DROP TABLE #CompareJobEmp I rapporten var det meningen at vi skulle lave et raderdiagram der viser den ansatte i forhold til jobprofilen. 52

53 Understøttelse i subversion (Jørn) Vi har opdaget et problem med vores brug af subversion. De tekstdokumenter vi gemmer på google code er ikke understøttet. Dette betyder at ændringer i tekstdokumenterne bliver gemt på bitniveau og ikke efter teksten i dokumentet. Det har den konsekvens at vi ikke kan benytte svn til at rette konflikter i dokumenterne. Vi kan ikke blive udsat for direkte datatab på grund af dette, men risikere at skulle bruge lang tid på manuelt at sammenflette dokumenter, hvis der opstår en konflikt. Vi er nu så langt henne i projektet at vi ikke vil kigge efter en et andet filformat at gemme dokumenterne i. I stedet vil vi være opmærksomme på at vi bruger update, commit hver gang vi ændre i et tekstdokument. Dynamiske rapporter (Jørn) Product owner har argumenteret for at det skal være muligt, dynamisk at tilføje rapporter til systemet. Indtil nu har det krævet at der rettes kode i mindst en kodeside når en rapport skulle tilføjes. Det har selvfølgelig den konsekvens at man skal publish webpagen igen. Vi havde selv overvejet at lave en løsning, hvor man hentede informationer fra den xml-fil der gemmer informationer til menuen. På den måde ville det ikke være nødvendigt at publish websiden hver gang der tilføjes en rapport. Efter mødet kom vi til at tænke på muligheden for at hente informationer omkring rapporterne fra rapportserveren. Vi har i starten af projektet lavet proof of concept omkring dette i en Windows form applikation. Så vi ved at dette kan lade sig gøre, dog er problemstillingen anderledes på en webpage. Her er det ikke lige så simpelt at bruge en webservice da den ikke kan kaldes på samme måde som i en applikation. Vores første indskydelse var at tilføje en webreference til webpagen (en webreference er en henvisning til en webservice). Dette gav dog ikke adgang til webservicen da vi ikke kunne kalde referencen fra webpagen. Ved at bruge MSDN fandt vi ud af at man skulle have webservicen liggende i et en container der kunne kaldes. Med denne information lavede vi et nyt proof of concept, hvor vi fra i en webpage lavede en reference til en dll fil der indeholdt en webservice. Det endelige resultat blev at vi tilføjede en dll fil indeholdende web referencen ReportServerService, der referer til webservicen ReportingService Fra webpagen kunne vi nu tilgå webservicen vha. using WebServiceControl.ReportServerService; 11 Information omkring webservicen ReportingService2005 kan findes på: 53

54 I kodefilen til den side der skal vise de dynamiske rapporter har vi tilføjet kode til pageloaden. Denne kode bliver kun eksekveret når man går ind på siden, ikke ved postback. if (!IsPostBack) { //opret forbindelse til webserveren og set url en til denne. Da vi ikke har lavet brugerinstillinger på reportserveren skal denne sættes til default. ReportingService2005 _rs = new ReportingService2005(); _rs.credentials = System.Net.CredentialCache.DefaultCredentials; _rs.url = DataModeller.ReportUrl + DataModeller.ReportingService2005Name; } CatalogItem[] reportitems; reportitems = _rs.listchildren("/", true); foreach (CatalogItem item in reportitems) { if (item.type!= ItemTypeEnum.Folder && item.type!= ItemTypeEnum.DataSource) { string[] pathsplit = item.path.split('/'); if(pathsplit[pathsplit.length - 2] == DataModeller.ReportGetFolderNameDynamicReports) { MenuItem menuraportitem = new MenuItem(item.Name, item.path); MenuReports.Items.Add(menuRaportItem); } } } MenuReports.DataBind(); Først oprettes der et objekt af webservicen og metoder herfra bruges til, at sætte stien til rapport serveren og brugerrettigheder. Derefter fyldes data fra rapportserveren på et array af CatalogItems. Nu lægger alle rapporter, mapper og datasources fra rapport serveren i dette array. For at sortere mapper og datasources fra, startes en iteration der først indeholder en selektion der ikke tillader mapper og datasources adgang. Nu skal der tjekkes på om rapporterne ligger i den ønskede mappe. Dette gøres ved, at opdele stierne til hver rapport og gemme disse i et array. En ny selektion tjekker nu om rapporten ligger i den rigtige mappe. Hvis den gør det, bliver der oprettet et menuitem ud fra rapporten. Nedenfor ses en datasource og 2 mapper. Det er indholdet af mappen med ReportsDynamic der skal vises. Hvis man ønsker at tilføje mapper der ikke skal vises dynamisk kan man ligge dem i mappen ReportsNotDynamic. Her vises de rapporter der skal vises i programmet: 54

55 Her vises de rapporter der vises i programmet(de samme rapporter som vises på rapportserveren ovenfor) Rapport der viser properties, uddannelser og kurser for en ansat (Jørn) Til forskel for de hidtidige rapporter vi har lavet, har denne rapport benyttet flere datasets. Det har den fordel at vi kan hente data ved hjælp af flere forskellige sqlsætninger eller endda forskellige datasources, hvis vi har behov for det. (Se screenshot af et eksempel på en rapport i bilag 11) Rettelser til Product backlog (Jørn) I forbindelse med misforståelserne omkring Qualification, har vi slettet 4 user stories da de var lavet med i udgangspunkt et behov der viste sig at være misforstået. Det drejer sig om user story 22, 23, 36 og 40. Af hensyn til vores burndown chart over hele projektet registrer vi de 4 user stories på samme måde som hvis de var færdiggjort i dette sprint. Desuden trækker vi det antal dage de ville tage at lave, fra det antal mandedages arbejde vi forventer der restere ved afslutningen af projektet. Create / Update Education Category (Kasper) Opret og Opdater Education category er næsten magen til opret /opdater udannelse, med det til forskel at når man opdatere en Ednucation Category kan man ikke ændre navnet da det er primær nøglen. Vi har lavet samme princip med den stored procedure som vi gjorde i opret/opdater education. Create / Update Unit (Kasper) 55

56 Opret / opdater unit ikke meget forskellig fra de andre, opret og opdater og virker derfor på same made, med at der er en side og en list, også links imellem de 2. Add / Remove Unit from / to a user (Kasper) Det skal selvfølgelig være muligt for en adminstrator at tilføjet afdelinger til en enkelt bruger samt at fjerne dem fra en bruger dette har vi alt sammen fået klemt ned på en side så det er nemt og tilgængeligt, det er også muligt at gøre en bruger til administrator, samt at degradere ham til normal bruger, bare ved at hakke det af og til på denne side. i den første DropDownList vælger man, hvilken bruger man ønsker at redigere i, så er der checkboxen der styrer om en bruger er administrator eller ikke, derefter kommer der en dropdown list med alle afdelinger, hvor man vælger den man vil tilføje, det kan ikke lade sig gøre at tilføje en afdeling der allerede er tilføjet, vi har lavet et check der undersøger om afdelingen allerede er tilføjet til brugeren, får at undgå fejl i programmet og i databasen. Listen lidt længere nede på siden har den funktion at den viser hvilke afdelinger der er tilføjet til en bruger men på sammetid gør den det muligt at fjerne afdelinger med bare et enkelt klik. Ændringer i EmployeeProberty(Kasper) Efter at have vist siden til ADP, fik vi at vide det kunne være en fordel hvis der ikke var en knap til hver eneste property, da dette kommer til at virke meget tungt og ikke så pænt. I stedet foreslog han at vi eventuelt kunne lave en løsning med en checkbox, det kunne være en fordel hvis man kun kunne ændre i data, når man havde hakket de properties af at man ville redigere. 56

57 Så vi opdateret siden til at opfylde alle kravene, dvs. at når du kommer ind på siden loader den gridviewet som det ses ovenfor med en readonly textbox og der er kun det ene item i dropdown listen, så i det du hakker en af laver den textboxen skrivebar, og dropdownboxen bliver flydt med de værdier du kan vælge, indtil den bliver ændret viser den stadig den værdi som den ansatte har. Ændringer i Jobprofile (Kasper) Efter at have revurderet jobprofile siden, blev vi enige om at fjerne max property, da det ikke er noget adp bruger mere, derefter blev vi enige om at det ville være rart at kunne se hvad for en udannelse, profilen krævede så det tilføjet vi. Desuden blev vi enige om at det ville være rart at kunne se hvilke ansatte der passer til job profilen så et dynamisk link blev lavet til JobProfileFindEmployee siden så den automatisk søger på den valgte jobprofil. Add traning need Da det skal være muligt at oprette et traning need for en ansat, har vi lavet en bruger grænseflade der gør dette simpelt. Her er det muligt at vælge en kategori, og derefter en parameter under denne kategori, derefter sætter man hvad score den ansatte skal have, en dato han skal have afsluttet sin 57

58 træning og hvor mange dage der skal afsættes til træningen, samt en mulighed for at tilknytte et kursus til den pågældende træning. Indsæt test data i databasen Vi har skrevet et lille program til at indsætte testdata i databasen, for at kunne gøre dette tog vi alle datatyperne, datamodelleren og database klasserne og inkluderet dem i test programmet. Så vi har alle metoder, til at indsætte samt alle nødvendige lister, så vi kan tilføje de forskellige data til en employee. Så vi er nu klar til at lave en løkke der indsætter employees i databasen og derefter tildele en education, og tildeler dem en eller flere properties 58

59 Random random = new Random(); List<Employee> emplist = new List<Employee>(); for (int i = 0; i < 100; i++) { Employee emp = new Employee( , "emp"+i, "test"+i, i, "testperson", "teststed", _citylist[random.next(_citylist.count-1)].zipcode, , , "indsat af test program", DateTime.Now, "", true, _unitlist[random.next(_unitlist.count-1)].unitid, 100+i, 1337, _jplist[random.next(_jplist.count)].title ); db.createemployee(emp); emplist.add(emp); } Employees emps = Employees.GetInstance("jj"); for (int i = 0; i < emplist.count; i++) { emps.addeducation(_edulist[random.next(_edulist.count-1)].educationid, emplist[i].staffid, new DateTime(2001, 12, 12), new DateTime(2003, 12, 12)); for (int o = 0; o < random.next(3); o++) { db.updateproperty(emplist[i].staffid, _proplist[random.next(_proplist.count - 1)].Parameter_id, random.next(1,8), "Test systemmet indsætter kommentar", "jj", DateTime.Now); } Vi lavede det over 2 gange, da dette virkede som den bedste løsning, først opretter vi alle employees og tilføjer dem til et en list af employees og her opretter vi dem også i databasen. Her er der selvfølgelig noget data vi hardcoder in, som navnet på en employee hvor vi bare har valg at de skal hedde emp til fornavn, og her tilføjer vi lige i som er numret på den counter i forløkken, dette er fordi de ikke skal hedde det samme alle sammen, det samme gør vi med efter navnet hvor vi giver dem efter navnet test + i. For at vælge en tilfældig by de skal komme fra har vi hentet alle byer og postnumre op i en liste i rammene, og så har laver vi en ramdom variabel der tager en af dem og tildeler den specifikke employee, det samme gør vi med jobprofile og unit. Vi gør det samme med education og properties, vi valgte at de kun skulle have en udannelse for at undgå fejl i indsættelsen, i tilfælde af at den vælger en udannelse employeen allerede har, også har vi valgt at testpersonerne kun skulle have 0 til 3 properties, grunden til dette er at vi ikke får et problem med hvis den vælger en property som employeen har. Er at systemet er lavet sådan at den storedprocedure der tilføjer properties tjekker om han har den i forvejen, og hvis dette er tilfældet opdatere den propertien i stedet. 59

60 Sprint Review Vi har implementeret alle user stories fra vores sprint backlog og har nået alle arbejdsopgaver. Desuden har vi på nuværende tidspunkt ingen åbne issues, så vi er tilfredse med arbejdet i dette sprint og fremdriften i projektet generelt. Vi har under dette sprint diskuteret vores løsning med håndtering af data i rammen. Vi ser stadig fordele ved metoden, men har diskuteret hvor udviklingsvenlig det er da opdateringer skal håndteres flere stedet. Vi har tænkt os at diskutere dette med product owner og hvis han godkender vores løsning har vi 2 issues der skal oprettes. Nemlig sletning af data fra rammen hvis en bruger lukker siden ned og håndtering af opdatering af rammen hvis flere brugere har den samme ansatte i flere forskellige lister. Vi forventer at køre tests på systemet i næste sprint. Som forberedelse har vi lavet et program der kopier data omkring ansatte ind i databasen, og vil gerne høre om han har præferencer til de tests vi forventer at kører i næste sprint. Vi har desuden udskrevet dokumenter i henhold til Prince2 og tager disse med til sprint review som et led i faseovergangen. Konklusion på fjerde sprint Ud over produktet har vi i dette sprint brugt ekstra tid på at læse korrektur på rapporten og har desuden fokuseret på at have mest muligt tekst til 4. sprint samlet med resten af rapporten i slutningen af sprintet. Grunden til at vi gør dette så tidligt i processen er, at vi har en aftale om at aflevere et udkast af rapporten til gennemlæsning ved dette sprint review. I de hidtidige sprints har fokus lagt på at skrive tekst til sprintet og ligge teksten i forskellige dokumenter for at undgå konflikter. I dette sprint har vi samlet løbende og da også oplevet én konflikt med dette som beskrevet i dette sprint. Estimat Burndown Chart Dage 60

61 Femte sprint Femte sprint varer fra mandag den 12. oktober til fredag den 23. oktober. Vi vil fokusere på nogle få user stories i dette sprint og ellers arbejde på de input vi har fået fra product owner stillede ved sidste spring meeting. - Databasen skal være færdig og integration services skal udbygges så det kan overføre data til alle tabeller. - Efter samtale med product owner omkring vores brug af rammen til at opbevare data, er vi nået frem til at dette skal ændres så alt data hentes fra databasen hver gang. Ret dette og argumenter for valget i første omgang og hvorfor det ændres. - Der skal tages stilling til tests og laves et udvalg af test cases. - Undermenuen til administration skal viser på alle undersiderne. - Lav en liste over oprettede træningsbehov på siden training needs. (lige nu er der kun mulighed for at oprette træningsbehov) Sprint Backlog Beskrivelse O P Sa M Sp V 8 Lav en rapport der viser en liste over en ansats properties sammenlignet med de krav hans jobprofil stiller. Der skal desuden være en kolonne der viser differencen på de 2 værdier ,4 0,8 0,64 15 Brugere skal kunne vise en liste over ansatte der er i gang med et træningsforløb (course). Det skal desuden være muligt at afslutte træningen ,4 0,8 0,64 17 Administratorer skal kunne vise oprette og ændre kursusinformationer og omkostninger for kurser (course) ,4 0,8 0,64 Med en dobbelt standardafvigelse på 2,8 giver det os mellem 12 og 17 dages arbejde. Dog har vi et ret godt grundlag for at lave alle user stories, da databasen til alt er klar og forventer derfor at ligge lidt lavere end vi har estimeret. Når user storiesne og arbejdspakkerne er færdige vil vi begynde afslutningen af projektet. Arbejdspakker til Authorise work Arbejdspakke 1: Jørn den 12. oktober. Lav stored procedure og rapport til user story 8. Opgaven skal løses på 1 dag. Opgaven er løst den 13. oktober inden for tidsgrænsen. Arbejdspakke 2: Jørn den 12. oktober. Lav brugergrænseflade til user story 15. Så det under Analysis features bliver muligt at se en liste over de ansatte der har henholdsvis færdiggjort deres træning og ansatte der ikke har færdiggjort deres træning. Færdiggjort træning skal listes i en rapport viewer og træning der ikke er færdiggjort skal listes i et gridview. Opgaven skal løses på 1½ dag. Opgaven er løst den 13/10 af Kasper og Jørn inden for tidsrammen. Arbejdspakke 3: Jørn den 12. oktober. Lav kode til user story 15. Opgaven skal løses på 5 timer. Opgaven er løst den 14/10 af Kasper inden for tidsrammen. Arbejdspakke 4: Jørn den 12. oktober. Lav en stored procedures der håndter user story 15. Opgaven skal løses på 5 timer. Opgaven er løst den 14/10 af Jørn og Kasper inden for tidsrammen. 61

62 Arbejdspakke 5: Jørn den 12. oktober. Lav brugergrænseflade til user story 17. Opgaven skal løses på 1 dag. Opgaven er løst den 14/10 af Kasper inden for tidsgrænsen. Arbejdspakke 6: Jørn den 12. oktober. Lav kode til user story 17. Opgaven skal løses på 5 timer. Opgaven er løst den 15/10 af Kasper inden for tidsgrænsen. Arbejdspakke 7: Jørn den 12. oktober. Ret databasen til user story 17 så det bliver muligt at tilføje en pris til et kursus. Opgaven skal løses på 1 time. Opgaven er løst den 12/10 af Jørn inden for tidsgrænsen. Arbejdspakke 8: Jørn den 12. oktober. Lav stored procedures til User story 17. Opgaven skal løses på 5 timer. Opgaven er løst den 15/10 af Kasper inden for tidsgrænsen. Arbejdspakke 9: Jørn den 12. oktober. Færdiggør databasen med alle de tabeller der bliver behov for. For at databasen vil kunne modtage relevant data fra den gamle database. Opgaven skal løses på 2 dage. Opgaven er løst af Jørn inden for tidsgrænsen. Opgaven tog meget mindre tid end forventet, da der kun skulle oprettes 3 tabeller. Disse tabeller håndterer en ansats karriere og firmaoplysninger. Arbejdspakke 10: Jørn den 12. oktober. Flyt data fra testdatabasen til den nye database ved hjælp af integration services. Opgaven skal løses på 1½ dag. Opgaven er løst den 22/10 af Kasper inden for tidsgrænsen. Arbejdspakke 11: Jørn den 12. oktober. Ret koden så data hentes fra databasen hver gang i stedet for webserverens hukommelse. Opgaven skal løses på 2 dage. Opgaven er løst den 20/10 af Kasper og Jørn på 4 dage. En uddybende beskrivelse kan læses i afsnittet Webserver hukommelse database Arbejdspakke 12: Jørn den 12. oktober. Tag stilling til tests og gennemfør et udvalg af relevante tests. Opgaven skal løses på 2 dage. Opgaven er løst den 21/10 af Jørn inden for tidsgrænsen. Arbejdspakke 13: Jørn den 12. oktober. Tilføj undermenuen til administration på alle undersiderne. 2 timer. Opgaven er løst den 13/10 af Jørn inden for tidsrammen. Arbejdspakke 14: Jørn den 12. oktober. Lav en liste over trænings behov på siden training needs. Opgaven skal løses på 4 timer. Opgaven er løst den 15/10 af Kasper inden for tidsrammen. Arbejdspakke 14: Jørn den 12. oktober. Systemet skal kvalitetssikres. Vi skal i den forbindelse sætte os ind i brugen af pagevalidators. Opgaven skal løses på 1½ dag. Opgaven er løst den 21/10 af Kasper inden for tidsgrænsen. Issue 9: Jørn den 13. oktober. 62

63 I tabellen Emp_property_Goal er der en delt primærnøgle på Emp_Id og Parameter_Id. Dette betyder at når en ansat først har taget et kursus for at forbedre en property kan der ikke tilføres flere kurser til ham med mål at forbedre denne property. Dette bør rettes ved at tilføje en ny primærnøgle til tabellen. Opgaven skal løses hurtigst muligt da vi arbejder på user storis der bruger denne tabel. Der afsættes 2 timer til opgaven. Opgaven er løst af Jørn den 13. oktober inden for tidsgrænsen. Opgaven blev løst ved at oprette et script der kunne oprette tabellen med data. Desuden blev der tilføjet et id og primærnøglen blev fjernet. Derefter blev der oprettet et clustered indeks på Emp_Id og primær nøglen blev sat til det nye id. CREATE UNIQUE CLUSTERED INDEX Emp_Property_Goal ON Emp_Property_Goal(Emp_Id) ALTER TABLE dbo.emp_property_goal ADD PRIMARY KEY (Id) Issue 10: Jørn den 14. oktober. Når der oprettes en ny ansat, hardcodes hans companynumber. Dette skal rettes så det bliver muligt at vælge et firma han skal oprettes i. Der afsættes 2 timer. Opgaven er løst den 15/10 af Jørn inden for tidsgrænsen. Opgaven var simpel at løse da vores datatyper allerede tog dette inputparameter, så det var kun brugergrænsefladen der skulle rettes. Issue 11: Jørn den 20. oktober. Hvis man bruger en URL til at gå ind på en administrationsside, kan man komme ind som almindelig bruger. Der afsættes 4 timer til at løse opgaven. Opgaven er løst den 21/10 af Kasper inden for tidsgrænsen. Problemet var opstået fordi vi havde rykket Adminstraions mappen ind i aspxpages mappen, og dette gjorde at den definere string i webconfig filen ikke passede mere, så den er nu blevet rettet. Argumentation Database (Jørn) Vi har i dette sprint færdiggjort databasen for at kunne overføre alle data fra den gamle database til den nye. I den forbindelse har vi arbejdet med tilføjet tabellerne Company_Basic, Company_JobProfile og Career. Disse tabeller skal sørge for at gemme informationer omkring virksomheden, hvor mængden af jobprofiler der er behov for i virksomheden og en ansats karriere. Tabeller omkring pris til et kursus (Jørn) Vi manglede en metode til at registrere en pris på et kursus. Vi har valgt en løsning, hvor vi har en pris på kurset som skal kunne sættes af brugere. Når en bruger så tilknytter et kursus til en ansat skal prisen tilføjes til tabellen Emp_Property_Goal. På den måde får vi et system, der tager hensyn til ændringer i prisen på et kursus. Rapport der sammenligner en ansats properties med hans jobprofil(jørn) Vi havde i estimatet til denne user story vurderet at det ville tage 4,4 dage, at løse den. På grund af arbejdet med user story 30 i fjedre sprint, havde vi dog allerede alt der skulle bruges databasen og 63

64 en stored procedure der kunne hente den ønskede data. Dette betyder at user storyen kan løses på 1 dag. Vi har lagt rapporten under menupunktet reports. Tests Under udarbejdelsen af systemet har vi undladt at køre større og dokumenterede tests på systemet. Dette skylles at vi fra starten af andet sprint har manglet en webserver der understøtter reporting services. Desuden har vi undladt at køre automatiske tests, da stort set alt vores kode er afhængig af databasen, og denne slags tests er bedst til at teste på enkelte metoder der beregner nogle inputparametre og returnere et resultat. I stedet har vi selv testet på vores kode og brugerinterface, hvilket ikke er optimalt i længden. Derfor har vi valgt at skrive nogle test cases til en brugertest ADP kan vælge at kører inden de implementere systemet. Målet med testene er bl.a. at sikre det er de ønskede data der bliver vist og at data bliver gemt rigtigt i databasen. Disse tests kan findes i afsnittet afslutning af projektet under Tests. Vi har selvfølgelig selv gennemført testene, men anbefaler alligevel at de køres da de også tjekker på om alle data er overført og om opsætningen af systemet er i orden. Webserver hukommelse database (Jørn & Kasper) Under sidste sprint review diskuterede vi vores løsning med at gemme data i webserverens hukommelse kontra at hente data fra databasen hver gang. Vores mål med at lager data i rammen var primært at spare arbejde for databaseserveren. Vi var selv tilfredse med resultatet, men product owner havde nogle argumenter imod at gemme data i webserverens hukommelse. - Hvis et tredjeparts program senere skal arbejde sammen med personaledatabasen vil ændringer ikke blive opdaget af brugerne af vores system. - Kan der være sikkerhedsrisici ved at gemme data i webserverens ram. - Er der en mærkbar forskel ved vores løsning ved vores løsning?. - Er der en økonomisk gevinst ved at bruge tid på at lave den ekstra kode. Grunden til at vi havde valgt løsningen med at ligge data i webserverens hukommelse, var at vi kunne spare en masse databasekald. Under kommunikationen med product owner har vi så ikke været gode nok til at forklare, hvor konsekvente vi har været omkring dette arbejde, og derfor er der opstået nogle misforståelser. Da product owner ikke var enig i vores løsning med at gemme data i webserverens hukommelse har vi i dette sprint brugt tid på at rette koden, så vi i stedet henter data fra databasen. Vi havde afsat 2 mandedage til dette arbejde, men opgaven viste sig at være større end vi havde forventet. 64

65 Under arbejdet har vi især haft fokus på, at slette kode der er blevet overflødigt og sikre at der ikke bliver fortaget unødvendige databasekald. Arbejdet har taget længere tid end forventet og der kan stadig være ting der skal forbedres. Dog har vi lavet rettelser, der giver acceptable svartider i hele systemet. De største ændringer ligger i klasserne DataModeller og Employees: Eksempelvis brugte vi (i klassen Employees) denne kode til at styre brugerne og hvilke ansatte de havde rettigheder til at se. private List<Employee> _employeelist; private static List<Employees> _instancelist; private string _user; private Employees(string user) { DB db = DB.GetInstance(); _user = user; _employeelist = db.employeelist(user); } public static Employees GetInstance(string user) { if (_instancelist == null) { _instancelist = new List<Employees>(); } int userindexholder = 0; foreach (Employees emps in _instancelist) { if(user == emps._user) { return _instancelist[userindexholder]; } userindexholder++; } _instancelist.add(new Employees(user)); return _instancelist[_instancelist.count - 1]; } Når der ikke skal vedligeholdes data i webserverens hukommelse er dette ikke længere nødvendigt. Derfor ændrede vi den singletoninspirerede metode til en almindelig constructor der tager et brugernavn som inputparameter. public Employees(string user) { _user = user; } Ud over denne rettelse har vi flere steder rettet kode, fordi den opdaterede både webservens hukommelse og databasen. Nedenstående er et eksempel på, hvordan vi opdaterede listen af udannelseskategorier. 65

66 public void CreateUpdateEducationCategory(string name, int rating) { DB db = DB.GetInstance(); db.createupdateeducationcategory(name, rating); bool found = false; for (int i = 0; i < ListEducationCategory.Count; i++) { if (ListEducationCategory[i].Name == name) { ListEducationCategory[i].Rating = rating; found = true; } } if (!found) { ListEducationCategory.Add(new EducationCategory(name, rating)); } } Efter ændringerne ser metoden således ud: public void CreateUpdateEducationCategory(string name, int rating) { DB db = DB.GetInstance(); db.createupdateeducationcategory(name, rating); } Complete Training need (Kasper) Det skal være muligt at afslutte en træning, når en employee har færdig gjort den, dette har vi lavet ligesom når man opdatere en property. Dette sker ved at man markere den træning man vil afslutte, ved at hakke den af i combo boxen til venstre. Derefter trykker man på knappen complete traning. Vi har lagt denne funktion på samme side som opret training need, under employee, så man har mulighed for at se hvilke træninger, den enkelte ansatte er i gang med. Opdatering på traning needs (Kasper) Det er nu muligt at se hvilke træninger en ansat er i gang med lige nu, og da vi allerede havde lavet funktionaliteten til at afslutte en træning, så vi ikke nogen grund til ikke at implementere dette. 66

67 Create / Update Course (Kasper) Det skal være muligt oprette / ændre kurser, det kan være nødvendigt at oprette nye da der hele tiden kommer nye kurser, og prisen kan ændre sig på de gamle. Selve funktionen er lavet ligesom de andre opret / ændre funktioner der er lavet. En side hvor du kan oprette, og en liste der linker til siden hvorfra der kan opdateres, bare med et id tilknyttet, hvor den så henter de relevante informationer fra databasen, og ændre teksten på knappen til update i stedet for create. Complete traning For at gøre det muligt at se alle ansatte der er i gang med et træningsforløb, har vi lavet en funktionsside under analyses features der viser alle medarbejder, der er i gang med et træningsforløb. Her har vi så på samme tid sørget for, at man kan afslutte træningen. Dette gøres 67

68 simpelt ved at man hakker de træninger af man gerne vil have afsluttet, også trykker på complete traning knappen. Page validation Vores product owner har stillet det krav for os at systemet ikke skal gå ned fordi man ikke udfylder en tekst boks, for at kunne løse dette fandt vi ud af at asp.net har flere værktøjer til at løse dette. De 2 vi kommer til at bruge er RequiredFieldValidator og CompareValidator. RequiredFieldValidator sørger for at der står noget i den control den er sat til og CompareValidator bruges til at tjekke om det der er tastet ind passer til den type det skal være, det vil sige at skal det være en int, tjekker den at der ikke er nogle bogstaver eller andre tegn der ikke burde være der. Her ses et billede af et eksempel på hvordan de 2 validators virker på siden, de her validators gør, at siden ikke opretter noget før, alle felter erklæres valide. For at sørge siden ikke går videre når man trykker på knappen, dette gøres på kode siden. 68

69 if (Page.IsValid) { _controller.createemployee(context.user.identity.name, Convert.ToInt64(TextBoxPersonalId.Text), firstname.text, lastname.text, Convert.ToInt32(DropDownListCompany.SelectedValue), TextBoxTitle.Text, TextBoxAdress.Text, Convert.ToInt32(DropDownListZipcode.SelectedItem.Value), Convert.ToInt32(TextBoxPhone.Text), Convert.ToInt32(TextBoxMobile.Text), TextBoxComment.Text, Convert.ToDateTime(TextBoxDateOfEngagement.Text), TextBoxPositionCode.Text, CheckBoxActive.Checked, Convert.ToInt32(DropDownListOrganizationalUnit.SelectedValue), Convert.ToInt32(TextBoxStaffNumber.Text), Convert.ToInt32(TextBoxGlobaleId.Text), DropDownListJopProfile.SelectedItem.Text); } Denne if sætning sørger for at createemployee metoden kun bliver kørt når alle validators er, erklæret valid. Sprint review Vi har implementeret alle user stories og nået alle arbejdsopgaver, nået alle arbejdsopgaver og har ingen åbne issues. Desuden har vi ændret systemet, så det henter data fra databasen i stedet for at benytte webserverens ram. Vi har lavet installationsvejledning og brugertests der kan hjælpe med at fange eventuelle fejl i systemet og opsætningen. Vi har selvfølgelig selv testet systemet med dem, men anbefaler at de køres igen efter opsætning på en ny servere. Desuden har vi arbejdet på at kvalitetssikre systemet ved at benytte pagevalidators til at sikre systemet mod fejl som følge af forkert indtastning. For at gøre overgangen til det nye system nemmere, har vi testet overførsler af data ved hjælp af intergresion services og har nu dette klart til at sætte op mod deres gamle database. Konklusion på femte sprint Vi havde op til femte sprint valgt user stories, hvor dele af user storien allerede var løst gennem user stories, vi har løst tidligere i projektet. Det betød at vi kunne løse disse user stories meget hurtigt og bagefter fokusere på at gennemføre arbejdspakker der lå uden for vores product backlog og løse alle issues. Eftersom vi har løst vores user stories på 8 mandedage ville det være en god idé at reestimere de resterende userstories. Dette vil vi gøre under afslutning af projektet. 69

70 Estimat Burndown Chart 5 sprint Dage 9 10 Afslutning af projektet Ifølge vores estimat ville vi ikke være i stand til at færdiggøre systemet på de 10 uger, vi havde til rådighed. Dette har vist sig at passe, da vi i havde estimeret til at mangle mellem 36 og 51 (47 og 61 uden de user stories vi har slettet) dages arbejde ved projektets afslutning. Det reelle antal dage vi endte med at mangle var 37, hvilket ligger inden for estimatet. Estimat 140 Burndown Chart Projekt Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Reel fremgang Mål 70

71 Installationsvejledning Integration service installations manual (Kasper) Man åbner integration service også dobbelt klikker på den markerede datasource, som set på billedet herunder. Derefter popper der en menu op hvor der er en knap der hedder edit. Efter du har valgt edit kommer denne menu op, når den popper op står den på connection, så skal du gå ned på menuen all, og derefter ændre de 2 markerede elementer så de passer med jeres system. 71

72 Når du har gjort dette, skal du sætte destination serveren op, dette gøres ved at du vender tilbage til solution exploreren og dobbeltklikker på den markerede server som vist på billedet her under. Igen popper menuen hvor du vælger edit. Så kommer menuen frem som set herunder, her indstiller i den til den destination server som i har sat op. 72

73 Programmet skulle nu være klar, til at overføre jeres gamle database over i den nye vi har opbygget. Systemkrav (Jørn) Webpagen kræver en webserver der understøtter reporting services. Databasen skal køre på en MS SQL 2008 database med reporting services installeret. For at der kan oprettes forbindelse til databasen og rapportserveren skal der rettes nogle strings i koden. Alt der skal ændres ligger i klassen DataModeller: private static string _dbconnstring = "data source=dmuserver01.vejlehs.dk;initial catalog=personalesystem;user id=personaledb; password=******"; private static Uri _reporturl = new Uri(" private static string _foldernamedynamicreports = "ReportsDynamic"; private static string _reportingservice2005name = "/ReportService2005.asmx"; private static string _reportpropertyhistorypath = "/HRsystem/ReportsDynamic/ParameterHistory"; private static string _reporteducationpath = "/HRsystem/ReportsDynamic/EmployeeEducation"; - _dbconnstring: En string der indeholder connection string til databasen. - _reporturl: Indeholder en sti til rapportserveren. - _foldernamedynamicreports: Mappenavnet til mappen der indeholder dynamiske rapporter. - _reportingservice2005name: sidste del af stien til rapportserveren. - _reportpropertyhistorypath og EmployeeEducation: Bruges til at sætte stien til specifikke rapporter. 73

5. semesters projekt. Personalesystem. EDBskolen, Erhvervs akademiet Lillebælt Eksamensprojekt Efterår 2009 Vejleder: Per Larsen Dat07a Skrevet for

5. semesters projekt. Personalesystem. EDBskolen, Erhvervs akademiet Lillebælt Eksamensprojekt Efterår 2009 Vejleder: Per Larsen Dat07a Skrevet for 5. semesters projekt EDBskolen, Erhvervs akademiet Lillebælt Eksamensprojekt Efterår 2009 Vejleder: Per Larsen Dat07a Skrevet for Personalesystem Jørn Justesen: Kasper Holm: Indholdsfortegnelse Projektetablering...

Læs mere

Jørn Justesen Dat07a 5 semester projekt Kasper Holm. Projektetablering... 5

Jørn Justesen Dat07a 5 semester projekt Kasper Holm. Projektetablering... 5 5. semesters projekt EDBskolen, Erhvervs akademiet Vejle Eksamensprojekt Efterår 2009 Kontaktlærer Dat07a Skrevet for Personalesystem Jørn Justesen: : Indholdsfortegnelse Projektetablering... 5 Problemformulering...

Læs mere

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0 Program Dokumentation PC Software Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...3 1.1. FORMÅL...3 1.2. REFERENCER...3 1.3. VERSIONSHISTORIE...3 1.4. DEFINITIONER...3 1.5. DOKUMENTATIONENS

Læs mere

IT Support Guide. Installation af netværksprinter (direkte IP print)

IT Support Guide. Installation af netværksprinter (direkte IP print) IT Support Guide Denne guide er hentet på www.spelling.dk Program: Microsoft Windows Vista Program sprog version: ENG (US) Guide emne: Installation af netværksprinter (direkte IP print) Publikationsnr.:

Læs mere

Projekt - Valgfrit Tema

Projekt - Valgfrit Tema Projekt - Valgfrit Tema Søren Witek & Christoffer Thor Paulsen 2012 Projektet Valgfrit Tema var et projekt hvor vi nærmest fik frie tøjler til at arbejde med hvad vi ville. Så vi satte os for at arbejde

Læs mere

FSFI s guide til DFR s elektronisk bevissystem

FSFI s guide til DFR s elektronisk bevissystem FSFI s guide til DFR s elektronisk bevissystem Dette er en kort guide i anvendelsen af Dansk Førstehjælpsråd elektroniske bevissystem. Guiden viser og forklarer, hvordan du som instruktør og medlem af

Læs mere

Udbud.dk Brugervejledning til leverandører

Udbud.dk Brugervejledning til leverandører Udbud.dk Brugervejledning til leverandører Vejledning til at anvende Udbud.dk Januar 2014 Indholdsfortegnelse 1. INDLEDNING... 3 2. OVERORDNET OPBYGNING AF UDBUD.DK... 4 2.1 FORSIDE OG NAVIGATION... 4

Læs mere

Installation og opsætning af Outlook klient til Dynamics CRM

Installation og opsætning af Outlook klient til Dynamics CRM Dynamics CRM 4.0 Bredana Systemudvikling A/S - How to Installation og opsætning af Outlook klient til Dynamics CRM Først velkommen til din hostede Dynamics CRM. Med Outlook klienten installeret får du

Læs mere

Indholdsfortegnelse. Indholdsfortegnelse.. side 2. Adgang til webgraf 3. Opslag adresse... 4. Styring af layout.. 5. Zoom funktioner..

Indholdsfortegnelse. Indholdsfortegnelse.. side 2. Adgang til webgraf 3. Opslag adresse... 4. Styring af layout.. 5. Zoom funktioner.. Indholdsfortegnelse Indholdsfortegnelse.. side 2 Adgang til webgraf 3 Opslag adresse... 4 Styring af layout.. 5 Zoom funktioner.. 6 Panorere på skærmen. 7 Information om grafikken.... 8-10 Print et udsnit.....

Læs mere

Arbejdsblad. Indhold. 27. maj 2010 A312. 1 Projektplanlægning 1. 2 Samarbejdet i gruppen 3. 3 Samarbejdet med vejlederne 5

Arbejdsblad. Indhold. 27. maj 2010 A312. 1 Projektplanlægning 1. 2 Samarbejdet i gruppen 3. 3 Samarbejdet med vejlederne 5 Arbejdsblad 27. maj 2010 A312 Indhold 1 Projektplanlægning 1 2 Samarbejdet i gruppen 3 3 Samarbejdet med vejlederne 5 1 Procesanalyse 1 Projektplanlægning I projektarbejdet har vi benyttet Google kalender

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

Hvordan kan Unified Process (UP), C#-programmering og Relationelle databaser, blive brugt til udvikling og implementering af et enkeltbrugersystem?

Hvordan kan Unified Process (UP), C#-programmering og Relationelle databaser, blive brugt til udvikling og implementering af et enkeltbrugersystem? PROJEKTETABLERING - BILAG 2 Projektformulering Hvordan kan Unified Process (UP), C#-programmering og Relationelle databaser, blive brugt til udvikling og implementering af et enkeltbrugersystem? Virksomhedsbeskrivelse

Læs mere

Database optimering - Indeks

Database optimering - Indeks Database optimering - Indeks Alle kender til dette irritations moment, hvor programmet man sidder og arbejder med, bare ikke er hurtigt nok. Selvom det kun drejer sig om få sekunder man sidder og venter,

Læs mere

Installationsguide til SAP Business One 2005 SP1 (SBO 2005)

Installationsguide til SAP Business One 2005 SP1 (SBO 2005) Installationsguide til SAP Business One 2005 SP1 (SBO 2005) Installationen af SBO 2005 Service Pack 1består af flere enkeltkomponenter. Først og fremmest skal der installeres en database til at indeholde

Læs mere

Installation af ETF s cloudløsning for Privatpraktiserende ergoterapeuter

Installation af ETF s cloudløsning for Privatpraktiserende ergoterapeuter Installation af ETF s cloudløsning for Privatpraktiserende ergoterapeuter For at starte opsætningen af produktet, downloades programmet ved at gå til nedstående link, og vælge under Privat praktiserende

Læs mere

accodesk vi hjælper dig hele vejen!

accodesk vi hjælper dig hele vejen! accodesk vi hjælper dig hele vejen! Brugervejledning Æbeløgade 4, st. 2100 København Ø november 2015 Side 1 29 Indhold Forside... 3 Knowledge base... 4 Artikler... 4 Search... 5 Log in - Sign in... 5 Opret

Læs mere

Mini brugermanual CMD 5.1

Mini brugermanual CMD 5.1 Mini brugermanual CMD 5.1 Kom i gang For at tilgå CMD skal du åbne en web browser og indtaste URL en på dit CMD website i adressefeltet, hvorefter dialogboksen til log in vises. 1. Indtast dit brugernavn

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

Dansk Ride Forbund Stævnesystem 2 Installationsvejledning

Dansk Ride Forbund Stævnesystem 2 Installationsvejledning Dansk Ride Forbund Stævnesystem 2 Installationsvejledning Redigeret Marts 2009 DANSK RIDE FORBUND Stævnesystem 2 Installationsvejledning Side 1 af 19 Indholdsfortegnelse: 1. Minimumskrav 3 2. Download

Læs mere

Google Chrome side 1 af13

Google Chrome side 1 af13 Google Chrome side 1 af13 Indholdsfortegnelse: Download Google Chrome... Side 2 Overblik... Side 3 Angiv startside... Side 7 Søg direkte i adresselinjen... Side 8 Bogmærker sider... Side 8 Bogmærkeadministratoren...

Læs mere

Online-timeseddelregistrering

Online-timeseddelregistrering Online-timeseddelregistrering Denne vejledning giver dig et overblik over, hvordan du kommer i gang med at foretage registrering af dine timesedler i vores online-tidsregistreringssystem, som hedder AXP.

Læs mere

Brug Photo Story 3 en let introduktion

Brug Photo Story 3 en let introduktion Brug Photo Story 3 en let introduktion Denne vejledning forudsætter at programmet Photo Story 3 er installeret på din computer. Se andetsteds for vejledning i at installere programmet, der kan findes gratis

Læs mere

RUTruteplanlægningsvejledning. Folkekirkens Nødhjælp Sogneindsamling 2015

RUTruteplanlægningsvejledning. Folkekirkens Nødhjælp Sogneindsamling 2015 RUTruteplanlægningsvejledning Folkekirkens Nødhjælp Sogneindsamling 2015 Indhold 1. Introduktion til RUT... 2 1.1 Om vejledningen... 2 2. Log på RUT... 4 3. Sådan planlægger du ruter... 6 4. Sådan finder

Læs mere

Indledning... 2 Forsiden... 2 Dine genveje... 3 Skoleoplysninger... 3 Service Log... 3 Nyheder... 4 AD overblik... 4 Administration...

Indledning... 2 Forsiden... 2 Dine genveje... 3 Skoleoplysninger... 3 Service Log... 3 Nyheder... 4 AD overblik... 4 Administration... Indholdsfortegnelse Indhold Indledning... 2 Forsiden... 2 Dine genveje... 3 Skoleoplysninger... 3 Service Log... 3 Nyheder... 4 AD overblik... 4 Administration... 4 Nyheder... 4 Vedligeholdelse... 6 Ret

Læs mere

Quick guide til e-learn.sdu.dk (Blackboard) for studerende

Quick guide til e-learn.sdu.dk (Blackboard) for studerende Quick guide til e-learn.sdu.dk (Blackboard) for studerende Der opnås adgang til e-learn.sdu.dk (Blackboard) via single sign-on, sso.sdu.dk/, eller adressen: e-learn.sdu.dk/. Når du har logget på, står

Læs mere

Umbraco installationsvejledning

Umbraco installationsvejledning på et ScanNet ASP Webhotel Indledning Beskrivelse Denne vejledning vil indeholde installation af CMS systemet Umbraco på et ASP Webhotel. Det dansk grundlagt Content Management System (CMS) Umbraco er

Læs mere

[jobsøgende] sådan gør du... [opret dit CV & jobønsker]

[jobsøgende] sådan gør du... [opret dit CV & jobønsker] [jobsøgende] sådan gør du... [opret dit CV & jobønsker] Opret CV og Jobønsker på jobnet På Jobnets forside Jobnet.dk kan du oprette et CV. Det kan du gøre ved at oprette dig som bruger via linket Mit CV

Læs mere

Indholdsfortegnelse resultat- & kritikprogrammet.

Indholdsfortegnelse resultat- & kritikprogrammet. Indholdsfortegnelse resultat- & kritikprogrammet. Ringsekretærers indtastning af resultater og kritikker... 2 Kom i gang Opstart af programmet... 2 En anden bruger er i gang med ringen... 3 Dommer ændringer

Læs mere

Digital skriftlig aflevering med Lectio Censormodul Stedprøver installationsvejledning

Digital skriftlig aflevering med Lectio Censormodul Stedprøver installationsvejledning Digital skriftlig aflevering med Lectio Censormodul Stedprøver installationsvejledning 1. Lokalt installeret afleveringsprogram til stedprøver... 2 2. Systemkrav... 3 3. Netværksopsætning... 4 4. Installation

Læs mere

Linket viser jer frem til billedet nedenfor, her skal du blot skrive jeres brugernavn og adgangskode. Indtast din adgangskode her:

Linket viser jer frem til billedet nedenfor, her skal du blot skrive jeres brugernavn og adgangskode. Indtast din adgangskode her: Brugervejledning til håndtering af respondenter til MUS i SurveyXact Indledning Denne manual beskriver, hvordan SurveyXact kan anvendes til forberedelse af MUS. Der tages udgangspunkt i handlinger, den

Læs mere

Skrivebordet Windows 10

Skrivebordet Windows 10 Få adgang til Stifinder, Indstillinger og andre apps, du bruger ofte, i venstre side af menuen Start. Hvis du vil se alle dine apps og programmer, skal du vælge Alle apps. Vises der en pil til højre for

Læs mere

Kvikmanual til FacilityNet

Kvikmanual til FacilityNet Kvikmanual til FacilityNet Om FacilityNet?... 2 Trin 1 - Aktiver din brugerprofil... 3 Trin 2: Opret ny bestilling... 4 Trin 3: Vælg varer... 5 Trin 4: Indtast ordreinformationer... 6 Trin 5: Indtast mødedeltagere...

Læs mere

Effektiv Jobsøgning. Frederik Iuel DJØFs Karriere- og Kompetencecenter

Effektiv Jobsøgning. Frederik Iuel DJØFs Karriere- og Kompetencecenter Effektiv Jobsøgning Frederik Iuel DJØFs Karriere- og Kompetencecenter Dagens program... Dagens Program CV et Hvordan vinkler du din baggrund til at besvare virksomhedens krav? Ansøgningen Hvad kan du tilbyde

Læs mere

Computer og print ved skriftlige prøver på Laursens Realskole

Computer og print ved skriftlige prøver på Laursens Realskole Forudsætninger for at anvende it til prøverne: 1. Ved nogle skriftlige prøver er det tilladt at bruge it-udstyr. It-udstyr betyder en computer + en smartphone og/eller en tablet. FLY-funktionen SKAL være

Læs mere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel

Læs mere

Guide. Administration af FDF.dk/Nyborg. 1. Udgave 2008. Ide og layout Christoffer S. Rasmussen

Guide. Administration af FDF.dk/Nyborg. 1. Udgave 2008. Ide og layout Christoffer S. Rasmussen Guide Administration af FDF.dk/Nyborg 1. Udgave 2008 Ide og layout Christoffer S. Rasmussen FDF.Dk/NyboRG Den nye hjemmeside for FDF Nyborg er baseret på et bloksystem. Det vil sige at det er super nemt

Læs mere

// Mamut Business Software Installationsguide: Basis

// Mamut Business Software Installationsguide: Basis // Mamut Business Software Installationsguide: Basis Introduktion Indhold Denne guide forenkler installationen og førstegangsopstarten af Mamut Business Software. Hovedfokus i denne guide er enkeltbrugerinstallationer.

Læs mere

Manual for Jobmultimeter Bruger

Manual for Jobmultimeter Bruger Manual for Jobmultimeter Bruger 23. september 2013 Side 1 af 29 Indhold Generelt... 3 Sådan kommer du i gang... 3 Sådan logger du ind... 3 Mine data... 5 Mine data... 5 Sådan vedligeholder du informationer...

Læs mere

Tastevejledning Windows XP

Tastevejledning Windows XP Tastevejledning Windows XP Tastevejledningen dækker den danske udgave af Windows XP. Der er taget udgangspunkt i en standard installation, hvor der ikke er foretaget tilpasninger i skærmopsætning, valg

Læs mere

Installationsvejledning til LMeSmartClient

Installationsvejledning til LMeSmartClient Installationsvejledning til LMeSmartClient Indledning LMeSmartClient består af 2 "dele" - en "Tjeneste" og et klientprogram. Tjenesten tager sig af selve udvekslingen af data og klientprogrammet af opsætningen

Læs mere

SDBF QUICKGUIDE SKOLERNES DIGITALE BLANKET FLOW - BRUGER-GUIDE -

SDBF QUICKGUIDE SKOLERNES DIGITALE BLANKET FLOW - BRUGER-GUIDE - SDBF QUICKGUIDE SKOLERNES DIGITALE BLANKET FLOW - BRUGER-GUIDE - INTRODUKTION TIL SKOLERNES DIGITALE BLANKET FLOW Vi er glade for at kunne byde velkommen til opdateret udgave af KEAs nye, automatiske blanket-system.

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

Modul 1 Skolens netværk, skema og kommunikation i Lectio Efter gennemgangen af dette modul skal du:

Modul 1 Skolens netværk, skema og kommunikation i Lectio Efter gennemgangen af dette modul skal du: Modul 1 Skolens netværk, skema og kommunikation i Lectio Efter gennemgangen af dette modul skal du: 1. Kende til skolens netværk og drev. Specielt dit personlige H-drev 2. Kunne se dit skema og dine lektier

Læs mere

Opgavestyring Workflow:

Opgavestyring Workflow: Opgavestyring Workflow: 1 2 Indholdsfortegnelse Opgavestyring... 1 Opret opgave... 3 1. Via skema... 3 2. Via kuffert... 3 3. Via menuen... 4 4. Via Find udbudte aktiviteter via udbudte undervisningsforløb...

Læs mere

Manual og Hjælp Skoletasken 2

Manual og Hjælp Skoletasken 2 Manual og Hjælp Skoletasken 2 I Skoletasken 2 - Hjælp Indhold I Introduktion 1 Velkomst 2... 2 2 Systemkrav... 2 3 Installation... 3 4 Skoletasken... 8 II Opsætning 10 1 Systemopsætning... 10 2 Bogopsætning...

Læs mere

Installation af Elektronisk APV på flere PC er

Installation af Elektronisk APV på flere PC er Installation af Elektronisk APV på flere PC er Vejledning til installation af Elektronisk APV, når programmet skal installeres på flere PC er, der kobler sig op på en fælles server. 1 Installation af Elektronisk

Læs mere

Indholdsfortegnelse. Indhold

Indholdsfortegnelse. Indhold Indholdsfortegnelse Indhold Login... 2 Registrér komme / gå tider... 4 Flere arbejdsperioder på samme dag?... 5 Frokostpause / ret Frokostpause... 7 Sletning... 8 Afslut måned... 9 Godkendte/afviste måneder...

Læs mere

Brugermanual til Assignment Hand In

Brugermanual til Assignment Hand In Brugermanual til Assignment Hand In Indhold: Undervisere:... 2 Hvor finder jeg Assignment hand in?... 2 Opret en opgave... 3 Slet en opgave... 4 Rediger en opgave... 4 Hvor finder jeg de afleverede filer?...

Læs mere

Side 1 af 17. Læs hele vejledningen / manualen igennem inden du installere og bruger programmet

Side 1 af 17. Læs hele vejledningen / manualen igennem inden du installere og bruger programmet Side 1 af 17 Indledning Læs hele vejledningen / manualen igennem inden du installere og bruger programmet og Velkommen til denne vejledning i brug af CCleaners grundlæggende funktioner. Ved almindelig

Læs mere

Opret dig som forældre på HVAL.DK

Opret dig som forældre på HVAL.DK Opret dig som forældre på HVAL.DK Et webbaseret værktøj udviklet af Programdatateket i Skive Kolofon HVAL-vejledning Opret dig som forældre på HVAL.DK Forfatter: Susanne Andersen, Programdatateket 1. udgave

Læs mere

Denne rapport er skrevet af:

Denne rapport er skrevet af: Rapport til Kajakklubben Rapport til Kajakklubben Generelt: Frontend: Backend Admin: Backend instruktør sign up: Backend medlem sign up: Database: Oprettelse af database og SQL sætning: Konklusion: Bilag:

Læs mere

HMN Naturgas - WebGIS

HMN Naturgas - WebGIS HMN Naturgas - WebGIS November 5, 2012 WebGIS er en webside, der viser HMN Naturgas gasledninger. Private kan se hvor gas stikledningen ligger på deres egen grund. Visse samarbejdspartnere har fået lidt

Læs mere

Navision i undervisningen

Navision i undervisningen Navision i undervisningen Side 1 af 8 Indhold Indledning...3 Eleverne...3 Skolemæssige forudsætninger...3 Elevernes alder...3 Arbejdserfaring...3 IT forudsætninger...3 IT på grundforløbet...4 Hvornår vi

Læs mere

Anklagemyndighedens Vidensbase

Anklagemyndighedens Vidensbase Anklagemyndighedens Vidensbase Indhold 1 OM DENNE VEJLEDNING... 2 2 LOGIN... 3 3 SØGNINGER... 4 3.1 SØG EFTER DOKUMENTER... 4 3.2 NAVIGÉR DIG FREM... 5 3.3 KOMBINÉR SØGNING OG NAVIGATION... 6 3.4 VISNING

Læs mere

Brugervejledning for. Telenor Dialer

Brugervejledning for. Telenor Dialer Brugervejledning for Telenor Dialer 1 Indholdsfortegnelse Funktionsbeskrivelse af Telenor Dialer... 5 Telenor Dialer OneNumber Mobile... 6 Telenor Dialer OneNumber.... 6 Installation af Telenor Dialer...

Læs mere

Brugervejledning til udfyldelse og udstedelse af Europass Mobilitetsbevis i Europass Mobilitetsdatabasen

Brugervejledning til udfyldelse og udstedelse af Europass Mobilitetsbevis i Europass Mobilitetsdatabasen Brugervejledning til udfyldelse og udstedelse af Europass Mobilitetsbevis i Europass Mobilitetsdatabasen Europass Mobilitetsbevis skal udfyldes og udstedes i mobilitetsdatabasen: http://mobilitet.europass.dk/.

Læs mere

REFWORKS FAGKONSULENTENS VEJLEDNING

REFWORKS FAGKONSULENTENS VEJLEDNING REFWORKS FAGKONSULENTENS VEJLEDNING Nationale Kliniske Retningslinjer Version 09-02-2015 2015 Indholdsfortegnelse 1. Refworks og Nationale Kliniske Retningslinjer... 3 2. Ekstern adgang til RefWorks...

Læs mere

Manual til Rsiden.dk for rygestoprådgivere

Manual til Rsiden.dk for rygestoprådgivere 1 Manual til Rsiden.dk for rygestoprådgivere Muligheder på Rsiden.dk www.rsiden.dk er en side, der skal samle alle de relevante dokumenter, informationer og kurser til rygestoprådgivere på et sted. Det

Læs mere

RefWorks Workshop Medicinsk Bibliotek Aalborg Universitetshospital. Oprettelse af konto/log in... 2. RefWorks-databasen... 2

RefWorks Workshop Medicinsk Bibliotek Aalborg Universitetshospital. Oprettelse af konto/log in... 2. RefWorks-databasen... 2 RefWorks vejledning Indhold Oprettelse af konto/log in... 2 RefWorks-databasen... 2 Import af referencer... 2 Pubmed... 3 Embase/Psycinfo/Medline (Ovid)... 4 Cinahl... 5 RefGrab-it... 6 Organisering af

Læs mere

Navision Stat 7.0. Kvikguide om tilpasning af rollecenteret. Overblik. Side 1 af 29. ØSY/STO 18. maj 2015

Navision Stat 7.0. Kvikguide om tilpasning af rollecenteret. Overblik. Side 1 af 29. ØSY/STO 18. maj 2015 Side 1 af 29 Navision Stat 7.0 ØSY/STO 18. maj 2015 Kvikguide om tilpasning af rollecenteret Overblik Formål Denne kvikguide omhandler de tilpasninger som du kan foretage i Handlingsbåndet, Navigationsmenuen

Læs mere

Contents. WorkZone Process 2013

Contents. WorkZone Process 2013 2013 Onlinehjælp WorkZone Process 2013 Contents Onlinehjælp til WorkZone Process 2013 3 Dokumenthistorik 4 Nyheder 5 Sådan starter du processer 6 Start proces i Captia Web Client 7 Start proces på basis

Læs mere

MailMax / Web v4.1. Brugsvejledning til webmail. Copyright 2003 Gullestrup.net

MailMax / Web v4.1. Brugsvejledning til webmail. Copyright 2003 Gullestrup.net MailMax / Web v4.1 Copyright 2003 Gullestrup.net Log ind på webmailen Start med at gå ind på http://webmail.gullestrup.net i din browser. Indtast din Email-adresse samt Adgangskode, som hører til din konto.

Læs mere

Procedure for evaluering

Procedure for evaluering Procedure for evaluering Evaluering af et undervisningsforløb indeholder tre elementer. Ved undervisningens start orienteres de studerende om indhold og mål for faget, og de har mulighed for at redegøre

Læs mere

VDI-GUIDE FOR AALESTRUP REALSKOLE

VDI-GUIDE FOR AALESTRUP REALSKOLE VDI-GUIDE FOR AALESTRUP REALSKOLE Af Martin Lohse Mikkelsen IT-vejleder - Side 1 af 37 Forord Dette dokument skal hjælpe dig med brugen af skolens VDI system. Et VDI-system er en virtuel computer, som

Læs mere

Guide til Web-direct. Indholdsfortegnelse

Guide til Web-direct. Indholdsfortegnelse Indholdsfortegnelse 1. Sådan åbner du WEB-direct...2 2. Firmaopslag...3 3. Markedsudvalg...4 4. Udskrift af liste...14 5. Eksport af data...15 6. Fletning i Word...18 7. Brevfletning til ansøgninger...27

Læs mere

MANUAL AF FILIP WALLBERG & RUNE MICHELSEN

MANUAL AF FILIP WALLBERG & RUNE MICHELSEN MANUAL AF FILIP WALLBERG & RUNE MICHELSEN NB! Denne manual er også fuldt ud anvendelig til arbejdet på radionyheder.dk og tvnyheder.dk, da disse sites er bygget op i nøjagtig samme system! Indhold Om

Læs mere

SDB. MySQL Installation Guide

SDB. MySQL Installation Guide SDB MySQL Installation Guide MERE 2003 D. 05 July, 2003 Installation af MySQL databasen Introduktion...2 Krav for at installere MySQL...2 Installationen...3 Udpak zip filen...3 Start Installationen...3

Læs mere

Installér din Officepakke 2013

Installér din Officepakke 2013 Vær opmærksom på der godt kan forekomme andre billeder end dem som er illustreret. Dette er grundet ændringer fra microsoft. Blandt andet bliver SkyDrive ændret til OneDrive. Er du i tvivl om noget kan

Læs mere

Hjælp under login på Mit DLR Oktober 2015

Hjælp under login på Mit DLR Oktober 2015 Hjælp under login på Mit DLR Oktober 2015 Jeg logger ind med bruger-id og nøglekort og får at vide, at der ikke er nogen sager i DLR Der er logget ind med forkert NemID. Vi oplever mange henvendelser,

Læs mere

Undervisning og AV Synlighed og Information

Undervisning og AV Synlighed og Information Undervisning og AV Synlighed og Information AKTIV LÆRING Når læring, bevægelse og tekno Aktiv Læring er EXAKTs online portal, som forener leg, læring og bevægelse. Tag børnene med på en stafet efter eget

Læs mere

Axiell Danmark. facebib. en vejledning

Axiell Danmark. facebib. en vejledning Axiell Danmark facebib en vejledning 20. marts 2013 Indhold 1 Introduktion... 4 1.1 Forudsætninger... 4 2 Hvad kan man på facebib?... 5 2.1 Link til forsiden... 6 2.2 Linksamling (Leksikon)... 6 2.3 Link

Læs mere

Brugervejledning. Optagelse.dk Vejledning til forældre og elever i grundskolen

Brugervejledning. Optagelse.dk Vejledning til forældre og elever i grundskolen Brugervejledning Optagelse.dk Vejledning til forældre og elever i grundskolen 7. februar 2012 1 INDLEDNING... 4 1.1 MÅLGRUPPE... 4 1.2 BEMÆRKNINGSFELT... 4 2 UDDANNELSESPLANEN FOR ELEVER... 5 2.1 LOGIN...

Læs mere

Indholdsfortegnelse for bilag

Indholdsfortegnelse for bilag Indholdsfortegnelse for bilag 1 Bilag 1 - Projektgrundlag ------------------------------------------------------------------------------------------------------ 4 1.1 Arbejdsform ---------------------------------------------------------------------------------------------------------------

Læs mere

Værkstedsundervisning hf-enkeltfag Vejledning/Råd og vink August 2010

Værkstedsundervisning hf-enkeltfag Vejledning/Råd og vink August 2010 Værkstedsundervisning hf-enkeltfag Vejledning/Råd og vink August 2010 Alle bestemmelser, der er bindende for undervisningen og prøverne i de gymnasiale uddannelser, findes i uddannelseslovene og de tilhørende

Læs mere

Bruger Manual For WT-215W WIFI relæ

Bruger Manual For WT-215W WIFI relæ Product Model: WT-215W Bruger Manual For WT-215W WIFI relæ Applicationer Sæt enheden til en stikkontakt og brug setup menuen for at forbinde enheden til WiFi-routeren og opret en online konto, så er man

Læs mere

Brug af Office 365 på din Android-telefon

Brug af Office 365 på din Android-telefon Brug af Office 365 på din Android-telefon Startvejledning Tjek mail Sæt din Android-telefon op til at sende og modtage mail fra din Office 365-konto. Tjek din kalender, uanset hvor du er Hav altid styr

Læs mere

Pralemappen.dk Din online portfolio Brugerhåndbog til undervisere support@pralemappen.dk Brugerhåndbog til undervisere

Pralemappen.dk Din online portfolio Brugerhåndbog til undervisere support@pralemappen.dk Brugerhåndbog til undervisere www.pralemappen.dk v4 side 1 af 10 Indholdsfortegnelse Velkommen til pralemappen.dk 1.1 Introduktion...side 3 1.2 Grundlæggende funktioner...side 3 1.3 Indstillinger der gælder hele skolen...side 4 1.4

Læs mere

TRUST 460L MOUSE OPTICAL OFFICE

TRUST 460L MOUSE OPTICAL OFFICE Instruktioner ved første anvendelse Kapitel 1. Tilslutning (4.1) 2. Afinstallering af gamle drivere og enheder (4.2) 3. Installation i Windows (4.3) 4. Kontrol efter installation (5)! 1 Introduktion Denne

Læs mere

BRUGERVEJLEDNING DAO - MAGENTO INTEGRATION MODUL VERSION 1.0.4 BRUGERVEJLEDNING DAO MAGENTO INTEGRATION

BRUGERVEJLEDNING DAO - MAGENTO INTEGRATION MODUL VERSION 1.0.4 BRUGERVEJLEDNING DAO MAGENTO INTEGRATION BRUGERVEJLEDNING DAO - MAGENTO INTEGRATION MODUL VERSION 1.0.4 Vejledning: DAO Magento integration. Version 2015.07.21 Side 1 af 11 INDHOLDSFORTEGNELSE KOM GODT I GANG 3 Generelt 4 Indstillinger 5 Design

Læs mere

Sådan får du Salmebogen på CD-ROM til at fungere i Internet Explorer 7 både under Windows XP og Windows Vista

Sådan får du Salmebogen på CD-ROM til at fungere i Internet Explorer 7 både under Windows XP og Windows Vista Sådan får du Salmebogen på CD-ROM til at fungere i Internet Explorer 7 både under Windows XP og Windows Vista Beskrivelse af fejlen Salmebogen på CD-ROM har visse problemer med at fungere i Internet Explorer

Læs mere

Indholdsfortegnelse. Indledning...2. Tidsplan...2. Målgruppe...3. Spørgeskema...3. Kode eksempler...5. Procesbeskrivelse...7. Evaluering...

Indholdsfortegnelse. Indledning...2. Tidsplan...2. Målgruppe...3. Spørgeskema...3. Kode eksempler...5. Procesbeskrivelse...7. Evaluering... 1 Indholdsfortegnelse Indledning...2 Tidsplan...2 Målgruppe...3 Spørgeskema...3 Kode eksempler...5 Procesbeskrivelse...7 Evaluering...8 Bilag - Spørgeskema...9 Indledning - Jeg har som skoleprojekt fået

Læs mere

Kompetenceplatformen

Kompetenceplatformen Kompetenceplatformen KOMPETENCEUDVIKLING MED STRATEGISK FOKUS Medarbejder vælger samtaleemner angiver kernekompetencer gør status på gamle aftaler Leder og medarbejder studerer samtaleskema Leder klikker

Læs mere

Bruger Manual. Version: 3.03. Add-On Products Skovgade 2 DK-7100 Vejle Europe Denmark Phone: +45 7944 7000 Fax: +45 7944 7001

Bruger Manual. Version: 3.03. Add-On Products Skovgade 2 DK-7100 Vejle Europe Denmark Phone: +45 7944 7000 Fax: +45 7944 7001 Bruger Manual Version: 3.03 Add-On Products Skovgade 2 DK-7100 Vejle Europe Denmark Phone: +45 7944 7000 Fax: +45 7944 7001 Mail: info@add-on.com Internet: www.add-on.com Ingen dele af denne publikation

Læs mere

Website sikkerhed SQL Injections og mere...

Website sikkerhed SQL Injections og mere... ... Skrevet af Daniel Pedersen 1 Introduktion Sikkerheden i dag skal være i top, der er rigtig mange små hurtige og nemme metoder til at få adgang til ens hjemmeside. Mange er ikke ældre end 14 år, og

Læs mere

Manual til administration af online booking

Manual til administration af online booking 2016 Manual til administration af online booking ShopBook Online Med forklaring og eksempler på hvordan man konfigurerer og overvåger online booking. www.obels.dk 1 Introduktion... 4 1.1 Formål... 4 1.2

Læs mere

Quickquide for DVR/NVR optager

Quickquide for DVR/NVR optager Quickquide for DVR/NVR optager 1. Login I. Brugere og funktioner 2. Hovedmenu I. De forskellige ikoner 3. Live visning 4. Skema 5. Søgning 6. Web menu I. Regulær II. Bevægelsesdetektering III. Alarm I.

Læs mere

Gem dine dokumenter i BON s Content Management System (CMS)

Gem dine dokumenter i BON s Content Management System (CMS) 24. august 2007 Gem dine dokumenter i BON s Content Management System (CMS) INDHOLDSFORTEGNELSE 1. Indledning... 2 2. Se indholdet i dit Content Management System... 3 3. Tilgå dokumenterne i My Content

Læs mere

Den virtuelle teenager Gruppe 2 Hold B. Medlemmer: Søren Nielsen Eli Adelholm Lasse Viking Kristensen Sabrine Lassen Caroline Amalie Rasmussen

Den virtuelle teenager Gruppe 2 Hold B. Medlemmer: Søren Nielsen Eli Adelholm Lasse Viking Kristensen Sabrine Lassen Caroline Amalie Rasmussen Den virtuelle teenager Gruppe 2 Hold B Medlemmer: Søren Nielsen Eli Adelholm Lasse Viking Kristensen Sabrine Lassen Caroline Amalie Rasmussen Link til trello: https://trello.com/b/qjwcujmg/thunder-truck

Læs mere

WebGT 3.0 - Graveansøgning. Brugervejledning. 25. september 2012. Udgave 1.0

WebGT 3.0 - Graveansøgning. Brugervejledning. 25. september 2012. Udgave 1.0 WebGT 3.0 - Graveansøgning Brugervejledning 25. september 2012 Udgave 1.0 Indholdsfortegnelse 1 INDLEDNING... 3 1.1 OPRETTELSE SOM BRUGER... 3 1.2 NOTIFICERINGSMAILS... 4 2 OPBYGNING OG SAGSGANG... 5 2.1

Læs mere

Her kan man oprette et nyt slideshow ved at trykke på kassen med "Opret nyt slideshow". Dette fører en til "Rediger slideshow".

Her kan man oprette et nyt slideshow ved at trykke på kassen med Opret nyt slideshow. Dette fører en til Rediger slideshow. Hjælp til Praksisskærm Redigering i Praksisskærm Redigeringsdelen består af 2 sider. Den ene side - "Oversigt over slideshows" indeholder oversigten over ens slideshows. Den anden - "Rediger slideshow"

Læs mere

_2_mulighederAfgive vælgererklæring eller tilbagetrække støtte?

_2_mulighederAfgive vælgererklæring eller tilbagetrække støtte? Support Hvis du ikke kan finde svar på dine spørgsmål længere nede på siden, kan du kontakte partiet. Du kan stille spørgsmål til processen, eller til brugen af systemet ved at kontakte det parti du vil

Læs mere

Vejledning til brug af Skolens IT For nye medarbejdere

Vejledning til brug af Skolens IT For nye medarbejdere Vejledning til brug af Skolens IT For nye medarbejdere 5.Udgave Okt 2014 IT-Center Syd byder dig velkommen til EUC Syd. Denne vejledning er lavet for at gøre det nemmere for dig som medarbejder, at benytte

Læs mere

FSFIs lynguide til DFRs elektronisk bevissystem

FSFIs lynguide til DFRs elektronisk bevissystem FSFIs lynguide til DFRs elektronisk bevissystem Dette er en kort guide i anvendelsen af Dansk Førstehjælpsråd elektroniske bevissystem. Guiden viser og forklarer hvordan du som instruktør og medlem af

Læs mere

Kom godt i gang med I-bogen

Kom godt i gang med I-bogen Kom godt i gang med I-bogen At åbne bogen Det allerførste, du skal gøre, for at kunne arbejde med i-bogen, er at aktivere den. Det gøres ved at oprette en konto på systime.dk og derefter aktivere bogen

Læs mere

Din brugermanual NOKIA 6630 http://da.yourpdfguides.com/dref/822852

Din brugermanual NOKIA 6630 http://da.yourpdfguides.com/dref/822852 Du kan læse anbefalingerne i brugervejledningen, den tekniske guide eller i installationsguiden. Du finder svarene til alle dine spørgsmål i i brugermanualen (information, specifikationer, sikkerhedsråd,

Læs mere

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 6.0

PSYKIATRIENS VIKARCENTER. MinTid. Quickguide. Version 6.0 PSYKIATRIENS VIKARCENTER MinTid Quickguide Version 6.0 Psykiatriens Vikarcenter Vi glæder os til at du kommer på Min Tid. Systemet giver dig adgang til bedre planlægning, vagtbørsen og muligheden for at

Læs mere