21.07.2013 Views

ThrustFlow Management Brunvoll AS

ThrustFlow Management Brunvoll AS

ThrustFlow Management Brunvoll AS

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>ThrustFlow</strong> <strong>Management</strong><br />

Aleksander Barstad<br />

Utarbeidet av<br />

Eivind Hestnes Ole Jørgen Eide<br />

i


Innholdsfortegnelse<br />

FORPROSJEKT .................................................................................................................................... 1<br />

1. Mål og rammer ......................................................................................................................................... 1<br />

1.1. Bakgrunn ................................................................................................................................................. 1<br />

1.2. Prosjektmål ............................................................................................................................................. 1<br />

1.3. Rammer ................................................................................................................................................... 2<br />

2. Omfang ..................................................................................................................................................... 2<br />

2.1. Detaljert oppgavebeskrivelse .................................................................................................................. 2<br />

3. Prosjektorganisering ................................................................................................................................. 4<br />

3.1. Ansvarsforhold ........................................................................................................................................ 4<br />

3.2. Øvrige roller og bemanning..................................................................................................................... 4<br />

4. Planlegging, oppfølging og rapportering ................................................................................................... 5<br />

4.1. Hovedinndeling av prosjektet ................................................................................................................. 5<br />

5. Statusmøter og beslutningspunkt ............................................................................................................. 7<br />

5.1. Statusmøter ............................................................................................................................................. 7<br />

5.2. Beslutningspunkt ..................................................................................................................................... 7<br />

6. Risikoanalyse ............................................................................................................................................ 7<br />

7. Gjennomføring ......................................................................................................................................... 9<br />

KRAVSPESIFIK<strong>AS</strong>JON .................................................................................................................... 10<br />

8. Use case diagram .................................................................................................................................... 10<br />

8.1. Kommentarer til Use case-diagrammet ................................................................................................ 10<br />

8.2. Risikoanalyse av use-case diagrammet ................................................................................................. 11<br />

8.3. Høy-nivå use case beskrivelser .............................................................................................................. 11<br />

9. Detaljert use case beskrivelse og sekvensdiagram .................................................................................. 13<br />

10. Kvalitetsmessige krav ......................................................................................................................... 15<br />

11. Konseptuelt klassediagram ................................................................................................................. 16<br />

11.1. Illustrasjon ............................................................................................................................................. 16<br />

11.2. Kommentarer til konseptuelt klassediagram ........................................................................................ 16<br />

ARKITEKTUR ................................................................................................................................... 17<br />

12. Strukturorganisering ........................................................................................................................... 17<br />

12.1. Konklusjon ............................................................................................................................................. 18<br />

13. RUP 4+1 .............................................................................................................................................. 19<br />

13.1. Process View ......................................................................................................................................... 19<br />

13.2. Logical- og Implemenation View ........................................................................................................... 20<br />

13.3. Deployment View .................................................................................................................................. 23<br />

EVALUERING AV EGET ARBEID ..................................................................................................... I<br />

ii


Forprosjekt<br />

1. Mål og rammer<br />

1.1. Bakgrunn<br />

<strong>Brunvoll</strong> <strong>AS</strong> produserer komplette thruster-produkter (sidepropell for båter) med service fra A til Å. Med en<br />

thruster fra <strong>Brunvoll</strong> <strong>AS</strong> får en solid kontroll over skipet, om det så skulle være å ligge posisjonert i kraftig<br />

sjøgang eller bare manøvrere til kais. <strong>Brunvoll</strong> <strong>AS</strong> skreddersyr thrusteren etter kundens behov, noe som gjør<br />

bedriften konkurransedyktig da dette kutter ned på installasjonstid og arbeidskostnader for kunden.<br />

<strong>Brunvoll</strong> <strong>AS</strong> tilbyr et komplett teknologisk miljø med ekspertise innen hydraulik, hydrodynamikk, elektronikk og<br />

mekanikk.<br />

Bedriften ble opprettet i 1912 av brødrene Andreas og Anders <strong>Brunvoll</strong>. Siden den gang har bedriften vokst og<br />

blitt en av verdens ledende leverandører av thruster-produkter.<br />

Siden år 2000 har virksomheten ekspandert i stor grad. Fabrikken er utvidet med to nye produksjonshaller og<br />

leter stadig etter flere ansatte på alle plan. Dette igjen øker behovet for et nytt salgs-, produksjons- og<br />

servicesystem.<br />

I dag eksisterer det ingen integrasjon i systemene mellom salgs-, produksjons- og serviceavdelingen. De<br />

ordrene som salg registrerer, blir skriftlig overført til produksjonslederne, som igjen fordeler oppgavene<br />

muntlig etter hvilke ordrer som haster. Enkelte oppgaver tar få timer, mens andre kan være av lengre varighet.<br />

Problemet er at det oppstår mye dødtid da produksjonslederne har liten oversikt over hvem som gjør hva, og<br />

hvem som eventuelt har ledig kapasitet til nye oppgaver. Da aktivitetene ikke loggføres systematisk, er det<br />

tidkrevende for serviceavdelingen å gå inn på en spesifikk leveranse for å se hva som er gjort. Dette gjør at mye<br />

tid går med på å innhente informasjon om leveransen før vedlikehold kan utføres.<br />

Dette er faktorer som gjør at <strong>Brunvoll</strong> <strong>AS</strong> har et behov for å få effektivisert og systematisert arbeidsflyten<br />

mellom de ulike avdelingene.<br />

1.2. Prosjektmål<br />

Resultatmål<br />

Informasjonssystemet (”TrustFlow <strong>Management</strong>”) skal gjøre arbeidsflyten mellom de ulike avdelingene i<br />

<strong>Brunvoll</strong> <strong>AS</strong> mer effektiv og systematisert.<br />

- Et arbeidsflytsystem som effektiviserer produksjon av thrustere og leveranse av tjenester.<br />

- En elektronisk arbeidsplan for den enkelte arbeider slik at arbeidstiden kan disponeres bedre.<br />

- En tett integrasjon av systemet for materiellageret, slik at oppgaveprioritering i produksjonen kan gjøres<br />

etter hva som er mulig å produsere.<br />

- Loggføring av alle hendelser tilknyttet livsløpet til et produkt<br />

Effektmål<br />

- Redusere dødtid i produksjon med 40%<br />

- Effektivisere produksjonen med 10%<br />

- Motivasjonskapende for produksjonsarbeiderne da det gis større innblikk i hva som produseres til hvilke<br />

kunder, noe som på sikt vil kunne føre til økt effektivitet.<br />

- Kundeservice vil kunne bedres da det holdes full kontroll på hvor langt et produkt har kommet i<br />

tilvirkningen.<br />

1


1.3. Rammer<br />

Utviklingen av systemet har en tidsramme på 7 måneder. Den 24. oktober innvier <strong>Brunvoll</strong> <strong>AS</strong> sine nye<br />

produksjonshaller og det er et ønske om at informasjonssystemet er i drift til da.<br />

Det vil totalt være 11 personer involvert i utviklingen av systemet. Det vil faktureres 6 millioner på grunnlag av<br />

personellet og 2 millioner i rene investeringsutgifter i software og annet utstyr som trengs. Dette gjør at det<br />

budsjetteres med ca. 8 millioner kroner.<br />

<strong>Brunvoll</strong> <strong>AS</strong> bruker fra før IBM Lotus som plattform for distribuert programvare, og IBM DB2 som database. Til<br />

design av thrustere benyttes det IBM Catia. Ettersom det er kompetanse og eksisterende systemer på denne<br />

plattformen, er det et ønske om å bruke IBM Lotus som plattform for det nye informasjonssystemet.<br />

2. Omfang<br />

2.1. Detaljert oppgavebeskrivelse<br />

<strong>Brunvoll</strong> <strong>AS</strong> er i sterk vekst på alle områder, men har ikke et felles informasjonssystem som sørger for at<br />

arbeidsflyten mellom de ulike avdelingene kan foregå over samme plattform. Hver avdeling jobber mot egne<br />

systemer, og det er ikke mulig å loggføre et sammenhengende livsløp til et produkt. Oppgaven er derfor å lage<br />

et informasjonssystem (”TrustFlow <strong>Management</strong>”) som skal gjøre arbeidsflyten mellom de ulike avdelingene i<br />

<strong>Brunvoll</strong> <strong>AS</strong> mer effektiv, systematisert og sammenhengende. Det skal legges stor vekt på at flyten skal gå<br />

kontinuerlig fra en ordre er registrert til produktet er ferdig levert. I produkttilvirkningen skal<br />

produksjonslederne ha god oversikt over hvilket materiell og personell som er tilgjengelig, slik at den enkelte<br />

arbeider alltid har en definert arbeidsplan. Systemet vil involvere alle avdelinger i bedriften, og skal integreres<br />

mot eksisterende løsninger for lagerbeholdning, personelloversikt og faktura- og regnskapsadministrasjon. Da<br />

systemet vil involvere alle avdelinger, må systemet tilpasses den enkelte brukergruppes behov slik at de<br />

eksisterende forretningsprosessene kan foregå som før.<br />

Salgsavdelingen har kontakt med kunder over telefon og e-post, og deres primæroppgave er å selge produkter-<br />

og tjenester med leveranse til riktig pris og avtalt tid. De har derfor behov for å kunne ajourføre et<br />

kunderegister, slik at det kan holdes oversikt over hvilke kunder som er i omløp og hvem som er potensielt nye<br />

