| Internetteknik |
| för |
| minidatorapplikationer |
| av |
| Anders Bergman |
| Bergman@bigfoot.com |
| Kent Zetterberg |
| na94kzg@student.hgs.se |
| Abstract |
|---|
| Sverige är ett av de länder i världen där de stora industriföretagen tidigt satsade |
| på IT. Det gör att det numera finns ett stort antal produktionsinriktade applikationer |
| utvecklade för äldre plattformar. Klienterna för dessa system kostar mycket att |
| underhålla. Det är därför en intressant frågeställning om det på ett enkelt sätt går |
| att utveckla webbgränssnitt för dessa system. Kan detta dessutom uppnås utan större |
| modifieringar i befintlig logik finns det stora möjligheter att sänka kostnaderna. |
| Denna undersökning studerar ett representativt fall och visar att det krävs mycket |
| arbete för att kunna använda webblösningar i äldre minidatorapplikationer. |
| Nyckelord: Internetteknik, intranät, plattformsoberoende, minidatorapplikation, |
| produktionssysatem |
Innehållsförteckning
1. Förord
*2. Introduktion
*2.1. Läsanvisningar
*2.2. Motiv för ämnesval
*2.3. Problem
*2.4. Syfte
*3. Teoretisk bakgrund
*3.1. IT & industri
*3.2. Internet
*3.3. WWW
*3.4. Intranät
*3.5. HTML
*3.6. Skiktade applikationer
*3.7. Nuläge
*3.8. Problemavgränsning
*4. Metod
*4.1. Vetenskap och forskning
*4.2. Val av metod
*4.3. Metodbeskrivning
*4.4. Källkritik
*5. Genomförande
*5.1. Utvärdering av webbteknik
*5.2. Utvärdering av webbservrar
*5.3. Fallstudie av applikation
*6. Resultat
*7. Diskussion
*7.1. Metoden
*7.2. Resultatet
*8. Slutsatser
*8.1. Slutsats
*8.2. Förslag till fortsatt forskning
*9. Referenser
*9.1. Tryckt litteratur
*9.2. Nätreferenser
*9.3. Intervjuer
*10. Appendix
*10.1. ROS
*10.2. Common Gateway Interface (CGI)
*10.3. OSU-Servern
*10.4. Ordlista
*10.5. Funktioner som används i avgränsningen
*10.6. rx_tillvpgm_record
*
Många produktionssystem på Sveriges större industrier är utvecklade för minidatorer. Användarna är uppkopplade mot dessa applikationer via terminaler eller persondatorer med terminalemulatorer. Underhålls-, support- och driftkostnaderna för dessa klienter är ofta en stor post för företagen. Ett enhetligt, plattformsoberoende, grafiskt gränssnitt skulle minska de kostnaderna betydligt.
Att undersöka om det till en rimlig kostnad är möjligt att utveckla webbgränssnitt som utnyttjar logiken hos befintliga minidatorapplikationer.
Under senare tid har begreppet informationsteknologi kommit att bli en av de mest diskuterade framtidsfrågorna, från att tidigare ha varit ett för allmänheten relativt okänt begrepp. Att uppmärksamheten kring IT har blivit så omfattande beror främst på att många har insett att vi står inför en stor samhällsförändring, kanske lika omfattande som utvecklingen från jordbrukarsamhället till industrisamhället i slutet av 1800-talet.
I början av seklet kan det tyckas att landet befann sig i en liknande situation. En teknisk uppfinning, elektriciteten, innebar att det behövdes färre människor för att producera industriella produkter. Tänk då tanken att vi hade bestämt oss för att avstå från en elektrifiering av industrin, eftersom antalet sysselsättningstillfällen var viktigare. Om ett sådant beslut tagits hade med stor sannolikhet industrin i Sverige konkurrerats ut idag.
Internet startade 1969 som ett projekt inom ARPA (Advanced Research Projects Agency) mellan fyra universitet och forskningscentra. Avsikten med nätet, ARPANET, var bland annat att koppla samman datorer från olika leverantörer. Viktigt var också att kommunikationen skulle kunna fungera även om någon av datorerna eller nätverksförbindelserna var ur funktion. Detta löstes genom att dela upp data i paket som kunde gå olika vägar i nätet för att sedan åter sättas samman vid målet.
1983 delades ARPANET upp i två delar, ett miltärt nät (MILNET) och ett forskningsnät som behöll namnet ARPANET. ARPANET har sedan spritts sig från forsknings och universitetsvärlden till företag och privatpersoner och utvecklats till Internet.
Idag består Internet av ett stort antal sammankopplade WAN (Wide Area Network) se figur 1.

Figur 1. Internet
Det som skiljer Internet från andra stora datornät är att alla de anslutna datorerna kommunicerar enligt den leverantörsoberoende standarderna TCP/IP (Transport Control Protocol/Internet Protocol).
Internet är viktigt för att det är en leverantörsoberoende de facto standard som fungerar idag. Internets stora spridning gör också att det utvecklas billiga och bra program, så att det inte är nödvändigt att vara tekniker för att kunna använda nätet. Att Internet har kommit att bli så centralt i det framväxande IT-samhället beror främst på dess stora utbredning och många användare. Detta gör att det finns tillgång till stora mängder av information, samtidigt som det inom Internet utvecklas tjänster och program för att använda sig av nätet och ta del av informationen.
WWW (World Wide Web) är en relativt ung företeelse på Internet. 1989 insåg CERN (Conseil Europeen pour la Recherche Nucleaire) att de komplexa projekt som drevs, med många forskare från flera olika länder inblandade, behövde ny teknik för planering och uppföljning.
Tekniken som används på WWW, eller webben, bygger på att ett dokument kan länkas till flera andra dokument. Från början utnyttjades endast möjligheten att distribuera textdokument. I december 1991 visades den första prototypen upp på en konferens i USA och webbläsaren var född.
Utvecklingen fortskred och ett drygt år senare presenterade NCSA (National Center for Supercomputing Applications, USA’s superdatorcentrum vid Universitetet i Illinois) Mosaic, ett grafiskt gränssnitt med möjlighet att bland annat visa IMAGES. En av upphovsmännen, Marc Andreessen, lämnade ett år senare NCSA för att bilda ett eget bolag, Netscape Communications Corporation, vars affärsidé var att utveckla webbtekniken, både på klient och serversidan.
Numera underhålls och utvecklas de olika standarderna som ingår i WWW av W3C (the World Wide Web Consortium), ett konsortium bestående av 165 företag, organisationer och akademiska institutioner från hela världen.
Netscape Navigator är idag den vanligaste webbläsaren (klienten) på marknaden, med Microsoft Internet Explorer som god tvåa. Netscape och Microsoft är bittra konkurrenter såväl på klientsidan som bland servrarna och tar fram egna tillägg till standarderna med förhoppningen att W3C skall acceptera dem.
Ett nät inom ett företag, institution eller liknande som bygger på Internetteknik, (TCP/IP, FTP (File Transport Protocol), SMTP (Simple Mail Transfer Protocol), HTTP (HyperText Transfer Protocol) osv.). Syftet är att förbättra och underlätta den egna verksamheten. Tjänsterna i ett intranät riktar sig alltså inte i första hand utåt till kunder, utan inåt, till medarbetarna. Tjänsterna kan vara enkla. Elektronisk post, ett gemensamt kundregister, formulär för interna beställningar, bokningar och annan administration är några exempel. Än så länge är inte fullfjädrade system för drift och övervakning och andra avancerade applikationer så vanliga.
Det nya ligger inte främst i själva funktionerna, som till stor del är desamma som de alltid har varit. Det som gör intranät så intressant är webbtekniken som används för att bygga upp plattformsoberoende tjänster.
Några fördelar med webbapplikationer är:
Enkelhet
Gränssnittet är i grunden enkelt och intuitivt, även för personal med mindre vana vid datorer. WWW:s stora genomslagskraft på Internet bygger just på att det är så enkelt och att nya användare snabbt kommer igång utan dyr utbildning. Samma fördelar gäller förstås även internt inom ett företag. Dessutom är det en fördel att kunna integrera både externa och interna informationstjänster i samma applikation.
Öppenhet
WWW kan användas med alla moderna datorer. Olika plattformar som VMS, Windows, Windows 95, Windows NT, Macintosh och Unix-system kan samexistera på ett smidigt sätt. Till och med gamla textterminaler kan användas om så behövs. Detta innebär att om gränssnittet på äldre minidatorapplikationer utvecklas med webbteknik så kan de, och andra nyare webbapplikationer, nås från en persondator med en webbläsare som enda mjukvara.
Både klient- och serverprogramvara finns från ett stort antal leverantörer. Produkterna baseras på öppna Internetstandarder. Även den tillgängliga kompetensen inom WWW växer snabbt, vilket ökar valfriheten.
Mobilitet
Systemet kan utformas så att det kan användas av medarbetare utifrån via Internet likväl som internt. Det betyder att medarbetare på resa kan komma åt företagets informationssystem var de än befinner sig, genom att bara ha tillgång till en Internetansluten dator.
Låg kostnad
Det finns idag ett antal potenta webbläsare som distribueras gratis eller till låg kostnad. Det pågår en intensiv utveckling av nya och bättre webbläsare. Även på serversidan pågår utveckling och det finns ett antal olika alternativ till högst rimlig kostnad.
Många har idag problem med att administrera sina nätverk och applikationer från olika tillverkare. Det är ofta ett tungt arbete att lösa inkompatibiliteter, att konfigurera och göra täta uppgraderingar av ett stort antal arbetsplatser och programvaror. Med ett gemensamt gränssnitt till företagets alla externa och interna informationstjänster, så kan arbetet förenklas betydligt och därmed kan också de löpande kostnaderna sänkas.
Tillförlitlighet
Internet har flera tiotal miljoner användare. De populäraste webbtjänsterna hanterar dagligen tiotals miljoner transaktioner.
(HyperText Markup Language) är det dokumentformat som används på webben för att strukturera textinformation. Detta för att ge möjligheter att koppla ihop information via länkar och därmed framställa hypertext. Alla dokument på WWW är skrivna i HTML och hyperlänkar, IMAGES, multimediadokument och formulär har även de HTML som grund.
Ett HTML-dokument kan skapas i en texteditor och dokumentet sparas som .html eller .htm. Tanken bakom HTML är att det skall vara plattformsoberoende under förutsättning att det finns en webbläsare för operativsystemet. HTML-koden strukturerar det som skall visas i dokumentet med hjälp av olika element. Elementen kan till exempel användas när en lista skall genereras eller för att göra en hyperlänk. Ett HTML-dokument avkodas och visas i en webbläsare.
Från början var HTML-sidorna på Internet statiska. Det som visades kunde inte uppdateras automatiskt utan det krävdes att innehållet ändrades i textfilen som dokumentet skapats utifrån.
Det finns sedan några år möjlighet att generera dynamiska HTML-dokument. Dokumentet uppdateras när klienten begär det genom att en applikation anropas. Applikationen, som genererar HTML-kod, exekveras av webbservern och sedan skickas HTML-koden till klienten. Det är också möjligt att skicka med argument till applikationen. Argumenten kan användas för att göra urvalsfrågor i en databas med t.ex. SQL (Structured Query Language).
En förutsättning för många områden inom datavetenskapen, där delar av system skall kunna återanvändas, är att lagerprincipen anammats enligt figur 2.

