PRODUKTRAPPORT. Kristian Kjelsrud, s147787, 3IA Anastasia Poroshina, s140720, 3AB. Prosjektperiode: 4. januar mai 2010

Like dokumenter
KRAVSPESIFIKASJON. Kristian Kjelsrud, s147787, 3IA Anastasia Poroshina, s140720, 3AB. Prosjektperiode: 4. januar mai 2010

TESTRAPPORT Tittel på hovedprosjektet: Varebestillingssystem for Wokas Salg AS

Entobutikk 2.PRODUKTRAPPORT VÅR 2011

PROSESSRAPPORT. Kristian Kjelsrud, s147787, 3IA Anastasia Poroshina, s140720, 3AB. Prosjektperiode: 4. januar mai 2010

Produktrapport Gruppe 9

Kravspesifikasjon. Forord

PROSESSDOKUMENTASJON

Hovedprosjekt 2014, Høgskolen i Oslo og Akershus

Kravspesifikasjon. Leserveiledning Kravspesifikasjonen består av følgende deler: Presentasjon Om bedriften

Produktdokumentasjon. Madison Møbler Administrasjonsside og Nettbutikk

Entobutikk 1.KRAVSPESIFIKASJON VÅR 2011

Hovedprosjekt. Høgskolen i Oslo data/informasjonsteknologi våren 2011 Forprosjektrapport. K-skjema og ferie kalender

Entobutikk 3.TESTRAPPORT VÅR 2011

Kravspesifikasjon. Høgskolen i Oslo, våren 2011 Sted og dato: Oslo, 9. februar Gruppemedlemmer

KRAVSPESIFIKASJON. Gruppe 2. Hovedprosjekt, Høgskolen i Oslo og Akershus. Våren 2014 KRAVSPESIFIKASJON 1

Artist webside. Gruppe medlemmer Joakim Kartveit. Oppdragsgiver Tetriz Event & Management. Frode Mathiesen. Gry Anita Nilsen.

Dette dokumentet er en produktrapport for vårt avsluttende hovedprosjekt våren 2008 ved høgskolen i Oslo, for ingeniør - avdelingen.

Entobutikk 4.PROSESSRAPPORT VÅR 2011

Bachelorprosjekt i informasjonsteknologi, vår 2017

Denne rapporten er beregnet for dataansvarlig på Grefsenhjemmet, den som skal installere, vedlikeholde og modifisere systemet.

Hovedprosjekt i data ved Høgskolen i Oslo våren 2007

1 Forord. Kravspesifikasjon

Entobutikk FORPROSJEKTRAPPORT FOR ENTOBUTIKK VÅR 2011 LAGET AV GRUPPE 02

Kravspesifikasjon. 1. Innledning. Presentasjon. Innledning. Om bedriften. Bakgrunn for prosjektet

Utvikle en prototype for en digital versjon av helsekort for gravide. Programvareleverandør av ehelse-løsninger for helsevesenet

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

Eksamen i Internetteknologi Fagkode: ITE1526

Team2 Requirements & Design Document Værsystem

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

Kravspesifikasjon. Kravspesifikasjon Gruppe nr 10 Hårgalleriet. DATO 08. februar 2011 ANTALL SIDER 8 INTERN VEILEDER Tor Krattebøl

Kravspesifikasjon. Utvikling av moduler til CMS for bonefish.no. Gruppe 08-23

Produktrapport. Utvikling av moduler til CMS for bonefish.no. Gruppe 08-23

System Dokumentasjon. Team2. Høgskolen i Sørøst-Norge Fakultet for teknologi, naturvitenskap og maritime fag Institutt for elektro, IT og kybernetikk

Kravspesifikasjon MetaView

Oblig 5 Webutvikling. Av Thomas Gitlevaag

KRAVSPESIFIKASJON. Tittel: Pris++ Oppgave: Utvikle en Android applikasjon med tilhørende databasesystem. Periode: 1. Januar til 11. Juni.

Hovedprosjektet i Data Høgskolen i Oslo våren 2010

Heidenreich AS Industriveien 6 Postboks Skedsmokorset Telefon: Org: NO

Overordnet beskrivelse og arkitekturskisse

Båtforening på nett. Produktrapport

Lablink 2.x brukerveiledning

Kravspesifikasjon Gruppe nr ABTF

Publiseringsløsning for internettsider

CabinWeb BRUKERDOKUMENTASJON ET SYSTEM UTVIKLET AV DELFI DATA

Stikkord: Java EE, EJB, JSF, JPA, SWT, klient/tjener, Glassfish server, Application Client.

Entobutikk PROSJEKT NR TILGJENGELIGHET Åpen. Telefon: Telefaks:

Hovedprosjekt ved Høgskolen i Oslo våren 2011 CHARITY DOCTORS KRAVSPESIFIKASJON

Produktrapport. Produktrapport. Hjelpemiddel portal for Parkinsonforbundet

Requirements & Design Document

LocalBank Prosjektbeskrivelse

Eksamen i Internetteknologi Fagkode: IVA1379

1. Forord 2. Leserveiledning

S y s t e m d o k u m e n t a s j o n

SRD. Software Requirements and Design GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

Forprosjektrapport. Utvikle en plattform for digitalisering av foosballbord.

Forprosjektrapport. Gruppe 34. Magnus Dahl Hegge s153549

Kravspesifikasjon Hovedprosjekt ved Høgskolen i Oslo Våren 2008

Forprosjekt Hovedprosjekt ved Høgskolen i Oslo Våren 2008

KOM I GANG MED WORDPRESS En enkel guide for å hjelpe deg gjennom det grunnleggende i Wordpress

VEDLEGG 1 KRAVSPESIFIKASJON

Syste m documentation

Forprosjektrapport for Agresso R&D Ansettelsessystem Hovedprosjekt våren Skrevet av:

1. Innføring i bruk av MySQL Query Browser