kjøpere. I tillegg skal de kunne knytte ordrer opp mot kunder, og velge ut produkter- og tjenester fra en<br />

varekatalog utarbeidet av designavdelingen. I ordren er det ønske om at pris og leveringsbetingelser skal<br />

fremkomme slik at datautveksling mot eksisterende faktura- og regnskapssystem kan gjøres automatisk. Dette<br />

vil bidra til at fakturering kan gjøres fortløpende og at detaljeringsgraden og kvaliteten økes betraktelig.<br />

Det er designavdelingen sitt ansvar å utarbeide produktbeskrivelser og CAD-utlegg, og de jobber derfor tett<br />

med salgsavdelingen ved spesialbestillinger. Designavdelingen skal kunne utarbeide en varekatalog med de<br />

vanligste produktene, og samtidig legge inn spesialprodukter for kunder som har behov for dette. Dette utgjør<br />

et paradigmeskifte for <strong>Brunvoll</strong> <strong>AS</strong> da salgsavdelingen velger ut produkter- og tjenester fra en varekatalog<br />

direkte i ordren, fremfor at designavdelingen må involveres ved hver enkelt ordre. Dette vil utgjøre en<br />

betydelig effektivisering i begge avdelinger. Produkter i varekatalogen som må tilvirkes av<br />

produksjonsavdelingen ønskes integrert med lagersystemet slik at materiellbehovet kan leses ut direkte.<br />

Når ordren er lagt inn i systemet, skal den kunne frigjøres for produksjon slik at den havner under<br />

produksjonsavdelingen sitt domene. Produksjonslederne skal kunne få fram en prioritert oversikt over hvilke<br />

produkter som skal tilvirkes, og et materiellbehov med lagerstatus for den enkelte komponent. Det er et ønske<br />

å integrere systemet opp mot personelloversikt, slik at produksjonslederen kan tilordre oppgaver til den<br />

enkelte arbeider etter hva som er på lager, og lar seg produsere. Gjennom en elektronisk arbeidsplan, får den<br />

enkelte arbeider opp sine arbeidsoppgaver for dagen. På den måten vet hver enkelt arbeider hva som skal<br />

2


gjøres, hvor komponentene som skal monteres befinner seg, og hva som er neste oppgave etter fullføring. Det<br />

er også et ønske om at det skal være mulig å få frem informasjon om hvilken kunde som har bestilt produktet,<br />

og hvilket skip det skal installeres i. Intensjonen med dette er å skape motivasjon, da den enkelte arbeider ser<br />

sin rolle og oppgave i en større kontekst.<br />

Når produktet er ferdig tilvirket, er det ønske om at lageravdelingen skal kunne gå inn og tilordre en<br />

lagerplassering for midlertidig oppbevaring. Videre skal de kunne koordinere transportbestilling for leveranse<br />

av ferdigstilte produkter.<br />

I etterkant av leveranse, er det behov for serviceoppfølging. Serviceavdelingen har derfor behov for å kunne<br />

framskaffe informasjon om leverte produkter, slik at de vet hvilken løsning som er benyttet, hvor den er<br />

installert og hva som eventuelt trengs av utstyr og materiell for å utføre servicen. Det vil også være ønskelig å<br />

kunne se hva som er gjort av tidligere service.<br />

Da alle avdelinger i <strong>Brunvoll</strong> <strong>AS</strong> vil benytte systemet, vil det være mulig å loggføre all aktivitet som er gjort i<br />

tilvirkningen av produktet gjennom hele livsløpet. På den måten kan det leses ut statistikk på feilprosenter,<br />

tidsforbruk, arbeidsbelastning og annen data som kan bidra til å effektivisere produksjonen.<br />

Ordre Service<br />

Salg og design i tett<br />

samarbeid<br />

Figur 1: Informasjonsflyten mellom avdelingene<br />

Produksjon tilvirker<br />

produkt<br />

Vi ser for oss at informasjonssystemet deles opp i 2 hovedleveranser, slik at utviklingstiden kan reduseres.<br />

- Leveranse 1<br />

o Rammeverk og database: Rammeverket er en felles plattform for de øvrige leveransene, og<br />

tilbyr et felles grensesnitt for kommunikasjon med databasen. Dette muliggjør en langt mer<br />

effektiv utvikling, og gjør at systemet kan utvides i ettertid.<br />

- Leveranse 2 (består av tre brukerspesifikke aktiviteter som går parallelt)<br />

o Salg og design: Brukerfunksjoner rettet mot salg- og designavdeling.<br />

o Produksjon: Planleggingsverktøy for produksjonsledere og integrasjon mot lagersystem.<br />

Elektronisk arbeidsplan for arbeidere med oppgavebeskrivelser og materielloversikt.<br />

o Lager og service: Verktøy for koordinering av transport og midlertidig lagerplassering av<br />

ferdige produkter. Servicehistorikk på leverte produkter.<br />

Det stilles følgende krav fra <strong>Brunvoll</strong> <strong>AS</strong> til systemet.<br />

Koordinering transport og<br />

leveranse av ferdig produkt<br />

- Prestasjonskrav: Systemet må være brukervennlig for en aldersgruppe fra 16 til 70 år og for personer<br />

fra ulike nasjonaliteter. Brukervennlighet gjelder spesielt for produksjonsarbeiderne. Enkelte deler av<br />

systemet må være tolerant for feil, og ha en garantert oppetid på 99,9% per år.<br />

- Offentlige krav: Personvernloven må overholdes når det gjelder loggføring av aktiviteter tilknyttet<br />

produksjonen.<br />

3


3. Prosjektorganisering<br />

3.1. Ansvarsforhold<br />

Bedriften AEO consulting er en IT-bedrift bedrift med spesialkompetanse iinnen<br />

nnen prosjektkoordinering av<br />

informasjonssystemer. systemer. AEO consulting har blitt innleid av <strong>Brunvoll</strong> <strong>AS</strong> for å utvikle informasjonssystemet<br />

(”<strong>ThrustFlow</strong> <strong>Management</strong>”). . For å kunne realisere dette må AEO EO consulting leie inn ekstern arbeidskraft på<br />

