• No results found

Design och implementering av ett webbaserat personalhanteringssystem

N/A
N/A
Protected

Academic year: 2021

Share "Design och implementering av ett webbaserat personalhanteringssystem"

Copied!
106
0
0

Loading.... (view fulltext now)

Full text

(1)

personalhanteringssystem

Dean Maros Johan Norberg

EXAMENSARBETE 2005

DATATEKNIK

(2)

personalhanteringssystem

The development of a web based information system for

employee administration

Dean Maros

Johan Norberg

Detta examensarbete är utfört vid Ingenjörshögskolan i Jönköping inom ämnesområdet datateknik. Arbetet är ett led i den treåriga högskole-ingenjörsutbildningen. Författarna ansvarar själva för framförda åsikter, slutsatser och resultat.

Handledare: Magnus Schoultz Omfattning: 10p (C-nivå) Datum: 5/16/05

Arkiveringsnummer:

(3)

Abstract

Quickmatch is a company that recruits students to other companies that need temporary workers. Today all administration is done by hand, which is very time demanding and therefore inefficient. Employees send

assignment reports by e-mail about the working hours and breaks to the administration office. Since these reports are handled manually, there is a great need for an automated system that makes the company more scalable.

The purpose of this work was to solve the defined problem, i. e. increase the efficiency of the assignment administration by automation. In

practical terms the solution was described as a web based information system.

The requirements of such a system is high. Properties like compatibility with future software, platform independence and security are particulary important. Also aspects like usability and cost effectiveness influence the system design. The technology that was chosen was the web server Apache, the database server MySQL and the scripting language PHP. Because of the importance of the aspect of platform independence, no special platform came to attention; the goal is a working system on all platforms.

The information system on the client side is based on normal browser software. No extra plugins should be needed for being able to use it. The decision was based on the goal that you should be able to use it on any computer connected to the Internet. To achieve the aspects of future and platform independent compatibility the page description language

XHTML 1.0 Strict was chosen in combination of CSS. The language JavaScript was also selected to create DHTML functionality.

On the server side the aspects of future and platform independent compatibility made the decision of minimizing dependencies. No other software than Apache, MySQL and PHP should be nessecary on the server. To minimize the dependency a SMTP client was written with PHP's socket functions. The mail function was used to send forgotten passwords to employees and to send assignment reminder messages. The database model that was chosen was UML. The decision was made because of the model's frequent uses for both academic purposes and in the industry. It was also because of the need for a model to guarantee an efficient system design.

The work resulted in a information system that solved the defined problem. The assignment administration was made more efficient than before, which reduces the burden of work. The general aspects of the system was considered within acceptable limits. That consideration was based on the achieved specifications of requirements and the results of the testphase of the implemented system.

Because of the limited time frame the system was reduced to only solve the defined problem. The design of the system does however have the capabilities for future extensions.

(4)

Sammanfattning

Företaget Quickmatch är ett rekryteringsföretag som baserar sin

verksamhet på studenter och hyr ut studenterna till olika företag som har behov av arbetskraft.

I dagsläget hanteras alla uthyrningsuppdrag manuellt, vilket innebär att mycket tid ägnas åt att behandla uppdragsrapporter som anställda skickar med e-post. Denna aktivitet anses vara ineffektiv och ett stort intresse finns för en datorbaserad lösning som automatiserar den största delen av det administrativa arbetet. Syftet med detta arbete var att lösa dessa problem, dvs. att effektivisera uppdragshanteringen samt

löneberäkningsdelen genom automatisering. I praktiska ordalag handlar denna effektivisering om ett webbaserat informationssystem.

De krav som ställs på ett sådant system är stora. Egenskaper såsom långsiktighet, kompatibilitet, korrekthet och säkerhet är särskilt viktiga. Även aspekter som användbarhet och kostnad påverkar valet. Den teknologi som valdes för att skapa systemet var webbservern Apache, databasservern MySQL samt scriptspråket PHP. Eftersom principen om plattformsoberoende är en mycket viktig egenskap hos systemet valdes inte någon speciell plattform som systemet skulle basera sig på; målet var att det skulle fungera på alla plattformar.

Informationssystemet baserar sig på vanliga browserprogramvaror. Inga extra plugin skall behövas för att kunna använda systemet. Målet med detta vägval är att man skall kunna använda systemet ifrån vilken dator som helst som har Internetuppkoppling. För att efterfölja målet om långsiktighet och kompatibelitet mellan plattformar valdes

sidbeskrivningsspråket XHTML 1.0 Strict i kombination med användningen av CSS. Förutom klientens tolkning av sådana data används också JavaScript för DHTML-funktionalitet.

Serversidan har också stora krav på kompatibilitet och långsiktighet. Det anses vara mycket viktigt att minimera systemens beroenden till andra programvaror på servern förrutom Apache, MySQL och PHP. Av denna anledning skrevs en egen SMTP-klient med hjälp av PHPs

socketfunktioner. Mailfunktionen används för systemets hantering av glömda lösenord samt påminnelsefunktionalitet för uppdragshanteringen. Den systemutvecklingsmodell som valdes var UML eftersom den både används inom den akademiska världen samt på många företag. Den anses dessutom vara fördelaktig att använda för att garantera en god

systemdesign.

Arbetet har resulterat i ett system som sköter administreringen av

företagets uppdrag samt löneberäkningar. Därmed löses det problem som definierats. En effektivisering med hjälp av informationssystemet minskar arbetsbördan hos företaget. De generella målaspekter som definierats anses vara acceptabla. Kravspecifikationen har efterföljts samt tester av implementation har givit ett positivt resultat.

Eftersom utvecklingen av systemet har utförts inom en begränsad tidsperiod är systemet avgränsat till uppdragshanteringen. Systemets design skapar stora möjligheter för framtida utbyggnad.

Nyckelord

Apache MySQL PHP

(5)

1 Introduktion till problemområdet...7

1.2 Företagsbeskrivning...7

1.2.1 Introduktion...7

1.2.2 Verksamhetsbeskrivning...7

1.3 Personlig bakgrund...8

1.4 Problembeskrivning och önskemål...8

1.5 Mål och syfte...9 1.6 Avgränsning...10 2 Teoretisk bakgrund...11 2.1 Nätverksprotokoll...11 2.1.1 HTTP...11 2.1.2 SMTP...14 2.2 Databaser...17 2.2.1 DBMS...17 2.2.2 Modeller för databasmodellering...17 2.2.3 Normalisering...19 2.2.4 SQL...19 2.2.5 Databasservrar...23 2.3 Sidbeskrivningsspråk...25 2.3.1 HTML...25 2.3.2 CSS...26 2.3.3 XHTML...28 2.4 Implementationer av HTTP-protokollet...29 2.4.1 Servrar...29 2.4.2 Klienter...31 2.4.3 Dynamisk webbfunktionalitet...34 2.5 Användarcentrerade system...38 2.6 Datasäkerhet...40 2.6.1 Definitioner...40 2.6.2 Databassäkerhet...43

2.7 Standarder och rekommendationer ...45

2.7.1 W3C...45

2.7.2 JPEG...46

2.7.3 PNG och GIF...47

2.7.4 W3Cs rekommendationer...48

3 Genomförande...51

3.1 Val av plattform och teknologier...51

3.1.1 Systemutvecklingsmetod samt databasserver...51

3.1.2 Webbserver...52

3.1.3 Språk...52

3.1.4 Komprimeringsformat och datarepresentation...53

3.2 Systemdesignen...53 3.2.1 Databasmodellering...53 3.2.3 Användargränssnitt...57 3.3 Utveckling av systemet...58 3.3.1 Skapandet av grafik...58 3.3.2 Programmeringsfasen...58 3.4 Testfas...60 3.4.1 Metod...60

3.4.2 Genomförande och resultat...61

4 Resultat...63

4.1 Personalhanteringssystemet...63

4.1.1 Systemets öppna del...63

4.1.2 Systemets administrativa del...66

4.1.3 Systemets del för timanställda...71

4.2 Slutsats...74

(6)
(7)

1 Introduktion till problemområdet

1.2 Företagsbeskrivning

1.2.1 Introduktion

Quickmatch är ett rekryteringsföretag som baserar sin verksamhet på uthyrning av studenter till företag. Företaget leds av två personer som hanterar ca. 100 timanställda och två anställda som sköter viss

administration. De områden som företaget främst inriktar sig mot är lagerhantering, restaurangbranschen samt lackering.

I dagsläget använder sig företaget av ett webbaserat system som innehåller timanställdas CV. De sköter all annan personalhantering manuellt. Rapportering av timanställdas uppdrag sker i nuläget via e-post eller telefon.

1.2.2 Verksamhetsbeskrivning

Figur 1-1: Verksamhetbeskrivning i nuläge

Figuren ovan beskriver företagets verksamhet. Rektangelobjekten representerar en person eller grupp av personer, t. ex. “Kund”.

Rektanglarna med en spets i höger kant representerar något som utförs, exempelvis “Personalhantering”. Romben beskriver vilken information som överförs mellan de två förstnämnda objekten, t. ex. “Detaljerad uppdragsbeskrivning”.