Figur 2. Lagerprincipen
Applikationen delas på detta sätt upp i olika skikt eller lager. I en korrekt skiktad applikation utnyttjar skikt N endast skikt N - 1. På sätt kan en programmerare som skriver delar av en applikation på lager N + 1, utnyttja lager N utan att behöva sätta sej in i lager N - 1 och därunder. En förutsättning för att detta skall fungera är att underliggande lager inte utnyttjar lager på högre nivå. I praktiken kan det se ut enligt figur 3.

Figur 3. Skiktad applikation
I en applikation som ser ut på detta sätt kan ett nytt användargränssnitt utvecklas utan att den övriga applikationen behöver skrivas om. Andra områden där samma princip utnyttjas är inom datakommunikation (OSI-modellen) och vid utveckling av operativsystem.
Inom industrin idag är många applikationer plattformsberoende och det är svårt att direkt anpassa dem till den nya tekniken. Det är därför intressant att utreda möjligheterna att använda informationsteknologin tillsammans med befintliga applikationer.
På större industriföretag finns det idag ett antal olika plattformar som alla har olika terminalfamiljer knutna till sig. Valet av terminal är idag beroende av i vilken miljö applikationen körs. Se exempel figur 4.

Figur 4. Plattformsberoende
Eftersom olika plattformar och applikationer jobbar mot olika terminalfamiljer finns det ingen möjlighet att från en specifik terminal nå plattformar eller applikationer utvecklade för andra terminalfamiljer. Alternativet som används flitigt idag är terminalemulatorer. De ger användare möjlighet att koppla upp sig mot flera applikationer på olika plattformar från en och samma persondator. Detta sätt är logiskt likvärdigt med rena terminaluppkopplingar då minidatorapplikationerna inte ser någon skillnad dem emellan.
Utredningen avser minidatorapplikationer av större modell, alltså system med mycket och avancerad logik och många användare. Det kommer inte att läggas någon större vikt på säkerhet, prestanda eller utseende på gränssnittet. Det förutsätts att om undersökningen visar att det är möjligt att utveckla webbgränssnitt för applikationerna ifråga så kan även de tekniska detaljerna kring detta lösas på ett tillfredsställande sätt. Fokus kommer att läggas på vilken omfattning utvecklingen av ett plattformsoberoende gränssnitt skulle få. Med omfattning menas i detta sammanhang den arbetsinsats, de resurser som krävs för att göra befintliga applikationer av denna typ tillgängliga via webbgränssnitt.
En fallstudie på utvecklingen av webbgränssnitt för ett befintligt produktionssystem. Produktionssystemet har varit i drift under flera år på ett av Sveriges absolut största industriföretag. Systemet utvecklades från början av Enator. Det kan därför anses som representativt för liknande applikationer i minidatormiljö. Eftersom de applikationer som avses att studeras är mycket stora kommer endast en mindre del av applikationen att utvärderas.
Patel & Davidsson (1994) menar att fallstudie innebär att en undersökning utförs på en mindre avgränsad grupp. Ett "fall" kan vara en individ, en grupp individer, en situation eller en organisation. Fallstudier utgår från ett helhetsperspektiv och så heltäckande information som möjligt eftersträvas. Fallstudier kommer ofta till användning när processer och förändringar skall studeras. Generaliserbarheten hos de resultat som erhålls vid en fallstudie beror på hur fallen valts.
Ett webbgränssnitt för en del av produktionssystemet kommer att utvecklas. Under utvecklingens gång kommer arbetsinsatser och svårigheter att studeras för att de sedan skall kunna bidra till att klargöra de frågor som ställts.
Den litteratur som används består av böcker, tidningsartiklar, information från företag samt information hämtad från Internet. Vi har själva gjort valet av litteratur, därav följer att valet har påverkats av egna åsikter, erfarenheter och värderingar. Den litteratur som är hämtad från Internet har varit av forskningskaraktär, publicerad av företag och välrenommerade tidskrifter eller av mer personlig karaktär. Information publicerad av företag om deras egna produkter måste beaktas med en stor försiktighet eftersom kritik mot produkten sällan presenteras. Allt detta har det tagits stor hänsyn till innan det presenterats.
För att fallstudien skall kunna genomföras krävs det att lämplig teknik väljs som arbetsredskap. Detta kapitel behandlar till att börja med utvärderingen av webbteknik och webbservrar, sedan vidtar fallstudien.
För att skapa en applikation som utnyttjar webbteknik finns två möjliga tillvägagångssätt. Antingen utvecklas program som skapar dynamiska HTML-sidor (inkl. tillägg) eller så utvecklas helt fristående program (Java, ActiveX).
Det finns olika standarder av HTML, beroende på vilka som väljs kommer sidornas utseende variera på grund av att webbläsarna inte konsekvent följer de standarder som finns. För att öka funktionaliteten hos HTML kan JavaScript, Java Applets eller VBScript läggas till.
Alla lösningar som inte medför plattformsoberoende har direkt valts bort, därför har aldrig ActiveX eller VBScript varit aktuella.
De alternativa lösningarna som behandlats kan sammanfattas på följande sätt:
Utnyttjar CGI -standarden för generering av dynamiska HTML sidor (se bilaga 9.2 CGI). Detta är det konventionella sättet att skapa webbapplikationer.
Fördelar:
Nackdelar:
Följande programmeringsspråk är aktuella för utveckling av CGI-program.
Språk som Fortran (the IBM FORmula TRANslating System), COBOL (Common Business Oriented Language) och DCL (Digital Command Language) faller bort på grund av att de är svåra att utnyttja för CGI -programmering och att de är omoderna.
Perl
Enligt Wall, Christiansen & Schwartz (1996) är Perl designat för att göra det enkla enkelt utan att för den skull göra det svåra omöjligt. Det är ett interpreterande språk som har sina rötter i C, Bourne Shell, awk. Det har moderna programspråksideér som objektorientering och plattformsoberoende. Språket lämpar sig särskilt bra för att hantera textfiler. Det finns ett antal hjälpbibliotek för att utnyttja Perl till CGI-programmering tillgängliga vilket gör att det är lätt att komma igång och utveckla CGI-program i Perl.
Fördelar
Nackdelar
C
Enligt Kernighan & Ritchie (1989) är C ett generellt programspråk som kännetecknas av ett kompakt uttryckssätt, moderna kontroll- och datastrukturer och ett rikt förråd av operatorer. De menar också att C varken är ett extremt högnivåspråk eller ett stort språk, och att det inte är avsett att användas inom något specifikt tillämpningsområde. Frånvaron av begränsningar och dess generalitet gör det mer bekvämt och effektivt i många fall än andra, egentligen mer kraftfulla språk.
Fördelar
Nackdelar
C++
C++ är ett generellt objektorienterat programmeringsspråk utvecklat med C som grund. Avsikten var att göra programmering mer behagligt för seriösa programmerare.
Fördelar
Nackdelar
Java är ett enkelt språk som utvecklats utifrån C och C++. Det är objektorienterat från grunden och anses vara enkelt att programmera i. Användargränssnittet på klientsidan skrivs som ett komplett Javaprogram. På servern skrivs en serverapplikation i C eller C++ som utnyttjar befintlig logik. Klientprogramvaran laddas ner från servern varje gång det startas vilket kan medföra viss väntetid men eventuella framtida uppdateringar på plats undviks (se figur 5). Kommunikation mellan klient och server sköts via sockets. Denna lösning är den mest avancerade men också den mest flexibla.