områdene programmering, SU (systemutv (systemutvikling) design/arkitektur og QA (kvalitet og forsikring forsikring).<br />

3.2. Øvrige roller og bemanning<br />

S.U<br />

design/arkitektur<br />

Figur 2: Prosjektorganisering<br />

Økonomi/Innkjøp<br />

Gruppeleder<br />

Rammeverk og<br />

database<br />

Styringsgruppe<br />

Prosjektleder<br />

Teknisk sjef<br />

Styringsgruppen<br />

Styringsgruppen i prosjektet består av følgende personer personer:<br />

- Administrerende direktør: Terje Dyrseth (<strong>Brunvoll</strong> <strong>AS</strong>)<br />

- Prosjektleder: Ole Jørgen Eide (AEO consulting)<br />

- Avdelingsleder lager/service: John Pettersen (<strong>Brunvoll</strong> <strong>AS</strong>)<br />

- Avdelingsleder produksjon: Robert Sesseng (<strong>Brunvoll</strong> <strong>AS</strong>)<br />

- Avdelingsleder leder salg/design: Kåre Johansen (<strong>Brunvoll</strong> <strong>AS</strong>)<br />

- IT-sjef: Lars Kristian Flor (<strong>Brunvoll</strong> <strong>AS</strong>)<br />

Prosjektleder er Ole Jørgen Eide fra AEO consulting, da han har domenekunnskap om bedriften.<br />

Styringsgruppen består kun av én person fra AEO consulting, resten er personell fra <strong>Brunvoll</strong> <strong>AS</strong>. Inndeling av<br />

styringsgruppen er tatt på bakgrunn av at prosjektet skal gå med nære bånd til bedriften og de ansatte, slik at<br />

produktet blir tilpasset de ulike brukergrupper som skal bruke dette i sitt daglige virk virke.<br />

Styringsgruppen er med på statusmøter og beslutningspunkt av strategisk karakter.<br />

Arbeidsgruppen<br />

Arbeidsgruppen har møter på 15 minutter hver morgen kl. 09.00 slik at status på prosjektet kan følges<br />

kontinuerlig. Her benyttes det ”whiteboard”, og det er ikke tillatt å sitte slik at noen kan ”sove seg gjennom”<br />

møtene.<br />

Arbeidsgruppen n består av følgende personer:<br />

Gruppeleder<br />

Brukermodul 1<br />

- Prosjektleder: Ole le Jørgen Eide (AEO consulting)<br />

- Teknisk sjef: Eivind Hestnes (AEO consulting)<br />

- SU design/arkitektur: (Ekstern/innleid)<br />

QA<br />

Gruppeleder<br />

Brukermodul 2<br />

Gruppeleder<br />

Brukermodul 3<br />

4


- Gruppeleder ”leveranse 1” og ”leveranse 2: salg og design”: Frank Berntsen (Ekstern/innleid fra IBM<br />

Consulting)<br />

- Gruppeleder ”leveranse 2: produksjon”: Hege Mørch (Ekstern/innleid fra Accenture)<br />

- Gruppeleder ”leveranse 2: lager og service”: Trond Sæther (Ekstern/innleid fra Accenture)<br />

- QA (Kvalitetssikrer og forsikring): Gaute Myklebust (Ekstern/innleid)<br />

- Økonomi/innkjøpsansvarlig: Aleksander Barstad (AEO consulting)<br />

Det er viktig å bemerke at QA og SU design/arkitektur kun er tilgjengelig i begrensede perioder. Det samme<br />

gjelder økonomi/innkjøpsansvarlig da han er tilknyttet flere prosjekter. De resterende i arbeidsgruppen må<br />

derimot møte hver mandag kl. 09.00 for diskusjon av fremdriften i prosjektet.<br />

Ansvarlig for økonomi og innkjøp er Aleksander Barstad fra AEO consulting. Han vil være ansvarlig for innkjøp<br />

underveis i prosjektet, og har det overordnende økonomiske ansvaret for at budsjettrammene holdes. Et nært<br />

samarbeid med økonomidirektøren i <strong>Brunvoll</strong> <strong>AS</strong> sørger for at de nødvendige fullmakter og midler kan skaffes<br />

til veie underveis i prosjektet.<br />

Teknisk sjef er Eivind Hestnes fra AEO consulting, og har det overordnede ansvaret for de forskjellige<br />

leveransene og SU design/arkitektur. Stillingen vil være å koordinere de forskjellige ansvarsområdene som<br />

følger under han, og følgelig er de daglige statusmøtene hans ansvar. Personellansvaret til teknisk sjef er<br />

gruppeledere og SU design/arkitekturansvarlig.<br />

Alle som befinner seg under teknisk sjef er innleide personer. Dette er gjort bevisst for å få inn den beste<br />

kompetansen på de forskjellige områdene. Gruppelederen fra IBM Consulting har ansvaret for to leveranser, da<br />

”leveranse 1” og ”leveranse 2: salg og design” ikke går parallelt tidsmessig, noe som gjør at kompetansen<br />

utnyttes til det maksimale. Det er ønskelig at prosjektet skal være robust mot personellendringer, så som et<br />

tiltak mot dette er alle gruppelederne med i utviklingen av ”leveranse 1” da dette er grunnlaget for den videre<br />

utviklingen.<br />

Når utviklingen av leveranse 2 igangsettes, skal de tre gruppelederne for hvert delprosjekt ha en åpen<br />

kommunikasjon med de respektive avdelingene hos <strong>Brunvoll</strong> <strong>AS</strong>. Dette gjøres for å sikre maksimal forståelse av<br />

forretningsprosesser og brukerbehov, slik at systemet virkelig oppfattes av brukerne som et verktøy i<br />

hverdagen.<br />

QA er også innleid i en begrenset periode, men vil delta kontinuerlig rundt ferdigstilling av leveranser.<br />

Primæransvaret er å kvalitetssikre arbeidet, og sørge for at utviklingen går i henhold til kravspesifikasjon.<br />

4. Planlegging, oppfølging og rapportering<br />

4.1. Hovedinndeling av prosjektet<br />

I utviklingen av systemet, mener vi det vil være mest hensiktsmessig å benytte arbeidsprosessen ”fossefall med<br />

delprosjekter” med innslag av planutvikling. Før vi kom fram til denne arbeidsprosessen, vurderte vi en del<br />

andre som vi kommer tilbake til i slutten av dette avsnittet.<br />

- Systemet er delt opp i to hovedleveranser: ”leveranse 1: rammeverk/database” og tre<br />

Leveranse 1: Rammeverk/database<br />

Figur 3: Tidsforløp<br />

Leveranse 2:<br />

Salg og design<br />

Produksjon<br />

Lager og service<br />

5


ukerspesifikke aktiviteter i leveranse 2. I planutvikling blir systemet utviklet i suksessive stadier etter<br />

prioritet. Ettersom det eksisterer en hierarkisk avhengighet mellom de to leveransene, er det viktig at<br />

tidsfristen for den første overholdes. Det er mange brukergrupper som involveres i neste leveranse,<br />

så forskyving av tidsfristen i første fase av prosjektet er ikke ønskelig. Planutvikling gir oss en god<br />

strategi ved å legge hovedfokus på den viktigste aktiviteten, som i dette tilfellet er<br />

rammeverk/database. Det vil ikke være mulig å påbegynne utviklingen av neste leveranse før det er<br />

mulig å hente/lagre data fra/til databasen gjennom rammeverket. Det er derimot mulig å utvide<br />

rammeverk/database underveis og i etterkant av prosjektet, dersom det er ønskelig med mer<br />

funksjonalitet.<br />

- Når første leveranse er ferdigstilt, kan de brukerspesifikke aktivitetene i leveranse 2 påbegynnes. Da<br />

det ikke eksisterer utviklingsmessige avhengigheter mellom disse aktivitetene, kan de foregå parallelt<br />

slik at det jobbes direkte mot hver brukergruppe samtidig. Vi kan derfor dele utviklingen av denne<br />

leveransen inn i delprosjekter. Dette vil være tidsbesparende, og en sørger samtidig for at leveransen<br />

tilpasses brukergruppens behov. Da prosessen både er iterativ og inkrementell er det mulighet for<br />

endringer underveis etter ønske fra brukerne. Det vil da være mulighet for å teste leveransene<br />

enkeltvis, slik at tilpassinger og feilretting kan gjøres direkte mot brukergruppen. Det å utvikle og teste<br />

enkeltmoduler separat er også en måte å spre risiko på, slik at det ikke oppdages store feil i slutten av<br />

utviklingen.<br />

- Hovedrisikoen ved denne arbeidsprosessen er uforutsette gjensidige avhengigheter mellom<br />

delprosjektene. Ettersom siste leveranse er tilknyttet rammeverket, og aksesserer databasen gjennom<br />

dette, vil det ikke være noen gjensidighet mellom de brukerspesifikke delprosjektene. Den gjensidige<br />

avhengigheten ligger følgelig mellom delprosjektene og rammeverk/database, og som nevnt er det<br />

her mulighet for å gjøre utvidelser.<br />

- Arbeidsprosessen er strukturert og ivaretar systemdokumentasjon så vel som brukerdokumentasjon<br />

på en tilfredsstillende måte. God dokumentasjon er med på å sikre driftsstabilitet, og gjør det mulig å<br />

videreutvikle den siste leveransen i etterkant av prosjektet.<br />

- Ved å investere tid i rammeverk/database vil de brukerspesifikke aktivitetene kunne gå mer effektivt,<br />

da det ikke trengs å ta høyde for grunnleggende arkitekturmessige spørsmål.<br />

- Svakheten er at arbeidsprosessen tillater ferdigstilling av delprosjektene til forskjellig tid. Selv om det<br />

ikke eksisterer noen arkitekturmessig gjensidighet innbyrdes i den brukerspesifikke leveransen, må det<br />

for eksempel være mulig for salg/design å kunne legge inn oppdrag før produksjon kan benytte<br />

systemet. Systemet kan derfor ikke benyttes fullt i produksjon før delprosjektene salg/design og<br />

produksjon er ferdigstilt.<br />

I den første leveransen, finnes det eksisterende systemer i den programvareplattformen som er valgt. Det er<br />

ønskelig å benytte databasen uten større modifikasjoner, og heller ha fokus på design av datastruktur. Vi vil<br />

separat vurdere kost/nytteeffekt av ferdige komponenter til rammeverket.<br />

En meget nærliggende arbeidsmetode er å benytte fossefallsmetoden rent suksessivt. Modellen er god på<br />

struktur og dokumentasjon, og gjør utviklingsprosessen svært oversiktlig. Det vil heller ikke være nødvendig å<br />

involvere like mye personell samtidig da hver leveranse og aktivitet utvikles suksessivt. Ulempen er at<br />

prosjektet blir strekt ut i tid på grunn av størrelsen, og muligheten for endringer blir sterkt redusert. Da den<br />

siste leveransen er svært brukerspesifikk, må den gjerne tilpasses i flere omganger. Vi har kommet frem til at<br />

det vil være vanskelig å spesifisere den siste leveransen så godt at endringer ikke vil oppstå, og modellen blir<br />

dermed vanskelig å benytte.<br />

6


På grunn av tidsaspektet har eXtreme Programming vært til vurdering. XP er en rask utviklingsmetode hvor<br />

sluttresultatet er i fokus, og har flere praksiser som passer godt inn i utviklingsprosjektet. Av gunstige forhold<br />

kan det nevnes ”on-site customer”, som betyr nær kontakt med kunden. Tre av modulene i prosjektet er svært<br />

brukerspesifikke, og bør tilpasses brukergruppene i stor grad. Det at brukeren får være en del av<br />

systemutviklingsprosessen skaper et felles eierskap, og gjør at brukeren føler en tilhørighet til systemet. Videre<br />

er det fordelaktig med et modulbasert system (små releaser) og en enkel arkitektur som kan utvides. Dette vil<br />

redusere risikoen for avhengighetsfeil, og sørger samtidig for fleksibilitet med tanke på utvidelse av systemet til<br />

å gjelde flere brukergrupper. XP er ikke spesielt kraftig med tanke på dokumentasjon, men tar dette igjen ved å<br />

benytte en metaforisk oppbygging slik at det lett å forstå programkoden.<br />

Selv om XP tilbyr nær kontakt med kunden, er det her økonomiske forhold som må tas i betraktning. Det at<br />

kunden kontinuerlig må være tilstede i utviklingen legger beslag på arbeidskapasitet som ellers kunne vært<br />

benyttet til produksjon. Ettersom kravene for systemet er oversiktlige, vil det være mulig å foreta en<br />

konsentrert spesifisering slik at det ikke er nødvendig å involvere kunden kontinuerlig. En annen fare med XP<br />

er at brukerne i for stor grad styrer prosjektet, slik at det blir for mye fokus på detaljer, og ikke helheten til<br />

systemet. Det siste punktet er at prosjektet vårt er ganske stort i forhold til hva XP er egnet for. Den muntlige<br />

kommunikasjonen vil være vanskelig å gjennomføre da eksterne konsulenter vil bli innleid som nødvendigvis<br />

ikke befinner seg på samme sted.<br />

5. Statusmøter og beslutningspunkt<br />

5.1. Statusmøter<br />

Det vil være separate statusmøter for arbeids- og styringsgruppen. Styringsgruppen vil ha statusmøter ved<br />

strategiske ferdigstillinger, etterfulgt av beslutningspunkt i henhold til gjennomføringsplanen. Arbeidsgruppen<br />

vil også gjennomføre statusmøter etter ferdigstillinger, men vil ha fokus på kvaliteten på systemet og hva som<br />

kan gjøres bedre i neste fase. I tillegg til statusmøter ihht. gjennomføringsplan, vil arbeidsgruppen ha møte<br />

hver mandag kl. 09.00 for diskusjon av framdriften i prosjektet.<br />

5.2. Beslutningspunkt<br />

Som i likhet med statusmøtene, vil styringsgruppen fatte de strategiske beslutningspunktene. De viktigste<br />

beslutningspunktene er om prosjektet skal realiseres, og om modulene er ihht. de krav som er satt.<br />

Arbeidsgruppa vil i forkant av beslutningspunktene ta en vurdering på om systemet innehar ønsket kvalitet, og<br />

hvis nødvendig utføre en ny iterasjon. Beslutningspunktene skal betraktes som fastsatte datoer.<br />

6. Risikoanalyse<br />

Når en skal etablere et systemutviklingsprosjekt og drifte (yte de nødvendige tjenestene til brukerne) dette,<br />

innebærer dette aktiviteter med en viss risiko. I vår risikovurdering har vi vært nødt til å ta hensyn til de mest<br />

kritiske faktorer og muligens sløyfe de som ikke er fult så kritiske. Det er viktig å presisere at det er vanskelig<br />

eller umulig å beskytte seg mot alt.<br />

Analysen vår tar utgangspunkt i følgende figur hvor hvitt område er lav risiko, lys er middels risiko og mørkt er<br />

høy risiko.<br />

7


Tabell 1: Grader av risiko (kilde Risikohåndtering, Øksnes og Furuseth – hentet fra Norbud-prosjekt)<br />

Sannsynlighet<br />

Lite sannsynlig<br />

Sannsynlig<br />

Meget sannsynlig<br />

Svært sannsynlig<br />

Konsekvens<br />

Liten Middels Kritisk Katastrofal<br />

I vår analyse har vi sammen med <strong>Brunvoll</strong> <strong>AS</strong> kommet frem til at vi vil akseptere middels risiko eller lavere.<br />

Dette innebærer da at dersom vi kommer frem til punkter som utgjør større risiko er vi nødt til å iverksette<br />

forbyggende tiltak for at denne skal bli mindre sannsynlig eller forsvinne helt. Dersom det viser seg å være<br />

lønnsomt å gjøre noe med risikoer som har mindre enn høy risiko vil vi også prøve å finne tiltak for disse.<br />

Tabell 2: Risikotabell<br />

Pri Risiko Sannsynlighet Konsekvens Risiko-<br />

innvirkning<br />

1 Datatap Meget<br />

sannsynlig<br />

2 Nedetid på Svært<br />

system sannsynlig<br />

3 Interoperabilit<br />

et mellom<br />

eksisterendeog<br />

nytt system<br />

svikter<br />

4 Overskride<br />

budsjett<br />

Meget<br />

sannsynlig<br />

5 Fravær Meget<br />

6 Overskride<br />

tidsfrist<br />

7 Mangel på<br />

kompetanse<br />

Tiltak<br />

Katastrofal Høy Klare krav til hvordan systemet er<br />

bygd opp.<br />

Kristisk Høy Separerte systemer, testing. Klare<br />

krav til hvordan systemet skal være<br />

oppbygd for å unngå dette i størst<br />

mulig grad.<br />

Kritisk Høy Istedenfor sanntidsintegrasjon kan<br />

data repliseres på times- eller<br />

døgnbasis.<br />

Sannsynlig Kristisk Middels Kommer an på omfanget, gode<br />

rutiner når det gjelder styring<br />

underveis. Egen økonomiansvarlig.<br />

sannsynlig<br />

Middels Middels Oppfølging og tilkallings-personell.<br />

Sannsynlig Middels Middels Tidsplan med mindre ”delprosjekter”<br />

underveis. Se ut ifra disse om det er<br />

nødvendig med ekstra bemanning.<br />

Statusmøter.<br />

Sannsynlig Middels Middels Kursing, alle som jobber med<br />

prosjektet har bra innblikk i hva de<br />

andre som programmerer gjør.<br />

Risikotabellen er skrevet i prioritert rekkefølge hvor risikoen er synkende. Risikoinnvirkning er produktet av<br />

konsekvens og sannsynlighet. Her tenker vi da konsekvens i det økonomiske, og det er ut ifra konsekvensen vi<br />

beregner prioritet. Risikotabellen viser en generell fremstilling av risikobildet i prosjektet, og denne brukes som<br />

utgangspunkt videre i prosjektet da det kan oppdages andre risikoer som krever at tabellen må ajourføres.<br />

Risikorapportering vil være en egen del under statusmøtene arbeidsgruppen vil ha daglig i prosjektet.<br />

8


7. Gjennomføring<br />

9


Kravspesifikasjon<br />

8. Use case diagram<br />

Figur 3: Use-case diagram utarbeidet i IBM Rational<br />

8.1. Kommentarer til Use case-diagrammet<br />

Vi vil spesielt kommentere Use casen ”Hent produkteksemplar” da denne er rettet mot flere aktører. Et<br />

produkteksemplar gjennomgår flere livsfaser, og vi har sortert disse til å være ”på vent”, ”venter på<br />

produksjon”, ”under produksjon”, ”på lager” og ”ferdig levert”. Det er aktøren ”Salgsperson” som oppretter<br />

bestillingsordren, og vil følgelig være den initierende part til produksjon av eksemplaret. I livsfasene ”venter på<br />

produksjon” og ”under produksjon” er det aktørene ”Produksjonsleder” og ”Produksjonsarbeider” som i<br />

hovedsak er involvert. I etterkant av produksjon vil ”Serviceavdeling” være primæraktør. Det er her viktig å<br />

presisere at informasjonsbehovet er tilnærmet det samme, så det vil ikke være store forskjeller i<br />

hendelsesforløpet. Det er kun aktørene i produksjon som har behov for mer utfyllende informasjon om<br />

materiellbehov, og dette er vist som en initiering til aktøren ”Lagersystem”.<br />

Videre er det nødvendig å kommentere følgende assosiasjoner.<br />

- (produktkatalog): Når aktøren ”Designingeniør” skal behandle produktkatalogen åpnes da<br />

den eksisterende katalogen, slik at det kan velges produkt som skal oppdateres.<br />

10


- (registrere lagerplassering): Når aktøren ”Lagerarbeider” skal registrere lagerplassering<br />

hentes det først ut data om ferdigstilte produkteksemplar, slik at kriterier for plassering kan gjøres ut i<br />

fra størrelse og vekt på produktet.<br />

- (administrere arbeidsplan): Administrere arbeidsplan er en utøkning (endring) av<br />

eksisterende arbeidsplan (vis arbeidsplan), da det vil være behov for å ha en totaloversikt på den<br />

eksisterende arbeidsplan før det gjøres endringer.<br />

8.2. Risikoanalyse av use-case diagrammet<br />

Vi har delt inn hvert enkelt use case i tre forskjellige risikoområder, og utarbeidet høy-nivå beskrivelser for de<br />

mest risikable. Vi har klassifisert risiko etter:<br />

- Teknologisk risiko: I hvilken grad er det mulig at vi ikke har teknologien til å gjennomføre hvert use<br />

case.<br />

- Forretningsmessig risiko: Hvor viktige er use casene sett ut fra de krav kunden har satt<br />

- Prosjektmessig risiko: I hvilken grad use casene kan føre til problemer da med tanke på samarbeid og<br />

organisering.<br />

Use Case Teknologisk Forretning Prosjekt Sum/total<br />

Vis produksjonsstatistikk Lav Lav Lav Lav<br />

Hent produkteksemplar Høy Høy Høy Høy<br />

Administrere arbeidsfordeling Middels Høy Høy Høy<br />

Personelloversikt Middels Middels Lav Middels<br />

Vis arbeidsplan Høy Høy Høy Høy<br />

Oversikt produksjonsmateriell Middels Middels Middels Middels<br />

Ajourføre servicehistorikk Lav Middels Middels Middels<br />

Registrere lagerplassering Middels Lav Lav Lav<br />

Transportkoordinering Lav Lav Lav Lav<br />

Kundeadministrasjon Lav Høy Høy Middels<br />

Ordrebehandling Middels Høy Høy Høy<br />

Vis produktkatalog Lav Middels Middels Middels<br />

Behandle produktkatalog Middels Lav Middels Middels<br />

8.3. Høy-nivå use case beskrivelser<br />

Use Case Administrere arbeidsfordeling<br />

Aktør Produksjonsleder<br />

Hensikt Effektivisere arbeidsflyt og få mer kontroll over produksjonsgangen.<br />

Beskrivelse Produksjonsleder skal ha mulighet til å organisere/utarbeide arbeidsfordeling for<br />

produksjonsarbeiderne. Aktør forespør ”Administrere arbeidsfordeling” og systemet<br />

responderer med å gi aktøren to ulike valg; eksisterende arbeidsfordeling eller opprett ny.<br />

Velger aktør eksisterende arbeidsfordeling vil systemet gi en oversikt over fordeling av<br />

oppgaver blant produksjonsarbeiderne. Aktør forespør så en bestemt fordeling og systemet<br />

åpner da denne med mulighet for redigering. Aktør gjør eventuelt de endringer som ønskes,<br />

og systemet avslutter med å oppdatere ”Vis arbeidsplan”. Dersom aktør velger ny<br />

arbeidsfordeling, vil systemet åpne en fast mal. Aktøren kan her legge inn en<br />

oppgavebeskrivelse og må spesifisere hvilken produksjonsarbeider planen skal gjelde for.<br />

Når aktør har gjort dette vil systemet oppdatere ”Vis arbeidsplan.”<br />

Use Case Vis arbeidsplan<br />

Aktør Produksjonsarbeidere<br />

Hensikt Effektivisere produksjonsavdelingen og gi større rom for å planlegge arbeidsdagen.<br />

Beskrivelse Aktør skal kunne få en oversikt over hva arbeidsplanen inneholder. Det blir utført en<br />

forespørsel til systemet om å vise arbeidsplan, og systemet åpner da en oversikt over den<br />

gjeldende arbeidsplan for aktøren. Aktøren kan så velge en bestemt arbeidsoppgave, og<br />

systemet returnerer en beskrivelse av den valgte oppgaven. Deretter foretar aktøren en<br />

kvittering av den oppgaven som velges.<br />

11


Use Case Hent produkteksemplar<br />

Aktør Produksjonsleder, salgsperson, servicearbeider, produksjonsarbeider og ”lagersystem”.<br />

Hensikt Gi de enkelte en oversikt over produktet med spesifikasjoner og materielloversikt.<br />

Beskrivelse Aktør forespør produkteksemplar til systemet, og systemet svarer da med å gi en oversikt<br />

over de produkter som er frigjort til produksjon. Aktør kan da lete seg frem til det ønskede<br />

produktet samt velge dette, og systemet vil returnere<br />

produktinformasjonen/spesifikasjonen til det valgte produktet.<br />

Use Case Transportkoordinering<br />

Aktør Lagerarbeider<br />

Hensikt Ha oversikt over transport av produkter til og fra bedriften<br />

Beskrivelse Aktør forespør en oversikt over ferdigstilte produkter, og systemet svarer med å gi en<br />

oversikt over alle produkter og produksjonsstatus. Ved hjelp av denne informasjonen er det<br />

mulig å koordinere transport av ferdigstilte produkter. Aktøren forspør det produktet som<br />

ønskes, systemet gir da aktør mulighet til å legge inn datoer for transport.<br />

Use Case Ordrebehandling<br />

Aktør Salgsarbeider<br />

Hensikt Behandle ordre fra kunder<br />

Beskrivelse Aktøren skal kunne legge inn en ordre og tilknytte artikler fra varekatalogen til den enkelte<br />

ordrelinje. Aktøren forespør systemet om ordrebehandling, systemet åpner da et<br />

ordreskjema, med mulighet for å inkludere ordrelinjer. For den enkelte ordrelinje<br />

spesifiseres det hvilket produkt som ønskes, og systemet foretar en oppdatering av<br />

ordreskjema. Aktør kan så velge å godkjenne ordren, og systemet vil da lagre ordren, og<br />

omgjøre de valgte produktene til konkrete eksemplar.<br />

Use Case Behandle produktkatalog<br />

Aktør Designingeniør<br />

Hensikt Skal ha mulighet til å oppdatere produktkatalogen kontinuerlig<br />

Beskrivelse Aktør forespør behandling av produktkatalog, systemet åpner da for at aktør kan legge inn<br />

nye produkter eventuelt redigere/slette gamle produkter. Da dette er gjort vil systemet<br />

oppdatere produktkatalogen.<br />

12


9. Detaljert use case beskrivelse og sekvensdiagram<br />

Use Case Vis arbeidsplan<br />

Hensikt Senke dødtid i produksjonsavdelingen, samt fremskaffe en oversikt over hvem som gjør hva.<br />

Aktør Produksjonsarbeider<br />

Pre betingelser Aktør av arbeidsplanen må være autentisert.<br />

Post betingelser Use caset henter ut informasjon fra systemet om autorisert brukers arbeidsplan.<br />

Normal<br />

Hendelsesflyt<br />

(”Main success<br />

scenario”)<br />

1. Use caset begynner når bruker autoriserer seg, og sender forespørsel om å<br />

generere dagens arbeidsplan.<br />

2. Systemet viser dagens arbeidsplan, med utlisting av tilgjengelig arbeidsoppgaver<br />

for tidsrommet.<br />

3. Aktøren kan velge å gå direkte til sekvens 5 (velg arbeidsoppgave) eller angi nytt<br />

tidsområdet for arbeidsplan.<br />

4. Systemet viser arbeidsplan for valgt tidsområde, med utlisting av tilgjengelig<br />

arbeidsoppgaver for tidsrommet.<br />

5. Aktør velger arbeidsoppgave fra utlistingen.<br />

6. Systemet viser detaljert beskrivelse av arbeidsoppgaver med CAD-utlegg.<br />

7. Dersom aktør velger å begynne på oppgaven, kvitteres det tilbake til systemet.<br />

Variasjoner 1. Aktør ikke autorisert. Systemet gir aktør en feilmelding om ugyldig autentisering og<br />

ber aktør autentisere seg på nytt.<br />

2. Systemet får ikke hentet arbeidsplan. Systemet vil da gjenta forespørselen opptil 3<br />

ganger med et mellomrom på 3 sekunder. Dersom arbeidsplan fremdeles ikke er<br />

tilgjengelig vil aktør få frem en feilmelding.<br />

3. Aktør spesifiserer et ugyldig tidsrom. Systemet vil da vise en feilmelding med hva<br />

som er gyldig formatering/gyldig tidsrom.<br />

4. Samme som pkt. 2.<br />

6. Systemet får ikke åpnet detaljert beskrivelse av arbeidsoppgave. Systemet vil da<br />

gjenta forespørselen opptil 3 ganger med et mellomrom på 3 sekunder, dersom det<br />

fremdeles ikke foreligger en detaljert beskrivelse vil aktør få frem en feilmelding.<br />

Figur 4: Sekvensdiagram for Use case "Vis arbeidsplan"<br />

13


Use Case Vis produkteksemplar<br />

Hensikt Effektivisere produksjonsavdelingen<br />

Aktør Flere<br />

Pre betingelser Det må spesifiseres hvilket produkteksemplar som skal vises<br />

Post betingelser Aktørene vil kunne hente produkteksemplarer, og etter hvert oppdatere status på produkt.<br />

Normal<br />

1. Use caset starter når aktøren har spesifisert eksemplarnummer, og sendt<br />

Hendelsesflyt<br />

forespørsel om beskrivelse av valgt eksemplar.<br />

(”Main success<br />

1.1. Systemet sender forespørsel om materiellbehov for valgt eksemplar til<br />

scenario”)<br />

lagersystemet. I forespørselen blir det spesifisert hvilket katalognummer<br />

eksemplaret har, slik at lagersystemet kan undersøke status på nødvendig<br />

produksjonsmateriell.<br />

1.2. Lagersystemet returnerer materiellbehov for valgt eksemplar.<br />

2. Systemet viser beskrivelse av valgt produkteksemplar med tilhørende<br />

spesifikasjoner, og materiellbehov sorterer etter materiellgruppe.<br />

3. Aktøren velger materiellgruppe<br />

4. Systemet viser komponentutlisting for valgt materiellgruppe.<br />

5. Aktøren velger komponent for detaljert beskrivelse<br />

6. Systemet viser lagerplassering og monteringsanvising for valgt komponent, slik at<br />

brukeren har nok informasjon til å kunne til å påbegynne produksjonen.<br />

7. Aktøren kvitterer for at komponenten er plukket og montert.<br />

8. Systemet sender materiellforbruk til lagersystem, og gir kvittering på oppdatering<br />

til aktør.<br />

Variasjoner 1. Eksemplarnummer ikke spesifisert eller feil. Systemet gir aktør en utlisting av alle<br />

tilgjengelige eksemplar, slik at det kan velges på nytt fra en liste.<br />

1.1. Lagersystemet svarer ikke på forespørsel. Systemet vil da gjenta forespørselen<br />

opptil 3 ganger med et mellomrom på 1 sekund. Dersom lagersystemet fremdeles<br />

ikke svarer, vil aktør få opp en feilmelding.<br />

1.2. Lagersystemet finner ikke materiellbehov for gjeldende katalognummer, og<br />

returnerer en tom liste. Systemet fortsetter på sekvens 2, men viser ikke<br />

materiellbehov. Det vil ikke være mulig å gå videre til sekvens 3.<br />

8. Lagersystemet svarer ikke. Systemet vil da gjenta forespørselen opptil 3 ganger<br />

med et mellomrom på 1 sekund. Dersom lagersystemet fremdeles ikke svarer, vil<br />

aktør få opp kvittering på oppdatering, og systemet vil gjenta forsøk på<br />

oppdatering i bakgrunnen hvert minutt.<br />

Figur 5: Sekvensdiagram for Use case "Vis produkteksemplar"<br />

14


10. Kvalitetsmessige krav<br />

Brukervennlighet<br />

Brukergrensesnittet for systemet blir forskjellig ut i fra hvilken målgruppe den er beregnet:<br />

- Produksjonslederne har kompetanse på databehandling slik at et komplekst brukergrensesnitt kan<br />

tillates. Kursing i dette systemet skal ikke ta mer enn en uke. Det skal være hjelpedokumentasjon<br />

tilgjengelig.<br />

- Produksjonsarbeiderne har varierende dataferdigheter, og har et alderspenn fra 16 til 65 år.<br />

Brukergrensesnittet til arbeidsplanen må derfor være enkelt og intuitivt å håndtere. Det må også tas<br />

hensyn til brukere med forskjellig nasjonalitet. Arbeidsspråket i bedriften er primært norsk, hvor<br />

sekundær språket er polsk og engelsk. Det skal være mulig å skifte mellom disse tre språkene med et<br />

tastetrykk. Kursing med varighet lengre enn en dag, skal ikke være nødvendig.<br />

- Salg- og designavdelingen har stor kompetanse på databehandling, og kan også tillates et komplekst<br />

brukergrensesnitt. Fokus bør være å få likhet med systemer de har fra før. Kursing skal ikke være<br />

nødvendig.<br />

- Lager- og serviceavdeling har middels kompetanse på databehandling, men brukergrensesnittet bør<br />

være lett å bruke. Det skal ikke være nødvendig med mer enn en enkel innføring.<br />

Ytelse<br />

- Systemet må kunne lagre 10 000 ordrer med historikk, men samtidig være skalerbart.<br />

- Systemet skal operere i sanntid, selv på tvers av brukermoduler.<br />

- Systemet skal takle minst 60 simultane brukersesjoner uten at det går utover andre krav.<br />

Pålitelighet<br />

- Minimumskrav til oppetid på systemet er 99.9% per år.<br />

- Lagret data skal repliseres i sanntid til sekundærsystem.<br />

- Inkrementell sikkerhetskopi skal gjennomføres 1 gang daglig. Full sikkerhetskopi gjøres 1 gang i uken.<br />

Sikkerhet<br />

- Systemet skal kun være mulig å aksessere innenfor <strong>Brunvoll</strong> <strong>AS</strong> sitt datanettverk. Ekstern tilgang skal<br />

kun være mulig over kryptert VPN-forbindelse.<br />

- Personopplysninger om kunder og ansatte skal være iht. personopplysningsloven §28<br />

Vedlikeholdslettende krav<br />

- Systemet skal utvikles på plattformen IBM Lotus/DB2<br />

- Systemet skal kunne kjøres på Windows XP eller høyere, og må kunne emuleres på plattformer som<br />

OS X og Linux.<br />

Standardiserte krav<br />

- All data som ved vekt og mål, skal det brukes SI-eneheter (meter, sekunder, osv…).<br />

Dokumentasjon<br />

- All dokumentasjon om systemet skal samles i en teknisk rapport.<br />

Intraoperabilitet<br />

- Systemet skal kunne kommunisere med eksisterende systemer ved å benytte seg av XML-RPC.<br />

15


11. Konseptuelt klassediagram<br />

11.1. Illustrasjon<br />

Figur 6: Konseptuelt klassediagram<br />

11.2. Kommentarer til konseptuelt klassediagram<br />

Det ble gjennomført en diskusjon i arbeidsgruppa på hvilke konseptuelle klasser forretningsbildet i <strong>Brunvoll</strong> <strong>AS</strong> i<br />

hovedsak består av. De hjelpemidlene som ble benyttet var å delta i de ulike produksjonsleddene i bedriften,<br />

slik at klassediagrammet i størst mulig grad samsvarer med forretningsbildet. Deretter ble metoden Class<br />

Responsibility Colaboration (CRC) benyttet internt i arbeidsgruppa for å sortere og knytte klassene sammen.<br />

Primæroppgaven til salgsavdelingen er å bedrive salg av produkter- og tjenester. De daglige oppgavene består<br />

følgelig av å registrere ordrer tilknyttet en kunde. I diagrammet er dette illustrert med klassene ”Kunde” og<br />

”Ordre”. Den enkelte kunde kan ha ordrer knyttet til seg, hvor det i ordren legges inn ordrelinjer, som har<br />

direkte relasjon til konkrete produkter- og tjenester (heretter ”artikkel”) som ligger lagret i en katalog. Disse to<br />

objektene er beskrevet med klassene ”Ordrelinje” og ”Katalog”. Det er salg sin oppgave å finne frem til den<br />

artikkelen som kunden etterspør, som utgjør et direkte forhold mellom ordrelinje og en artikkel i katalogen.<br />

Når det er valgt en artikkel fra katalogen, blir den valgte artikkelen omgjort til et konkret eksemplar. På den<br />

måten kan det logges hendelser i produksjonen av eksemplaret, eller leveransen av tjenesten. Hendelser legges<br />

inn i alle ledd av forretningsprosessene, og er kjennetegnet ved klassen ”Eksemplarlogg” som har direkte<br />

relasjon til klassene ”Personell” og ”Eksemplar”.<br />

Det oppstod her en diskusjon hvorvidt hendelsesloggen skulle knyttes til ordren eller eksemplaret. Da<br />

produksjonsavdelingen kun er interessert i produktbeskrivelsen, fant vi det mer komplekst og unødvendig å<br />

knytte hendelsesloggen til ordre.<br />

Designavdelingen er ansvarlig for ajourhold og oppretting av nye artikler i katalogen. Da salg er nærmeste<br />

samarbeidspartner, vil det ved spesielle kundebehov bli laget spesifikke artikler som salg kan legge inn i ordren<br />

på normert måte. Det viktigste objektet for design er katalogen, og er i diagrammet beskrevet med<br />

superklassen ”Katalog”. Grunnen til at det benyttet en superklasse, er at det må skilles mellom produkter som<br />

16


skal gå til produksjon, og tjenester som eksempelvis konsulentleveranse. Superklassen generaliseres derfor av<br />

klassene ”Produkt” og ”Tjeneste”, som har hver sine spesifikke attributter. Som vedlegg til CAD-designet i<br />

klassen ”Produkt” ligger det relasjoner til produksjonsmateriell, slik at produksjonsavdelingen kan planlegge sin<br />

aktivitet etter hva som er på lager.<br />

Hos produksjonsavdelingen er det arbeidslederne som fordeler ansvaret i tilvirkningen av konkrete<br />

produkteksemplar. Det opprettes da en arbeidsbeskrivelse som tilordnes den arbeideren som har slik ledig<br />

kapasitet at tidsfristen overholdes. Dette er beskrevet med klassen ”Arbeidsfordeling”, som har relasjon til<br />

klassene ”Personell” og ”Eksemplar” (da fortrinnsvis ”Produkteksemplar”)<br />

Serviceavdelingen kan etter initiativ fra salg lete frem spesifikke produkteksemplar, og se hva som er gjort<br />

under produksjonen slik at eventuell feilretting i etterkant av leveranse kan gå mer effektivt.<br />

Arkitektur<br />

12. Strukturorganisering<br />

Da <strong>Brunvoll</strong> <strong>AS</strong> per i dag har et godt utbygget trådbundet TCP/IP-nettverk, og eksisterende systemer benytter<br />

seg av denne plattformen, vil det være hensiktsmessig at det nye systemet implementeres på samme<br />

plattform. De eksisterende systemene har dessuten mulighet til å utveksle data med andre systemer vha. XML-<br />

RPC. Alle klienter benytter seg av Microsoft Windows XP eller nyere som plattform.<br />

Vår diskusjon går ut på hvilken strukturmodell som passer best til vår løsning når vi i utgangspunktet ønsker å<br />

beholde det meste av klienter. Vi kan ta for oss løsningen i ytterpunktene; å legge all prosessering på<br />

klientsiden, eller et distribuert system fra en sentral tjener. <strong>Brunvoll</strong> <strong>AS</strong> har i dag datamaskiner som kan<br />

rangeres fra helt moderne til utdaterte maskiner. De har også et ønske om å ta i bruk smarte telefoner/PDAer i<br />

sin drift. Dette gir oss en del begrensninger i forhold til akkurat hvor mye prosessering som kan gjøres på<br />

klientsiden. Fra programmererens synspunkt vil det også være mye mer arbeid å få programmert egne<br />

applikasjoner tilpasset de forskjellige klientene. Dette kan tyde på at vi må gå bort fra en typisk tungdrevet<br />

klient og mer i retning et distribuert system, med enkle klienter hvor det meste av prosessering skjer på<br />

tjenersiden. En løsning som fyller disse kriteriene er for eksempel en webløsning. Denne løsningen gjør oss<br />

veldig knyttet opp mot et nettverk, men her må vi legge følgende argumentasjon til grunne; Systemet skal<br />

kunne kommunisere med forskjellige avdelinger på tvers av bedriften, og følgelig vil det eksistere et<br />

kommunikasjonsbehov. Hvorvidt vi legger mye av systemet på klient eller tjener, vil dette behovet alltid<br />

eksistere.<br />

Vi har gjort følgende vurderinger ut fra de forskjellige strukturmodellene:<br />

- Repository modell er en av strukturorganiseringene vi kan velge. Denne modellen kan tolkes på to<br />

måter; Systemet kan legges i sin helhet på hver enkelt klient, og utveksle informasjon seg i mellom<br />

uten at vi har en sentral tjener innblandet. Dette vil gjøre at svært mange av klientene må byttes ut,<br />

da det vil være et behov for tyngre klienter. Denne modellen vil også lett kunne føre til inkonsistens,<br />

da hver klient er avhengig av å få oppdateringer fra andre klienter. Går en klient ned må det også lages<br />

en mekanisme for å håndtere etterslep av data. Den andre varianten av Repository modell kan tolkes<br />

slik at vi introduserer en tjener som håndterer en felles database for systemet. Data vil da lagres på en<br />

sentral tjener, men mesteparten av prosessering ligger fortsatt på klienten.<br />

- Klient- tjener modellen kan benyttes som en distribuert modell hvor all prosessering skjer på<br />

tjenersiden. Det gjør at systemet kan implementeres uten større endring eller oppgradering på<br />

klientsiden, og at integrasjon mot eksisterende systemer kan gjøres mens de er i drift. Det er også<br />

uproblematisk at klienter benytter av seg av forskjellig operativsystem/plattform, da det kun er<br />

17


nødvendig med en nettleser for å kunne benytte løsningen. Det vil også være mulig å benytte mobile<br />

klienter, såfremt disse kan kobles til nettverket med VPN eller lignende.<br />

- Lagdelingsmodellen er en grei måte å organisere systemet i sin helhet da den deler systemet inn i lag<br />

hvor hvert tilbyr et sett med tjenester. Modellen egner seg ikke til bruk i et distribuert system, men<br />

den forklarer godt hvordan systemet på én datamaskin er organisert.<br />

I henhold til ikke-funksjonelle krav er vi låst til programvareplattformen IBM Lotus/DB2. Dette gjør at vi må<br />

benytte oss av XML som datautvekslingsformat noe som er grunnlaget for vår konklusjon.<br />

12.1. Konklusjon<br />

Rent overordnet har vi valgt å basere oss på Gartner Group sin distribuerte ”klient- tjener modell”. Alt av data<br />

ligger lagret på tjeneren, og klienten sørger kun for visning av presentasjon.<br />

Figur 7: Klient-tjener modell distribuert versjon<br />

For å beskrive systemet i detalj, har vi valgt å benytte oss av en 4-lags lagdelingsmodell. Løsningen vår blir<br />

derfor en kombinasjon av to modeller; klient-tjener og lagdeling. Da utfordringen ligger i arkitektur til systemet,<br />

vil videre beskrivelser ta utgangspunkt i lagdelingsmodellen.<br />

Figur 8: Lagdelingsmodell for systemet<br />

Presentasjonslaget er bindeleddet mellom applikasjonslag og klient, og skal gi brukeren en grafisk fremstilling<br />

av data etter klienttype. Fra applikasjonslaget utveksles det XML-data, som i presentasjonslaget omsettes til<br />

XHTML vha. XSLT-stilark. Det skal være to separate stilark tilpasset de ulike klienttypene (PC og PDA), hvor det i<br />

presentasjonen skal legges vekt på skjermstørrelse og grafikk.<br />

Vi har valgt å skille applikasjons- og domenelag fra hverandre, for å vise hvilken(-n) klasse(r) som tilhører de<br />

ulike delprosjektene i leveranse 2 av gjennomføring. I applikasjonslaget har vi ulike moduler som reflekterer<br />

forretningsprosessene systemet skal kunne håndtere. Disse modulene vi vil se nærmere på i det<br />

18


objektorienterte klassediagrammet (OOD). Modulene har en direkte tilknytning til ulike domener, og i disse vil<br />

det implementeres operasjoner for de tilknyttede modulene.<br />

All data som genereres på applikasjons- og domenelag, lagres og hentes til/fra relasjonsdatabasen gjennom<br />

DB2-forbindelser. Ved informasjonsutveksling mot eksterne systemer (lagersystem, personell, faktura og<br />

regnskap), vil det benyttes XML-RPC forespørsler. Det er viktig å presisere at data som genereres ved en slik<br />

informasjonsutveksling lagres i relasjonsdatabasen.<br />

13. RUP 4+1<br />

13.1. Process View<br />

Vi skal fra dette perspektivet diskutere utveksling av data mellom ulike prosesser i systemet, og hvilke<br />

kontrollmodeller som er fornuftig å benytte. Vi skal i denne diskusjonen forholde oss til kontrollmetodene<br />

sentralisert og hendelsesbasert.<br />

13.1.1. Samhandling i lagmodellen<br />

Forespørsler fra klientene blir konsentrert inn til presentasjonslaget gjennom HTTP-forespørsler. Utfordringen<br />

fra dette stadiet er å finne en fornuftig kontrollmodell for kommunikasjon mellom lagene nedover i modellen.<br />

Datautvekslingsformatet er låst til XML iht. ikke-funksjonelle krav, så kontrollmodellen må være forenlig med<br />

dette formatet. I kommunikasjonen mot relasjonsdatabasen er vi bundet til kontrollmodellen return-call som<br />

DB2 Connections benytter seg av.<br />

- Da klienten gjør HTTP-forespørsler, har vi sentralisert kontroll etter call-return modellen fra<br />

klientsiden. Dette låser oss noe i valget av kontrollmodell da klienten alltid forventer et svar.<br />

- Dersom vi velger å benytte oss av hendelsesbasert kontroll, må vi iverksette en handling umiddelbart<br />

etter vi har fått en forespørsel mot presentasjonslaget. Da en forespørsel er sterkt knyttet til en<br />

bestemt sesjon, er det utelukket å benytte broadcast-modellen. En slik modell vil ikke gi oss<br />

muligheten til å spesifisere sesjonsdata videre nedover i lagene. En modell vi kan velge å benytte oss<br />

av er interrupt-basert. Denne vil dog være noe begrenset i omfang da den ikke tilbyr noe svar – kun en<br />

igangsettelse av en prosess.<br />

- Et nærliggende valg er å benytte oss av samme kontrollmodell som HTTP – nemlig call-return.<br />

Ulempen med call-return er at den kan introdusere ytelsesproblemer dersom forespørsler henger seg<br />

opp nedover i lagene. Vi må derfor benytte en kommunikasjonsprotokoll hvor det er mulig å overvåke<br />

forespørsler, og eliminere de som tar for lang tid.<br />

Konklusjon<br />

Vi har valgt å gå for call-return som kontrollmodell for kommunikasjonen mellom lagene. Som<br />

kommunikasjonsprotokoll har vi valgt å benytte HTTP på applikasjonslag, da dette gjør at vi slipper å utvikle vår<br />

egen server på dette laget.<br />

Figur 9: Kommunikasjon mellom lagene<br />

19


Kommunikasjon mot eksterne systemer<br />

I kommunikasjonen mot eksterne systemer er vi låst til XML-RPC, som er basert på call-return modellen.<br />

Uansett er det behov for å diskutere om data skal hentes ut hver gang ved forespørsel, om det skal<br />

mellomlagres (caches), eller overføres i form av en dump med programmerte intervaller.<br />

- De systemene vi skal kommunisere mot er ”Lagersystem”, ”Personellsystem” og ”Faktura og<br />

regnskap”. Disse systemene opererer med sin egen database, og det er viktig at konsistens bevares<br />

dersom det blir initiert oppdatering av data fra vårt system.<br />

- Dersom vi går for dump med programmerte intervaller vil konsistens kun være opprettholdt rett etter<br />

oppdatering. Det krever også at vi utvikler verktøy som differensierer endringer gjort i begge<br />

systemer. Fordelen med en slik løsning er at systemet vårt ikke er avhengig av det eksterne systemet<br />

er oppe, og at ytelse kun begrenses av vårt system.<br />

- Dersom vi henter ut data hver gang ved forespørsel, vil data alltid være konsistent. Problemet er at<br />

ytelse kan bli et problem dersom det eksterne systemet er belastet/nede, eller det blir initiert mange<br />

forespørsler samtidig. Vi har mulighet til å mellomlagre data (cache), men dette introduserer<br />

kompliserte kommunikasjonsklasser da det må holdes oversikt på hvilken data som er oppdatert.<br />

Konklusjon<br />

Fra ”Lagersystem” og ”Personellsystem” er det behov for sanntidsdata, så data må hentes ut hver gang ved<br />

forespørsel. Forespørsler som genererer stor datatrafikk, skal mellomlagres (caches) så langt det lar seg gjøre.<br />

Da det ikke er behov for sanntidsoversikt mot ”Faktura og regnskap” skal det kjøres en daglig ”dump” av<br />

ordregrunnlaget.<br />

13.2. Logical- og Implemenation View<br />

Fra dette perspektivet har vi sett på hvilke klasser løsningen bør bestå av, og prøvd å sortere disse inn under de<br />

ulike lagene. På grunnlag av dette har vi utarbeidet et objekt orientert klassediagram (OOD). Vi har bevisst<br />

utelatt presentasjonslaget fra diagrammet, da dette kun består av en formateringsprosess som allerede er<br />

implementert i programvareplattformen. Diagrammet er ikke detaljspesifikt på alle punkter, og det kan<br />

argumenteres for at enkelte attributter/operasjoner er utelatt. Dette er gjort bevisst da vi ikke har mulighet til<br />

å spesifisere hele løsningen da den er såpass omfattende. Vi har på tross av dette prøvd å vektlegge at hver<br />

klasse skal ha så høy funksjonell styrke som mulig. Hovedtanken med diagrammet er at en programmerer skal<br />

kunne gå inn, og få et oversiktbilde på hvordan de ulike klassene skal samhandle og navngis.<br />

20


13.2.1. Kommentarer til objekt orientert klassediagram (OOD)<br />

Klassene i applikasjonslaget er i praksis kontrollklasser, som påkaller operasjoner fra klassene i domenelaget.<br />

Navn og operasjoner på applikasjonsklassene skal reflektere de ”use casene” som ble utarbeidet i<br />

kravspesifikasjon. Pakkeinndelingen er gjort på grunnlag av delprosjektene i leveranse 2, iht. til<br />

gjennomføringsplan. Videre har vi markert klassene som utgjør rammeverket (operasjoner som er felles for alle<br />

klasser) i rødt. GUI-klassen benyttes av applikasjonsklassene for å utforme brukergrensesnittet.<br />

21


13.2.2. Ekspandert sekvensdiagram<br />

Vi har utarbeidet et eksempel på hvordan interaksjonen mellom de ulike klassene fungerer for applikasjonen<br />

Produktrealisering. I en fullstendig arkitekturbeskrivelse ville vi gjort lignende beskrivelser for de mest<br />

komplekse applikasjonene.<br />

22


13.3. Deployment View<br />

Som i likhet med den arkitekturiske oppbyggingen av programvaren, er også implementering av hardware gjort<br />

lagdelt. Dette er gjort for å sikre driftsstabilitet og ytelse, og vi har kommentert de ulike komponentene i<br />

løsningen nedenfor.<br />

Figur 10: Deployment View for <strong>ThrustFlow</strong> <strong>Management</strong><br />

Klient<br />

Med klient menes en enhet (arbeidsstasjon, laptop, PDA) som er tilkoblet nettverket og betjenes av én person.<br />

Klienten skal benytte seg av en nettleser, og gjøre forespørsler mot systemet vha. HTTP. Det eneste klienten<br />

skal foreta av prosessering er XHTML-tolkning vha. nettleseren. Programvare er Microsoft Internet Explorer.<br />

Lastfordeling<br />

Klientene skal foreta HTTP-forespørsler mot en felles nettadresse, som i praksis er adressen til en lastfordeler.<br />

Denne skal fordele forespørsler til presentasjonsserverne, etter kriterier som status, belastning og kapasitet.<br />

Lastfordeleren skal huske sesjoner, og sørge for at klienten så langt det gjør seg mulig kommuniserer med<br />

samme presentasjonsserver, slik at det mulig å lagre data tilknyttet sesjonen (via Cookies). For å sikre<br />

redundans, skal det være en primær- og sekundær (backup) lastfordeler. Programvare på tjener er WebSphere<br />

Loadbalancer.<br />

Presentasjon<br />

Presentasjonsserverne skal utgjøre bindeleddet mellom applikasjon og klient, og tilpasse presentasjon etter<br />

klienttype. Dette laget vil utføre forespørsler mot applikasjonslaget, og omforme returnert XML til XHTML vha.<br />

XSLT-stilark. Det skal være to noder slik at redundans bevares. Programvare på tjener er IBM HTTP Server.<br />

23


Applikasjon<br />

Applikasjonsserverne utgjør kjernen i systemet, og skal generere applikasjonsdata på XML-format etter<br />

forespørsel fra presentasjonsserverne. All data som genereres skal lagres og hentes fra databasen, og<br />

forespørsler mot eksisterende vha. XML-RPC skal utføres mot eksisterende systemer. Det skal være to noder<br />

slik at redundans bevares. Programvare er IBM Lotus og IBM HTTP Server.<br />

Database<br />

Databaserserverne skal drive en relasjonsdatabase, som applikasjonsserverne skal kunne benytte til å lagre og<br />

hente generert data. Det skal være to noder slik at redundans bevares, og replisering skal gjøres i sanntid. Ved<br />

skriveoperasjoner skal det benyttes låsing på tabellnivå for å bevare konsistens. Programvare er IBM DB2 Suite.<br />

<strong>Management</strong><br />

Administrasjonsserverne skal sørge for oppdatering av systemet, og utføre sikkerhetskopi etter fastsatte<br />

intervaller.<br />

24


Evaluering av eget arbeid<br />

Generelt om arbeidet<br />

Straks vi ble informert om prosjektarbeidet, dannet vi gruppen og begynte med forarbeid. Vi hadde<br />

innledningsvis en forventningsavklaring om ambisjonsnivå og hva vi ville ha ut av prosjektet. Vi var alle enige<br />

om at vi ønsket å ha fokus på faget, fremfor å bruke mye tid på å finne opp et helt nytt produkt. Utfordringen<br />

ble da å finne en relevant problemstilling som simulerer en reel situasjon. Med dette som utgangspunkt<br />

diskuterte vi oss gjennom tidligere arbeidsplasser vi selv hadde erfaring fra. Her fant vi mange interessante<br />

problemstillinger, og valget falt på å lage et arbeidsflytsystem for å effektivisere produksjonen ved <strong>Brunvoll</strong> <strong>AS</strong>.<br />

Dette var en bedrift Eide hadde god kjennskap til, og som vi kunne få ut nøkkelopplysninger fra. Når vi ser<br />

tilbake, er vi godt fornøyd med valget. Det har vært relativt lett å identifisere krav til systemet, da vi har hatt<br />

kontakt med ansatte i bedriften.<br />

Vi snakket sammen før hvert delprosjekt, fordelte oppgavene noenlunde likt, og satte deadlines for når første<br />

utkast skulle være ferdig. Den meste av tiden på skolen gikk med til dette. Underveis gikk vi gjennom det vi var<br />

usikre på i fellesskap. Måten vi har gjort det på, ser ut til å ha fungert. Vi har jobbet kontinuerlig og har ikke<br />

hatt noe problem med tidsfristene. Noe vi kunne gjort bedre fra starten av, var å ha forhåndsdefinert<br />

grupperollene. Disse rollene har ikke vært fastsatt underveis i prosjektet, og det ville nok vært fordel med en<br />

prosjektleder.<br />

Delinnleveringene<br />

Innledningsvis tok vi et noe for teknisk perspektiv på forprosjektet. Vi tenkte for mye løsning, og glemte at<br />

dette egentlig er en slags salgsoppgave som skal overbevise en potensiell kjøper. Etter den første<br />

tilbakemeldingsseansen leste vi over forprosjektet vårt, og prøvde å ha fokus på at dette skal virke tiltalende<br />

for en person uten teknisk bakgrunn. Dette resulterte i en total omskriving av oppgavebeskrivelsen, og<br />

omforming av flere mindre punkter. Vi er nå godt fornøyd med resultatet, og mener det gir en utenforstående<br />

en god presentasjon av hva oppgaven går ut på.<br />

Når vi gikk løs på kravspesifikasjon, var vi sett i lys av forprosjektet noe forsiktig med å tenke løsning. Dette<br />

resulterte i ”use case”-beskrivelser som var mer fokusert på hensikt, enn beskrivelse. Vi måtte derfor revidere<br />

disse beskrivelsene i etterkant. I de detaljerte use case beskrivelsene, ble det noe lite brukervariasjoner. Dette<br />

er en direkte følge av at brukerinteraksjonen er relativt enkel, sett i sammenheng med hva systemet skal gjøre.<br />

Vi er fornøyd med det vi har gjort, men vi kan se at beskrivelsene har blitt noe generelle. Dette har med<br />

bakgrunn i at prosjektet vårt er svært omfattende, og at det ikke er mulig å beskrive alt i detalj med de<br />

rammene faget setter.<br />

Når det gjelder arkitektur, brukte vi mye tid på å komme frem til en disposisjon av stoffet. Vi måtte jobbe mye<br />

sammen, da alt hadde en svært tett knytning og alle måtte ha en dypere forståelse for å kunne bidra til<br />

prosjektet. Etter hvert som vi kom inn i stoffet, utviklet arkitektur seg til et spennende område som vi har<br />

jobbet mye med. Vi tok tidlig en avgjørelse på at vi ønsket å beskrive selve oppbyggingen av systemet, fremfor<br />

å bruke tid på design av brukergrensesnitt. Vi er svært tilfreds med det vi har kommet frem til, og mener at<br />

arkitektur er den sterkeste delen av prosjektet.<br />

Hovedinntrykk<br />

Vi føler vi har lagt mye arbeid i prosjektet i forhold til størrelsen på faget. Når vi nå ser på produktet, er vi<br />

særdeles fornøyd. Vi ser at enkelte ting har blitt noe overfladisk grunnet prosjektstørrelsen, men føler på tross<br />

av dette at vi har klart å understreke prinsippene i systemutvikling. Det har vært lett å spørre faglærer om råd<br />

underveis, noe vi setter stor pris på. Faglærer har i tilbakemeldingene fremprovosert selvstendig tankegang<br />

fremfor å servere oss fasiten. Dette har fungert bra for gruppas læring.<br />

I

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!