En kund ringer och talar om att arbete finns under en viss tidsperiod och undrar om arbetskraft för detta existerar. Quickmatch ringer till

timanställda som kan tänkas kunna jobba. Tillsammans med frågan

(8)

bekräftelse till kunden.

När arbetet har utförts av de berörda timanställda skickas en

uppdragsrapport till quickmatch som innehåller antalet arbetstimmar grupperade efter tid på dygnet då dessa är olika viktade. Rapporteringen sker via e-post.

Uppdragsrapporteringen utmynnar sedan till löneberäkningar som beräknas för hand av Quickmatch. Om det är första gången en anställd utför ett uppdrag på det specifika företaget används lägre fakturerings-avgifter, medan den timanställde har oförändrad timlön. I detta fall samt normala fall baserar sig fakturan på en påläggssats, som kan variera beroende på situation.

1.3 Personlig bakgrund

Efter tre års studier på programmet “Information och medieteknik” har vi genomgått kurser inom ett brett område. Förutom grundläggande kurser inom naturvetenskapliga ämnen och datatekniska områden har vi bl. a. läst kurser om ekonomi, organisationsteori, kommunikationsteori samt ingenjörsmetodik. Detta har lett till en ökad förståelse av hur företag fungerar och hur de bör utvecklas.

De datatekniska kurserna som lästs behandlar operativsystem, datakommunikation, programmering, databashantering och

systemutveckling, utformning av gränsnitt samt grafisk teknik. Då vår huvudinriktning på denna utbildning är grafisk teknik och Internet, har vi erhållit särskilt goda kunskaper inom sådana områden. Detta har gett oss förmågan att bl. a. skapa webbaserade informationssystem.

1.4 Problembeskrivning och önskemål

Quickmatch har en ineffektiv hantering av timanställda. Det finns inget automatiserat system för uppdragshanteringen. I dagsläget sköts rapportering om uppdrag, löneberäkningar och annan information manuellt. Detta resulterar i stor tidsåtgång för företagets administrativa del. Det begränsar också i viss mån företagets utveckling.

Med datorns hjälp skulle man kunna minimera denna administrativa del. I och med att ett sådant system skulle kunna hantera en mycket större mängd uppdrag, skulle företaget växa och uppnå en bättre lönsamhet. Dessutom saknas i dagsläget ett unifierat system för alla administrativa arbetsuppgifter. Dessa kan sammanfattas som företagsbeskrivning, företagskontaktuppgifter, uppdragshantering, CV-hantering samt ekonomisk hantering (t. ex. löneberäkningar och fakturering).

Då företaget har timanställda som inte befinner sig i samma byggnad som den administrativa delen finns ett stort intresse att de timanställda på något sätt ska kunna komma åt datorsystemet utifrån. Företagsledningen är mycket intresserade av att använda Internet som kommunikations-kanal mellan timanställd och företagets datorsystem. Detta eftersom denna lösning både är ekonomiskt fördelaktig samt använder sig av beprövad

(9)

teknik.

Quickmatch är intresserade av ett datorsystem som förväntas fungera under en längre tidsperiod. Det bör ha en konstruktion som klarar att anpassa sig till förändrade förhållanden samt plattformar som kan tänkas användas i framtiden. Det finns därför intresse för att systemet ska ha så få beroenden. Det skall i sin helhet fungera så självständigt som möjligt.

1.5 Mål och syfte

Huvudmålet är att skapa en väl fungerande lösning till det beskrivna problemet, dvs. effektivisering av timanställdhanteringen. För att uppnå detta mål måste man tänka på helheten. Förrutom själva systemdesignen måste man tänka på kärnan, system-programvaran samt

serverprogramvaran. Går man en annan väg är sannolikheten stor att målet inte uppnås.

Man kan betrakta huvudmålet som delmål som tillsammans skapar helheten. Dessa delmål beskriver generella egenskaper hos lösningen till problemet och beskrivs nedan.

Säkerhet

Eftersom systemet hanterar personuppgifter och timanställdas löner är kravet på säkerhet stort. Åtgärder för att minimera risken för intrång måste utföras. En balans måste dock upprätthållas då funktionaliteten inte får påverkas i någon större omfattning av dessa åtgärder.

Funktionalitet

För att uppnå målet måste lösningen vara av sådan karaktär att man med hjälp utav en viss funktionalitet löser problembeskrivningen. Den

funktionalitet som avses beskrivs i kravspecifikationen som ingår som bilaga i rapporten.

Användbarhet

Saknas användbarhet blir lösningen oanvändbar för de personer som ska använda systemet. Man måste därför välja en väg som tillhandahåller god användbarhet. Med detta delmål avses ett användargränssnitt som är helt självförklarande. Ingen ytterligare beskrivning än själva gränssnittet skall behövas för att användaren ska förstå hur man arbetar i systemet. Man bör dock anta att personen ifråga känner till hur företagets verksamhet ser ut.

Korrekthet och robusthet

Det är viktigt att lösningen som väljs har en korrekt konstruktion. Den påverkar både resultatets noggrannhet samt stabilitet. Om en funktion inte är tillräckligt väldefinierad kan problem uppstå om förutsättningarna ändras. Detta kan exempelvis uppstå vid omskrivning av en annan

funktion som är beroende av den nämna funktionen. Man kan beskriva denna egenskap genom analogin med att bygga ett hus. Använder man bristfälligt material eller felaktig metod för att bygga grunden till huset, kan allting rasera vid förändrade förhållanden.

(10)

Robusthet beskriver anpassningsförmågan. Om t.ex. en funktion är hårdkodad för vissa förhållanden blir den mindre robust än om den dynamiskt anpassar sig till nya miljöer.

Flexibilitet och kompatibilitet

Ett system som är förändringsbart och långlivat är egenskaper för en god lösning. Det som påverkar denna egenskap till största grad är lösningens arkitektur samt i vilken miljö den är placerad. Denna egenskap har en viss likhet med den föregående, dvs. båda beskriver arkitekturens utseende. Ibland kan den robusta egenskapen minska en lösnings flexibilitet eller kompatibilitet. Om huset som beskrevs ovan var konstruerat i armerad betong hade det varit svårt att förändra (t. ex. öppna en vägg för utbyggnad). Man bör därför välja en lösning som balanserar den robusta egenskapen med flexibiliteten till systemets fördel.

Prestanda och tillgänglighet

Denna egenskap påverkar till stor del hur lösningen upplevs av de som använder det. Denna ofta subjektiva aspekt beror främst på svarstider mellan klient och servern. Hur dessa uppfattas beror på individen som använder systemet. Dessa tider påverkas indirekt av vilka åtgärder man utför för att tillhandahålla god tillgänglighet. Det går dock att reducera subjektivismen för dessa två aspekter genom att relatera till

kravspecifikationen samt att mäta tiden för en viss funktionalitet. Kostnad

Denna aspekt alltid viktig i företagssammanhang. Lösningen ska vara kostnadsmässigt effektiv, men ska samtidigt bibehålla en specifik kvalité.

1.6 Avgränsning

Det problemområde som arbetet främst inriktar sig på är

uppdragshanteringen och lönehanteringen. Delar såsom företags-beskrivning, företagskontaktuppgifter samt CV-hantering har lägre prioritet. Fakturahantering och standardinställningar per kund har också fått låg prioritet.

Denna fokusering har valts eftersom de valda områdena skapar flest problem i företaget. Dessa prioriterade delar baserar sig på de generella egenskaperna som nämndes i föregående avsnitt.

(11)

2 Teoretisk bakgrund

Nedanstående avsnitt fokuserar sig på de tänkbara teoretiska

aspekterna som kan förekomma vid skapandet av ett datorsystem som beskrivits.

Eftersom arbetet bygger vidare på redan befintlig teknologi förekommer också beskrivning av de grundläggande praktiska byggstenarna samt deras fördelar och nackdelar.

Avsnitten är ordnade efter abstraktionsnivå. De lägsta nivåerna beskrivs först och det som bygger vidare på det underliggande presenteras därefter. Materialet grupperas till en viss grad ockå i en ordning som underlättar förståelsen av området.

2.1 Nätverksprotokoll

2.1.1 HTTP

HTTP (HyperText Transfer Protocol) är en av de vanligaste metoderna för att överföra data på Internet. Dess främsta syfte är i dagsläget att överföra HTML-filer ifrån en webbserver till en klient, men protokollet stödjer överföring av vilken filtyp som helst. Protokollet skapades av ett samarbete mellan W3C (World Wide Web Consortium) och IETF (Internet Engineering Task Force) och finns beskrivet i olika RFC. Den senaste HTTP versionen 1.1 finns beskrivet i RFC 2616.

HTTP är ett protokoll som baserar sig på överförandet av så kallade “HTTP Requests” samt “HTTP Response” mellan server och klient. Kommunikationen sker på port 80 via TCP-protokollet. All trafik som skickas mellan klienten och servern överförs okrypterat via

