Universitet: Uddannelse: Emne: Afleveringsfrist: Bemærkninger: Udarbejdet af:

Størrelse: px
Starte visningen fra side:

Download "Universitet: Uddannelse: Emne: Afleveringsfrist: Bemærkninger: Udarbejdet af:"

Transkript

1 Universitet: Danmarks Tekniske Universitet Uddannelse: It-Diplom Ingeniør Emne: Dynamisk filter komponent Afleveringsfrist: Mandag den 14. juni 2010 Bemærkninger: Rapporten er en eksamensrapport til 20 ECTS point, og estimeret til 12 ugers arbejde. Rapporten er skrevet på dansk og i samarbejde med virksomheden LicenseWatch. Udarbejdet af: Petersen, Michael Nørholt, s Denne rapport indeholder 77 sider inkl. denne side.

2 Tecnical University of Denmark Informatics and Mathematical Modelling Building 321, DK-2800 Kongens Lyngby, Denmark Phone , Fax IMM-B.Eng

3 Resume Projektets indhold Udvikling af en statisk/dynamisk filtrerings komponent, der gør rapport data mere intuitiv for slutbrugerne. Firmaet LicenseWatch har udviklet en windows SAM web applikation, som bla. kan søge efter brugere, software og workstations mm. Søgningsresultaterne kan man bla. udtrække som rapporter vha. SQL Server Reporting Services. Der ønskes heraf, udarbejdet en brugervenligheds analyse og design til en pågældende GUI, som gør brug af en rapport filtrerings komponent. Denne filtrerings komponent og tilhørende GUI vil blive udviklet eks. vha. unified process. Programmeringssprog/værktøjer som skal anvendes: - Microsoft Visual studio.net (C#, ASP, AJAX) - SQL

4 Abstract The project contents Development of an static/dynamic filtering component,which make report data more intuitive for end users. The company LicenseWatch has developed a SAM web application, which for instance seeks users, software and workstations and more. The search results can be extracted as reports with the help of SQL Server Reporting Services. From this it is desired that an usability analyse and design of an GUI, which uses a report filtering component is prepared. This filtering component and GUI is developed for instance by unified process. Programming languages/tools which shall be used: - Microsoft Visual studio.net (C#, ASP, AJAX) - SQL

5 1 INDHOLDSFORTEGNELSE 1.1 Outline 1 Indholdsfortegnelse Forord Indledning Introduktion Planlægning Teknologi Analyse Design Implementation Test Konklusion Referencer Bilag Indeks 1 Indholdsfortegnelse Outline Indeks Figurliste Forord Indledning Introduktion Virksomheden LicenseWatch Målgruppe Risikoanalyse Kildehåndtering Læsevejledning Planlægning Unified process Scrum Vandfaldsmodellen Xtreme programming DTU Danmarks Tekniske Universitet s. 1

6 5.5 Valg af udviklingsmetode Projektplan Teknologi Udviklings miljø og værktøjer Visual Studio Gantt designer Microsoft Word Microsoft Visio Management studio 2008 express GhostDoc Microsoft Visual Sourcesafe Anvendte teknologier Introduktion til Microsoft.NET Framework ASP.NET version AJAX SQL Analyse Processen i dag Behovsanalyse Hvad er brugervenlighed? Funktionelle krav Non-funktionelle krav Værdier til databasen Delkonklusion Design Valg af system arkitektur Sekvens diagrammer Klasse diagram Web side opbygning Brugergrænseflade / mockups Unikke id er og brugervalidering NF normalisering af databasen Relationel database model DTU Danmarks Tekniske Universitet s. 2

7 8.9 Delkonklusion Implementation Fil oversigt Filter.cs FilterPageIframe FilterPage.aspx.cs ReportStructure.cs Report.cs ReportWizard8.aspx.cs Stored procedure Delkonklusion Test Testmetoder Black box test White box test Gray box test Unit test Integration test Regression test Accept test NUnit Test strategi Black box tests Delkonklusion Konklusion Konklusion på produktdelen Konklusion på procesdelen Fremtidig brug Referencer Kilder Bilag Indhold på vedlagte CD Projekt plan Test screenshot DTU Danmarks Tekniske Universitet s. 3

8 13.4 Test screenshot Test screenshot Test screenshot Test screenshot Test screenshot Test screenshot Test screenshot DTU Danmarks Tekniske Universitet s. 4

9 1.3 Figurliste Figur 1: Sammenspillet mellem de anvendte enheder i LicenseWatch... 9 Figur 2: Iterativ plan over UP Figur 3: Scrum processen Figur 4: Vandfaldsmodellen Figur 5:.Net framework flow Figur 6: Treeview af rapporter Figur 7: En rapport udsnit Figur 8: Filter i Excel Figur 9: De 5 kriterier for brugervenlighed Figur 10: Tre lags model arkitektur Figur 11: MVC arkitektur Figur 12: System sekvens diagram Figur 13: Sekvens diagram for load af ReportWizard Figur 14: Klassediagram Figur 15: Web side opbygning Figur 16: ReportWizard5.aspx Figur 17: ReportWizard6.aspx Figur 18: Mockup af filter definitions siden Figur 19: Mockup af filter siden Figur 20: Relationel database model Figur 21: Gui runner til NUnit DTU Danmarks Tekniske Universitet s. 5

10 2 FORORD Dette projekt er kaldet dynamisk filter komponent og er udført i forlængelse af min ingeniørpraktik hos LicenseWatch. Projektet skal ses som afslutning på min uddannelse som IT-diplomingeniør ved DTU, og er udført fra 15. marts 2010 til den 14. juni Projektet har været vejledt af Finn Gustafsson fra DTU, og Lars Landbo fra LicenseWatch. Under projektforløbet har jeg haft god sparring og modtaget hjælp fra Michael Eiland, der er udvikler hos LicenseWatch. Tak til jer alle. Projektet består af en rapport og en CD med kildekoden for det dynamiske filter. DTU Danmarks Tekniske Universitet s. 6

11 3 INDLEDNING I denne rapport gennemgås et bachelorprojekt kaldet dynamisk filter komponent, og er løst ved hjælp af teknologierne C# ASP.NET, AJAX og SQL. De enkelte udviklede dele er kun anvendelig i LicenseWatch applikationen, og har derved ikke anvendelsesmuligheder andre steder. Virksomheden LicenseWatch har på nuværende tidspunkt et rapport modul bestående af en rapport wizard, som gør det muligt for brugeren at indtaste og vælge de data de ønsker, så de kan få en tilpasset rapport at se. Her er det tanken at der skal tilføjes 1 ASP side, som kan tilpasse et filter til rapporterne. Udover dette modul har de en ASP side hvor alle standard rapporter kan blive vist. Her er det meningen, at den foregående tilføjede side skal være forudsætningen for 1 ASP side, som indeholder standard kontroller (textbox, listbox, datebox mm.), og som popper op når man trykker på en standard rapport. Man har altså herved et dynamisk filter, der kan tilpasses så meget man vil, og man slipper herved for en langsommelig proces med brug af Excel for at kunne filtrere data på rapporterne. For at undgå langsommelig og besværlig proces mht. kodning af applikationen, hvor jeg skulle benytte mig af den samme kildekode som ville være under sourcekontrol, som de andre udviklere, har jeg valgt at isolere projektet fra LicenseWatch. Der er herved lavet en kopi af det oprindelige projekt, og sat under sandbox sourcekontrol. På denne måde er jeg selv ansvarlig for at gemme kildekoden, og jeg slipper for afhængighed fra de andre udviklere. DTU Danmarks Tekniske Universitet s. 7

12 4 INTRODUKTION I dette kapitel gives en kort introduktion til firmaet LicenseWatch, hvorefter målgruppen fastsættes, projektets risici bliver analyseret, projektets kildehåndtering bliver behandlet, og til sidst forklares hvordan denne rapport er opbygget. 4.1 Virksomheden LicenseWatch Virksomheden er et lille software firma bestående af 8 medarbejdere og er kaldet LicenseWatch. Det arbejder indenfor området kaldet SAM, som står for Software Asset Management. En organisation kan have et komplekst opgørelse af software, og det vil være besværligt, og kræve både tid og penge for at vedligeholde. Med compliance reporter kan man på skrift få dokumenteret ens software produkter, og få dem målt hvor meget de er i brug. Derved er man i stand til at holde styr på firmaets software licenser. På denne måde kan man finansielt lave besparelser og udføre evt. nye investeringer. Man kan derved forbedre et firmas finansielle position, ved evt. udvidelse. Ved at implementere SAM beskytter man sine software investeringer, og bliver mere organiseret ved at genkende hvad du har, hvor det kører, hvor ofte, og om den enkelte virksomhed benytter sine assets effektivt nok. Virksomheden har et web baseret software værktøj også kaldet LicenseWatch. Dette bliver videreudviklet til at indeholde flere features, og rettede bugs som kunder har sagt eksisterer. Derudover supporter virksomheden også kunder der benytter produktet, med at yde evt. konsulentydelser, som kan indebære installation eller kurser. Hvordan virker LicenseWatch så? Som det kan ses på Figur 1, så kører LicenseWatch serveren ovenpå en Microsoft ISS Web Server med.net Framework 3.5 SP1, og bruger en lokal eller remote Microsoft SQL Server til at lagre det fundne data. DTU Danmarks Tekniske Universitet s. 8

13 Figur 1: Sammenspillet mellem de anvendte enheder i LicenseWatch 4.2 Målgruppe Målgruppen er primært lærer og censor på DTU. Den sekundære er dem, som vil kunne bruge det færdige produkt, og det er firmaet LicenseWatch. Til sidst er det studerende på tidligere semestre eller andre studerende, som også har skrevet eksamensprojekt. DTU Danmarks Tekniske Universitet s. 9

14 4.3 Risikoanalyse Her er beskrevet en række risici, der kan få indflydelse på projektet. Sandsynlighed: Konsekvens: Faktor: 3. : Høj sandsynlighed for at risikoen bliver aktuel 2: Mellem sandsynlighed for at risikoen bliver aktuel 1: Lav sandsynlighed for at risikoen bliver aktuel 0: Meget lille eller ingen sandsynlighed for at risikoen bliver aktuel 3. : Stor konsekvens for projektet, hvis risiko bliver aktuel 2: Mellem konsekvens for projektet, hvis risiko bliver aktuel 1: Lille konsekvens for projektet, hvis risiko bliver aktuel Sandsynlighed * Konsekvens 9: Størst sandsynlighed for at risiko bliver aktuel og med størst konsekvens for projektet 0: Ringe/ingen sandsynlighed for at risiko bliver aktuel og med mindst risiko for projektet Risiko 1. Den primære data går tabt. Heraf rapport, diagrammer, kildekode. Sandsynlighed Konsekvens (0,1,2,3. ) (1,2,3.) K-faktor Konsekvens og forholdsregler, (SxK) der kan imødegå risici Konsekvens: Nyeste ændringer siden sidste backup går tabt. Forholdsregler: Der tages regelmæssigt backup.(på ekstern harrdisk og usb-stik) Når og hvis: Revurdering af tidsplan og projektets omfang. DTU Danmarks Tekniske Universitet s. 10

15 2. Sygdom Konsekvens: Tidsplanen skal evt. revurderes i forhold til sygdommens alvor og længde. Forholdsregler: Sørge for at have lidt overskydende tid i tidsplanen. Når og hvis: Indhent ved at bruge overskydende tid, eller revurder tidsplan og/eller opgavens omfang. 3. Tidsplanen Konsekvens: Det kan indhentes holder ikke. i den tid, der er sat af til overskydende tid. I værste fald skal projektes omfang og/eller deadline revurderes. Forholdsregler: Den sidste periode af tidsplanen indeholder overskydende tid. Når og hvis: Revurder tidsplan og/eller opgaveomfang. 4.4 Kildehåndtering Da der skal foretages en eksamination af denne udarbejdede rapport, er det på sin plads, at give læseren indblik i rapportens kildehåndtering, inden den egentlige dokumentation. Dette er for at undgå evt. mistanke om snyd. I afsnittet referencer, i denne rapport, afsnit 12 er der lavet en lille tabel, der viser hvilke forkortelser der bliver brugt, for at indikere hvor informationen er hentet fra (litteratur eller online). Under delafsnittet kaldet kilder er der en lang liste med alt information, der er blevet benyttet i udarbejdelsen af rapporten. Denne liste er nummereret løbene, og når der i rapporten f. eks. står [2] henvises der til nr. 2 fra kildelisten. Ofte vil disse være DTU Danmarks Tekniske Universitet s. 11

16 placeret sidst i det afsnit, hvor informationen er benyttet. Hvis der har været behov for at knytte information fra flere kilder på en gang til et afsnit, vil der fremkomme mere end en henvisning f.eks. [2],[3]. De fleste af kilderne er fra wiki sider, og her er der til hvert link tilføjet en last modified. Dette er gjort, fordi en wiki er dynamisk, og folk kan til en hver tid gå ind og ændre i sidernes indhold. Ved at angive last modified, indikeres hvilken version af dokumentet der er blevet benyttet, så evt. benyttet information ikke er slettet, eller omskrevet. Både tabeller og figurer vil gå under et, som figurer. Disse vil i rapporten indeholde en kort beskrivelse og en kildehenvisning. Henvisningen er til den tidligere omtalte kildeliste. Mht. bøger vil der forekomme fodnoter, som indeholder henvisning til kildelisten og forklaring af hvilke sider i den pågældende bog der er blevet brugt. 4.5 Læsevejledning Forneden ses hvordan rapporten er opdelt: Planlægning Beskriver hvilke arbejdsmetoder der bruges, og hvordan projektets tidsplan ser ud. Teknologi Fastgør hvilke teknologier der er blevet benyttet i projektet Analyse Krav findes, og danner grundlag for kravspecifikationen. Design Forklarer hvordan applikationen er opbygget, arkitektonisk såvel som indholdsmæssigt. Implementering Beskriver hvordan applikationen er sammensat, og hvordan de grundlæggende funktioner fungerer. Test Verificerer at den implementerede funktionalitet fungerer. Konklusion Sammenfatter rapportens vigtigste opdagelser. DTU Danmarks Tekniske Universitet s. 12

17 Kilder Indeholder henvisninger til de kilder, som er blevet benyttet i projektet. Henvisninger til kilder vil være i kantede parenteser, for eksempel [1]. Bilag Indeholder relevante dokumenter som ikke er medtaget i den egentlige rapport. DTU Danmarks Tekniske Universitet s. 13

18 5 PLANLÆGNING I dette kapitel beskrives kendte udviklingsmetoder såsom Unified Process, Scrum, Vandfaldsmodellen og Xtreme programming. Efter en kort introduktion af hver, gives et begrundet valg, og dernæst vises den benyttede projektplan. 5.1 Unified process Er en objektorienteret softwareudviklingsmetode, som er iterativ, og som består af 4 faser kaldet: forberedelse, etablering, konstruktion og overdragelse. Forberedelse: en kort fase, der har til formål at få overblik over kravene til systemet. Etablering: en længere fase, hvor man dels udvikler centrale dele af systemet, dels får en dybere forståelse af systemets krav og arkitektur. Konstruktion: den længste fase, hvor man udvikler resterende dele af systemet. Overdragelse: en afslutningsfase, der drejer sig om færdiggørelse og overgang til drift. [9] Figur 2: Iterativ plan over UP 5.2 Scrum Scrum er ikke en lineær proces som vandfalds modellen. De lineære processer består af de fire aktiviteter Analyse, Design, Implementaion og Test, hvor Scrum ikke fastsætter nogen retningslinjer for i hvilken rækkefølge aktiviteterne skal implementeres. Et DTU Danmarks Tekniske Universitet s. 14

19 projekt kan derfor starte med en hvilken som helst aktivitet, og skifte til en anden aktivitet på ethvert tidspunkt. Dette øger projektets fleksibilitet og produktivitet. De artefakter som Scrum udgør, er: Produkt Backlog: Her befinder alle krav til systemet sig. Der er ingen begrænsning på hvor mange krav der må være. Til gengæld benyttes prioritering. Jo højere prioritet, jo bedre specificeret skal kravene være. Sprint Backlog: Den del af en Produkt Backlog som Scrum-gruppen påtager sig at implementere under den kommende Sprint. Sprint: Arbejdet inddeles i Sprints. Hver sprint, som varer maksimalt 30 dage, indledes med et møde (Sprint Planning), og afsluttes med en fremvisning af en ny version af det kørende system, hvor de lovede ændringer indgår (Sprint Review). [10] Figur 3: Scrum processen 5.3 Vandfaldsmodellen Er en lineær udviklingsmodel der kan betragtes som et konstant flydende nedad (som et vandfald) gennem faserne: kravspecifikation, design, implementation, afprøvning/fejlfinding, integration og vedligeholdelse. At følge vandfaldsmodellen vil sige at gå fra en fase til den næste sekventielt. Når og kun når kravene er fuldt beskrevet går man videre til design. I designfasen laves en arkitekttegning som programmørerne skal følge - dette design skal være en plan hvor hvordan man implementere kravene fra kravspecifikationsfasen. Når og kun når designet er lavet færdigt, implementeres designet af programmører. Efter implementations- og integrationsfaserne er færdige laves afprøvning og fejlfinding af softwaren, fejl, der stammer fra tidligere faser, fjernes DTU Danmarks Tekniske Universitet s. 15

20 i afprøvningsfasen. Derefter installeres softwaren og senere laves vedligeholdelse hvor ny funktionalitet kan introduceres og fejl kan fjernes. [11] Figur 4: Vandfaldsmodellen 5.4 Xtreme programming Er en Agil udviklingsmetode (hvor vægten ligger på løbende at levere værdi til kunden gennem iterativ udvikling), som er karakteriseret ved at have en åbenhed for tilpasninger løbende i udviklingsprocessen. Udviklerne skal altid have brugernes prioritering af, hvilke dele der skal udvikles næste gang, samt godkendelse af, at det udviklede var det, de havde brug for. Inden for denne udviklingsmetode er der 5 kerneværdier, som er: Kommunikation: lav så meget vidensdeling som nødvendig, helst ikke i dokumentform men gerne ved par-programmering. Forenkling: kast dig aldrig ud i en overkomplicering af opgaven fokuser på målet. Respons (feedback): Få løbende feedback bl.a. via automatiske unit tests, involvering af brugere i brugertests og involvering af udviklere i dialog med brugerne/kunderne i forbindelse med definering af krav til den endelige løsning. Mod: Alle kolleger der arbejder på et fællesprojekt skal have mod til at løse opgaverne. En opgave kan godt tage lang tid at løse, hvor den endelige løsning måske er utrolig simpel og kan implementeres på 5 minutter, hav mod til at vente på det. Gensidig respekt: For at få et godt samarbejde internt i et team kræves gensidig respekt. XP mener at de 4 foregående kerneværdier medfører at teammedlemmer udvikler gensidig respekt for hinanden DTU Danmarks Tekniske Universitet s. 16

21 [12], [13], [14] 5.5 Valg af udviklingsmetode Jeg vil benytte en blanding af vandfaldsmodellen og Xtreme programming. Jeg vil bruge vandfaldsmodellens klare retningslinjer med hensyn til at gå fra en fase til den næste sekventielt. Dernæst bruge XP til at udføre en iterativ proces, således at f.eks. den fastlagte kravspecifikation kan blive stimuleret med nye inputs. Altså få en løbende respons (feedback) til systemet. Ud over dette vil jeg benytte mig af black box test fra XP. 5.6 Projektplan Se i bilaget afsnit DTU Danmarks Tekniske Universitet s. 17

22 6 TEKNOLOGI I dette kapitel gives en introduktion til de værktøjer og teknologier der vil blive brugt i dette projekt. 6.1 Udviklings miljø og værktøjer I dette afsnit gennemgås det anvendte udviklingsmiljø og værktøjer, og hvorfor de er valgt Visual Studio 2008 Dette udviklingsværktøj er beregnet til.net programmering. Det indeholder en kompiler, editor og IntelliSense som er Microsoft version af autocompletion, som vil sige at der bliver forsøgt at forudsige hvilket ord du vil skrive. Desuden er der gode debugnings muligheder. Det er valgt, da undertegnet, har benyttet det i praktikperioden, og det er det standard værktøj som udviklerne i LW benytter Gantt designer var gratis, og virkede intuitivt. Dette er et charting software værktøj, hvor man er i stand til at oprette og manipulere tasks. Resultatet er at du får en visuel verificering om dine tidsplaner og aktiviteter giver mening, og om de kan imødekomme dine deadlines. Det er valgt for at kunne lave en projektplan, og fordi det Microsoft Word 2007 Dette er et software værktøj, der er til for at skrive dokumenter. Det er rutine blev det fravalgt. blevet benyttet igennem studietiden på DTU til at lave rapporter, og er heraf valgt grunden den høje rutine. Et alternativt skriveprogram kunne også have blevet benyttet kaldet Latex, men pga. manglende DTU Danmarks Tekniske Universitet s. 18

23 6.1.4 Microsoft Visio 2007 Dette er et software værktøj til at lave pæne visuelle ting i form af diagrammer og modeller. Det er udelukkende valgt, da det er brugt igennem studietiden på DTU Management studio 2008 express Dette er et software værktøj til at udføre SQL relaterede ting med. Såsom forespørgelser, se indhold af tabeller, stored procedure og triggers. Det er valgt fordi LicenseWatch produktet kører op imod en MSSQL database, og dette værktøj er det som LW udviklerne bruger GhostDoc Dette er et plugin til Visual Studio som automatisk genererer XML dokumentation kommentarer til metoder og properties baseret på deres type, parametre, navn, og andre informationer. Det eneste man behøver at gøre er at sætte i indstillingerne hvilken tast Kombination man ønsker. Det er valgt, fordi det blev brugt af udviklerne i LicenseWatch Microsoft Visual Sourcesafe Er et source control software som er rettet mod små software udviklings projekter. Det er valgt, fordi det er det virksomheden bruger til deres håndtering af kildekode. DTU Danmarks Tekniske Universitet s. 19

24 6.2 Anvendte teknologier I dette afsnit gennemgås hvilke teknologier der er blevet anvendt i projektet Introduktion til Microsoft.NET Framework Microsoft.NET Framework er et software framework, som kan blive installeret på computere der kører Microsoft Windows operativ systemer. Frameworket består af to hoved komponenter som er kaldet Base Class Libraries (BCL) og Common Language Runtime (CLR). BCL er et standard bibliotek tilgængelig for alle programmerings sprog, der bruger.net Framework. Det indeholder klasser med funktioner man kan gøre brug af. CLR ligger over selve styresystemet, og er den vigtigste del af frameworket. Det står for at selve programmerne bliver afviklet. Figur 5:.Net framework flow På figur 5 ses først et simpelt C# projekt med kildekode, ressourcer og referencer. Det bliver kompileret vha. en C# kompiler, og genererer en Assembly (.exe eller.dll) indeholdende MSIL metadata. MSIL også kaldet Microsoft Intermediate Language er et maskinkodelignende sprog. Grunden til at koden kompileres til MSIL er at det på denne DTU Danmarks Tekniske Universitet s. 20

25 måde er hurtigere at oversætte koden til rigtig maskinkode, der passer præcis til din maskine (CPU). Opgaven med at oversætte MSIL til maskinkode varetages af en Just In Time (JIT) compiler. [1], [2], [16] ASP.NET version 3.5 ASP.NET også kaldet for Active Server Pages med.net teknologi, er sæt af udviklingsteknologier til webapplikationer, som Microsoft markedsfører. Med værktøjet kan man udvikle dynamiske hjemmesider, webapplikationer og web services. Det er en del af Microsoft.NET platformen, og benytter CLR en virtuel maskine, der tillader programmører at skrive ASP.NET kode med et stort udvalg Microsoft.NET sprog. Her er de udbredte sprog C# og VB. Selve siderne opbygges i HTML, men med den vigtige tilføjelse, at der også er mulighed for at indbygge såkaldte Server-Side Controls. Disse elementer omdannes, ved eksekvering af siden, til HTML, som kan vises på klienten. Typisk placeres sidens layout i filer med endelsen.aspx. Programlogikken skrives i en tilhørende codebehind fil, som indeholder kode. Hvis det udvikles i C# har filen endelsen.aspx.cs, og hvis det er i Visual Basic er endelsen.aspx.vb. [3] AJAX AJAX s forkortelse er asynkron javascript og xml, og er brugt til web udvikling basseret på klient siden. Asynkront betyder, at der kan opdateres fra serveren uden synkronisering. Dvs. at siden kan bruges, mens AJAX henter oplysningerne på serveren. Formålet med sproget er at udvikle bedre, hurtigere og interaktive web applikationer. [4] SQL SQL står for Structured Query Language, og er et sprog til at kommunikere med databaser, som f.eks. MSSQL, Access, MySQL osv. Man kommunikerer via forespørgsler, og de mest grundlæggende er Select (udtræk af data fra tabel), Insert into (indsættelse af data i tabel), Update (opdater data i tabel), og Delete (slet data i tabel). [15] DTU Danmarks Tekniske Universitet s. 21

26 7 ANALYSE I dette kapitel kigges der nærmere på den eksisterende proces hvor ved data bliver filtreret i dag. Desuden analyseres behovet for bruger kontroller, brugervenlighed forklares, og de funktionelle og non-funktionelle krav listes op. Til sidst beskrives hvilke data der behov for i databasen, og en del konklusion runder kapitlet af. 7.1 Processen i dag Måden hvorved en bruger betjener standard rapporter i dag, er ved at klikke på de viste links i treeviewet vist på figur 6. Ved at gøre dette vises en standard rapport, hvor der på figur 7 er vist et udsnit af dette. Når rapporten er genereret er det muligt at eksporter til Excel. På figur 8 kan man se det nuværende benyttede filter, så man kan filtrere sine søgnings resultater. Figur 6: Treeview af rapporter DTU Danmarks Tekniske Universitet s. 22

27 Figur 7: En rapport udsnit Figur 8: Filter i Excel DTU Danmarks Tekniske Universitet s. 23

28 7.2 Behovsanalyse For at lave et dynamisk filter er der behov for 2 aspx sider. En til at definere filteret, og en til at vise filteret. De kontroller vi har brug for i forbindelse med filteret er valgt på baggrund af de datatyper, som er defineret i forbindelse med rapport wizard. De er int, Varchar og Datetime. Dette gør at vi kan definere følgende bruger kontroller til filteret: Textbox o definition: Angiv default værdi: o Hvor label svarer til valgt felt, og textbox skal indeholde brugerinput. visning: Default værdi og valgt felt vises: Datebox o definition: Angiv dato, ud fra indtastning eller vælg fra kalender: o visning: Default værdi og valgt felt vises: DTU Danmarks Tekniske Universitet s. 24

29 Datebox Interval o definition: Angiv datoer, ud fra indtastning eller vælg fra kalender: o visning: Default værdier og valgt felt vises: Listbox o definition: Vælg data, hvor data kan indeholde Software, Users, Workstations: o visning: Viser valgt data, og selve indholdet. DTU Danmarks Tekniske Universitet s. 25

30 7.3 Hvad er brugervenlighed? Brugervenlighed dækker over følgende: Virkeevne: En hjemmeside skal opfylde brugernes behov. De brugere der klikker sig ind på en hjemmeside skal have opfyldt sit mål. Hjemmesiden skal virke, ved at give brugerne, hvad de søger, og enhver hjemmeside skal indeholde de for situationen relevante oplysninger, funktioner eller produkter. Effektivitet: En hjemmeside skal være umiddelbar at bruge. Jo mindre brugerne skal anstrenge sig for at nå sit mål, jo større er effektiviteten på en hjemmeside. Effektiviteten kan man måle ved at se hvor mange fejl der bliver begået undervejs i forsøget på at nå sit mål. Den kan også måles ud fra, hvor lang tid de er om at nå målet, eller hvor mange klik de skal anvende for at nå frem. Tilfredshed: En hjemmeside skal være tilfredsstillende at bruge. Brugervenlighed kan også måles ud fra den subjektive tilfredshed, som brugerne oplever, når de besøger en hjemmeside. Det kan for eks. komme til udtryk ved, at brugerne opfatter hjemmesiden eller en bestemt funktionalitet på siden som et tilfredsstillende værktøj til at løse en specifik opgave. Tilfredshedskriteriet vurderes ved hjælp af interview og spørgeskemaer eller ved at notere brugernes bemærkninger under løsning af opgaver. Tilfredshedskriteriet kan på nogle hjemmesider være lig med en høj grad af effektivitet og virkeevne. Indlæring: En hjemmeside skal være let at lære. Brugerne skal have let ved at lære de arbejdsgange og rutiner, der er nødvendige for at interagere med indholdet. Dette kan gøres grundlæggende på to måder. For det første er det altid en god ide at tage ved lære af andre lignende hjemmesider for at overføre og tilpasse relevante, velfungerende arbejdsgange og sammenhænge. Man udnytter således at brugerne allerede har indlært bestemte rutiner andre steder på internettet, og hjemmesiden vil som DTU Danmarks Tekniske Universitet s. 26

31 udgangspunkt virke bekendt og som sådan nem at lære. Desuden skal brugerne kunne genanvende de rutiner, som de har lært ét sted på hjemmesiden i andre og uprøvede sammenhænge. På den måde skal brugerne ikke bruge tid og kræfter på at indlære nye rutiner. At en hjemmeside skal være let at lære kan udtrykkes som et overordnet krav om genkendelighed og konsistens i interaktion, sprog og begreber. Genkaldelse: En hjemmeside skal være let at huske. Hvis en bruger har været væk fra en hjemmeside i længere tid, skal det være let for ham eller hende at huske hjemmesidens struktur og funktionalitet. Det stiller krav til, at hjemmesiden på den ene side er intuitivt bygget op, og på den anden side at den har sit eget genkendelige udtryk. Jo sjældnere hjemmesiden bruges, desto mere vital er genkaldelsen, fordi brugerne vil havde svært ved at huske, hvordan de nåede deres mål sidste gang. Brugernes evne til at genkalde sig en hjemmeside kan måles ved at stille de samme opgaver over et længere tidsrum. Figur 9: De 5 kriterier for brugervenlighed [5] DTU Danmarks Tekniske Universitet s. 27

32 7.4 Funktionelle krav Forneden er der opstillet en liste af funktionelle krav: Id Navn Beskrivelse Prioritet K1 Vælge valgte felter Det viste data skal komme fra databasen. K2 Vælge bruger kontrol Ud fra hvilket felt der er valgt skal der vises en tilhørende bruger kontrol. K3 Validere brugerinputfelter Hvor end der eksisterer et input felt skal det valideres. K4 Gemme data omkring bruger Når default værdi er accepteret, kontroller skal værdien sammen med hvilken kontrol der er valgt, gemmes i databasen. K5 Slette data omkring bruger Hvis brugeren fortryder sit valg kontroller mht. bruger kontrol, så skal man kunne slette det/dem. K6 Huske og vise brugerens valg Data skal hentes fra databasen, og mht. gamle bruger kontroller vises til brugeren. K7 Vise valgte bruger kontroller Når filteret skal i brug, skal med tilhørende værdi informationen hentes fra databasen. K8 Skal kunne vise en rapport Når en rapport bliver vist skal den indeholdende kriterier fra et kun indeholde data i forhold til det filter brugte filter. K9 Kun en bruger med rettigheder Der skal være sikkerhed på siderne. har mulighed for at se siderne. K10 Rapport link popup. Når brugeren trykker på et rapport link skal der dukke et popup vindue op, hvor man kan bruge sit filter på en rapport. S S S P P P P P S S DTU Danmarks Tekniske Universitet s. 28

33 K11 Ændring af mode. Når en bruger trykker på Preview Reports skal de efterfølgende links navigere en hen til design af rapporter. K12 Begrænset antal bruger Når en bruger trykker på tilføj kontroller, og tjek af allerede knappen, skal der komme en fejl blevet tilføjet. meddelelse omkring antal bruger kontroller, og om elementet allerede eksisterer i listen af brugerkontroller. K13 Kunne editere i Hvis en bruger fortryder sit valg af brugerkontrollerne. brugerkontroller til filter siden, skal en bruger kunne editere så vedkommende får det man hellere vil have. S S S Primær(P): De mest væssentlige krav. Sekundær(S): De mindre væssentlige krav. Valgfri(V): Krav som ikke er nødvendige for systemet, men ville være nice to have. 7.5 Non-funktionelle krav Forneden er opstillet en liste af non-funktionelle krav: For at ASP.NET siderne skal kunne fungere skal der være en IIS webserver installeret. Siderne udvikles i ASP.NET C#. Den benyttede PC skal have en internetbrowser. LicenseWatch applikationen er udviklet til Windows IE. Understøttelse af Microsoft SQL 2005 / Oprettelse af definitions siden og filter siden skal indeholde samme stylesheet, som er benyttet i report wizarden. DTU Danmarks Tekniske Universitet s. 29

34 7.6 Værdier til databasen Databasen skal indeholde data omkring de definerede bruger kontroller, filter, og operator. Så data er: Data Beskrivelse Textbox Datebox Date Interval Listbox Filter Operator Skal indeholde oplysninger omkring default værdi, hvilket felt det er tilknyttet, og hvilken datatype det er. Skal indeholde oplysninger omkring default værdi, hvilket felt det er tilknyttet, og hvilken datatype det er. Skal indeholde oplysninger omkring default værdier, hvilket felt det er tilknyttet, og hvilken datatype det er. Skal indeholde oplysninger omkring workstations, users eller software. Skal indeholde oplysninger omkring default værdier, datatype, felt navn, og operator. Skal indeholde operator værdier. 7.7 Delkonklusion Vi kan konkludere at vi har vist hvordan processen er i dag mht. brug af filter på rapporter, beskrevet behovsanalyse for hvilke brugerkontroller der skal være til stede, og beskrevet brugervenlighed. Desuden kan vi konkludere at der er blevet opstillet en liste med funktionelle krav, beskrevet non funktionelle krav, og til sidst gjort op hvilke data der på nuværende tidspunkt skal være til stede i databasen. DTU Danmarks Tekniske Universitet s. 30

35 8 DESIGN I dette kapitel opstilles og vælges system arkitektur. Dernæst er der lavet 2 sekvens diagrammer der er med for at fremme forståelsen mht. funktionaliteten. Et klassediagram, og web side opbygning beskrives. Brugergrænsefladen med mockups, og forklaring af normalisering af databasen beskrives ligeledes. Til sidst beskrives den relationelle data model, og en del konklusion runder kapitlet af. 8.1 Valg af system arkitektur Forneden er der opstillet to arkitekturer, henholdsvis tre lags modellen og mvc: Figur 10: Tre lags model arkitektur Figur 11: MVC arkitektur Tre lags modellen er den mest udbredte arkitektur, og skyldes at den er meget nem at komme i gang med, desuden er strukturen god. Man kan lave et standard system, hvor man får adskilt forretningslogikken, data og brugerfladen fra hinanden, og på den måde får en fornuftig adskillelse af koden. Et problem opstår, når man vil bruge det sammen med ASP.NET, der kommer der til at mangle et lag som håndterer kontrollogikken. Det bliver i stedet styret af brugerfladen ved hjælp af Codebehind klasser bundet til aspx filerne. Men egentlig burde den slags logik være adskilt fra brugerfladen, som kun burde bekymre sig om interaktionerne med slutbrugeren. Det gør det også svært at lave automatiseret test på det logik der har med flowet at gøre, da det er fast koblet til ASP Webform. DTU Danmarks Tekniske Universitet s. 31

36 MVC er opbygget af tre enheder kaldet view, controller og model. Controlleren sørger for alt det logik som har med systemets flow at gøre, dvs. hvad der skal vises til brugeren, og hvad for noget data der skal behandles eller hentes. Model laget kan man godt betegne som de to nederste lag i 3-lags modellen, men selvom forretningslogikken og database håndteringen er i samme lag, skal det stadigvæk ikke blandes sammen. View et får så lov til kun at koncentrerer sig om brugerfladen til slutbrugeren, dvs. aspx filer. Med sådan en form for arkitektur vil det være muligt at lave automatiseret test på kontrollogikken. Da LicenseWatch har brugt noget der ligner tre lags modellen til deres hjemmesider, har jeg valgt at benytte mig af samme opbygning. Dette medfører at test af kontrol-logikken ikke kan testes via unit tests. DTU Danmarks Tekniske Universitet s. 32

37 8.2 Sekvens diagrammer Figur 12: System sekvens diagram Foroven ses et system sekvens diagram over hændelsen tilføj brugerkontrol. Det er opbygget med adskillige if-else udtryk, og viser kun kriterier gældende for textbox. Dem der er undladt er for datebox, date interval og listbox, de minder dog alle om textbox. DTU Danmarks Tekniske Universitet s. 33

38 ReportWizard8 Filter moddb Database Load Page SetEnability() Alt [metadataid!= -1] GetSelectedFields(metaDataID) SQLReader(sql, sqlparameter) Hent data return data return SQLReader return DataSet GetFieldList() GetTextBoxData(metaDataID) SQLReader(sql, sqlparameter) Hent data return data return SQLReader return List<FilterTextbox> GetDateBoxData(metaDataID) SQLReader(sql, sqlparameter) Hent data return data return SQLReader return List<FilterDatebox> GetListBoxData(metaDataID) SQLReader(sql, sqlparameter) Hent data return data return SQLReader return List<FilterListbox> MakeTextboxString(ChangeTextbox(TextboxList,list)) MakeDateboxString(ChangeDatebox(DateboxList,list)) MakeListboxString(ChangeListbox(ListboxList,list)) Figur 13: Sekvens diagram for load af ReportWizard8 DTU Danmarks Tekniske Universitet s. 34

39 På forrige side er vist et sekvens diagram for load af ReportWizard8 side. Jeg har valgt netop load af side metode, da det viser brug af de grundlæggende klasser. 8.3 Klasse diagram Forneden er vist klasse diagram over filter komponenten: Figur 14: Klassediagram Den største klasse med metoder er Filter klassen. Dette er hjælpeklassen til kald mod databasen. Ud over dette har vi 4 klasser der alle kun indeholder properties, og de er FilterDatebox, FilterField, FilterTextbox og FilterListbox. Disse repræsenterer hver en database tabel. Dernæst har vi Report, som genererer sql strengen til en rapport. Her bliver der bla. ændret i MakeSql metoden. Nedenunder er der ReportStructure som bla. DTU Danmarks Tekniske Universitet s. 35

40 indeholder metoden GetNewParameterEntries til at tilføje sql parametre til en liste. Nederst er der FilterPage som er aspx popup siden, der indeholder brugerkontrollerne og deres tilhørende værdier. Dernæst er der ReportWizard8.aspx som er siden hvorved man definerer sit filter. 8.4 Web side opbygning Forneden ses hvordan rapport wizarden, og hvordan visning af rapport siderne er opbygget: Figur 15: Web side opbygning Som man kan se skal der indsættes en ny side i rapport wizarden mellem ReportWizard5.aspx og ReportWizard6.aspx Figur 16: ReportWizard5.aspx Figur 17: ReportWizard6.aspx DTU Danmarks Tekniske Universitet s. 36

41 ReportWizard5 som er et statisk filter, og reportwizard6.aspx som er valg af column størrelse. Den nye side der skal være mellem ReportPage.aspx og ReportView.aspx skal være et popup vindue. Her kan man bruge javascript window objekt til at udføre dette, men man kan også benytte sig af iframe. Da alle LicenseWatch popup vinduer er lavet med iframe vælger jeg at gøre det samme. 8.5 Brugergrænseflade / mockups Jeg har valgt at lave GUI en således at det består af en listbox, som indeholder de felter som brugeren har valgt fra de tidligere sider. Dernæst har jeg valgt en dropdownlist hvor der kan vælges hvilken brugerkontrol man vil bruge. Dog vil det blive sådan at alt efter hvilken type det pågældende felt har vil der efterfølgende blive vist en tilsvarende brugerkontrol. Eksempelvis int og varchar vil vise textbox, og datetime vil vise datetime eller datetime interval. Til højre vil resultatsvinduet være i form af en listbox, hvor resultaterne vil have formatet Brugerkontrol on Felt navn valgt værdi. Figur 18: Mockup af filter definitions siden Selve brugervenligheden er der ikke tænkt så meget over, andet end at designet er tiltænkt interaktion fra venstre mod højre. Desuden er tankegangen keep it simple stupid brugt, og at designet skulle ligne de andre report wizard sider. DTU Danmarks Tekniske Universitet s. 37

42 Figur 19: Mockup af filter siden Selve filter siden er som sagt tidligere et popup vindue. Indholdet består af dynamisk indhold der først skal sættes på siden ved kørsel af siden. Derfor er designet enkelt sat op, så alle textbox kontroller kommer først øverst på siden, dernæst kommer datetime/datetime interval, og til sidst listbox. I midten er der opstillet operatorer, og sammenhængen mellem datatype og operatorer kan ses i skemaet forneden: Varchar Int Datetime Datetime Interval LIKE = = BETWEEN NOT LIKE > > NOT BETWEEN >= >= <= <= < > < > IS NULL IS NULL IS NOT NULL IS NOT NULL Der er to knapper henholdsvis cancel, som vil lukke siden ned, og view som tager alle input værdierne og genererer en rapport udfra dem, og lukker siden. DTU Danmarks Tekniske Universitet s. 38

43 8.6 Unikke id er og brugervalidering Måden hvorved unikke id er bliver brugt på er ved at tilføje ekstra data til et id. Der hvor id erne bliver brugt er på filter siden. Vi har f.eks. textbox, hvor id et er DynamicTextboxFields FieldID & DataType. Data FieldID svarer til database id i FilterField tabellen, så man kan opdatere denne tabel. Data Dataype er med for at kunne afgøre hvilken data type det pågældende data har, det kan enten være int eller varchar. Der er ligeledes id er for datebox, date interval og listbox. Mht. brugervalidering er der for varchar: new Regex("[0-9]+ [a-z]* [%]* [_]*") for int: new Regex("[0-9]+") for datetime: new Regex("^(19 20)\\d\\d[- /.](0[1-9] 1[012])[- /.](0[1-9] [12][0-9] 3[01])$") Disse er med til at sørge for at brugeren ikke indtaster noget ulovligt. Jeg har valgt at lave valideringen inde fra selve C# koden i stedet for javascript. Der er ikke nogen bestemt grund til dette andet end at det virkede mere praktisk nu da jeg havde med dynamisk indhold og gøre. Det er dog uvist hvad id et element får når man har med dynamisk indhold og gøre, så derfor er det nemmere at bruge C# s Request.Form.AllKeys. [21] DTU Danmarks Tekniske Universitet s. 39

44 8.7 3NF normalisering af databasen Når man normaliserer en database, er man med til at kvalitetssikre databasen. Det vil sige at man er i stand til at forhindre, at der opstår redundans og nulls i sine tabeller, og er med til at gøre databasen hurtigere, og meget lettere at vedligeholde. Det eksisterer 5 normalformer, hvor vi i det efterfølgende vil benytte os op til 3 normalform. Første normalform også forkortet til 1 NF, har følgende definition: En relation er på første normalform, hvis ingen af dens domæner har elementer, der i sig selv er mængder - De enkelte felter må kun indeholde en værdi, der må ikke være kolonner som gentager sig. 2 NF har følge definition: En relation R er på anden normalform, hvis den er på første normalform, og hvis enhver ikke-nøgle-attribut er fuldt funktionelt afhængig af enhver kandidatnøgle i R - Første normalform skal være opfyldt, ingen attributter der ikke selv tilhører nøglen, må afhænge af en del af nøglen (Det opstår tit hvis man har en primær nøgle som er sammensat af to eller flere felter). 3 NF har følgende definition: En relation R er på tredje normalform, hvis den er på anden normalform, og det gælder, at ingen ikke-nøgle-attribut er transitivt afhængig af nogen kandidatnøgle i R - Anden normalform skal være opfyldt, ingen attributter må afhænge af andre attributter, der ikke selv er nøgler. [17],[18],[19],[20] DTU Danmarks Tekniske Universitet s. 40

45 8.8 Relationel database model Forneden kan ses den endelige relationelle database model: Figur 20: Relationel database model Jeg har valgt at sætte datetime og datetime interval sammen til en tabel. Det der adskiller dem er hasboth feltet, som er en bit på 0 eller 1. Mht. DataTypeID så kunne man egentlig godt have nøjes med at have denne ud fra FilterTextbox. Her er der nemlig to værdier nemlig varchar eller int, man skal vælge imellem. De andre to ved man mere eller mindre hvilken type de er, forudsat at datebox og datebox interval er den samme. Desuden har jeg valgt at splitte FilterField op i 2 tabeller, som er gjort for overskuelighedens skyld. De to tabeller kunne nemlig nemt have været 1. Mht. FilterField så kunne der have været et MetaSaveID, så man kunne afgøre om der er tale om en rettelse af en eksisterende rapport. DTU Danmarks Tekniske Universitet s. 41

46 8.9 Delkonklusion Det kan konkluderes at der er valgt 3 lags modellen for arkitekturen, da LicenseWatch benytter sig af det på nuværende tidspunkt. Dernæst kan det konkluderes at ved hjælp af sekvenser diagrammer var det muligt at uddybe funktionaliteten, desuden blev klassediagram og web opbygning beskrevet. Dernæst kan det konkluderes at brugergrænsefladen blev opstillet via mock ups, unikke id er og bruger validering blev beskrevet. Til sidst kan det konkluderes at normalisering af databasen blev beskrevet og det relationelle database model blev fremstillet. DTU Danmarks Tekniske Universitet s. 42

47 9 IMPLEMENTATION I dette kapitel opstilles en liste af de involverede filer i projektet. Dernæst er der valgt filer med størst betydning, hvor de vigtigste metoder bliver beskrevet. Kapitlet bliver rundet af med en del konklusion. 9.1 Fil oversigt For at give et overblik over de involverede C# filer er der opstillet en liste med filnavne, og tilhørende forklaring af hvad de indeholder: Filter.cs FilterDatebox.cs FilterField.cs FilterListbox.cs FilterPage.aspx FilterPage.aspx.cs FilterPageIframe.aspx FilterTextbox.cs Report.cs ReportStructure.cs ReportWizard8.aspx ReportWizard8.aspx.cs Indeholder alle hjælpe metoder til database adgang. Såsom select, delete, update, og stored procedure. Indeholder en række properties, som ligner den tilsvarende database tabel. Indeholder en række properties, som ligner den tilsvarende database tabel. Indeholder en række properties, som ligner den tilsvarende database tabel. Indeholder en række panels, som det dynamiske indhold (textbox,datebox,interval mm.) kan tilføjes til. Er den bagved liggende fil, som bla. indeholder metoder til at tilføje til en panel. Indeholder en iframe som har filterpage som src, med Report-StructureID som request parameter. Indeholder en række properties, som ligner den tilsvarende database tabel. Indeholder metoder til at appende til sql streng. Indeholder metoder til at oprette sql parametre. Indeholder updatepanel, så de forskellige typer kan vises. Er den bagved liggende fil, som indeholder metoder til at bla. at tilføje en streng til listbox. DTU Danmarks Tekniske Universitet s. 43

48 Eksisterende sider som er blevet tilføjet ny funktionalitet: ReportPage.aspx.cs ReportView.aspx.cs ReportWizard5.aspx.cs ReportWizardDone.aspx.cs Indeholder tilføjet link. Indeholder tilføjet ny metode til at få et dataset udfra given sql streng. Indeholder tilføjet link. Indeholder tilføjet ny metode til at generere en rapport. DTU Danmarks Tekniske Universitet s. 44

49 9.2 Filter.cs Nedenstående er et udsnit af en metode fra filter klassen, og benyttes til at få en liste af FilterTextbox objekter. Metoden har MetaSaveID som argument, og har en streng kaldet sql, som indeholder den sql der skal eksekveres. Der laves en tom liste, og dernæst benyttes et using statement, som får en SqlDataReader som argument. Den givne sql benytter metode argumentet til at lave en sql parameter og metoden SQLReader fra klassen moddb bliver brugt til at returnere et SqlDataReader objekt. Dernæst gennemløbes resultsettet, og der bliver for hver gennemløbning oprettet et FilterTextbox objekt, og tilføjet data, og til sidst tilføjes det oprettede objekt til listen. Til sidst returneres listen med FilterTextbox objekter. public static List<FilterTextbox> GetTextBoxData(int MetaSaveID) { string sql = "select * from FilterTextbox where List<FilterTextbox> TextboxList = new List<FilterTextbox>(); using (SqlDataReader reader = moddb.sqlreader(sql, new[] { SqlDbType.Int, MetaSaveID) })) { while (reader.read()) { FilterTextbox ft = new FilterTextbox(); ft.filtertextboxid = reader["filtertextboxid"].tostring(); ft.displayname = reader["displayname"].tostring(); ft.columnname = reader["columnname"].tostring(); ft.value = reader["value"].tostring(); ft.datatypeid = int.parse(reader["datatypeid"].tostring()); ft.metasaveid = int.parse(reader["metasaveid"].tostring()); TextboxList.Add(ft); } } } return TextboxList; Nedenstående er et udsnit af en metode fra filter klassen, der benytter sig af et stored procedure kald. Metoden tager som parameter et FilterListbox objekt, og benytter metoden SPInt fra klassen moddb til at lave et stored procedure kald der returnerer en integer. public static int SaveDataListbox(FilterListbox fl) { int res = moddb.spint("prcupdatefilterlistbox", new[] { SqlDbType.VarChar, fl.displayname), SqlDbType.VarChar, fl.columnname), SqlDbType.Int, fl.metasaveid) }); return res; } DTU Danmarks Tekniske Universitet s. 45

50 Metoden tager et FilterDateboxId som argument. Strengen sql indeholder den sql, der skal eksekveres. Metoden SQLInt fra metoden moddb bliver brugt til at eksekvere sql en, sammen med sql public static void DeleteFromFilterDateboxById(string FilterDateboxId) { string sql = "delete from FilterDatebox where int temp = -1; temp = moddb.sqlint(sql, new[] { SqlDbType.Int, int.parse(filterdateboxid)) }); } Metoden tager MetaDataID som argument. Strengen sql indeholder den sql, der skal eksekveres. Et dataset og en table bliver oprettet, og using statement bliver brugt. Metoden SQLReader fra klassen moddb benyttes til at få returneret et SqlDataReader. Dernæst bliver to columns oprettet som er henholdsvis ReportMetaData- FieldIdAndDataType og Displayname. Nu da result settet gennem-løbes tilføjes to rows tilføjet med formattet ReportMetaDataFieldId Datatype, Displayname. Til sidst tilføjes table til datasettet, og returneres. public static DataSet GetSelectedFields(int MetaDataID) { string sql = "SELECT r1.reportmetadatafieldid, Displayname, r2.datatype FROM ReportMetaDataSaveField r1, " + "ReportMetaDataField r2 where r1.reportmetadatafieldid = r2.reportmetadatafieldid " + " and ShowColumn = 1 and ReportMetaDataSaveID DataSet dataset = new DataSet(); DataTable table = new DataTable(); table.tablename = "SelectedFields"; using (SqlDataReader reader = moddb.sqlreader(sql, new[] { SqlDbType.Int, MetaDataID) })) { table.columns.add("reportmetadatafieldidanddatatype", typeof(string)); table.columns.add("displayname", typeof(string)); while (reader.read()) { table.rows.add(reader["reportmetadatafieldid"].tostring() + " " + reader["datatype"].tostring(), reader["displayname"].tostring()); } } dataset.tables.add(table); } return dataset; DTU Danmarks Tekniske Universitet s. 46

51 9.3 FilterPageIframe Nedenstående gør at siden FilterPage bliver kaldt sammen med url parameteren ReportStructureID. <iframe src="filterpage.aspx?reportstructureid=<%= Request.QueryString["ReportStructureID"] %>" height="100%" width="100%" scrolling="no"></iframe> 9.4 FilterPage.aspx.cs Nedenstående metode addtextbox tager en liste af FilterField objekter som argument. Den boolske værdi check, er med for at indikere om der er blevet oprettet en DynamicLabelTextbox /DynamicTextboxFields eller ej. For hver FilterField tjekkes om dens datatype er 1(varchar) eller 2(int), derefter oprettes et label id unik vha. variablen i, og textbox id som indeholder FieldID og datatype. Til sidst tilføjes elementerne til deres tilhørende panels. private bool addtextbox(list<filterfield> listfields) { int i = 0; bool check = false; foreach (FilterField item in listfields) { if (item.datatype == 1 item.datatype == 2) { Label lbl = new Label(); lbl.id = "DynamicLabelTextbox-" + i; lbl.text = item.displayname; TextBox txtbox = new TextBox(); txtbox.text = item.value1; txtbox.id = "DynamicTextboxFields " + item.fieldid + "&" + item.datatype; txtbox.width = new Unit(120); string space = " : "; string newline = "<br />"; string newline2 = "<br /> <br />"; LiteralControl spa = new LiteralControl(space); LiteralControl nl = new LiteralControl(newline2); LiteralControl nl2 = new LiteralControl(newline); } PanelForLabels.Controls.Add(lbl); PanelForLabels.Controls.Add(spa); PanelForLabels.Controls.Add(nl); PanelForTextbox.Controls.Add(txtbox); PanelForTextbox.Controls.Add(nl2); check = true; i++; } } return check; DTU Danmarks Tekniske Universitet s. 47

52 Når brugeren trykker på view knappen på filter siden, bliver der lavet lister kaldet list1, list2 osv. Disse indeholder henholdsvis data fra bruger kontrollerne på siden. De bliver hentet via Request.Form.AllKeys, og genkendt via deres unikke id er. Når brugerkontrollernes data er valideret vha. regulære udtryk bruges listerne til at opdatere FilterFields tabellen. Hvis valideringen fejler, vil der blive vist en fejl meddelelse på siden og siden vil blive genskrevet med AddContens. Dernæst sættes en session variabel som skal bruges senere. For at kunne eksekvere javascript indefra C# koden benyttes ClientScript.RegisterClientScriptBlock. Den javascript der bliver kaldt gør at siden overføres til en nye side kaldet ReportView.aspx, og siden bliver til sidst lukket. protected void BtnView_OnClick(object sender, EventArgs e) { //update the user input textbox values and dropdownlist(operator) Dictionary<string, string> list1 = GetNewValuesTextbox();//textbox Dictionary<string, string> list2 = GetNewValuesOperator();//operator Dictionary<string, string> list3 = GetNewValuesDatetime(); //Datetime Dictionary<string, string> list4 = GetNewValuesInterval(); //interval Dictionary<string, string> list5 = GetNewValuesListbox(); //Dropdownlist if (!list1.containskey("error") &&!list3.containskey("error") &&!list4.containskey("error")) { ErrorLabel.Visible = false; Filter.UpdateFilterFields(list1, list2, list3, list4, list5); string s = Request.QueryString["ReportStructureID"]; LWSession.set_Value("ReportStructureID", "ReportDetails", s); string script = "<SCRIPT LANGUAGE='JavaScript'> "; script += "window.dialogarguments.opener.location = \"../Reports/ReportView.aspx\";" + "window.close();"; script += "</SCRIPT>"; ClientScript.RegisterClientScriptBlock(this.GetType(), "ClientScript", script); } else { AddContens(); ErrorLabel.Visible = true; ErrorLabel.Text = GetText("Error", "pages/filter/filterpage.aspx"); } } DTU Danmarks Tekniske Universitet s. 48

53 9.5 ReportStructure.cs Metoden GetNewParameterEntries tager en liste indeholdende SqlParametre, og en liste indeholdende FilterField som argumenter. Listen strlist som indeholder strenge, er til for at registrere hvilke columns der allerede er blevet defineret til listen indeholdende SqlParametre kaldet list. Listen som indeholder FilterFields objekter gennemløbes, og for hvert gennemløb switches der på hvilket datatype det nuværende element har. Hvis elementets datatype er 1, som er varchar, så tjekkes om elementes column allerede er defineret. Hvis ja så tilføjes et tal k til columnname, der bliver talt op. Ellers benyttes columnname alene til at definere en parameter. Til sidst defineres operator parameter, og den generiske liste list bliver ændret til et array. public static SqlParameter[] GetNewParameterEntries(List<SqlParameter> list, List<FilterField> FieldList) { int j = 0; int k = 0; List<string> strlist = new List<string>(); foreach (var item in FieldList) { switch (item.datatype) { case 1: if + item.columnname)) { + item.columnname + k, SqlDbType.VarChar, item.value1)); + item.columnname + k); } else { + item.columnname, SqlDbType.VarChar, item.value1)); + item.columnname); } break;... + j, SqlDbType.VarChar, item.operator)); j++; k++; } return list.toarray(); DTU Danmarks Tekniske Universitet s. 49