Figur 5. Java
Fördelar
Nackdelar
Kräver en webbserver som stödjer den databas som används av applikationen i fråga. Detta kan uppnås genom att lägga webbservern på annan plattform och skapa databasåtkomst via ODBC. All befintlig logik måste skrivas om och implementeras på den nya plattformen, denna lösning är inte aktuell då kostnaden för detta skulle bli mycket stor eftersom de befintliga applikationer som diskuteras är omfattande.
Valet av CGI som teknik för fallstudien baseras på det förhållandevis enkla förhållningssätt som CGI har till affärslogik skriven i C och liknande språk som förekommer på industrin, samt att gränssnittet mot användaren inte har någon högre prioritet i detta fall.
Utvärderingen börjar med en undersökning av vilka webbservrar som finns på marknaden för VAX/VMS genom granskning av litteratur och sökning på Internet. Litteratur om dem beställs eller tas hem från Internet hem och granskas. Servrarna jämförs för att en server slutligen skall framstå som den som är mest lämplig ur fallstudiens synpunkt.
I den miljö som de flesta applikationer av äldre märke opererar i dag är inte funktioner som för dagen är inne eller självklar konfigurering av största betydelse, viktigare är bra prestanda och hög tillförlitlighet.
Det finns idag följande webbservrar för VAX/VMS:
Den ursprungliga webbservern. Utvecklades från början för Unix och utnyttjar fork systemanrop för att hantera flera samtidiga klienter. Har definierat den standard som övriga servrar jämförs med. Det finns oerhört mycket information och exempel tillgängligt för framförallt Unix-versionen av servern på nätet. CERN har stoppat utvecklingen av servern och därför kommer den inte att användas.
Är utvecklad av Mark G. Daniel på High Frequency Radar Division (HFRD) of the Australian Defense Science and Technology Organisation. Servern är framtagen för att täcka HFRD:s behov av en webbserver under VMS. Det är en gratisprodukt som distribueras under GNU General Public License.
Fördelar:
Nackdelar:
Dokumentationen som följer med programpaketet för servern innehåller utmärkt dokumentation i såväl HTML som postscript format. Den omfattar bland annat en teknisk översikt av servern, möjligheterna till CGI och pedagogiska installationsanvisningar.
Det är okänt om det förekommer någon egentlig utveckling av servern för tillfället, det finns under alla omständigheter ingen information tillgänglig om det på Internet.
Skriven av David L. Jones vid Region 6 på Ohio-State University, USA. OSU-servern är med stor sannolikhet den webbserver som har störst spridning och är installerad på flest VMS system världen över. Det finns mycket information, bland annat en aktiv sändlista, om servern på Internet.
Fördelar:
Nackdelar:
Att servern exekverar CGI-programmen som DECNet objekt innebär att programmen inte behöver laddas in i sin helhet vid varje CGI-anrop. Detta ger en mycket högre grad av skalbarhet jämfört med servrar som startar CGI-programmen på konventionellt sätt. En annan fördel med att använda DECNet är att servern kan exekvera programmen på flera olika datorer (så kallat kluster) för att öka prestanda.
Goda kunskaper i VMS systemadministration är något av ett krav för att installera OSU-servern. Främsta anledningen är att dokumentationen på denna punkt är mycket bristfällig men framförallt svår att hitta.
SSL (Secure Socket Layer) finns tillgängligt för OSU-servern i en betaversion och kommer förhoppningsvis att vara implementerat i nästa utgåva.
En kommersiell server utvecklad av Process Software Corporation. Största fördelen är att den stödjer säker kommunikation via SSL kryptering. På grund av att det är en kommersiell server är den inte aktuell.
OSU-servern är en mycket intressant produkt som gott och väl uppfyller de krav som ställs för att produktionssätta en webbapplikation på en industri.
OSU-serverns unika prestanda, kontinuerliga utveckling och möjligheterna till support gör att vi ser den som det självklara valet för att implementera ett nytt webbgränsnitt.
I det här kapitlet utvärderas en befintlig applikation på Sandvik Steel för att se om det går att använda befintlig logik i det nya gränssnittet. För att en förståelse för hela systemet skall fås börjar studien med en genomgång av applikationen. Sedan kommer det att undersökas om den befintliga logiken kan användas vid utvecklingen av det nya gränssnittet. Till sist kommer en del av applikationen att avgränsas för utveckling av ett nytt, litet gränssnitt med hjälp av webbteknik.
På Sandvik Steel AB finns en minidatorapplikation, ROS (Råvaru Optimerings System se bilaga 9.1). ROS började utvecklas i slutet av 1980-talet och togs i drift 1992. Det är inte så länge sedan men synen på och verktygen för systemutveckling har förändrats mycket sedan dess. Applikationen har tre huvudarbetsområden. Den började utvecklas som ett optimeringssystem för att stödja produktionen vid stålverket. Under årens lopp har det utvecklats till att även hantera lagret vid stålverket. Dessutom har funktioner för produktionsstyrning utvecklats. Dessa tre användningsområden täcker väl in de sätt på vilken svensk industri utnyttjar minidatorapplikationer idag. Ytterligare en anledning till att ROS kan ses som representativ är att systemet ursprungligen utvecklades av Enator. ROS kan följaktligen ses som ett mycket bra exempel på industriell minidatorapplikation.
Affärslogiken
När det ursprungliga optimeringssystemet utvecklades hade inte teorierna om skiktade applikationer fått fotfäste på denna sida av Atlanten. Av den anledningen skrevs affärslogiken så att den hanterade kommunikationen med både gränssnittet och databasen (se figur 6). Detta innebär att för att utveckla de äldre delarna till en applikation med ett plattformsoberoende gränssnitt måste affärslogiken skrivas om så att den endast hanterar databasen.

Figur 6. Oskiktad applikation
De delar av ROS som utvecklats från 1993 och framåt har skiktats på ett korrekt sätt, se figur 7. För dessa delar kan det gå att utveckla ett nytt gränssnitt med webbteknik till rimlig kostnad. Fallstudien begränsas i och med detta till att omfatta ett område i ROS som på ett bra sätt representerar de nyare delarna av applikationen.

Figur 7. Korrekt skiktad applikation
Dokumentationen av gränsytorna är för hela applikationen i stort sett obefintlig. Detta betyder att ett intensivt detektivarbete måste till om befintlig logik skall återanvändas.
För att fallstudien skall gå att genomföra på ett representativt sätt ställs först vissa krav och önskemål på det område som skall implementeras.
Krav
Önskemål
Området inringas
Det faller sig naturligt att utgå från huvudmenyn i ROS efter att användaren loggat in.
Ett område som uppfyller kravet på en väl definierad gränsyta mellan affärslogiken och användargränssnittet är Stränggjutningen. Att just Stränggjutningen passar kan förklaras med att det är en av de senast utvecklade arbetsplatserna i ROS.
Funktioner under Stränggjutningen
Eftersom dokumentationen av systemet är i det närmaste obefintlig krävdes det att samtliga IMAGES under Stränggjutningen betraktades med avseende på vilka funktioner de anropar. För att kunna ta fram alla C-funktioner som används av IMAGESna under Stränggjutningen krävs en viss förståelse för skärmhanteraren DECforms arbetssätt. När DECforms anropas utförs alltid vissa funktioner i ett formulär. Sedan utförs de övriga funktionerna när de anropas via funktionstangenter. En funktion kan vara att visa nästa bild, att rulla i den bild som visas eller att låta markören växla mellan olika fält. Genom att studera de formulär som tillhör varje bild först med avseende på de obligatoriska funktionerna och sedan de funktioner som aktiveras av funktionstangenter kan de C-funktioner som används i affärslogiken plockas ut. Det visade sig att de är ungefär 125 stycken och det inses lätt att det är för stort för att hinna med att implementera under tiden för examensarbetet.
Begränsning av antalet IMAGES
Efter en överläggning med handledaren begränsades storleken på området till tre IMAGES under Meny Stränggjutning. De har ett inbördes beroende som passar väl in på de önskemål som ställdes i den inledande fasen av avgränsningen.
IMAGESna i det begränsade avsnittet visar statiska och dynamiska data av olika typer. IMAGESna är:
De olika sätt som finns för att gå mellan IMAGESna visas nedan i figur 8.