klartextkommandon. Möjlighet för kryptering finns dock via HTTPS-protokollet som använder sig av ett SSL-lager ovanpå den vanliga HTTP-kommunikationen. Detta protokoll kommunicerar på TCP-port 443. [1]

För att peka ut en resurs på en HTTP-server använder man sig utav URL (Uniform Resource Locator), som baserar sig på DNS-protokollet för namnhantering. En sådan har följande syntax:

protokoll://host:port/adress

I praktiken brukar porten utelämnas då den är standardiserad för det angivna protokollet. Exemplet nedan visar en URL i praktiken:

http://www.google.se/language_tools?hl=sv

Användningen av URL är inte endast för HTTP-protokollet utan det finns ett stort användningsområde. Ett annat begrepp är URI (Uniform Resource Identifier) som är en mer generell beskrivning av en resurs. Skillnaden mellan en URI och URL är att en URI indentifierar en resurs i generell form, medan en URL identifierar en resurs och anger hur man hittar resursen. Ibland används begreppet URI istället för URL då en URL i nästan alla fall också är en URI. [2]

(12)

Som tidigare nämnts kommunicerar klienten med servern via

klartextkommandon. Klienten skickar en Request-PDU som innehåller det önskade kommandot, vilket sedan besvaras med en Response-PDU. De vanligaste kommandona exemplifieras nedan.

GET

Det vanligaste kommandot. Begär en specifik resurs med hjälp utav en URL. Eftersom browsern kopplar upp sig till den server som

användaren angett via URL:en anges endast den sökvägen till filen i detta kommando. Ett sådant kommando demonstreras nedan.

GET /rfc/rfc2068.txt HTTP/1.1 Host: www.ietf.org

Enligt RFC 2616 måste man i HTTP 1.1 ange Host-fältet i alla requests för att inte få felkoden 400 (Bad Request). Likt alla

kommandon avslutas det med CRLF (Carriage Return Line Feed). Det som returneras är information om servern, information om datat och sedan själva datat, vilket i detta fall är en ASCII-fil.

Det går också att skicka med variabeldata till GET-kommandot genom att använda “?” och “&”-tecknen i slutet av URL:en. Detta kan sedan behandlas i servern t. ex. med hjälp av CGI, ASP, PHP eller något motsvarande. En sådan rad ser ut enligt följande exempel.

GET /info.php?v1=Detta+är+ett+test&v2=Test%20%20nr.+2 HTTP/1.1

Host: www.guilong.org

Mottagen variabeldata:

v1=”Detta är ett test” v2=”Test nr. 2”

Servern kan sedan använda dessa variabler för att spara

informationen på servern eller generera en webbsida baserat på datat som sedan returneras till klienten.

HEAD

Ett kommando som endast begär headern till t. ex. en HTML-fil. Det som returneras är information om servern, vilket format filen har samt vilken kodning den har. Exempel nedan visar kommandosyntaxen:

Head /info.php HTTP/1.1 Host: www.guilong.org

(13)

POST

POST används för att skicka data till servern. Detta brukar oftast vara formulärdata som servern ska lagra eller behandla. Variabeldata lagras i HTML-koden som sedan browsern skickar via POST-kommandot. Ett praktiskt exempel visas nedan:

POST /info.php HTTP/1.1 Host: www.guilong.org Content-Type: application/x-www-form-urlencoded Content-Length: 17 v1=test1&v2=test2 Mottagen variabeldata: v1=”test1” v2=”test2”

Observera att “Content-Length” måste anpassas till den datamängd som ska skickas. I detta fall används 8-bitar för att representera ett tecken, vilket leder till att 17 Byte ska skickas. Denna längd

inkluderar även de tecken som beskriver själva variabeln.

Beskrivningen om datat och själva datat är skilt med ett extra CRLF. Precis som med GET-kommandot kan man hantera variablerna på servern, med den enda skillnaden att de hämtas ifrån en annan källa. [4]

Det finns några ytterligare kommandon i HTTP-protokollet som t. ex. PUT och Delete. PUT kan användas för att lägga upp en fil på servern medans Delete tar bort en vald fil. Dessa kommandon brukar dock av säkerhetsskäl aldrig användas. Ofta är de inte ens implementerade i serverprogramvaran. [1]

Som ett komplement till kommandona GET och POST finns cookies. Det är en variabel som servern kan välja att definiera. En sådan lagras lokalt på klientens hårddisk. När en klient ansluter till en server som tidigare skapat en sådan cookie, kommer klienten att skicka med denna. Ofta brukar sessionsvariabler skickas med via cookies. De data som en cookie lagrar exemplifieras nedan.

Name: PHPSESSID

Content: 405febc25e4e5fcc3007eaba82f3167b Host: guilong.org

Path: /

Send for: Any type of connection Expires: at end of session

Denna cookien talar om för webbservern vilken användare som ansluter och den kan då anpassa innehållet därefter. [5]

Det finns två versioner av HTTP-protokollet, nämligen version 1 och 1.1. Den första versionen kopplar ner uppkopplingen efter varje request som klienten skickar. Detta resulterar i en långsam dataöverföring då TCP-protokollet använder sig av “slow start”, eftersom hastigheten inte hinner öka då uppkopplingen stängs. Ett annat relaterat problem är det som uppstår när varje request hanteras separat. För varje uppkoppling som skapas måste en

(14)

trevägshandskakning genomföras, vilket är tidskrävande om det är stort fysiskt avstånd mellan server och klient.

Lösningen till dessa problem kom i och med version 1.1 av HTTP-protokollet. I denna versionen kan man skicka flera requests åt gången och därmed eliminera problemet med “slow start” i kombination med att endast en trevägshandskakning utförs. Är kommunikationen mellan klient och server inaktiv kommer dock uppkopplingen att stängas ner efter ett tag, men detta orsakar inga praktiska problem. [6]

2.1.2 SMTP

SMTP (Simple Mail Transfer Protocol) är ett nätverksprotokoll som används för att skicka e-post. Det baserar sig på TCP-protokollet och använder porten 25. RFC 2821 är det aktuella dokumentet som beskriver dess funktionalitet.

SMTP-protokollet är en del av ett e-postsystem. Det ansvarar för skickandet av posten, vilket oftast brukar benämnas som MTA (Mail Transfer Agent). För att hämta/läsa skickad epost används protokollen POP3 (Post Office Protocol) samt IMAP (Internet Message Access Protocol). SMTP använder sig av DNS för hantering av

nätverksadresser. Som nämnts i avsnitt 2.1.1 skickar SMTP-servern en MX-förfrågan till den DNS-server som ansvarar för en specifik domän, för att ta reda på vilken andress som den ska skicka data till. Protokollet är ASCII-baserat, likt HTTP-protokollet där kommandon skickas mellan klient och server. Man kan därför exempelvis använda sig av telnet för att skicka e-post. Exemplet nedan visar hur det går till:

guilong@Guilong:~# telnet smtp.bredband.net 25 Trying 195.54.106.231...

Connected to smtp.bredband.net. Escape character is '^]'.

220 mxfep02.bredband.com ESMTP server ready Thu, 21 Apr 2005 15:31:04 +0200

HELO guilong.org

250 mxfep02.bredband.com

MAIL FROM: dm02nojo@ing.hj.se

250 Sender <dm02nojo@ing.hj.se> Ok

RCPT TO: dm02made@ing.hj.se

250 Recipient <dm02made@ing.hj.se> Ok

DATA

354 Ok Send data ending with <CRLF>.<CRLF>

Subject: Testar SMTP-protokollet From: dm02nojo@ing.hj.se

Hej!

testar...123 .

250 Message received: 20050421133256.LCCY3591.mxfep02.bredband.com@guilong.org

QUIT

221 mxfep02.bredband.com ESMTP server closing connection Connection closed by foreign host.

(15)

Det fetmarkerade representerar det inmatade. Varje kommando avslutas med CRLF. Undantaget är DATA-definitionsdelen som avslutas med sekvensen CRLF.CRLF, dvs. en punkt på en tom rad. Kommandoraderna skickar brevet till den angivna adressen. [7] Om man vill skicka med binärdata (t. ex. en zip-fil), använder man sig av något som kallas MIME (Multipurpose Internet Mail Extensions) för att beskriva datat. Det används också om man vill skicka text i annan kodning än ASCII.

MIME beskrivs med hjälp utav olika headers som anges i brevets datadel. Följande exempel skickar ett brev kodat i base64, som garanterar bevaringen av specialtecken såsom å,ä och ö. Denna kodning använder sig av ASCII-tabellen som alla SMTP-servrar stöder.

guilong@Guilong:~# telnet smtp.bredband.net 25 Trying 195.54.106.231...

Connected to smtp.bredband.net. Escape character is '^]'.

220 mxfep01.bredband.com ESMTP server ready Thu, 21 Apr 2005 17:55:32 +0200

HELO guilong.org

250 mxfep01.bredband.com

MAIL FROM: dm02nojo@ing.hj.se

250 Sender <dm02nojo@ing.hj.se> Ok