54 9.6 Report.cs Nedenstående er et udsnit af metoden AddWhere. Det der sker først er at alle textbox, datebox og listbox data hentes udfra MetaSaveID. Dernæst tjekkes om vi er i gang med at editere eller det er første gang vi skal lave sql. Hvis vi editere sletter vi først hvad der er i de to tabeller FilterDataField og FilterField, som har med det givne reportstructureid og gøre. Dernæst bliver de oversat ved at blive indsat i tabellen FilterFields, og derefter bliver data hentet fra de nylig indsatte rækker i FilterFields, og derved oprettes en liste af FilterField objekter. //get selected fields by user on textbox data and datebox data by MetaSaveID List<FilterTextbox> TextboxList = Filter.GetTextBoxData(id); List<FilterDatebox> DateboxList = Filter.GetDateBoxData(id); List<FilterListbox> ListboxList = Filter.GetListBoxData(id); //First time we are going to insert if (Filter.CountReportStructureID(ReportStructureID) == 0) { //insert textbox, dateboxvalues and listbox into FilterField Filter.InsertIntoFilterFields(ReportStructureID, TextboxList, DateboxList, ListboxList); } else { Filter.DeleteFromFilterFieldsByID(ReportStructureID); //insert textbox, dateboxvalues and listbox into FilterField Filter.InsertIntoFilterFields(ReportStructureID, TextboxList, DateboxList, ListboxList); } //Retrieve values from FilterField List<FilterField> FieldsList = Filter.GetFilterFields(ReportStructureID); DTU Danmarks Tekniske Universitet s. 50

