1 Forord
2 Indledning
2.1 Opdragsgiver
2.2 Problemstilling
2.2.1 Identifikation
2.2.2 Reklamesiden
2.2.3 Løsning
2.2.4 Alternative løsninger
2.2.4.1 Web-delen
2.2.4.2 Klient-delen
2.2.4.3 Database-delen
2.2.4.4 Serverdelen
2.3 Konkurrenter
2.4 Den logistiske effektivitet
2.5 Eventuelle udvidelser
2.5.1 Sikkerhed
2.5.2 CBI
2.6 Notation
3 Analyse
3.1 Opgaven
3.1.1 Omgivelser
3.1.2 Systemdefinition
3.2 Problemområdet
3.2.1 Klasser
3.2.1.1 Hændelsestabel
3.2.2 Struktur
3.2.2.1 Klassediagram
3.2.3 Hændelser
3.3 Anvendelsesområdet
3.3.1 Brug
3.3.1.1 Oversigt
3.3.1.2 Aktører
3.3.1.3 Brugsmønstre
3.3.2 Funktioner
3.3.2.1 Komplet funktionsliste
3.3.2.2 Specifikation af funktioner
3.3.3 Brugergrænsefladen
3.4 Anbefalinger
3.4.1 Strategi
3.4.2 Udviklingsøkonomi
3.4.3 Edb-systemets nytte og realiserbarhed
3.5 Delkonklusion
3.5.1 Kravspecifikation
3.5.2 Afgrænsning
4 Design
4.1 Opgaven
4.1.1 Rettelser til analysen
4.1.2 Kvalitetsmål
4.2 Teknisk platform
4.2.1 Udstyr
4.2.2 Multi-tier
4.2.3 Basisprogrammel
4.2.4 Systemer og apparater
4.3 Arkitektur
4.3.1 Komponentarkitektur
4.3.2 Procesarkitektur
4.4 Frameworket
4.4.1 Dk.dkik.profiler.framework.kernel
4.4.1.1 Struktur
4.4.1.2 PProtocol
4.4.1.3 Klasser og metoder
4.4.2 Dk.dkik.profiler.framework.kernel.plugin
4.4.2.1 Struktur
4.4.2.2 Klasser
4.4.3 Dk.dkik.profiler.framework.hic
4.4.3.1 Struktur
4.4.3.2 Klasser
4.4.4 Dk.dkik.profiler.framework.pdc
4.4.4.1 Struktur
4.4.4.2 Klasser
4.4.4.3 Database
4.5 Det som ikke tilhører frameworket
4.5.1 XWindow
4.6 Hjemmesiden
4.6.1 ASP
4.7 Anbefalinger
4.7.1 Edb-systemets nytte
4.7.2 Ibrugtagningsplan
4.7.3 Realiseringsplan
4.8 Delkonklusion
5 Implementering
6 Konklusion
1 - Forord
Fra starten har alle i gruppen vist stor interesse og entusiasme for dette
projekt, og for os har det hele tiden været mere end 'blot' en eksamensopgave.
Vi så muligheden for at lave et godt stykke arbejde, som rent faktisk, i en
senere version, kunne bruges i den virkelige verden. Vi har således tilstræbt,
at produktet også skulle være velegnet til fremtidig videreudvikling og
standardisering. Det har derfor ikke være mangel på lyst eller interesse, der
har været årsag til de komplikationer, vi trods alt har måtte tumle med
undervejs. Vi har i vores projekt, selvfølgelig haft problemer af faglig
karakter, men disse har aldrig været uoverskuelige eller sænket os væsentligt.
De faglig relaterede problemer har med andre ord, ikke været flere eller større
end man bør og kunne forvente ved et projekt af denne type. Dette skyldes især
at vi internt i gruppen supplerer hinanden godt både som uformel-, men i høj
grad også som formel gruppe.
Frugten af gruppens arbejde består i øvrigt dels af programmellet på vedlagte
cd, dels af følgende dokumenter:
- Produktrapporten
Denne indeholder alle de hårde facts som diagrammer, beskrivelser
m.v. Det er tiltænkt at enhver anden udviklingsorganisation, med dette
dokument i hånden, skal kunne fortsætte produktudviklingen der hvor vi
slap. Produktrapporten er altså en manuel til-, og en fuldstændig
beskrivelse af systemet. Dokumentet er opdelt i følgende hovedafsnit:
Indledning, analyse, design og implementering.
- Procesrapporten
Dette dokument indeholder de bløde informationer og er altså en
beskrivelse og en dokumentation af selve den proces som vi har gennemløbet
i projektperiodens 6 uger. Det er også i procesrapporten læseren vil finde
informationer om projektetablering, metodevalg, tidsplaner m. m samt
mødereferater.
- Appendiks
Her findes en datadictionary, som beskriver specielle termer benyttet i
rapporten.
- Bilag
Her findes blandt andet dele af systemets sourcekode.
Delprodukter:
Udover de skolerelevante ting, har opgaven også resulteret i nogle
delprodukter. Her kan nævnes det webforum, som vi har brugt til udarbejdelse af
rapporten. Dette forum er udviklet i PHP, og opdaterer dynamisk rapporten, som
vi uploader den til serveren.
Så har det også resulteret i oprettelsen af en webserver, der kan køre dette
forum, samt serverapplikationen til systemet.
Endeligt er der alle de testklienter, som vi har udviklet til at teste dele af
klientsofwaren, samt teste dele af serversoftwaren.
Et udviklingsprojekt af denne type kan ikke klart beskrives
som en række af kontinuerlige arbejdsfaser. Arbejdet har derimod i høj grad
indeholdt iterationsprocesser, men man kan groft karakterisere projektarbejdet
som en bevægelse gennem følgende faser: Foranalyse -> Analyse
-> Design -> Implementering. Vi har i rapportskrivningen
søgt at overholde det tidsmæssige aspekt i produktudviklingen. Dette afspejles
dels via rapportstrukturen, men også i sprogbrug og formuleringer. Det er
dermed vores håb, at læseren således i højere grad, vil opleve det beskrevne
projekt som den dynamiske størrelse det er.
Ophavsret
Ophavsretten omhandler beskyttelse af ens arbejde, dermed menes i princippet
litterære såvel som kunstneriske værker, indenfor Danmarks grænser, i alle
former og udgaver. I vores tilfælde drejer det sig om en distribueret
kvalitetsstyringssystem med tilhørende DB. Det er ikke tilladt nogen at lave
unødige kopier af programmet, hvilket vil sige at kun gruppen selv, Stig Jensen
og sensor har kopier af programmet. Med programmet menes kilde koden såvel som
alt andet materiale, som omhandler projektet. Endvidere har den eksaminerende
part ingen ret til at videregive programmet til andre end de personer, som er
direkte involverede i projektet. Såfremt læseren er en datamatiker-studerende
eller af andre grunde kan ønsker at se bilagene, kan disse rekvireres ved
direkte henvendelse til forfatterne. Projektgruppen har endvidere ret til at
bestemme, hvilke dele af arbejdet som ikke skal være tilgængelige via
biblioteket på Roskilde EDB-skole. De tre dokumenter (Produktrapport,
Procesrapport og appendiks) er offentlig tilgængelige, og må benyttes til
ikke-kommercielle formål, så længe dansk lov om ophavsret overholdes.
God læselyst.
- Drengene fra CoffeVille
2 - Indledning
Indledningen indeholder en række afsnit og beskrivelser som forhåbentligtvil
skabe et overblik for læseren. Først vil afsnittet opdragsgiver indeholde en
beskrivelse af den oprindelige opdragsgiver og projekt-ideens 'fødsel'.
Efterfølgende findes en problemstilling, som indeholder en
problem-identifikation, en løsning samt en diskussion af mulige alternative løsninger.
Endelig vil indledningen indeholde et afsnit som beskriver systemets forventede
forøgelse af Den logistiske effektivitet i en given basisorganisation, samt
afsnittene: eventuelle udvidelser og notation.
2.1 - Opdragsgiver
Dette projekt er et inhouse-projekt, og
har derfor ingen ekstern opdragsgiver, ikke destomindre bygger dele af
projektideen på en ekstern organisation, nemlig Siemens Danmark. Gruppen
arbejdede på 2. semester på en problemstilling, som delvist var stillet af
Siemens. Siemens ønskede, at kunne lette og øge styringen af deres
tilbudsgivningsproces. For at give læseren en forståelse af denne
problemstilling, vil den her blive kort skitseret.
Lad os forestille os, at en kunde henvender sig til Siemens, for at få et
tilbud på et givent projekt. Siemens går nu i gang med at udforme deres tilbud:
Nogle medarbejdere sættes på opgaven, der bliver iværksat en problemanalyse,
udelt arbejdsopgaver og ansvarsområder osv. Herefter begynder man at indsamle
oplysninger, om alle de delelementer, der skal indgå i tilbuddet. Dette
foregår, ved at benytte afsnit og/eller brudstykker af tekst fra tidligere
tilbud. Først skal disse gamle tilbud dog lokaliseres, ofte ved at
'spørge sig for' hos kolleger og andre Siemens-afdelinger. Efterhånden har
tilbuds-gruppen indsamlet en række informationer, som herefter skal redigeres
og tilpasses. Anstrengelserne ender som et word-dokument, hvorpå almindelig
layout-redigering udføres.
Den skitserede arbejdsmetode er meget tidskrævende, og kræver endvidere, at der
omhyggeligt skal læses korrektur på det færdige tilbud. Siemens erfaringer
viser, at tilbud som er udarbejdet på denne måde, ofte indeholder mange fejl.
Hvis kunden i sidste ende underskriver en kontrakt med Siemens, vil denne
kontrakt være bindende, og derfor vil Siemens være forpligtiget til at
efterkomme tilbuddet. Tilbudet betragtes altså, som et juridisk bindende
dokument og netop derfor skal fejlfrekvensen holdes på et absolut minimum.
Derudover ønsker Siemens at frigøre nogle af de økonomiske og menneskelige
ressourcer, som er bundet i en sådan, lidt gammeldags, tilbudsudarbejdelse.
Opgaven havde altså som hovedformål, at udvikle et system, som kunne
kvalitetssikre tilbuds-udarbejdelses-processen, samt bidrage til en forbedret
logistisk effektivitet i samme forbindelse.
For at løse 'Siemens-problemet', udarbejdede gruppen en kvalitetsstyrings-model
og producerede endvidere en prototype af et kvalitetsstyrings-system. Systemet
byggede blandt andet på en database indeholdende rapporter og andre
tilbuds-dele. Eksamensrapporten og en kopi af prototypen blev afleveret til
Siemens Danmark. Da vi ikke vedligholdt kontakten til Siemens, er samarbejdet
med dem sidenhen ophørt. Denne kvalitetsstyrings-model kan der læses om i
afsnittet Kvalitetsstyring.
Som sagt, er nuværende projekt et inhouse-foretagende og bygger delvist på
ideen fra 2.semester, dog anlægger vi nu et mere generelt syn således, at der
ikke længere er tale om et tilbudsudarbejdelses-system, men et
projektudarbejdelses-/dokumentstyringssystem, altså: Et generelt system til
udarbejdelse og styring af alle slags dokumenter. Denne styring er
således stadig underlagt de samme kvalitetsstyringsregler, der er gældende for
tilbudsudarbejdelsen. Systemet garanterer dog ikke at reglerne bliver overholdt
til punkt og prikke, da der kan være forskellige regler, fra virksomhed til
virksomhed. Derfor må virksomheden selv udarbejde et sæt regler, der skal
overholdes af medarbejdere. Systemet giver således mulighed for, at
implementere disse regler i arbejdsgangen, så dokumenthåndteringen og
projektudarbejdelsen kan i størst mulig grad kvalitetsstyres. I modsætning til
2.semester-opgaven, vil det system vi denne gang 'bygger', blive et
flerburgersystem.
2.2 - Problemstilling
Vi ønsker altså et system, som lidt populært sagt er et elektronisk,
net-baseret 'mødested/kontor', som skal kunne bruges af mindre
virksomheder/projekt-grupper til at koordinere deres fælles arbejde.
'Mødestedet/kontoret' skal kunne deles op i 'rum', således at hver bruger vil få
tildelt et sted: et home. Det skal endvidere være muligt at 'binde'
flere brugere sammen i grupper, således at systemet direkte understøtter
teamwork/gruppearbejde og giver mulighed for at en bruger kan arbejde på
eksempelvis et kapitel i en gruppe-rapport, mens en anden bruger,
som er tilknyttet samme gruppe, arbejder på et andet kapitel i samme
rapport. Endvidere skal der fra brugerens home/startside være mulighed for at
benytte sig af alle almindelige post-funktioner, at 'opbevare' private
dokumenter/notaer osv., samt have adgang til de ressourcer som
basisorganisationen stiller til rådighed (eks: Kunde-lister, adresser,
database-opslag, tekster osv.). Det er endvidere et ønske, at systemet ikke
skal diktere brugernes geografiske placering.
Set fra brugerens synspunkt, er systemet altså todelt: Det private område,
gruppe området, som han deler med andre brugere i samme gruppe, og det globale
område, som er det område, der er tilgængeligt for alle i virksomheden.
For basisorganisationens kunder, skal systemet levere web-baserede oplysninger
om den givne kundes forhold, og giver kunden begrænset mulighed for at redigere
i disse.
2.2.1 - Identifikation
Vi har altså brug for et system som er :
- Et flerbruger-system
- Fleksibel med hensyn til brugerens
geografiske placering
- Et produkt der håndtere
standardisering
- En databasestruktur der
vejleder i genbrug af tidligere udfærdiget dokumentafsnit
Rigt billede der afspejler ide
princippet bag Pro-filer
|
Rigt
billede
|
2.2.2 - Reklamesiden
Hvorfor er vores program er at foretrække
I det følgende afsnit vil vi meget kort forklare, hvorfor det er fordelagtigt
for en virksomhed at erhverve vores produkt frem for så mange andre.
Pro-Filer er et fleksibelt og enkelt udformet produkt til brug i virksomhedens
daglige arbejdsgang. Ved hjælp af en browser kan Pro-Filer benyttes til lige
præcist de formål der er behov for i den givne virksomhed. Dette lyder vildt,
men ikke desto mindre er det sandt. Det eneste som denne fleksibilitet afhænger
af, er de HIC komponenter der er installeret serverside.
Eksempler på disse HIC elementer:
·Tekstbehandling
·Dokumentstyring
·Projektudarbejdelse
·Elektronisk postkasse
·Elektronisk opslagstavle
·Grafisk manipulation og integration
·m. f.
Pro-Filer understøtter
kvalitetsstyring af dokumenter efter ISO 9002 standarden og kan benyttes på et
Intranet såvel som over Internettet.
Pro-Filer er bygget op omkring
datawarehousing og der foreligger derfor mulighed for at versionere sine
dokumenter under projektarbejde, så der altid vil være styr på af hvem, hvad
der er blevet ændret og hvornår et dokumenter er blevet opdateret og i givet
fald om det enkelte brudstykke bør opdateres. Dette resulterer i at alle
dokumenterne altid er up-to-date.
Systemet understøtter vha.
database-bruger strukturen mange forskellige e-mail-adresser tilknyttet en
enkelt bruger. Ud fra dette kan virksomheden
sende interne nyheder, kommentarer og beskeder mm. til enten e-mail
eller til elektronisk opslagstavle for derved at formidle information
effektivt.
Vi, Gruppe5 mener at den
opmærksomme læser, af denne rapport, vil opfatte dette afsnit som ren
gentagelse af tidligere nævnte eller kommende punktopstillinger. Derfor vil vi
i stedet udskyde videre opsummering af vores produkt til den forestående
eksamens situation, for der at komme med et oplæg om hvad vi kan, som de andre
ikke kan.
2.2.3 - Løsning
Den valgte løsning, indeholder tre serverer: en
databaseserver, en web-server og hvad vi har valgt at kalde en PServer.
PServeren er det eneste komponent på server siden, som vi selv vil
udvikle. Dette medfører endvidere, at vi i så høj grad som muligt, bestræber os
på at lave svage koblinger mellem PServeren og de andre servere, således at
basisorganisationen er friere stillet med hensyn til valg af soft- og hardware.
|
Systemets hovedkomponent
|
2.2.4 - Alternative løsninger
Vi har valgt nogle teknikker til vores system, en for hvert delområde: ASP
til systemets web-del, applet til klientdelen, MySQL til databasedelen og Java
til at udvikle serverdelen. Men der er selvfølgelig alternativer, som vi har
haft med i vores overvejelser. I nedenstående tekst er disse valg og
overvejelser dokumenteret.
2.2.4.1 - Web-delen
Formålet med web-delen er et forslag til, hvordan basisorganisationen kan
udveksle informationer med deres kunder. Muligheden er, at en eventuel kunde,
der har bestilt et projekt, kan logge ind via sin browser, og se hvordan
arbejdet skrider frem. Desuden kunne man forestille sig, at kunden kunne ændre
de oplysninger virksomheden har om 'ham', via web-delen. Desuden kan det være,
at potentielle kunder skal have mulighed for at bestille yderligere information
fra den pågældende virksomhed.
Web-delen er ikke så stor, men det har alligevel krævet en stillingtagen. Der
er mange teknologier, der understøtter server side scripting her iblandt PHP,
Perlescript, CGI, Python og JSP, men vi har valgt at benytte ASP da det er en
del af pensum. Dette er altså et valg truffet på baggrund af den
skoleorienterede, og ikke fordi det nødvendigvis er det mest effektive.
ASPvalget er et "punkt" vi har "overvejet og debatteret".
Egentlig mener gruppen, at PHP ville være et bedre valg, dels på grund af den
overlegne performance (jævnfør benchmark tests - se www.chamas.com/bench
m.fl.), og dels fordi vi støtter den frie ide. Selve tilgangen til applet er
gennem HTML4.0 standard med JavaScript support.
Fordele ved ASP:
Det er en del af pensum, som vi så får lidt øvelse i. Det er rimeligt udbredt,
og forholdsvist nemt.
Ulemper ved ASP:
Det er et Microsoft produkt.
Serveren, som skal fortolke ASP siden skal have indlæst en fortolker. Denne
'fortolker' koster i langt de fleste tilfælde penge - også til Unix. Vi kunne
vælge en Windows platform til vores web-server, og så køre den gratis MS
Personal Web Server, men så igen - MS Windows koster også penge. Hvis der skal
opnås forbindelse til MySQL serveren over netværk, skal man via Windows DSN og
have en MySQL ODBC driver til at virke. For at køre SQL scripts på MySQL
serveren kræves en del åbning og lukning af forbindelser, og oprettelse af ASP
kommandoscripts. Man kan muligvis godt få forbindelse over netværk til en MySQL
database med ASP uden Windows ODBC, (Linux), men det har ikke været muligt at
finde dokumentation på det. På grund af de mange ulemper har vi overvejet at
skifte til PHP efter eksamen, da Apache (gratis) har installeret en PHP
fortolker. Men på nuværende tidspunkt har vi valgt ASP, da det jo er en del af
pensum, og det derfor er vigtigt at vise noget i ASP.
2.2.4.2 - Web-delen
Vi har valgt at basere klient-delen på applet teknologien, men et alternativ
til at lave en applet kunne være en applikation, men så skulle man hver gang
have den installeret. Det kan diskuteres hvorvidt fordelene vejer tungt for en
applet. I gruppen mener vi dog, at en applet vil være mere brugervenlig, da den
er nemmere at gå til via sin browser, så man ikke skal igennem
installationsprocedure. I en fremtidig version af systemet vil man dog kunne forstille
sig både en applikation til at køre på sin normale arbejdsstation og en applet
til at køre via sin browser, når brugeren er ude at rejse. Vi kunne også have
valgt udelukkende at lave det i HTML, men vi mener det vil blive for tungt og
langsomt, da browseren hele tiden skal loade nye HTML sider ind, eventuelt med
grafisk indhold. Desuden er der ikke så mange grafiske muligheder med HTML, og
der mange funktioner, der er optimeret til at blive til i Java.
2.2.4.3 - Database-delen
Der findes en lang række databaser på markedet i dag, flere af dem er gratis
at benytte. MySQL er freeware på Linux, samt sourcekoden er åben. Den opnår en
meget hurtig 'benchmark' og yderst veldokumenteret.
Den understøtter ikke den ekstremt avancerede SQL kode så som 'views' ect, men
dette er der heller ikke brug for i det nuværende system. Endeligt kunne disse
mangler rettes vha. en 'ny' PServ-funktionalitet.
2.2.4.4 - Serverdelen
Vi har valgt at kode serverdelen i Java frem for så mange andre muligheder,
da Java giver os den optimale mulighed for at flytte produktet fra en platform
til en anden. Desuden giver det os muligheden for at dele serverkoden med
appletkoden (som beskrevet i design afsnittet), og dette giver igen nogle
fordele.
2.3 - Konkurrenter
Konkurrence virksomheder samt produkter:
For at undersøge hvor stor en chance vores produkt vil have på det nuværende
marked, har vi været ude med følehornene og har fået følgende resultat tilbage:
Af alle de firmaer vi mente var i kategorien - konkurrent - fandt vi ud
af, at der ikke var én eneste, der havde de samme funktioner i et produkt,
som vi tilbyder i vores. Der var mange firmaer der delte de fleste af
vores funktioner ud over flere produkter, hvor andre kun kunne tilbyde få af
dem set fra et generelt synspunkt.
I nedenstående tabel har vi lavet et lille overblik over et par af disse
virksomheder inkl. produkter de tilbyder som kommer tættest på vores. I info
kolonnen kan man læse hvad produkterne tilnærmelsesvis har tilfældes med vores.
Firmanavn
|
Produkt titel
|
Info
|
Internet links
|
SAS
|
The SAS System, CFO Vision, Enterprise Reporter, HR Vision
bl.a.
|
CBI, Knowledge Management, dokumentstyring,
projektudvikling og Datawarehousing bl.a.
|
www.sas.com/software/app/cbi.html
|
Microsoft
|
Exchange 5.5
|
E-mail og online formularer og - samarbejdsmuligheder.
|
www.microsoft.com/exchange/
|
Lotus
|
Domino R5
|
integreret besked system, web applikation software platform.
|
www.lotus.com/home.nsf/
welcome/dominoapplicationserver
|
Netscape
|
SuiteSpot 3.5
|
integrated server software, som understøtter
informations distribuering samt styring og dermed samarbejde.
|
home.netscape.com/suitespot/v3.5/index.html
|
Novell
|
GroupWise 5.5
|
Understøtter dokumentstyring og online samarbejde, samt
e-mail.
|
www.novell.com/groupwise/
|
Gentia
|
Gentia
EPM Suite
|
udnytter OLAP til at få tilgang til og analysere,
organisere og strukturere informationer på en database.
|
www.noweco.com/overview.htm
|
Ud fra denne generelle undersøgelse vi har lavet, kan vi komme til en foreløbig
konklusion, at SAS er den eneste reelle konkurrent i forhold til vores programs
grundlæggende funktionalitet. Inden vi på nogen måde kan være helt sikre på, at
vi har en rimelig chance for at komme ind på markedet, skal der naturligvis
laves en tilbundsgående markedsundersøgelse på professionel plan, hvilket vil
indebære brugen af markedsøkonomer.
2.4 - Den logistiske effektivitet
Et af målene med det færdigudviklede system, er
at øge den logistiske effektivitet ved projektudarbejdelse. Om det så er en
tilbudsgivningsprocedure (som hos Siemens) eller anden rapportskrivning. Dette
opnås ved en optimeret arbejdsgang og en optimeret benyttelse af de ressourcer,
der er stillet til rådighed. Dette medfører en reduceret risiko for fejl, samt
en reducering af tid og kræfter brugt på at fremskaffe de rigtige data. For at
opnå dette, skal udarbejdelsen af projektet kvalitetsstyres, hvilket igen
medfører, at kvaliteten af det færdige projekt i de fleste tilfælde vil være
væsentligt forhøjet.
Kvalitetsstyring
Nedenstående afsnit vil indeholde kommentarer og kortfattede beskrivelser af,
hvordan man effektivt vil kunne udnytte vort program med hensyn til de daglige
arbejdsrutiner. Målet er at øge den logistiske effektivitet, og dette opnås ved
et samarbejde mellem brugerne af programmet, men der kræves en god disciplin
for opretholdelsen af den kvalitetsstyring, som vi her forudsætter.
Ikke nok med at kvalitetsstyring er det essentielle i ISO 9000 standarden;
hvilket er én af grundene til, at vi bruger den i vort projekt; men der er også
mange virksomheder der i forvejen er certificerede, og det vil være nemmere for
dem at bibeholde den certificering, hvis vort program opretholder muligheden
for, at gennemføre kvalitetsstyring med ISO standarden i tankerne. ISO
standarden er desuden en meget udbredt standard indenfor det område programmet
omhandler, og derfor er det naturligt, at det netop er denne standard vi har
valgt til vort program. Vi kunne også have valgt ikke at bruge nogen standard,
men af hensyn til udbredelsen af standarder generelt, har vi valgt at bruge en
af de mere anerkendte. Vores program vil pga. af dette være mere tiltalende for
virksomheder der ønsker eller har en eventuel ISO certificering, men også andre
virksomheder, da overholdelsen som før nævnt er op til brugerne af systemet.
Idéen bag kvalitetsstyring generelt
Formålet med at kvalitetsstyre er, at give et produkt den samme kvalitet, hver
eneste gang, det er produceret. I vores tilfælde, er det dokumenter, der skal
have den samme kvalitet hver gang. Idéen er at alle aktiviteter, der har
indflydelse på kvaliteten i virksomheden, skal koordineres gennem et
tværorganisatorisk samarbejde, med mål at give en optimal og ensartet kvalitet
inden for de givne økonomiske rammer. Indenfor dokument- og projektstyring er
det også vigtigt, at der overholdes standarder for bestemte indholdsmæssige
rammer, som sørger for at kvaliteten er ens.
Hvorfor kvalitetsstyring?
Kvalitetsstyring er en af de grundlæggende idéer bag datawarehouse teknikken,
der igen indgår i idéen som grundlag for vores program. For at datawarehousing
fungerer, er det alfa - omega, at der bliver opretholdt en bestemt
kvalitetsstyring. For at forskellige virksomheder kan udnytte vores program
optimalt, er der nogle aspekter omkring ISO - kvalitetsstyringsstandarden, som
vi har sat os ind i, så vores program kan leve op til kravene. Dette afsnit vil
beskrive hvad det er for nogle aspekter og hvordan vi bør forholde os i forhold
til dem. Desuden vil der være en række beskrivelser af metoder, som man bør
forholde sig til, hvis der skal være en mulighed for en respektabel og
kvalificeret kvalitetsstyring.
Krav til kvalitetsstyringssystemet
Afsnit 4 i ISO 9002 standarden er det afsnit, hvor der er dele, der omhandler
de ting, vi skal tage stilling til i udviklingen af programmet.
Kvalitetsstyringssystem (4.2)
Ved indførelsen af vort program bør der udarbejdes en kvalitetshåndbog, som vi
har gjort os gode overvejelser om i det nedenstående. Det er imidlertid ikke en
håndbog vi har muligheder for at udarbejde, det har vi simpelthen ikke
beføjelser til, men vi kommer med forslag til hvad en sådan bog kunne indeholde
i forhold til vort program. Desuden er det vigtigt at givne procedurer
overholdes, det er dog i sidste ende op til selve brugeren af programmet, men
vi har overvejet funktioner, der vil gøre det nemmere at overholde kravene for
kvalitetsstyringen. Hvorvidt dette skal implementeres, er selvfølgelig op til
virksomheden selv.
Kontraktgennemgang (4.3)
Det er jo vigtigt, at den enkelte virksomhed leverer den specifikation, som
udbyderen beder om. Dette kan vi ikke garantere, men vi kan ved hjælp af
standard skabeloner hjælpe til, at kravene til dokumentstyringen vil blive overholdt.
Men meningen er, at vi indbygger en funktion i det færdige program, som
understøtter muligheden for at oprette skabeloner, der er tilpasset de bestemte
standarder, der benyttes. Der skal kunne oprettes en unik skabelon til det
enkelte projekt, som den dertil ansvarlige kan bruge.
Dokumentstyring (4.4)
Dokumentstyring er den primære funktion i programmet. Det er vigtigt at de dele
som et projekt bliver opbygget af, er tidssvarende og korrekte. Det er
forfatterens ansvar, at et dokument er opdateret korrekt og jævnligt. Vort
program kan indeholde en funktion der hjælper med dette. F.eks. ligger der i
kildekoden mulighed for at lave en funktion, der automatisk gør forfatteren
opmærksom på, at en beskrivelse skal opdateres, hvis det er længe siden det
sidst er gjort. Men det er igen kun en mulighed. Dermed bliver forældede
dokumenter opdateret hurtigst muligt eller rettere arkiveret i en ny database,
så de aktive ikke længere indeholder forældede data. Selve databaserne i
programmet giver mulighed for, at alle gyldige udgaver af relevante dokumenter
er tilgængelige, når der skal laves et nyt projekt. Dette samtidigt med, at
forældede dokumenter befinder sig i en langt større og langsommere database.
Det er et væsentligt spørgsmål om hvorvidt ændringer i beskrivelser skal
dokumenteres eller ej, men i henhold til datawarehouse teorien bør databasens
indhold ikke overskrives. Derfor arkiveres forældede dokumenter og rettelser
til disse, bliver til ud fra et kopi.
Indkøb (4.5)
Det er ikke muligt for programmet at kontrollere om produktbeskrivelserne
passer til det indkøbte, men vi inkorporerer en leverandørliste, der gør det
muligt at se, hvem der er leverandør til hvad. Om programmet også skal kunne
udarbejde en historik omkring leverandører, må hvert enkelt virksomhed tage
stilling til, men vi mener ikke, det er noget der i første omgang skal tages
hensyn til. Der må i hvert enkelt tilfælde kontrolleres om produktet er i
overensstemmelse med produktbeskrivelsen, og når dette er kontrolleret, er der
ingen grund til at føre historik over dette. Vi kan ikke i vort program stille
nogle krav til leverandøren af produktet, blot arkivere oplysninger om dem. Det
er samtidig forfatteren af produktbeskrivelsens ansvar at de indkøbsdata, der
måtte være, bliver opdateret så de er korrekte i samme stund, som projektet
ændrer status til afgivet.
Produkter leveret af køber (4.6)
På dette punkt kan vort program ikke håndtere, hvorvidt kravene bliver opfyldt.
Disse produkter kan som andre produkter selvfølgelig lægges ind under
produktelementer, som de almindelige produkter.
Produktidentifikation og sporbarhed (4.7)
Produktidentifikationen er klar, idet alle produktbeskrivelser bliver gemt i
databasen. Med hensyn til sporbarhed er spørgsmålet også, om det skal gemmes en
database, over de ændringer der sker i produktbeskrivelserne, og dermed i
produkterne. Det er jo stadig muligt at se det enkelte projekt i databasen, da
disse jo bliver gemt i den ældre database, jævnfør datawarehousing princippet.
Processtyring (4.8)
De krav der stilles til en standardisering af processen omkring udviklingen af
et projekt, skal efterleves ved hjælp af en kvalitetshåndbog sammen med en
brugsvejledning til programmet. Kvalitetshåndbogen er den der skal definere
ansvar, arbejdsinstruktioner og metoder, overvågning og kriterier for
arbejdsudførelse. Det er den del af kvalitetsstyringen virksomhederne selv må
tage hånd om. Vi har dog lavet forslag til noget af indholdet i en eventuel
kvalitetshåndbog. En brugsvejledning vil ud over at beskrive brugen af selve
programmet, også beskrive hvordan tildelingen af rettigheder og ansvar løber
an. Vi kan ikke tildele medarbejderne pligter, men der er lagt op til det i
programmet. Brugsvejledningen vil følge med i form af hjælpefiler.
Inspektion og prøvning (4.9)
Ikke behandlet i rapporten.
Inspektions-, måle- og prøvningsudstyr (4.10)
Ikke behandlet i rapporten.
Inspektions- og prøvningsstatus (4.11)
Ikke behandlet i rapporten.
Styring af afvigende produkter (4.12)
Programmet lægger netop op til at der ikke bliver udviklet nogle projekter der
afviger fra de specificerede krav. Det er den person der lægger skabelonen til
et projekt, der skal sørge for, at alle relevante punkter bliver berørt og
indgår i skabelonen. Derfor bliver der heller ikke nogen korrigerende
handlinger. Man kan måske sige, at den korrigerende handling er indførelsen af
programmet.
Håndtering, opbevaring, emballering og levering (4.14)
Det vil være mulighed, at indtaste attributter som leveringsdato for projektet,
så man er så godt som sikker på at denne bliver overholdt.
Registreringer vedr. kvalitet (4.15)
Ikke behandlet i rapporten.
Interne kvalitetsaudit (4.16)
Se ideoplæg til kvalitetshåndbogen.
Uddannelse og optræning (4.17)
Der skal i en fremtidig kvalitetshåndbogen også være retningslinier for hvordan
nye medarbejdere sættes ind i de procedurer der bruges i forbindelse med
programmet. De skal også sætte sig ind i brugsvejledningen. Det vil ikke kræve
noget specifikt kursus at sætte sig ind i programmet, men det er vigtigere, at
de nye medarbejdere bliver sat ordentligt ind i retningslinierne for
udarbejdelsen af projekter og vedligeholdelse af beskrivelser. De fleste
funktioner vil kunne give en alm. computerbruger en relativt kortere
fremdragelses- og redigerings tid. De fleste ting i vort program vil give sig
selv for en alm. computerbruger, der har læst brugsvejledningen. Efter nogen
tids brug vil det være muligt for en nysgerrig bruger at opdage og udforske
grænsefunktioner, samt genveje i programmet, og dermed skabe positive
oplevelser.
Statistiske metoder (4.17)
Der vil være store muligheder for at lave statistik med databasen, men det er
ikke noget element nogen af virksomhedernes kunder bør involveres i, og ikke en
funktionalitet som vi på nuværende tidspunkt implementerer.
Det er vigtigt at huske på, at alle ovenstående punkter refererer til det
færdige produkt og ikke prototypen.
Kvalitetshåndbog - hvad der kunne stå
Dette afsnit omhandler muligheden for den kvalitetshåndbog, der kunne følge med
programmet. Man kunne også kalde det en vejledning, men den vil ikke omhandle
en vejledning til selve programmet, men derimod en vejledning til de
retningslinier og ansvarsområder, der skal overholdes for, at programmet vil
have optimal funktionalitet. Vi vil ikke skrive denne håndbog, da vi ikke har
indsigt nok i købende virksomheders procedurer, forretningsgange og
organisation. Derimod vil vi give forslag til hvilke punkter en sådan bog som
minimum skulle omhandle, og specificere punkternes betydning.
Organisationsstrukturen
Alt efter i hvor stor grad programmet skal anvendes, vil det være en
nødvendighed at specificere organisationsstrukturen samt lederne for
henholdsvis gruppen, afdelingen eller virksomheden. Dette er vigtigt fordi
ansvarsområderne skal være tydeligt afmærket, for at undgå konflikter.
Ansvarsfordeling
Dette punkt henviser til hver medarbejder, der har sit eget arbejdsområde at
stå til ansvar overfor. I vores programs tilfælde ville tekstelementer være
tildelt den person som skriver dem. Dermed får personen den opgave at holde
dokumentet "up to date". Man kan også bruge det eksempel at en person
holder op med at arbejde for en virksomhed. I dette tilfælde skal ledelsen,
fordele ansvaret får personens arbejde (dokumenter m.m.) ud på andre medarbejdere.
Procedurer
Det er vigtigt, at der bliver udarbejdet nogle bestemte procedurer til
behandling af dokumenter, og derved den måde brugen af vort program sker på.
Dette skal gøres for at overholde kvalitetsstyringsprincippet. Nedenstående er
der beskrevet yderligere essentielle punkter, til kvalitetshåndbogen, der i
hvert fald bør tages stilling til i købende virksomheder. Det er ting vi
selvfølgelig har taget højde for i udviklingen af programmet.
Ansvarstildeling
Dette er det samme som ovenstående ansvarsfordeling, i den forstand at der skal
være en ledelse der fordeler ansvaret (og dermed ment fysiske dokumenter) ud på
arbejderne.
Opdatering
Det er den ansvarlige medarbejder der skal sørge for at de enkelte beskrivelser
bliver rettidigt og korrekt opdateret. Projektet skal naturligvis ikke
opdateres, men der er stadig en ansvarlig medarbejder, som skal kunne
tilspørges om projektet. Det vil være optimalt, men ikke implementeret, hvis
programmet holder styr på tidligere opdateringer, så man kan sammenholde ændringer
med beskrivelser indeholdt i allerede udarbejdede projekter. Det vil være
muligt at køre en funktion, der kontrollerer databasen for fejl, og ikke mindst
tekstelementer, der har overskredet tipsintervallet for sin opdatering, og der
derfor skal tages stilling til om de skal opdateres. Det bliver muligt at
definere et antal dage, som skal være standard for, hvor gammel en beskrivelse
må være i forhold til sidste opdatering, før det er krævet at indhold eller
tipsintervallet bliver opdateret.
Sletning
Det er muligt at slette et projekt eller tekstelement (flytte til
ældredatabasen), men kun for den ansvarlige. Det er svært at definere formålet
med at slette (fra aktiv database), men det skal dog være en mulighed. Hvis
projekter eller tekstelementer slettes, skal der jo gøres opmærksom på, at der
så ikke kan udregnes statistik på dem. Det er naturligvis muligt, at en
beskrivelse aldrig har været i brug, og den derfor ikke har relevans. Det skal
ikke være muligt at slette et tekstelement, hvis der er et projekt, så derfor
bliver sletning af dokumenter en kompleks funktion der faktisk kræver at hele
databasen bliver gennemsøgt.
2.5 - Eventuelle udvidelser
Beskrivelser og ideer omtalte i det nedenstående afsnit er ikke noget vi får
implementeret i systemet, men er noget man bør overveje, at tilbyde en eventuel
køber af systemet. Man kunne også undersøge, om det var noget, der skulle
implementeres i fremtidige versioner. Specielt omkring sikkerhed, er der en del
overvejelser man bør gøre, da det jo i mange tilfælde vil være meget vigtige
dokumenter, der skal overføres via nettet.
2.5.1 - Sikkerhed
Java blev udviklet af Sun Microsystems med henblik på at tillade Java, at
blive indlejret i hjemmesider fortolket en browser. Dette er baseret på en
virtuel machine, der emulerer alle implementationer, hvor browseren
understøtter en passende version af JVM.
Java er et meget robust sprog i modsætningen til mange andre
programmeringssprog. I forhold til eksempelvis C har Java hverken globale
variable, globale funktioner eller præprocessor-kommandoer. Samtidigt er Java
designet til at være et mere sikkert sprog at udvikle i, da det ikke indeholder
nogle muligheder for at generere refferance-pointere ud af 'sig selv', dvs. at
det ikke er muligt at skade det omgivne miljø, samt check på hvert enkelt
objekts integritet.
Men hvordan er sikkerheder i Sun's digitale kaffe? Kan man stole på Java
Virtuel Machine?
Hvis man skal lytte til Process Software (IPv6-drengene på www.process.com), er
mangler; Java's sikkerhedsmodel. For at fremhæve et enkelt, men grundigt
dokumenteret, aspect i Javaarkitekturen, er at sikkerheden nødvendigvis må
implementeres i java's applets wrapper, dvs. sikkerhed afhænger af den givne
JVM.
I et fremtidigt system bør man opsætte en firewall, der kan afskærme
øvrige porte effektivt. Til dette er der tre mulige løsnings modeller:
- Indkøbe en firewall til
servern
- Hvis serveren er et Linux
OS kan en rekompileret kernel afskærme porte i sig selv
- En løsningsmodel der
benytter begge ovenstående punkter
Man kunne endvidere overveje at indkoorporere Novo's
sikkerhedsmodel baseret på SecureCard ideen. Udvalgte medarbejdere får
udleveret et SecureCard og en personlig kode til dette kort samt et brugerID.
Den personlige kode indtastes på kortet inden brug af systemet og vil over
satellit få tilsendt en 10 karekter's kode, som samtidigt er blevet registreret
i systemet på et ace-software(se datadictionary). Herefter kan man med succes
logge ind med brugerID og den dynamiske tildelte kode.
Et sådan løsning kunne ligge serverside, hos os, da der ville være en økonomisk
besparelse at gøre ved masse-indkøb af disse kort. Derudover vil denne løsning
er kun kræve en licens, til at kunne benytte ace-servern(se datadictionary)
uanset hvor mange kort denne servicerer. Den server software vi taler om koster
mellem 2-17000 dkkr, afhængigt af hvilken type licensaftale man laver. Det
fysiske SecureCard koster ved indkøb af over 3000 enheder 650 dkkr pr. stk.
Der forefindes dokumentation til denne alternative samt fremtidige ide' på
www.rsa.com.
Desuden er det værd at overveje, om man vil benytte kryptering og i så tilfælde
hvilken man skal bruge, og om det skal være noget der er direkte implementeret
i kernelen, eller det skal være 'add-on'. Som det er nu, skal der ændres en
klasse i kernelen, hvis kryptering tilbydes. Det ville dog være værd at
overveje, om man senere skal kunne skrive et plugin, der tilbyder den
sikkerhed, som man i en virksomhed mener er passende til tidspunkt, økonomi og
sikkerhedskrav.
2.5.2 - CBI
Business intelligence (BI)
Hvad er BI? Resultater fra analyser og statistikker af alle mulige slags bliver
brugt i mange sammenhænge. BI er en filosofi, der bruger disse resultater
målrettet i beslutningsprocessen. BI gennemgår i øjeblikket en udviklingsfase
fra almindelig understøttelse for statistikere og analytikere, til en
netværksbaseret infrastruktur for virksomhedsrapportering, der skal nå
tusindvis af beslutningstagere. Derfor ser man flere netbaserede værktøjer til
BI, der gør det nemmere at få adgang til resultaterne fra data-analyserne. Men
for virkeligt at BI skal have en virkning, skal man have folk til at reagere på
den information, de har adgang til. Således, at de tager bedre beslutninger,
forbedrer processer og griber flere muligheder. Ved at blande BI og KM opnår
man endnu højere effektivitet på dette beslutningsområde.
Knowledge management (KM)
Begrebet Knowledge Management florerer hidsigt i forretningslivet i øjeblikket.
Princippet bag KM, eller vidensstyring, er at lade IT-systemer tage hånd om de
problemer der er knyttet til store mængder viden spredt over mange dokumenter.
Forskellen på KM og BI er, at hvor BI er beslutninger baserede på resultater
fra analyser m.m. (strukturerede data), er KM mere videndatabaser baseret på almindelig
tekst i uendelige variationer (ustruktureret information). Princippet går så ud
på at give brugerne adgang til de nødvendige informationer, opstille en ramme
for selve viden-formidlingen, samt at undgå at brugerne bliver bombarderet med
ubrugelig information.
Collaborative Business Intelligence (CBI)
Værktøjerne til KM markedet er en væsentlig udvidelse af det traditionelle BI
marked. Og ved at tilføje brugere af BI direkte til udviklingen af- og
samarbejdet om KM, kombinerer man de to ting. CBI er så kombinationen af BI
(strukturerede data) og KM (ustruktureret information) samlet i et
datawarehouse. Denne sidste filosofi for arkiveringen af data kombineret med BI
og KM (CBI), giver et miljø, hvor analytisk information, fra et datawarehouse
eller OLAP
værktøj, bliver brugt af analytikere samt beslutningstagere. Desuden stiller
CBI et netværksbaseret bibliotek til rådighed, hvor der er mulighed for at
fremlægge rapporter fra diverse kilder, samt at sted til at arbejde på de igangværende
projektrapporteringer. Denne understøttelse af dynamiske rapporter, giver
læserne mulighed for "live" data og alternative scenarier.
Informationen vil så blive tilgængelige via et online-abonnement til dem, der
skal bruge dem.
Målet med vores produkt er, at kombinere CBI med en kvalitetsstyringsmodel, der
følger ISO9002 standarden, hvor det eneste brugerne skal have adgang til, er en
internetbrowser, der understøtter det i teknisk platform afsnittet definerede.
2.6 - Notation
Vi skal også skrive om hvordan vi bruger
begreberne:
Tabeller og lister
Brugen af tabeller og lister falder tilbage på, at det er nemt og overskueligt
for enhver person at overskue. Tabellerne er ikke en del af UML. Tabellerne som
benyttes i rapporten angives i nedenstående figur:
Fokus
|
Betegnelse
|
Indhold
|
Problemområde
|
Definitionen
|
En komplet samling af klasser med beskrivelser det hver
klasse.
|
Hændelsestabel
|
En komplet samling af klasser med angivelse af de
hændelser, der indgår i deres adfærdsmønstre.
|
Relationstabel
|
Den samlede mængde klasser og sammenhængsforklaring mellem
de forskellige klasser.
|
Anvendelsesområde
|
Funktionsliste
|
Den samlede mængde af funktioner, som et edb-system
realiserer.
|
Diagrammer
Da diagrammerne er velegnede til at give overblik over en bestemt slags
elementer i en afgrænset del af en beskrivelse, har vi valgt at benytte dem de
steder, som er beskrevet i det nedenstående. En del af diagrammerne nedstammer
direkte fra UML. Præsentationen afspejler det, vi opfatter som et minimalt udvalg
af relevante elementer.
De fleste diagrammer kan påføres yderligere elementer. Vi valgte dog ikke at
gøre dette, da det bare ville gøre diagrammerne svære at forstå og for
uoverskuelige for os selv.
Fokus
|
Betegnelse
|
Indhold
|
Identifikation
|
Rigt billede
|
Mennesker, objekter, processer, strukturer og problemer i
et edb-systems problemområde og anvendelsesområde set under et.
|
Systemets hovedkomponenter
|
Systemets hovedkomponenter og sammenhænget mellem dem.
|
Struktur
|
Klassediagram
|
En samling af klasser og deres indbyrdes strukturelle
relationer.
|
Hændelser
|
Tilstanddiagram
|
Det adfærdsmønster, som gælder for alle objekter i en
klasse, beskrevet ved de indgående tilstande og hændelser.
|
3 - Analyse
Analysedelen indeholder en analyse af opgaven, problemområdet og
anvendelsesområdet. Derved kan vi afgrænse og beskrive systemet. Vi skal
beskrive virkeligheden, som de kommende brugere skal se den. Resultatet skulle
gerne give et overblik over systemmodellen.
3.1 - Opgaven
Afsnittet skal indeholde en beskrivelse af, hvad systemet går ud på. Vi skal
give et overblik over den opgave, som vi giver os i kast med.
3.1.1 - Omgivelser
Problemområdet: Edb-systemet skal kunne registrere
dokument-specifikke data for dermed at opbygge en dokumentstruktur der passer
til de valgte standarder. Tilgangen til dette skal være en dynamisk baggrund,
hvor dokumentforfatternes manipulation er wysiwyg. Edb-systemet vil kunne
benytte data, der er tilknyttet den aktuelle kunde, dokumenttypen,
dokumentforfatteren, tekstelementets emne og kategori samt diverse søgeord.
Dette både til at søge efter og automatisk importerer i standard
punktopstillinger ved genbrugs-funktionalitet.
Anvendelsesområdet Datamatisk dokumentmanipulation skal indgå på linje
med andre grafiske instrumenter til manipulation af dokument tekst- og
brudstykker. Når et projekt tilkobles en dokumentstruktur, indsættes de ønskede
dokumenter, tekst- og brudstykker automatisk. Dette kan løbende justeres af
brugeren, hvis en standard eller lignende ønskes ændret. Hvis en standard
ændres sker dette 'rekursivt' i alle dokumenter, ved hjælp af xml-dtd
struktur(for det fremtidige system).
3.1.2 - Systemdefinition
For at komme frem til en systemdefinition, der skal etablere et
relevanskriterium for den objektorienterede analyse, må vi skabe et overblik
over situationen med udgangspunkt i brugerens situation. Med udgangspunkt i
BATOFF kriterierne er vi kommet frem til følgende systemdefinition:
Betingelser
Som udgangspunkt har vi kvalitetsstyringsmetoden, der fremleder det
projektudarbejdelsessystem specificeret i indledningen. Men da vores samarbejde
med Siemens Danmark er ophørt har vi ikke nogle specifikke krav til den videre
udvikling. Derfor må vi benytte os af vore egne ideér til det fremtidige
system.
I systemets første levetid vil det være naturligt at integrere ændringer på
baggrund af en betatest, dog vil der blive taget hensyn til, at systemet ikke
udvikles til en bestemt virksomhed, men er mere som et generelt program, der
skal kunne passe ind hos flere virksomheder.
Anvendelsesområde
Anvendelsen er tiltænkt større virksomheder med behov for kvalitetsstyring af
deres projektudvikling m.m., eller vedligeholdelse af dokumenter og andre
essentielle data i en informationsdatabase. For eksempel kan det med fordel
nævnes tilbudsudviklingen hos Siemens Danmark. For at datawarehouse teknikken
kan opretholdes, skal vedligeholdelsen af dataene overholde bestemte krav om
kvalitetsstyring. Systemet skal kunne anvendes af alle ansatte i virksomheden
med forskellige rettigheder.
Teknologi
Læs venligst afsnittet Teknisk platform
Objektsystem
Styringen af projektudviklingen med mailboks, offentlige samt private foldere.
Funktionalitet
Mulighed for kvalitetsstyret vedligeholdelse af en dokument database, mailboks
funktionalitet til både intern og ekstern kommunikation, samt at gemme private
informationer på tværs af organisationen.
Filosofi
Et administrativt kvalitetsstyret informationssystem, kommunikationsværktøj og
grafisk arbejdsplatform (Shell).
Disse forhold kan samles i følgende systemdefinition:
Et client/server
edb-system, der primært skal benyttes af flere brugere til at samarbejde om
udarbejdelse af projekter af forskellig art. Det skal være muligt at benytte
informationer gemt i en database, der altid vil være opdateret, til brug i
udfærdigelse af arbejdsprojekter. Sekundært skal brugeren bruge systemet til
at gemme private informationer og læse/sende mails.
Da systemet skal være tilgængeligt over hele verden, kræves der udelukkende
en opdateret Internet browser (evt. Netscape Navigator v6.0) med JVM, som
klientsoftware. Hensigten er et system med platform frihed. Selve databasen
skal ligge på en server, og der vil både komme forespørgsler fra PServ og en
web-server.
|
3.2 - Problemområdet
Virksomhederne bør ændre deres arbejdsgange. Især større virksomheder
drukner i viden og dokumenter, og mister derfor overblikket.
Det væsentligste problem er, at informationer ikke bliver delt med resten af
organisationen, og at beslutninger ikke nødvendigvis bliver truffet på et
faktuelt grundlag, det er netop dette administrative problem, vi søger at gribe
fat i.
Vi, gruppe5, oplevede hos Siemens Danmark, at alle dokumenter der blev
forfattet blev sendt til en kunde, og arkiveret for med stor sandsynlighed
aldrig at blive fundet, på et tidspunkt hvor man skal bruge det igen. Dette
samtidigt med at der ikke blev overhold nogle dokument formaterings standarder.
Kort sagt er vores mål at løse virksomheders problemer med udvikling og samling
af dokumenter, som overholder firmastandarden i et administrativt system, der
har fokus på den distribuerede ide.
3.2.1 - Klasser
Her beskriver vi klasserne i systemet ud fra brugerens synspunkt.
Nedenstående definitioner er for klasserne som danner grundlaget for
databasedesignet.
Definition
Klasse
|
Beskrivelse
|
Kunde
|
Bestiller projekt hos virksomheden.
|
Leverandør
|
Leverandør til produkter beskrevet i databasen.
|
Bruger
|
Bruger af systemet, skal vedligeholde sine egne afsnit i
databasen. Brugerne kan blive tildelt forskellige rettigheder, således kan
udledes mange slags brugere, ud fra de kombinationer af rettigheder
virksomheden vælger at tildele dem. Virksomheden skal dog overholde de
hovedretningslinier, der er givet ved kvalitetsstyringen.
|
Projekt
|
Projekt, der er
udarbejdet eller under udarbejdelse. Indeholder elementer.
|
Tekstelement
|
Produktudviklede brudstykker brugt i projektet. Disse kan
indeholde andre tekst- samt grafik-elementer o.s.v. Forskellen mellem
tekstelement og projekt er, at et projekt har tilknyttet en kunde, og et
projekt kan ikke indeholde andre projekter. Desuden er adfærden for et
projekt en smule anderledes, idet der er tilknyttet en kunde.
|
Produktelement
|
Klassen er en speciel form for tekst-elementer, der kræver
en bestemt formatering.
|
Omkostninger
|
Alle omkostninger vedrørende et produkt. Herunder
kostprisen, leverance omkostninger, erfaringsmæssige oplysninger om antal
mandetimer, der ved tidligere installationer er blevet brugt på at fuldføre
en installation for produktet, og evt. ekstra omkostninger vedrørende
produktet, samt tilhørende tekst-elementer(beskrivelser) til disse ekstra
omkostninger.
|
Grafikelement
|
Diagrammer og billeder brugt i tekst-elementerne.
|
Postfiler
|
Kan indeholde elektronisk post sendt til og af brugeren.
Grafisk fremlagt i en mailboks.
|
Filarkiv
|
Filarkivet er brugeres private dokumenter og temporære
filer. Dette indeholder også offentlige filer for organisationen.
|
3.2.1.1 - Hændelsestabel
Hændelserne for klasserne findes ved at brainstorme over opførsel i forhold
til hinanden. Herved danner vi os et billede af det fremtidige system.
Vi kan nu tage udgangpunkt i hændelsestabellen, når vi skal lave
funktionslisten, som vi kan delvist implementere ud fra.
Vi bruger to betegnelser til notationen i hændelsestabellen :
* = klassen er fuldt involveret i
hændelsen. (*) = klassen er delvist involveret i hændelsen.
Generelle
|
Projekt
|
Tekstelement
|
Grafikelement
|
Bruger
|
Postfiler
|
Filarkiv
|
Kunde
|
Leverandør
|
Omkostninger
|
Opret
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
Rediger
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
Slet
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
*
|
Hændelser
|
|
|
|
|
|
|
|
|
|
Opret
brugergruppe
|
*
|
|
|
*
|
*
|
*
|
|
|
|
Tilknyt
bruger gruppe
|
*
|
|
*
|
*
|
*
|
|
|
|
|
Rediger
brugergruppe
|
*
|
|
|
*
|
*
|
*
|
|
|
*
|
Slet
brugergruppe
|
*
|
|
|
*
|
*
|
*
|
|
|
|
Opret bruger
|
|
|
|
*
|
*
|
*
|
|
|
|
Tilknyt
bruger
|
|
*
|
*
|
*
|
*
|
*
|
|
|
|
Rediger
bruger
|
|
|
|
*
|
|
|
|
|
*
|
Slet bruger
|
*
|
*
|
*
|
*
|
*
|
*
|
(*)
|
(*)
|
|
Tilknyt nyt
element
|
*
|
*
|
*
|
*
|
|
|
|
(*)
|
(*)
|
Projekt
godkendt
|
*
|
|
|
|
|
|
*
|
|
|
Element
godkendt
|
*
|
*
|
*
|
|
|
*
|
|
|
(*)
|
Rediger
ansvarlig
|
*
|
*
|
*
|
*
|
|
*
|
|
|
|
Opret
søgeværdi
|
*
|
*
|
*
|
|
|
*
|
|
|
|
Rediger
søgeværdi
|
*
|
*
|
*
|
|
|
*
|
|
|
|
3.2.2 - Struktur
Efter en beskrivelse af de enkelte klasser hver
for sig, vil vi sætte dem i relation til hinanden. Dette gør vi i nedenstående
klassediagram. Hertil hører også en forklaring til, hvordan de hænger sammen,
og dette ses i følgende skema:
Klasser
|
Sammenhæng
|
Kunde-Projekt
|
Et projekt vil altid have én kunde tilknyttet. I tilfælde
af, at flere kunder går sammen om et projekt, har vi besluttet, at oprette en
"joint venture" kunde i en ny tabel, hvor ID fra de forskellige
kunder er repræsenteret. Grunden til at vi opretter "joint venture"
kunder i en ny tabel, er hovedsageligt for at normalisere, og derved
kontrollere redundansen. På denne måde får virksomheden så også fordelen ved,
at den "nye" kunde igen har én bruger tilknyttet. én kunde kan
naturligvis godt købe flere projekter (0..m). Ved at et projekt altid har én
kunde tilknyttet, ved virksomheden altid hvor projektet skal konteres. I
tilfælde af, at det er et inhouse projekt, skal virksomheden så oprette sig
selv som kunde. Derved er der igen styr på ophaveren til projektet.
|
Kunde-Bruger
|
Vi har valgt at definere, at en kunde altid skal have
tilknyttet en bruger, således, at hvis kunden ringer til virksomheden, ved
virksomheden altid, hvem der plejer at tage sig af den bestemte kunde, hvis
kunden ikke selv ved, hvem han vil tale med. Derfor vil relationen så være
således, at en kunde altid har en bruger tilknyttet, mens en bruger har 0..m
kunder tilknyttet.
|
Bruger-Postfiler
|
En bruger har en postkonto, hvor der kan være mange (0..m)
postfiler. En postfil kan ligeledes være sendt til mange brugere. (n..m)
|
Bruger-Filarkiv
|
Filarkivet er et sted, hvor brugeren kan have forskellige
filer liggende i grupper. Det er her også muligt at dele dem med andre. For
at få fordel af dette, skal det være muligt at kunne tildele grupper af
brugere til sine filer, og kunne gøre dem 'public' (tilgængelige for alle).
Alt dette lægges i en filstruktur. Hver bruger, kan så have 1 filarkiv/-struktur
og 1 arkiv/struktur kan tilhøre 1 bruger.
|
Bruger-(Projekt,
Tekstelement, Grafikelement)
|
For at overholde kvalitetsstyringen skal et element altid
have tilknyttet 1 bruger. Denne bruger er den ansvarlige for elementet, og er
brugeren, der skal vedligeholde elementet. Der er kun én bruger, der kan
rette i dokumentet. Og en kopi af originalen vil altid blive gemt ifølge
datawarehouse filosofien. På denne måde, kan en uvildig altid se, hvem der
har ekspertisen indenfor det område, elementet omhandler.
|
Projekt-Tekstelement
|
Som det ses af klassediagrammet er tekstelementer
delelementer af projektklassen. Dette skal forstås således, at et projekt
skal indeholde n..m elementer. Et tekstelement kan således være tilknyttet
0..m projekter. Ifølge klassediagrammet kan et projekt kun eksistere uden et
tekstelement midlertidigt. Man kan sammenligne med en bil, der godt kan
eksistere uden hjul, men kun midlertidigt, ellers er det ikke en komplet og
funktionsdygtig bil. Man kan heller ikke sælge et projekt til en kunde uden
det er komplet - indeholder elementer. Et tekstelement kan derimod godt
eksistere uden et projekt tilknyttet.
|
Tekstelement-Grafikelement
|
Et tekstelement kan indeholde 0..m grafikelementer og et
grafikelement kan være tilknyttet 0..m tekstelementer.
|
Tekstelement-Produktelement
|
Produktelement nedarver fra tekstelement. Derudover skal
produktelement indeholde de to klasser omkostning og leverandør. Dette giver
mulighed for mere detaljerede oplysninger om deciderede produkter, dog
hovedsageligt til internt brug. En beskrivelse af produktet, leverandøren
samt mulighed for at udregne produktomkostninger.
|
Produktelement-Omkostning
|
Som skrevet skal produktelement indeholde en
omkostningsklasse. Denne klasse indeholder diverse priser for produktet. En
omkostning kan kun tilhøre 1 produktelement, som et produktelement kun
indeholder 1 omkostning.
|
Produktelement-Leverandør
|
Et produktelement indeholder 1 leverandør. Er der flere
leverandører om et produkt, må som i klassen kunde oprettes en "joint
venture" leverandør. En leverandør kan naturligvis godt have flere
produkter.
|
3.2.2.1 - Klassediagram
|
Klassediagram for Pro-Filer
|
3.2.3 - Hændelser
Vi har valgt kun at vise tilstanddiagrammer for
de klasser, der behøver en visuel forklaring til deres opførsel. Elementerne
Produktafsnit og Elementer har samme adfærd.
Projekt
Et projekt oprettes, og kommer så i tilstanden "under udarbejdelse".
Her bliver det så, indtil det bliver afsendt til en kunde. Så længe kunden ikke
har svaret tilbage, om det er godt nok, forbliver det i tilstanden
"afventer svar". Et projekt kan blive annulleret så længe det er
disse to tilstande. Når det bliver annulleret kommer det i en sluttilstand,
hvor det bliver gemt i databasen. Det samme sker, når kunden har svaret.
|
Tilstanddiagram for Projekt
|
Produkt- Grafik- og Tekst-elementer
Ved oprettelsen af et element af ovenstående klasser, kommer det i tilstanden
aktivt, og dermed er det tilgængeligt for alle. (Husk, der er én ansvarlig
bruger). Hvis et element overskrider sin forældelsesfrist kommer det i
tilstanden uddateret, og skal så opdateres for at komme i aktiv tilstand igen.
Når et element bliver opdateret (altså bliver ændret i), skal der ifølge vores
kvalitetsstyrings/datawarehouse filosofi tages en kopi, som gemmes i databasen.
Hvis man finder ud af, at et element ikke skal bruges mere nogensinde, og
derfor heller ikke skal opdateres, kan man give det statusen
"Ugyldiggjort". Så kan det ikke mere bruges, men ligger dog stadig i
databasen, som det skal ifølge filosofien. Det er i virkeligheden også det der
sker, når der oprettes en kopi. Det "gamle" element bliver
ugyldiggjort, og så er det kopien man arbejder videre på. Derudover skal det
være muligt at tildele en ny ansvarlig til elementet, da det jo kan være, at en
bruger bliver pensioneret eller skifter ansvarsområde.
|
Tilstanddiagram for Produktafsnit og Element
|
Bruger
Når en ny bruger er oprettet, kan han få ændret den status, han har via sine
brugerrettigheder. Der kan være mange forskellige rettigheder, det gør ikke, at
brugeren kommer i nogen ny tilstand. Så kan han forlade virksomheden. Vi har
kaldt det "pensioneret".
|
Tilstanddiagram for Bruger
|
Postfiler
Hver bruger har sin egen postkonto, hvor han kan sende og modtage filer. En
postfil kan være ny eller læst. Brugeren kan til enhver tid slette sine
postfiler. Hvis en bruger bliver "pensioneret", bliver alle filer
slettet.
|
Tilstanddiagram for Postfiler
|
Filarkiv
Filer i et filarkiv kan have tilstanden public, gruppe eller privat. Derudover
kan de komme i en sluttilstand hvis de skal slettes. Filerne i filarkivet er
heller ikke med i datawarehouset, da disse også kan være private.
|
Tilstanddiagram for Filarkiv
|
3.3 - Anvendelsesområdet
Formålet med afsnittet om anvendelsesområdet er at fastlægge systemets
brugsegenskaber. Resultatet skulle gerne udmunde i en kravspecifikation og en
afgrænsning udledt deraf. Vi skal beskrive brugen af systemet, og give et
overblik over det med en model, som vi så kan arbejde ud fra. Så skal kravene
til systemet specificeres. At finde kravene til et system kræver noget
eksperimentering, så dette er en iterativ proces, der også har indflydelse på
resten af rapporten, ikke mindst afgrænsningen.
3.3.1 - Brug
Vi vil her fastlægge brugen af systemet. I afsnittet identifikation og
løsning, har vi overordnet beskrevet, hvad det er for et system, vi forsøger at
nå frem til. Her skal vi så beskrive hvordan man bruger det. Først en
overordnet beskrivelse via et eksempel:
I basisorganisationen skal laves et projekt. Der nedsættes en projektgruppe,
som udfærdiger en rapport. Til dette kan de bruge vort system. For at få noget
ud af det, skal de overholde de krav, som basisorganisationen har beskrevet i
kvalitetshåndbogen for systemet. Hvis disse krav overholdes vil projekterne
blive af samme standard, som beskrevet i kvalitetsstyringsafsnittet. Ligeledes
er der mulighed for oprettelse af skabeloner til de dokumenter og de færdige
projekter. Ved at oprette en skabelon for strukturen af et projekt, kan sikres,
at bestemte standarder bliver overholdt.
Når projektgruppen skal bruge elementer til rapporten kigger de i databasen i
vort system. Elementerne overholder alle en bestemt formatering, hvilket
garanterer ensartethed i den udfærdigede rapport. Hvert element er udfærdiget
af en forfattet, som har ansvaret for det enkelte element. Hvis forfatteren
"pensioneres" tildeles en anden forfatter. Der er således altid en
ansvarlig for elementet. Dette garanterer, at det altid er muligt at finde frem
til en person, der ved noget om det pågældende element. Elementet skal ligeledes
have tildelt en dato, hvor den ansvarlige senest skal kigge på elementet igen
for at kontrollere, om det stadig er "up to date". Dette garanterer
maksimal mulighed for, at elementerne altid er opdaterede. Hvis et medlem af
projektgruppen skal bruge et element hvor opdateringsdatoen er overskreden,
skal han informeres herom. Han kan så tage sine forholdsregler. Når et element
bliver opdateret, bliver det gamle gemt ifølge afsnittet om datawarehousing.
Således kan man altid finde de rette elementer, der er blevet brugt i tidligere
projekter, eller se hvordan et element har set ud tidligere. Elementerne er
opdelt i kategorier og har tildelt søgemuligheder, så et projektgruppemedlem
har stor chance for at finde det rette element, og endda få flere alternativer,
hvis de findes. På denne måde bliver det altid den person, der har de bedste
muligheder for at forfatte elementet, der rent faktisk gør det. Ekspertise kan
også hentes udefra, da elementerne så bare kan lægges i databasen. Der skal dog
tildeles en ansvarlig bruger. For at minimere fejl og overholde ISO 9002
standarden skal hver forfattet element godkendes. Ligeledes, hvis det bliver
opdateret. Således minimeres også fejlfrekvensen.
Der er jo er flere medlemmer i en projektgruppe, og måske mange projektgrupper
i en basisorganisation, samt de medlemmer i basisorganisationen, der skal
vedligeholde elementerne i databasen. Derfor skal systemet være et
flerbrugersystem. Dette er dog ikke nok for os. Det er vigtigt, at systemet
giver så stor frihed, som muligt indenfor givne kvalitetsstyrings- og
sikkerhedsrammer. Derfor skal det være muligt at bruge systemet, hvor som helst
i verden. Således kan et projektmedlem sidde i Danmark og skulle bruge et
element, som ikke er opdateret. Den ansvarlige for dokumentet kan befinde sig i
Indien eller et andet sted i verden, have adgang til nettet via en browser, der
har JMV indbygget. Så kan han starte client appletten, og sørge for, at sin
kollega i Danmark kan fortsætte sit arbejde med et opdateret element.
Hvis virksomheden er multinational, giver denne mulighed ekstra fordele, da det
nu er muligt at arbejde på samme projekt og kvalitetsstyre dokumentationen over
landegrænser, uden at skulle sidde og e-mail til hinanden, eller anden ikke
styret kommunikation.
Kort sagt skal systemet bruges til at kvalitetsstyre dokumenthåndteringen i
projektudarbejdelse. For at servicere den kunde, som man laver projektet for,
skal man have mulighed for at lægge dele af sin rapport online, eller anden
dokumentation, der ligger i databasen, og som omhandler det projekt kunden har
bestilt. Der skal selvfølgelig være sikkerhed omkring dette, da det jo er
vigtige dokumenter.
3.3.1.1 - Oversigt
En kort oversigt over systemets hoveddele gives således:
Et client/server system, der skal fungere over Internettet.
Hjælp til overholdelse af ISO 9002 standarden.
Kvalitetsstyring af dokumenthåndteringen.
Optimeret og kvalitetsstyret projektsamarbejde.
Under disse ting er følgende overordnede funktioner:
Dokumenthåndtering.
Administrationsmuligheder.
Databasehåndtering (måske under administration).
Projektkommunikation (mail).
Virksomhedsspecifikke funktioner.
3.3.1.2 - Aktører
Her skal det nævnes at vi tidligere har benyttet ordet standard som en
reference til tekstdokument formateringen. Dette er ikke hensigten under
aktører og brugsmønsterspecifikation, her er det nemlig en projektskabelon
struktur vi søger at beskrive.
Aktørspecifikation for Forfatter:
Formål: Forfatters basale behov er at oprette elementdele til brug i et
til flere projekter. Endvidere kan der også ændres i fundne oplysninger fra
databasen, men kun hvis personen har rettigheder til dette. Dvs. at forfatteren
selv har udfærdiget elementet eller han har rettigheder via. et aktivt projekt.
En forfatter skal internt i et projekt, i denne kontekst, også opfattes som
pseudo forfatter.
Karakteristik: Systemets brugere er, via attributter, meget forskellige.
Forfatter til element eller tilknyttet ved pensionering af tidligere forfatter
har vedligeholdelses pligt til den del af databasens indhold, som han alene er
den ansvarshavende til.
Aktørspecifikation for Godkender:
Formål: Formålet med Godkender er i bund og grund at godkende alle
elementer som de forskellige forfattere fremstiller. Typisk vil det være en
gruppeleder der får tildelt dette ansvar.
Karakteristik: Godkender er en bruger, som har bemyndigelse til at
godkende elementer.
3.3.1.3 - Brugsmønstre
Alle objekter, på nær standard, indgår i vores klassediagram. Standard vil i
det fremtidige produkt indgå i funktionstabellen.
Som tidligere defineret menes der følgende med Elementer: tekst-, produkt-, og
grafik-brudstykker.
Brugsmønsterspecifikation for udarbejdelse af projekt:
Mønster: Brugeren skal starte med at vælge en opstillet standard, samt
vælge hvilken type målgruppe produktet er rettet imod. Her skal samtidigt
tilknyttes en kunde. Herefter tilknyttes de givne projekt deltagere samt give
dem ansvarsområder. En standard bør nu defineres, enten ved valg af allerede
eksisterende eller opbygning af en ny, ellers vil Pro-Filer default blive
benyttet. Dette vil blive uddybet i afsnittet for udarbejdelse af skabelon.
Når Pro-Filer så har importeret de tidligere definerede brudstykker, kan man
søge og tilknytte nye elementer til produktet. Nu kan brugeren tilføje,
redigere, slette eller omrokere punktopsamlingen. I øvrigt er det muligt for
brugeren at oprette nye elementer undervejs i produkt udviklings processen,
såfremt han/hun ikke ønsker at benytte sig af allerede udfærdiget elementer i
databasen.
Objekter: Elementer, Standard, Kunde, Bruger, Omkostning, Leverandør.
Brugsmønsterspecifikation for Udarbejdelse af standard:
Mønster: For at oprette en ny standard er samme ide som at udvikle et
helt nyt projekt, men man starter bare fra punkt nul. Pro-Filer vil ikke
importere nogle filer til projektet, da bruger selv skal vælge de tekst- og
grafik-brudstykker der skal indgå i rapport træet
(indholdsfortegnelse).Herefter skal der indtastes søgeord til standarden for at
kunne finde den blandt mange andre på et senere tidspunkt.
Objekter: Elementer
Brugsmønsterspecifikation for søgning i databasen:
Mønster: For at kunne søge effektivt i arkivet, bør virksomheden internt
blive enige om en formatering af søgeord eller sætninger der kan definere
tekst- og grafik-brudstykker samt hele projekter og standarder. Desuden kan man
søge på titler, forfatter, datoer, kunde eller leverandør.
Objekter: Projekt, Standard, Elementer, Bruger, Kunde, Omkostning,
Leverandør.
3.3.2 - Funktioner
Ud fra ovenstående har vi udarbejdet en generel funktionsliste.
Udarbejdelsen af funktioner er en iterativ proces, hvilket vi rigtigt får at
føle, når systemet skal igennem en betatest hos nogle brugere. Desuden skal det
være muligt, at man i vort system skal kunne tilpasse funktionerne fra
virksomhed til virksomhed. Derfor er nedenstående funktionsliste med henblik på
et generelt system.
3.3.2.1 - Komplet funktionsliste
Generelle
Funktion
|
Kompleksitet
|
Type
|
Beskrivelse
|
Opret
nyt projekt
|
Middel
|
Opdatering
|
Opret projekt
|
Åben
projekt
|
Simpel
|
Aflæsning
|
Åben projekt
|
Gem
projekt
|
Middel
|
Opdatering
|
Gem projekt
|
Rediger
bruger
|
Middel
|
Opdatering
|
Rediger bruger
|
Rediger
kunde
|
Simpel
|
Opdatering
|
Rediger kunde liste
|
Rediger
leverandør
|
Simpel
|
Opdatering
|
Rediger Leverandør liste
|
Aktiver
Søgefunktion
|
Kompleks
|
Beregning
|
Find søgeværdi og valider
|
Projekt
Funktion
|
Kompleksitet
|
Type
|
Beskrivelse
|
Rediger
titel
|
Simpel
|
Opdatering
|
Rediger titel
|
Rediger
projektgruppe
|
Simpel
|
Opdatering
|
Rediger tilknyttet projektgruppe
|
Tilknyt
nyt element
|
Middel
|
Opdatering
|
Rediger struktur
|
Rediger
element
|
Middel
|
Opdatering
|
Rediger struktur
|
Slet
element
|
Simpel
|
Opdatering
|
Rediger struktur
|
Rediger
bruger gruppe
|
Simpel
|
Opdatering
|
Rediger projekt tilknyttede brugere
|
Rediger
søgeværdi
|
Middel
|
Opdatering
|
Rediger søgeværdi
|
Elementer
tekstafsnit, grafik ect.
Funktion
|
Kompleksitet
|
Type
|
Beskrivelse
|
Opret elementer
|
Simpel
|
Opdatering
|
Opret
|
Rediger elementer
|
Simpel
|
Opdatering
|
Rediger
|
Slet
elementer
|
Simpel
|
Opdatering
|
Slet
|
Rediger
bruger
|
Simpel
|
Opdatering
|
Rediger bruger rettigheder
|
Rediger
søgeværdi
|
Middel
|
Opdatering
|
Rediger søgeværdi
|
Projektgruppe
Funktion
|
Kompleksitet
|
Type
|
Beskrivelse
|
Opret
ny tilknyttet bruger
|
Simpel
|
Opdatering
|
Opret bruger
|
Rediger
tilknyttet bruger
|
Simpel
|
Opdatering
|
Rediger rettigheder
|
Slet
tilknyttet bruger
|
Simpel
|
Opdatering
|
Slet bruger
|
Brugere
Funktion
|
Kompleksitet
|
Type
|
Beskrivelse
|
Rediger
administrator*
|
Middel
|
Opdatering
|
Rediger administrator
|
Opret
bruger
|
Simpel
|
Opdatering
|
Opret bruger
|
Rediger
bruger
|
Simpel
|
Opdatering
|
Rediger bruger kodeord etc.
|
Slet
bruger
|
Kompleks
|
Signalering
|
Slet bruger, valider ansvarsområder
|
Kunde/Leverandør
Funktion
|
Kompleksitet
|
Type
|
Beskrivelse
|
Opret
|
Simpel
|
Opdatering
|
Opret
|
Rediger
|
Simpel
|
Opdatering
|
Rediger
|
Slet
|
Simpel
|
Opdatering
|
Slet
|
*Administrator er taget med i funktionstabellen, da han skal
valideres af PServer for at kunne lave strukturelle ændringer der påvirker
vores system.
Han er samtidigt den der håndterer serveradministration, og har root password
på den maskine der trækker PServ.
Denne maskine "serveren" er også platformuafhængig, men skal kunne
trække de forskellige miljøer tidligere defineret.
3.3.2.2 - Specifikation af funktioner
Vi tilknytter til editorens brugergrænseflade de almindelige
funktionaliteter, man kender fra diverse tekstbehandlingssystemer. Disse
funktionaliteter er ikke alle implementeret til fulde i denne version af
Pro-Filer. Vi vil prøve at få diverse services integreret i systemet som det
generelle system, vi ønsker at udvikle, består af. Der er mange
funktionaliteter der ikke er medtaget i den komplette funktionsliste, da vi
mener de er underforståede såsom skriv, slet og flyt besked. Disse, samt visse
andre funktionaliteter, vil blive håndteret af systemet, eksempelvis: . En
funktionalitet ikke dokumenteret i denne rapport er , da denne funktionalitet
ikke er designspecifik, men derimod er retningsbestemt af implementationen.
Under specifikation af brugergrænsefladen vil vi komme nærmere ind på den mere
trivielle del af produktet.
3.3.3 - Brugergrænsefladen
Dette er en diffus størrelse. Dette skyldes at systemets opbygning lægger op
til virksomheds specifikke grænseflader jvf. afsnit om plugin.
3.4 - Anbefalinger
Efter at have analyseret en løsning til systemet, er vi kommet frem til
følgende anbefalinger:
3.4.1 - Strategi
Vi skal kigge på strategien fra to sider. Vi skal på den ene side være
færdige med en rapport og en prototype, som vi kan aflevere den 18. maj klokken
12. På den anden side skal vi mere langsigtet have udviklet et fuldt virkende
system, og derfor er det vigtigt, at vi ikke laver for mange "hovsa"
løsninger og "spaghetti" kode. Altså har vi to opgaver at løse. Dette
betyder, at vi arbejder med en dokumentation i rapporten, der måske ikke
passer, når systemet er færdig udviklet. Det kan være antagelser vi har gjort,
i den tro, at systemet vil blive sådan om 5 måneder. Det er ikke sikkert, at
disse antagelser kommer til at passe. Dette medfører en stor risiko for
inkonsistens i rapporten, hvis vi f.eks. har antaget noget i starten af de 5
uger vi har til projektet, og det måske har ændret sig senere. Vi må derfor
være ekstra opmærksomme på inkonsistens i rapporten.
Af dette kan vi udlede to strategier, som skal overholdes på samme tid:
18. maj strategi:
Vi skal have udarbejdet en analyse af systemet, og designet må ikke afvige
drastisk fra analyseresultatet. Den iterative proces, analysen gennemløber,
skal afsluttes så snart, der er kortlagt forudsætninger, behov og adfærd for
systemet samt en foreløbig afgrænsning af systemet, og er fastlagt overordnede
brugsegenskaber. Dette giver et meget fleksibelt resultat.
Designet er også en iterativ proces, der selv efter 18. maj vil blive
gennemløbet . Derfor må denne strategi gå ud på, at nå en grundlæggende
forståelse og en fleksibel struktur for systemet. Denne grundlæggende struktur,
der opnås skal være så gennemtænkt, at den kan holde, selvom vi senere vælger
at udvide funktionaliteten i systemet. Derudover skal dokumenteres de
yderligere elementer, der måtte være færdigudviklede i systemet. Til sidst skal
så beskrives vores intentioner for udseendet af det endelige system. Dette kan
dog kun gøres overordnet, da langtfra alt vil være implementeret. Der vil opstå
situationer, hvor vi bliver nødt til at lave løsninger, der helt sikkert vil
blive ændret efter 18. maj, men for at få en virkende prototype til tiden, må
implementeres. Resultatet af denne strategi skulle så give en fyldestgørende
rapport og en prototype, der virker.
5 millioner strategien:
For at udvikle et system, der skal have en chance, når det bliver markedsført,
må man tænke sig grundigt om. Dette kræver meget tid, mange overvejelser og en
kode, der bærer præg af en langsigtet strategi. Dette modarbejder 18. maj
strategien. Men kun delvist, da vi den 18. maj jo kodemæssigt "kun"
skal fremvise en prototype. Til gengæld skal rapporten være så færdig, som
muligt. Men det bliver jo så kun prototypen, der kan dokumenteres fuldt ud i
rapporten. For at kunne vise en prototype, der virker, må vi sørge for, at
kernen i systemet virker. Men for ikke senere at skulle lave hele kernen om,
skal den kodes ordentligt, og det må derfor være dér hovedvægten af
ressourcerne bliver lagt. Når denne virker stabilt, vil det være nemmere at
skrive funktioner og have en mulighed for at afprøve dem. Med denne strategi
bør analysedelen af rapporten være færdig hurtigt, så designet kan komme i
gang. Designdelen bør så skrives iterativt. Som hovedregel skal designet
dokumenteres, så snart det er sikkert fastlagt. Dette vil komme til at skride
ud over 18. maj, så vi bliver nødt til at kombinere de to strategier på
følgende måde:
Analysen skal være færdig hurtigt, så designet kan komme rigtigt i gang. Den
iterative designdel skal derefter dokumenteres, så snart designet er sikkert
fastlagt, men i slutningen af projektperioden, må selv design, som ikke er helt
sikkert fastlagt, blive dokumenteret så vi kan nå vores deadline 18. maj.
3.4.2 - Udviklingsøkonomi
Siden idéen til systemet blev lagt på bordet, er der brugt rigtigt mange
timer på udviklingen. En del af disse timer skyldes dog tilpasningen til et
skoleprojekt. Men nøjes vi med at tage den tid med, som vi har brugt i direkte
forbindelse med udviklingen af det endelige system, antager vi, at vi den 18.
maj har brugt ca. 20 mandeuger på systemet Hvis vi går ud fra, at vores evner
stiger proportionalt med den tid vi bruger på at kode, vil vi regne med minimum
yderligere 120 mandeuger for at udvikle en beta version. Denne skal så igennem
en betatest, og efter mange tilrettelser, kan man udgive en version 1 af systemet.
3.4.3 - Edb-systemets nytte og realiserbarhed
For at implementere hele kvalitetsstyringssystemet i virksomheden, skal
virksomheden regne med en indkøringsperiode, hvor mange medarbejdere skal på et
kort kursus. Desuden skal der skrives en kvalitetshåndbog, og måske en
vejledning med procedurer, der er specifikke for den enkelte virksomhed.
Administratorer af databasen skal på specielle kurser, så de ved præcist,
hvordan de optimerer den bedst muligt. Det anbefales, at der så fastsættes en
ibrugtagningsdato, hvorefter samtlige projekter skrives i systemet. Det er
vigtigt, at retningslinierne overholdes til punkt og prikke, ellers virker
kvalitetsstyringsmodellen ikke optimalt. Systemet hjælper med til at overholde
modellen, men der vil altid være måder at omgås et system på, og derfor er det
vigtigt, at virksomheden selv overholder den politik, den fastsætter. Da
databasen jo vil være tom for tekstafsnit i starten, kræver det et stort stykke
arbejde at fylde den med tidligere udfærdigede dokumenter, og deraf kan brugere
drage erfaring til fremtidig udvikling. Alt dette kræver mange ressourcer, både
mandetimer og penge til kurser. Så i virkeligheden vil penge til licenser kun
være en begrænset del af de ressourcer, der skal bruges til realiseringen af systemet.
3.5 - Delkonklusion
3.5.1 - Kravspecifikation
De understående afsnit er ikke specifikt
tilegnet denne prototype, men nærmere en prioritering af målene samt en
opsummering af det fremtidige system:
Systemet skal bestå af en relationel SQL database. Vi har valgt MySQL men det
skal være muligt at skifte databasen ud efter behov.
Så skal der være en server - PServ - der står for kommunikationen mellem
databasen og klienterne. Serveren er skrevet i Java, så det er nemt at flytte
fra platform til platform.
Klienten kan bestå af en applet, der kan køres fra en internetbrowser eller en
hård klient applikation. Klienten kommunikerer med serveren og videre i
databasen.
Funktionalitet
Administration af gamle/nye projekter, tekststykker, grafikelementer,
produktbeskrivelser samt kunde-, leverandør- og medarbejder-kartotek. Søgning i
tilknyttet database samt redigering og formatering af tekstelementer.
Konvertering til diverse generelle formater så som .rtf og .html.
Dette kan stilles op i følgende overordnede funktioner:
Projektredigering.
Dokumentredigering.
Brugerhåndtering.
Kundehåndtering.
Leverandør og omkostningshåndtering.
Søgning.
Mailfunktioner.
Administrationsværktøj med bl.a. databaseoptimering.
Som det første må vi sikre os at databasen kan indeholde de elementer, der er
nødvendige for at opbygge de ønskede projekter, hvilket betyder at programmet
skal kunne håndtere og oprette disse. Samtlige elementer skal kunne oprettes:
Grafik og billeder samt tekst- og produktelementer. Dog må vi i første omgang
prioritere oprettelsen af tekstafsnit og brugen af disse højest.
Elementerne skal desuden kunne lokaliseres forholdsvis simpelt. Dette er en af
de væsentligste funktioner, da det er en af de ting, koncerner normalt bruger
meget tid på. Systemet skal derfor kunne tilknytte søgekriterier samt en
overordnet kategori til hvert element.
Programmet skal som færdigt produkt selvfølgeligt kunne tilpasses hver enkelt
virksomhed, der er interesseret i licens til programmet. For at realisere
dette, vil punkter hvor der er afvigelser fra virksomhed til virksomhed, blive
implementeret som plugins.
Dette vil sige at har en virksomhed brug for en speciel funktionalitet, vil der
være mulighed for at installere plugins
med den ønskede funktionalitet.
Vi søger, at komme frem til et brugbart Java client/server forhold, som kan
benyttes i de respektive arbejdsfunktioner tilknyttet virksomheden via plugins.
For at dette program kan blive en succes, vil en grundig vedligeholdelse af
databasen være en forudsætning for at opfostre et indholdsrigt og kvalitets
minded dokument bibliotek.
Vi har som mål at udvikle en prototype, der har et web interface udviklet i
Java, som kommunikerer med en mySQL-implementeret database. Pro-Filer v1.0 er
en prototype, hvilket skyldes tidsmangel til at udfærdige implementeringen,
ikke mangel på evne dertil.
- Det eneste krav til platformen for produktet vil være en JVM.
- Formen vil være elektronisk dokumentstyring og manipulation.
I en endelig udgave af systemet vil det følgende være optimaliteter.
Databasen skal være fleksibel, flytbar og optimeret med hensyn til behandlingen
af data.
Antallet af brugere vil være uden begrænsninger, dette resultere i en
omfattende benchmark testperiode.
Der skal være funktioner til optimeringsautomatik af databaser.
Programmet skal være nemt at videreudvikle og være implementeret åbent og
generelt. Dette giver modificerbare egenskaber og stabilitet.(se
implementations afsnittet omkring plugins).
Formålet er er at binde en DAT
med en server, over Internettet samt en evt. hård klient installation. Dette
kræver et omfattende login, som verificerer oprigtigheden af den person, som
søger adgang til systemet.
Denne socket connection har til hensigt at opnå tilgang, samt at benytte sig af
det omfattende dokumenthåndterings-Ide-Koncept Pro-Filer.
3.5.2 - Afgrænsning
Den ovenstående kravspecifikation er for et fremragende system, der senere
vil blive udviklet. Vi har dog ikke tid til det hele, så vi må afgrænse os fra
følgende i kravspecifikationen. Der skal hertil nævnes, at nogle
funktionaliteter kun ligger serverside og der er derfor ikke implementeret
nogen GUI til disse i vores prototype. Som eksempel kan man nævne
Brugerhåndteringen.
Projektredigering:
I en senere version, skal det være muligt at strukturere sine projekter med
strukturskabeloner. Der skal være funktionalitet med status på projekter.
Dokumentredigering:
Vi vil i prototypen have en simpelt editor til dokumentbehandling. Senere skal
man kunne lave design/skabeloner til dokumenter og have en mere avanceret
editor, og man skal også kunne sætte attributter på dokumenterne.
(Opdateringsdatoer m.m. med henblik på kvalitetsstyring).
Brugerhåndtering:
Vi kan i prototypen oprette og slette brugere, men funktionaliteten med
brugerettigheder og ansvarsområder er ikke med.
Kundehåndtering:
Der skal senere være mulighed for indtastning af oplysninger om kunder. I
prototypen af systemet kan det faktisk kun ske direkte i databasen, eller via
kunde forumet.
Leverandør og omkostningshåndtering:
Det skal her i en fremtidig udgave være muligt at gemme oplysninger om
leverandører og omkostninger. Det kan så overvejes, om man skal udvide systemet
til at indeholde kostprisdatabase.
Søgning:
Det vil senere være muligt at søge på søgeord og andre data i databasen.
Mailfunktioner
I prototypen kan sendes mail internt, men en rigtig god mailfunktion med alt
det vi kender, fra nuværende mailprogrammer, kommer først i en senere version
af systemet. Dette ligger også metoder til dette i den forestående nyudgivelse
af Java SDK, så dette ville være at opfinde en dyb tallerken igen.
Administrationsværktøj:
I det færdige system vil brugerhåndteringen komme under
administrationsværktøjet. Desuden skal der i det færdige system være
funktionalitet, der giver mulighed for vedligeholdelse af databasen. Man kunne
også tænke sig en statistik funktion, der giver mulighed for statistik på
status og indhold af projekter og dokumenter. Måske også på brugere, kunder og
leverandører.
4. - Design
Dette afsnit dokumenterer strukturen for systemet. Vi har søgt at gøre strukturen
forståelig og hovedsageligt fleksibel. Til sidst i afsnittet beskriver vi
komponenterne, og fastlægger realiseringsrammerne indenfor den arkitektur vi
har valgt.
4.1 - Opgaven
I designdelen skal vi skabe en stabil, men fleksibel struktur. Desuden skal
den være forståelig og beskrives således, at udenforstående kan få et overblik
over systemets opbygning. Designet er igen en iterativ proces, men er man i
starten fleksibel nok, er det muligt at forandre systemet uden de helt store
tidsmæssige omkostninger. Derfor har vi også lagt meget vægt på fleksibiliteten
helt fra starten. Dette har allerede nu sparet tid, men vi vil først rigtigt
kunne mærke det, når systemet videreudvikles. Designdelen af rapporten skal
give et overblik over struktureringen af systemets komponenter og processer.
4.1.1 - Rettelser til analysen
Idet analysen og designet har været iterative processer, der på visse
tidspunkter har overlappet hinanden, har det ikke givet mange rettelser som
ikke allerede er indskrevet. Den eneste væsentlige rettelse er, at vi ikke
havde medtaget i klasse diagrammet et produkt der kan have flere
forskellige leverandører, med hver sin omkostningsklasse tilknyttet. Dette
giver en omstrukturering i klassediagrammet, der giver nogle mange til mange
relationer, og derved et par nye tabeller. Dette er ikke implementeret, og det
vil måske endda være en ting, der er forskellig fra virksomhed til virksomhed,
alt efter hvilken politik de har på området.
4.1.2 - Kvalitetsmål
Et godt design har ingen væsentlige svagheder. Vi har, med vilje, ikke taget
højde for særligt meget sikkerhed i systemet, det har vi ikke haft tid til. Til
gengæld har vi gjort systemet så fleksibelt, at der er alle muligheder for at
tilknytte sikkerheds aspekter i det. Dermed har vi endda taget højde for
sikkerhed langt ud i fremtiden. Hvor brugbart systemet er på nuværende
tidspunkt kan diskuteres, men det er jo også kun en prototype, og selv når vi
når en betaversion vil brugbarheden kunne forbedres væsentligt. Men vi vil i
vores struktur opnå en sådan fleksibilitet, at det giver mulighed for at udvide
funktionaliteten (se afsnit om plugin).
Vi har taget højde for at delesystemer skal udskiftes og derfor er alle
bindinger svage. Eksempelvis er databasen en MySQL database, men kan med de
rigtige drivere nemt udskiftes med en anden SQL databaser. Vi har forsøgt at
holde så lave eksterne koblinger som muligt, da det skal være muligt at køre
systemet på mange forskellige grundlag.
4.2 - Teknisk platform
Udstyr afsnittet beskriver hvilken hardware man skal anskaffe sig, for at
bruge systemet, og hvad vi har brugt af hardware til udviklingen.
Basisprogrammel beskriver hvilken software vi har brugt, samt hvilke
teknologier vi har valgt til programmeringen og hvorfor vi har valgt dem.
Desuden hvilken software, der skal anskaffes for at køre systemet.
I afsnittet Systemer og apparater omhandler specielt periferiudstyr tilkoblet
vores system.
4.2.1 - Udstyr
Vi har udviklet systemet på vores egne pc'er, som vi selv har købt for vores
egne penge. Der er ingen særlige maskinelle krav til den DAT, der skal køre
klienten. Eneste nuværende krav er den pågældende maskine skal have adgang til
Internettet via. en browser. Serverens hardware afgøres af, hvor mange brugere,
der skal kunne få adgang til systemet ad gangen.
Den fysiske server er en Pentium 133mhz med
32mb Ram og 420mb harddisk. Den kører Debian, dog kun få brugere, er der
rigeligt med "juice" i denne noget gamle konfiguration.
4.2.2 - Multi-tier
Flere og flere koncerner
benytter multi-tier løsninger til komplekse client/server systemer. Denne
metode er et resultat af det stigende behov for datatilknytning til Internettet
samt bedre Return On Investment (ROI).
Multi-tier modellen benytter sig samtidigt af den ide, at delprogrammer skal
være skalerbare, altså kunne udvides, genbruges, samt indeholde fornuftige
interfaces til en fremtidigt komponentbaseret model.
Større programudvikling med høj On-Line-Transaction-Processing
(OLTP) har
gennem de seneste år bevæget sig fra two-tier
til multi-tier eller n-tier.
Dette skyldes, at selvom den pågældende virksomhed
måske ikke har et specifikt
behov for multi-tier løsningen, kan der i
en nærmere fremtid foreligge et behov
for noget sådan.
Web baserede multi-tier
client/server forhold
UserInterface-tier eller (UI-Tier) er det lag som håndterer
den faktiske bruger interaktion. Der kan udvikles mange forskellige UI til at
tilgå samme data på serven. Normalt afvikler UI-tier metoder tilknyttet
applikationslogik-laget. For vores system gælder følgende:
Client - siden (UI-Tier)
Fordele :
- Universel platformuafhængige klienter.
- Minimal vedligeholdelse.
- Ingen installations problemer.
- Tilgang til systemet er uden geografiske restriktioner.
Ulemper :
- Sikkerhed kan kompromitteres ved distribuering over net.
Middleware eller applikationslogik-laget er server-baseret kode, hvor med
clientkoden kan interagere. Det er i dette lag hvor dokumenthåndteringen,
søgninger, budgettering og ordre håndteringen mm. bliver afviklet.
Middelware-objekter kan invokere metoder på DSSS (Data Store Server Side)
niveau.
Middleware - siden (Server-Tier)
Applikationslogik :
- Integration af virksomhedens regler for dokumentstandarder.
- Enkelt bruger multipel database adgang.
- 'Uptodate' håndtering af dokumenter.
DSSS-laget (Data Store Server Side) er opbygget af objekter, der indkapsler
databasespecifikke rutiner i direkte kontakt med DBMS produktet. Eksempeltvis
kan en hypotetisk eksisterende metode som; hent_projekt_omkostning,
blive implementeret til at hente data direkte fra en relationel database ved
hjælp af en tilpasset SQL SELECT forespørgelsel.
Data Store Server Side - siden (Database-Tier)
Fordele :
- Simpelt UI-interface samt vedligeholdelse.
- Server specifisering via. plugins til den enkelte virksomhed.
- Aktiv forbindelses håndtering.
Ulemper :
- Sikkerhed kan kompromitteres ved distribuering over net.
Det at bygge et skalerbart client/server program til en evigt voksende bruger
base har aldrig været en nem udfordring, specielt hvis kriteriet er
platformuafhængighed. Ideen er at Pro-Filer skal indeholde de almindelige
funktioner for distribuerede systemer så som distribuerede transaktioner, en
forbindelses manager, samtidigt med administrationen er så simpelt som
'point-and-click'.
Samlet vurdering af inkorporering af Pro-Filer.
Fordele :
- Aktivt udnyttelse af Internettet som medie.
- Mulighed for bestilling af helt specifikke moduler designet til den enkelte virksomhed.
- Arbejde kan gemmes
server-side ved automatisk synkronisering, så ved 'client crash' går intet
tabt.
- Arbejde bliver gemt
server-side så det opdaterede materiale er tilgængeligt hvis man skifter
DAT.
Ulemper :
- Kræver en, med fordel hurtig, opkobling til alle brugere af systemet.
- Et server indkøb.
- Kræver 'cutting edge' (minimum JDK1.2) Java plugin pakke installeret på alle klienter.
4.2.3 - Basisprogrammel
I vores proces mod det færdige produkt arbejder vi i et forum med en
struktur, hvor alle dokumenter, databaser, alt programmel samt
tidsplansoversigten ligger tilgængeligt for gruppens medlemmer. Dette har til
fordel at vi alle kan benytte os af de sidste nye opdaterede tekst- og
brud-stykker. Dette forum er udviklet med php.
Selve Java Appleten er udviklet ved hjælp af IBM's Visual Age 3.0 og tilgangen
hertil i en simpel teksteditor(vi overholder HTML4.0 standarden). Som database
har vi valgt MySQL, og sproget er SQL2. MySQL kan benyttes med fordel da den er
freeware til Linux maskiner. I XML er Near and Far brugt som syntaks tjekker. XML er
dog ikke implementeret endnu, da XMLEditorKit stadig er under udvikling hos
Sun. Vi kunne selv udvikle en, men det har vi ikke tid til, og når Sun
alligevel er ved at udvikle én, kan vi lige så godt bruge den, når den kommer.
Der skal, for brugere og kunder være adgang til systemet via en web-browser. På
den måde kan man få adgang til systemet fra næsten enhver computer i hele
verden, og kan dermed, uanset hvor man befinder sig, arbejde sammen med sine
kolleger i Danmark eller hvor de end måtte befinde sig. For at kunne få tilgang
til systemet via en browser, skal der enten bruges ASP (eller anden serverside
scripting/programmel), eller der kan startes en applet. Vi har valgt at benytte
os af begge dele. Vi vil via en applet, gøre det muligt for brugeren at få
adgang til systemet, da en applet i større grad giver os en mulighed for at
udvikle et arbejdsmiljø, der har de ønskede funktioner. Derudover sikrer
javamiljøet at klientdelen nemt og hurtigt kan udvikles og videreudvikles.
Applet-løsningen giver også enklere og hurtigere adgang til PServeren. Vi vil
dog benytte ASP som den bærende del på kundesiden da kunden kun skal have
adgang til enkelte og ukomplicerede dele af databasen/systemet. Dette kan nemt
gøres med ASP.
I denne implementering af systemet har vi valgt følgende:
- MySQL, v.6.9 som databaseserver. MySql er hurtig, gratis og ganske udmærket.
- Apache v.1.8 som web-server. Apache er hurtig, gratis og ganske udmærket.
- IBM's JRE port til Linux. Denne port er formentlig den hurtigste VM på markedet pt.
4.2.4 - Systemer og apperater
Ja, man kan tilslutte en printer, hvis man har lyst til det. Der eksistere
ikke på nuværende tidspunkt nogle specifikationer eller krav om periferiudstyr
til systemet. Der kunne overvejes at tilkoble et scannersoftware i den
fremtidige grafiske editor.
4.3 - Arkitektur
Det er her nødvendig at indføre, eller i hvert
fald specificere nogle begreber, for at undgå forvirring i det følgende. Først
skal forskellen mellem forfatternes brug af ordene bibliotek og komponent
slås fast:
Begrebet komponent
benyttes på samme måde som i anden beslægtet litteratur, altså et generelt-
og til tider, abstrakt begreb, hvorimod et bibliotek dækker over et
konkret java-implementeret Pro-filer -komponent
|
Endvidere skal det nævnes at: Idet Pro-filer er et client/server-system vil vi i den
resterende del af designdokumentet ofte omtale de to delsystemer hver for sig.
Med clientsystemet menes således den del af systemet/arkitekturen som er
unik for clientsiden samt den del der er fælles for både serverside og
clientsiden. Ligeledes skal serversystemet opfattes som de dedikerede
server-komponenter samt fælles-komponenter. Det skal bemærkes at
systemets web-server og databaseserver ikke indgår i definitionen af de
to begreber, men kun de af os udviklede klasser, strukturer og komponenter.
Begreberne kan illustreres således:
|
.
|
Fælles-delene omfatter klasser fra model- (PDC) og funktions-komponenten (TMC).
Komponenter, biblioteker og klasser vil blive beskrevet detaljeret i det
følgende. Når vi i dokumentet definerer Pro-filer som et client/server er det
ikke fyldestgørende udtryk. Den tekniske opbygning af Pro-filer understøtter
nemlig også hvad man kunne kalde server/server og server/client arkitekturen.
Grunden hertil skal findes i følgende definition:
Et givent selvstændigt
program, der implementerer PKernel-klassen (Findes i Kernel-biblioteket) og
PApplicationInterfacet, kaldes en PApplikation
|
De eneste krav til en PApplikation er altså at PKernel-klassen og
PApplikationInterface'et implementeres. Det er netop i Kernel-biblioteket at
funktionaliteten til blandt andet, netværkskommunikation og databaseadgang
ligger. PKernel-klassen tilbyder denne funktionalitet på baggrund af en
tilknyttet PKernel-configurationsfil. Når vi tidligere hævder at Pro-filer også
understøtter server/server og server/client arkitekturerne, afhænger det altså
af, hvordan to kommunikerende PApplikationer har konfigureret deres PKernel's.
Med andre ord, hvis PApplikation A, 'tænder' for serverfunktionerne og
PApplikation B ligeledes 'tænder' for disse, er der altså tale om en
server/server arkitektur. Denne program-ideologi har markante ulemper, men også
attråværdige fordele. Vi henviser til afsnittet delkonklusion sidst i dette
dokument for en diskussion af disse. Grafisk kan omtalte opbygning illustreres
på følgende vis:
|
En
PApplikation
|
Selvom det tekniske ikke sætter hindringer i vejen for at den samme
PApplikation samtidig kan fungere som en client og en server, vil man i praksis
vælge en 'rolle' til sin applikationen og nøjes med at 'tænde' for de
funktioner som er nødvendige for at opfylde kravene til den pågældende
applikationen. Dette leder os til følgende definition:
En nøgne server
er en PApplikation med serverfunktioner, men uden client funktioner. Ligeledes
defineres en nøgen client som en PApplikation med clientfunktioner,
men uden serverfunktioner
|
Hvor begreberne: Clientsystemet og Serversystemet dækker over
'noget abstrakt', er nøgne servere og -clienter navnet for reelle
forekomster, 'noget konkret':
|
Sammenhæng mellem abstrakte og konkrete begreber
|
Pro-filer er
primært designet til at opfylde 'almindelige' client/server behov, med en eller
flere nøgne servere centralt placeret i basisvirksomheden hvortil der er
tilknyttet et antal nøgne clienter.
De af os udviklede klasser, strukturer og biblioteker tjener, overordnet set to
formål: dels at skabe en 'fungerende prototype' og dels at tilbyde udviklere en
række 'værktøjer' til nemt og smertefrit at 'bygge' egne PApplikationer, det er
således vigtigt at huske på at klasser, strukturer og biblioteker er udviklet,
med det formål for øje, at opbygge et Profiler-FrameWork.
Endelig skal det kort nævnes, at eftersom Pro-filer er udviklet i Java, kan der
i de kommende afsnit findes passager, der forudsætter at læseren har et
rimeligt kendskab til dette programmeringssprog. Således, med dette, og
ovenstående definitioner på plads, vil vi begynde den detaljeret gennemgang af
designet for Pro-filer.
4.3.1 - Komponentarkitektur
Systemet opererer med følgende standard komponenter:
- Brugergrænsefladekomponent
- også kaldet: Human Interaction Component (HIC).
- Modelkomponent - også
kaldet: Problem Domain Component (PDC).
- Databaseaktionskomponent
- også kaldet: Data Management Component (DMC).
- Funktionskomponent - også
kaldet: Function Management Component (FMC).
Sammenhængen mellem
komponenterne og de to delsystemer kan groft illustreres således:
|
Sammenhængen mellem komponenter og de to delsysteme
|
Af figuren ses at flere af komponenterne 'deles' mellem de to systemer, nemlig
PDC'en og FMC'en. PDC'en, som modellerer problemområdet, er nødvendig for begge
systemer, da de begge skal kunne bearbejde, ændre og for klientsystemets
vedkommende, også præsentere PDC'ens modeller og tilstande. Også FMC'en, eller
rettere dele af FMC'en, er nødvendig for begge systemer. FMC'en
indeholder blandt andet føromtalte Kernel-bibliotek, og således også al
socketprogrameringen, og danner dermed grundlag for at en PApplikation kan
kommunikere over et netværk.
Et ønske til designet har været at opbygge strukturer som vil gøre Pro-filer nemt
at vedligeholde og udbygge. Ønsket er imødekommet ved at skabe et
Profiler-FrameWork samt at benytte det 'platformuafhængige' udviklingssprog:
Java. FrameWorket er opbygget af en række biblioteker, som ikke direkte stemmer
overens med de fire nævnte standartkomponenter, undtagelserne er dog
bibliotekerne: dk.dkik.profiler.pdc og dk.dkik.profiler.hic, som
svarer direkte til det man traditionelt kalder: modelkomponenten og
brugergrænsefladekomponenten i nævnte rækkefølge. Med andre ord, er
biblioteks-opdelingen af Pro-filer
ikke fundet sted, med det formål at 'tilfredsstille'
litteraturen eller 'traditionerne', men derimod for at imødekomme ønsket om høj
brugervenlighed og skalerbarhed. Ikke desto mindre er det ofte muligt entydigt
at placere et givent bibliotek i en af de fire standard-kasser'. I de senere
afsnit hvor de enkelte profiler-biblioteker, hver for sig, bliver beskrevet,
vil der være en note om forholdet mellem de fire 'standard-kasser og
biblioteket. Indtil videre vil vi blot nøjes med at beskrive
biblioteks-strukturen. Nedenstående figur er et udklip af den javadoc-genereret
dokumentation og tjener det formål at give læseren et klart overblik over
omtalte struktur. Idet læseren, i øvrigt, gøres opmærksom på at der i den
'rigtige' API-dokumentation, kan forekomme små afvigelser fra figuren, og at
denne derfor ikke nødvendigvis er 100% korrekt, opfylder udklippet alligevel
omtalte formål.
|
Biblioteksstrukturen for profiler
|
Vi vil, som sagt, ikke beskrive de enkelte biblioteker i dette afsnit, men blot
afslutte med at påpege de to hovedgrupper et bibliotek kan tilhøre:
- FrameWorket og
- det som ikke tilhører
FrameWorket
Opdelingen taler næsten for sig selv, idet biblioteker som
tilhører FrameWorket alle starter med dk.dkik.profiler.framework....
Læseren vil formentlig, -og med rette, mene at den sidstnævnte kategori er en
noget uklar størrelse Hertil kan nævnes at man i det som ikke tilhører
FrameWorket blandt andet finder den nøgne-server og den tilhørende
nøgne-client, som udgør vores 'fungerende prototype'. Øvrige biblioteker er
nødvendige, men på ingen måde afhængige af FrameWorket, og kunne lige så godt
være placeret, eller for den sags skyld; produceret, et andet sted.
4.3.2 - Procesarkitektur
Som beskrevet ovenstående bygger systemet på en klient/server arkitektur
(men kan også fungere som andet) og skal installeres med Pserv, en
databaseserver og en webserver.
Systemet er jo et flerbrugersystem, af klienter er der derfor flere processer,
der skal have adgang til PServ samtidigt. PServ skal så have adgang til
database, eventuelt samtidigt med en webserver. Dette kan give nogle
falskehalse:
Bånbredden på nettet.
Computerkraft for PServ.
Computerkraft på webserveren.
Computerkraft på databaseserveren.
Begrænsning i databaseserverens adgang.
Som det er nu, kan både Pserver, databaseserver og webserver godt ligge på
samme maskine, men ved mange brugere, bør man overveje at distribuere dem
proportionalt med stigningen i antal brugere, alt efter om det er klienter
eller kunder, der bruger webserveren.
4.4 - Frameworket
Ud fra et 'dataflow-synspunkt' ville det være
mest praktisk at starte framework-beskrivelsen med dk.dkik.profiler.framework.kernel-
biblioteket, idet at dette bibliotek er det 'sted' hvor alle data'er
'kommer ind' i enhver PApplikation (Hvis vi et øjeblik ser bort fra
bruger-indtastet data). Det er da også her vi vil starte vores komponent-rejse,
da det er vores opfattelse, at en forståelse af kernel-biblioteket vil gøre den
resterende del mere overskuelig, logisk og kortere. Inden da skal vi dog kort
se på sammenhængen mellem de vigtigste biblioteker i FrameWorket, inklusiv
kernel-biblioteket:
|
Sammenhængen mellem Profiler-systemet vigtigste
biblioteker
|
Som man kan fornemme på tegningen er kernel-biblioteket, det centrale bibliotek
og andre biblioteker tjener hovedsagelig det formål at understøtte dette.
Kernel-biblioteket henter sin funktionalitet fra plugin-bibloteket, bortset fra
de 'basale' funktioner: netværksunderstøttelse, database-adgang. m.m. Pro-filerer
altså et system baseret på plugin-ideen, og er derfor et ekstremt
skalerbart systemet. Et bibliotek i systemet er altid navngivet således at det
sidste led er unikt. Derfor vil dk.dkik.profiler.kernel.plugin-biblioteket,
af rent praktiske grunde, i det følgende blive omtalt som plugin-biblioteket og
ligeledes kaldes dk.dkik.profiler.pdc-biblioteket blot for
pdc-biblioteket. Endvidere skal det nævnes at vendingen: ...X-biblioteket...,
ofte bruges i betydningen: ...klasserne i X-biblioteket... hvor X er
navnet på et givent bibliotek.
4.4.1 - Dk.dkik.profiler.framework.kernel
Overordnet set, danner/indeholder
Kernel-biblioteket grænsefladerne til andre (del)systemer. Dels drejer det sig
om grænsefladen mellem en PApplikation og et eventuelt
grafisk-brugergrænseflade, - om grænsefladen til eventuelle plugin-moduler, og
sidst, men ikke mindst: - om grænsefladen mellem en PApplikationen og
netværket. Vi skal starte med at kigge på det sidstnævnte, som kan illustreres
således:
|
Sammenhæng mellem en PApplikation og netværket.
|
Det er altså kernel-biblioteket, som skal fortolke de informationer computeren
modtager via sin TCP/IP forbindelse, behandle disse informationer, eventuelt
sende dem videre til enten PApplikation eller et plugin, eller sende et respons
tilbage på nettet. Ovenstående figur er mangelfuld på det område, at den ikke
viser at kommunikationen naturligvis er tovejs. For den almindelige
PApplikations-programør, der benytter sig af profiler-FrameWorket, er det ikke
nødvendig at vide hvordan to kernels kommunikerer over et netværk, idet
en kommunikation pænt bliver kanaliseret til det rette sted i systemet. Ikke
desto mindre er kommunikationen mellem sådanne kernels vigtig for os, og
for den læser der ønsker den fulde forståelse af Pro-filer. En kommunikations-protokol
(herefter: PProtokol) er derfor specificeret senere i dette design-dokument. I
det følgende vil vi, som indikeret, først kigge på kernelens
netværksegenskaber, herefter vil vi 'håndkøre' en 'samtale' mellem to kernels
og endelig vil vi skitsere de to sidste af kernel-bibliotekets grænseflader.
4.4.1.1 - Struktur
Kigger vi nærmere på kernel-biblioteket, finder
vi, i relation til netværks-funktionaliteten 4 vigtige klasser: PKernel,
PKernelPack, PKernelSocketServer og PKernelSocketClient. PKernel-klassen er
bibliotekets hoved-klasse, og er er den klasse som biblioteket er bygget
op omkring. Øvrige klasser i biblioteket er tjenede-klasser eller man
kunne kalde dem undersåtter. PKernelPack, PKernelSocketServer og
PKernelSocketClient er altså sådanne undersåtter. Ved opstart 'læser'
PKernel-objektet (vi taler her om PKernel-objektet og ikke PKernel-klassen, da
vi nu er i en 'kørende' situation) sin del af 'Konfigurations-filen' og
bestemmer sig for hvilken funktionalitet det skal tilbyde. Eksempelvis vil den
oprette mulighed for at andre PKernel-objekter, kan 'connecte' til den. (Dette
er naturligvis en funktionalitet som hovedsagelig tilhører Serversystemet)
Lad os forestille os at en given PKernel ønsker at 'lytter' efter
clienter på tcp/ip-port 6666, 6667 og 6668. Ved opstart vil denne kernel
'spawne' tre PKernelSocketServer-objecter som hver lytter på en af disse porte.
(Pt. er der ikke de store fordele ved at lytte på mere end en port, (bortset
fra at det i sjældne tilfælde kan nedbringe 'ventetiden' nogle millisekunder),
men tanken er, at det på et senere tidspunkt kan være ønskværdigt at
implementere forskellig funktionalitet på de forskellige porte. Hvorfor ikke
sende en e-mail til en PApplikation, med kommandoer, eller måske blot få Pro-filertil
at konvertere mailen til det interne mail-format, hvorefter beskeden sendes til
den ønskede afsender ? Sådanne ideer vil langt nemmere kunne blive
implementeret hvis også 'lytte-portene' er konfigurebare. Under alle
omstændigheder forhindrer kernel-bibiotekets opbygning ikke sådanne fremtidige
ønsker.)
Efterhånden som clienterne 'ankommer' vil PKernel-objektet spawne et
tilsvarende antal PKernelSocketClient-objekter. Processen kan illustreres
således:
|
Processen når en netværks-forbindelse oprettes.
|
Vi kan få en bedre forståelse af kernel-strukturen ved at betragte følgende
tænkte eksempel:
- PKernel starter op og
opretter et PKernelSocketServer-objekt, på eks. port 6666
- En client 'ankommer' til
port 6666, hvorefter PKernelSocketServer-objektet opretter et
PKernelSocketClient-objekt
- PPKernelSocketServer-objektet
'går' tilbage i 'lytteposition' for at 'modtage' nye clienter, imens
bliver det nyoprettet PPKernelSocketClient-objektet 'registreret' hos
PKernel'en, som gemmer en pointer til dette objekt. Kommunikation mellem
PApplikationen og clienten, foregår fremover via
PKernelSocketClient-objektet.
- Nu sender clienten
eksempelvis en login-kommandoen. Denne modtages af
PKernelSocketClient-objektet
- PKernelSocketClient-objektet
konverterer/påhæfter nu det indkomne til et PKernelPack-object.
(PKernelPack-klassen vil blive beskrevet i detaljer senere. I denne sammenhæng
er det dog nok for læseren at vide; at PKernelPack-objekter blot fungerer
som 'en sætningen'. Hvis kommunikationen mellem to kernels
sidestilles med en samtale mellem to mennesker, vil de sætninger der
udveksles, kunne sidestilles med Pro-filer's
PKernelPack-objekter.)
- PKernelSocketClient-objektet
bestemmer nu om PPack'en kan behandles allerede på 'socket-niveau'. Hvis
dette er tilfældet, vil behandlingen finde sted, da der således ikke er
nogen grund til at 'forstyrre' de overliggende lag (hvis der findes
syntaks-fejl i det indkomne, vil dette altid blive behandlet på
'socket-niveau'). Hvis det ikke er muligt at behandle PKernelPack'en her,
sendes denne i stedet opad i hierarkiet til PKernel-objektet
- Omtalte PKernelPack'en
kunne eksempelvis være en kommando. I sådanne tilfælde ville den afføde et
svar. Dette svar bliver herefter sendt tilbage til
PKernelSocketClient-objektet hvorefter det 'ligges' på nettet og
transmitteres til det forbundne client-system.
Herefter sker noget tilsvarende
i netværkets anden ende, hos clienten.
Som skrevet, kan et PKernel-objekt 'indlæse' plugins. Et sådant plugin
kunne eksempelvis være et Mail-plugin, således at Pro-filer kunne indeholde
mail-funktioner. Den opmærksomme læser har formentlig noteret sig at sådanne
mail-funktioner har været omtalt i den foregående del af rapporten og derfor
allerede skulle være er en del af Pro-filer. Det er da også rigtigt at
mail-funktionerne 'hører' til det man kunne kalde 'basis'-funktioner, men
pointen i denne sammenhæng er, at denne basis-funktionalitet er 'programmeret'
som et plugin, på samme måde, og på lige fod, med alle andre plugins.
Sammenhængen mellem PKernelen og plugins kan illustreres ved hjælp af følgende
figur.
|
Ved
opstart loader PKernel-objektet 'sine' plugins.
|
PKernel-klassen er altså systemets 'hjerte'. Den står for at 'binde' omverdenen
sammen med resten af systemet. Vi skal i de følgende afsnit kigge nærmere på
hver enkelt klasse i kernel-biblioteket og især PKernel-klassen, men først et
overblik over den samlede struktur af kernel-biblioteket og sammenhængen til
andre biblioteker (Figuren herunder er endvidere en samling af de to foregående
figurer):
|
PKernel-klassen som centrum i Pro-filer.
|
Vi har nu en forståelse af sammenhængen mellem de forskellige biblioteker i Pro-filer Netsolution .
Lad os herefter se hvad der sker når en en PKernel-object initialiseres. Først
registreres den pågældende PApplikation, og en pointer til denne gemmes i
PKernel-objektet. Herefter læses den tilknyttede configfil, denne kan ligge på
samme maskine eller den kan indlæses fra nettet via HTTP. Oplysninger i
config-filen gemmes i en config-tabel i PKernel-objektet. Configfilen er opdelt
i sektioner, som ofte vil være navngivet, således at de 'stemmer' overens med
navnene på de objekter som skal/vil benytte dem. Adgangen til configfilen
indbyder til at et objekt ikke bør læse/modificere andre config-sektioner end
den som bærer objects klassenavn. Nu læser PKernel-objektet sin del af configfilen
og 'beslutter' på denne baggrund om der skal oprettes en ClientSocket. Herfter
'besluttes' om der skal oprettes ServerSockets, og i givet fald på hvilke(n)
port(e). Skal der kun oprettes en ClientSocket vil den givne PApplikation i
princippet fungere som en nøgen client og ligeledes hvis der kun er tale
om oprettelse af serversockets, er der tale om en nøgen server.
Basis-systemet, eller hvad man kunne kalde for 'pro-filer styresystemet' er nu
reelt klar 'til brug' men i praksis vil der stadig mangle en masse
funktionalitet i systemet. Derfor, og som det sidste PKernel-objektet gør i sin
initialiserings-proces, indlæses de eventuelle plugins som måtte være
spcificeret i configfilen. Inden vi beskriver indlæsningen af plugins skal vi
dog lige runde følgende definition:
En plugin-metode er en metode i et plugin, som definerer
navnet samt typen på en, af plugin'et accepteret kommando
(eller svar).
|
Plugin-ideen er det smukke og smarte ved Pro-filer Netsolution og måden hvorpå et
PKernel-objekts implementerer 'sine' plugin har ligeledes været udsat for en
del gennemtænkning og design-omhu. I praksis foregår det på følgende måde:
- Et PKernel-objekt starter
op som beskrevet ovenfor. På dette tidspunkt har dette objektet ingen
anelse om hvilke plugins der skal indlæses
- Stien på hvert eneklt
plugin er spcificeret i configfilen, og PKernel-objektet tager nu fat på
dem en efter en.
- Forudsat at den
specificerede plugin-klasse kan lokaliseres oprettes et objekt af
pågældende type, dette plugin-objekt gemmes i PKernel-objektets
plugin-tabel. Nu skannes objektet for 'brugbare' pluginmetoder. Kriteriet
for at en 'pluginmetode' kan registreres er først og fremmest at den er public,
og herefter at metode-navnet starter med ordet:profiler. Det kunne
tænkes at et plugin havde brug for andre public'e metoder som ikke
skal registreres som en 'pluginmetoder' hvorfor navne-kriteriet er
indført. (Et plugin bør ikke have andre public'e metoder end de
egentlige 'pluginmetoder' da komunikation på tværs og imellem plugins
frarådes. Der stilles nemlig i Pro-filer Netsolution -systemet ikke krav
til en PApplikation om at specifikke plugins skal indlæses og slet ikke i
hvilken rækkefølge en eventuel indlæsning skal foregå.
Inter-plugin-komunikation er derfor ikke ønskværdig. Også fundne plugin-metoder
gemmes i en tabel i PKernel-objektet
- Endelig skannes de
nyoprettede plugin-objekt for eventuelle public'e grafiske
elementer. Hvis et eller flere af sådanne objekter findes 'leveres' disse
til PApplikationen. Vi husker på at en PApplikation skal
implementere PApplikationInterface'et, og netop dette faktum gør at
PKernel-objektet er istand til at levere grafiske objekter til sin herre:
den tilknyttede PApplikation. PApplikationInterfacet dikterer nemlig at
PApplikationen implementerer en metode som hvis 'hoved' antager formen: reciveGUI(java.lang.String
pluginName, java.awt.Component guiComponent). PKernel-objektet kalder
altså denne metode hos PApplikationen med plugin'ets navn, og de
pågældende grafiske objekt som argumenter. Herfra er det op til
PApplikationen at gøre med disse referancer hvad den vil, oftest vil dette
naturligvis indebære at componentet vises på skærmen.
4.4.1.2 - PProtocol
PProtocolen specificerer hvordan to
PKernel-objekter, og dermed i sidste ende: to PApplikationer, 'snakker' sammen.
Kernel-biblioteket indeholder, som skrevet, al socket-programmeringen og
'connecter' direkte på TCP-servicen. PProtoklollen ligger altså 'ovenpå' dette
TCP-lag. PProtokollens 'plads' i OSI-modellen kan ilustreres således:
|
PProtocolens plads i OSI-modellen
|
En Kernel benytter sig af en stream-forbindelse, (pt. understøttes kun
TCP) med en relative simple kommando/svar-strukturer. Kernel'en er
designet til at tilbyde andre Kernels et simpelt interface til resten af
den pågældende PApplikation. PProtokollen specificerer ingen speciel
TCP-'lytteport'.
|
Sammenhængen mellem PAplikation og PProtokol.
|
I det følgende, når der tales om tegn og karakterer, er det med udgangspunkt i
ASCII-tegnsættet. Endvidere har vi brug for følgende definition:
'Det som sendes over
nettet mellem to kernels' kaldes for en pakke uanset om det reelt
drejer sig om et svar eller en kommando
|
Komunikation mellem to PKernel-objekter foregår ganske enkelt ved at det ene
PKernel-objekt, på et givent tidspunkt, sender en kommando/forespørgsel,
hvorefter det, i dette tilfælde, modtagende objekt, ofte vælger at sende et
svar tilbage. Selvom PProtokollen ikke direkte dikterer at en
kommando/forespørgsel altid skal besvares, anses det dog for 'god kotume'.
Vælger 'man' at afgive et svar skal et sådant dog overholde formen: _OK eller
_FAILED. (eks: kunne et svar på kommandoen : LOGIN være <LOGIN_OK<
i>eller LOGIN_FAILED) Pakker er ugyldige, set i forhold til
PProtokollen, hvis de ikke overholder, de, i dette dokument, specificeret krav.
Endvidere kan vi beskrive en pakke ved at den indeholder en række
felter, nemlig:
- DATAPOINTER-feltet
(Størrelse: 4 byte. Lovlige værdier: [0..9], [a..f] samt [A..F])
Både kommandoer og svar kan være databærende, det vil sige at der kan
sendes data (udover eventuelle parametre) med en pakke. Disse data,
kan herefter benyttes af den modtagende part. Data, i denne forbindelse,
er pdc-objekter, eller rettere objekt-tilstande. DATAPOINTER-felt
angiver altså om transaktionen er databærende eller ej, feltet indeholder
nemlig antalet af objekter som sendes.
- ID-feltet (Størrelse:
8 bytes. Lovlige værdier: [0..9], [a..f] samt [A..F])
De næste 8 bytes, benyttes til unik at identificerer den pågældende pakke,
og kaldes derfor ID-feltet. Det er nødvendig for en PApplikation, at kunne
indentificere en pakke entydigt, da der ikke er nogen krav til at
en PApplikation, 'behandler' de indkomne pakker i kronologisk
rækkefølge, endvidere specificerer PProtokollen ingen maximum svartider,
og det kan derfor ikke på forhånd bestemmes hvornår et eventuelt svar
retuneres. Pakkens unikke egenskab, som herved er givet af ID-feltet
er altså den eneste sikre måde at afgøre hvilke svar der 'hører' til
hvilke kommandoer/forspørgsel og omvendt.
- KS-feltet (Størrelse:
Variabel, dog minimum 1 byte. Lovlige værdier: Alle ASCII-tegn)
ID-feltet efterfølges af et (variabelt) antal bytes som udgør
kommando/svar-feltet. (forkortet KS-feltet). Et KS-felt skal altid
afsluttes med whitespace (space eller tab). Det skal endvidere bemærkes at
KS-feltet ikke er 'cAseSENsiTivE')
- PARAMETER-feltet
(Størrelse: Variabel incl. 0 byte. Lovlige værdier: Alle ASCII-tegn)
Dette felt indeholder pakkens parametre (ikke at forveksle med de
føromtalte data. jvf. beskrivelsen af DATAPOINTER-feltet, og
består altså af 0 eller flere bytes. Hvis denne sidste del indeholder mere
end et parametre, sepereres disse af whitespace.
Pakke-strukturen kan
grafisk illustreres således:
|
'Pakke'-strukturen mellem to kernel's.<BR<
i>
|
Pakken afsluttes herefter med et linjeskift (Både LineFeed og CarrigeReturn,
eller en kombination af disse accepteres som linjeskift). Hvis pakken er
databærende vil dette/denne blive efterfulgt af det/de tilknyttede objekt(er).
4.4.1.3 - Klasser og metoder
Mostly removed in the online version.
PKernelPack
java.lang.Object
dk.dkik.profiler.framework.kernel.PKernelPack
|
Instances
from this class represents a command/response from the network. When a
PKernelPack-object is created it will be 'marked' with the
PKernelSocketClient, wich created it. Ths pointer will be used by the varius
methods, for wich the PKernelPack-object was ment. To be userfrendly,
PKernelPack implements different send-methods, so a response to a
PKernelPack-object could be returned simple by using aPKernelPack.send(....RESPONCE-STRUCTURE
HERE...);
|
PKernelPlugin
java.lang.Object
dk.dkik.profiler.framework.kernel.PKern
dk.dkik.profiler.framework.kernel.PKernelPlugin
|
This
class is the parent for all plugin-classes,
inclusive decentens of
PKernelPluginDB. It's primary task is to
provide a PKernel-pointer to every
plugin, and secundary: to fulfill the goals
of the MarkerInterface
design-pattern .
|
4.4.2 - Dk.dkik.profiler.framework.kernel.plugin
Som det er beskrevet i ovenstående afsnit, loader PKernel objektet sine
plugins ved opstart. Det er defineret i configfilen, hvilke plugins, der skal
loades. Det er derfor hovedsageligt disse, der bestemmer, om en PApplication
skal have client eller server funktionaliteter.
Et plugin er opbygget på følgende måde:
Pluginclassen skal nedarve fra den abstrakte klasse PKernelPlugin, eller hvis
pluginnet skal have databaseadgang, skal det nedarve fra PKernelPluginDB, der
igen nedarver fra PKernelPlugin, men giver mulighed for at skrive statements
til den i configfilen definerede database. PKernelPlugin nedarver igen fra
PKern, der bare giver adgang til logfil og configfil. Idet et plugin nedarver
fra PKernelPlugin betyder det også, at det skal kaldes med et PKernelobjekt.
Dette PKernelobjekt giver så adgang til den PKernelSocket, som nu er tilknyttet
objektet. Således kan et plugin kommunikere med omverdenen. Strukturen i selve
pluginnet beskrives nedenfor.
4.4.2.1 - Struktur
Når et plugin loades, scannes pluginnet som sagt for 'brugbare' metoder af
PKernel objektet. Disse metoder skal have et navn, der starter med 'profiler',
så PKernelobjektet kan finde dem. Disse metoder skal naturligvis være public,
for at de kan kaldes udefra. Da de samtidigt er de eneste metoder, der jo skal
kaldes, vil det også være naturligt, hvis resten af metoderne, der kan være
hjælpemetoder, er private.
Et plugin kan både være grafisk og ej. Hvis ikke det er grafisk, er der ikke så
mange dikkedarer, andet end det før omtalte. Hvis pluginnet er grafisk derimod,
skal man sørge for, at pluginnet leverer et grafisk komponent til
PApplikationens recieveGUI metode, der så kan gøre med det, hvad den vil. Men i
pluginnet skal holdes styr på, hvordan den del af GUI'en skal se ud, der er
specifik for pluginnet.
4.4.2.2 - KlasserRemoved in the online version.
4.4.3 - Dk.dkik.profiler.framework.hic
HIC'en (Human Interaction Component) indeholder de visuelle komponenter som
er lavet specielt til dette program. Af eksempler kan der nævnes de kommende
mail styrings komponenter (mailRecieve og mailSend). Disse elementer er kun
beregnet til de programmer vi udvikler og kan ikke tænkt som generelle
komponenter til andre programmer. Klasserne som kommer til at være placeret
her, vil være en samling af javas generelle komponenter sat sammen til et
komponent, evt. med noget tilføjet funktionalitet.
4.4.3.1 - Struktur
Når et plugin i
dk.dkik.profiler.framework.kernel.plugin skal bruge en grafisk overflade skal
den referere til den rigtige class-fil i denne package. Grunden til at valget
er faldet på denne opbygningsform, falder tilbage på, at dette gør det nemmere
at ændre GUI'en, i det tilfælde at den skal ændre udseende eller skal have
udvidet funktionaliteten.
Denne package er opbygget på den måde, at der skal laves en ny class-fil, for
hver GUI der skal benyttes af plugins. Dette understøtter det ovenstående om
redigeringsnemhed.
4.4.3.2 - Klasser
På nuværende tidspunkt er der ikke
implementeret grafiske plugins, men der vil, i en senere udgave af programmet,
som minimum blive implementeret 2. De 2 plugins som det i første omgang drejer
sig om, er til modtagelse og afsendelse af e-mails.
4.4.4 - Dk.dkik.profiler.framework.pdc
PDC - eller modelkomponentet er opbygget på en måde, så følgende egenskaber
gør sig gældende:
Alle entiteter nedarver fra PAnEntitet. Derved får de evner til at levere SQL
sætninger, så de plugins der skal rette i databasen, ved hvordan det skal
gøres. F.eks. et plugin spørge PBruger objektet, hvodan PBruger objektets tabel
skal se ud, og så kan PBruger objektet levere en SQL sætning til at oprette en
tabel til sig selv. Derudover kan en entitet læse fra et resultsæt og den har
også mulighed for sende og modtage streams, så den kan læse og skrive til
nettet. Alle entiteter ved hvordan de selv skal læses og skrives fra
nettet.Desuden kan man få adgang til objekternes attributter via metoder, der
ligeledes er nedarvede fra PAnEntitet. Dette er beskrevet i nedenstående afsnit
om struktur.
4.4.4.1 - Struktur
Strukturen for PDC er opbygget således:
Alle nedarver fra PAnEntitet:
Væsentlige metoder, som nedarves:
PAnEntitet(BufferedReader): Når denne constructor metode nedarves, kan objektet
læse objekter af sin egen type via en bufferedreader.
PAnEntitet(ResultSet): Med denne constructor metode, kan objektet læse sine
attributter fra databasen i et resultset.
getSQLStatementCreateTable(String[][], String): Med denne metode kan objektet
regne ud, hvad tabellen i databasen, der tilhører objektet, skal hedde.
getTYPE(String): Disse metoder sørger for, at attributter af den rette type
hentes i databasen. De loades ind i constructoren, og kan så kaldes af
objektet.
readTYPE og writeTYPE metoderne, læser og skriver de rigtige typer fra
BufferedReaderen og PrintWriteren.
PAnEntitetException:
Denne classe nedarver bare fra RunTimeException, og kan derfor kaste en sådan,
og vi har så tilføjet et argument, der er en String.
PObjekt:
Disse classer (PBruger m.m.) nedarver alle fra PAnEntitet, og har alle en
metode, der identificerer deres egne attributter. Senere hen vil det så være
muligt at tilføje specifikke metoder til dem, så de kan læse og skrive
specifikke ting fra nettet.
4.4.4.2 - Klasser
Removed from online version.
4.4.4.3 - Database
PDC komponentet er en af de data-bærene dele af frameworket hvor der bindes
mellem objekt systemet og Pro-Filer databasen.Ved at nedarve fra
PKernelPluginDB gives der socket adgang til data gennem en data-aware kontrol
struktur i klienten. Database strukturen er defineret ved tabeller med datasæt
og attributter som herunder fremstillet.
Man kunne for så vidt have benyttet mange forskellige typer SQL-databaser.
Vores valg af database kunne også have hvilet på den distribueret ide som
Jasmin! istedet for vores relationære database. Systemet taget i betragtning er
mySQL ideel til at håndtere de påkrævede opgaver, endog med overkommelig
hastighed.
Vi vil gerne kunne understøtte stream type data eks. lyd og grafik til
hjælpfiler og dokumentation samt webcam komunikation og møder. Dette vil kun
kunne lade sig gøre hvis vi danner attributter i databasen som kan indenholde
meget store datablokke, men mener med rette at kunne afgrænse os fra dette i
denne version af Pro-Filer.
I det fremtidige system kunne man forestille sig at benytte, en database som
var indstillet til effektivt at kunne håndtere disse tunge DPU over net. Dette
eks. ved hjælp af et grafisk interface til et xcomponent med den mere
upålidelige Protocol UDP.
Denne applikationsnære protocol indenholder næsten kun socket information samt
det data som skal overføres og er derfor af mindre komplex opbygning.
Forbindelsesløs komunikation skaber hastighed i forhold til de pakker som går
tabt og hvis CRC32-biten er sat vil DPU'en ikke bliver retransmiteret.
Oversigt over BRUGER-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
BRUGER_ID
|
varchar(25)
|
NO
|
|
|
FORNAVN
|
varchar(250)
|
NO
|
|
|
EFTERNAVN
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_01
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_02
|
varchar(250)
|
YES
|
|
|
BRUGERNUMMER
|
bigint(21)
|
NO
|
0
|
auto_increment
|
PASSWORD
|
varchar(12)
|
NO
|
|
|
Oversigt over BRUGERGRUPPE-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
BRUGERGRUPPE_ID
|
varchar(50)
|
NO
|
|
|
ANSVARLIG_ID
|
varchar(25)
|
NO
|
|
|
BRUGERGRUPPENUMMER
|
bigint(21)
|
NO
|
0
|
auto_increment
|
Oversigt over BRUGERGRUPPE_AND_BRUGER-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
BRUGERGRUPPE_ID
|
varchar(200)
|
NO
|
|
|
BRUGER_ID
|
varchar(200)
|
NO
|
|
|
Oversigt over POSTFIL_SYSTEM-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
POSTFIL_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
BRUGER_MODTAGER_ID
|
varchar(25)
|
NO
|
|
|
TEKSTEMNE
|
varchar(50)
|
YES
|
|
|
TEKSTINDHOLD
|
text
|
YES
|
|
|
DATOAFSENDT
|
timestamp(14)
|
YES
|
|
|
BRUGER_AFSENDER_ID
|
varchar(25)
|
NO
|
|
|
BRUGER_GRUPPE_ID
|
varchar(50)
|
NO
|
|
|
EKSTERN_MODTAGER_ADR
|
varchar(100)
|
YES
|
|
|
EKSTERN_AFSENDER_ADR
|
varchar(100)
|
YES
|
|
|
NYPOST
|
char(1)
|
NO
|
Y
|
|
FOLDER_PLACERING
|
varchar(50)
|
YES
|
inbox
|
|
Oversigt over PROJEKT-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
PROJEKT_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
BRUGERGRUPPE_ID
|
varchar(50)
|
NO
|
|
|
KUNDE_ID
|
bigint(21)
|
NO
|
0
|
|
DATOOPRETTET
|
timestamp(14)
|
YES
|
|
|
DATOAFSLUTTET
|
timestamp(14)
|
YES
|
|
|
Oversigt over PROJEKT_AND_ELEMENT-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
PROJEKT_ID
|
bigint(21)
|
NO
|
0
|
|
ELEMENT_ID
|
bigint(21)
|
NO
|
0
|
|
PLACERING_HORISONTAL
|
varchar(4)
|
NO
|
|
|
PLACERING_VERTIKAL
|
varchar(4)
|
NO
|
|
|
Oversigt over TEKST_ELEMENT-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
TEKST_ELEMENT_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
ANSVARLIG_ID
|
varchar(25)
|
NO
|
|
|
DATOOPRETTET
|
timestamp(14)
|
YES
|
|
|
DATOOPDATERET
|
timestamp(14)
|
YES
|
|
|
Oversigt over TEKST_ELEMENT_AND_ELEMENT-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
TEKST_ELEMENT_ID
|
bigint(21)
|
NO
|
0
|
|
ELEMENT_ID
|
bigint(21)
|
NO
|
0
|
|
PLACERING_HORISONTAL
|
varchar(4)
|
NO
|
|
|
PLACERING_VERTIKAL
|
varchar(4)
|
NO
|
|
|
Oversigt over GRAFIK_ELEMENT-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
GRAFIK_ELEMENT_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
ANSVARLIG_ID
|
varchar(25)
|
NO
|
|
|
DATOOPRETTET
|
timestamp(14)
|
YES
|
|
|
DATOOPDATERET
|
timestamp(14)
|
YES
|
|
|
Oversigt over PRODUKT_ELEMENT-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
PRODUKT_ELEMENT_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
OMKOSTNING_ID
|
bigint(21)
|
NO
|
0
|
|
LEVERANDOR_ID
|
bigint(21)
|
NO
|
0
|
|
ANSVARLIG_ID
|
varchar(50)
|
NO
|
|
|
DATOOPRETTET
|
timestamp(14)
|
YES
|
|
|
DATOOPDATERET
|
timestamp(14)
|
YES
|
|
|
Oversigt over KUNDE-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
KUNDE_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
NAVN
|
varchar(250)
|
YES
|
|
|
KONTAKTPERSON
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_01
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_02
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_03
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_04
|
varchar(250)
|
YES
|
|
|
TLFNR1
|
varchar(250)
|
YES
|
|
|
TLFNR2
|
varchar(250)
|
YES
|
|
|
WEBADRESSE
|
varchar(250)
|
YES
|
|
|
PASSWORD
|
varchar(15)
|
NO
|
|
|
Oversigt over LEVERANDOR-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
LEVERANDOR_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
NAVN
|
varchar(250)
|
YES
|
|
|
KONTAKTPERSON
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_01
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_02
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_03
|
varchar(250)
|
YES
|
|
|
ADRESSELINJE_04
|
varchar(250)
|
YES
|
|
|
TLFNR1
|
varchar(250)
|
YES
|
|
|
TLFNR2
|
varchar(250)
|
YES
|
|
|
WEBADRESSE
|
varchar(250)
|
YES
|
|
|
Oversigt over OMKOSTNING-tabellen:
|
Attribut
|
Datatype
|
Nulværdi
|
Standardværdi
|
Ekstra
|
OMKOSTNING_ID
|
bigint(21)
|
NO
|
0
|
auto_increment
|
INDKOBSPRIS
|
float(10,2)
|
NO
|
0.00
|
|
SERVICE_OMKOSTNING
|
float(10,2)
|
NO
|
0.00
|
|
4.5 - Det som ikke tilhører frameworket
4.5.1 - XWindow
Mostly removed in the online version.
TreeStructureParser
java.lang.Object
dk.dkik.profiler.xwindow.TreeStructureParser
|
This class is designed to parse different
type of source into a structure of nodes. The source has to yield our
structure of the following format.
- A four byte counter describing the indent level.
- A four byte counter a unik depth.
- A string that descripes the name of the node in question.
- A token in the end of every node ;
Exampel of Pro-Filer treeNode format
: 0000 0000 rootNodeName ;
@author: Pro-Filer Netsolution
|
TreeStructureParser
parseFileToNode - public static SingleTreeNode[]
parseFileToNode(String fileString)
|
appends
the strings inside the ASCII file to on
big long string seperated by the ;
token and returns a parseStringToNode
|
|
parseStringToNode - public static
SingleTreeNode[]
parseStringToNode(String longString)
|
To ease
on workload this class should be reused
It concludes the following stemps :
- Parts the argument into single lines.
- Counts the number of tokens.
- Trim parted tokens.
- Prepares the trimmed tokens for sort and parse them to an int.
- Tjecks if there are more than one leaf for every unik placeholder.
- Sort the array .. intelligently.
- Prepare for adapted tokens to acceptable strings.
- Find the horizontal level for every leaf and parse it to an int.
- Filter out the leaf title.
- Place the arrayInt sorted titlestrings in theNode array.
|
DynamicTreeStructure
java.lang.Object
java.awt.Component
java.awt.Container
com.sun.java.swing.JComponent
com.sun.java.swing.JPanel
dk.dkik.profiler.xwindow.DynamicTreeStructure
|
DynamicTreeStructure handles the treestructure in the
solarisComponent.
Functions included :
- Insert node into tree.
- Rename a node in tree.
- Delete a node form tree.
- A popUpMenu.
Future functions :
@author: Pro-Filer Netsolution
|
4.6 - Hjemmesiden
Mulighederne indenfor hjemmeside design stod os rimeligt åbne. Det eneste vi
følte var nødvendigt at inkorporere var ASP til kan udføre nogle minimale
ændringer i databasen med hensyn til kunde informationerne og så valgte vi også
at benytte det til et rekvirations-formular til at skaffe informationer om
hjemmesidens virksomhed (de mere detaljerede informationer om brugen af ASP'en
forefindes i afsnittet ASP).
Vi mente det ville være mest fordelagtigt at dele hjemmesiden op i 3 frames.
Den første frame valgte vi til at være fremvisningsvinduet til de få sider vi
har lavet til hjemmesiden. Frame 1 er også den eneste der har en scrollbar i
den situation at det skulle blive nødvendigt.
Frame 2 og 3 er begge statiske, så de forbliver som de er når man ændrer på
browserens størrelse. I frame 2 ligger login formen for kunderne af
virksomheden. Når kunderne logger korrekt ind her, fremkommer en ASP-side som
genererer noget html til fremvisning af de informationer som ASP-koden henter
fra databasen. Her kan kunderne så se om informationerne om dem er korrekte og
hvis dette ikke skulle være tilfældet, så kan de selv ændre oplysningerne og
ved hjælp af submit knappen sende de korrigerede informationer retur til
serveren. Udover dette kan kunderne også ændre deres password ved at trykke på
Change password knappen. På den efterfølgende side skal kunden så indtaste det
gamle password for at kunne ændre det på serveren. Da der ikke er konstant
kontakt til serveren, dvs. at der logges på serveren hver gang der benyttes en
submit knap og login knappen bliver der oprettet kontakt til db-serveren
hentet/sendt informationer og så lukket igen. Derfor skal kunderne ikke tænke
på at logge af serveren, de kan bare benytte en af linkene på siden eller
skrive en ny url i browserens navigations felt.
Frame 3 som indeholder menuen er ikke noget specielt. den indeholder noget
grafik som benyttes som links og intet andet.
Det sidste vi mener er nævneværdigt er at vi bruger stylesheets til at styre
baggrunden og skriftens farve. Grunden til dette er at sørge for at have en
meget fleksibel hjemmeside, som kan ændre udseende ved kun at lave ændringer
relativt få steder i koden. Generelt er hjemmesidens opbygningen naturligvis
også meget fleksibel med henblik på ændringer, hvis dette skulle være
ønskværdigt, vores udkast er trods alt kun én mulighed ud af mange.
4.6.1 - ASP
På vores hjemmeside har vi jo valgt ASP, som
her skal dokumenteres. Flg.: sider indeholder ASP:
login.asp
kunde_info.asp
info_change.asp
psw.asp
pswchange.asp
rek_info.asp
Meget at det, der forklares om den første fil gælder også for de næste, der
derfor ikke vil blive forklaret så meget i dybden, hvis tingene er næsten
identiske.
login.asp
Filen bliver kaldt af login.html, der indeholder en form, der sender kundeID og
password med til asp filen i kaldet. Det første, der så bliver checket er, om
der overhovedet er indtastet noget i felterne. Så er der erklæring af variable.
Så erklæres og åbnes databaseforbindelsen. Dette gøres via Windows DSN (Data
Source Name). Derefter erklæres SQL sætningen, der vælger kunden med det rette
ID. Den gemmes i et commandset. Erklæring af et recordset til at indeholde
kundens info. Når så recordsettet åbnes det med den kommando, der indeholder
SQL sætningen og parametre, der i dette tilfælde angiver cursor type* og lock
type**. Hvis det ikke er tomt (der blev fundet en kunde med rigtigt kundeID og
password), åbnes en session, der husker kunden. Desuden vil han blive
viderestillet til en ny side, hvor han kan ændre sine data. Hvis han ikke
eksisterer, bliver han omstillet til en side uden adgang til databasen.
Derefter sættes recordset og commandoset til null og forbindelsen lukkes. Idet
Response.buffer er sat til true, bliver der ikke redirected før end hele
scriptet er kørt, og vi når derfor at lukke forbindelsen o.s.v.
Og oprettelse af session, der beholder kundens ID så længe kunden skal være
logget ind.
Til allersidst er der noget HTML, der stort set bare importerer baggrunden.
* Cursor type:
bestemmer, hvordan records'ne i databasen skal læses. Forwardonly betyder
f.eks. at de læses et ad gangen, og at cursoren kun kan bevæge sig en vej -
fremad.
** Lock type:
bestemmer hvor meget adgang clienten har til databasen. (read, exe, write). Der skal
selvfølgeligt sættes så lidt adgang, som muligt for at opnå mest sikkerhed. Men
der ligger jo også meget sikkerhed i databasen, men det giver mulighed for at
lægge brugerrettighederne i ASP.
kunde_info:
Her kommer kunden ind, hvis han har indtastet det rigtige ID og password. Her
er igen en del HTML kode, hvor kundens info vises i en tabel. Først erklæres
variablene, så læses kundeID fra sessionen, så vi kan kigge i rigtigt i
databasen efter kundeinfo. Så oprettes forbindelse, commandoset og recordset
som i foregående. SQL køres i recordset.open (via cmdDC) og resultatet lægges i
variablene. Det hele nedbrydes igen. Nu kan vi bruge variablene til at vise
kundens informationer i tabellen. Idet informationen samtidig er i en form, kan
vi sende ændringerne videre til den næste side vi vil kalde, hvis kunden
beslutter sig for at ændre noget. Det kan også være, at kunden vil ændre
password. For at give lidt ekstra sikkerhed, har vi valgt at gøre dette i på en
side for sig.
info_change.asp
Kort skitseret sker følgende:
Læsning af kundeID.
Variabler sættes til det, formen (på sidste side) har sendt med.
Dataforbindelse oprettes.
Commandset oprettes.
SQL erklæres (i virkeligheden bare en streng variabel).
commandset sættes til SQL.
Recordset oprettes.
Recordset åbnes(database adgang).
Kunden viderestilles. (Men det sker først til sidst p.g.a. response.buffer =
true).
Forbindelse m.m. lukkes ned igen.
psw.asp
Denne fil indeholder hovedsageligt HTML. I en form i en tabel indtastes gammelt
og nyt password og nyt password igen. ASP gemmer kundeID, så vi hele tiden har
styr på, hvem det er, der taster.
Ved klik på en knap sendes så formen til pswchange.asp siden.
pswchange.asp
Følgende sker:
KundeID hentes.
Dataforbindelse oprettes.
Commandset oprettes og tildeles forbindelse.
SQL erklæres.
Commandset tildeles SQL.
Recordset oprettes og åbnes.
oldpsw variablen sættes.
Kundens password hentes ind i en variabel.
Forbindelse m.m. lukkes igen.
Så checkes om gammelt password er rigtigt indtastet.
Hvis det er rigtigt checkes om nyt password er tastet ens de to gange.
Hvis det er rigtigt sættes ny password variablen.
Forbindelse, commandset og recordset oprettes og sættes med SQL m.m.
Recordset åbnes (SQL køres).
Forbindelsen lukkes ned igen og kunden viderestilles alt efter om han fik
indtastet korrekt eller ej.
rek_info.asp
Den sidste side, vi lige har lavet er så den, hvor kunden rekvirerer yderligere
information (hvad det så skulle være).
Den bliver kaldt, hvis kunden har udfyldt en re_info.HTML side, hvor der er en
form, der videresender kundeoplysninger til ASP siden. Her startes med at putte
informationen ind i nogle variable.
Så viser vi kunden, hvad han har sendt os i noget HTML, hvor vi bruger
variablerne (vi sender det faktisk først efter HTML'en er vist).
Herefter åbnes en forbindelse, hvor vi lægger kundens oplysninger om sig selv
ned i databasen, som en mail fra "WEBMAIL" brugeren. Denne mail skal
jo så sendes til en person, der står for, at sende information til kunder.
Forbindelsen nedbrydes igen, og mere er der ikke i det.
4.7 - Anbefalinger
4.7.1 - Edb-systemets nytte
Der er betragtelige fordele tilknyttet vores produkt. Den væsentligste er
nok at systemets flytbarhed er platformuafhængigt da givne brugere kan benytte
den platform som han/hun er komfortabel med. Den frihed man kan opnå ved hjælp
af applet er en massiv fordel da man kunne på et intranet integrere systemet
uden problemer. Dog vil vi være forbeholdene med at åbne det udaftil da der er
mange sikkerhedsmæssige aspekter der skal overvejes inden dette kan forekomme.
4.7.2 - Ibrugtagningsplan
Dette program er designet til at være let forståeligt, næste at lege sig til
produktløsinger, derfor beregner vi en kort indkøringsfase i bruger
organisationen.
Et kursus til PServ administratoren vil dog være at foretrække da denne person
vil være bære et ansvar for systemets brugbarhed(??lidtmere).
4.7.3 - Realiseringsplan
Udviklingsøkonomi
Da dette er et skoleprojekt kan projektet bære præg af tanker under
udvikling og ikke så meget et business projekt. Pro-filer har
ingen pr-ansatte eller planlagte reklamekampanger. Dog stiler vi mod et
udfærdiget produkt eller ihvert tilfælde en højversion prototype.
Strategi
Selve tekstformateringen af dokumenter til firmastandarder vil, med fordel,
blive håndteret i et eksternt system. Dette vil gøre produktet nemmere at
vedligeholde samt åbne mulighed for at importere nye standarder uden at skulle
ændre i selve PServ. Der er flere mulige løsningsmodeller til dette men XML's
DTD struktur har en lovende fremtid. Desuden har IBM lavet et udemærket
framework til parsing af dette.
Et hård klient til PServ vil måske kunne forbedre det sikkerhedsmæssige aspekt
men dette ville kræve en yderligere analyse af PServ-protokollen samt et
betragtelig arbejde med implementering af tilfredstillende klient.
4.8 - Delkonklusion
Efter at have gennemløbet designdelen må man komme til den generelle
konklusion, at vi har tænkt mere på at kunne videreudvikle, end at få en
prototype, som kan vise noget p.t. For at få noget godt, at videreudvikle på,
har vi sørget for, at få det grundlæggende optimeret og godt virkende
(PKernel). Vi har valgt at bygge grundstrukturen op omkring PKernel både til
serveren og klienten. De deler altså samme 'grundklasse'. Dette giver mange
fordele. Fra start, når vi koder, skal det kun gøres et sted, og i fremtiden
vil det være langt lettere at opdatere og vedligholde, når det kun skal gøres i
Kernelen. Men det bevirker samtidigt, at en server eller klient skal 'slukke'
for nogle services, der ligger i kernelen. Derved kan man sige, at
ulempen er, at der altid vil være nogle overflødeige 'services', som optager
plads. Dette bevirker også, at der skal downloades nogle flere kilobytes til
appletten. Men dette er den eneste umiddelbare ulempe, har vi vurderet, at
disse ekstra kilobytes er for få, til at lave et andet design. Det vi er kommet
frem til, er altså et fremtidssikret og udbygningsnemt design, det kræver dog
en del mere kodning, for at få ordentlig klient funktionalitet.
5 - Implementering
Gruppe5 har, i den seneste tid, holdt en række uformelle interne møder hvor
vi har overvejet struktur samt har skabt os et samlet overblik over det givne
stadie vores produkt har nået. Disse overvejelser har resulteret i af selve
implementeringen overvejende er blevet centreret om en skalerbar Kernel.
Det er både fordele og ulemper ved dette valg af fokus.
Fordele :
- Systemet har større chance for at være en skalerbar sucess.
- Dette valg har fremhævet Multi-tier og derved komponentopdelingen.
- Der foreligger mulighed at skrædersy vores system til en vilkårlig virksomhed.
- Vi har lært en masse socket programmering.
Ulemper :
- HIC'en er ikke
vægtet særligt højt og derfor har en
'uvildig bruger' svært ved at se
systemet som en helhed.
IT-Implementering
Mål : Vores mål var, da vi startede på dette projekt, at få udfærdiget
en 'skal', der var for os funktionsdygtig. Dette kriterie mener vi at have nået
da vi har mulighed at kommunikere, på et for os acceptabelt niveau, med PServ
via. telnet til en database.
Problemopfattelse : Vores opfattelsen af den enkelte virksomhed som
udgangspunkt har ændret sig til en opfattelse af det samlede forretningssystem
fra leverandører, virksomheden og dets partnere og den endelige kunde. Denne
opfattelse taget til eftertanke mente vi at det vigtigste, for vores produkt,
var en så fleksibel udvidelses-specificerings faktor samt denne skulle være så
simpel så mulig.
Middel :
- Gode arbejdsvaner samt en stor kop digital kaffe.
Evaluering : Vi ville gerne have nået at udvikle noget mere
HIC-funktionalitet men dette blev tilsidesat da vi mente det var vigtigere at
holde rapport samt design konsistent. Vi har også provet at undgå
'spagettiekode' i selve kernel for netop at fremtids sikre denne del.
Fremtid : Vi har en ide om at Pro-Filer kunne være grundlag for en
fremtidig virksomhed. For dette kan lade sig gøre er det vigtigt at fastsætte
nogle langsigtede rettningslinjer for fremtidig udvikling. Vi taler her om
Pro-Filer's produktionskoncepter som "Mass Customization", der
muliggør masseproduktion af kundeindividuelle produkter, eller "Agile
Manufacturing" der kan opfattes et som konfigurerbart produktionssystem.
Pro-Filer sætter samtidigt nye standarder for logistiksystemts effektivitet
både med hensyn til omkostninger og tid, og krav om uhørt fleksibilitet over
for kundekrav med hensyn til varianter og nye produkter.
En ny strategi og koncept for produktion i
netværk.
Vores fremtidige projekt har et anvendelsesorienteret sigte, og derfor tænkes
projektet gennemført med udgangspunkt i et samarbejde med 2-4
industrivirksomheder over ca.3-4 mandeår. Alternativt kunne projektet etableres
som et tæt samarbejde med en enkelt virksomhed og som kandidat hertil ville det
jo være passende at iværksætte en kommunikation til vores oprindelige
opdragsgivere Simens Danmark.
Rettelser til analyse: n..m omkostning
6 - Konklusion
Hvad er vi så kommet frem til efter disse seks
ugers projekt forløb? Er projektet alt det vi har forventet? Har vores produkt,
efter vores egen mening, en god anvendelsesmulighed ved projektudvikling og
dokumentstyring i større såvel som mindre virksomheder?
De sidste 2 spørgsmål må vi svare ja til. Ikke kun er vores mål blevet mere
opnåelige på en mere langsigtet plan, men vi er også blevet mere sikre på, at
vores visioner har mulighed for at blive udlevet.
Hvis vi lige skal tænke på projektudviklingsarbejdet, har vi atter engang måtte
'bide i det sure æble' og indse at papirarbejdet er en meget stor og vigtig del
af system udvikling af simple såvel som meget inviklede systemer. Det er
nødvendigt, fordi der er mange forskellige mennesker, der arbejder på den samme
helhed. Men det er især vigtigt, fordi udviklingsarbejde af denne art,
indeholder mange detaljer, som man skal bruge gennem hele forløbet og det
kræver, at man skal skrive det ned i en så forståelig form, at andre personer
som bliver sat til at arbejde med dette, hurtigt og nemt kan få overblikket
over det. Derud over kan de større projekter nemt strække sig over flere år og
uden nogen form for dokumentation ville det være umuligt at gennemføre.
Tidsplanlægning er, som vi også måtte erfare på 2. semester, en af de vigtigste
holdepunkter ved projektarbejde. Som navnet selv siger planlægges alle faser i
et projekt, så godt som det nu kan være muligt, efter som det er kvalificerede
gæt. Grunden til at vi kalder det kvalificerede gæt, er simpelthen at man på
ingen måde kan vide hvor lang tid de forskellige faser vil vare. Der vil altid
komme opgaver hen af vejen som vil foresage forsinkelser. En ting man skal tage
i betragtning er dog, at jo mere erfaring man har med projektarbejde, det bedre
vil man normalt være til at skønne fasernes længde.
Alt taget i betragtning, inklusive det at vi færdedes i et ungt miljø med en
uformel omgangstone, mener vi, at det har det været et meget vellykket projekt,
selvom vi har nedprioriteret programmeringsdelen.
|