RCPT TO: dm02made@ing.hj.se

250 Recipient <dm02made@ing.hj.se> Ok

DATA

354 Ok Send data ending with <CRLF>.<CRLF>

MIME-Version: 1.0

Subject: Testar SMTP-protokollet med MIME och base64 From: dm02nojo@ing.hj.se

Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64

SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW .

250 Message received: 20050421155550.FLOU9446.mxfep01.bredband.com@guilong.org

QUIT

221 mxfep01.bredband.com ESMTP server closing connection Connection closed by foreign host.

Den kodade base64-strängen

“SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW” översätts till

“Hej\nTestar...123 åäö ÅÄÖ” av mailklienten. Vill man skicka ett brev som endast innehåller HTML-kodning kan man göra så genom att ändra raden “Content-Type: text/plain; charset="us-ascii"”, till “Content-Type: text/html; charset="us-ascii"” och använda lämplig base64data. Detta rekommenderas dock inte då man inte kan räkna med att alla mailprogram stöder html. Möjligheten finns dock.

(16)

Nedanstående rader kodar både i text och i HTML. Det garanterar att alla kan läsa epostmeddelandet då textversionen kommer att visas om HTML inte stöds i mailprogrammet. Eftersom inte alla SMTP-servrar klarar kodning som skiljer sig ifrån ASCII-formatet, kodas

informationen med hjälp av base64metoden. På så sätt skapar man kompatibilitet både på SMTP-servrarna och för de program som ska läsa brevet.

guilong@Guilong:~# telnet smtp.bredband.net 25 Trying 195.54.106.231...

Connected to smtp.bredband.net. Escape character is '^]'.

220 mxfep01.bredband.com ESMTP server ready Thu, 21 Apr 2005 19:24:44 +0200

HELO guilong.org

250 mxfep01.bredband.com

MAIL FROM: dm02nojo@ing.hj.se

250 Sender <dm02nojo@ing.hj.se> Ok

RCPT TO: dm02made@ing.hj.se

250 Recipient <dm02made@ing.hj.se> Ok

DATA

354 Ok Send data ending with <CRLF>.<CRLF>

MIME-Version: 1.0

Content-Type: multipart/alternative; boundary="next_part" Subject: Testar SMTP-protokollet med text och html via MIME From: Johan Norberg

To: Dean Maros

This is a multi-part message in MIME format. --next_part

Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64

SGVqClRlc3Rhci4uLjEyMyDl5PYgxcTW --next_part

Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: base64 PGh0bWw+PGhlYWQ+PHRpdGxlPlRlc3RhciBNSU1FIG1lZCBIVE1MLWRlbDw vdGl0bGU+PC9oZWFkPjxib2R5Pjx0YWJsZSBib3JkZXI9IjEiIGNlbGxzcG FjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+PHRyPjx0ZD5hPC90ZD48dGQ+Y jwvdGQ+PHRyPjx0cj48dGQ+YzwvdGQ+PHRkPmQ8L3RkPjx0cj48L3RhYmxl PjwvYm9keT48L2h0bWw+ --next_part--.

250 Message received: 20050421172457.GEKU9446.mxfep01.bredband.com@guilong.org

QUIT

221 mxfep01.bredband.com ESMTP server closing connection Connection closed by foreign host.

HTML-versionen av brevet visar en table med två rader och två kolumner med bokstäverna a, b, c, och d. Innehållet i brevet borde varit samma, men exemplet finns för att demonstrera principen.

(17)

Observera att två extra “-”-sträck placeras före “next_part” samt att den sista brytsträngen skrivs som “--next_part--”. [8, 9, 10]

2.2 Databaser

2.2.1 DBMS

En DBMS (DataBase Management System) är ett system för hantering av databaser. Nuförtiden är alla datoriserade och hanterar data för alla dagens informationssystem. Det finns ett flertal olika DBMS-kategorier som strukturerar data på olikartade sätt. De vanligaste kategorierna är relationsdatabaser (RDBMS) samt objektorienterade databaser (ODBMS). [11]

Relationsdatabaser är en databas som innehåller tabeller och

kolumner som har en logisk relation till varandra. Information om ett specifikt område är placerade i en och samma tabell där alla

egenskaper är beroende av en eller flera huvudnycklar. Flera tabeller kan sedan ha en relation mellan varandra. Relationsmodellen liknar människans sätt att tänka och därför finns det klara fördelar att använda den framför äldre hierarkiska modeller. [12]

ODBMS-modellen baserar sig istället på objektorienterade principer för hur man lagrar data. Med denna modell är data strukturerat på samma sätt som när man ska använda datat. Det behövs därför inte någon tidskrävande omvandling till ett lämpligt format. [13]

Det förekommer också en kategori som kallas ORDBMS (Object-Relational DBMS) som en del databasservrar använder sig av. Med denna modell kan man definieras egna datatyper och metoder. Man kan då spara datastrukturen på samma sätt som det används i likhet med ODBMS-modellen. [14]

2.2.2 Modeller för databasmodellering

I ett systemutvecklingsarbete brukar man använda sig utav olika modeller. Dessa används för att kunna avbilda det väsentliga i verkligheten. Med denna förenklade bild kan man sedan hantera komplexa problem.

UML

UML (Unified Modeling Language) är en standardiserad modell för informationsmodellering. Modellen används som ett verktyg för att strukturera samt visualisera informationssystemet som ska

konstrueras.

Huvudsyftet med UML är att se till att systemdesignen definieras innan man börjar med programmeringen. Använder man inte en strukturerad metod vid systemutvecklingsarbetet finns en stor risk att man ägnar för lite tid åt analys och designfasen och då för snabbt hoppar in i kodningsfasen.

Modellen använder sig utav ett objektorienterat tankesätt när man modellerar information. Detta medför att man kan återanvända kod och på så sätt kunna utveckla system i en snabbare takt. [15]

(18)

UML fungerar oberoende av programmeringsspråk samt vilken

utvecklingsprocess man befinner sig i. Med hjälp av ett standardiserat UML-språk kan man beskriva det grafiska utseendet av informationen. Genom att använda olika diagramtyper kan man visualisera olika strukturer eller händelser. De vanligaste typerna är klassdiagram, objektdiagram, “use case”-diagram samt aktivitetsdiagram.

Klassdiagram

Klassdiagrammet beskriver informationens struktur och dess

relationer. Strukturen grupperas i olika klasser som kan bestå utav en eller flera objekt. Dessa objekt har olika attribut som beskriver en egenskap hos ett ojekt, t. ex. “färg” för objektet “bil”. Klassen som hanterar bil-objektet skulle kunna benämnas som “fordon”.

Dessa klasser har relationer med varandra. Förutom att bestämma relationen mellan två klasser beskrivs också vilken information som krävs för att beskriva själva relationen. Klassdiagrammet beskriver översiktligt vilka klasser som finns och dess relationer.

Objektdiagram

Objektdiagrammet som är mycket snarlikt klassdiagrammet beskriver en del av klassdiagrammet; en fokusering inom ett specifikt

informationsområde. “Use case”-digram

“Use case”-diagram används för att beskriva aktiviteter och dess aktörer. De brukar användas då man vill beskriva en specifik uppgift, t. ex. bilförsäljning där kunder, försäljare och leverantörer är aktörer. Aktivitetsdiagram

Aktivitetsdiagrammet visar olika typer av flöden. Det kan vara dels informationsflöden mellan olika aktiviteter och objekt och dels varuflöden. Ett vanligt användningsområde är

verksamhetsbeskrivningar, t. ex. verksamhetsbeskrivningen i avsnitt 1.2.2. [16]

(19)

2.2.3 Normalisering

Det finns en del teorier och metoder för hur en god databasdesign bör se ut för att minimera logiska problem. Dessa benämns som

normalformer där oftast de tre första brukar nämnas. Första normalformen (1NF)

Om upprepade kolumner existerar skall dessa tas bort och placeras i en speparat tabell. Detta gör man för att få en god struktur i

tabellerna. En sådan åtgärd brukar benämnas som utbrytning av repetetiva attribut.

Andra normalformen (2NF)

Den andra formen innebär att man inte ska använda överflödig

information i en tabbell. Detta kan t. ex. vara att man anger kundnamn och kundadress i tabellen som hanterar en order. I ordertabellen bör det endast finnas med sånt som måste finnas med såsom exempelvis orderID och kundID. [17]

Tredje normalformen (3NF)

Om ett attribut är unikt identifierbart med ett annat attribut som inte är en nyckel, strider detta mot den tredje normalformen. Man bör istället placera dessa två i en egen tabell. Nedanstående exempel visar brott mot tredje normalformen och dess lösning. [18]

Ej 3NF 3NF

Figur 2-1: Tredje normalformen

2.2.4 SQL

SQL (Structured Query Language) är ett språk som används för att hantera relationsdatabaser. Man kan med språket skapa, förändra samt hämta data. Språket utvecklades av IBM i början av 1970-talet och hette ursprungligen SEQUEL (Structured English Query

Language). Namnet ändrades dock senare till SQL då det andra namnet redan var upptaget. Numera är SQL utökat med funktioner som hanterar den objekt-orienterade databasmodellen.

