1(23) Datum Examensarbete C-nivå 10 p Mälardalens Högskola Västerås 2003-12-15 Institutionen för Datateknik Examensarbete i Datateknik, C-nivå Handledare (Idt): Filip Sebek Handledare (företag): Mohammed El Shobaki TIDRAPPORTERINGSSYSTEM Ulf Carlsson 6701218-7011 [email protected] Martin Warholm 790710-0494 [email protected] 2003-12-15 2(23) Examensarbete C-nivå 10 p Datum 2003-12-15 SAMMANFATTNING Denna rapport beskriver ett examensarbete i ämnet datateknik vid Mälardalens högskola i Västerås. Resultatet är en webbapplikation för tidrapportering som är utvecklad för Shobaki System Solutions HB och är anpassad för anställda på högskolan. Tidrapporteringssystemet bygger på klient-server arkitektur med en MYSQL databas som hanterar ’obegränsat ’antal användare. Inrapportering sker via webbläsare och möjlighet finns även att göra dessa när datorn ej är uppkopplad mot internet. Rapporten ger inledningsvis en presentation av liknande produkter som finns på marknaden. Vidare beskrivs applikationen som gjorts, relevant teori inom de tekniker som använts (såsom databaser, utvecklingsmiljö, skriptspråket PHP och cookies). En analys av resultatet tas upp och vidare beskrivs hur designen av databasen lades upp för att få en så stabil och robust produkt som möjligt. 3(23) Examensarbete C-nivå 10 p Datum 2003-12-15 Förord Merparten av examensarbetet utfördes sommaren 2002 men slutfördes helt under höstterminen 2003. Vi vill tacka vår handledare, Mohhamed El Shobaki, för synpunkter och råd angående design och databaser. Dessutom vill vi tacka vår handledare på Idt, Filip Sebek, för synpunkter på rapporten. 4(23) 2003-12-15 Datum Examensarbete C-nivå 10 p Innehåll 1 Bakgrund ............................................................................................................. 6 1.1 Syfte ........................................................................................................... 6 1.2 Andra Produkter....................................................................................... 6 1.3 2 1.2.1 Beskrivning av Artologik TM:s produkt TIME 6 1.2.2 Hur används TIME av företag och organisationer ................................ 1.2.3 Olika roller i TIME 7 1.2.4 Fördelar med TIME 8 1.2.5 Nackdelar med TIME 8 Vår Webbapplikaton för tidrapportering .............................................. 8 1.3.1 Uppbyggnad 8 1.3.2 Tidrapportering 8 1.3.3 Rapporter 9 1.3.4 Administration 9 1.3.4.1 9 Befogenheter Relevant Teori .................................................................................................... 9 2.1 Databas ..................................................................................................... 9 2.1.1 Förklaring 2.1.2 Fördelar med att använda en databas 10 2.1.3 Databashanteringssystem , DBMS 10 2.1.4 Relationsdatabas 2.1.5 2.2 2.3 10 11 2.1.4.1 Fördelar med relationsdatabas 2.1.4.2 Primärnyckelfält Klient/server arkitektur 11 11 12 Utvecklingsmiljö ................................................................................... 12 2.2.1 Plattform 12 2.2.2 LAMP-plattformen 12 2.2.3 PHP 13 2.2.4 MySQL 13 Cookie ..................................................................................................... 13 2.3.2 Introduktion till cookies. 13 5(23) Datum Examensarbete C-nivå 10 p 3 2003-12-15 2.3.2 Session cookie 14 2.3.3 Var finns en cookie? 14 2.3.4 Var sparas en cookie? 14 2.3.5 Vad innehåller en cookie? 14 Problembeskrivning ........................................................................................ 15 3.1 Avgränsning .......................................................................................... 15 3.1.2 Tidsplanering 15 3.1.3 Specifikation 15 3.1.3.1 Tidrapportering 15 3.1.3.2 Användarklasser 15 3.1.3.3 Användarinställningar 16 3.1.3.4 Tidrapporter 3.1.3.5 Systemkonfiguration (endast admin) 3.1.3.6 Offline tidrapportering 16 3.1.3.7 Användarkonfiguration (endast admin) 16 16 16 4 Problemanalys .................................................................................................. 17 5 Modell/Metod ................................................................................................... 17 6 Lösning............................................................................................................... 17 7 Resultat .............................................................................................................. 18 7.1 Analys av resultat ................................................................................... 18 7.2 Design av databas .................................................................................. 18 7.2.1 Datamodellering 19 7.3 Implementation ....................................................................................... 19 7.4 Testning ................................................................................................... 19 7.5 Framtida arbete...................................................................................... 19 8 Summering och slutsatser ............................................................................ 20 9 Referenser ......................................................................................................... 21 10 Billagor............................................................................................................... 22 6(23) Examensarbete C-nivå 10 p Datum 2003-12-15 Inledning Examensarbetets syfte var att ta fram ett webbaserat, databasdrivet tidrapporteringssystem . I systemet ska användaren kunna rapportera tid för olika arbetsuppgifter under dagen. Systemet ska även kunna skapa rapporter. 1 Bakgrund I dagens moderna IT-samhälle har den traditionella stämpelklockan eller pappersbaserad tidsredovisning blivit en allt mer föråldrad lösning för många yrkesgrupper. Flexibla arbetsmiljöer, arbetstider, distansarbete och arbete i olika projekt är några faktorer som gör dessa lösningar otillräckliga. 1.1 Syfte Personalen på IDT har i flera år rapporterat tid i ett formulär gjort i excel. Syftet med examensarbetet var att konstruera ett system för tidrapportering. Detta skall vara användarvänligt och framför allt webbaserat. Det skall hantera obegränsat antal användare och rapportera tid för flera projekt i olika projektkategorier. All information skall lagras i en databas. I uppgiften ingår det att utveckla och implementera datamodellen för systemet samt ta fram ett användarvänligt gränssnitt för klienten på en valfri plattform. 1.2 Andra Produkter För att få en jämförelse mellan vilka produkter som redan finns på marknaden gjordes en undersökning. Med Internet kommer nya möjligheter att kommunicera och interagera. Detta skapar utrymme för en rad nya produktidéer. Utifrån detta resonemang har ArtologikTM skapats och utvecklats. Just enkelheten är Artologiks motto. Artologik TM är en produktserie med webbaserade program som är skapade för dess enkla hanterbarhet. Med Artologik TM kan en webbansvarig skapa interaktivitet på webben utan kunskap om tekniken. Artologiks webbplats är plattformen för distributionen av programmen. Artologik TM lägger ner stor vikt vid att skapa enkelhet för användaren utan att för den skull vara utan avancerade funktioner. Produkterna är från början tekniskt förberedda för flera olika språk genom att all information ligger i databasen. Deras mål är att etablera sig på den globala marknaden. 1.2.1 Beskrivning av Artologik TM:s produkt TIME Citat från Artologiks hemsida: ”Har du svårt att få dina medarbetare att registrera sin tid? Får du sitta i efterhand och försöka komma ihåg vad du gjort? Anledningen är troligen att du använder dig av ett klumpigt och svårhanterligt system. Det finns ett enkelt sätt registrera tid. TIME har inga krångliga funktioner och är mycket lätt att lära sig. Med nya TIME 2.0 blir tidrapporteringen en rutin som alla snabbt kan lära sig att använda och uppskatta. 7(23) Examensarbete C-nivå 10 p Datum 2003-12-15 Bland nyheterna: Du kan ta ut rapporter hur du vill med nya rapportgeneratorn. Uppgifter för lön kan exporteras direkt till ditt löneprogram. Tid registreras direkt på webben, nu även med tidkoder för övertid, sjukfrånvaro etc. De som rapporterar i systemet kan alltså vara geografiskt skilda både i tid och rum. Med TIME får du en snabb överblick över hur mycket tid som lagts ner i aktuella projekt. Med TIME kan du som projektledare enkelt se vem som jobbat med vad och när. Uppgifterna kan bilda underlag till offerter, fakturor och löneberäkningar mm”. (Slut citat). 1.2.2 Hur används TIME av företag och organisationer TIME kan användas på olika sätt av organisationer och företag. Programmet passar även små företag, med några anställda, men även stora företag med tusentals anställda. Programmet kan användas för rapportering på löpande projekt, eller på fördefinierade projekt. 1.2.3 Olika roller i TIME Det finns tre olika roller i TIME. Rollerna är projektdeltagare, projektledare och administratör. Projektdeltagaren: • • • • • Håller koll på egna arbetsuppgifter Rapporterar tid Tar fram månadsrapport Söker projekt, kunder och projektdeltagare Registrerar semester och frånvaro Projektledaren: • • • • • Lägger upp projekt och administrerar aktiviteter Följer projektdeltagarnas tidrapportering Förändrar budgeten för projekten Följer rapporterna Tar fram löneunderlag, registreringsrapport samt faktureringsunderlag Administratör: • Hantera alla uppgifter om användare, kunder, leverantörer, projekt, varor/tjänster, aktiviteter samt den egna organisationen. • Lägger in nya användare, kunder och leverantörer • Lägger in nya projekt. • Ser förbrukad tid för de olika projekten • Lägger in nya Varor/tjänster för ett projekt. • Lägger in uppgifter om den egna organisationen • Lägger in kontonummer och resultatenheter för bokföringen. 8(23) Examensarbete C-nivå 10 p Datum 2003-12-15 1.2.4 Fördelar med TIME • • • • Organisationen kan delas in i resultatenheter och användargrupper. Underlag till fakturering och beräkning av offerter kan skapas. Användaren kan lägga in en egen logo på fakturan. Löneberäkningar kan skapas med export direkt till användarens löneprogram. Flerspråkighet. Språket kan bytas utan att informationen behöver ändras. Användaren kan arbeta med samma dokument i olika språk. Ovanstående flerspråkighet ser vi som en stor fördel. 1.2.5 Nackdelar med TIME Det står ingenstans i dokumentation av TIME att den klarar offline rapportering vilket vi ser som en nackdel. 1.3 Vår Webbapplikaton för tidrapportering 1.3.1 Uppbyggnad Produkten består huvudsakligen av tre olika delar: • • • Tidrapportering Rapporter Administration 1.3.2 Tidrapportering • Rapportera tid: Användaren väljer kategori, eventuellt projekt och specifikation samt skriver in antalet timmar. • Rapportera period: Användaren väljer kategori, eventuellt projekt och specifikation samt väljer mellan vilka datum perioden varar. Tid rapporteras endast in på vardagar, ej lördagar och söndagar samt dagar som registrerats som ledighetsdagar i systemet. • Stämpla in / stämpla ut: Användaren väljer kategori, eventuellt projekt och specifikation samt stämplar in. Ett speciellt lunchavdrag kan definieras och detta dras av automatiskt om användaren är instämplad mellan kl.12 och 13. Om användaren ej stämplat ut innan midnatt antar systemet att man glömt att stämpla ut och registrerar 8 timmar i systemet. 9(23) Examensarbete C-nivå 10 p Datum 2003-12-15 1.3.3 Rapporter Det finns möjlighet att se tre rapporter för inrapporterad tid: månadsrapport, årsrapport samt grupprapport. I månadsrapporten räknas summan ihop för de kategorier - projekt -specifikationer som gjorts den månaden. Det finns tre olika detaljnivåer på månadsrapporten: • Kategorier • Kategorier - projekt • Kategorier - projekt - specifikation I grupprapporten, som endast superuser och admin kan läsa, summeras tiderna som personerna i olika grupper lagt ner på olika projekt för respektive grupp. 1.3.4 Administration I vårt system finns tre olika befogenheter i likhet med Artologiks TIME, user, superuser och admin. Dock skiljer sig befogenheterna mellan systemen något. 1.3.4.1 Befogenheter User: • Rapportera in tid och modifiera/ta bort dessa ur systemet. Vidare kan man se månads- och årsrapport samt modifiera egna projekt/specifikationer. Superuser: • Som user men kan dessutom modifiera grupper samt se grupprapporter. Admin: • Som superuser men kan dessutom modifiera kategorier, användare, behörighet mm 2 Relevant Teori 2.1 Databas 10(23) Examensarbete C-nivå 10 p Datum 2003-12-15 2.1.1 Förklaring En databas kan sammanfattas som en förvaringsplats för ordnat samlat data av olika slag. Dessa data hör ihop på något sätt. Användaren ska enkelt och snabbt kunna plocka fram och även lägga till nytt data. En databas är ’bestående’, dvs. data försvinner inte när programmet avslutas och strömmen slås av. Användargränssnittet för tidrapporteringen är frikopplad från den centrala databasen, d.v.s. klient server arkitektur. Servern är huvuddelen av systemet och det är den som hanterar databasen. Klienten är den del som användaren använder sig av för att kommunicera med servern. 2.1.2 Fördelar med att använda en databas • • • • • • Snabbhet Det går betydligt snabbare att söka i en databas än i en vanlig fil. Enkelhet Det är enklare att lägga till, ta bort och manipulera data i en databas än i en vanlig fil. En databas hanterar också automatiskt den problematik som uppstår när flera användare vill komma åt samma data samtidigt. Flexibilitet En databas är mycket mer flexibel än en fil. Det går att lagra både binär- och textdata i en och samma databas. Skalbarhet Det är enkelt att bygga ut systemet. Vid behov av att databasen skall klara av hög belastning kan denna läggas ut på flera servrar. Distribuerbarhet Eftersom de flesta databashanteringssystem är utvecklade enligt klient/server-arkitektur finns möjlighet att hantera databaser från vilken värddator som helst. Säkerhet Det är enklare att skydda lagrad data i en databas i jämförelse med en fil. En databas är skyddad med ett användarnamn och lösenord. Innehållet kan även krypteras med olika metoder för att uppnå hög säkerhet. Databasen kan också ligga på en speciellt skyddad server. De flesta större moderna webbsidor är idag drivna av databaser. De lagrar innehållet till webbsidan i en databas. Det gör dem enklare att utveckla och underhålla. 2.1.3 Databashanteringssystem , DBMS Mellan databasen och användaren finns ett mjukvarulager som kallas databashanterare eller databashanteringssystem (DBMS). Detta hanterar all begäran om access till databasen. En generell funktion som den tillhandahåller är att skydda användarna från hårdvarunivån. Det är också vanligt att en databashanterare innehåller verktyg för att bygga applikationer. En applikation är kombinationen av formulär, rapporter och frågor som ger gränssnittet mot användaren. Fördelen med att använda databashanterare är att det är kraftfullt då komplicerade uppgifter kan utföras på ett enkelt och flexibelt sätt. Några kända exempel på databashanterare är Oracle, Microsoft Access, 11(23) Examensarbete C-nivå 10 p Datum 2003-12-15 MySQL, Microsoft SQL Server. Några vanliga typer av databashanteringssystem är: relationsdatabas, objektorienterad databas och objektrelationsdatabas. 2.1.4 Relationsdatabas En relationsdatabas lagrar data i tabeller med namngivna kolumner. Data lagras inte på samma sätt som de kommer att användas. De sammanställs och visas på olika sätt. Med hjälp av namnen på kolumnerna går det att skapa relationer mellan olika tabeller. Relationerna används till att hitta kopplad information som lagrats mellan dessa. En DBMS som hanterar relationsdatabaser får tillägget R för relational och blir alltså RDBMS. Relationsdatabaser har utvecklats sen många år tillbaka och har fått en stor spridning. Idag är därför relationsdatabaser helt dominerande. Det finns tre olika typer av relationer mellan tabeller • 1:1 relation ( en till en ) • 1:n relation ( en till många ) • n:n relation ( många till många ) 2.1.4.1 Fördelar med relationsdatabas Snabbt och enkelt söka upp och ställa samman information som lagras i separata tabeller. 2.1.4.2 Primärnyckelfält För att kunna sammanställa information som lagras i flera separata tabeller måste tabellerna innehålla ett fält eller en uppsättning av fält som unikt identifierar de enskilda raderna eller posterna i tabellen. Det är ofta ett unikt ID-nummer. I databasterminologin kallas denna information för tabellens primärnyckel. Tre viktiga saker att tänka på vid skapande av primärnyckelfält: • • • Det får inte förekomma duplicerade värden i ett primärnyckelfält. Av denna anledning väljs förslagsvis inte en persons efternamn. Primärnycklarna används vid sökande i databasen. Detta bör då inte vara för långt. Primärnyckelns storlek påverkar också söktiden i databasen. Ju mindre storlek som används för fältvärdena desto snabbare utförs operationerna Om det av någon anledning inte går att hitta en unik identifierare för tabellen, kan ett fält som numrerar posterna i löpande ordning användas. 12(23) Datum Examensarbete C-nivå 10 p 2003-12-15 2.1.5 Klient/server arkitektur Data bas HTTP Klient (webbläsare) Webbserver (databas) Klienten är programmet som frågar servern om något, t.ex. ”skicka en webbsida”. Det är alltid den som tar initiativ för överföringen som kallas klient. Servern är den del som utför det klienten begär. Det spelar ingen roll åt vilket håll data skickas. Klient/server- metoden används endast på applikationsskiktet. HTTP är en förkortning för Hypertext Transfer Protocol. Det protokollet används på Internet för att skicka hypertext, d.v.s. webbsidor. HTTP är protokollet som hanterar datat som skickas mellan en webbklient och en webbserver. 2.2 Utvecklingsmiljö 2.2.1 Plattform Vanligen brukar begreppet plattform vara synonymt med operativsystem. Men ibland inkluderar begreppet också de program som körs i operativsystemet och vilken hårdvara mjukvaran körs på. När vi i denna rapport skriver om plattform menas operativsystem och webbserver tillsammans. Denna definition görs eftersom det språk som använts mest i detta arbete, d.v.s. PHP (se 2.2.4), är hårt kopplat till en webbserver. Det är så att PHP körs som en modul till webbservern och är då en del av webbservern, istället för ett fristående program. De personer som har utvecklat PHP har försökt att göra kopplingen till operativsystemet så löst som möjligt. Det har varit en bidragande faktor till att PHP i princip går att köra på vilket operativsystem som helst. 2.2.2 LAMP-plattformen LAMP-plattformen använder sig av webbservern Apache och är vanligaste plattformen att köra PHP på. I detta arbete användes Red Hat Linux som serverplattform. Det är en förkortning för Linux, Apache, MySQL, PHP. Dessa mjukvaror tillsammans har bildat en webbplattform som blir allt mer använd. 13(23) Examensarbete C-nivå 10 p Datum 2003-12-15 Apache är världens mest använda webbserver och finns till de flesta operativsystemen. Samma utvecklare har även konstruerat programmeringsspråket PHP som också funkar bäst under Apache och Linux. Främst körs Apache i Linux/Unix men det finns distributioner för Windows. 2.2.3 PHP PHP är ett mycket bra programmeringsspråk för att hantera databaser. Det är ett relativt enkelt, men ändå kraftfullt språk. Syntaxen har stora likheter med språket C. Det krävs att en webbserver är installerad för att koden ska kunna tolkas. Servern gör om det till HTML kod, som den egna webbläsaren förstår. Med hjälp av PHP sker kommunikationen med enkla funktioner mot ett stort antal databaser. Det är det språket som har det största stödet för databaser. Dessutom har det stöd för ODBC, vilket ett flertal databaser använder idag. Det har också inbyggt stöd för databasen MySQL, och just kombinationen mellan dessa är både lättanvänd och kraftfull. Det har uppmärksammats i detta arbete. Ända sedan PHP släpptes på marknaden har den distribuerats som öppen källkod. Med det menas att vem som helst får ladda ner koden från Internet, använda och modifiera den och sprida den vidare utan att det kostar något. Mycket tack vare det så jobbar en del programmerare ideellt med att utveckla den öppna källkoden. Med den hjälpen kommer det ständigt nya uppdateringar och buggfixar. 2.2.4 MySQL MySQL är ett relationsdatabashanteringssystem. Det är väldigt snabbt, pålitligt och lätt att använda, och kan användas tillsammans med nästan alla programmeringsspråk. För att komma åt data i databaserna använder sig MySQL av SQL (Structured Query Language) som är det vanligaste standardiserade språket för detta ändamål. En stor nackdel med MySQL är att det i sin nuvarande version saknar många viktiga funktioner som triggers, vyer, transaktionshantering och sub-selects. 2.3 Cookie I detta arbete har det använts en hel del cookies för en del formulär. För den ovane vid detta begrepp kommer här en liten introduktion. 2.3.2 Introduktion till cookies. Cookies är en teknik för att på klientens dator spara en del information, så att datorn minns denna nästa gång en användare kommer till samma sida. Tillämpningarna kan vara många, men generellt sett så används en cookie för mellanlagring av data, för att kunna flytta över information från en sida till en annan. 14(23) Examensarbete C-nivå 10 p Datum 2003-12-15 2.3.2 Session cookie Det är en cookie som bara används under ett besök på en webbplats. Om den innehåller data från inloggningssidan på en lösenordsskyddad webbplats, kommer användaren kunna surfa på sidorna utan att behöva mata in namn och lösenord på nytt. 2.3.3 Var finns en cookie? En cookie kan vara helt klientbaserad. Den sparas och hanteras helt av script på webbsidorna, som körs i webbläsaren. Ingen information för hanteringen behöver då skickas över nätet. Cookien sparas på klientdatorns hårddisk, så att den kan hämtas, nästa gång den behövs. Från början var det tänkt att cookies endast skulle hanteras på detta sätt, då fördelen är att man slipper skicka något över nätet. Detta kan dels gå snabbare och i vissa fall även vara säkrare. Många gånger är dock cookien serverbaserad. På klientdatorn har det då sparats ett id-nummer, som är en referens till en databas på serverdatorn. Då cookien ska hämtas används id-numret för att hämta info ur databasen. Nackdelen med detta är att det blir mer kommunikation över nätet och att användaren kan känna sig utlämnad, då information om denne sparas på en annan server någonstans i världen. Fördelen, för den som skapat webbsidan, är då det motsatta, d.v.s. att man kan samla information om användaren. Det kan vara att användaren fyller i formulär på olika sidor. Detta samlas ihop i en cookie, som sedan hämtas av ett serverbaserat program, istället för att formulärets innehåll skickas till programmet. 2.3.4 Var sparas en cookie? En cookie sparas i en s.k. cookiefil som ligger tillsammans med programinställningarna för webbläsaren. Exakt hur det ser ut, beror på vilken webbläsare det är och i vilket operativsystem den körs. Varje cookie får ett upphörandedatum när den skapas. I annat fall skulle snabbt cookiefilen bli alltför stor. Man bör inte sätta detta datum längre än vad som kan tänkas vara rimligt, vilket kan bero på hur ofta en användare kan tänkas besöka sidan med cookien och hur pass intressant det är att spara info från förra besöket. En del cookies används endast tillfälligt under en session (t.ex. för mellanlagring mellan två sidor) och de upphör så fort webbläsaren avslutas. Då går webbläsaren igenom hela cookiefilen och kontrollerar upphörandedatum, för att se vilka cookies som ska finnas kvar och vilka som ska rensas ut. 2.3.5 Vad innehåller en cookie? En cookie kan endast utnyttjas av den sida eller domän som skapat den. Därför finns sidans domän (domain) med i cookiefilen. Det går också att begränsa den, så att den endast kan utnyttjas av en bestämd katalog eller sida i domänen. Detta görs genom att ange en sökväg (path), som är tom om ingen begränsning finns. Det kan finnas flera cookies som hör till samma sida eller domän, så varje cookie ges ett namn (name). Förutom detta finns också cookiens värde (value) och upphörandedatum (expire date) givet i GMT (Greenwich-tid). Det finns också möjlighet att ange att cookien endast får användas under förhållanden som webbläsaren anser vara säkra (secure). Exempel på cookies: Domain Path Name Value Expire Date Secure www.idt.mdh.se /media/ Kurs kod,termin Wed 8-Aug-2003 12:00:00 GMT FALSE .mdh.se / User Kalle läser Fri 6-Sep-2002 17:45:00 GMT FALSE 15(23) Examensarbete C-nivå 10 p Datum 2003-12-15 Den första kan endast användas av sidor i katalogen multimedia på domänen www.idt.mdh.se. Den andra cookien kan användas av alla sidor som ingår i domäner som slutar på .mdh.se 3 Problembeskrivning Examensarbetet gick ut på att ta fram ett webbaserat tidrapporteringssystem som gör det möjligt för användaren oavsett om man är på arbetsplatsen, tjänsteresan eller arbetar hemifrån, att rapportera tid för olika ändamål. Vidare ska systemet hantera deltidsarbete, frånvaro, sjukledighet, semester samt generera månads- och årsrapporter. 3.1 Avgränsning Eftersom två personer utförde examensarbetet skulle två olika användargränssnitt implementeras. Att systemet skulle hantera inrapporteringar offline ansågs vara en viktig del i systemet. 3.1.2 Tidsplanering Med våra handläggare lade vi upp en tidsplanering, (se bilaga A) för de tio veckorna. Den ansågs rimlig vid den tidpunkten. Men närmare slutet på arbetet så ansågs att optimismen gällande tiden för hela projektet var lite i överkant. Enligt tidsplaneringen så skulle buggfixning och rapportskrivande vara de två sista veckorna. Dock visade det sig att det tog tid att få allt att fungera tillfredsställande. Det kan medges att det blev stressigt mot slutet. 3.1.3 Specifikation 3.1.3.1 Tidrapportering Tjänstgöringsgrad ska finnas lagrad för varje dag som timmar och minuter. På sidan där man skriver in den tid man jobbat så ska även resten av dagens inmatade tider stå. Bredvid varje tidspost ska det finnas en knapp för att ta bort eller modifiera en inrapportering. Olika sätt att rapportera tid: • Skriva in antalet jobbade timmar. • Stämpelklocka. Det ska finnas möjlighet till automatiskt avdrag för lunch. Tid för lunch ska kunna specificeras. Om användaren inte stämplat ut vid midnatt så ska värdet 8 timmar läggas in i databasen. Om en instämpling sträcker sig av lunch så ska tiden för lunch, som ska kunna specificeras dagligen, automatiskt dras bort när användaren stämplar ut. Användaren ska även meddelas om avdraget. • Skriva in ett datum intervall (Ex. semester). Ex. 2002-06-18 - 2002-06-28. Tiden som rapporteras varje dag ska vara samma som tjänstgöringsgraden. Tid rapporteras inte in lördag/söndag eller på dagar som finns i listan över ledighetsdagar. 3.1.3.2 Användarklasser Tre klasser: User: Får administrera inrapporerad, projekt och specifikationer 16(23) Examensarbete C-nivå 10 p Datum 2003-12-15 Superuser: Som user men får dessutom administrera grupper samt se grupprapporter. Admin: Som superuser men får dessutom administrera kategorier och användare. 3.1.3.3 Användarinställningar • • Lägg till/modifiera/ ta bort projektnamn. Lägg till/modifiera/ ta bort specifikation. Om ett projekt tas bort måste även dess specifikationer tas bort. Om ett projektnamn eller en specifikation tas bort så kommer det endast försvinna i projekt/specifikationstabell.Dock ska det finnas möjlighet för en administratör att gå in och rensa övrig data för projektet ur databasen. 3.1.3.4 Tidrapporter Vanliga användare ska kunna få upp två typer av rapporter: månadsrapport och årsrapport. Detaljnivån ska kunna bestämmas av användaren: Visa bara kategorier, visa kategorier och projekt, visa kategorier, projekt och specifikationer. Superuser ska förutom sina egna rapporter också ha möjlighet att se grupprapporter. På dessa ska även summan av användarnas tider räknas ihop. 3.1.3.5 Systemkonfiguration (endast admin) • • Defaultskapade kategorier. Dessa kategorier är globala för alla användare. Ledighetsdagar ska sparas i en lista. Dessa skall gå att ändra. Dessa inställningar kommer vara globala dvs påverka samtliga användare i systemet. 3.1.3.6 Offline tidrapportering Systemet ska även kunna användas när användaren ej är uppkopplad mot internet. Detta medför att en hel del data måste lagras lokalt på användarens hårddisk i form av cookies. Den information som måste sparas är kategorinamn, projektnamn och specifikationer. Varje inrapportering som sker i offlineläge lagras lokalt. När användaren sedan går online läggs dessa automatiskt in i systemet. 3.1.3.7 Användarkonfiguration (endast admin) • • • Lägga till/modifiera/ta bort användare (namn, e-mail, lösenord) Tilldela superuser/admin rättigheter (endast admin) Lägga till/modifiera/ta bort grupp. 17(23) Examensarbete C-nivå 10 p • Datum 2003-12-15 Lägga till användare till gruppen. 4 Problemanalys Nedan beskrivs en del problem som uppstått under arbetets gång. Offline: Hur sker rapporteringen när man inte är uppkopplad på Internet? Hur sker kontrollen om användaren är online eller offline? Hur sparas data på användarens dator? Hur kommer man åt data som sparats? Hur många rapporteringer kan sparas innan uppkoppling sker mot Internet igen? Hur överföres data mellan klientens JavaScript-variabler till serverns PHP-variabler? 5 Modell/Metod I arkivmenyn för webbläsaren kryssas valet i för att arbeta offline. Genom att använda webbsidan för tidrapporteringen kan formuläret fyllas i precis som vid onlinerapportering. I formuläret finns ett script som känner av om det finns någon direktuppkoppling till internet. Om inget sådant finns sker inrapporteringen med ett JavaScript där all data tas om hand. För att spara data som skrivs in i formuläret används en s.k. cookie. All information som rapporteras in, skrivs också till cookien. Det är lätt att hämta och hantera information från denna. Det görs med hjälp av JavaScript. Hur många rapporteringer som kan ske, bestäms av hur många cookies som kan sparas: per webbsida och totalt på hårddisken. Av informationen som finns på Internet så kan 20 cookies sparas per webbsida, max antal är 300 på hårddisken och varje cookie kan max innehålla 4 kb data. Med den informationen sattes en gräns på 200 rapporteringar offline. Problemet med variablerna är att PHP-koden körs först på servern, sedan skickas sidan till den egna webbläsaren, och det är först i webbläsaren som JavaScriptet körs. 6 Lösning Vid offlinerapportering finns ett JavaScript som hanterar all data som skrivits in. JavaScriptet skriver all data till en cookie. I cookien lagras all data som en enda hel sträng med ett mellanslag mellan varje ord. Innan ny data skrivs in finns en koll om det redan finns inrapporterat data. I så fall skrivs det nya datat in tillsammans med det gamla i cookien. All data som skrivits in finns i samma cookie med ett speciellt namn och ett s.k. ’upphörandedatum’(se begrepp 4.1.4). Blir det för mycket data i cookien förstörs den och all data går förlorad. 18(23) Examensarbete C-nivå 10 p Datum 2003-12-15 I offlineformuläret får det inte förekomma någon PHP-kod alls. PHP scriptet får själv läsa från cookien vid synkronisering från offline, in till sina variabler. Det enda PHP behöver veta, är namnet på cookien. 7 Resultat 7.1 Analys av resultat Målet med arbetet har uppnåtts. Den färdiga webbapplikationen för tidrapportering är verkställd och kravspecifikationen har följts. Efter hand har en del ändringar gjorts. Användargränssnittet har jobbats fram under arbetets gång i samtal med kund. Gränssnittet är gjort så lätthanterligt som möjligt, utan att för den skull vara utan avancerade funktioner. 7.2 Design av databas Som design var det modelleringen av databasen som tog tid. En bra modellering är själva grunden för att det ska bli en stabil och säker webbapplikation. Så på den lades det ned ett antal timmar på. Arbetets design delades in i fem steg. Steg 1: Bestämma syftet för databasen Syftet talar om vilken information som eftersöks från databasen. Utifrån detta bestämdes vilka ämnen som det behövdes lagras data om (som blev databasens tabeller), och vilka fakta som ska lagras om respektive ämne (fält i databasen). Samtal fördes med kunden om databasens användningsområde och vilken information de vill få från denna. Steg 2: Bestämma tabeller När syftet var uppnått för databasen kunde informationen delas upp i separata ämnen. Dessa kom att bli egna tabeller i databasen. Att bestämma dessa var det svåraste i utformningsprocessen. Det beror på att resultaten som förväntas få ut från databasen, inte nödvändigtvis ger någon ledtråd om strukturen på tabellerna som ska producera dem. Steg 3: Bestämma fält Här bestämdes vilken information som respektive tabell skulle innehålla. De olika kategorierna kallas fält och visas som kolumner i tabellen. Några grundregler för bestämmande av fält. • Se till att fälten i tabellen direkt relaterar till tabellens ämnesområde. Ett fält som beskriver ämnet för en annan tabell hör hemma i den andra tabellen. Om samma information upprepas i olika tabeller betyder det att en del tabeller innehåller onödiga fält. • Ta inte med härledda eller beräknade data För det mesta vill man inte lagra resultat av beräkningar i tabeller. Detta kan göras när ett resultat ska visas. • Ta med all information som behövs Det är lätt att försumma viktig information. I utformningsprocessen som gjordes i början 19(23) Examensarbete C-nivå 10 p Datum 2003-12-15 information samlades in kontrollerades att de verkligen fanns med i de aktuella tabellerna. Steg 4: Bestämma relationer I det här skedet avgjordes hur data i en tabell ska relatera till en annan tabell. Ska det läggas till fält i tabellerna eller, när relationerna fastställs, ska det skapas nya tabeller. Steg 5: Förfina databasens design Kontroller gjordes för att eventuellt finna fel i utformningen. Tabellerna fylldes med exempeldata för att se om resultaten var det önskade. Justeringar av designen gjordes efter behov. Det är lätt att ändra databasens design när den är skapad, men det är svårare att ändra i tabeller sedan de fyllts med data och skapat formulär och rapporter. Av denna anledning var det extra viktigt att det finns en bra design innan arbetet hunnit alltför långt. 7.2.1 Datamodellering (Se bilaga B). 7.3 Implementation När väl modelleringen var färdig, så var det dags att sätta sig in i själva programmerandet. Eftersom ingen utav oss hade programmerat vare sig Javascript eller PHP förut, så tog det lite tid att sätta sig in i det. Men med böckers hjälp, och Internet så var inte det heller så svårt. Eftersom PHP liknar programspråket C, så var det inte så svårt att efter ett tag börja arbetet av webbapplikationen. 7.4 Testning Systemet har testats flertalet gånger. Administreringen av kategorier, projekt, specifikationer, användare och grupper använder sig av samma princip och dessa fungerar som de ska. Provdata har använt för att kontrollera att systemet inte sluta fungera vid felaktig indata. Rapporterna har testats genom att fylla databasen med testdata och sen kontrollera alla beräkningar och utskrifter. Inrapportering av data har testats på flera sätt. Dels att kontrollerna för felaktigt inmatad data fungerar, dels att ändring av inmatad tid fungerar och att borttagning av inmatad tid fungerar. 7.5 Framtida arbete Förutom att förfina hela applikationen med färger som tilltalar användaren så togs det upp vid examinationen att offlinerapporteringen kunde förbättras genom att ha samma funktioner som online rapportering. Detta framgick inte av kravspecifikationen. Funktioner kan läggas till för att ändra eller ta bort inskrivet data i offlineformuläret. Nu kan bara data ändras eller tas bort efter uppkoppling sker igen mot databasen. 20(23) Examensarbete C-nivå 10 p Datum 2003-12-15 8 Summering och slutsatser Examensarbetets syfte var att få fram ett färdigt webbaserat system för tidrapportering. Det hanterar obegränsat antal användare och användaren kan rapportera tid för flera projekt i olika projektkategorier. Tre olika nivåer på användare finns. Vanlig användare, user, rapporterar tid för olika kategorier. Tre val finns för vilken rapportering som känns lämplig. Vanlig tidrapportering där timmarna skrivs in, rapportera för en hel period där perioden mellan två datum gäller eller stämpla in/stämpla ut, som en vanlig stämpelklocka. Rapporter för varje månads inrapporteringar samt för hela året kan tas fram. Superuser, nivån över user, kan dessutom skapa olika grupper av användare, där även en rapport för respektive grupp och gruppmedlem tas fram för de olika projekt de deltagit i. Admin, den högsta nivån, kan dessutom administrera användare i databasen. Lägga till och ta bort användare samt tilldela lösenord till alla olika användare. All information sköts genom en databas där all data är lagrad. Användarna loggar in med användarnamn och lösenord, och kan sedan använda systemet till fullo. Det finns möjlighet att ändra eller ta bort rapporteringar innan dessa läggs in i databasen. Systemet kan även användas när användaren ej har tillgång till internet uppkoppling. Därför lagras en del data lokalt på användarens hårddisk. Det sker med hjälp utav cookies. När sen uppkoppling sker, så synkroniseras datat från användaren när tidrapportering skett offline. Datat läggs därefter direkt in i databasen. 21(23) Examensarbete C-nivå 10 p 9 Datum 2003-12-15 Referenser Bok: C.J. Date, An Introduction to Database Systems, 7:e upplagan, Addison-Wesley, ISBN 0-20138590-2, ( 975 sidor). Bok: Victor Jonsson, Webbprogrammering med PHP, Studentlitteratur, ISBN 91-44-01941-6, 2001, ( 380 sidor ). Bok: Mark Mazlakowski ,Lär dig MySQL på 3 veckor, Pagina Förlags AB, ISBN 91-636-0627-5, ( 500 sidor). Bok: Jesper EK, Ulrika Eriksson, PHP 4 programmering, Pagina Förlags AB, ISBN 91-636-0660-7, ( 220 sidor ). Bok: Danny Goodman, JavaScript Bible, 4th edition, Förlag AB?, ISBN 0764533428, 2001, (1248 sidor). Internet: www.php.net (2003-01-16) Internet: www.phpportalen.se (2003-01-16) Internet: www.apche.org (2003-01-16) Internet: www.zend.com (2003-01-16) Internet: www.mysql.com (2003-01-16) Internet: www.webreference.com (2003-01-16) 22(23) Examensarbete C-nivå 10 p 10 Billagor Bilaga A: tidsplanering Vecka 24 25 26 27 28 29 30 31 32 33 34 35 36 Uppgift Installera LAMP och lära känna utvecklingsmiljön Specifikation Påbörja modullering Projektmöte Konstruera preliminär databas Konstruera preliminärt gränssnitt i php/HTML Projektmöte Utöka databas/förfina gränssnitt Projektmöte Utöka databas/förfina gränssnitt Projektmöte Ytterliggare gränssnitt/funktionalitet ?? Projektmöte Ytterliggare gränssnitt/funktionalitet ?? Projektmöte Buggfixar och förbättringar av databas/gränssnitt Buggfixar och förbättringar av databas/gränssnitt Rapportskrivning Rapportskrivning Rapportskrivning Reservtid…?? Redovisning Datum 2003-12-15 23(23) Datum Examensarbete C-nivå 10 p 2003-12-15 Bilaga B: Datamodell categories users time_report email fname ename password authority active session time_tuple_id time date cat_id proj_id spec_id email (FK) (IE) cat_id cat_name active projects cat_id proj_id email proj_name active specifications group_members groups holidays email group_id (FK) (IE) group_id group_name active date cat_id proj_id spec_id email spec_name active