Hovedprosjekt i data ved Høgskolen i Oslo våren 2007

Forprosjekt. Høgskolen i Oslo, våren

RUTEPLANLEGGINGSSYSTEM BRUKERVEILEDNING

Kravspesifikasjon. 1 Prosjektfakta. Medlemsregister for YXD-Kurdistan. Prosjektnummer: Ernad Fajkovic

Programmeringsrammeverk som kan installeres på Windows Mobiloperativsystem

InfoRed Publisering. - produktbeskrivelse. TalkPool WebServices Postboks Åneby

Oblig 2, SLI250 Et kortfattet analyse og designdokument for skifteregister på nett

Forprosjektrapport. Feilsøkingsverktøy for Homebase AS INNHOLD

Forprosjektrapport. Gruppe Januar 2016

Use Case Modeller. Administrator og standardbruker

Forprosjektrapport. Presentasjon. Sammendrag. Tittel Informasjonsplatform for NorgesGruppen

K-Nett. Krisehåndteringssystem for Norges vassdrags- og energidirektorat i en beredskaps- og krisesituasjon. av Erik Mathiessen

4.1. Kravspesifikasjon

Scan Secure GTS PAS

Tjenestebeskrivelse Webhotelltjenester

Gruppe 43. Hoved-Prosjekt Forprosjekt

Sikkerhet i Pindena Påmeldingssystem

Testdokumentasjon Presentasjon

HOVEDPROSJEKT HIO IU - DATA FORPROSJEKTRAPPORT GRUPPE 18

Testrapport Prosjekt nr Det Norske Veritas

1. Introduksjon. Glis 13/02/2018

[GILJE SELSKAPSLOKALER]

Sikkerhet i Pindena Påmeldingssystem

Presentasjon av hovedprosjekt ved HIST Nettbutikk

Tilkobling og Triggere

Kravspesifikasjon. Aker Surveillance. Gruppe 26 Hovedprosjekt ved Høgskolen i Oslo og Akershus. Oslo,

Innstallasjon og oppsett av Wordpress

Brukerdokumentasjon Prosjekt nr PayEx Logistics

>>21 Datamodellering i MySQL Workbench

Hovedprosjekt 2011 HO912A. Securitas IT portal. Forprosjektrapport. Adeel Yousaf Khan s Mats Klingenberg Naustdal s Stig Arild Ysterud

Styringsdokumenter. Studentevalueringssystem

1. SQL server. Beskrivelse og forberedelse til installasjon

Mamut Open Services. Mamut Kunnskapsserie. Kom i gang med Mamut Online Survey

Sikkerhet og tilgangskontroll i RDBMS-er

Entobutikk 5.BRUKERMANUAL VÅR 2011

Transkript:

PRODUKTRAPPORT Tittel på hovedprosjektet: Varebestillingssystem for Wokas Salg AS Medlemmer av gruppe 35: Joakim Larsen, s150070, 3AB Kristian Kjelsrud, s147787, 3IA Anastasia Poroshina, s140720, 3AB Prosjektperiode: 4. januar - 31. mai 2010 Intern veileder: Oppdragsgiver: Kontaktperson fra Wokas Salg AS: Ekstern veileder (Finbeck AS): Steinar Johannesen Steinar.Johannesen@iu.hio.no Wokas Salg AS Jan Otto Finne wokas@wokas.no Tlf: 23 19 43 20 Terje Christensen

1. Sammendrag Dette dokumentet er en produktrapport for vårt avsluttende hovedprosjekt ved Høgskolen i Oslo, avd. for ingeniørutdanning våren 2010. Rapporten skal beskrive produktet, dets oppbygging og virkemåte. Oppdragsgiveren til dette prosjektet er Wokas Salg AS, en av Norges mest kjente felgleverandører. Bedriftens webside manglet nettbasert varebestillingssystem og alle bestillinger utførtes manuelt av ansatte gjennom telefon eller e-post. Som et supplement til dette ønsket bedriften seg å få utviklet et system som kunne gi kunder mulighet til å bestille varer på nett. Denne løsningen imøtekommer behovet til Wokas Salg AS. Varebestillingssystemet gjør det mulig for: Administrator: - Se oversikt over alle varer, legge til bilder, vise varer uten beskrivelse, legge til beskrivelse - Se oversikt over alle kunder, redigere kundeinformasjon - Se oversikt over alle ordrer, redigere ubehandlede ordrer Brukere: - Se oversikt over varer og tilbehør - Søke etter varer i forhold til dimensjon, leverandør osv - Sortere varer etter dimensjon og leverandør - Legge varer inn i handlevognen, se total pris på utvalgte varer og slette varer fra handlevognen - Sende henvendelse (melding) til Wokas Wokas kunder: - Se oversikt over varer og tilbehør - Søke etter varer i forhold til dimensjon, leverandør osv. - Sortere varer etter dimensjon og leverandør - Legge varer inn i handlevognen, se total pris på utvalgte varer og slette varer fra handlevognen - Sjekke kunde informasjon og ordrehistorikk - Utføre bestilling - Få bestillingsbekreftelse - Sende henvendelse (melding) til Wokas I tillegg sendes det bestillingsbekreftelse til Wokas og ordrebekreftelse til kunde etter bestilling har blitt utført. Gruppen stod fritt til å bestemme GUI for systemet men vi tok hensyn til oppdragsgiverens ønsker og tilpasset produktet til den eksisterende nettside. 2