Figur 8. Bildrelationer
Funktioner under IMAGES
Nästa steg var att ta fram de funktioner som anropas vid val med funktionstangenter. Det visade sig att även de var många, närmare bestämt 50 stycken. Alla de går inte att implementera inom gränserna för examensarbetet.
Funktionell begränsning av IMAGES
Efter samråd inom gruppen bestämdes att det nya gränssnittet skulle göra det möjligt att visa de IMAGES som valts och att växla mellan dem på samma sätt som det är möjligt att göra idag. De funktioner, 12 stycken, som används för att kunna växla mellan IMAGESna med hjälp av funktionstangenter sorterades ut och dokumenterades. Funktionsprototyperna finns i bilaga 9.5.
Funktionernas lämplighet
Bestämdes genom att prototyperna i inkluderingsfilerna studerades med avseende på vilka argument funktionen tar och vad den returnerar. Vad funktionen utför internt är oviktigt i sammanhanget enligt resonemanget om skiktade applikationer i kapitlet Teoretisk bakgrund. Funktionerna är sådana att de hämtar eller skriver data i databasen och därför kan deras lämplighet anses vara god.
Datastrukturer
Datastrukturerna hittas genom att undersöka vad som skickas med som argument till C-funktionerna i affärslogiken från användargränssnittet. Namnen på argumenten finns sedan definierade i början på varje formulär. I definitionen syns det vilket namn datastrukturen har och utifrån det går det att hitta strukturerna i databasen. rx_common_struct är den struktur som, bland annat, innehåller data om användaren och den används under alla IMAGES, de övriga funktionerna är bildspecifika.
Bildgenereringen i det nya gränssnittet kommer att använda vissa fält i de strukturer som hittats och därför måste de fälten letas på. I varje DECforms formulär finns ett avsnitt där bilden genereras och utifrån detta avsnitt kan fälten plockas fram. Varje fält har sin egen SQL-datatyp och för att använda dem i CGI-funktioner måste SQL-datatyperna översättas till C-datatyper. En datatyp, date, som används som argument stödjs inte av C, men det går att kompilera funktionerna ändå. En typisk datastruktur finns i bilaga 9.6.
Avgränsningen resulterade i följande:
Utvecklingen av det nya gränssnittet grundas på resultatet av ovanstående undersökningar. Plattformsoberoendet, som är en av de största fördelarna med ett HTML-gränssnitt, kommer att visa sig på ett bra sätt genom att användare på hela intranätet kommer att kunna använda den nya applikationen, förutsatt att de har rätt behörighet.
Utvecklingen inleds med utveckling av en gränsyta bestående av funktioner som kan användas vid programmering av det nya gränssnittet. Gränsytan skall bl.a. kunna generera tabeller och formulär i HTML-kod. En webbserver installeras under VAX/VMS. Nya funktioner utvecklas för att hantera behörighet. När funktionsbiblioteket och de nya funktioner är framtagna skrivs det nya gränssnittet med hjälp av dessa. IMAGESna utvecklas parallellt, med inloggningsbild och menyer i första steget och sedan dynamiska IMAGES.
Utvecklingsmiljö
Bibliotekstruktur

Figur 9. Biblioteksstruktur
Huvudbiblioteket ligger direkt under roten på en av utvecklings-VAX:ens hårddiskar. Biblioteksstrukturen visas i figur 9.
Biblioteken under XJ_ROS användes för utveckling av program. I varje bibliotek finns en så kallad Makefile, ett script som används för att automatisera kompilering och länkning. I Makefile finns information om vilken fil som skall kompileras, och vilka objektsfiler den filen måste länkas ihop med för att få tillgång till funktioner i andra moduler.
Alla bibliotek i XJ_ROS innehåller funktioner som tillsammans bildar ett API mot applikationen i ROS.
Nedan redovisas vad som ligger i XJ_ROS underbibliotek, se även bilden ovan.
AUTH
Funktioner för behörighetskontroll till VAX/VMS och till IMAGESna i ROS.
CGI
Egna CGI:n som hanterar cookies och kommunikation med en länkad lista som finns i TOOLS.
CGILIB
Ett funktionsbibliotek som följde med servern, innehållande grundläggande funktioner för att initiera CGI och hantera omgivningsvariabler.
COMMON
Gemensamma inkluderingsfiler och definitioner. Funktioner för att initiera JavaScript, initiera frames, ta bort mellanslag i strängar, hantera gemensamma knappar för IMAGESna i ROS, och felhantering vid kontakt med databasen.
TOOLS
Verktyg som används vid hantering av textsträngar och filer. En dynamisk länkad lista.
HTML
Funktioner som genererar HTML-kod. Används vid sidgenerering i applikationen.
PICT
Består av sju bibliotek, ett för varje sida som genereras i applikationen.
Eftersom att IMAGESna är uppbyggda av tre frames finns tre underbibliotek, Head, Data och Links, som innehåller funktioner för att generera data till var sin frame.
Login och Logoutbilden är inte uppbyggda av frames så de har inga underbibliotek.
Editorer
Vid utvecklingen användes en portad version av Unix texteditor EMACS version 19.28 för Windows. Den kördes via FTP mot VAX:en.
Kompilatorer
Det finns två kompilatorer att använda i operativsystemet VMS på test-VAX:en, VAX C och DEC C. Vi använde VAX C version 3.0 för att den, till skillnad från DEC C, stöder datatyper speciella för ROS applikationen och för att den använts vid utvecklingen av ROS.
Länkare
Som länkare användes VMS Linker Utility.
Webbteknik, utan Java, gör sig bäst för att överskådligt presentera data och inte för att göra avancerade dialoger. Anledningarna till det är flera, framförallt beror det på att inte går att styra syntaxen för inmatningsfälten i HTML. Sådan kontroll kan göras först när användaren tryckt RETURN, antingen via JavaScript eller på servern.
IMAGESna som valdes visade sig vara lämpliga ur utvecklingssynpunkt. Utseendet motsvarade de förväntningarna som ställdes i början av projektet. Även de tekniska förutsättningarna var bra eftersom några större ändringar i befintlig kod inte behövde göras.
Affärslogiken i de delar av applikationen som utvecklades först anropar såväl databasen som användargränssnittet. Det betyder att de delarna måste skrivas om så att de uppfyller de krav som ställs på en korrekt skiktad applikation. Det är med andra ord inte möjligt att utveckla ett webbgränssnitt för applikationer, där affärslogiken innehåller användargränssnittet och databaskopplingen, utan att modifiera befintlig logik.
Man kan bortse från ovanstående problem och titta på de delar av applikationen där gränsytan mellan affärslogik och användargränssnitt är korrekt skiktad. Dokumentationen av gränsytan mot logiken är i dessa delar i stort sett obefintlig. Det betyder att all kod måste gås igenom och dokumenteras den innan ett nytt gränssnitt kan utvecklas.
Det är ofta svårt att generalisera resultaten från en fallstudie. Källorna för intervjuer är sällan opartiska och det finns inga kriterier för hur genomförandet skall gå till utan forskaren väljer själv tillvägagångssätt. Detta måste vägas in när en bedömning görs av en fallstudies validitet och reliabilitet.
Fallstudien förväntas ge svar på frågan om det till en rimlig kostnad är möjligt att utveckla ett webbgränssnitt för en befintlig minidatorapplikation. Studien har till stora delar behandlat de arbetsinsatser och resurser som kommer att krävas. Dessa två kommer i slutändan att bli kostnader för den som bestämmer sig för att utveckla ett nytt system. Därför kan validiteten i fallstudien anses vara god.
Det är svårt att uppskatta den tid och de resurser ett systemutvecklingsprojekt kommer att ta i anspråk. Om fallstudien utförts av någon med större erfarenhet skulle undersökningen kanske ha kommit till ett annat resultat.
Denna rapports största brister ligger troligtvis i att endast ett system har undersöks. Det kan spekuleras i hur generell den utvärderade applikationen är. Om detta system är ensamt om att visa upp de brister som konstaterats kan slutsatsen dras att resultatet inte är representativt för målgruppen.
Eftersom objektet för fallstudien anses vara ett representativt system kan det förutsättas att även andra system har bristfällig eller obefintlig dokumentation. Detta betyder att arbetsinsatsen som krävs för att först dokumentera ett system och sedan utveckla ett nytt gränssnitt skulle bli stor.
Oavsett om logiken i en applikation är korrekt skiktad eller inte kommer övergången till webbgränssnitt för en minidatorapplikation av den här kalibern att bli mycket kostsam.
För att det till en rimlig kostnad skall vara möjligt utveckla webbgränssnitt till befintliga minidatorapplikationer måste applikationen vara korrekt skiktad och gränsytan mot logiken väldokumenterad.
Att ytterligare fallstudier görs för att bekräfta de uppgifter som kommit fram i denna rapport.
Aho, Alfred V., Sethi, Ravi, Ullman, Jeffrey D., Compilers Principles, Techniques and Tools, Addison-Wesley, ISBN 0-201-10194-7, 1986
Aho, Alfred V., Ullman, Jeffrey D., Foundations of Computer Science, Computer Science Presss, ISBN 0-7167-8233-2, 1992
Andersson, C., Ewald, L., Holmgren, K., Handboken i tele och datakommunikation, Studentlitteratur, ISBN 91-44-35171-2, 1993
Bilting, Ulf, Skansholm, Jan, Vägen till C, Studentlitteratur, ISBN 91-44-26732-0, 1990
Bokförlaget Bra Böcker, Nationalencyklopedin, Bokförlaget Bra Böcker, ISBN 91-7024-619-X, 1996
Boutel, Thomas, CGI Programming in C & PERL, Addison-Wesley Developers Press, ISBN 0-201-42219-0, 1996
Jamsa, Kris, Cope, Ken, Internetprogrammering, Pagina, ISBN 91-636-0360-8, 1995
Kerninghan, Brian W., Ritchie, Dennis M., The C Programing Language, Second Edition, Computer Press, ISBN 91-9070296-45, 1989
Sebesta, Robert W., Concepts of Programming Language, Third Edition, Addison-Wesley, ISBN 0-8053-7133-8, 1996
Silberschatz, Abraham, Galvinv, Peter B., Operating Systems Concepts, Fourth Edition, Addison-Wesley, ISBN 0-201-59292-4, 1994
Stroustrup, Bjarne, The C++ Programming Language, Second Edititon, Addison-Wesley, ISBN 0-201-53992-6, 1993
Tanenbaum, Andrew S., Computer Networks, Third Edition, Prentice-Hall International Inc., ISBN 0-13-394248-1, 1996
Tourell, Jerker, IT & DATA 1997, Liber, ISBN 91-47-03008-9, 1997
Wall, Larry, Christiansen Tom, Schwartz, Randal L., Programming Perl, Second Edition, O'Reilly & Associates, ISBN 1-5659-149-6, 1996
Wiedersheim-Paul, Finn & Eriksson, Lars Torsten, Att utreda och rapportera, Liber, ISBN 91-40-30919-3, 1989
CGI Developer's Guide, http://www.mcp.com/sams/books/0878/httoc.htm
Holmström, Erland, Att dokumentera ett projekt eller ett examensarbete, http://www.cs.chalmers.se/ComputingScience/Education/Courses/xjobb/Doc/Att_dok_proj.mall.fm_1.html
Microsoft, Microsoft Advanced Data Connector 1.0 FAQ, ftp://ftp.microsoft.com/Softlib/MSLFILES/Adc10faq.exe
NCSA, A Beginner’s Guide to HTML, http://www.ncsa.uiuc.edu/General/Internet/WWW/htmlprimer.html
NCSA, The Common Gateway Interface, http://www.ncsa.uiuc.edu/cgi/primer.html
Netscape, Frames: An Introduction, http://home.netscape.com/assist/net_sites/frames.html
Selamoglu, Handan, Microsoft Corporation, based on a presentation by Kevin Drew Davis, Blue Marble Authoring for Multiple Platforms, http://premium.microsoft.com/msdn/library/techart/f30/f33/d3d/sb58d.htm
Skolverket, Lexin Swedish-English dictionary, http://sunsite69.kth.se/skolverket/swe-eng.html
Svenska datatermgruppen, Svenska datatermgruppens rekommendationer, http://www.nada.kth.se/dataterm/ordreg.html
TechWeb, Technology Encyclopedia, http://www.techweb.com/encyclopedia/
Webreference, Framing the Web, http://www.webreference.com/dev/frames/
NCSA, A beginners guide to HTML, http://www.ncsa.uic.edu/General/Internet/WWW/HTMLPrimerAll.html
Eich, Brendan, Mckinny, C. Rand, JavaScript Language Specifikation, 1996 ftp://ftp.netscape.com/pub/review/jsspec.ps.gz
Gosling, James, McGilton, Henry, The Java Language Environment, ftp://ftp.sunet.se/pub/lang/java/javasoft/docs/WhitePaper.pdf.gz, 1995
Microsoft, What is ActiveX?, http://www.microsoft.com/activex/actx-gen/awhatis.asp, 1996
Hedin, Ingemar, Sandvik Steel AB, datachef Steel, Tel: 026-260000
Jansson, Maria, Sandvik Steel AB, driftansvarig ROS, Tel: 026-263426
Paulin, Bertil, Sandvik Steel AB, VMS-ansvarig , Tel: 026-263885
Ryhäänen, Esa, Sandvik Coromant AB, OSU-servern, Tel: 026-266444
Voght, Tommy, Spinell Datadesign AB, ROS, VAX/VMS, SQL, dokumentation, Tel: 026-261997
Wedin, Bertil, Sandvik Steel AB, handledare, ROS, VAX/VMS, SQL, säkerhet, Tel: 026-264124
Wiklander, K-G, Sandvik Information Systems AB, nätverk, operativsystemet VMS, databaser, Tel: 026-260000
ROS (Råvaru Optimerings System) är ett administrativt informationssystem som har utvecklats för att stödja verksamheten vid Sandviks stålverk. Användningen av ROS skall leda till att arbetet vid stålverket underlättas och att produktionen blir mer kostnadseffektiv. Dess huvudsakliga uppgift är att utföra produktionsberäkningar. Gränssnittet är textbaserat och interaktionen med applikationen sker via terminaler eller terminalemulatorer. ROS används av operatörer i produktion och av kontorspersonal. Systemet körs på operativsystemet VAX/VMS och samarbetar med en rad andra system.
Idag finns cirka 100 användare kopplade till ROS. Av dessa är 8 stycken anslutna via arbetsstationer, cirka 50 stycken via terminalanslutningar och resten är anslutna via emulatorer från persondatorer. De som arbetar både med ROS och andra applikationer måste, enligt diskussionen ovan, ha tillgång till flera terminaler eller emulatorer för att kunna arbeta i de olika applikationerna.
Dataflödet i ROS börjar med att en order från stordatorn läggs in i ROS automatiskt. Ordern läggs direkt i tillverkningsprogrammet. Chargerna i tillverkningsprogrammet går sedan igenom en beredning som görs manuellt av kontorspersonal på stålverket. Beredning innebär att ett recept sätts ihop med hjälp av data i historikdatabasen och lagersituationen för hur chargen skall förberedas innan den sätts i produktion. När beredningen är gjord tas chargen i produktion enligt tillverkningsprogrammet. Vid produktionen arbetar operatörer löpande vid de olika arbetsplatserna i ROS. Provtagningar utförs och analyseras och ämnen tillsätts i chargen vid behov. Dessutom skrivs produktionsdata om chargen för att dessa sedan skall kunna lagras i historikdatabasen. När ett slutanalysprov tagits godkänts avslutas produktionen och chargen läggs till långtidslagringen för att sedan levereras till kund. Det sista som händer i ROS är att personal på kontoret vid stålverket skickar produktionsdata till historikdatabasen. Historikdatabasen används främst vi beredning, råvaruprognoser, lagerhållning och forskning. Förloppet visas i figur 10.