Språket baserade sig på publikationen “A Relational Model of Data for Large Shared Data Banks” av Dr. Edgar F. Codd som 1970 definierade relationsdatabasmodellen. Dr. Codd, som arbetade som forskare på IBM skapade ett stort intresse med teorin då det fanns stora

ekonomiska fördelar jämfört med tidigare modeller. IBM skapade sedan ett språk baserat på dessa principer, vilket 1992 blev en ISO-standard i sammarbete med ANSI som redan definierat en ISO-standard 1989. Sedan dess har ett flertal revideringar av standarden

Datorkomponent *KomponentID Produktnamn Leverantör Leverantörsadress Datorkomponent Leverantör *KomponentID Produktnamn Leverantör *Leverantör Leverantörsadress

(20)

genomförts.

Språket är designat för att styra databaser och är definionsmässigt inget fullständigt programmeringsspråk, men trots detta går det att åstadkomma avancerade databasoperationer. Genom att använda sig av kommandon (ibland benämnda som frågor) samt nyckelord kan man hantera databasen och dess innehåll. [19]

DML

Kommandon som hanterar databasens data kallas DML (Data Manipulation Language). Med detta avses operatorerna lägg till, uppdatera och ta bort. Denna kategori är den största delen av SQL. [20]

Alla frågor avslutas med semikolon. Nedanstående kommandon är de vanligast förekommande:

SELECT

Hämtar ingen eller flera rader av data. Eftersom man oftast är intresserad av data som uppfyller vissa krav (t. ex. de produkter som ligger inom ett viss prisintervall i ett e-handelssystem) finns en mängd nyckelord. De mest frekvent använda är följande:

FROM Beskriver vilken tabell som information ska hämtas ifrån.

WHERE Beskriver vilken information man är intresserad av.

LIKE Beskriver data som innehåller en definierad sträng.

ORDER BY Ordnar informationen (storleksordning, bokstavsordning) i stigande eller fallande ordning.

GROUP BY Beskrivning om vilken kolumn som man ska gruppera kring.

HAVING En metod som används för att filtrera grupperad data, ofta med hjälp av hjälpfunktioner som t. ex. COUNT().

Utöver dessa nyckelord förekommer hjälpfunktioner som utför vanliga matematiska operationer baserat på de utplockade posterna. Man använder sig också av logiska operatorer samt “regular expressions”, för att kunna beskriva de villkor som gäller för den eftersökta

informationen.

Ett exempel på ett SELECT-kommando:

SELECT * FROM Order WHERE KundID= 13543 AND Orderdatum != “2005-04-02” ORDER BY OrderID ASC;

Detta kommando hämtar all information om de ordrar som finns ifrån tabellen Order för kunden med kundnumret 13543, förrutom de som lagts 2005-04-02. Dessutom ordnas informationen i stigande ordning

(21)

baserat på OrderID-kolumnen.

INSERT

Detta kommando används för att lägga till data till tabellen. Man använder sig likt SELECT- kommandot av nyckelord. De som finns beskrivs nedan.

INTO Anger vilken tabell som data skall placeras.

VALUES Anger att data ska anges

För att ange vilken tabell, vilka kolumner och vilken data som skall matas in i tabellen används parenteser med kommaseparerat innehåll. Ett exempel nedan demonstrerar INSERT-kommandot.

INSERT INTO Order (OrderID, KundID, Datum) VALUES (223936, 13543, “2005-04-07”);

Kommandot lägger till data för en ny order i tabellen Order. Själva orderinformationen (vilka produkter och antal) anges i en annan tabell då man bryter ut repetetiva attribut.

UPDATE

Kommandot UPDATE används för att ändra i en redan skapad rad. Man brukar använda sig av nyckelordet WHERE för att ange vilken information som ska ändras. Följande exempelvis visar kommandots struktur.

UPDATE Order SET KundID=”34556” WHERE OrderID=”223936”;

Kommandot ändrar kundID:t till 34556 för den post som har OrderID:t 223936.

DELETE

Detta kommando raderar en eller flera poster i en tabell. I nästan alla fall används WHERE-nyckelordet för att undvika radering av alla existerande poster i tabellen. Exemplifiering av kommandots utseende nedan.

DELETE FROM Order WHERE OrderID=”277936” ;

Detta kommando raderar den post som beskriver Ordernr. 277936. Följande kommando förstör dock det informativa system som

numreringen representerar. Det kommer inte längre finnas 277936 stycken ordrar lagda i systemet då man tagit bort en eller flera. I vissa fall är det motiverat att i en extern miljö använda en funkion som indexerar om alla poster så att numret stämmer. Eftersom detta är en komplicerad åtgärd för CPUn, är det inte en god metod om det

handlar om stora mängder data. Man kan exempelvis istället räkna alla poster med COUNT() för att få den efterfrågade informationen. [19]

(22)

DDL

En annan kategori av SQL-kommandon är de som har benämningen DDL (Data Definition Language). Med detta menas de kommandon som hanterar och definierar den datastruktur som ska beskriva informationen. I praktiska ordalag handlar det om vilken uppbyggnad en tabell har; vad den ska heta, vilka variabeltyper som används för kolumner samt egenskaper som nycklar samt annat som har med själva tabellens funktionalitet att göra. Dessa kommandon är främst CREATE, DROP och ALTER. [20]

CREATE

Kommandot som skapar en tabell i en databas. Ett exempel nedan demonstrerar hur det används:

CREATE TABLE Företagsuppgift

( FöretagsuppgiftID TINYINT UNSIGNED NOT NULL PRIMARY KEY, Företagsnamn VARCHAR(20), Adress VARCHAR(20), Postnummer VARCHAR(10), Ort VARCHAR(20), Telefonnr VARCHAR(15), Mobiltelefonnr VARCHAR(15), Epostadress VARCHAR(50), Organisationsnr VARCHAR(20), Momsregnr VARCHAR(20), Bankgiro VARCHAR(15), Postgiro VARCHAR(15) );

Kommandot skapar tabellen Företagsuppgift, där FöretagsuppgiftID är nyckeln. Med nyckelordet “NOT NULL” anges att attributet måste matas in. Gör man inte det skapas inte posten i tabellen.

Likt programmerings-språket C beskrivs vilken datatyp som skall användas för varje attributet. En unsigned tinyint motsvarar en unsigned char i C (8 bitar). Variabeltypen VARCHAR är en

strängvariabel där man anger längden (antal tecken) inom parentesen. Lagringsmässigt tar en VARCHAR upp (antal_tecken + 1) Byte. [17] CREATE används också då man från början skapar databasen:

CREATE DATABASE Quickmatch;

DROP

Detta kommando raderar en tabell eller databas. Nedanstående exempel visar dess användning där man först raderar tabellen “Företagsuppgift” och sedan databasen där tabellen fanns.

DROP TABLE Företagsuppgift; DROP DATABASE Quickmatch;

(23)

ALTER

Kommandot ALTER används för att ändra egenskaper för en tabell, t. ex. ta bort en kolumn, lägga till en kolumn eller specificera att ett särskilt attribut måste matas in. Med hjälp av nyckelorden ADD, DROP eller CHANGE åstadkomms detta. Detta är exemplifierat nedan.

ALTER TABLE Företagsuppgift,

ADD COLUMN Företagsbeskrivning VARCHAR(100), CHANGE Epostadress epost VARCHAR(50) NOT NULL, DROP COLUMN Mobiltelefonnr;

Kommandot lägger till kolumnen “Företagsbeskrivning”, ändrar egenskaperna (attributnamnet och “NOT NULL”-egenskapen) för attributet “Epostadress” samt tar bort kolumnen “Mobiltelefonnr”. [19]

DCL

Den sista kategorin som beskriver SQL-kommandon är DCL (Data Control Language). Den hanterar det behörighetssystem som finns i databasservern. [21]

Med hjälp utav kommandona GRANT och REVOKE kan man beskriva vad respektive användare kan komma åt i databasen. Med GRANT ger man behörighet, medan med REVOKE tar man bort behörigheter. Exemplet nedan demonstrerar syntaxen.

GRANT FULL PRIVILEGES ON Quickmatch.* TO mysql@localhost IDENTIFIED BY 'lösenord' WITH GRANT OPTION;

Kommandot ger alla rättigheter för databasen “Quickmatch” till

användaren “mysql” på den lokala datorn. Som åtkomstmetod sätts ett lösenord. [19]

2.2.5 Databasservrar

Nedanstående databasservrar baserar sig främst på

relationsdatabasmodellen. Denna kategori är i dagsläget den vanligaste och därmed fokuseras området.

IBM DB2

IBMs databasserver DB2 har funnits sedan början av 1980-talet. Den var den första som använde sig av det standardiserade språket SQL. Servern baseras på ORDBMS och hanterar därför även

egendefinierade datastrukturer.