55 Denne nylig oprettet liste gennemløbes, og for hvert gennemløb tilføjes til strengen str, som skal indeholde sql. Dictionary DicAlias indeholder columnname tilknyttet et table alias, så hvis det nuværende column element eksisterer i dette dictionary skal alias medtages i sql strengen. Hvis ikke det eksisterer, er det kun columnname som skal indgå i sql strengen. X et som man kan se der bliver tilføjet til str strengen, er med for at skabe et unikt columnname. Til sidst bliver str strengen appendet til stringbuilder elementet sb, som indeholder hele sql strengen, som skal benyttes til et kald.... foreach (var item in FieldsList) { if (check) { str = " AND "; }... if (DicAlias.ContainsKey(item.ColumnName)) { str += + i + " = 'BETWEEN') and ([" + DicAlias[item.ColumnName] + "]" + "." + item.columnname + " + item.columnname + i + " + item.columnname + i + "x" + "))"; str += " OR + i + " = 'NOT BETWEEN') and ([" + DicAlias[item.ColumnName] + "]" + "." + item.columnname + " NOT + item.columnname + i + " + item.columnname + i + "x" + ")))"; } else { str += + i + " = 'BETWEEN') and ([" + item.columnname + "] + item.columnname + i + " + item.columnname + i + "x" + "))"; str += " OR + i + " = 'NOT BETWEEN') and ([" + item.columnname + "] NOT + item.columnname + i + " + item.columnname + i + "x" + ")))"; } DTU Danmarks Tekniske Universitet s. 51