Figur 10 Dataflödet i ROS
Eftersom ROS är ett system som utvecklas löpande, och utvecklingstekniken som används också förändras, finns det skillnader i uppbyggnaden mellan olika delar av applikationen. I de tidigaste delarna av ROS är inte gränsytan mellan affärslogiken och DECforms entydig, utan de båda skikten anropar varandra. I de delar av ROS som är utvecklade på senare år har gränsytorna mellan skikten kommit att bli bättre genom ett modernare synsätt på programmering, och därför lämpar sig någon av de delarna bättre för implementation.
Den delen av ROS som valts för implementation, Stränggjutningen, är skiktad i tre lager och gränsytorna mellan DECforms, affärslogiken och databasen är väl avgränsad, dvs affärslogiken anropar inte i något fall funktioner i DECforms. Se figur 11.
De tre skikten är:

Figur 11 Skikt i nyare delar av ROS
DECforms är en skärmhanterare för ickegrafiska, teckenbaserade terminaler som VT100 och VT200.
Affärslogiken, som är skrivet i programmeringsspråket C, används för att utföra tillverkningsberäkningar för produktionen samt för att hantera kommunikation med databasen via SQL-anrop. Den fungerar som ett gränssnitt mellan DECforms och databasen. Koden, har kompilerats med en VAX C kompilator under VAX/VMS.
Lagret med affärslogik anropas från DECforms och består av en mängd funktioner skrivna i programmeringsspråket C. Funktionerna i sin tur använder embedded SQL för att kommunicera med databasen.
Det finns en generell funktion som anropas varje gång en ny bild begärs. Funktionen kontrollerar om användaren får titta på bilden, och vad användaren har behörighet att göra i bilden. Den spar också information om föregående bild med avseende på bildnummer och rättigheter. Information om behörighet och IMAGES lagras i en för alla funktioner gemensam post som i övrigt även har information om aktuell charge och dess grundläggande data.
Varje bild anropar en eller flera funktioner då bilden skall visas. Funktionerna har som uppgift att hämta data i databasen och lägga den i poster som används av DECforms för att skriva ut data på skärmen. I de flesta fall returnerar funktionerna koder i form av heltal som tolkas av den felhantering som finns.
VAX Rdb/VMS och är ett generellt databashanteringssystem baserat på relationsdatabasmodellen.

Figur 12 Systemöversikt
CGI är den standard som definierar hur man kopplar HTML-dokument till databaser eller andra program. Ett enkelt HTML dokument som webbservern tar emot är statiskt, dvs att det är ett dokument som inte förändras med tiden, t.ex. en vanlig textfil. Ett CGI-program å andra sidan körs i realtid och kan därmed producera dynamisk information. Se figur 13.