2. Forord Denne produktdokumentasjonen er beregnet for personene som skal vedlikeholde, installere, endre, markedsføre eller drive støtte på systemet. Produktdokumentasjonen inneholder informasjon om programmets oppbygging, virkemåte og funksjoner. Leseren bør ha gode kunnskaper om ASP.NET teknologien, erfaring med webprogrammering, grunnleggende forståelse og innsikt i databasedesign. Generelt gode datatekniske kunnskaper og kunnskaper innenfor systemutvikling vil også være en fordel. Det anbefales at leseren ser på kravspesifikasjonen og prosessdokumentasjonen for å få et større perspektiv på prosjektet. Produktdokumentasjonen er den største delen av hovedprosjektdokumentasjon. Den består egentlig av fire deler: den endelige kravspesifikasjonen, kode, produktrapporten og testdokumentasjonen for programmet. 3

3. Innholdsfortegnelse 1. Sammendrag...2 2. Forord...3 3. Innholdsfortegnelse...4 4. Innledning...5 4.1 Bakgrunn og mål...5 4.2 Kravspesifikasjon og produkt...5 5. Systemoversikt...6 6. Systemets oppbygging...7 7. Beskrivelse av produktet...9 8. Teknologi...10 8.1 Utviklingsmiljø...10 8.2 Verktøy...11 9. Brukergrensesnitt...14 9.1 Design...14 9.2 Struktur...17 9.3 Filhierarki...18 10. Programmering...19 11. Data og databaser...26 11.1 Databasestruktur...26 11.2 Foretningsregler...26 11.3 Lagrede prosedyrer...27 11.4 Kommunikasjon med databasen...27 11.5 ER-diagram...28 11.6 Tabeller...29 12. Sikkerhet...30 13. Avslutning...31 13.1 Fremtidige utvidelser...31 13.2 Konklusjon...31 14. Ordliste...32 15. Kilder...33 4

4. Innledning I denne delen forklares bakgrunnen og mål for oppgaven og beskrives samsvar mellom kravspesifikasjon og produkt. 4.1 Bakgrunn og mål Wokas Salg AS er en norsk bedrift - grossist som importerer bilfelger og selger de videre til bedrifter. Bedriften har en relativt enkel webside (www.wokas.no) av kun informativ karakter og mangler nettbasert varebestillingssystem som kan hjelpe til å spare tid og ressurser, gjøre bestillingsprosessen automatisert. Som et supplement til dette ønsket bedriften seg å få utviklet en løsning som kunne gi kunder mulighet til å bestille varer på nett. Hensikten med dette systemet blir å automatisere varebestillingsprosessen og gjøre det enklere for ansatte til Wokas å behandle bestillinger og for kunder å bestille varer. Prosjektets mål var å lage et brukervennlig nettbasert varebestillingssystem for Wokas Salg AS etter oppdragsgivers funksjonelle og tekniske krav. Grensesnittene til programmet skulle være oversiktlige og lette å bruke. Målet gikk ut på kvalitet, effektivitet, brukervennlighet, god design, kompatibilitet, sikkerhet av databasesystemet og ikke minst fleksibilitet for fremtidig endring (oversiktlig kode). I tillegg var gruppen opptatt av å utvide våre kunnskaper og erfaringer innen programmering og systemutvikling. 4.2 Kravspesifikasjon og produkt Kravspesifikasjon er en del av prosjektgjennomføringsprosessen som inngår i det å utvikle et produkt. Dette varebestillingssystem var lagt med utgangspunkt i kravspesifikasjonen som var utarbeidet tidligere i prosjektperioden. Det var tatt hensyn til de funksjonelle, tekniske og design kravene men dette betyr ikke at løsningen var bundet til alle betingelsene. Prosessen krevde oppfinnsomhet og kreativitet for å finne den optimale løsning. 5

5. Systemoversikt Systemet er primært et bestillingssystem. Det vil si at det er kun mulig å bestille varer og ikke kjøpe. Det er tenkt at programmet skal kunne utvides med betalingssystem senere når dette er ønskelig for bedriften. Systemet er satt opp på en slik måte at det kan motta ASCII filer med data fra hoveddatabase en gang om dagen, oppdatere eksisterende databasen med nye data og loggføre endringer. Videre blir ordredata fra bestillingssystemet konvertert til ASCII fil og sendt til hoveddatabasen til behandling. I tillegg sendes det bestilling til utskrift til Wokas Salg AS hver gang bestillingen får status behandlet (dette skjer når data har blitt sendt til hoveddatabasen) og ordrebekreftelse sendes til kunde hver gang bestilling er utført. Alle hendelser når det gjelder overføring av data er automatisert ved hjelp av scripting. Illustrasjonen beskriver grafisk oversikt over systemet. Hoveddatabase mottar ASCII filer med data fra systemetsdatabase Hoveddatabase Oppdaterte data sendes i ASCII filer fra hoveddatabasen til systemetsdatabase Kunde må logge inn på systemet for å utføre bestilling 1. Strukturen i varebestillingssystem Autentisert bruker 6

6. Systemets oppbygging Applikasjonen er bygd opp med en lagdelt arkitektur som inneholder presentasjonslag, virksomhetslogikk lag og dataaksess lag. Dette sikrer applikasjonen som kan gi maksimal ytelse samtidig som den er enkelt vedlikeholdbar. De ulike informasjonsobjektene ligger i databasen. Presentasjonslaget styrer hvordan de enkelte informasjonsobjekter presenteres for brukeren, gjennom XHTML i en vanlig nettleser, eller andre XML-baserte presentasjonsformer. Laget heter Websidene og består av master sider,.aspx sider som håndterer data inn og ut av.cs filer,.cs filer,.css filer og bilder. Virksomhetslogikk laget består av forretnings- og datalogikk og inneholder logikken som knytter ulike informasjonsobjekter og applikasjoner sammen. Kun komponenter som er definert i dette laget bruker tjenestene i dataaksesslaget. Virksomhetslogikk laget inneholder BLL og MODEL klasser. BLL handler om sikkerhet. Her blir alle inputer validert: det utføres validering av data som skal inn i databasen, gjennomføres sjekk for SQL injeksjon og at alle felter er utfylt riktig. Fra BLL overføres validerte dataene videre til DAL (dataaksesslag). MODEL representerer database entitetene (objektene) og er transportlaget fra databasen til presentasjonslaget. Dataaksesslaget er representert ved DAL klassene og inneholder funksjonaliteten for å behandle forespørsler til databasen. Dette er operasjoner som å legge til innhold, slette, modifisere, søke etc. (SQL spørringer). Hovedmålet med dette laget er å skjule databaseoperasjoner for lagene over, og å gjøre disse operasjonene så effektive som mulig. Dataaksesslaget benytter ADO.NET for å implementere denne funksjonaliteten. Ved bestilling sendes dataene til BLL, godkjennes og settes inn i databasen gjennom DAL. Ved overføring av informasjon fra databasen til applikasjonen transporteres dataene gjennom DAL og via MODEL. Diagram nedenfor illustrerer systemets oppbygging. 7