56 9.7 ReportWizard8.aspx.cs Når siden loades skaffes MetaSaveID fra url parameteren. Hvis den er gyldig så gemmes den til en hiddenfield til senere brug. Dernæst hentes de fields som brugeren har valgt, og de bindes til listbox1. Listen af fields hentes endnu engang, men denne gang som en generisk liste indeholdende strenge. Alle brugerkontrollerne bliver hentet og lavet til generiske lister. Inden at listerne bliver brugt til at vise hvilke valg brugeren har foretaget sig, skal listerne først igennem en metode kaldet f.eks. ChangeTextbox. Metoden bliver beskrevet nærmere på næste billede. if (!Page.IsPostBack) { SetEnability(); Default.Visible = false; int metadataid = Request["MetaSaveID"]!= null? int.parse(request["metasaveid"].tostring()) : -1; if (metadataid!= -1) { HidMetaDataID.Value = metadataid.tostring(); //Gets users selected fields and adds them to the listbox ListBox1.DataSource = Filter.GetSelectedFields(metaDataID); ListBox1.DataValueField = "ReportMetaDataFieldIdAndDataType"; ListBox1.DataTextField = "Displayname"; ListBox1.DataBind(); List<string> list = GetFieldList(); List<FilterTextbox> TextboxList = Filter.GetTextBoxData(metaDataID); List<FilterDatebox> DateboxList = Filter.GetDateBoxData(metaDataID); List<FilterListbox> ListboxList = Filter.GetListBoxData(metaDataID); } } MakeTextboxString(ChangeTextbox(TextboxList,list)); MakeDateboxString(ChangeDatebox(DateboxList,list)); MakeListboxString(ChangeListbox(ListboxList,list)); DTU Danmarks Tekniske Universitet s. 52

57 Metoden forneden tager en liste af FilterTextbox og en liste af strenge som argumenter. Listen med FilterTextbox bliver kopieret over i en ny temp liste. Listen bliver gennemløbet, og for hver gennemløbning gennemløbes listen med strenge som svarer til valgte felter af brugeren. Hvis vi får et match i løbet af gennemløbningen, så er der ikke ændret noget i forhold til valg af felter af brugeren. Hvis elementet ikke kunne findes så slettes elementet fra databasen og fra temp listen. Til sidste returneres den nye liste. Formålet med metoden er at tjekke om brugeren har foretaget et nyt valg mht. valgte felter. public List<FilterTextbox> ChangeTextbox(List<FilterTextbox> TextboxList, List<string> list) { List<FilterTextbox> temp = new List<FilterTextbox>(TextboxList); int i = 0; bool exist = false; //loops trought textbox list foreach (FilterTextbox item1 in TextboxList) { //loops trought field list foreach (string item2 in list) { if (item1.displayname == item2) { exist = true; } } } if (!exist) { Filter.DeleteFromFilterTextboxById(item1.FilterTextboxID); temp.removeat(i); exist = false; } i++; } return temp; Når der skal skrives til listboxen på definitions filter siden så benyttes følgende metode til at skrive. Listen indeholdende FilterTextbox gennemløbes, og for hvert gennemløb skrives til en streng som tilføjer displayname, value og laver et nyt listitem element som har FilterTextboxID som value. Dette id skal bruges når elementet skal slettes. Ved at kende id som svarer overens med databasen, kan det fjernes derfra. private void MakeTextboxString(List<FilterTextbox> list) { foreach (FilterTextbox item in list) { string str = "Textbox on "; str += item.displayname; str += " " + item.value; ListItem li = new ListItem(str, item.filtertextboxid); } } LstAvalable.Items.Add(li); DTU Danmarks Tekniske Universitet s. 53

58 9.8 Stored procedure Der er lavet i alt 4 stored procedure. prcupdatefilterdatebox o indsætter data i FilterDatebox tabellen alt efter værdien af hasboth parameteren, og returnerer det unike id fra den nylig indsatte række. prcupdatefilterfield o indsætter data i FilterField, og returnerer det unike id fra den nylig indsatte række. prcupdatefilterlistbox o indsætter data i FilterListbox, og returnerer det unike id fra den nylig indsatte række. prcupdatefiltertextbox o indsætter data i FilterTextbox, og returnerer det unike id fra den nylig indsatte række. Jeg har valgt at vise proceduren prcupdatefilterdatebox, som kan ses forneden: ALTER PROCEDURE [dbo].[prcupdatefilterdatebox] -- Add the parameters for the stored procedure int OUTPUT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; = 0 BEGIN INSERT INTO FilterDatebox(Value1,Value2,DisplayName,ColumnName, HasBoth,MetaSaveID,DataTypeID) VALUES = END ELSE BEGIN INSERT INTO FilterDatebox(Value1,Value2,DisplayName,ColumnName,HasBoth,MetaSaveID,DataTypeID) VALUES = END END DTU Danmarks Tekniske Universitet s. 54

59 Det første der sker, er deklarering af de parametre der skal bruges i proceduren. Alle er default input værdier, som er output. Kroppen består af en if sætning, som tester på Hvis den er 0 så indsættes et blank værdi på Value2 feltet i databasen, og returnerer det unikke id fra den nylig indsatte række. Hvis derimod værdien er 1 indsættes der normalt i tabellen FilterDatebox, og returnerer det unikke id fra den nylig indsatte række. 9.9 Delkonklusion Det kan konkluderes, at de væsentligste filer med metoder er blevet beskrevet. DTU Danmarks Tekniske Universitet s. 55

60 10 TEST I dette kapitel opstilles og beskrives først forskellige kendte test metoder. Dernæst gennemgås test strategien, som udvælger hvilken test metode der skal bruges. Den valgte test metode/metoder beskrives og kapitlet rundes af med del konklusion Testmetoder I det efterfølgende beskrives forskellige kendte testmetoder Black box test I denne test opfatter man systemet som en sort kasse, hvor man ikke har kendskab til den indre implementation. Man fokuser på hvilke krav man kan opfylde ved udelukkende at se på input og output. Man sammenligner forventet resultat med det faktiske, og kan derved angive om testen gik godt eller skidt White box test White box test er det modsatte af black box, hvor man nu kan få adgang til den indre implementation. Testeren har mulighed for at se data strukturerne og algoritmerne bagved koden Gray box test Gray box er en kombination af black box og white box testning. Formålet er at finde defekter relateret til dårligt design og dårlig implementering af systemet Unit test Er en validerings metode for en programmør, til at teste for individuelle enheder af kildekode. Den laveste bestanddel man kan teste for kan være en metode eller procedure. Testen er ofte automatiseret Integration test Er hvor individuelle software moduler bliver samlet sammen og testet som en enhed, for at se om de kan arbejde sammen. Det foregår ofte efter unit testning og før system testning. En integrationstest udføres ofte som en black box test. DTU Danmarks Tekniske Universitet s. 56

61 Regression test I et softwareudviklingsforløb kan regressionstest afsløre software regressioner, som er, når tidligere godtaget software funktionalitet utilsigtet fejler pga. modificeringer og tilføjelser Accept test Accepttesten kan ses som en black box test, der undersøger om kravene i form af use cases lever op til det forventede. En accepttest udføres før systemet overdrages til slutbrugeren, og sådan en test kan blive udført af slutbrugeren. [6] NUnit NUnit er et unit testning framework til alle Microsoft.Net sprog. Det har det samme formål som JUnit har i Java verdenen. Det at eksekvere applikations kode og tjekker for fejl/gennemført betingelser. Forneden ses Gui runner til NUnit, som er et program til at eksekvere dine tests. Figur 21: Gui runner til NUnit Assertions er det centrale for unit testning af NUnit frameworket. Man gør brug af assertions som statiske metoder fra Assert klassen. Hvis en assertion fejler, vil metode kaldet ikke blive returneret, men en fejl vil blive reporteret. Hvis en test indeholder flere DTU Danmarks Tekniske Universitet s. 57

62 assertions, vil kun den ene assertion fejle, hvorimod resten ikke vil blive eksekveret. Af denne grund er det bedst at benytte kun 1 assertion per test. Nogle af de metoder der er tilgængelige fra klassen Assert er: Assert.AreEqual(), Assert.Greater(), Assert.Less(), Assert.IsTrue(), Assert.IsFalse(). [7], [8] 10.2 Test strategi I første omgang havde jeg tænkt mig at benytte en kombination af black box test og unit test. Black box, fordi vi har benyttet det meget igennem det meste af studietiden, og fordi de er lige til at gå til. Dertil unit test fordi jeg har skrevet et par stykker under min praktik periode, og synes det kunne være på sin plads også at forsøge sig til dette projekt. Jeg ville have brugt NUnit til at udføre mine unit test. Men da det har vist sig at de fleste metoder i aspx siderne knytter sig til det logik, der har med flowet at gøre er det ikke muligt at lave unit test på. Hele Filter klassen som består af database kald, har jeg valgt ikke og teste med unit tests, jeg tænkte at det ville blive for tidskrævende med håndtering af data i databasen. Der skal nærmest laves en kopi af den database indeholdende specifikke data, før at en anden ville kunne reproducere de fejl og mangler eller korrekthed i unit testene. Mht. test af brugergrænsefladen i forskellige browsere har jeg undladt at gøre dette. Det har jeg, fordi LicenseWatch applikationen er rettet mod IE, så der er ikke nogen grund til at forsøge sig mod andre browsere. Desuden har jeg fravalgt at lave en W3C Markup validering af xhtml koden, fordi resten af LicenseWatch koden ligeledes ikke er valideret. DTU Danmarks Tekniske Universitet s. 58

63 10.3 Black box tests Forneden er der opstillet et testskema. Feltet Billede i bilag 01 henviser til Test screenshot 01 i bilaget, og de efterfølgende tal er ligeledes i bilaget på denne måde. Test Krav Test Case Forventet Faktisk Billede Status Nr. Nr. output output i bilag 01 K1 En bruger har valgt Listen med valgte Som 01 OK hvilke felter han gerne felter skal hentes forventet vil se i en fremtidig og vises på filter rapport. Disse skal definations siden. hentes og vises på filter definations siden. 02 K2 Når en bruger markerer Når brugeren Delvist 02 OK et valgt felt skal der markerer et felt som vises et tilsvarende vises der et forventet bruger kontrol. tilsvarende bruger kontrol. 03 K3 Hvor end der er Når brugeren Som 03 OK mulighed for bruger indtaster noget forventet input, skal der forkert skal der valideres. vises en fejl meddelse. 04 K4 Når brugeren har valgt Når brugeren Som 04 OK hvilket felt med trykker på tilføj forventet tilhørende brugerfelt knappen skal det vedkommende skal vises på filter bruge, skal det gemmes definations siden, i databasen. og gemmes i databasen. DTU Danmarks Tekniske Universitet s. 59

64 05 K5 En bruger skal Når brugeren Som 05 OK kunne slette et trykker på fjern forventet fejlagtigt valg af knappen fjernes felt. brugerens valg, og indholdet fjernes fra databasen. 06 K6 Når brugeren Når brugeren Som - OK forlader filter vender tilbage til forventet definations siden hentes siden, og vender vedkommendes tilbage på siden tidligere valg fra skal det tidligere databasen. valgte felter vises. 07 K7 Når brugeren Når brugeren Som 06 OK benytter filter vises filter siden forventet siden skal de skal de valgte valgte bruger brugerkontroller kontroller fra fra definations filter definations siden vises. siden vises. 08 K8 Når en rapport Når brugeren Som - OK vises skal trykker på view forventet kriterierne fra knappen filter siden træde fremkommer en i kraft. rapport med de valgte kriterier. DTU Danmarks Tekniske Universitet s. 60

65 09 K9 Kun en bruger Når brugeren forsøger Ikke som - Fail med rettigheder at tilgå en af siderne vil forventet har mulighed for der dukke en at se definations fejlmeddelse frem. siden og filter siden. 10 K10 Når en bruger Når brugeren trykker på Som 07 OK trykker på et et rapport link dukker der forventet rapport link dukker en fejlmeddelse op hvis der et popup man ikke har defineret vindue frem. nogle brugerkontroller, ellers bliver ens valgte brugerkontroller vist. 11 K11 Når brugeren Når brugeren trykker på Som - OK trykker på Preview Reports og forventet Preview Reports efterfølgende på et link og efterfølgende på vil design siden dukke op. et link vil design siden dukker op. 12 K12 Når en bruger Når brugeren trykker på Som 08 OK trykker på tilføj tilføj knappen skal der forventet knappen, skal der laves et tjek om antal og komme en allerede eksisterende. fejlmeddelse omkring antal bruger kontroller, og om elementet allerede eksisterer i listen af brugerkontroller. DTU Danmarks Tekniske Universitet s. 61

66 13 K13 Hvis en bruger Når brugeren trykker på Som OK fortryder sit valg Preview Reports er det forventet skal vedkommende muligt at trykke på Edit kunne editere. in report Wizard, og derved kunne editere brugerkontroller Delkonklusion Resultatet af testen gav nogle små fejl. Test 02 viste at der kan forekomme forkerte visninger af bruger kontroller, altså at det valgte felt med specifik datatype ikke svarer overens med den viste bruger kontrol. Desuden er der en lille fejl med visning af icon til datetime. Dernæst viste Test 07 at man kan ikke som kriterium sætte dato = med. Dette kan man ikke da databasen indeholder formatet :37: for dato data, og når jeg gemmer data om dato er det formatet De to værdier er derved ikke ens. Til sidst viste test 09 at det ikke er muligt på nuværende tidspunkt at have sikkerhed på de to filter sider. DTU Danmarks Tekniske Universitet s. 62

67 11 KONKLUSION Jeg har valgt at opdele konklusionen i to dele - en for produktet og en for processen Konklusion på produktdelen I forhold til abstraktet, som gik ud på at udvikle en dynamisk filtrerings komponent, der gør rapport data mere intuitiv for slutbrugerne, synes jeg at jeg har opfyldt dette. Jeg har lavet et filter der gør det muligt at filtrere de rapport data man har valgt. Yderligere i forhold til abstraktet, som gik ud på at udarbejde en brugervenligheds analyse og design til en pågældende GUI, som gør brug af en rapport filtrerings komponent, synes jeg at jeg har delvist opfyldt. Jeg har beskrevet brugervenlighed i min analyse, men synes mht. brugervenligheds design at det halter lidt. Jeg har haft det i tankerne da jeg lavede mock ups, men synes ikke at GUI en er fuldt ud brugervenlig. Det har været svært at lave en pæn GUI, da indholdet skulle være dynamisk. De fejl der blev registreret synes jeg ikke var så alvorlige for systemet, men stadigvæk irriterende at de er til stede. Samlet set er jeg tilfreds med det produkt jeg har udarbejdet, og føler at jeg har lært de grundlæggende ting inden for udvikling ved hjælp af ASP.NET. Jeg fik dog ikke behov for særlig meget AJAX andet end til kalender extender Konklusion på procesdelen Jeg valgte fra starten af at benytte mig af udviklingsmetoderne vandfaldsmodellen og XP. Dette bekendtskab var godt, og uden de store problemer. Projektplanen havde ikke de store afvigelser, men der var især en fase der tog overhånd og det var implementering af produktet. Af denne grund måtte jeg lave reverse engineering på designet. Ville jeg have gjort noget anderledes? Nej det ville jeg ikke Fremtidig brug Med hensyn til fremtidige udvidelser kan jeg forestille mig følgende: Sikkerhed Skal laves for filter oprettelse og filter siden, så det kun er folk med de rigtige rettigheder der kan se siden. Multi select Er en ny brugerkontrol til filter siden, så brugere kan lave multi select valg af f.eks. users, workstations eller software. DTU Danmarks Tekniske Universitet s. 63

68 12 REFERENCER [Li] [On] Forkortelser Litteratur ex. bøger Information hentet online fra internettet 12.1 Kilder 1. [On] 2. [On] 09:51, 10 March [On] 13. jan 2010, 20:42 4. [On] 5. [On] 6. [On] 07:18, 10 March [On] 21:32, 11 March [On] 9. [On] 18. feb 2010, 21: [On] 10. mar 2010, 17: [On] 12. mar 2010, 11: [On] 21. feb 2010, 17: [On] 21. aug 2009, 17: [On] 15. [On] 16. [On] 17. [On] 18. [On]http://www.kimandersen.dk/database_normalisering/normalisering_database_sql_foerste_norma lform.htm DTU Danmarks Tekniske Universitet s. 64

69 19. [On]http://www.kimandersen.dk/database_normalisering/mysql_anden_normalform_database.htm 20. [On]http://www.kimandersen.dk/database_normalisering/normalform_tredje_mysql_normalisering.h tm BILAG 13.1 Indhold på vedlagte CD Den vedlagte CD indeholder følgende: Kildekode Kildekoden til programmet. Rapport Denne rapport er vedlagt på CD en i PDF format. DTU Danmarks Tekniske Universitet s. 65

70 13.2 Projekt plan DTU Danmarks Tekniske Universitet s. 66

71 13.3 Test screenshot 01 DTU Danmarks Tekniske Universitet s. 67

72 13.4 Test screenshot - 02 DTU Danmarks Tekniske Universitet s. 68

73 13.5 Test screenshot Test screenshot - 04 DTU Danmarks Tekniske Universitet s. 69

74 13.7 Test screenshot 05 DTU Danmarks Tekniske Universitet s. 70

75 13.8 Test screenshot 06 DTU Danmarks Tekniske Universitet s. 71

76 13.9 Test screenshot Test screenshot 08 DTU Danmarks Tekniske Universitet s. 72

77 DTU Danmarks Tekniske Universitet s. 73

PHP Quick Teknisk Ordbog

PHP Quick Teknisk Ordbog PHP Quick Teknisk Ordbog Af Daniel Pedersen PHP Quick Teknisk Ordbog 1 Indhold De mest brugte tekniske udtryk benyttet inden for web udvikling. Du vil kunne slå de enkelte ord op og læse om hvad de betyder,

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

Database for udviklere. Jan Lund Madsen PBS10107

Database for udviklere. Jan Lund Madsen PBS10107 Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated

Læs mere

Opsætning af MobilePBX med Kalenderdatabase

Opsætning af MobilePBX med Kalenderdatabase Opsætning af MobilePBX med Kalenderdatabase Dette dokument beskriver hvorledes der installeres Symprex Exchange Connector og SQL Server Express for at MobilePBX kan benytte kalenderadadgang via database

Læs mere

PHP kode til hjemmeside menu.

PHP kode til hjemmeside menu. PHP kode til hjemmeside menu. Home Hovedmenu 1 Hovedmenu 2 Hovedmenu 3 Hovedmenu 4 Undermenu 1 Breadcrumb Her vises indholdet af den valgte side Undermenu 2 Undermenu 3 Undermenu 4 Evt. en mulighed for

Læs mere

Internet Information Services (IIS)

Internet Information Services (IIS) Internet Information Services (IIS) Casper Simonsen & Yulia Sadovskaya H1we080113 06-11-2013 Indholdsfortegnelse Problemformulering... 2 Hvorfor:... 2 Hvad:... 2 Hvordan:... 2 Problembehandling... 3 Introduktion...

Læs mere

Vejledning til Teknisk opsætning

Vejledning til Teknisk opsætning Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder.

Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder. .NET UDVIKLER NATIONALITET: DANSK PROFIL Dygtig.NET / C# udvikler med stor erfaring fra både offentlige organisationer og private virksomheder. Stor erfaring omkring databasedesign, datahåndtering og MS

Læs mere

Dokumentering af umbraco artikeleksport:

Dokumentering af umbraco artikeleksport: Dokumentering af umbraco artikeleksport: Lav en artikel side 2-3. Installationsguide side 3-5. Opsættelse af databasen og web.config side 5-8. Umbraco: templates side 8. Umbraco: borger.dk tab side 8.

Læs mere

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4

15. oktober. Maskine Udlejning. Jacob Weng, Jeppe Boese og Mads Anthony. Udlejningsvirksomhed. Roskilde Tekniske Gymnasium 3.4 Maskine Udlejning 15. oktober 2010 Jacob Weng, Jeppe Boese og Mads Anthony Roskilde Tekniske Gymnasium Udlejningsvirksomhed 3.4 Indholdsfortegnelse Problemformulering:... 2 Planlægning:... 2 Analyse af

Læs mere

Installation og Drift. Aplanner for Windows Systemer Version 8.15

Installation og Drift. Aplanner for Windows Systemer Version 8.15 Installation og Drift Aplanner for Windows Systemer Version 8.15 Aplanner for Windows løsninger Tekniske forudsætninger Krav vedr. SQL Server SQL Server: SQL Server 2008 Express, SQL Server 2008 R2 eller

Læs mere

PID2000 Archive Service

PID2000 Archive Service PROLON CONTROL SYSTEMS Herstedvesterstræde 56 DK-2620 Albertslund Danmark Tlf.: (+45) 43620625 Fax: (+45) 43623125 PID2000 Archive Service Bruger vejledning Juni 2002 Denne manual beskriver brugen af softwaren

Læs mere

Data lagring. 2. iteration (implement backend)

Data lagring. 2. iteration (implement backend) Data lagring 2. iteration (implement backend) Emner Grundlæggende database begreber. Data definitionskommandoer ER-diagrammer og cardinalitet/relationer mellem tabeller Redundant data og Normalisering

Læs mere

2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING

2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING 2. SEMESTER PROJEKT 3 INTERAKTIONSUDVIKLING Baggrund Udgangspunktet er projekt 2, dvs. en blog om cupcakes, hvor målgruppe, afsender og modtager allerede er defineret. Du bliver nu bedt om at udvikle et

Læs mere

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &.

MapBasic &.NET interaktion. MapBasic.NET. Jakob Lanstorp IT konsulent COWI. Odense 23. Juni 2011. 1 8 jun 2011 MapBasic &. MapBasic &.NET interaktion MapBasic.NET Jakob Lanstorp IT konsulent COWI Odense 23. Juni 2011 1 MapBasic &.NET interaktion Erfaring med MapBasic.NET / Visual Studio Anden programmering 2 Program Hurtig

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets. Dagens program Har alle fået? Har nogen betalt for meget? Hav jeres koder klar Domæner change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog Hvad er widgets Hvad er

Læs mere

Kom i gang med SAS STPbaserede

Kom i gang med SAS STPbaserede make connections share ideas be inspired Kom i gang med SAS STPbaserede webapplikationer Lars L. Andersson Chefkonsulent Webapplikationer Interaktion med serverbaserede data via skærmbilleder leveret gennem

Læs mere

Advanced Word Template Brugermanual

Advanced Word Template Brugermanual Advanced Word Template Brugermanual Forord: Advanced Word Template er et værktøj, der anvendes sammen med Microsoft Word til at opbygge ensartet beskrivelser på en mere intelligent måde end Copy and Paste

Læs mere

Indholdsfortegnelse for kapitel 1

Indholdsfortegnelse for kapitel 1 Indholdsfortegnelse for kapitel 1 Forord.................................................................... 2 Kapitel 1.................................................................. 3 Formål............................................................

Læs mere

Introduktion til SQL

Introduktion til SQL Introduktion til SQL Introduktion til SQL 1. udgave, 1. oplag 2013 Copyright 2013 Libris Media A/S Forfatter: Bobby Henningsen Forlagsredaktion: Peter Wiwe og Louise Peulicke Larsen Omslag: Louise Peulicke

Læs mere

Skriftlig opgave. Designtanker i database-nære systemer

Skriftlig opgave. Designtanker i database-nære systemer Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design

Læs mere

FairSSL Fair priser fair support

FairSSL Fair priser fair support Exchange 2010 SSL certifikat administration Følgende vejledning beskriver hvordan man vælger hvilke adresser der skal være i ens Exchange 2010 SAN SSL certifikat. Derudover er der tekniske guides til at

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre

Postregistrering Eksamensprojekt i Programmering C Lavet af: Frantz Furrer Svendborg Erhvervsskole HTX Vejleder: Claus Borre Postregistrering Eksamensprojekt i Lavet af: Frantz Furrer Vejleder: Claus Borre Side af 4 Titelblad: Skolens navn: Svendborg Tekniske Gymnasium - Rapport: Rapportens titel: Postregistrering Side antal:

Læs mere

PDC Helpdesk Brugervejledning

PDC Helpdesk Brugervejledning PDC Helpdesk Brugervejledning PDC Helpdesk November 2013 Indhold 1 Introduktion... 3 2 Brug af browser eller e-mails... 3 3 Log på PDC Helpdesk... 4 4 Oversigts side for sager... 5 4.1 Oversigt over eksisterende

Læs mere

RefWorks en vejledning fra UCL Biblioteket. Indholdsfortegnelse

RefWorks en vejledning fra UCL Biblioteket. Indholdsfortegnelse Indholdsfortegnelse Hvad er RefWorks?... 2 Opret dig som bruger... 2 Inden du går i gang... 3 Klargøring af computer til download af Write-N-Cite v. 4.2... 3 Installation af Write-N-Cite... 4 Installation

Læs mere

SAS2WPS Workshop. Torben Christensen! Senior Partner, MSc.! email: torben.christensen@uniqcus.com! tlf: +45 3064 9150. Copyright UniQcus 2014

SAS2WPS Workshop. Torben Christensen! Senior Partner, MSc.! email: torben.christensen@uniqcus.com! tlf: +45 3064 9150. Copyright UniQcus 2014 SAS2WPS Workshop! Torben Christensen! Senior Partner, MSc.! email: torben.christensen@uniqcus.com! tlf: +45 3064 9150 Copyright UniQcus 2014 Torben Christensen 17 years with SAS institute (starting okt85)

Læs mere

Indhold. 1 Indledning... 3. 1.1 Kompatible browsere... 3. 2 Log ind i Umbraco... 3. 3 Content-delen... 4. 3.1 Indholdstræet... 4

Indhold. 1 Indledning... 3. 1.1 Kompatible browsere... 3. 2 Log ind i Umbraco... 3. 3 Content-delen... 4. 3.1 Indholdstræet... 4 Indhold 1 Indledning... 3 1.1 Kompatible browsere... 3 2 Log ind i Umbraco... 3 3 Content-delen... 4 3.1 Indholdstræet... 4 3.2 Ændring af indhold... 5 3.3 Tilføjelse af en side/sektion... 6 3.4. At arbejde

Læs mere

BAAN IVc. Brugervejledning til BAAN Data Navigator

BAAN IVc. Brugervejledning til BAAN Data Navigator BAAN IVc Brugervejledning til BAAN Data Navigator En udgivelse af: Baan Development B.V. P.O.Box 143 3770 AC Barneveld Holland Trykt i Holland Baan Development B.V. 1997. Alle rettigheder forbeholdes.

Læs mere

Dynamisk hjemmeside: NeuTravel

Dynamisk hjemmeside: NeuTravel Dynamisk hjemmeside: NeuTravel Problemformulering I dette projekt ønsker vi at lave en uafhængig hjemmeside til brug af turister, som gerne vil læse neutral information (dvs. information der ikke er farvet

Læs mere

EasyIQ ConnectAnywhere Release note

EasyIQ ConnectAnywhere Release note EasyIQ ConnectAnywhere Release note Version 2.4 Der er over det sidste år lavet en lang række forbedringer, tiltag og fejlrettelser. Ændringer til forudsætningerne: o Klienten skal ved førstegangs login

Læs mere

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5 Databaser og SQL Introduktion til SQL Kap 1-5 1 Dagens gang Databaser Database begreber Mapning af klasser til relationel model Normalisering Opgaver til næste gang 2 Databasebegreber A database is a:

Læs mere

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø

FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø FESD-standardiseringsgruppen Att: Palle Aagaard IT- og Telestyrelsen IT-strategisk kontor Holsteinsgade 63 2100 København Ø Høringssvar vedr. FESD GIS-integrationsmodel version 2.0 Geodata Danmark har

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

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

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

Læs mere

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav. Miniprojekt2011 Projektbeskrivelse Der skal fremstilles en lille java application på PC, hvor brugeren kan foretage interaktioner med en simpel database på disken via et grafisk brugerinterface. Formålet

Læs mere

Opstart. I gang med Dreamweaver. Læs mere om... Generelle bemærkninger. Hvilken skærmopløsning? OBS

Opstart. I gang med Dreamweaver. Læs mere om... Generelle bemærkninger. Hvilken skærmopløsning? OBS Generelle bemærkninger Programmet Dreamweaver har været på markedet i nogle år efterhånden. Den seneste version hedder Dreamweaver CS4, og programmet er på engelsk. Dreamweaver er en såkaldt grafisk editor,

Læs mere

SmartWeb Brugermanual

SmartWeb Brugermanual SmartWeb Brugermanual Table of Content Table of Content... 1 Best Practice SmartWeb:... 2 Implementering... 4 Egenskaber:... 5 Filer:... 7 Oprettelse af Kategori... 9 Sider og Tekster:... 11 Slideshow...

Læs mere

DTU 02335 Net Teknologi A Webprogrammering og Datakommunikation Eksamensprojekt Krav til rapport September 2008 KRAV TIL RAPPORTEN

DTU 02335 Net Teknologi A Webprogrammering og Datakommunikation Eksamensprojekt Krav til rapport September 2008 KRAV TIL RAPPORTEN KRAV TIL RAPPORTEN Eksamensprojektet i Web-programmering og Datakommunikation skal afleveres som en rapport. Rapporten skal afleveres, i 2 eksemplarer (kopier). Endvidere skal være angivet URL, for emner

Læs mere

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

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

Læs mere

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

Læs mere

FairSSL Fair priser fair support

FairSSL Fair priser fair support Microsoft IIS 6 Certifikat administration Følgende vejledning beskriver hvordan man installere et certifikat på en IIS 6 For support og hjælp til anvendelsen af denne vejledning kan du kontakte FairSSL

Læs mere

Nyt i SkoleIntra 5.10

Nyt i SkoleIntra 5.10 Nyt i SkoleIntra 5.10 Sidst ændret den 18 09 2015 Ny version af editor SkoleIntra benytter som bekendt en editor ved navn CKeditor til online redigering af tekster. I SkoleIntra 5.10.0 opdateres editor

Læs mere

Opstart. I gang med Dreamweaver. Læs mere om...

Opstart. I gang med Dreamweaver. Læs mere om... Generelle bemærkninger Programmet Dreamweaver har været på markedet i nogle år efterhånden. Den seneste version hedder Dreamweaver CS5, og programmet er på engelsk. Dreamweaver er en såkaldt grafisk editor,

Læs mere

Installation. Aesiras Internet hjemmeside og webshop. Aesiras -integreret Regnskab, Handel og Internet

Installation. Aesiras Internet hjemmeside og webshop. Aesiras -integreret Regnskab, Handel og Internet Installation Aesiras Internet hjemmeside og webshop Aesiras -integreret Regnskab, Handel og Internet Installationsvejledning Tak fordi du valgte Aesiras Business & Internet. I denne vejledning vil vi guide

Læs mere

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker

Læs mere

Grundlæggende OOA - OOD

Grundlæggende OOA - OOD Grundlæggende OOA - OOD Dette kursus henvender sig til personer, der har lille eller ingen erfaring med softwareudvikling. Med udgangspunkt i UML opbygges et solidt kendskab til softwareudviklingens kunst

Læs mere

HELLO INSTALLATIONS GUIDE - DANSK RACKPEOPLE

HELLO INSTALLATIONS GUIDE - DANSK RACKPEOPLE HELLO INSTALLATIONS GUIDE - DANSK RACKPEOPLE 1 Tekniske Krav 1.1 Hardware krav: En skærm gerne med touch Hvis skærmen ikke har touch, skal du bruge et tastatur og en mus Webcam Gerne i HD En ekstern lydenhed

Læs mere

Skifte til Excel 2010

Skifte til Excel 2010 I denne vejledning Microsoft Excel 2010 ser meget anderledes ud end Excel 2003, og vi har derfor oprettet denne vejledning, så du hurtigere kan komme i gang med at bruge programmet. Læs videre for at få

Læs mere

Opsætning af brugere og temaer i GIS4Mobile

Opsætning af brugere og temaer i GIS4Mobile Opsætning af brugere og temaer i GIS4Mobile Brugerne og deres adgang til data konfigureres gennem et webinterface, som nås via dette link: http://www.geosms.dk/g4m_websetup Grundlæggende skal det fremhæves

Læs mere

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13 1 Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Hvad er en makro... 10 Hvad kan du bruge en makro til... 10 Hvad en makro er (Visual Basic for Applications)... 11 Det hele sker

Læs mere

Godkendelsesdato Version Rettet af Rettelse(r)

Godkendelsesdato Version Rettet af Rettelse(r) REST/SOAP Services Referenceimplementation Godkendelsesdato Version Rettet af Rettelse(r) 17/6-2010 1.0 Stefan L. Jensen 1 Indhold 1. Indledning... 3 2. Visual Studio solution... 3 3. Konfiguration...

Læs mere

GeoEnviron Web-løsninger

GeoEnviron Web-løsninger 2012 Troels Kreipke 01-01-2012 Indhold Generelt... 3 Web-løsninger... 3 XML-firewall... 4 GeoEnviron_WebService... 4 Installation af web-løsninger uden brug af GeoEnviron_WebService... 5 GeoEnviron_WebService...

Læs mere

Responsivt Design - DMAA0213. Afgangsprojekt DMAA0213

Responsivt Design - DMAA0213. Afgangsprojekt DMAA0213 Responsivt Design - DMAA0213 Afgangsprojekt DMAA0213 Jesper Bjørn Andersen 18-06-2015 5. semester, afgangsprojekt - Responsivt Design Vejleder: Gunhild Marie Andersen Afsluttet: 18 Juni 2015 Deltager:

Læs mere

Dokument- og Sagsstyringssystem

Dokument- og Sagsstyringssystem Dokument- og Sagsstyringssystem Mads Nissen Kongens Lyngby 2010 IMM-B.Eng-2009-36 Technical University of Denmark Informatics and Mathematical Modelling Building 321, DK-2800 Kongens Lyngby, Denmark Phone

Læs mere

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4

Projekt Database, Gruppe 4A. Projekt 1, 3. Semester D A T A B A S E. Klasse MulA13 Gruppenummer: A4 Projekt Database, Gruppe 4A 0 Projekt 1, 3. Semester D A T A B A S E Klasse MulA13 Gruppenummer: A4 Projekt Database, Gruppe 4A 1 Fakta-ark Klasse MulA13, Gruppenummer: A4 Gruppemedlemmer: Amalie Ardahl

Læs mere

Rapport. Udarbejdet af: Mayianne Nøks Pedersen. Skole login: knmape68. E-mail: mypedersen@gmail.com

Rapport. Udarbejdet af: Mayianne Nøks Pedersen. Skole login: knmape68. E-mail: mypedersen@gmail.com Rapport Udarbejdet af: Mayianne Nøks Pedersen Skole login: knmape68 E-mail: mypedersen@gmail.com URL til brugerundersøgelsen: http://web328.webkn.dk/hjemmeside/image/laering/sem2brugerundersogelse/brugerundersogelse/

Læs mere

EasyIQ Opdatering 5.2.3 -> 5.4.0

EasyIQ Opdatering 5.2.3 -> 5.4.0 EasyIQ Opdatering 5.2.3 -> 5.4.0 Kunde: Forfatter: Thomas W. Yde Systemtech A/S Side: 1 af 17 1 Indholdsfortegnelse 2 GENERELT OMKRING FORUDSÆTNINGEN OG OPDATERINGS FORLØBET... 3 2.1 FORUDSÆTNINGER...

Læs mere

Ruko SmartAir. Updater installation

Ruko SmartAir. Updater installation Ruko SmartAir Updater installation Introduktion. Updateren er en speciel enhed som giver os mulighed for at tilføje, læse og skrive funktioner i en offline installation. Med læse og skrive funktionen kan

Læs mere

educasoft - en professionel samarbejdspartner med speciale i uddannelse!

educasoft - en professionel samarbejdspartner med speciale i uddannelse! Velkommen til educasoft's hjemmeside educasoft - en professionel samarbejdspartner med speciale i uddannelse! Professionelle undervisere Undervisning i virksomheden Undervisning dag/aften eller week-end

Læs mere

MODERNISERINGSSTYRELSEN ØSLDV WINDOWS SERVICE DOKUMENTATION, INSTALLATION OG KONFIGURERING AF ØSLDV/RAY WINDOWSSERVICE

MODERNISERINGSSTYRELSEN ØSLDV WINDOWS SERVICE DOKUMENTATION, INSTALLATION OG KONFIGURERING AF ØSLDV/RAY WINDOWSSERVICE Indhold Ændringshistorik... 2 Formål... 2 Om programmet... 2 Systemkrav... 2 Installation... 3 Event Log... 5 Installationsprogrammets skærmbillede... 6 Konfigurering af xml-opsætningsfil... 7 Beskrivelse

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

Programmeringseksempel tl BCxxxx (Seriel)

Programmeringseksempel tl BCxxxx (Seriel) APP-NOTE 600005 Beckhoff Application Note Date: 8/28/2006 Document Status: First Draft Beckhoff Automation Aps Naverland 2, DK-2600 Glostrup Phone +45 43 46 76 20 Fax +45 43 46 63 35 Programmeringseksempel

Læs mere

Testservice med anvendelse af Microsoft software.

Testservice med anvendelse af Microsoft software. Testservice med anvendelse af Microsoft software. Få offentlig nøgle fra installeret signeringscertifikat 1. Klik Start Kør på den pc eller server hvor signeringscertifikatet er installeret. 2. Skriv MMC

Læs mere

Vejledning. Opsætning af Trio Web Vers 2.0 feb. 2010

Vejledning. Opsætning af Trio Web Vers 2.0 feb. 2010 Opsætning af Trio Web Vers 2.0 feb. 2010 Indholdsfortegnelse Opsætning af Trio Web... 3 Generel opsætning af Trio Web... 3 Databaseopsætning... 3 DB... 3 Aar... 4 Login... 4 Internet... 4 Port... 4 Registreringsnøgle...

Læs mere

Én IT løsning, mange fordele AX TRAVEL. - fremtidens rejsebureauløsning

Én IT løsning, mange fordele AX TRAVEL. - fremtidens rejsebureauløsning Én IT løsning, mange fordele - fremtidens rejsebureauløsning Privatejet virksomhed Etableret i 1987 100 % danskejet Hovedkontor i Allerød og kontor i Århus +80 medarbejdere Solid og positiv økonomi gennem

Læs mere

Guide til, hvordan du tilføjer en GIPPLER- fane til din Facebook side

Guide til, hvordan du tilføjer en GIPPLER- fane til din Facebook side Guide til, hvordan du tilføjer en GIPPLER- fane til din Facebook side Bemærk! Vi bruger i denne guide både Facebook og en applikation på Facebook for, at lave din GIPPLER- fane. Vi kan af naturlige årsager

Læs mere

den rollebaserede brugergrænseflade

den rollebaserede brugergrænseflade WHITE PAPER Rollebaseret brugergrænseflade. Hvordan tilpasses profiler? Du er sikkert allerede bekendt med, hvordan brugergrænsefladerne i moderne ERP-systemer er opbygget, og hvordan de herved, danner

Læs mere

Brugervejledning til Design Manager Version 1.02

Brugervejledning til Design Manager Version 1.02 Brugervejledning til Design Manager Version 1.02 Indholdsfortegnelse 1. Introduktion... 3 1.1 Det kan du med HostedShop Design Manager... 3 1.2 Feature list... 3 2. Design... 4 3. Filer og CSS... 4 3.1

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

My booking. Generelt. Forsiden. Version 9.0

My booking. Generelt. Forsiden. Version 9.0 My booking Version 9.0 System til at lave online bookinger, med mulighed for opdeling i grupper, forskellige booking typer, ændre layout indstillinger, status styring, sprogvalg samt en del mere, detaljer

Læs mere

Manual til AVG Antivirus

Manual til AVG Antivirus Manual til AVG Antivirus Det anbefales, at alle brugere benytter sig af et antivirus-program. Formålet med programmet er at forhindre din computer i at blive smittet med virus. Virus-inficerede computere

Læs mere

DOtAB. Teknisk rapport

DOtAB. Teknisk rapport DOtAB Teknisk rapport Indholdsfortegnelse Introduktion... 1 Systemarkitektur... 1 Teknologier... 1 Platforme for mobile enheder... 1 Kommunikations interfacet... 2 Udviklingsmiljø... 2 IDOtAB (service

Læs mere

Tidsregistrering. Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4. Informationsteknologi B. Roskilde Tekniske Gymnasium 25-11-2014

Tidsregistrering. Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4. Informationsteknologi B. Roskilde Tekniske Gymnasium 25-11-2014 2014 Tidsregistrering Jacob E., Jacob H., Mathias, Mads H., Jonatan og Dan 3.4 Informationsteknologi B Roskilde Tekniske Gymnasium 25-11-2014 Indholdsfortegnelse 1 Indledning... 3 2 User stories... 3 3

Læs mere

Curriculum Vitae & Præsentation

Curriculum Vitae & Præsentation Jakobs C.V. Version 2011_01_26 Curriculum Vitae & Præsentation Navn Jakob Krarup (født 8. maj 1972) Bopæl Ringkøbingvej 44 9220 Aalborg Øst Kontaktoplysninger Telefon: 321 123 32 Mobil: 25 18 88 91 Mail:

Læs mere

Pronestor Room & Catering

Pronestor Room & Catering Pronestor Room & Catering Modul 2 Installation af tilkøbsmoduler Side 2.0 2.9 Bruger Import (AD integration) Side 2.1 2.4 o Service Accounts (hosted og on-premises) o Active Directory struktur o Installation

Læs mere

IT projekt uge 4 9. Marie Vinter, Roskilde Tekniske Gymnasium, klasse 2.6 IT, bw, uge 4 9 2013

IT projekt uge 4 9. Marie Vinter, Roskilde Tekniske Gymnasium, klasse 2.6 IT, bw, uge 4 9 2013 PHP-Projekt IT projekt uge 4 9 Marie Vinter, Roskilde Tekniske Gymnasium, klasse 2.6 IT, bw, uge 4 9 2013 4-3-2013 Indholdsfortegnelse Indledende afsnit... 2 Brainstorm... 2 User stories... 2 Problemformulering...

Læs mere

Programmeringseksempel til CX/IPC

Programmeringseksempel til CX/IPC APP-NOTE 610004 Beckhoff Application Note Date: 7/17/2009 Document Status: 1.1 Beckhoff Automation Aps Naverland 2, DK-2600 Glostrup Phone +45 43 46 76 20 Fax +45 43 46 63 35 Programmeringseksempel til

Læs mere

EVALUERING I SURVEYXACT TRIN FOR TRIN

EVALUERING I SURVEYXACT TRIN FOR TRIN EVALUERING I SURVEYXACT TRIN FOR TRIN LÆR AT TACKLE 2015 KOMITEEN FOR SUNDHEDSOPLYSNING 1 INDLEDNING Komiteen for Sundhedsoplysning stiller SurveyXact et internetbaseret redskab til kvalitetssikring til

Læs mere

LaserNet v6.6 Release Nyhedsbrev

LaserNet v6.6 Release Nyhedsbrev LaserNet v6.6 Release Nyhedsbrev NY Input Management-Løsning! Indhold: LaserNet v6.6 LaserNet Webinars NY LaserNet Input Management-løsning Nyt Produkt: LaserNet Client Nye Features & Functions Ny medarbejder

Læs mere

Sporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services

Sporbarhed og Rapportering i Quality Center. Kim Stenbo Nielsen NNIT Application Management Services Sporbarhed og Rapportering i Quality Center Kim Stenbo Nielsen NNIT Application Management Services Indhold INTRODUKTION Hvem er jeg Hvad vil jeg fortælle om QC std. rapporteringsfaciliteter EXCEL RAPPORTER

Læs mere

Supermarkedsmodellen for design af brugergrænseflade

Supermarkedsmodellen for design af brugergrænseflade Supermarkedsmodellen for design af brugergrænseflade Denne note er skrevet frit efter Peter Huber, som på et kursus i Efteruddannelsescenteret fortalte om supermarkedsmodellen til design af brugergrænseflader.

Læs mere

Kursuskatalog 2012 TwinCAT Basic og Extended

Kursuskatalog 2012 TwinCAT Basic og Extended Kursuskatalog 2012 TwinCAT Basic og Extended Basic Modul 1 Software Kursus K120101 K120102 K120103 K120104 K120105 K120106 Dato 31.1-1.2.12 6.-7.3.12 8.-9.5.12 21.-22.8.12 2.-3.10.12 20.-21.11.12 Modul

Læs mere

Kursuskatalog 2015 TwinCAT2 TwinCAT3

Kursuskatalog 2015 TwinCAT2 TwinCAT3 Kursuskatalog 2015 TwinCAT2 TwinCAT3 Kursusoversigt 2015 Modul 30 - Basic Kursus K153001 K153002 K153003 K153004 Dato 24.-25.02.15 12.-13.05.15 01.-02.09.15 10.-11.11.15 Modul 32 - OOP programmering Kursus

Læs mere

Zotero er et smart værktøj til at få styr på dine referencer og litteraturlister. Zotero er gratis og på dansk.

Zotero er et smart værktøj til at få styr på dine referencer og litteraturlister. Zotero er gratis og på dansk. 1 Indhold: Hvorfor Zotero?... 3 Installation... 3 Firefox... 3 Installation af Zotero... 3 Registrer dig som bruger af Zotero... 4 Zotero oversigt over programmet... 4 Tilføj referencer manuelt... 5 Eksempel

Læs mere

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows Vista

Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2. Windows Vista Installationsvejledning SAS Foundation 9.2 SAS Enterprise Guide 4.2 Windows Vista Oversigt Inden installationen... 3 Udpakning af softwaren... 4 Kopiér licensen ind... 6 Installationen... 7 Yderligere

Læs mere

Projekt i Programmering C Menu til hjemmeside.

Projekt i Programmering C Menu til hjemmeside. Projekt i Programmering C Menu til hjemmeside. 10-12-2004 Holstebro HTX Bent Arnoldsen Synopsis. Projektet her er en menu til hjemmesider, som er lavet så den er let at tilrette, når man tilføjer eller

Læs mere

Patient Database - Manual

Patient Database - Manual Patient Database - Manual Side 1 af 36 Adgang til systemet... 4 Glemt brugernavn og kode... 4 Opret projekt (kun System Administrator)... 6 Klik på NYT PROJEKT -knappen øverst til venstre.... 6 Udfyld

Læs mere

Ansat i FOA fagforening, hvor jeg bl.a. arbejder med integration og sagsbehandlingssystemer.

Ansat i FOA fagforening, hvor jeg bl.a. arbejder med integration og sagsbehandlingssystemer. 1/9 Firmapræsentation... 3 Martin Larsen... 3 Kontaktoplysninger... 3 Arbejdsform... 4 Hvad udfører vi?... 4 Forudsætninger... 4 Hvorfor gør vi det?... 4 Hvordan gør vi det?... 4 Hvad koster det?... 4

Læs mere

Læringsprogram. Talkonvertering. Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen. Klasse 2.4. 1.

Læringsprogram. Talkonvertering. Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen. Klasse 2.4. 1. Læringsprogram Talkonvertering Benjamin Andreas Olander Christiansen Niclas Larsen Jens Werner Nielsen Klasse 2.4 1. marts 2011 Fag: Vejleder: Skole: Informationsteknologi B Karl G. Bjarnason Roskilde

Læs mere

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database

Kursusbeskrivelse. Forarbejde. Oprettelse af en Access-database Kursusbeskrivelse Oprettelse af en Access-database Som eksempel på en Access-database oprettes en simpelt system til administration af kurser. Access-databasen skal indeholde: et instruktørkartotek et

Læs mere

Installation og ibrugtagning af Geomagic Alibre Vault

Installation og ibrugtagning af Geomagic Alibre Vault Karl Lausten Bright Ideas Tlf.:+45 98 62 28 37 Mejsevej 8 Email: klausten@bright-ideas.dk DK-9600 Aars www.bright-ideas.dk CVR 26 85 59 69 12.02.2014 Installation og ibrugtagning af Geomagic Alibre Vault

Læs mere

Brugervejledning. Hjemmesider med Cmsimple.

Brugervejledning. Hjemmesider med Cmsimple. 1af23 Brugervejledning. Hjemmesider med Cmsimple. 1. Forord. Denne brugervejledning er fremstillet for at hjælpe personer ved Lokalhistorisk Arkiver i ny Sønderborg kommune, som kun har ringe kendskab

Læs mere

BackEnd Programmering PHP

BackEnd Programmering PHP 17708 08/ 02/ 2013 BackEnd Programmering PHP Prototype (CMS system) 371615m02dka.sub.ots.dk/historyspot eller linket CMS system på: qrguide.mmd.eal.dk Login CMS Username: admin Password: 1234 Source kode

Læs mere

Daglig brug af JitBesked 2.0

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

Læs mere

Studieordning del 3-2014

Studieordning del 3-2014 Studieordning del 3-2014 Valgfag Datamatiker AP Graduate in Computer Science Version 1.1 Revideret august 2014 Side 0 af 6 del 3 Valgfag 1. Valgfrie uddannelseselementer...2 2. Valgfaget Android...2 3.

Læs mere

KIH Database. Systemdokumentation for KIH Databasen. 1. maj 2013. Side 1 af 13

KIH Database. Systemdokumentation for KIH Databasen. 1. maj 2013. Side 1 af 13 KIH Database Systemdokumentation for KIH Databasen 1. maj 2013 Side 1 af 13 Indholdsfortegnelse Indholdsfortegnelse... 2 Indledning... 3 Systemoverblik... 3 KIH Database applikationsserver... 5 Forudsætninger

Læs mere