Figur 13 CGI
Ett exempel på hur ett CGI kan användas:
Säg att Du vill koppla upp en databas till WWW, så att människor från hela världen kan koppla upp sig och leta information i den. Då behövs ett CGI-program som tar emot och kan behandla de frågor som ställs och sedan ge tillbaka resultaten till den som ställde frågan.
Ett CGI-program kan skrivas i vilket programmeringsspråk som helst, förutsatt att det kan köras på det operativsystem man sitter på. Exempel på programmeringsspråk:
Om man använder ett programmeringsspråk som C eller Fortran, så måste programmet kompileras innan det används. Om man istället använder ett scriptspråk som PERL eller TCL så räcker det att själva scriptet ligger i katalogen /cgi-bin/. Många föredrar att skriva CGI-program i något scriptspråk eftersom det är lättare att felsöka, förändra och underhålla ett sådant.
Varje gång en klient gör en förfrågan med en webbadress som pekar på ett CGI-program så exekverar servern det i realtid. Resultatet från CGI-programmet kommer att gå mer eller mindre direkt till klienten. Det är inte möjligt att skicka med argument via command line till ett CGI. Istället använder CGI:et något som kallas omgivningsvariabler för att skicka parametrar till ett program. De två viktigaste variablerna som används för att göra detta är:
Definieras som det som följer efter det första frågetecknet (?) i webbadressen.
Den informationen kan läggas till antingen med ett ISINDEX dokument eller med HTML-formulär (GET funktionen).
Exempel på sökning efter CGI-program med Yahoo sökmotor, obs. frågetecknet:
http://search.yahoo.com/search?o=1&S=1&p=CGI-program
CGI tillåter att extra information skickas med i webbadressen. Det mest användbara exemplet på PATH_INFO är när man skickar med sökvägen till en fil som ett CGI-program skall använda.
För att hänvisa till ett CGI genom HTML används ACTION-attributet i <FORM> elementet. Sökvägen till programmet anges som:
<FORM ACTION = "/cgi-bin/script.cgi">
Det finns två sätt att skicka information från ett formulär, det ena är POST metoden och det andra är GET metoden.
Är den vanligaste metoden och innebär att datan skickas separat in till scriptet och plockas upp och behandlas så som det anges i scriptet.
Ex.
<FORM METHOD = POST ACTION = "/cgi-bin/script.cgi">
Lägger data som skickas sist i webbadressen, och det innebär t ex att man kan anropa olika script beroende på vilka data som skickas med.
Ex.
<FORM METHOD =GET ACTION = "/cgi-bin/script.cgi">
CGI-program kan returnera en mängd olika typer av dokument. De kan t.ex. skicka IMAGES, HTML, text eller en ljudfil. De kan också returnera referenser till andra dokument. Klienten småste veta vilken information som skall tas emot för att kunna presentera den på rätt sätt. För att klienten skall kunna göra det måste CGI-programmet ge servern information om vilken typ av dokument som returneras, och detta görs i något som kallas "header". En header ligger först i dokumentet som CGI:et producerar och kan se ut som följer:
Content-type: text/html
<HTML><HEAD>
<TITLE>Resultatet av CGI-programmet</TITLE>
</HEAD><BODY>
<H1>Testar CGI</H1>
</BODY></HTML>
Content-type: text/html
Location: http://WWW.hgs.se/index.html
<HTML><HEAD>
<TITLE>Vi har flyttat</TITLE>
</HEAD><BODY>
<H1>Prova istället:</H1>
<A HREF = "http://WWW.hgs.se/index.html">HGS</A>
</BODY></HTML>
Att identifiera användaren via anrop av CGI är i vårt, och många andra fall, nödvändigt. Detta för att olika användare har tillgång till olika data och för att data skall kunna genereras på olika sätt för att passa användarens önskemål. Att identifiera en användare är inte alltid lätt och inte heller exakt. Medan det finns omgivningsvariabler som har information om användarens identitet, finns det också gränser för hur pålitlig den informationen är. Det är till exempel, i vissa fall, möjligt för en användare att uppträda som någon annan.
Omgivningsvariabler
Eftersom dessa variabler inte är pålitliga vid en exakt identitetskontroll bör de inte användas där det finns höga krav på säkerhet. De kan dock med fördel användas vid enklare kontroller. Ett exempel: Om man vill stänga ute vissa användare som missbrukat CGI:et kan man sätta upp en lista med förbjudna IP-adresser som gås igenom varje gång en förfrågan görs för att förhindra vidare missbruk. Man bör dock tänka på att stora bolag kan ha en proxyserver för ett stort antal användare som i det fallet kommer att sitta på samma IP-adress och det betyder att alla dessa skulle stängas ute om den IP-adressen hamnade på listan med förbjudna användare.
Idag stöder de flesta webbläsare minst ett sätt att verifiera användarens identitet. HTTP/1.0 protokollets standard tillhandahåller en enkel funktion som tillåter läsaren att skicka med användarnamn och lösenord som en del av den begäran som görs. Nackdelen med denna typ av behörighetskontroll är att både användarnamn och lösenord skickas okodat över nätverket och de kan med ganska enkla medel fångas upp av ett program som läser paket (eavesdropping) på nätverket.
Övriga säkerhetsaspekter
I de fall information skickas till ett CGI bör metoden POST (se ovan) användas för att förhindra att informationen visas som webbadress i webbläsaren.
Litteratur: http://WWW.ncsa.uiuc.edu/cgi/primer.html, http://WWW.mcp.com/sams/books/087-8/httoc.htm,
Thomas Boutel -96
Webbservern som används är baserad på DECthreads och skriven av David L. Jones, systemprogrammerare på Region 6 vid Ohio-State University. Den bemämns oftast för OSU- eller DECthreads-servern.
Att den använder sig av trådar gör att den skalar bättre än konventionella forkbaserade servrar som CERN.
För att kunna bygga, installera och köra OSU-servern krävs följande.
Detta förutsätter en Internetanslutning samt den kunskap som nedladdning kräver:
Källkoden för hela servern finns på adressen:
http://kcgl23.eng.ohio-state.edu/soft/http_server_2-2a.zipEn uppdatering måste hämtas från:
http://www.er6.eng.ohio-state.edu/www/preview/preproc_mst.zipOm uppackningsverktyget UNZIP behövs kan det hämtas från:
ftp://gatekeeper.dec.com/pub/VMS/unzip-vax.exeLämpligen skapas ett bibliotek från början, där det är tänkt att servern skall köras ifrån:
$ CREATE/DIRECTORY ENHET:[SERVERBIB]
Ändra sedan aktuellt bibliotek till det som skapats för servern:
$ SET DEFAULT ENHET:[SERVERDIR]
En logisk symbol måste skapas till UNZIP.EXE:
$ UNZIP :== $ENHET:[ARKIVBIB.ZIPBIB]UNZIP-VAX.EXE)
Packa sedan upp programpaketet:
$ UNZIP ENHET:[ARKIVBIB.SERVERBIB]http_server_2-2a.zip
Ändra aktuellt bibliotek till [.BASECODE]:
$ SET DEFAULT [.BASECODE]
Packa upp uppdateringen:
$ UNZIP ENHET:[ARKIVBIB.SERVERBIB]preproc_mst.zip
Följ anvisningarna i textfilen AAAREADME.TXT som ligger under roten i det bibliotek där servern packades upp:
$ TYPE/PAGE AAAREADME.TXT
Ta först reda på vilken TCP/IP -stack som är installerad på datorn, den vanligaste är UCX.
Skriv sedan i tur och ordning (förutsatt att TCP/IP -stacken är UCX):
$ SET DEFAULT [.BASE_CODE]
$ MMS/MACRO=TCP=UCXTCP
$ SET DEFAULT [-.SCRIPT_CODE]
$ MMS/MACRO=TCP=UCXTCP
$ SET DEFAULT [-.FORK_CODE]
$ MMS
Kontrollera så att allt gick väl genom att skriva:
$ SET DEFAULT [-]
$ @[.SYSTEM]HTTP_SERVER.COM RUN SYS$OUTPUT/3 HTTP_MAIN.CONF 8000
och anslut med en webbläsare genom att ange webbadressen http://vaxhostname:8000.
Affärslogik
Programkod som innehåller funktioner för att utföra administrativa uppgifter som att ställa frågor mot databaser.
ALPHA
En 64-bitars processorfamilj från Digital. De första modellen introducerades 1992. Idag är Alphan världens kraftfullaste processor.
ANSI
(American National Standards Institute)
USA:s standardiseringsorgan.
ANSI C
Åren efter det att "The C Programming Language" publicerats började programvarutillverkarna släppa egna versioner av sina kompilatorer med tillägg som avvek från K&R C. För att råda bot på det påbörjade ANSI 1983 arbetet med att ta fram en konsekvent och plattformsoberoende version av C utifrån Kernighan & Ritchies ursprungliga version. Resultatet presenterades 1989, ett språk med bättre typkontroll, funktionsprototyper och klart definierat standardbibliotek.
ARPA
(Advanced Research Projects Agency)
Avdelning inom USA:s försvarsdepartment som sysslar med avancerad forskning.
Awk
Efter upphovsmännen: Al Aho, Peter Weinberger och Brian Kernighan. Är ett interpreterande språk för bearbetning av textfiler.
Bandbredd
Ett centralt begrepp inom datakommunikation är bandbredd som anger överföringskapaciteten hos en datakanal. Bandbredd definieras som det frekvensintervall som kan utnyttjas för överföring och är direkt proportionell mot överföringshastigheten.
Byggande av applikation
När man "bygger" en applikation utgår man från källkod, kompilerar den och länkar sedan till exekvera bara filer. Se figur 14.