Presentasjonslaget (Websidene) BLL MODEL DAL ADO.NET Database SQL 2. Systemets oppbygging 8

7. Beskrivelse av produktet Varebestillingssystem er en webapplikasjon som arbeider mot en database. Systemet har tre roller: bruker, kunde og administrator. Brukersider fungerer som helt vanlige nyhetssider og informasjonssider for alle brukere. I tillegg kan brukere legge varer inn i handlekurven, søke og sortere varer, sende en henvendelse (melding) til Wokas. Men for å utføre en bestilling må bruker være pålogget som kunde av Wokas. Kundesider er kun tilgjengelige for registrerte medlemmer som logger seg inn med brukernavn og passord. Kunde kan sjekke kundeinformasjon og ordrehistorikk, utføre en bestilling og få bestillingsbekreftelse. Administratorsider lar en administrator ha ansvar for oppdateringer av kundeinformasjon, ordrer, varer og bilder. Administrator kan logge seg inn med brukernavn og passord og redigere på varebeskrivelser, bilder, kundeinformasjon og ordreinformasjon. Alt man trenger for å bruke systemet er Internett tilgang. 9

8. Teknologi Denne delen beskriver teknologiene og verktøy som er benyttet, og hva de er brukt til i dette systemet. 8. 1 Utviklingsmiljø I utviklingen av dette produktet var det brukt Microsoft ASP.NET 3.5 som rammeverk med C# som programmeringsspråk og Microsoft SQL Server som databasesystem. I tillegg var det benyttet CSS filer for designutforming, ADO.NET database akses for å koble applikasjonen mot databaser, Javascript og AJAX extentions for automatisering av kode. Nedenfor er det gitt en kort beskrivelse av teknologiens hovedelementer. Microsoft ASP.NET er basert på rammeverket.net og en samling teknologier rundt programvareutvikling fra Microsoft som først ble introdusert i 2001. Siden har plattformen fått fotfeste og er i dag en av de mest brukte utviklingsplattformene i verden. Microsoft benytter et mellomlag mellom applikasjon og operativsystem, ikke ulikt det som er brukt i Java-basert utvikling og er et rammeverk for applikasjoner. C# programutvikling er basert på å sette sammen funksjonsblokker i navneområder (namespaces) hvor et av de viktigste er System. En C#-bruker kan definere egne datatyper, bruke de innebygde, eller de fra.net rammeverket. Microsoft SQL Server er et relasjonsdatabaseadministrasjonssystem utviklet av Microsoft. Spørrespråket som benyttes er Transact-SQL. ADO.NET brukes i dataaksess lager (DAL) metodene til å få kobling mellom applikasjonen og SQL Server til å få tak i dataene. Javascript er et prototypebasert skriptingsspråk. Det er mest brukt innen webutvikling, og benyttes for kode som skal kjøres på klientsiden (i browseren). I vårt prosjekt var JavaScript brukt for eksempel til å lage skiftende bilder i Masterpage, varedetaljer og innlegging av kunder funksjonalitet. AJAX extentions er brukt i ASP.NET til å få AJAX funksjonalitet og som ferdig laget javascript i ASP.NET. CSS brukes for å skille form og innhold og gjør designet langt mer fleksibelt og funksjonelt blant annet med tanke på visning tilpasset ulike medier. Ved å bruke CSS gir man også brukeren en større mulighet til å overstyre sidens utseende, blant annet farger, kontrast og typografi. Teknologien er illustrert nedenfor. 10