Servern går att köra på ett flertal plattformar, bl. a. på UNIX-system, Windows och Linux. Det går att adminstrera dels via en

kommandotolk och dels via GUI (Graphical User Interface). Databasservern har ett stort API-stöd (Application Programming Interface), bl. a. C,C++, Fortran, Java, Perl, Python, PHP och .NET. [22]

(24)

Microsoft SQL server

Microsofts databasserver SQL server baserade sig ursprungligen på databaskod ifrån programvaran Sybase SQL server som Microsoft sedan byggde vidare på. Serverprogramvaran finns i ett flertal olika versioner för olika tillämpningar, dock endast till

Windowsplattformen.

Databasen baserar sig på relationsmodellen men till skillnad från de flesta andra databasservrar baserar det sig inte på SQL, utan något som kallas för T-SQL (Transact-SQL). Detta språk är en utbyggnad av det standardiserade SQL-92.

En fördel med serverprogramvaran är om man baserar hela sin verksamhet på Windowsplattformen då servern är starkt bunden till operativsystemet. [23, 24, 25]

MySQL

MySQL är en databasserver som främst utvecklas av det svenska MySQL AB. Programvaran använder sig av open sourcemodellen som utvecklingsmodell. Detta innebär att all källkod till programmet är öppet för alla och det är tillåtet att göra egna modifierar.

Programmerare i hela världen är med och utvecklar programvaran, något som gör att utvecklingen framskrider i en hög hastighet då inte bara anställda i företaget arbetar med koden.

På senare år har programvaran blivit mycket populär för webbaserade system, t. ex. LAMP-servrar (Linux Apache MySQL PHP). Den har också blivit populär för större databasdrivna system; bl. a. använder sig NASA, Google, Dow Jones (amerikanska börsen) samt Ericsson av programvaran.

MySQL använder sig av något som kallas dubbel licensmodell. Förrutom open sourcelicensen som kräver att källkoden ska vara öppen och fri finns även en kommersiell licens. Denna används av företag som vill använda databasservern i sin produkt men som vill tillämpa closed sourcemodellen där koden inte är fri. Denna

licensmodell kostar pengar.

Databasservern baserar sig på relationsmodellen och har både ett kommandotolkgränssnitt och ett GUI. Den använder sig av SQL som databasspråk, vilket till och med anges i servernamnet. [26]

Oracle

Oracle är en databasserver som likt de flesta andra servrar på

marknaden baserar sig på relationsmodellen. Servern introducerades 1977 och har varit en av de största aktörerna på marknaden. Oracle brukar främst användas för tyngre databasdrivna applikationer då den har väldigt avancerade funktioner.

Servern har ett stort plattformsstöd, där bl. a. UNIX, Windows, Mac OS X och Linux finns med bland de utmärkande operativsystemen. Databas-applikationen var den första kommersiella RDBMS som implementerade Linuxstöd.

(25)

att hantera databasen. [27,28]

2.3 Sidbeskrivningsspråk

2.3.1 HTML

HTML (Hyper Text Markup Language) är en standard samt ett språk som används för strukturering av text, ljud, bild och inbyggda objekt i exempelvis webbsidor eller e-post. Texten inkapslas i så kallade HTML- taggar som gör att texten, områdena i dokumentet samt innehållet får en struktur.

Standarden HTML styrs från W3C (World Wide Web Consortium) som har hand om definitionen av nya standarder såväl som ansvar för modifiering av befintliga standarder. En annan organisation som har ännu bredare uppgift och ansvar är IETF (Internet Engineering Task Force). Deras uppgift är att ta hand om samt definera

Internetteknologi. [29]

Skapandet av HTML sker av författaren som bestämmer hur strukturen kommer att se ut medan läsaren i sin tur kan styra hur innehållet skall presenteras. Filerna som skapas i HTML-formatet sparas med filändelsen “.htm” eller “.html”. Dessa filer innehåller taggarn som webbläsaren använder för att tolka och därefter presentera.

HTML innehåller fyra olika typer av taggar där varje tagg måste vara omringad med tecknen ”< >”. Nedanstående punktlista beskriver de kategorier av taggar som finns.

Strukturmärken: Beskriver textens storlek, t. ex.

<h1>Hello</h1>

Presentationsmärkning: Beskriver stil på texten, t.

ex. <i>Kursiv stil</i>

Hyperlänkanmärkningar: Används för att referera till

en annan sida, webbplats eller på Internet, t.ex. <a href=”http://ing.hj.se”>Ingenjörshögskolan</a>

Interaktiva element: Nyttjas vid skapandet av

knappar, listor samt interaktiva objekt. [30]

De mest grundläggande taggarna som används vid HTML-kodning av anges nedan.

<html> Varje HTML-sida börjar alltid med

“<html>”-taggen. Det är den som talar om för

webbläsaren att innehållet är ett dokuent i HTML-format.

(26)

<title> Används för bestämning av titeln för dokumentet.

<body> Definerar “body”-elementet.

<h1>-<h6> Anger storlek på rubriker; från rubrik1 till rubrik6, där rubrik1 har största storleken på tecknen.

<hr> Infogar en horisontell linje.

<p> Definerar en paragraf.

<br> Skapar en radbrytning.

<img> Definerar en bild.

<table> Används vid definition av en tabell.

Taggarna ovan är början på en HTML tagg men varje tagg måste också avslutas. Om man skapar exempelvis en “<table>”-tagg skall den avslutas med en “</table>”-tagg i slutet av tabellen. Det talar om för webbläsaren att tabellen är slut och att webbläsaren kan fortsätta tolka resten av koden. [31]

Skaparen bakom HTML heter Tim Barners-Lee som vid CERN (The European Laboratory for Particle Physics) uppfann HTML år 1989. Det möjliggjorde att man kunde utbyta samt presentera text och media i en struktur istället för fragmanterad text, ljud och bild. [32]

2.3.2 CSS

CSS (Cascading Style Sheets) används för att ändra utseende på en befintlig webbsida. Det skapades för att möta kraven från

webbdesigners och användarna.

CSS har funnits på webben sedan 1994 då CSS1-versionen skapades. Idag används version CSS2 som stöds av de flesta webbläsare på marknaden. Skaparna bakom CSS heter Håkon Wium Lie och Bert Bos.

Genom att infoga en CSS fil i t. ex. ett HTML-dokument kan man bestämma utseende på webbsidan utan att behöva skapa nya taggar. Tekniken nyttjas för att anpassa dokumentet till skärmupplösning, färgdjup, installerade typsnitt samt hänsyn till datoryp.

Så gott som alla dagens webbplatser använder CSS. För att infoga en CSS stilmall i ett HTML-dokuemnt kan man skriva följande:

<link rel=”stylesheet” type=”text/css” href=”style.css”>

Raden ovan specificerar att webbläsaren skall tolka filen som en stilmall av typen ”text/css”. Sökvägen till CSS-filen skrivs efter ”href”-deklarationen. Förutom att CSS styr layout på en webbsida, bidrar den till överskådligare HTML kod samt resulterar i en snabbare

(27)

laddning av sidan. [33]

En CSS syntax består av tre delar: en ”selector”, ett “property” samt ett “value”.

Selector {property: value}

Selector är vanligtvis en HTML-tagg som defineras medan “property” är attribut som skall ändras, där varje egenskap kan innehålla ett värde. Värdet och egenskapen är separerade med kolon och är omringande med måsvingar ”{}”:

body {color: black}

Exemplet ovan betyder att body i dokumentet skall ha svart bakgrund. Om ett värde innehåller flera ord måste dessa skrivas inom

citationstecken t. ex enligt nedanstående exemplifiering:

p {font-family: ”sans serif”}

Om det är mer än en egenskap som skall defineras måste

egenskaperna separeras med semikolon. Exemplet nedan visar hur man skriver en centrerad text i blå färg samt med teckensnittet Arial.

p { text-align: center; color: blue; font-family: arial }

Man kan även gruppera flera selectors genom att separera selectors med kommatecken:

h1,h2,h3,h4 {

color: red }

Med en “class selector” går det att definera olika stilar för en och samma HTML-element. Om man exempelvis vill skapa hyperlänkar vars understrukning skall försvinna när man för över muskpekaren över länken, skrivs följande:

a:link { text-decoration: underline; color: blue} a:visited {text-decoration: underline; color: blue} a:active {text-decoration: underline; color: red} a:hover {text-decoration: none; color: blue}

Det går även att infoga kommentarer i CSS stilmallar för att förklara koden. Detta underlättar vid framtida kodbearbetning. Kommentaren ignoreras av webbläsaren. En CSS kommentar börjar med ”/*” och slutar med ”*/”. En kommentar kan se ut enligt följande exempel:

/* Detta är kommentar */ p {text-align: center;

(28)

/* En ytterliggare kommentar */ color: red} [34]

2.3.3 XHTML

XHTML (Extensible Hyper Text Markup Language) är en

vidareutveckling av HTML. Språket är inspirerat av XML (Extensible Markup Language).