Figur 14 Byggande av applikation
Källkodsfilerna har ändelser som .c eller .cpp och när de kompileras får man en objektfil som oftast har ändelsen .obj. En eller flera objektfiler länkas sedan ihop och ger en exekverbar .exe fil som köras på maskinen.
C
Programmeringsspråket C utvecklades av Dennis Ritchie i början av 70 -talet när det fanns behov av nytt programmeringsspråk för Unix. Språket implementerades på en Digital DEC PDP-11 och C-kompilatorn, stora delar av operativsystemet samt i stort sett alla applikationer skrevs i C.
C++
En vidareutveckling av C med dataabstraktion, bättre typkontroll och stöd för objektorientering.
CGI
En typ av mellanprogram som används för att åstadkomma interaktivitet i webbsidor på Internet. Ett exempel kan vara sökningar i en databas. CGI kan skrivas i de flesta programmerings- och scriptspråk. CGI standarden definieras i "The WWW Common Gateway Interface Version 1.1".
CERN
(Conseil Europeen pour la Recherche Nucleaire)
Det europeiska laboratoriet för partikelfysik.
COBOL
COBOL (COmmon Business Oriented Language, ungefär generellt affärsorienterat programspråk) är förmodligen det programspråk som har flest rader programkod på sitt samvete genom åren. Det härstammar från slutet 50-talet och är ett utpräglat administrativt rapport och språk.
Charge
Benämning på den sammanställning av metaller som efter behandling i stålverket blir till stål.
Cookie
Data som kan lagras under bestämd tid på en webbläsare (Se RFC-2109).
Datakommunikation
För att två (eller flera) datorer skall kunna byta information sinsemellan krävs att de är hopkopplade via ett fysiskt medium, en transmissionsdel. Se figur 15.