SQL Server Database Dataaksess (ADO.NET) ASP.NET teknologi Foretningslogikk (C#, CSS) Visningslogikk (aspx, Javascript, AJAX extentions) Bruker 8. 2 Verktøy 3. ASP.NET teknologi Gruppen har benyttet webhosting tjenester av surftown.dk og fikk tildelt en egen virtuell server med Internet Information Server og SQL Server. Tilkobling mot webserver utføres ved bruk av publishing funksjonen innebygd i Visual Studio. Databaser lastes ned separat gjennom SQL kobling. Til dette formålet kan det enten brukes SQL Server Management Studio for å laste ned eksisterende tabeller ( insert into ) eller gjøres gjennom Visual Studio ved å forandre connection string i web.config filen og DAL pakke. Gruppen har brukt følgende verktøy i forbindelse med utviklingen: Microsoft Visual Studio for utvikling, SQL Server Management Studio for kobling mot databaser og Microsoft Office Visio for diagramtegning. 11

Microsoft Visual Studio er en programvare for utvikling av webapplikasjoner som forenkler utviklingsprosessen, debugging og feilsøking. 4. Microsoft Visual Studio SQL Server Management Studio er et verktøy for aksess, konfigurering, administrering og utvikling av SQL Server komponenter. 5. Microsoft SQL Server Management Studio 12

Microsoft Office Visio er et verktøy for Microsoft Windows som bruker vektorgrafikk til å lage diagrammer. 6. Microsoft Office Visio 13

9. Brukergrensesnitt 9.1 Design I denne delen skal det beskrives design, strukturen på grensesnittet og filhierarki. Produktet er tilgjengelig på følgende adresse: www.wokas.dk. Designstruktur er definert enkelt slik at det er menylinje over, søk og sorteringsmuligheter på venstre side og skjerm i midten. Slik masterpage er satt opp med en skjerm i midten hvor det vises alle undersidene. Menyen er statisk og er en del av grunndesignet som gjør den tilgjengelig uansett hvor man er systemet. Designet til løsningen matcher med den eksisterende siden til Wokas. Layout til systemet er brukervennlig, enkel å bruke og strukturert. Nedenfor er det representert noe GUI eksempler fra programmet. Bestill: 7. Bestil.aspx 14

Administrator side: 8. Administrator.aspx Minesider: 9. Minesider.aspx 15

Handlekurv: 10. Handlekurv.aspx Kontakt oss: 11. Kontaktoss.aspx 16

9.2 Struktur Illustrasjonen viser strukturen på grensesnittet i systemet. Hjem Bestill Varedetaljer Kundeopplysninger Handlekurv Kasse Kvittering Mine Sider Ordrestatus Ordredetaljer Logg inn Kundehistorikk Kontakt oss Varevisning Varedetaljer Masterpage Søk Administrator Kundevisning Kundedetaljer Avansert søk Sorter etter leverandør Ordrevisning Ordredetaljer Sorter etter dimensjon VarerFeilBilde Tilbehør 12. Struktur 17

9.3 Filhierarki Figuren viser hvordan de forskjellige filene ligger i de forkjellige mappene. 13. Filhierarki 18

10. Programmering I denne delen beskrives det hvilken del eller funksjon av systemet hver mappe og fil utgjør. I BLL (Business Logic Layer) Valideres alle opplysninger som sendes videre til DAL (Data Access Layer). I Admin_logikk.cs valideres det alle databasespørringer mot admintabellen. BLLstatic.cs inneholder statiske metoder som alle klasser i pakken BLL bruker for å sjekke etter SQL injeksjon. I ForretningsEntitet_logikk.cs valideres det alle database spørringer mot kundetabellene (kundenummer må være større enn 0, stringer sjekkes for SQL injeksjon). I Ordre_logikk.cs valideres det alle databasespørringer mot ordretabellene. Sikkerhet.cs inneholder statiske metoder for å kryptere passord. I Vare_logikk.cs valideres det alle databasespørringer mot varetabellene (stringer sjekkes for SQL injeksjon). I DAL(Data Access Layer) utføres det spørringer mot databasene for å hente ut, oppdatere, slette data fra tabellene. Dbstatics.cs inneholder statiske metoder som for eksempel connectionstring. IforretningsEntitet.cs er et interface som forteller hvilke metoder som skal implementeres kunde_repene. ForretningsEntitet_RepStub.cs implementerer interface IforretningsEntitet.cs. Klassen blir brukt under testing av forretningsentitet_logikk i pakken BLL. 19

ForretningsEntitet_Rep.cs implementerer interface IforretningsEntitet.cs. All direkte kobling mot kundetabellene i databasen skjer i ForretningsEntitet_rep.cs. IAdmin.cs er et interface som forteller hvilke metoder som skal implementeres. Admin_Rep.cs implementerer interface IAdmin.cs. All direkte kobling mot admintabellene i databasen skjer i Admin_rep.cs. Admin_RepStub.cs implementerer interface IAdmin.cs. Klassen blir brukt under testing av Admin_logikk i pakken BLL. Ivare.cs er er interface som forteller hvilke metoder som skal implementeres. Vare_Rep.cs implementerer interface Ivare.cs. All direkte kobling mot varetabellene i databasen skjer i vare_rep.cs. Vare_RepStub.cs implementerer interface Ivare.cs. Klassen blir brukt under testing av vare_logikk i pakken BLL. IOrdre.cs er et interface som forteller hvilke metoder som skal implementeres. Ordre_Rep.cs implementerer interface IforretningsEntitet.cs. All direkte kobling mot ordretabellene i databasen skjer i Ordre_rep.cs. Ordre_RepStub.cs implementerer interface IOrdre.cs. Klassen blir brukt under testing av Ordre_logikk i pakken BLL. I Logg loggføres det alt som skjer i databasene. Problem er for oss i gruppen og ikke brukt i systemet. 20

I DBScript ligger det informasjon om varer og kunder lagret i en tekstfil. FileReader.cs leser tekstfilene som er beskrevet nedenfor, prosesserer informasjonen og setter det inn i BLL.Vare_Logikk og BLL.ForretningsEntitet_Logikk. TextFile1.txt er en tekstfil som vi får fra Wokas. Her ligger lagret informasjonen om kundene. TextFileVare.txt er en tekstfil som vi får fra Wokas. Her ligger lagret informasjonen om varene. boltsirkelkildekode.txt er en tekstfil som inneholder informasjonen om boltsirkler. I MODEL ligger det alle klasser som representerer database entiteter. For eksempel diverse varetabeller joinet gir sammen alle egenskapene man har i klassen Vare.cs. Adresse.cs inneholder diverse attributter knyttet til en registrert adresse. Hver adresse har opp til to registrerte adresselinjer. Bedrift.cs inneholder diverse attributter knyttet til en registrert bedriftskunde. Subklasse av ForretningsEntitet.cs. ForretningsEntitet.cs inneholder diverse attributter knyttet til en registrert Kunde. Superklasse til Bedrift.cs og Person.cs. Hver kunde er enten Bedriftskunde eller Personkunde. Order.cs inneholder diverse attributter knyttet til en registrert ordre. OrdreLinje.cs inneholder diverse attributter knyttet til en ordrelinje i en ordre, for eksempel varenummer og antall. 21

Person.cs inneholder diverse attributter knyttet til en registrert personkunde. Subklasse av ForretningsEntitet.cs. Vare.cs inneholder diverse attributter knyttet til en registrert vare. For eksempel url til registrerte bilder, vare nummer osv. I CustomControls lages det eventuelt brukergrensesnitt kontroller. LinkBack.cs er en subklasse av System.Web.UI.WebControls.LinkButton. Setter postbackurl når kontrollen lastes inn til siden som ble besøkte før den siden (tilbake). ExtendedImageButton.cs er en subklasse av System.Web.UI.WebControls.ImageButton. Klassen har alle egenskapene til imagebutton og en egenskap vi har kalt HoverUrl, dvs når man peker med mus på denne knappen kan man velge å sette et bilde. I denne mappen ligger det alle aspx-filene som har med brukergrensesnittet og interaksjon med bruk å gjøre. Mappen inneholder alle bilder brukt i Websidene. I denne mappen ligger CSS filene brukt i kundesidene. Bestill.aspx viser oversikt over alle varene. Opplysningene hentes fra databasen og legges ut dynamisk med valideringssjekk av input. BestillingMaster.Master er Masterpage for hele webapplikasjonen. Default.aspx peker til Bestill.aspx. 22

I Handlekurv.aspx vises alle varene kunden har valgt og lagt inn i handlekurven. Det er mulig å endre på antall, slette varene og oppdatere handlevognen. HandleKurvEntitet.cs er en c# klasse som lagrer opplysninger om hver vare som er lagt i handlekurven (nummer, antall osv). Det lagres en liste av HandleKurvEntitet.cs i sesjonen «HANDLEKURV». Dette lagres også i en cookie hos bruker. I Kasse.aspx bekrefter man bestillingen. Etter at bruker har logget inn og trykket på Gå til kasse i Handlekurv.aspx kan bruker velge leveringsadresse. KontaktOss.aspx viser Wokas kontaktinformasjon. Siden inneholder et elektronisk skjema som kan brukes til å sende melding eller spørsmål til Wokas. I Kvittering.aspx vises det en bestillingsbekreftelse. Logginn.aspx er en autorisering for både kunde og administrator. Her logger man seg inn med brukernavn og passord. I SokeAlternativer.aspx kan det velges en eller flere kriterier å søke på: leverandør, dimensjon, boltsirkel, innpress og kategori. I StaticHelp.cs lagres det noen statiske metoder som brukes rundt om i websidene. I VareDetaljer.aspx kan man se varedetaljer og et større bilde av varen. I denne mappen ligger alle websidene som en innlogget bruker har tilgang til. 23

Denne mappen inneholder CSS filene brukt i Minesider sidene. I KundeHistorikk.aspx får man mulighet til å velge mellom å se på alle behandlede og ubehandlede ordre. I KundeOpplysninger.aspx kan man se på registrerte kundeinformasjon. MineSiderMaster.Master er Masterpage for alle undersidene til Minesider. I MineSiderMain.aspx får man mulighet til å velge å se oversikt over registrerte opplysninger, ordrer eller utføre søk. I OrdreDetaljer.aspx får se ordredetaljene(ordre linjene) i den valgte ordren. Bruker kan editere ubehandlede ordre. Ordren settes til behandlet med en gang, så denne funksjonaliteten er laget som en utvidelse av systemet. OrdreStatus.aspx viser ordrene til alle kunder etter valgte kriterier i kundehistorikk.aspx eller minesidemain.aspx. I denne mappen ligger det alle filene som har noe med administrative oppgaver å gjøre. Denne mappen inneholder CSS filene brukt i administratorsidene. AdminMaster.Master er Masterpage for Adminsidene. I KundeDetaljer.aspx vises det kundeinformasjom om en valgt kunde, disse detaljene kan administrator redigere. 24

I KundeVisning.aspx vises det opplysninger om alle registrerte kunder. I Logginn.aspx skjer det autentisering for administrator. I OrdreDetaljer.aspx vises det ordreinformasjon om en valgt ordre, disse detaljene kan administrator redigere. I OrdreVisning.aspx vises det opplysninger om alle registrerte ordre. I VareDetaljer.aspx vises det vareinformasjon om en valgt vare, disse detaljene kan administrator redigere. Administrator kan legge til bilder i tre forskjellige størrelser (liten, medium og stor). Disse bildene lagres på serveren, mens urlene til bildene lagres i database tabellen bildetabell. Det kan lagres så mange bilder i hver størrelse man ønsker, er det lagret mer enn et bilde i en størrelse trekkes det bare et bilde mellom de lagrede bildene. VareFeilBilde.aspx vises det alle bilder som har en ugyldig url lagret i database tabellen bildetabell. Bildetabell lagrer url på dette formatet «~/images/????.(jpg png...)» dvs relativ sti til fra rootfolder websidene. I VareVisning.aspx vises det opplysninger om alle registrerte varer. 25

11. Data og databaser I dette systemet er det brukt tre typer av data: data som eksisterer for en spesifikk side (mine sider), data som gjelder for en sesjon (bestilling, kundeinfo) og data som gjelder for hele applikasjonen (masterpage med meny). Data er lagret i databasen som blir grundig beskrevet i denne delen. 11.1 Databasestruktur Databasen er strukturert etter en arvbasert relasjonsmodell og normalisert slik at man unngår redundans og en entitet lett kan utvides med koblinger mot nye entiteter etter behov. For eksempel inneholder entiteten Vare kun den informasjon som er felles for alle varer, mens spesifikk tilleggsinformasjon lagres i egne entiteter. Ved å modellere databasen på denne måten passer man også på å skille mellom entiteten og eventuelle roller entiteten kan inneha. Dette er spesielt viktig for videre utvidelse og integrering av databasen. Et eksempel på dette er ForretningsEntitet som kan være enten en person eller en bedrift, men i begge tilfeller representerer denne entiteten rollen kunde. Hvis man ved en senere anledning skulle integrere dette systemet med bedriftens hoveddatabase, kan en bedrift også inneha rollen som leverandør og en person kan også være en ansatt. Ved å skille mellom entitet og rolle på denne måten kan man, i stedet for å måtte lage nye oppføringer for hver rolle, bruke den samme entitetens unike ID over hele systemet, noe som gjør databasen mer konsistent og lettere å vedlikeholde. 11.2 Forretningsregler De fleste av forretningsreglene i databasen har latt seg implementere ved hjelp av enkle tabellconstraints, men det er implementert triggere for å forhindre tap av data, for eksempel ved oppdatering av varelageret. Ved forandring i pris på et produkt, vil det automatisk opprettes en oppføring i en historietabell som tar vare på gammel pris og dato for forandring. INSTEAD OF INSERT triggere er også blitt brukt på flere tabeller for å forenkle innsetting og oppdatering. Et eksempel er poststedtabellen der en INSERT vil føre til en kontroll av hvorvidt poststedet er registrert fra før. Disse triggerne er lagt til for å sikre at innsettinger ikke feiler på grunn av eventuelle fremmednøkkelkollisjoner i andre tabeller og dermed for å sikre konsistens i dataene. 26

11.3 Lagrede prosedyrer Det har blitt laget lagrede prosedyrer for å utføre vanlige spørringer mot databasen. Dette er for å minske nettverkstrafikk da lagrede prosedyrer kjøres direkte i databasen og kompliserte spørringer kommer ikke lenger fra applikasjonen. Samtidig er det enklere å utføre operasjoner fra applikasjonen da man slipper å skrive kompliserte spørringer i koden. En annen fordel med lagrede prosedyrer er at man kan sette rettigheter på dem. Dette betyr at man kan øke sikkerheten på databasen ved å begrense rettigheter på selve tabellene, mens applikasjonen fremdeles kan få tilgang til de data den trenger gjennom de lagrede prosedyrene. For eksempel kan hovedapplikasjonen bare ha rettigheter til å bruke prosedyrene, mens hvis man er logget inn som administrator i applikasjonen har man andre rettigheter som gir en tilgang til selve tabellene. Ved en eventuell forandring i databasestrukturen vil det medføre mindre forandringer i koden av en applikasjon da man kun trenger å forandre på de gjeldende prosedyrene. Flere av de lagrede prosedyrene har blitt skrevet som generiske prosedyrer slik at det lar seg gjøre å utføre spørringer med forskjellige klausuler fra applikasjonskoden. Dermed kan flere metoder bruke de samme prosedyrene, men sende med forskjellige variabler. Dette er praktisk da det fører til enklere gjenbruk av kode. 11.4 Kommunikasjon med databasen Det brukes ADO.NET database aksess til kobling av applikasjonen mot databasen. ADO.NET brukes i dataaksess lager (DAL) metodene til å få tak i dataene. Nedenfor er det representert et kodeeksempel som er hentet fra DAL: public static void insertvare ( Vare vare ) { SqlConnection connect = new SqlConnection ( connectionstring ); SqlCommand cmd = new SqlCommand ( "settinnvare", connect ); cmd.commandtype = CommandType.StoredProcedure; cmd.parameters.addwithvalue ( "@vareid", vare.vareid ); cmd.parameters.addwithvalue ( "@varenavn", vare.varenavn ); cmd.parameters.addwithvalue ( "@pris", vare.pris ); cmd.parameters.addwithvalue ( "@antall", vare.lagerstatus ); cmd.parameters.addwithvalue ( "@leverandør", vare.leverandør ); if ( vare.dimensjon!= null && vare.innpress!= 0 && vare.boltsirkel!= null ) { 27

} cmd.parameters.addwithvalue ( "@dimensjon", vare.dimensjon ); cmd.parameters.addwithvalue ( "@boltesirkel", vare.boltsirkel ); cmd.parameters.addwithvalue ( "@innpress", vare.innpress ); try { connect.open (); cmd.executenonquery (); connect.close (); } catch ( Exception ex ) { Console.WriteLine ( ex.message ); } } finally { if ( connect.state!= ConnectionState.Closed ) connect.close (); } 11.5 ER-diagram Programmet inneholder følgende klasser som er illustrert i ERklassediagram nedenfor: 14. ER-diagram 28

11.6 Tabeller Databasen består av følgende tabeller med attributter (i parenteser): - bedrift (bedriftid, bedriftnavn, modifisertdato) - person (personid, fornavn, mellomnavn, etternavn, modifisertdato) - adresse (adresseid, forretningsentitetid, postnr, adresselinje1, adresselinje2) - poststed (postnr, poststed) - ordrelinje (ordreid, vareid, antall, modell, bilmerke, arsmodell, datomodifisert) - ordre (ordreid, kundeid, leveringsadresse, bestillingsdato, datomodifisert, behandlet) - prishistorikk (startdato, vareid, sluttdato, pris) - varekategori (kategoriid, vareid) - modellbrukervare (modellid, vareid) - vareinfo (vareid, dimensjon, boltsirkel, innpress) - bildetabell (vareid, bildeurl, størrelse) - modell (modellid, merkeid, navn, boltesirkel, innpress, hubsenter, arsmodell) - bilmerke (merkeid, navn) - vare (vareid, varenavn, pris, antall, leverandør, avsluttetsalg, datomodifisert) - forretningsentitet (forretningsentitetid, telefon, epost, brukernavn, passord, modifisertdato) - kategori (kategoriid, kategori) - admin (brukernavn, passord) I disse tabellene betegnes primærnøkkel med primary key og fremmednøkkel med foreign key. 29

12. Sikkerhet Ved bruk av autentisering i applikasjonen er det viktig å ha god sikkerhet. For passords beskyttelse er det brukt sha512 algoritme (Secure Hash Algorithm) som er en samling av kryptografiske sjekksum funksjoner og bruker 64-bits ord for kryptering. Sha512 algoritme har sine sterke og svake sider. Gruppen velger å bruke denne teknikken fordi den krypterte passordet ikke kan dekrypteres tilbake. Det er lite sannsynlig at foreningen blir utsatt for angrep utenfra. Siden sha512 er rask og enkel å bruke velger vi derfor å bruke denne algoritmen. Denne metoden for kryptering av passord er brukt når kunden logger seg inn. Koden ligger i BLL sikkerhet.cs og ser slik ut: public static byte[] krypterpassord(string passord) { var alg = System.Security.Cryptography.SHA512.Create(); byte[] passbyte = System.Text.Encoding.ASCII.GetBytes(passord); byte[] retursha = alg.computehash(passbyte); return retursha; }//krypterpassord For å bruke metoden på passord string passord må denne metoden kalles først og stringen konverteres til base64 string ved hjelp av følgende kode: Convert.ToBase64String(krypterPassord(string passord)) Eksempel: string passord = "passord"; byte[] kryptert = krypterpassord(passord); string kryptertpassord = Convert.ToBase64String(kryptert); 30

13. Avslutning Denne avsluttende kapitel beskriver muligheter for fremtidige utvidelser for systemet og resultater som var oppnådd. 13.1 Fremtidige utvidelser Produktet gir muligheter for oppdatering og utvidelser av systemet etter behov. Det er tenkt at programmet skal kunne utvides med betalingssystem senere når dette er ønskelig for bedriften. Det er også mulig å legge til flere funksjonaliteter. Administrator kan for eksempel få rettigheter til å slette og legge til nye varer og kunder. For kunder kan det kanskje være mulig å opprette profil, registrere enge kundeopplysninger og få tilsendt brukernavn og passord automatisk. 13.2 Konklusjon Gruppe 35 har produsert et fult fungerende varebestillingssystem til Wokas Salg AS etter gitte funksjonelle og tekniske krav. Etter et helt semester med jobb kan vi nå presentere det ferdige produktet. Vi har jobbet hardt gjennom hele prosjekt perioden, og tillagt oss en del nye kunnskap. Sammen med prosessrapporten gir produktdokumentasjonen et helhetlig inntrykk av utført arbeid og resultatet som er oppnådd. Gruppen håper at vår oppdragsgiver blir fornøyd med arbeidet vi har gjort og at han kan dra nytte av produktet vårt. Varebestillingssystemet vil forhåpentligvis gjøre bestillingsarbeid lettere og mer oversiktlig for sine brukere. 31

14. Ordliste - ADO.NET brukes i dataaksess lager (DAL) metodene til å få kobling mellom applikasjonen og SQL Server til å få tak i dataene. - AJAX extentions er brukt i ASP.NET til å få AJAX funksjonalitet og som ferdig laget javascript i ASP.NET. - ASP.NET er basert på rammeverket.net og gir programmerere muligheten til å gjenbruke kode laget for andre applikasjoner i nettsider, eller omvendt. - C# (uttales C sharp) er et programmeringsspråk for objektorientert programmering, utviklet av Microsoft som en del av deres satsing på.net. Microsoft valgte å basere C# på programmeringsspråkene C++ og Java. - CSS (Cascading Style Sheets) er et språk som brukes til å definere utseende på filer skrevet i HTML. - GUI (Graphical User Interface) er et grafisk brukergrensesnitt for dataprogrammer som i motsetning til shell-applikasjoner ikke består av en rekke kommandoer, derimot at brukeren ved hjelp av en mus klikker på forskjellige knapper og informasjonsfelt for å få gjort ting. - HTML (HyperText Markup Language) er et markeringsspråk for laging av nettsider med hypertekst og annen informasjon som kan vises i en nettleser. - Javascript er et prototypebasert skriptingsspråk. Det er mest brukt innen webutvikling, og benyttes for kode som skal kjøres på klientsiden. - Microsoft Office Visio er et verktøy for Microsoft Windows som bruker vektorgrafikk til å lage diagrammer. - Microsoft SQL Server er et relasjonsdatabaseadministrasjonssystem utviklet av Microsoft. Spørrespråket som benyttes er Transact-SQL, en implementasjon av ANSI/ISO standard Structured Query Language. - Microsoft Visual Studio er en programvare for utvikling av webapplikasjoner, skapt for operativsystemet Windows. Denne applikasjonen disponerer støtte av forskjellige programmerings språk som for eksempel Visual C#, Visual J#, ASP.NET og Visual Basic.NET. - XHTML (Extensible HyperText Markup Language) er et markeringsspråk som følger XML-standarden isteden for SGML som HTML bygger på. - XML (Extensible Markup Language) er et universelt og utvidbart markeringsspråk og en forenklet videreføring av SGML (Standard General Markup Language). 32

15. Kilder 1. Programming ASP.NET 3.5. Jesse Liberty, Dan Hurwitz, and Dan Maharry. Beijing : O'Reilly, 2008. 2. Databasesystemer. Bjørn Kristoffersen. Oslo : Universitetsforl, 2007. 3. HTML, XHTML, & CSS : visual quickstart guide. Elizabeth Castro. Berkeley, Calif. : Peachpit Press, 2007. 4. Systemutvikling : applikasjoner og databaser. Thor E. Hasle. Oslo: Cappelen DAMM AS, 2008. 5. UML distilled : a brief guide to the standard object modeling language. Martin Fowler. Boston, Mass. : Addison-Wesley, 2004. 6. Security in computing. Charles P. Pfleeger, Shari Lawrence Pfleeger. Upper Saddle River, N.J. : Prentice Hall, 2007. 7. Dokumentstandard for hovedprosjekter ved HiO Seksjon for data- og allmennfag, IU, Høgskolen i Oslo. Torvatn, Ann-Mari, 2007. 8. Forelesninger 9. Data fra Wokas 10. Wikipedia 11. Internet 33