ThrustFlow Management Brunvoll AS
ThrustFlow Management Brunvoll AS
ThrustFlow Management Brunvoll AS
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