Figur 15 Datakommunikation
DCL
(Digital Command Language)
VMS kommandotolk och scriptspråk.
DEC C
Kompilator i VMS som är följer ANSI C standarden. Förutom de generella fördelarna med ANSI C, genererar DEC C -kompilatorn något effektivare kod än VAX C -kompilatorn.
De facto standard
Man talar om de facto standard när ett allmänt känt och vedertaget begrepp inte blivit godkänt av ett standardiseringsorgan.
DECforms
DECforms är en skärmhanterare för icke grafiska, teckenbaserade terminaler som VT100 och VT200.
DECforms är en fristående produkt som inte är beroende av någon databasprodukt eller datakatalog.
Det är uppbyggt av formulär, IMAGES, som hanterar gränssnittet mot användaren och utnyttjandet av de applikationsprogram som hanterar data. Se figur 16. Formuläret ger användaren möjlighet att titta på och modifiera data via applikationsprogrammet, att gå mellan olika fält i en bild och att växla mellan olika IMAGES. Vissa funktioner i ett formulär utförs alltid, andra utförs när de begärs av användaren via funktionstangenter.
Anropen av DECforms från ett programmeringsspråk sker via sex stycken subrutinanrop. Med hjälp av parametrar i anropet får formulärhanteraren reda på var instruktionerna för användargränssnittet finns lagrade.
Ett anrop av en funktion/bild från ett formulär görs via funktionstangenter eller med en knappkombination. Anropet kontrollerar behörighet att utföra eller läsa begärd funktion/bild, hämtar data från databasen och utför eller visar till sist funktionen/bilden.
Kommunikationen mellan operatören och gränssnittet sker idag enbart via tangentbordet med funktionstangenter och teckeninmatning. Läsning och skrivning i databaser eller filer sker via 3GL (Third Generation Language).
Figur 16 DECforms
DIGITAL
En stor datortillverkare. Grundades 1957 och var pionjärer inom minidatorindustrin med sin PDP-serie.
Exekverbar
En fil innehållande maskinkod som kan köras i en viss miljö.
Fork
Betyder att man gör en kopia av en process och kör den.
FORTRAN
FORTAN (The IBM Mathematical FORmula TRANsalting System, ungefär IBM's översättningspråk för matematiska formler) utvecklades i början av 50-talet när stöd för flyttalsoperationer för första gången började dyka i hårdvaran. FORTRAN sägs ibland vara det första kompilerande högnivåspråket.
Funktionstangent
Tangent på tangentbordet som kan definieras av användaren vid tangentbordet eller av ett program så att den får olika betydelse i olika sammanhang.
Gränssnitt
Ett gränssnitt brukar beskrivas som kopplingen mellan hårdvara, mjukvara och människan.
Hårdvarans (elektronikens) gränssnitt är kontakter, kablar de elektriska pulser som färdas genom dem i ett visst mönster. Man kan också nämna den elektriska timingen som finns i form av nätverkskopplingar som Ethernet och Tokenring.
Mjukvarans (programmens) gränssnitt är programmeringsspråken och de koder och meddelanden programmen använder för att kommunicera med varandra och med hårdvaran.
Användarens gränssnitt är tangentbordet, bildskärmen, musen och de menyer som programmen tillhandahåller för kommunikationen mellan dig och datorn.
Alla gränssnitt står för en funktion. På hårdvarusidan aktiverar elektriska signaler funktioner som läser, skriver, överför data etc. På mjukvarusidan aktiverar programinstruktioner hårdvaran. På den mänskliga sidan aktiveras funktioner i program.
HTML
(HyperText Markup Language)
Det dokumentformat som används generellt på WWW för att strukturera textinformation. Detta för att ge möjligheter att koppla ihop information via länkar och därmed framställa hypertext.
HTTP
(HyperText Transport Protocol)
HTTP definieras i RFC-2068 och är det kommunikationsprotokoll som används för att koppla samman servrar på WWW. Dess huvudsakliga funktion är att upprätta en förbindelse med en server och sedan sända HTML-sidor till användarens webbläsare.
Hyperlänk
En länk i ett HTML dokument. Den kännetecknas ofta av att texten anges i en annan färg och/eller är understruken. En länk kan också finnas i form av IMAGES eller knappar. Genom att klicka på länken kan man hoppa till en annan sida i dokumentet eller till ett annat dokument på nätet.
Hypertext
Ett begrepp för presentation av information där framförallt text och IMAGES länkas samman på ett sätt som gör det möjligt för användaren att bläddra igenom dem utan att vara bunden av något formellt system. Kännetecknande för hypertext är att informationen inte är linjärt lagrad, i någon form av ordningsföljd, utan snarare baseras på användarens sätt att tillgodogöra sig information, dvs. med referenser och kopplingar i form av tankeled.
ISP
(Internet Service Provider)
En organisation eller ett företag som tillhandahåller åtkomst till Internet. En liten ISP organisation ger service via modem och ISDN. De större erbjuder oftast uppkoppling via privata ledningar. Mot betalning kan en webbsida byggas och upprätthållas på en ISP-server vilket gör det möjligt för ett litet företag eller en användare att ha en egen sida på WWW.
Java
Ett plattformsoberoende programmeringsspråk som utvecklats av SUN. Java utvecklades med C++ som modell och kan anropas från HTML dokument eller startas fristående. Java är ett interpreterande språk som kompilerar källkoden till "bytekod" som inte kan köras som den är. Den måste göras om till maskinkod i realtid för att kunna användas. När ett Javaprogram hittas byter webbläsaren till sin egen Java översättare.(Java Virtual Machine) och översätter bytekoden till maskinkod och kör den. Detta betyder att oberoende av hårdvara och kan användas på vilken maskin som helst som är utrustad med Java Virtual Machine.
JavaScript
Ett scriptspråk från Netscape som är något lättare att använda, men inte lika kraftfullt som Java. Ett JavaScript använder en HTML sida som användargränssnitt, medan Java kan tillhandahålla ett komplett gränssnitt på samma sätt som C och C++.
K&R
Den första allmänt tillgängliga versionen av C kallas Kernighan and Ritchie (eller K&R) C efter författarna till boken "The C Programming Language" som Brian W. Kernighan och Dennis M. Ritchie gav ut 1978. Under drygt tio år var det den enda specifikationen på språket som fanns. Kännetecknande för K&R C är svag typkontroll och att funktionsprototyper ännu ej implementerats.
Klient/server
Klient/server arkitekturen bygger på att en server (ofta en relativt kraftfull dator) hanterar en eller flera klienter (kan vara en persondator) med mer eller mindre intelligens. Se figur 17. Motsatsen är de gamla stor- och minidatorapplikationerna som nåddes via dumma terminaler utan egen logik. Ett exempel på klient/server applikation är WWW där servern och klienten ritar upp IMAGES och text.

Figur 17 Klient/Server
Kompilator
Generar objektkod från en källkodkodsfil.
Kretskopplade nät
I ett kretskopplat nät skapas en fysisk förbindelese mellan två enheter vid varje uppkoppling. Kanalen existerar under hela uppkopplingen och har en fixt garanterad bandbredd. Ett exempel är det vanliga telefonnätet som, när man ringer, med hjälp av telefonväxlar skapar en dubbelriktad förbindelse. Nackdelar med kretskopplade nät är lång uppkopplingstid och att bandbredden sällan utnyttjas till fullo. Det finns en rad standarder, rekommendationer, för kretskopplade nät publicerade av CCITT (Comité Consultatif International Télégraphique et Téléphonique, det internationella organet för telefoni och telekommunikation).
LAN
(Local Area Network, lokalt nät)
Ett omdiskuterat och svårdefinierat begrepp. Oftast begränsas ett LAN till en byggnad, eller några varandra nära placerade byggnader där man har kopplat samman tex. skrivare och persondatorer och arbetsstationer. Ett lokalt nät har, i förhållande till globala nät, hög överföringshastighet, kort svarstid och hög tillförlitlighet.

Figur 18 LAN
Länkare
Skapar maskinkod från en eller flera objektfiler.
Metod
Ordet metod kommer av grekiskan, "meth ods", vilket betyder läran om hur man behandlar frågor.
Minidator
Betecknar en dator som fungerar som en vanlig arbetsstation eller som ett fleranvändarsystem med hundratalet användare.
Operativsystem
Det är det första programmet som laddas när datorn slås på och dess huvuddelar ligger hela tiden resident i minnet. Det tillhandahåller funktioner för att kunna köra andra program på datorn.
PDP
(Programmed Data Processor)
En minidatorfamilj från Digital.
Plattformsberoende
Hänvisar till en programvara som är utvecklad för att köras på bara en dator eller datorfamilj utvecklad med samma teknik. Plattformsberoende mjukvara kompileras till ett visst maskinspråk.
Plattformsoberoende
Hänvisar till en programvara som är utvecklad för att köras på ett flertal datorer eller datorfamiljer. Plattformsoberoende mjukvara kompileras till en generell kod och översättare till hårdvaruberoende maskinkod görs med andra program.
RFC
(Request For Comment)
Dokument som behandlar de standarder och förslag till standarder som förekommer på Internet.
ROS
ROS (Råvaru Optimerings System) är ett administrativt informationssystem som har utvecklats för att stödja verksamheten vid Sandviks stålverk. Användningen av ROS skall leda till att arbetet vid stålverket underlättas och att produktionen blir mer kostnadseffektiv. Dess huvudsakliga uppgift är att utföra produktionsberäkningar. Systemet körs i VAX/VMS och samarbetar med en rad andra system.
Idag finns cirka 100 användare kopplade till ROS. Av dessa är 8 stycken anslutna via arbetsstationer, cirka 50 stycken via terminalanslutningar och resten är anslutna via emulatorer i persondatorer.
Scriptspråk
Ett högnivåspråk som översätts i realtid istället för att kompileras i ett tidigare skede. Ett scriptspråk är inte något generellt programspråk, men det kan ändå vara väl utvecklat, och det används oftast för att utöka en befintlig applikation eller ett program.
Skalbarhet
Expansionsmöjligheten hos mjukvara eller hårdvara. Bra skalbarhet betyder att maskinen eller programmet kan hantera ett ökande antal transaktioner utan att dess prestanda påverkas i någon stor utsträckning.
SQL
(Structured Query Language)
Ett frågespråk som används för att kommunicera med databaser. SQL-kommandon kan användas för att kommunicera interaktivt med en databas eller så kan de läggas in i ett program som fungerar som ett gränssnitt till databasen. Efter att ursprungligen ha utvecklats av IBM har det numera blivit standard i många databasprogram.
Struct
Benämningen på en post i C.
SSL
(Secure Socket Layer)
Tillhandahåller säker kommunikation via HTTP.
Stordator
Beteckning på en stor dator till skillnad mot en minidator eller persondator. stordatorer har hög kapacitet och hanteras vanligen via ett flertal terminaler, ofta flera tusen.
TCP/IP
(RFC-1739). En benämning på en hel protokollstack med mängder av protokoll och de facto standarder. Består av ett förbindelsefritt nätskikt, med namnet IP (Internet Protocol) och ett transportskikt med bland annat TCP (Transmission Control Protocol). En mängd protokoll finns för tillämpningsskiktet, tex. FTP (File Transportation Protocol, för filövering), SMTP (Simple Mail Transportation Protocol, e-mail) och HTTP. Växte fram ur NET och presenterades första 1982.
Terminal
En terminal är en arbetsplats som består av endast ett tangentbord och en bildskärm. Terminalen är kopplad till en stordator eller minidator och dess enda uppgift är att fungera som ett gränssnitt mot användaren. Terminalen är "dum" och utför inga beräkningar. Det finns inte heller något minne i terminalen, utan de applikationsprogram som användaren arbetar med finns i datorn som terminalen är kopplad mot.
Terminalemulering
Det finns fall då en persondator eller annan intelligent arbetsstation kan låtsas vara terminal och då pratar man om terminalemulering. Logiskt finns ingen skillnad mellan en vanlig dum terminal och en terminalemulator. Den enda praktiska skillnaden är att samma persondator kan emulera flera olika terminaltyper och naturligtvis även användas till andra pc-specifika uppgifter.
Threads
(Trådar, kallas även lättviktsprocesser). Att starta nya processer och växla mellan dem är relativt resurskrävande under de flesta operativsystem. Därför har nya mekanismer tagits fram för att underlätta för operativsystemet. Trådarna inom en process delar flera vitala delar som därför inte behöver skapas eller bytas ut när en ny tråd skall exekveras.
Unix
Ett fleranvändar, multiprocessing, operativsystem som urspungligen utvecklades av AT&T. Unix är skrivet i C. Eftersom C blev tillgängligt på många olika plattformar har Unix-program skrivits om till fler maskinfamiljer än något annat operativsystem. På det sättet blev Unix känt som ett öppet system. Trots att andra operativsystem också skrivits i C har inget av dem översatts i samma utsträckning som Unix.
VAX C
Den ursprungliga kompilatorn i VMS. VAX C kompilatorn är en K&R kompilator vilket ger större friheter för programkonstruktörer, bl.a. kan vissa VMS specifika konstruktioner användas.
WAN
(Wide Area Network)
Nätverk som sträcker sig över ett större område än ett LAN, tex. ett land, en kontinent eller flera kontinenter. Ett WAN kopplar samman flera olika LAN via gateways. Prestandamässigt har det lägre överföringshastiget och längre svarstider än ett LAN.

Figur 19 WAN
(Virtual Address eXtension)
En beteckning på 32-bitars datorer från Digital som introducerades 1977. VAX familjen sträcker sig från persondatorer till stordatorer som alla använder samma operativsystem, VMS. Dess mjukvarukompabilitet mellan olika modeller gav VAX familjen stor framgång på 1980 talet.
Ett fleranvändar, multiprocessing operativsystem som körs på valfri VAX-arbetsstation i VAX-familjen.
Terminaler för VAX-familjen. Se terminal.
En webbserver är ett program som används för att växla information via HTTP. Webbserven får förfrågningar från en klient vilket medför att servern utför operationer och skickar ett svar tillbaka. Ordet "webbserver" härstammar från att programmet fungerar som en värd på WWW, en delmängd av ett annat nätverk, tex. Internet. Ofta används förkortningen HTTPD för webbservrar. Detta härstammar från Unix-världen där servrar körs som demoner, fristående processer som operativsystemet automatiskt startar.
Ett program som används för att söka dokument på webbservrar i ett intranät- eller Internet och formatera dessa till för visning på skärmen. De kan även arbeta med hyperlänkar och hämta information från andra ställen på nätet. Exempel på webbläsare är Netscape, Explorer och Mosaic.
(World Wide Web)
Det världsomspännande nät som kopplar samman datorer via HTTP.
Gemensamt
char *rx_message_call(int *(void())
RG010
int rx_tvpgm_gjut_get (out_tvpgm)
RG020
int rx_arbbild_charge_get(int in_chargeid, int in_chargenr, short in_arbplatsid, CHARGE_RECORD *charge)
int rx_gjut_sikttemp(chargeid, chargenr, stalkod, analyskod)
void rx_charge_handelser_init(out_handelselista)
int rx_charge_handelser_get(int in_chargeid, int in_chargenr, short in_arbplatsid, CHARGE_RECORD *charge)
int rx_arbbild_plananm_get(int in_chargeid, short in_arbplatsid, PLANERAR_ANM *plananm)
RG050
int rx_charge_hamta_charge(charge)
int rg_charge_get_lastning_klar(int chargenr, int chargeid, char *klar)
int rg_sammanst_get(int chargenr, int chargeid, sammanst_str *sam_amne, totaler_str *tot )
int rg_sammanst_lagra_charge_sk(int chargenr, int chargeid, sammanst_storkod_str *chsk)
int rg_sammanst_lagra_charge_anm(int chargenr, int chargeid, char *anm)
Element i posten rx_tillvgm_record
charge
chargenr
chargeid
stalkod
analyskod
stalsort
svissid
skank_lb
skank_aod
skank_sk
skank_hf
tillv_vag
stoppdatum
program_datum
start_hf
start_last
start_lb
start_aod
start_skank
start_gjut
start_utlast
startdatum_hf
startdatum_lb
startdatum_aod
startdatum_skank
startdatum_gjut
startdatum_utlast
stopp_hf
stopp_last
stopp_lb
stopp_aod
stopp_skank
stopp_gjut
stopp_utlast
dim1
dim2
dim3
stripkod1
stripkod2
stripkod3
lastalt1
lastalt2
lastalt3
status
gk_status
tb_status
best_status
anmarkning
plkort
prov90
skarvgjut_ordning
arbplatsid
tillv_curr
flytande_vikt
prima_vikt
utbokad
utboknings_datum
godk_sign
godk_datum
stoppare_id
stoppare_namn
argonskydd
utbyte
gjuttyp
h_korg
s1_korg
s2_korg
s3_korg