Det nya alternativet erbjuder webbutvecklarna att designa och definera innehållet mer konkret; t. ex. boktitel, publikations datum och andra definitioner som liknar en databasstruktur istället för att presentera dem som kursiv, fet, blå text. Den största skillnaden mellan HTML och XHTML är standarden som bestämmer taggarnas utseeende. Medan HTML är mer ”förlåtande”, är XHTML strikt i sin form. Dessa skilnader omfattar att:

• Alla taggar måste vara ihopparade eller har ett sluttagg ”/>”.

• Alla attribut skrivs inom citationstecken.

Alla attribut måste presenteras som par: namn=”värde”

• Alla taggar och attribut måste skrivas som gemener.

Attribut är egenskaper som förändrar beteende för en specifik tagg. Om man vill förändra bredden på en horisontell linje ”<hr>” kan man bestämma dess bredd med attributen ”width”; t.ex.

<hr width=”30%” />. [35]

Det finns tre olika versioner av XHTML 1.0 vilka motsvarar respektive HTML 4.01 versioner:

XHTML 1.0 Strict är den versionen av XHTML som

skiljer sig mest från HTML där många element och attribut som används i HTML 4.01 är borttagna.

XHTML 1.0 Transitional är skapad för att underlätta

övergången från HTML. Den tillåter att vissa element och attribut som inte används i XHTML 1.0 Strict kan användas; t. ex. <center>, <u>, <strike> och

<applet>.

XHTML 1.0 Frameset låter som namnet antyder skaparen

att använda ”fremesets” precis som i vanliga HTML.

Vid kodning av XHTML är det viktigt att stänga alla taggar. Några av de mest förekommande felen som webbutvecklare gör är beskrivna nedan.

Element utan sluttagg

Fel: <br> Rätt: <br />

(29)

Ej avstängning av element som inte är tomma.

Fel: <p>Paragraf 1.<p>Paragraf 2

Rätt: <p>Paragraf 1.</p><p>Paragraf 2.</p>

Utebliven specifikation av alternativ text för bilder.

Fel: <img src=”img/bil.jpg” />

Rätt: <img src=”img/bil.jpg” alt=”Volvo” />

Skrivning av text direkt i body-delen av dokumentet.

Fel: <body>Välkommen till vår hemsida.</body>

Rätt: <body><p>Välkommen till vår hemsida.</p></body> [36]

2.4 Implementationer av HTTP-protokollet

2.4.1 Servrar

En webbserver är en nätverkstjänst som främst förmedlar HTML-filer till sina klienter med hjälp utav HTTP-protokollet. Klienter skickar så kallade “HTTP Requests” till servern där det efterfrågade anges. Servern skickar tillbaka ett svar med hjälp av ett “HTTP Response”. Det efterfrågade datat kan vara i princip vad som helst, men de mest vanliga typer av data är HTML-filer, CSS-filer samt bilder som sedan klienten tolkar.

De vanligaste serverprogramvarorna beskrivs nedan. De utgör tillsammans en mycket stor andel av Internets webbservrar. [37] Apache

Apache är i dagsläget den mest populära servern. Den baserar sig på open sourcemodellen och är därmed tillgänglig för alla att använda och modifiera. Programvaran baserades ursprungligen av koden till NCSA HTTPd 1.3 som en grupp människor via Internet började patcha, då utvecklingen av programvaran gick för långsamt. Dessa patchar koordinerades och till sist döptes projektet till Apache. Numera finns det inte kvar någon NSCA-kod i projektet då hela

apache har skrivits om ifrån grunden i och med apache 2.x-serien. [38] Servern kan på grund av den öppna källkoden köras på ett stort antal operativsystem. Programvaran har därför också fått många

utökningar genom ett modulsystem. Några mycket vanliga utökningar är PHP och SSL som moduler samt Perl och Python via CGI-interfacet. [39]

Den organisation som adminstrerar Apacheprojektet heter Apache Software Foundation. Det skapades 1999 och är en ideell organisation med syftet att koordinera utvecklingen av apacheprojektet. En annan funktion som organisationen har är att skydda utvecklare mot

potetiella legala tvister, samt se till att apachevarumärket inte missbrukas av företag. [40]

(30)

IIS

IIS (Internet Information Services) är en servertjänst av Microsoft som hanterar ett flertal olika protokoll. De vanligaste av dessa är HTTP och secure HTTP, FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol) samt NNTP (Network News Transfer

Protocol). [41]

Serverfunktionaliteten för dessa protokoll finns att tillgå via något som kallas för ISAPI (Internet Service Application Programming Interface). Detta API anropas av IIS när t. ex. när en inkommande klient-PDU (Protocol Data Unit) tas emot. [42]

ASAPI baserar sig på Three-tier arkitekturen, som baserar sig på principen om modularitet samt klient-serverteknologi. Med detta menas att användargränssnitt, affärslogik, datalagring samt dataåtkomst utvecklas i separata moduler. Syftet med detta är att minimera beroendet mellan de olika delarna, något som medför att man kan köra modulerna på separata plattformar. Ska man porta något till en annan plattform behöver man inte skriva om all kod utan endast t. ex. Användar-gränssnittet. En annan stor fördel med denna modulariserade arkitektur är att man kan skriva om delar av koden vid teknikskiften och därmed snabbt kan anpassa sig till nya

förhållanden. [43, 44]

IIS stöder förrutom vanlig HTTP-funktionalitet också tjänster för dynamiskt genererade webbsidor där ASP och ASP.NET är stödda av Microsoft. Tredjepartleverantörer har skapat stöd för PHP och Perl till serverprogramvaran. En nackdel med ISS är dock att den enda

plattformen som stöds är Microsoft Windows. [45] Zeus

Zeus är en webbserver som skapats av företaget Zeus Technology. Den finns till Linux och UNIX-plattformen och har ett välutvecklat stöd för virtualhosting samt möjligheten för att köra ett stort kluster. Programvaran har vunnit prestandatester och anses som en av de snabbaste på marknaden. Servertjänstens inriktning är stora webbsystem som har höga krav på prestanda, tillförlitlighet och säkerhet. [46]

Zeus stöder ett stort antal olika gränssnitt. Det stöder CGI, FastCGI, NSAPI, ASAPI, SSI, Java servlets, Front page extentions samt PHP. I och med CGI-gränsnittet stöder det därmed också Perl. En nackdel är dock priset som börjar på 1700 dollar för en server. [47]

(31)

2.4.2 Klienter

Internet Explorer

Historia

MSIE (Microsoft Internet Explorer) är en webbläsare som utvecklats av Microsoft. Webbläsaren är inbyggd i operativsystemet Microsoft Windows och är idag den mest använda webbläsaren på Internet. Den har sina rötter från Spyglass Inc. (version av Mosaic) som Microsoft licensierade 1995.

Den första versionen av Internet Explorer lanserades i Augusti 1995. Den andra versionen i raden innehöll stöd för SSL, cookies, VRML samt Internet-nyhetsgrupper. Internet Expolorer 3.0 har sedan Windows 95 OSR2 (Operating System Release 2) varit inbyggd i operativsystemet och därmed blev gratis. Nyheterna i tredje utgåvan var bl. a. Internet Mail, News 1.0, Adressbok, Microsoft Netmeeting, Cascading Style Sheets samt stöd för Windows Media Player.

Versionen 4 lanserades i Oktober 1997 med den största nyheten att man kunde aktivera “Active Desktop”, som kunde visa webbinehåll på skrivbordet. Ett år senare presenterades version 5 med stöd för XML/XSL, “bi-directional text” , “ruby text” samt CSS 1 och 2.

Framtid

Senaste versionen i skrivande stund är Internet Explorer 6 men utgåvan av Internet Explorer 7 är under utveckling och kommer att lanseras som testversion under sommaren 2005. Webbläsaren har under en tid tillbaka utvecklats även för andra operativsystem såsom för Macintosh, Solaris och HP-UX (Hewlett Packard – UNIX).

Utvecklingen för de övriga operativsystemen har avbrutits och fokusering ligger nu enbart på Windows.

Användning av IE har fram till 2004 varit i stor majoritet och det är det fortfarande idag, dock börjar IE tappa andelar allt mer för allternativa webbläsare som Mozilla Firefox, Safari och Opera.

Utgåvan av Internet Explorer 7 förväntas fungera under Windows XP, Windows Server 2003 SP 1 men framförallt för framtida

operativsystemet som går under benämningen Longhorn som väntas bli klart år 2006.

Finesser

Inbyggda finesser som hittas i Internet Explorer är bl.a följande: • Inbyggd FTP-klient.

• Förhandsgranskning av utskrift.

• Pop-up blocker (enbart för SP2).

• Automatisk uppdatering av tillägg.

(32)

• Möjlighet att acceptera eller avböja kakor (coockies).

Webbstandarder

Trots många år på nacken har Microsoft inte lyckats utveckla Internet Explorer så att det följer alla rekommendationer. HTML och CSS är fortfarande inte implementerade korrekt och är ofullständiga. Det saknas stöd för exempelvis “<abbr>”-taggen i HTML 4.01 standarden samt “float-margins” som är standard för CSS1.

