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 MetaSaveID=@id"; List<FilterTextbox> TextboxList = new List<FilterTextbox>(); using (SqlDataReader reader = moddb.sqlreader(sql, new[] { moddb.makepar("@id", 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[] { moddb.makepar("@displayname", SqlDbType.VarChar, fl.displayname), moddb.makepar("@columnname", SqlDbType.VarChar, fl.columnname), moddb.makepar("@metasaveid", 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 FilterDateboxID=@id"; int temp = -1; temp = moddb.sqlint(sql, new[] { moddb.makepar("@id", 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[] { moddb.makepar("@id", 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 (strlist.contains("@" + item.columnname)) { list.add(moddb.makepar("@" + item.columnname + k, SqlDbType.VarChar, item.value1)); strlist.add("@" + item.columnname + k); } else { list.add(moddb.makepar("@" + item.columnname, SqlDbType.VarChar, item.value1)); strlist.add("@" + item.columnname); } break;... list.add(moddb.makepar("@op" + 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 += "(((@op" + i + " = 'BETWEEN') and ([" + DicAlias[item.ColumnName] + "]" + "." + item.columnname + " + item.columnname + i + " + item.columnname + i + "x" + "))"; str += " OR ((@op" + i + " = 'NOT BETWEEN') and ([" + DicAlias[item.ColumnName] + "]" + "." + item.columnname + " NOT + item.columnname + i + " + item.columnname + i + "x" + ")))"; } else { str += "(((@op" + i + " = 'BETWEEN') and ([" + item.columnname + "] + item.columnname + i + " + item.columnname + i + "x" + "))"; str += " OR ((@op" + 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 (@Value1,@Value2,@DisplayName,@ColumnName,@HasBoth,@MetaSaveID,@DataTypeID) 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 (@@IDENTITY) 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] jan 2010, 20:42 4. [On] 5. [On] 6. [On] 07:18, 10 March [On] 21:32, 11 March [On] 9. [On] feb 2010, 21: [On] mar 2010, 17: [On] mar 2010, 11: [On] feb 2010, 17: [On] aug 2009, 17: [On] [On] [On] [On] [On] lform.htm DTU Danmarks Tekniske Universitet s. 64

69 19. [On] 20. [On] 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

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

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

Læs mere

Introduktion til OPC Access

Introduktion til OPC Access Introduktion til OPC Access OPC Access anvendes til at kommunikere med jeres produktionsudstyr via OPC. OPC Access kombinerer en SQL Server med OPC, således at jeres produktionsudstyr kobles sammen med

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

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

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

Læs mere

ViKoSys. Virksomheds Kontakt System

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

Læs mere

02101 Indledende Programmering Introduktion til Eclipse

02101 Indledende Programmering Introduktion til Eclipse 02101 Indledende Programmering Introduktion til Eclipse Version 2018 1 Introduktion I dette kursus lægger vi op til at man bruger det integrerede udviklingsmiljø Eclipse. Basalt set er et integreret udviklingsmiljø

Læs mere

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

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

Læs mere

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

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

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

Læs mere

Hvorfor skal vi bruge objekt orienteret databaser?

Hvorfor skal vi bruge objekt orienteret databaser? OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal

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

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

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

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

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

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel: Denne guide er oprindeligt udgivet på Eksperten.dk SQL og ASP En artikel omkring simpel SQL og hvordan disse opbygges, udformes og udføres, sådan at man kan få et brugbart resultat i ASP. Dette ligefra

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

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Jan-juni 2016 Institution UCH/ Handelsskolen Uddannelse Fag og niveau Lærer(e) Hold EUX Business IT B Lars

Læs mere

UPLOAD. Af Database og Website til Skolens Server

UPLOAD. Af Database og Website til Skolens Server UPLOAD Af Database og Website til Skolens Server INDHOLDSFORTEGNELSE Fra projekt til server... 3 Overførsel af SQL Database... 3 Eksekvering af T SQL Script... 8 Modificering af Visual Studio Projekt...

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

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

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

Læs mere

Dannelse af PDF-dokumenter

Dannelse af PDF-dokumenter Dannelse af PDF-dokumenter Indhold Generere PDF-dokumenter... 2 Håndtering af PDF-dokumentet... 8 Hvordan indsætter man sidetal i PDF-dokumentet?... 8 Hvordan laver man bookmarks i PDF-dokumentet?... 8

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

Indholdsfortegnelse for kapitel 3

Indholdsfortegnelse for kapitel 3 Indholdsfortegnelse for kapitel 3 Kapitel 3 Design............................................................ 2 Database........................................................... 3 ER-diagram.................................................

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

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø

EG Data Inform. Byggebasen. WCF og webservices. Jens Karsø EG Data Inform Byggebasen WCF og webservices Jens Karsø 10 Indholdsfortegnelse Byggebasen Services indledning... 2 Målsætning... 2 Valg af teknologier... 3 Kommunikationsmodel for byggebasen... 3 Services.byggebasen.dk...

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

Installation og Drift. Aplanner for Windows Systemer Version 8.15.12

Installation og Drift. Aplanner for Windows Systemer Version 8.15.12 Installation og Drift Aplanner for Windows Systemer Version 8.15.12 Aplanner for Windows løsninger Anbefalet driftsopsætning Cloud løsning med database hos PlanAHead Alle brugere, der administrer vagtplaner

Læs mere

Installationsguide til SAP Business One 2005 SP1 (SBO 2005)

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

Læs mere

OrCAD Capture TCL IDE med Eclipse

OrCAD Capture TCL IDE med Eclipse OrCAD Capture TCL IDE med Eclipse OrCAD Capture TCL er et script sprog til at lave applikationer til OrCAD Capture. Eclipse er et gratis udviklingsmiljø med debug muligheder. Denne guide hjælper med at

Læs mere

BOULEVARDEN 19E 7100 VEJLE LERSØ PARKALLE KØBENHAVN Ø TLF Webservices Installationsvejledning

BOULEVARDEN 19E 7100 VEJLE LERSØ PARKALLE KØBENHAVN Ø TLF Webservices Installationsvejledning BOULEVARDEN 19E 7100 VEJLE LERSØ PARKALLE 101 2100 KØBENHAVN Ø TLF. 76 42 11 00 WWW.UNIK.DK Webservices Installationsvejledning Indholdsfortegnelse Indholdsfortegnelse... 1 Formål... 2 Nyt fra version

Læs mere

5 ARBEJDE MED EDITOREN

5 ARBEJDE MED EDITOREN 5 ARBEJDE MED EDITOREN Editor (eller Rich Tekst Editor) er et indbygget indholdsredigerings værktøj, hvor man uden nogen kendskab til HTML kodning kan skrive tekst, indsætte billeder, videoer og links.

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

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

Læs mere

Arkitektur for begyndere

Arkitektur for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle

Læs mere

Online billede filtrering

Online billede filtrering Online billede filtrering Eksamensprojekt 2014 Andreas Lorentzen, klasse 3.4 Roskilde Tekniske Gymnasium Programmering C 09-05-2014 I dette projekt vil jeg demonstrerer en af de mange ting moderne browsere

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

Web-baseret metadata redigeringsmodul

Web-baseret metadata redigeringsmodul Kravspecifikation Geodata Danmark Geodatacentret I/S Energivej 3 4180 Sorø Tlf. 5786 0400 Fax. 5786 0414 GIS Danmark A/S Birkemosevej 7 6000 Kolding Tlf. 7399 1100 Fax. 7399 11199 Web www.geodata.dk Web-baseret

Læs mere

HTX, RTG. Rumlige Figurer. Matematik og programmering

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

Læs mere

Interaktionsudvikling

Interaktionsudvikling Projektopgave 3: Interaktionsudvikling CPH business, klasse: MulA2013 Projektansvarlige undervisere Thomas Hartmann MereteGeldermann lützen: Projekt produkt url: www.amalieardahl.dk/projekt3/index.html

Læs mere

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET.

Parameters. Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Denne guide er oprindeligt udgivet på Eksperten.dk Parameters Denne artikel beskriver hvorfor parameters er gode. Den forudsætter lidt kendskab til C# og ADO.NET. Der findes en tilsvarende artikel med

Læs mere

GeoGIS2020. Installation. Udkast. Revision: 1 Udarbejdet af: BrS Dato: Kontrolleret af: Status: Løbende Reference: Godkendt af:

GeoGIS2020. Installation. Udkast. Revision: 1 Udarbejdet af: BrS Dato: Kontrolleret af: Status: Løbende Reference: Godkendt af: GeoGIS2020 Installation Udkast Revision: 1 Udarbejdet af: BrS Dato: 2015.08.31 Kontrolleret af: Status: Løbende Reference: Godkendt af: 1. GENERELT Side 2 af 16 Side 3 af 16 2. DOWNLOAD OG INSTALLATION

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

Dannelse af PDF dokumenter

Dannelse af PDF dokumenter Dannelse af PDF dokumenter Indhold Dannelse af PDF-dokumenter i Phd Planner... 2 Valg af vedhæftninger i PDF dokumentet... 2 Valg af skabelon for PDF dokumentet... 3 Når PDF filen er dannet... 5 Gem PDF

Læs mere

3. PROJEKT, 2 SEMESTER

3. PROJEKT, 2 SEMESTER 3. PROJEKT, 2 SEMESTER Bruger undersøgelse, af sociale medie. KENDSKAB TIL OG BRUG AF ONLINE SOCIALE MEDIER FORENINGEN AF DANSKE INTERAKTIVE MEDIER, FÅET TIL OPGAVE AT AFDÆKKE DANSKERNES BRUG AF SOCIALE

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 CS6, og programmet er på engelsk. Dreamweaver er en såkaldt grafisk editor,

Læs mere

FairSSL Fair priser fair support

FairSSL Fair priser fair support Small Business Server 2003 Certifikat administration Følgende vejledning beskriver hvordan man vælger hvilke adresser der skal være i ens SBS 2003 SSL certifikat. For support og hjælp til anvendelsen af

Læs mere

Velkommen til den nye og forbedrede Dynamicweb 9

Velkommen til den nye og forbedrede Dynamicweb 9 Velkommen til den nye og forbedrede Dynamicweb 9 Effektive kundeoplevelser på tværs af alle kanaler med én integreret platform. Én platform dækker (alle) dine digitale behov Med Dynamicweb 9 får du adgang

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

DM507 Algoritmer og datastrukturer

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

Læs mere

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

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

Læs mere

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

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

Læs mere

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 På datalogi har vi en databaseserver, som de studerende på datalogi kan benytte til projekter og som også benyttes i forbindelse

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

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

Indholdsfortegnelse for kapitel 1

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

Læs mere

Brugermenuer og brugerdefinerede formularer

Brugermenuer og brugerdefinerede formularer Brugermenuer og brugerdefinerede formularer Fokus i denne workshop er brugerstyring og brugervenlighed. I del 1 skal vi lave menuer med egne lag ved hjælp af et plugin. Med denne funktionalitet kan man

Læs mere

DATABASE - MIN MUSIKSAMLING

DATABASE - MIN MUSIKSAMLING DATABASE - MIN MUSIKSAMLING I dette forløb skulle vi lære om databaser, som bruger sproget SQL. SQL står for Structured Query Language. Det bruges til at vise og manipulere data, gemt i en database. I

Læs mere

En Kort Introduktion til Oracle

En Kort Introduktion til Oracle En Kort Introduktion til Oracle Henrik Bulskov 12. februar 2001 bulskov@ruc.dk 1 Start SQL*Plus... 1 1.1 TELNET... 1 1.2 WINDOWS SQL PLUS... 2 2 Kør et SQL-script... 3 3 Hjælp i SQL*Plus... 3 4 Editering

Læs mere

2. Systemarkitektur... 2

2. Systemarkitektur... 2 Indholdsfortegnelse 2. Systemarkitektur... 2 2.1 Præsentationsserverarkitektur... 3 2.2 Applikationsserverarkitektur... 7 Version 7.0 Side 1 af 7 5. Systemarkitektur Arkitekturen for Nyt BBR bygger på

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

Delphi og Databaser for begyndere

Delphi og Databaser for begyndere Denne guide er oprindeligt udgivet på Eksperten.dk Delphi og Databaser for begyndere Denne artikel handler om hvordan man udnytter noget af det bedste i Delphi: Dets gode muligheder for integrering med

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

Kursuskatalog 2017 TwinCAT 2 TwinCAT 3

Kursuskatalog 2017 TwinCAT 2 TwinCAT 3 Kursuskatalog 2017 TwinCAT 2 TwinCAT 3 Kursusoversigt 2017 Modul 30 - TC 3 Basic Kursus K173001 K173002 K173003 K173004 Dato 21.-22.02.17 02.-03.05.17 22.-23.08.17 07.-08.11.17 Modul 31 - TC 3 EtherCAT

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

MSI pakke til distribution af AutoPilot komponenter.

MSI pakke til distribution af AutoPilot komponenter. MSI pakke til distribution af AutoPilot komponenter. Hermed følger en basal dokumentation for installation af AutoPilot msi pakken. Der vil i det følgende blive forklaret brugen af 4 programmer fra Microsoft,

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

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

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

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

Læs mere

XML Difftool brugervejledning

XML Difftool brugervejledning XML Difftool brugervejledning UNI C maj 2007 XML Difftool brugervejledning UNI C Maj 2007 Af UNI C Indhold 1 Kort om XML Difftool og Import... 1 1.1 XML Difftool... 1 1.2 Opbygning af XML import fil...

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

Undervisningsbeskrivelse

Undervisningsbeskrivelse Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Aug 2016 - juni 2017 Institution UCH/ Handelsskolen Uddannelse Fag og niveau Lærer(e) EUX Business IT B Lars

Læs mere

Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX

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

Læs mere

Visualiseringsprogram

Visualiseringsprogram Visualiseringsprogram Programmering C - eksamensopgave Rami Kaddoura og Martin Schmidt Klasse: 3.4 Vejleder: Karl Bjarnason Roskilde Tekniske Gymnasium Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-12

Læs mere

Vejledning til opbygning af hjemmesider

Vejledning til opbygning af hjemmesider Side 1 af 9 Vejledning til opbygning af hjemmesider Hvis du er inde på din klubs hjemmeside, fx på forsiden, kan du nu gå i gang med at redigere. For at få redigeringsværktøjet frem, skal du klikke på

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

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

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

Læs mere

Manual til administration af online booking

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

Læs mere

OIS - Applikationskatalog

OIS - Applikationskatalog OIS - Applikationskatalog OIS arkitekturprodukter 25. januar 2018 Indledning Dokumentationen omkring OIS er struktureret med inspiration fra OIO Arkitekturguidens arkitekturreol, således at arkitekturprodukterne

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

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0 vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0 Indholdsfortegnelse 1 Indledning... 3 2 WMS generelt... 3 3 WFS generelt... 4 4 WMS/WFS eksterne kald i forskellige formater... 4 5

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

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

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

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

TeamShare 3.0 Forbedringer til TeamShare Outlook

TeamShare 3.0 Forbedringer til TeamShare Outlook TeamShare 3.0 Forbedringer til TeamShare Outlook Kære TeamShare bruger, I min løbende orientering om alle de nye ting der kommer i TeamShare 3.0, vil jeg her give en beskrivelse af de forbedringer vi laver

Læs mere

Manual til Kundekartotek

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

Læs mere

Michael Jokil 11-05-2012

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

Læs mere

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

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

Nyt i SkoleIntra 5.10

Nyt i SkoleIntra 5.10 Nyt i SkoleIntra 5.10 Sidst ændret den 13 10 2015 Ny loginside Med SkoleIntra 5.10 introduceres et nyt fælles login, som giver single sign on mellem det nye SkoleIntra, det klassiske SkoleIntra og itslearnings

Læs mere

SYSTEMDOKUMENTATION AF POC

SYSTEMDOKUMENTATION AF POC DIGITALISERINGSSTYRELSEN POC PÅ ORKESTRERINGSKOMPONENTEN SYSTEMDOKUMENTATION AF POC Version: 1.1 Status: Endelig Godkender: Forfatter: Copyright 2019 Netcompany. All rights reserved Dokumenthistorik Version

Læs mere

Brugervejledning til databrowseren

Brugervejledning til databrowseren Brugervejledning til databrowseren Indholdsfortegnelse Indledning...2 Hvordan tilgås browseren og api et...2 Databrowseren...2 Søgning...2 Visning...4 Features i listevisningen...4 Detaljeret visning...5

Læs mere