Vidare saknas det stöd för PNG-alfakanal som resulterar att transparansen visas i grått, vitt eller annan färg beroende vilken bildredigerare som har använts. Övriga bildformat som inte stöds fullt ut är JPEG där det saknas stöd för visning av progressiv JPEG.

Internet Explorers stöd för XHTML är begränsat trots att XHTML 1.0 är bakåtkompatibel med HTML 5.0. Om en XHTML-sida är kodad med den nya MIME-typen “application/xhtml+xml”, känns den inte igen av IE, utan tolkas som en nedladdningsfil istället. Problemet löses genom att koda webbsidan på det gamla sättet med MIME typ text/html eller att manuellt redigera i Windows registret för att anpassa IE till de nya kraven.

Passering av innehåll i HTTP 1.1 stöds inte fullt ut av Internet

Explorer då webbläsaren inte kan specificera i sina anrop vilka MIME typer och encodings den kan acceptera.

Med tanke på att Internet Explorer är utvecklad med stor feltolerans har det också bidragit att webbläsaren inte kan tolka webbsidorna som är kompatibla med W3Cs standarder. I värsta fall kan

webbläsaren krascha på grund av detta. Några buggar är dock åtgärdade i IE för Windows XP. [48]

Mozilla Firefox

Mozilla Firefox är en plattformsoberoende webbläsare som är utvecklad av Mozillastiftelsen tillsammans med hundratals frivilliga utvecklare. Det var Dave Hyatt och Blake Ross som startade

utvecklingen av Firefox projektet som ett experimentellt område under Mozilla projektet. Nuvarande ledare för utvecklingen av Mozilla Firefox är Ben Goodger.

Webbläsaren använder XUL (XML User Interface Language) gränsnitts-språket, vilket gör det möjligt att kunna byggas ut med olika tillägg. Renderingsmotorn som används i webbläsaren är Mozillas egna så kallade “Gecko layout engine”.

Första utgåvan av webbläsaren gick under namnet Phoenix som lanserades 1:a September 2002. Eftersom det redan fanns ett företag under samma varumärke som utvecklade BIOS-system, byttes namnet

(33)

till Mozilla Firebird. Det visade sig senare att Firebird var namnet på en databas-server och för att undvika förvirring byttes namnet till Firefox i December 2003.

Första utgåvan (v. 1.0) av Firefox presenterades 9:e November 2004. Innan den lanserades fick den stor mediauppmärksamhet genom Forbes och Wall Street Journal. Reklamkampanjen resulterade i över 25 miljoner nedladdningar av webbläsaren på 14 veckor. Idag är Mozilla Firefox en av de mest använda open source-applikationerna.

Framtid

Internet Explorer är den mest utspridda webbläsaren på marknaden idag, men Mozillastiftelsen hoppas att webbläsaren kommer att stå för 10% av användningen på Internet i slutet av 2005. Målet som Mozilla har satt upp är enligt analysföretaget WebSideStory realistiskt och uppnåeligt.

Finesser

Firefox har finesser såsom tabbad bläddring, “live bookmarks”, “pop-up blocker”, stöd för web standarder samt en utbyggnadsfunktion som möjliggör förändring av funktionaliteten i webbläsaren. Tabbad

bläddring innebär att användaren inte behöver öppna flera fönster för att surfa på flera olika sidor på Internet. Istället används flikarna som gör det möjligt för användaren att i ett och samma fönster befinna sig på flera olika sidor samtidigt. I övrigt finns det även möjligheter att installera Firefox på en USB-disk, MP3 spelare, extern hårddisk, ZIP enhet eller på en CDRW skiva. Projektet är utvecklad av John Haller och kallas för Portable Firefox.

Standarder

Mozilla Firefox stöder nästan alla W3Cs rekommendationer.

Standarder som stöds av Firefox är HTML, XHTML, CSS, JavaScript, MathML (Mathematical Markup Language), XSL (eXtensible

Stylesheet Language) och Xpath (XML Path Language). Dessutom har Firefox stöd för PNGs alfa kanal, vilket saknas helt i Internet Explorer. Förutom de mest vanliga rekommendationerna har Mozilla Firefox även stöd för CSS Level 3 som redan är implementerad i senaste versionen av webbläsaren. Firefox-teamet har jobbat vidare och utvecklat stöd för nya standarder som SVG (Scalable Vector

Graphics), APNG (Animated Portable Network Graphics) samt Xforms. [49]

Safari

Historia

Webbläsaren Safari är utvecklad av företaget Apple Computer, Inc. och är enbart kompatibelt med Apples egna operativsystem Mac OS X. Fram till Juni 2003 har Microsoft utvecklat Internet Explorer för Mac, men efter att Microsoft avbröt utvecklingen togs IE bort som

standardwebbläsare ifrån Mac OS X. Första beta av Safari (v. 0.8) publicerades den 7:e Januari 2003 på Macworldkonferensen. Den 23:e

(34)

Juni 2003 blev Safari standardwebbläsare i Mac OS X med många finesser samt utvecklat stöd för webstandarder.

Den interna layoutmotorn WebCore är lanserad under GNU Lesser General Public License som resultat av att Safaris kod för rendering av webbsidor är baserat på Konquerors KHTML-motor. Även andra delar av koden som Apple har förbättrat har släppts fritt, men källkoden för resten av webbläsaren finns ännu inte tillgänglig.

Framtid

Senaste versionen av Safari 2.0 är under utvecklig och väntas bli klart den 29:e April 2005. Senaste utgåvan kommer att lanseras

tillsammans med Mac OS X v10.4 och kommer att få stöd för RSS (Really Simple Syndication eller Rich Site Summary) samt Atom-läsare.

Finesser

Utvecklarna bakom webbläsaren Safari har lagt mycket krut på finesser och användarvänlighet. Bland innovativa funktioner finner man ett “+”- tecken vid adressfältet som gör det möjligt att lägga den aktuella webbsidan i bokmärken. Direkt i adressfältet finns det

möjlighet att se vad webbsidan har för innehåll. Om man besöker en webbplats som skickar ut RSS visas en ikon som indikerar och

informerar besökaren om att sidan visas som en RSS sida. Sedan finns det möjlighet att visa längden på en RSS sida, sortera den efter tid, datum, titel och källa direkt i webbläsaren. Den framtida versionen 2.0 kommer att erbjuda privat bläddring (som inte lagrar information om vilka sidor som har besökts), möjlighet att söka igenom bookmärken, möjlighet att arkivera och maila webbsidorna samt en hastighet som kommer att vara 1.8 gånger snabbare än i version 1.2.4. I skrivande stund är Safari dessutom den snabbaste webbläsaren på marknaden enligt Apple.

Standarder

Safari är utvecklat med bra stöd för W3Cs rekommendationer. Stöd av PNG stöds fullt ut av Safari; både full alfa och gamma. Vidare stödjer Safari CSS, DHTML, DOM nivå1 och XML redan från betaversionen (Februari 2003). [50]

2.4.3 Dynamisk webbfunktionalitet

ASP

ASP (Active Server Pages) är ett scriptspråk som skapats av Microsoft för att skapa dynamisk webbfunktionalitet till IIS. Det skapades 1996 och har sedan dess reviderats tre gånger. Den sista revideringen ledde till ASP.NET som numera håller på att ta över det gamla ASP (brukar benämnas som “classic ASP”).

Både ASP och ASP.NET har databasgränssnitt till olika databaser. Ofta används gränsnittet ODBC (Open DataBase Conectivity), som är ett standardiserat gränsnitt för att ansluta till DBMS.

References

Outline

Related documents

Vi är därför positiva till att länsstyrelsen ska ha möjlighet att invända mot en anmäld kommun eller del av kommun även i icke uppenbara fall, om det vid en objektiv bedömning

Graden av arbetslöshet och av sysselsättning, andelen mottagare av försörj- ningsstöd, skolresultaten, utbildningsnivån och valdeltagandet är förhållanden som sammantaget

Justitiedepartementet har begärt att Botkyrka kommun ska inkomma med ett remissvar över promemorian ”Ett ändrat förfarande för att anmäla områden som omfattas av be- gränsningen

Boverket känner inte till att ordet invändning tidigare givits sådan långtgående betydelse och rätts- verkan i svensk rätt.. Inte heller synes ordet ges sådan betydelse enligt

Delegationen för unga och nyanlända till arbete har beretts möjlighet att lämna synpunkter på promemorian Ett ändrat förfarande för att anmäla områden som omfattas

Domstolsverket har bedömt att utredningen inte innehåller något förslag som påverkar Sveriges Domstolar på ett sådant sätt. Domstolsverket har därför inte något att invända

invändningar ska göras utifrån en objektiv bedömning och länsstyrelserna ska genom ”samverkan sinsemellan bidra till att urvalet av områden blir likvärdigt runt om i

Exempel 6 I nedanstående exempel markerar vi punkter (x(k),y(k) med en liten kvadrat (s står för square ) markerer och linjen mellan punkterna är röda, linjen är av typ