LADOK Utvecklingsmöjligheter ny systemgeneration – tekniska möjligheter och risker Marcus Gelderman den 10 juni 2008 GEM T-8004 Innehållsförteckning SAMMANFATTNING.................................................................................................................................................. 4 Utredningens uppdrag.................................................................................................................................................................4 Bakgrund ...........................................................................................................................................................................................4 Uppdraget enligt utredningsdirektiven ...............................................................................................................................4 Utredningens genomförande ....................................................................................................................................................5 Kortfattad summering av utredningens resultat.............................................................................................................5 Argument för en ny version av Ladok ...................................................................................................................................7 SYSTEM OCH VERKSAMHETSKRAV..................................................................................................................... 8 Indelning av krav ...........................................................................................................................................................................8 FUNKTIONELLA SYSTEM OCH VERKSAMHETSKRAV .................................................................................................................... 8 Rapportering och registrering .................................................................................................................................................8 Skyddade identiteter, anonyma tentor, egna kursval....................................................................................................8 Källa till data för kringliggande system ..............................................................................................................................9 Underlag för ut­ och inbetalningar och statistik .............................................................................................................9 Grundläggande katalogfunktion.............................................................................................................................................9 FRAMTIDA FUNKTIONELLA SYSTEM OCH VERKSAMHETSKRAV ............................................................................................. 10 Självadministration ................................................................................................................................................................... 10 Högskolorna önskar en bättre processanpassning av stödet.................................................................................. 10 Ökat utbyte av data och mera avancerade systemintegration scenarios.......................................................... 11 Effektivare drift och kontrollerade utvecklingskostnader........................................................................................ 11 Ökad systemintegration........................................................................................................................................................... 12 TEKNIK OCH SYSTEMARKITEKTUR ..................................................................................................................13 FUNKTIONELLA KRAV FÖR ATT LÖSA VERKSAMHETENS BEHOV ........................................................................................... 13 MÖJLIGA TEKNISKA VÄGVAL MED NUVARANDE LÖSNING....................................................................................................... 13 RISKER MED NUVARANDE LÖSNING ........................................................................................................................................... 13 VÄGANDE SKÄL FÖR EN TEKNISK OMBYGGNAD AV SYSTEMET .............................................................................................. 14 Drift och underhåll ..................................................................................................................................................................... 14 Kostnader för licenser............................................................................................................................................................... 15 Kompetensbehov ......................................................................................................................................................................... 15 Uppfyllande av förändrade omvärldskrav....................................................................................................................... 15 TEKNISKA VÄGVAL FÖR EN FRAMTIDA LÖSNING ...................................................................................................................... 16 Visionära möjligheter och enkel teknik för framtiden ............................................................................................... 16 Ny datamodell och migration................................................................................................................................................ 19 Krav på drift och underhåll .................................................................................................................................................... 21 Framtida kompetensbehov..................................................................................................................................................... 21 SÄKERHET OCH TILLGÄNGLIGHET ...................................................................................................................22 TILLGÄNGLIGHET ........................................................................................................................................................................... 22 Version 1.1 – Marcus Gelderman, email: [email protected] 1 / 45 Den nuvarande lösningen........................................................................................................................................................ 22 Framtida krav på tillgänglighet........................................................................................................................................... 22 Identifierade risker .................................................................................................................................................................... 22 DATASÄKERHET ............................................................................................................................................................................. 23 Den nuvarande lösningen........................................................................................................................................................ 23 Framtida säkerhetskrav........................................................................................................................................................... 23 Identifierade risker .................................................................................................................................................................... 23 ÅTKOMSTKONTROLL ..................................................................................................................................................................... 23 Framtida krav för åtkomstkontroll .................................................................................................................................... 23 Identifierade risker .................................................................................................................................................................... 24 FRAMTIDA MÖJLIGHETER ............................................................................................................................................................. 25 Singel Sign On (SSO) och autentisering utanför systemet ........................................................................................ 25 Elektronisk id och autentisering av studenter ............................................................................................................... 25 Rollbaserad säkerhet................................................................................................................................................................. 26 Kryptering, Certifikat och digitala signaturer ............................................................................................................... 26 NATIONELLA OCH INTERNATIONELLA TEKNISKA SAMARBETEN .........................................................27 FRAMTIDA MÖJLIGHETER ............................................................................................................................................................. 27 Krav på en framtida lösning .................................................................................................................................................. 27 Möjligheter i den nuvarande lösningen ............................................................................................................................ 28 Datastandarder ........................................................................................................................................................................... 28 Internationella samarbeten ................................................................................................................................................... 29 BESLUTSKRITERIER FÖR OMBYGGNAD OCH KOSTNADSASPEKTER.....................................................30 BESLUTSKRITERIERNA FÖR ETT BESLUT OM OMBYGGNAD .................................................................................................... 30 KOSTNADSASPEKTER .................................................................................................................................................................... 30 TEKNISKA BILAGOR ...............................................................................................................................................31 HIBERNATE ..................................................................................................................................................................................... 31 Summering..................................................................................................................................................................................... 31 Hibernate i princip ..................................................................................................................................................................... 31 Prestanda och Hibernate......................................................................................................................................................... 32 Att förstå Hibernate................................................................................................................................................................... 33 Hibernate­kunskap..................................................................................................................................................................... 33 Snabbsummering för­ och nackdelar................................................................................................................................. 33 Summering..................................................................................................................................................................................... 34 Standarder och tekniker som stöds av JBoss AS ............................................................................................................ 34 WEB SERVICE, SOAP OCH WSDL.............................................................................................................................................. 36 Web Service ................................................................................................................................................................................... 36 SOAP.................................................................................................................................................................................................. 36 Web Services Description Language (WSDL)................................................................................................................. 36 XML ................................................................................................................................................................................................. 37 XML SCHEMA ................................................................................................................................................................................. 38 Version 1.1 – Marcus Gelderman, email: [email protected] 2 / 45 JAVA ARCHITECTURE FOR XML BINDING (JAXB) .................................................................................................................. 39 SPRING FRAMEWORK .................................................................................................................................................................... 40 Inversion of Control container .............................................................................................................................................. 40 Aspect­orienterad programmering..................................................................................................................................... 40 ESB (ENTERPRICE SERVICE BUS)............................................................................................................................................... 41 JAVA MESSAGE SERVICE (JMS)................................................................................................................................................... 42 JUNIT................................................................................................................................................................................................ 43 ASYNCHRONOUS JAVASCRIPT AND XML (AJAX)..................................................................................................................... 44 Version 1.1 – Marcus Gelderman, email: [email protected] 3 / 45 Sammanfattning Utredningens uppdrag I detta avsnitt ges först en bakgrund till utredningsuppdraget. Därefter beskrivs innehållet i utredningsdirektiven, samt utredningens genomförande och slutligen en summering av det resultat som utredningen har kommit fram till samt en sammanfattning av argument för att uppgradera Ladok-systemet till en nyare systemrevision. Bakgrund Ladok-systemet har just gjort sig av med den äldsta teknikgenerationen och det finns inte några omedelbara hot eller krav på att snabbt bygga en ”nästa systemgeneration”. Dock är man medveten om att omvärlden förändras och detta kan i sin tur motivera en förändring av det systemstöd som behövs för att effektivt stödja verksamheten. Denna utredning fokuserar i huvudsak på tekniken och vad som är aktuell teknik idag och i möjligaste mån vad man kan förvänta sig av framtiden. Utredningen utgår ifrån i att man i grova drag hanterar samma typ av information som det befintliga Ladok-systemet gör i dagsläget, men ser samtidigt att vissa omvärldsfaktorer redan har förändrats som kan föranleda systemförändringar: • Studenterna förväntningar på Ladok är förändrade, de kommer i större grad fungera som medaktörer och ha ett större intresse för informationen i Ladok • Utbyten av studenter och information om studenter ökar drastiskt nationellt och internationellt. • Studenternas förväntningar på systemassistans har kraftigt skruvats upp och förändrats, • Högskolornas ekonomiska situation nödvändiggör effektivare systemstöd. • En nära släkting, NyA har kommit med som ny aktör och fokuserat på behovet av effektiv samverkan mellan system. • Medvetenhet om vilka krav som kan ställas på systemstödet har mognat. Uppdraget enligt utredningsdirektiven I utredningsdirektiven stipuleras att utredningen skall redovisa de allvarligaste beslutskriterierna som kan nödvändiggöra en ombyggnad av systemet, visa på vilka tekniska lösningar som finns om man väljer att bygga om systemet, samt tydliggöra möjligheterna med dessa tekniska vägval. Utredningsdirektivet anger också att risker med den nuvarande tekniska skall tydliggöras, samt redovisa vilka systemförändringar som behöver göras för att möta de förändrade omvärldskraven. Säkerhet i den befintliga lösningen skall redovisas, samt hur krav på säkerhet kan förändras i framtiden. Hänsyn skall också tas till internationella och nationella tekniska samarbeten i nuvarande lösning och en eventuell framtida lösning. Den visionära aspekten är viktig och utredningen skall redovisa olika alternativ för systemarkitektur och preliminärt värdera de tekniska utvecklingsmöjligheterna och riskerna med utgångspunkt i dagens system och utifrån en eventuell framtida förändring av systemet. Utredningen skall även ge grund för beslut om fortsatt planeringsarbete för nästa systemgeneration och ge Konsortiet en beredskap för att snabbare kunna påbörja arbetet med teknikskifte när så krävs. I egenskap av extern och oberoende part så skall utredningen enligt direktivet, förutom ovanstående punkter, också redovisa sin syn på möjligheterna att minska riskerna för framtida leverantörsberoenden. Version 1.1 – Marcus Gelderman, email: [email protected] 4 / 45 Utredningens genomförande Bakgrunden till utredningen är framtagen via intervjuer av systemanvändare, systemförvaltare och representanter för konsortiet; genomgång av systemdokumentation på Ladok-webben samt dokumentation som gjorts tillgänglig för mig i samband med intervjuerna. Kortfattad summering av utredningens resultat Den bästa framtiden för Ladok ur ett drifts- och utvecklingsperspektiv är enligt utredarens uppfattning att systemet skall vara Java-baserat. En direkt fördel av detta är att man kommer att effektivt kunna nytta av den Linux-arkitektur som man valt att satsa på. Java-arkitekturen innebär också att det blir enklare och mer kostnadseffektivt att handla upp externa konsulttjänster i den mån man önskar i jämfört med den nuvarande Uniface miljön. Utöver Java som programmeringsspråk så bör man webbifiera hela lösningen och låta alla, både de som arbetar dagligen och studenter ansluta till Ladok via ett webb interface. Konsortiet bör också i möjligaste mån vara ansvarig för utvecklingen och leverera en lösning som har all eller väldigt mycket av den funktionalitet som systemet förväntas ha. Valet att välja bort Mimer som databas till fördel för MySQL anser utredaren vara strategiskt viktigt då MySQL som produkt har betydligt bättre framtidsutsikter och troligtvis betydligt bättre prestanda. Utöver bytet av databas anser utredaren att man bör nyttja ett objekt-till-relations databasverktyg för att tydligare kapsla in objekten och samtidigt korta ned utvecklingstiden. I dagsläget är det givna valet Hibernate som är en open source lösning för objekt-till-relations mappningar. För att få dessa tekniker att hänga ihop, samt att få en miljö att köra dem i, rekommenderas att man väljer applikationssevern JBoss. JBoss är också open source och anses som en av de bättre produkterna på marknaden oavsett hur licensen ser ut. En lösning baserad på Linux, MySQL, Hibernate och JBoss är till stor del en defacto standard uppsättning och det är relativt enkelt att köpa till support (exempelvis från Redpill http://www.redpill.se eller något annat företag) och allt ifrån små enmans konsultbolag till de stora jättarna på marknaden har personal som kan jobba med dessa tekniker ifall man vill ha möjlighet att köpa in konsulttimmar externt. Denna mjukvarusammansättning bör ge stora besparingar på licens- och supportkostnader vilket rimligtvis är en viktig faktor i sammanhanget. Lösningsarkitekturen bör vara byggd på ett sådant sätt att inga applikationer utanför Ladok applikationerna har direkt tillgång till databasen. All kommunikation med systemet bör ske på tre olika sätt, användare interaktion via ett webbinterface, via en Web Service-koppling för de applikationer som finns lokalt i anslutning till systemet alternativt via en ESB (Enterprice service bus) lösning som på Ladok-sidan är JMS baserad och kopplad mot en integrationslösning. Valet av vilken integration-/middleware-lösning som man väljer är upp till respektive läroanstalt men med kravet att det kan prata JMS mot Ladok. Meddelanden som utväxlas mellan de olika Ladok-systemen och kring liggande system och passerar över en ESB (Enterprice service bus) lösning. ESB skall processa meddelanden som är krypterade och baserade på XML. XML-meddelandena skall valideras mot ett XML Schema som definierar hur data skall se ut syntaxmässigt. Snabba mekanismer som Java Architecture for XML Binding (se JAXB) används för att läsa upp meddelande i minnet för processning. Version 1.1 – Marcus Gelderman, email: [email protected] 5 / 45 Arkitekturen bör också vara byggd på ett sådant sätt att ett fysiskt system kan hantera flera läroanstalter, samt att flera fysiska installationer skall gemensamt kunna adressera behovet för en läroanstalt. Fördelarna med ett sådant system är att man har en flexibilitet att flytta funktionalitet tillfälligt mellan fysiska system vid exempelvis uppgradering eller support på hårdvara, samt att man ges möjligheten att med ganska enkla medel kan höja prestandan genom att installera ytterligare maskinvara parallellt med befintliga system. För att adressera behovet av att kunna få ut rapporter ur systemet bör ett enklare rapportverktyg konstrueras som kan anpassas efter de krav läroanstalterna har. Rapportverktyget bör dels gå att använda interaktivt via webb interfacet samtidigt som man skall kunna svara på fördefinierade frågor som når Ladok via Web Service frågor eller via integrationslösningen (ESB). Utöver de tidigare nämnda teknikerna så bör man dra nytta av ramverk som Spring Framework (http://www.springframework.org/) för att förenkla utvecklandet. Under utvecklingen bör nyttja enhetstester och ramverket JUnit (http://www.junit.org/), samt utvecklingsplattformen Eclipse (http://www.eclipse.org/) och man bör väldigt tidigt i projektet sätta upp källkods revisions hantering (exempelvis Subversion från http://subversion.tigris.org/). Webbklient-delen av systemet bör vara baserat på JavaScript och XML (Ajax) och lämpliga ramverk kan vara JBoss Richfaces (http://www.jboss.org/jbossrichfaces/) SproutCore (http://www.sproutcore.com) eller exempelvis MyFaces (http://myfaces.apache.org/). Vad man väljer här är avhängt hur man vill att kontroller och knappar skall se ut, samt om man har speciella funktionella krav. Beslutet om vilket ramverk som skall användas på klientsidan behöver vara väl förankrat hos de som kommer utveckla systemet. Tvingar man på utvecklarna ett klient ramverk som de inte är nöjda med kommer det påverka resultatet negativt och deras upplevelse av klient ramverket kommer i viss mån sätta tonen för om projektet är lyckat eller inte. Viktigt att förstå är att det finns en större mängd klient ramverk att välja mellan och vissa av dessa är otroligt effektiva om man använder dem på precis det sättet som de var tänkta för, om sättet att utveckla eller kravbilden avviker ifrån det optimala användningssättet kan klient ramverket istället bli ett stort problem. Utöver själva kodandet bör man ha en iterativ utvecklingsmodell och nyttja någon av de erkända agile metoder och ramverk som exempelvis Scrum, DSDM/Atern, lean programming. För att summera ovan text och placera in det i det befintliga systemets miljö är det utredarens uppfattning att man bör bygga ut den funktionalitet som LpW (Ladok på webb) erbjuder fast på en ny plattform; ersätta Nouveau- och Uniface-lösningen med en webblösning. Konsortiet bör lägga energi på att ta fram det webbinterface som behövs för att kunna nyttja funktionalitet. Man bör bygga vidare på konceptet med Web Service (SOAP) tjänster fast på en uppdaterad plattform. Ersätta LadokPing med en integration/ESB lösning och skicka krypterade XML baserade meddelanden. Ersätta en del av funktionaliteten av STAM genom att nyttja http/s för användare inloggning på webben och Web Service (SOAP) anrop. Version 1.1 – Marcus Gelderman, email: [email protected] 6 / 45 Argument för en ny version av Ladok • Svårigheter att på sikt underhålla den befintliga databaslösningen. • Svårt att överblicka säkerheten i det befintliga systemet. • Lappverket av applikationer gör framtida utveckling svår. • Uniface-lösningen är inget att bygga en framtida lösning på. • Framtida integrationskrav kommer att kräva en mer integrerad systemlösning. • Svårt att möta framtida krav på mer interaktiva webbsidor i nuvarande lösning (Ajax) • Databasen behöver moderniseras, risk finns att tabellerna växer okontrollerat. • Ett mer objektorienterad system blir billigare att underhålla och utveckla i. • Nyare tekniker kommer ge en bättre plattform för framtiden. • Drift- och underhållskostnaderna blir lägre i en enhetlig miljö för alla lärosäten. Version 1.1 – Marcus Gelderman, email: [email protected] 7 / 45 System och verksamhetskrav Indelning av krav Den delen av verksamheten som berörs av Ladok-systemet är enligt min uppfattning så starkt kopplad till systemet att jag valt att inte i detalj separera system och verksamhetskraven. Detta för att hålla ihop faktorer som tillsammans ger ett krav från verksamheten; exempelvis leder troligtvis kravet att minska administratörernas administration av de uppgifter som användarna själva kan administrera (ett verksamhetskrav) till att man behöver öka tillgängligheten till systemet till i princip dygnet runt, 24-7 (ett systemkrav) denna separation kommer att behöva göras tydlig i samband med att med att en kravspecifikation tas fram för en eventuell ombyggnad av systemet. Funktionella system och verksamhetskrav Rapportering och registrering Huvudgruppen av användare jobbar med rapportering och registrering, exempelvis kursrapportering och examenshantering. Beroende på hur läroanstalten är organiserad kan arbetet som gör i Ladok vara uppdelad på en större mängd personer i personalen eller utförs arbetet i Ladok ett fåtal personer som då utför fler typer av sysslor i systemet. Variationen i sättet att kombinera rollerna på respektive läroanstalt ställer krav på flexibilitet för att uppnå mesta möjliga effektivitet. Skillnaderna i hur man nyttjar systemet ställer också andra krav på flexibilitet och möjligheter till lokala förändringar i systemkonfigurationen. Skyddade identiteter, anonyma tentor, egna kursval Systemet ställs också inför kravet att man skall kunna hantera personer med skyddade identiteter. Rättning av tentan skall ske utan att personen som rättar skall ha möjlighet att sen personnummer eller namn och på så sätt undanröja misstanke om orättvis bedömning eller jäv. Systemet måste också stödja det faktum att en större andel av studenterna inte går igenom utbildnings- och examensprocessen linjemässigt utan i allt större utsträckning komponerar ihop en egen utbildning av fristående kurser. Detta i sin tur ställer i sin tur krav på Ladoks möjligheter till manuell hantering för dispenser, samt möjligheter att i efterhand komplettera kursinformation som kan ha saknats vid tidpunkten för dispensgivande. Version 1.1 – Marcus Gelderman, email: [email protected] 8 / 45 Källa till data för kringliggande system Ladok-systemet är den ursprungliga källan för data som sedan används i kringliggande system och som källa måste data i systemet vara aktuellt och korrekt. För att korrektheten skall kvarstå i takt med att roller förändras behövs det även mekanismer för att bevara historik; exempelvis skulle man kunna tänka sig att en student börjar läsa på en läroanstalt för att senare i livet går över för att undervisa på samma läroanstalt. I en sådan situation måste man ju kunna hantera kronologin i händelserna. Även i fall där exempelvis en lärare byter befattning så är det viktigt att kronologin behålls, detta för att undvika att historisk och aktuell data blandas på ett felaktigt sätt; ett senare utdrag ut Ladok-systemet skulle kunna ge sken om att examinatorn för en kurs var professorn eftersom personen innehar professuren nu, dock inte när den aktuella examineringen skedde. Underlag för ut- och inbetalningar och statistik Ladok-systemet ger också underlag för läroanstaltens ersättning ifrån staten för utbildningsplatsen, samt studentens ersättning ifrån CSN vilket ställer tydliga krav på kvalitet och hantering av data. Utöver den data och statistik som staten och CSN behöver för in- och utbetalningar, behöver läroanstalten möjligheten att sammanställa statistik. Det kan vara uppgifter som behövs för att styra den egna verksamheten, men det kan även vara ett krav för att följa offentlighetsprincip t ex vid frågor ifrån press. Grundläggande katalogfunktion Ladok-systemet skall även fungerar som en grundläggande katalogfunktion kring en mängd uppgifter så som: • Studerande och deras utbildningsnivå (grund-, avancerad och forskarnivå) • Lärare • Kurser • Kursomgångar och anmälningsmetoder • Program • Läsårsplaner (kursomgångar i programmet under läsåret) • Organisation och relationer (Vem som tillhör vilken institution) • Externa partners • Antagningsuppgifter • Registreringar • Resultat • Tillgodoräknanden • Examina • Rapporter • Listor • Intyg • Examensbevis och kursintyg • Uppföljning Version 1.1 – Marcus Gelderman, email: [email protected] 9 / 45 Framtida funktionella system och verksamhetskrav Självadministration Om man ser på hur förändring har skett inom andra områden som t ex bankväsendet så har en kostnadsmedvetenhet ifrån de aktuella organisationerna tvinga fram en mer utpräglad självadministration, vi registrerar själva våra räkningar i internetbanken idag; en syssla som tidigare bankkassörskan utförde åt oss. Denna självadministration har också i viss mån förändrat vår egna syn på data i systemen och våra krav på insyn i de olika systemen. En högst trolig utveckling även för Ladok-systemet är att studenterna fungerar som tydliga medaktörer, graden av självadministration ökar och kraven på insyn i systemet är kraftigt förändrade. Kravet på genom vilka kanaler kommuniceringen skall ske kan komma att förändras, i dagsläget kan man ju se teknik som webb och e-post som självklara. I den ganska nära framtiden kanske kraven ställ på annan mer mobil teknik som SMS eller att webben är anpassad för mobila plattformar som t ex Apples iPhone. Det troliga är också att man expanderar kommunikationskanalerna, e-post kommer inte ersättas med SMS, utan användaren vill kunna välja kommunikationssätt beroende på vad som skall kommuniceras; exempelvis kanske man vill ha kursplanen tillgänglig på webben och samtidigt kunna få den utskickad via e-post vid eventuella förändringar. Studenten kan ha en önskan om att se den grundläggande tentamens planeringen via webben, hemma vid sin dator, men samtidigt vilja få en påminnelse via SMS om plats och tidpunkt till sin mobiltelefon en kort period innan den aktuella tentamen skall ske. Möjligt är också att studenten genom att svara på SMS meddelandet även kan meddela om han eller hon tänker närvara. Troligt är också att man kommer vilja ha tillgång till systemet i princip dygnet runt, året runt (24-7) och kravet på realtids-access till data ökar markant. Rätt utvecklad och nyttjad ger den ökade självadministrationen både ekonomiska fördelar; man kan frigöra resurser ifrån en del av student- och kanske även läraradministrationen och nyttja de mer effektivt inom andra områden och man når även administrativa fördelar; uppgifter som t ex kontaktuppgifter eller liknande är lättare att hålla aktuella och uppdaterade av de som direkt berörs av uppgifterna. För att detta skall kunna uppnås måste det finnas tydliga incitament till självadministration. Funktionaliteten måste vara lättanvänd och kunna användas utan att allt för omfattande krav på utbildning i hur systemet fungerar. Balanserar man inte incitamentet med användarvänlighet så kan motsatt effekt uppstå; exempelvis om kravet för att få ut sina studiemedel är att man fyller i uppgifter i systemet (ett tydligt incitament) och det är svårt att förstå hur man skall kunna mata in de uppgifter som krävs (dålig användarevänlighet) kommer support och administration att bli kontaktade av ett flertal användare som behöver hjälp och därefter från användare som vill verifiera att det som matats in är korrekt. Enkelt förklarat måste Ladok-systemet vara tydligt och enkelt att använda, det måste i möjligaste mån följa den gällande uppfattningen av vad som är standard. Högskolorna önskar en bättre processanpassning av stödet Administratörernas sätt att arbeta i Ladok-systemet kommer troligtvis också behöva ses över, i takt med att studenterna och lärarnas användande av Ladok kommer förändras kommer detta troligtvis också förändra administratörernas sätt att arbeta. Vissa administratörsuppgifter kan komma att försvinna eller minska i omfattning i och med att fler användare administrerar i viss mån sina uppgifter själva, vissa administratörsuppgifter kommer att tillkomma i och med det förändrade användandet, men framför allt kommer kravet på uppdaterad och korrekt information öka med en kraftigt ökad insyn. För att detta krav skall kunna tillgodoses bör man se över hur administratörernas arbete utförs och försöka anpassa systemet efter hur deras arbetssituation ser ut. Ett ökat workflow tänk kan vara en lösning, där man identifierar och underlättar de vanligaste arbetsuppgifterna i Ladok Version 1.1 – Marcus Gelderman, email: [email protected] 10 / 45 och ser till att dessa är snabba och okomplicerade att genomföra. Användaren bör få information om vad som är förväntat att utföra samt få påminnelser gällande saker som inte är utförda. Genom att ha tydliga formulär och tydligt indikera vad man vill ha svar på kan man effektivisera kontakterna mellan exempelvis studenter och personalen som sköter administrationen. Ökat utbyte av data och mera avancerade systemintegration scenarios Dagens studenter är mer rörliga än innan och behovet av utbyte av information rörande studenter ökar drastiskt nationellt och internationellt. I dagens systemvärld är det sällan ett system det enda och vanligtvis arbetar företag och institutioner med en större mängd datorsystem som stödjer olika delar av verksamheten. Skälen till detta kan vara många, allt ifrån rent historiska till en tydlig inriktning mot ett ”best of breed”-tänk där man nyttjar varje system till det de anses vara bäst på. Oavsett anledning till en varierad systemflora så skapar detta ett krav på goda möjligheter till att överföra information i mellan de olika systemen, att integrera systemen. När det gäller systemintegration så brukar man separera den i två delar, intern systemintegrationen, samt extern systemintegration. Traditionellt så brukar man ställa andra krav på teknikens tillförlitlighet och standarder när det gäller systemintegration mot en extern part; exempelvis kan kommunikation gå över nätverk som man inte kontrollerar inom verksamheten och man ställer andra krav på kvittenser och liknande. I Fallet med Ladok så skulle jag vilja dela upp det integrationsbehovet som läroanstalten har lokalt som intern systemintegration och i de fallen man kommunicerar med omgivande parter som CSN, andra läroanstalter, både nationellt och internationellt, som extern systemintegration. I och med den ökade kommunikationen med kringliggande system blir kravet på dataintegriteten betydligt mycket högre och mycket mer utförliga kontroller av data behövs innan det tas in i systemet. Kravet blir att tydligt definierade interface för systemintegration måste finnas tillgängliga. En vinst av att ha en tydlig policy och tydligt definierade interface vid all systemintegration (både intern och extern) är att mycket av tekniken kan återanvändas och att det är tydligt specificerat hur det skall göras. Två viktiga faktorer vid val av lösning och teknik är dels att underhållet måste hållas minimalt; i takt med att antalet kopplingar ökar blir underhållskravet väldigt betungande i annat fall. Den andra faktorn är att lösningen måste gå att övervaka effektivt, det är samma sak här som med underhållet, ett fåtal kopplingar går att övervaka ganska enkelt oavsett lösning men blir dessa fler så blir det genast svårare utan bra verktyg. Effektivare drift och kontrollerade utvecklingskostnader Läroanstalternas ekonomiska situation nödvändiggör effektivare systemstöd, dels behöver man sänka utvecklingskostnaderna för att kunna effektivt driva systemutvecklingen vidare, dels kommer man vilja minska driftskostnaden . Ett problem med den nuvarande lösningen är att en del av utvecklingen lämnats åt respektive läroanstalt. Det finns en API att nyttja (Web Service API) men själva webb utformningen har lämnats åt respektive läroanstalt. Bakgrunden till detta var att man ursprungligen ansåg att utformningen av webben kunde vara ett sätt för respektive läroanstalt att profilera sig mot studenterna. Tanken var säkert god men resultatet blev att systemet ur ett webb perspektiv inte nyttjas fullt ut. Underhålls- och driftskostnaderna påverkas ju också av att läroanstalten är ganska unik med sin lösning och inga direkta möjligheter till enhetlig drift och dela kostanden på flera ges med en sådan lösning. Önskemål från verksamheten är att kunna sänka kostanden för lokal utveckling; göra informationen i Ladok enklare att nå för lokala system på läroanstalten med bibehållen säkerhet för data. En önskan finns om att kunna minimera underhållbehovet av kopplingar mot lokala system rent generellt, men särskilt vid släpp av nya system versioner. Version 1.1 – Marcus Gelderman, email: [email protected] 11 / 45 På konsortienivå finns det önskemål av att sänka utvecklingskostnaderna. Minska antalet fel i leveranserna, samt minimera kostnaderna vid utrullning av nya versioner, då utan att försvåra för snabba rättningar av fel. Ökad systemintegration I takt med att Ladok-systemet nyttjas mer kommer behovet att föra över kataloguppgifter och meriter på elektronisk väg öka. Redan har man noterat att systemet NyA har påverkat behovet av effektiv samverkan mellan system. Om man väljer att modernisera systemet är ökad tillgänglighet via integration en av de punkterna som man bör lägga mycket energi på. I dag är det mer regel än undantag att man nyttjar information från flera system i de olika verksamhetssystemen. Det man med säkerhet kan säga är att det är väldigt svårt att veta när man bygger systemen vilken information som man vill kunna nyttja i omkringliggande system. Dessa faktorer visar tydligt på kravet av bra integrationsmöjligheter. Tittar man specifikt på Ladok-systemet så finns ju redan kravet på integration med kringliggande system. I dagsläget löser man det via SQL frågor mot databasen, vilket inte är helt lämpligt om man har höga krav på säkerhet och vill ha kontroll på hur prestandan nyttjas. Lämpligt är en ESB (Enterprise service bus) lösning och tydligt definierade XML meddelande, där man kan hantera kryptering och validering. Version 1.1 – Marcus Gelderman, email: [email protected] 12 / 45 Teknik och systemarkitektur Funktionella krav för att lösa verksamhetens behov Verksamheten använder idag informationen i Ladok som en källa för information till omkringliggande system och behovet av ett öppet system som man enkelt kan integrera mot omgivningen kommer bara att växa. I den nuvarande lösnigen finns det risken med att data kan förvanskas och nyttjas felaktigt då man inte har ett riktigt tillfredställande dataskydd. Tydligare interface för integration behöver definieras; exempelvis kan användning av text fält i vissa vyer ge ett oväntat resultat då man inte vet vad som kommer över till de kringliggande systemen. Verksamheten behöver ett kraftigt förbättrar och processorienterat stöd för de mest vanligt förkommande sysslorna. Användarinterfacet, då framför allt i Ladok Nouveau, behöver ses över och helst ersättas med en modernare lösning för att ge ett effektivare och förbättrat stöd för användare. Möjliga tekniska vägval med nuvarande lösning De vägval man kan göra med nuvarande plattform är något begränsade i och med den starka bindningen till Uniface. Även om det i princip går att hänga på mer modern teknik i efterhand tenderar dessa lösningar inte att bli optimala ur hänseende på prestanda och underhåll. En möjlighet är att man behåller databasen och i övrigt baserar sin lösning på mer modern teknik. Nackdelen med en sådan lösning är att databasens omfattning är en del av problemet. En genomgång av databasen där man migrerar data till en ny tabellstruktur och rensar bort tabeller som bara ligger kvar av historiska skäl skulle ge en databas som är betydligt lättare att underhålla. Bland riskerna som finns med att bygga vidare på en gammal grund är att man upprepade gånger tvingas ta designbeslut baserade på en omodern teknisklösning vilket kan resultera i att man inte fullt ut kan nyttja den nya tekniken. En annan möjlighet kan vara att på sikt flytta över all funktionalitet ifrån Ladok Nouveau till LpW för att minska Uniface beroendet, fast i praktiken så innebär ju det att man bygger nytt fast utan möjlighet till den senaste tekniken. Risker med nuvarande lösning Enligt Compuwares egna produktutvärdering av Uniface1 så är det största problemet med deras lösning att 4GL/RAD baserade utvecklingsmiljöer är helt ur mode till fördel för kodbaserade miljöer som Visual Studio .Net och Eclipse. Detta är en helt riktig analys och i takt med att kunderna lämnar plattformen kommer nyutveckling och underhåll bli lidande. I samma utvärdering påpekar de att även om man fortfarande kan bygga monolitiska klient/server applikationer så det mest troliga att man vill bygga för webben. Frågan man skall ställa sig är om man vill bygga vidare på en lösning som i möjligaste mån och vad arkitekturen tillåtigt har anpassats för att göra något helt annat än vad det ursprungligen utvecklades för eller om man skall välja en lösning som är designad och utvecklad för att lösa dagens svårigheter inom webbutveckling. I dagens för föränderliga värld så är det också viktigt att snabbt kunna följa med de förändringar som sker. Väljer man att bygga vidare på den befintliga Uniface lösningen blir man beroende av att Compuware 1 Compuware Uniface 9 – An ’Product Evaluation’ paper by Bloor Research (Author: Philip Howard) Version 1.1 – Marcus Gelderman, email: [email protected] 13 / 45 (http://www.compuware.com/) har samma strategiska syn på framtiden. Exempelvis har man i Uniface valt att ha stöd för Microsofts Mobile Windows som operativsystem i mobila enheter (avancerade mobiltelefoner), vilket kanske inte så konstigt med ur amerikanskt perspektiv där Mobile Windows är ganska vanligt. Tittar man på fördelningen av operativsystem i mobila enheter ur ett globalt perspektiv så är Mobile Windows ganska litet med 12% av marknaden och det vanligaste, Symbian OS, dominerar med 65% av marknaden2. Symbian OS används i vissa Sony Ericsson modeller och är också vanligt i Nokias telefoner och de globala siffrorna avspeglar nog mer förhållandet i Sverige. Ett annat möjligt problem är datasäkerheten, det nuvarande Ladok-systemet i princip är två system, LpW och Ladok Nouveau, med delad databas och separerad användaradministration. Den separerade användaradministration gör det svårt att hantera användarna enhetligt och upprätthålla en policy gällande byte av passord och liknande. Det finns en tydlig risk att även små förändringar blir ganska omfattande uppdrag eftersom det är lite av ett lappverk. Risken finns också att man skapar små öar med information inne i databasen då tabell strukturen är ganska omfattande och svåröverblickad. I och med att man låter externa processer integrera mot lösnigen via SQL så blir det väldigt svårt, för att inte säga omöjligt att göra tabellförändringar och risken finns att databasen växer till en punkt där det blir väldigt svårt att underhålla systemet då man inte längre har någon överblick över vad som händer vid en eventuell förändring. Vägande skäl för en teknisk ombyggnad av systemet Drift och underhåll Som Ladok ser ut i dag så är systemet lite spretigt med olika program som löser olika problem. I en optimal underhålls situation så byggs systemet på kända och etablerade standarder vilket innebär att man enkelt kan få del av buggrättningar och uppdateringar och att man kan applicera dessa under kontrollerade former utan att få överraskningar i form av funktionalitetsbrister. I en lösning där fler separata komponenter utgör systemet som exempelvis LpW (Ladok på Webb) och Ladok Nouveau är det svårare att se konsekvenserna av en förändring eller uppdatering. Ytterligare ett problem uppstår i och med att man tillåter varje läroanstalt att göra förändringar och ha direkt anslutning till databasen. I praktiken måste det vara väldigt svårt för de centrala utvecklarna att veta att det kommer fungera som det skall för respektive läroanstalt. Ett av de enklare sätten att få ner driftsoch utvecklingskostnaderna är försöka få en så enhetlig miljö som möjligt, se till att systemet har all den funktionalitet man behöver och minska behovet av omgivande produkter. Likaså uppfyller man idag inte helt de krav på funktion som användarna säger sig vilja ha och stödet för att kunna arbeta processorienterat är i princip obefintligt. Systemet behöver bli mer användarvänligt och lättanvänt. Ett stöd för rapportgenerering är något som saknas i systemet (Det kan inte vara lätt för läroanstalterna att hitta duktig administrativ personal som samtidigt är bra på SQL för att kunna generera rapporter). 2 Siffror för mobila OS, Market Share Sales Q4 2007: Symbian OS from Symbian Ltd. - 65%, Windows Mobile from Micro- soft - 12%, RIM BlackBerry operating system - 11%, iPhone OS from Apple Inc. - 7%, Linux operating system - 5%. Version 1.1 – Marcus Gelderman, email: [email protected] 14 / 45 Kostnader för licenser Hela den föreslagna lösnigen bygger på öppen källkodsbibliotek och open source produkter man slipper onödiga licenskostnader och kan välja i vilket utsträckning man vill köpa in support. I och med den flexibla supportmodellen kan man antingen köpa support konsortienivå, driftscentral nivå eller låta respektive läroanstalt själva välja hur man vill köpa in support; denna möjlighet borde ju innebära goda möjligheter för att förhandla till sig en kostnadseffektiv lösning. Kompetensbehov Lösningsförslaget bygger till viss del på open source produkter, exempelvis JBoss AS, som man redan använder inom verksamheten vilket gör att viss kompetens redan finns att tillgå inom verksamheten. Alla delar av lösningsförslaget bygger på öppna standarder vilket också gör det betydligt enklare att hitta litteratur, utbildningar och vid behov extern kompetens. Det är också betydligt enklare att hitta och utbyta information i forum på internet när det är stora kända standarder. Uppfyllande av förändrade omvärldskrav Med den nuvarande systemlöningen kan man säkert följa omgivningens krav på förändring, men utredaren ställer sig tvekande om detta kan göras med bra systemsäkerhet och utan att lösningen blir ett lappverk av olika lösningar som var för sig löser något specifikt problem. Andra krav som kan komma att ställas är ökat mobilitet bland användarna och studenterna kommer att röra sig mer mellan läroanstalterna både inom Sverige men även utomlands. För att kunna möta detta förändrade beteende så behövs det förbättrade möjligheter till integration. Om integrationsmöjligheterna skall gå att nyttja effektivt så behövs det ett mer sammanhängande system och en gemensam meddelande buss som kan nå alla system komponenter. Vidare kommer antagligen det ställas krav på att kunna nyttja funktionaliteten via terminaler som mobiltelefoner och att information skall skickas via andra kanaler som exempelvis SMS och för att möta detta krav behövs det en arkitektur som mer effektivt stödjer integration mot omgivande system. Version 1.1 – Marcus Gelderman, email: [email protected] 15 / 45 Tekniska vägval för en framtida lösning Visionära möjligheter och enkel teknik för framtiden Verksamhetens behov av ett enkelt och driftsäkert system ligger till grund för att välja en Java baserad lösning med. Eftersom man redan inom konsortiet gjort det strategiskt riktiga valet att byta ut Mimer databasen mot MySQL, samt valt att satsa på Linux som plattform. Även applikationsservern JBoss AS är en produkt som redan är känd inom verksamheten och det finns ingen anledning att inte dra nytta av den kunskap som redan finns när man valt så starka produkter som grund. Nästa del av förslaget är att ta bort möjligheten till att direkt ansluta sig till databasen. Även om detta ofta är ett enkelt och snabbt sätt att integrerar system med varandra så ger det små eller inga möjligheter att effektivt validera inkommande data, man har svårt att utreda hur systemets prestanda fördelas över processerna. En bra integrationslösning med väldefinierade XML meddelanden och möjlighet att validera dessa mot ett XML Schema skapa en betydlig högre informationssäkerhet. En bra integrationslösning (ESB) ger även möjlighet till övervakning och spårbarhet av meddelande flöden. Integrationslösningen (ESB) ligger externt utanför systemet och föder Ladok-systemet med data via JMS. Figur 1: Meddelandet tas emot via Integrationslösningen (ESB) och skickar in det via JMS till Ladok systemet. Integrationslösningen (ESB) transformerar inkommande meddelande från de meddelade standarder som man valt att acceptera. Det inkommande meddelandet klassificeras och loggas. Innan meddelandet läggs på JMS kön in i Ladok-systemet så transformeras det till XML om det inkommande meddelandet inte var i XML-format och valideras mot ett XML Schema. Skulle valideringen av meddelandet indikera att något är felaktigt så loggas detta och ett e-post meddelande skickas till någon som kan åtgärda felet, alternativt skicka det felaktiga meddelandet och felmeddelandet ifrån valideringsprocessen till någon person som är ansvarig för det avsändande systemet. Väl inne i Ladok-systemet så valideras XML meddelandet igen mot XML Schemat i samband med att man löser upp meddelandena med JAXB. Valet Integrationslösningen (ESB) behöver inte vara samma för alla Ladok installationer det kravet som måste uppfyllas är att man kan prata JMS med Ladok-systemet ifrån integrationslösningen (ESB). Rent praktiskt är det givetvis en fördel om även integrationslösningen (ESB) är standardiserad ur ett drifts- och underhållsperspektiv men det kan finnas historiska eller praktiska skäl till att man vill hålla fast vid en tidigare vald lösning. Version 1.1 – Marcus Gelderman, email: [email protected] 16 / 45 Figur 2: Ett meddelande skickas in till integrationslösningen (ESB). 1: Loggning, 2: Konvertering 3: Validering 4: Eventuellt skickas ett felmeddelande till någon ansvarig. Om inga fel har inträffat så skickas meddelandet vidare via JMS in i Lador systemet. Själva Ladok-systemet är uppdelad i flera skikt (n-tier) där botten skiktet utgörs utav databasen, ett mellan skikt med JBoss AS som kör Hibernate och de övriga ramverken och som kommunicerar med databasen via JDBC. I toppen på ligger klientskiktet med HTML och Ajax (Asynchronous JavaScript And XML). Kommunikationen mellan applikationsserverns/webbservern och klienten sköts via standard http/s, förslagsvis så sitter det en brandvägg i mellan för att skydda installationen mot intrång. Vill man ytterligare stärka säkerheten kan man även ha en brandvägg mellan applikationsservern servern och databasservern (Innan man gör några för drastiska försök att förbättra säkerheten skall man noga analysera vilken hotbild man har mot systemen, risken är stor att man investerar i fel lösningar utan att ha analyserat vart bristerna i systemet är) Arkitekturen tillåter möjligheten att skapa ett kluster av applikationsservrar ifall man anser att prestanda eller tillgänglighet inte kan garanteras med endast en uppsättning av maskiner. Vill man förbättra prestanda eller tillgänglighet för databasen kan man nyttja de tekniker som databasleverantören rekommenderar. Vid utveckling kan hela lösningen komprimeras och utvecklingsmiljön (Eclipse), Webbläsare, Applikationsserver (JBoss), samt databas server (MySQL) installeras på utvecklarens dator. Figur 3: Flerskitslösning Version 1.1 – Marcus Gelderman, email: [email protected] 17 / 45 Webbklient-delen av systemet bör vara baserat på JavaScript och XML (Ajax) och lämpliga ramverk kan vara JBoss Richfaces (http://www.jboss.org/jbossrichfaces/) SproutCore (http://www.sproutcore.com) eller exempelvis MyFaces (http://myfaces.apache.org/). Vad man väljer här är avhängt hur man vill att kontroller och knappar skall se ut, samt om man har speciella funktionella krav. Beslutet om vilket ramverk som skall användas på klientsidan behöver vara väl förankrat hos de som kommer utveckla systemet. Tvingar man på utvecklarna ett klient ramverk som de inte är nöjda med kommer det påverka resultatet negativt och deras upplevelse av klient ramverket kommer i viss mån sätta tonen för om projektet är lyckat eller inte. Viktigt att förstå är att det finns en större mängd klient ramverk att välja mellan och vissa av dessa är otroligt effektiva om man använder dem på precis det sättet som de var tänkta för, om sättet att utveckla eller kravbilden avviker ifrån det optimala användningssättet kan klient ramverket istället bli ett stort problem. Rätt implementerat kommer användaren uppleva att funktionaliteten hos webbläsaren ligger i samma nivå som om det hade varit en fet klient installerat på klientmaskinen. I och med att servern har möjlighet att se vilken typ av enhet eller webbläsare som anropar server så kan man också anpassa det svaret som skickas tillbaka för den typ av enhet som efterfrågar webbsidan. Figur 4: Servern anpassar sin vad som skickas som svar beroende på vilken typ av plattform som är mottagare av informationen. Version 1.1 – Marcus Gelderman, email: [email protected] 18 / 45 Databasen och själva logiken i bör vara uppsatt på ett sådan sätt att man i samma miljö hantera flera instanser av Ladok. Detta är väldigt viktigt vid felrättning och utveckling. En utvecklare kan då flytta hela datamängden från ett system in till sin egen utvecklingsmiljö för att kunna felsöka och testa i en kontrollerad miljö, men med riktig data. Utöver fördelarna vid utveckling får man flexibilitet att flytta funktionalitet tillfälligt mellan fysiska system vid exempelvis uppgradering eller support på hårdvara, samt att man ges möjligheten att med ganska enkla medel kan höja prestandan genom att installera ytterligare maskinvara parallellt med befintliga system. Under utveckling bör enhetstester via JUnit användas för att ge utvecklarna möjlighet att verifiera och validera funktionaliteten i systemet. Samtidigt får man inte glömma att ta höjd för riktiga definierade funktions och integrationstester. Enhetstester är ett bra verktyg för utvecklaren att testa funktionalitet men inget säkert sätt att testa system på. För att underlätta utvecklarnas arbete bör man dra nytta av ramverk som Spring Framework (http://www.springframework.org/). Utvecklingsplattformen Eclipse (http://www.eclipse.org/) är en av de absolut bästa på marknaden och även den är open source och gratis att nyttja. Eclipse är plugin-baserad och det finns en uppsjö med plug-in:er för att utöka funktionalitet eller förbättra stödet för exempelvis JBoss AS. Eclipse har ett bra stöd för kod revisionshantering och i lite större projekt med fler än en deltagare är det ett absolut måste med en centraliserad lösning för kod revisionshantering. Om man inte redan har valt något system för kod revisionshantering så är Subversion ganska enkelt att använda och få igång. En fördel med Subversion är att all meta information om revisionerna ligger på hårddisken tillsammans med koden och vid backup räcker det med att man gör en kopia på directory strukturen på servern för att få med allt. Vissa mer avancerade lösningar kan vara rätt svåra att göra backup på. Subversion fungerar för ett flertal Linux- och Unix-miljöer och finns att hämta ifrån http://subversion.tigris.org/. Ett viktig användningsområde som man inte får missa är möjligheterna att generera rapporter ifrån Ladoksystemet. I den nuvarande Ladok-lösningen har de som jobbat med systemet kunnat knåpa ihop några rader SQL och kört frågan mot databasen. Att köra SQL mot databasen är tekniskt möjligt även i det nya lösningsförslaget, men inte önskvärt utav fler skäl. Kör man SQL mot databasen är det väldigt svårt att kontrollera vilka resurser som krävs för att svara på frågan; en klumpigt ställd SQL-fråga kan skapa låsningar och prestanda problem i nästan vilken databas som helst. Ställer man dessutom SQL-frågor mot en databas som kontrolleras av Hibernate så passerar frågan utanför hela Hibernate ramverket och man kan inte dra nytta av de mekanismer för ökad prestanda som Hibernate erbjuder, som exempelvis cache och optimerings funktionalitet. Lösningen för att behålla flexibiliteten i SQL samt dra nytta av fördelarna hos Hibernate är att använda Hibernates egna SQL liknande språk HQL. Om man är duktig på SQL är det inget stort steg att förstå och skriva HQL. En annan lösning är att man lägger tid och energi på att utveckla ett rapportverktyg som ger användaren möjlighet att skapa egna frågor mot datamängden via ett webbinterface. Verktyget bör även ge möjligheten att spara frågor både lokalt bara för mig som användare och system globalt ifall jag vill dela med mig av mina mer lyckade HQL frågor. Rapportverktyget behöver dessutom ge en möjlighet att exportera som Excel- och XML-format för export till andra verktyg där man vill ha möjlighet att processa data ytterligare. En möjlig produkt att använda här skulle kanske kunna vara Jasper Reports (http://www.jaspersoft.com/) eller något liknande. Ny datamodell och migration I den nuvarande Ladok-lösningen så är det problem med att attribut använd även som nycklar. Detta skapar problem vid exempelvis byte av personnummer. I samband med ett systemskifte så behöver databasen se över och förslagsvis börjar man ta höjd för datamigration redan vid utvecklingsstart. Ett sätt att adressera detta är att Version 1.1 – Marcus Gelderman, email: [email protected] 19 / 45 man använder sig av data som kommer ifrån det befintliga systemet redan under utveckling och att man bygger funktionalitet för datamigration samtidigt som man utvecklar den nya funktionaliteten. Exempelvis skulle arbetsflödet kunna gå till så här: 1. Identifiera ett begränsat område som man vill migrera (Lättast är det om man kan ta bit för bit av funktionaliteten) 2. I den befintliga lösningen identifierar man de tabellerna som innehåller den data man behöver. 3. Skapa Java-objekten som kan hantera data från den befintliga lösningen och lägg till egna nyckelbegrepp till objekten och var noga med att använda rätt Java-typer; exempelvis Integer osv. 4. Låt Hibernate genererar de tabeller som behövs för att spara Java-objekten ifrån punkt 2. 5. Undersök hur databasen blev skapad och upprepa punkt 3 – 5 tills man uppnår ett tillfredställande resultat. 6. Skriv kod som via en SQL anslutning kopierar (migrerar) och in till de Java-objekten man skapat och låt Hibernate spara objekten i databasen. Se även till att göra en typ konvertering mellan data så exempelvis numerisk data blir konverterade till Java typerna Long, Integer eller motsvarande 7. Validera att data i de nya tabellerna ser ut som förväntat, upprepa punkt 6 – 7 och eventuell punkt 3 och framåt tills ett tillfredställande resultat har uppnåtts. 8. Bygg de grafiska gränssnitt som behövs för att kunna se och editera data som migrerats. Upptäcker man något saknas eller är fel upprepar man processen ifrån punkt 2 och framåt. 9. Bygg enhetstester för att kunna validera funktionaliteten. Följer man schemat ovan så kommer man i slutändan har all den generella kod som behövs för att migrera databasen. Man kommer ha konverterat data till dess naturliga format, samt ha tester att validera funktion och data. Ett problem kan vara de lokal variationer av databasen som existerar och där får man ta höjd för detta genom att göra anpassningar i den generella lösningen för att täcka dessa lösningar. Målet är att få en generell databas modell för alla Ladok-system och lokala avvikelser skall undvikas i mesta möjliga mån. Ur ett underhållsperspektiv blir det väldigt kostsamt att underhålla ett flertal system med små lokala skillnader och risken är överhängande att man får problem vid gemensamma uppdateringar av systemet. Version 1.1 – Marcus Gelderman, email: [email protected] 20 / 45 Krav på drift och underhåll De tekniska drifts- och underhållskraven på Ladok skiljer sig inte nämnvärt ifrån andra webb-baserade system. Det som framför allt är viktigt är att hålla kostnaderna nere så mycket som möjligt och det bästa sättet är att man göra systemen för respektive läroanstalt så lika som möjligt. Förslaget att ett Ladok-system skall kunna hålla olika instanser av Ladok för olika lärosäten ger driftsorganisationen möjlighet att konsolidera flera system på samma hårdvara kan vara ett sätt att underlätta för driftsorganisationen och spara pengar på. En möjlighet som ligger lite utanför själva Ladok-systemet är att nyttja virtuella servrar. Systemuppsättningen blir snarlik eller samma som beskrivet i detta dokument, men skillnaden ligger i att istället för att installera på Linux hårdvara så installeras miljöerna i virtuella maskiner. Fördelen ligger i att i den virtuella miljön finns ingen koppling till hårdvaran och det är helt upp till drift personalen att fördela prestanda, diskutrymme och andra resurser till de virtuella miljöerna. Möjligheterna öppnas att nyttja resurserna i datahallarna mer effektivt och man brukar kunna spara pengar på att mindre mängd el går åt att driva och kyla maskinerna. Grön IT innebär ju även vinster utanför datorhallen som kan var önskvärda. Framtida kompetensbehov I det lösningsförslag som tagits fram ligger kompetens tonvikten på Java, JavaScript, Ajax, JBoss AS, Hibernate, XML Schema, XML och Spring framework detta är stora öppna standarder och kunskapen som förvärvas under utvecklingen går utmärkt att använda i andra webbaserade projekt. Denna kunskap är inte heller något problem att köpa in externt. Väljer man att inte uppdatera Ladok till en ny systemgeneration kommer man fortsättningsvis ha ett krav på Uniface-kompetens som kan vara svårt att uppfylla externt. Version 1.1 – Marcus Gelderman, email: [email protected] 21 / 45 Säkerhet och tillgänglighet Tillgänglighet Den nuvarande lösningen De tillfrågade anser sig inte se något problem med prestanda och tillgänglighet i det befintliga systemet. Lösningen där man replikerar databasen till Ladok Open och ställer frågor mot Ladok Open fungerar tillfredställande för den belastning som man ser att man har inom en när framtid. Framtida krav på tillgänglighet Om man väljer att låta studenterna administrera sig själva i större utsträckning än innan och samtidigt som man gör systemet mer attraktivt i form av utökad funktionalitet kommer ganska snart kraven på tillgänglighet ligga dygnet runt, 24-7. En viktig faktor som måste förstås med webbaserade system är att kraven på prestanda måste kunna möta den momentant högsta belastningstoppen. I batch-orienterade system har man ofta möjligheten till återhämtning efter en momentan belastningstopp. Om det uppstår prestanda problem i en webbbaserad lösning påverkar det allt processande och genererar i regel ännu större prestandaproblem då användarna i ren irritation trycker ännu fler gånger på knapparna eftersom inget händer. Den möjligheten till återhämtning sker när användarna tröttnat på att vänta och lämnar webbplatsen. Det vanligaste sättet att bygga för belastningstoppar är att man identifierar den mest hektiska perioden för verksamheten och beräknar belastningen efter den. I praktiken betyder det att har man sin belastningstopp mellan nio och tre måndag till fredag eller om december månad är den mest hektiska så är det denna belastning som bestämmer storleken på systemet. Problemet med att dimensionera efter topparna är väldigt tydliga i de fall då man har hög belastning under ett fåtal dagar eller någon månad per år och men ändå tvingas betala för den utrustning som krävs för att hantera topparna. En möjlig lösning på detta kan vara att basera lösningen på virtuella maskiner och hitta en passade capacity-ondemand (COD) leverantör. En annan möjlighet är att man delar server- och bandbreddskapacitet med något företag eller organisation som har samma problem, men där toppar ligger annorlunda ur ett kalender- eller dygnsperspektiv. Identifierade risker För att undvika prestandaproblem så bör man redan från första början vara noga med att identifiera vilka flaskhalsar som existerar i systemet, samt att tidigt börja nyttja prestanda höjande tekniker som klustring av servrar. De flesta leverantörer av mjukvara respektive hårdvara har tips på hur man optimalt nyttjar deras produkter. Bygger man med prestandakraven och möjlighet till skalning i åtanken behöver detta inte bli något stort problem. Version 1.1 – Marcus Gelderman, email: [email protected] 22 / 45 Datasäkerhet Den nuvarande lösningen Den nuvarande lösningen har lite varierande nivå på datasäkerheten och särskilt när det gäller kommunikation mot Ladok Nouveau finns det möjligheter att kommunikation kommer att gå okrypterad. För att åtgärda denna brist så nyttjar man bland annat en Citrix-lösning. I och med att de olika system delarna som LpW, Nouveau, och Ladok Connector både samverkar och är separata är det viktigt att förstå att en splittrad miljö i sig är en risk för framtiden och en extra utvecklingskostnad idag. Framtida säkerhetskrav I och med att man hanterar allt ifrån publika uppgifter till uppgifter rörande skyddade identiteter måste lägsta nivå av säkerhet sättas så att även de publika uppgifterna hanteras på samma sätt som de skyddade identiteterna. All kommunikation bör vara krypterad mellan webbläsare och server, liksom all WebService kommunikation bör vara krypterad. När det gäller meddelanden som skicka till och ifrån system så bör man klassificera in informationen i olika nivåer och kryptera den information som bör vara krypterad. Anledningen till att man inte generellt kan kryptera all information är att det troligtvis kommer finnas ett behov av att kommunicera med kringliggande system där man gjort bedömningen att informationen inte behöver krypteras och det då skulle bli ett problem att man ifrån Ladoks sida ställer kravet att all information skall vara krypterad. Identifierade risker Att någon obehörig kommer åt information från systemet är otroligt allvarligt i och med att det skapa en förtroende kris för hela systemet. Problemet växer i och med att Ladok lagrar känslig information som kan skapa en stor skada i fel händer. Bara det faktumet att det är svårt att avgöra hur bra säkerheten faktiskt är i den befintliga lösningen är skäl nog för att se över hela systemet. Åtkomstkontroll I den nuvarande lösningen har man nyttjat möjligheten till Singel Sign On för de användare som ansluter via LpW. För de expertanvändare som ansluter via Ladok Nouveau sker användare hanteringen internt i systemet och användarna ligger definierade i en tabell i databasen. Ladok Nouveau-autentiseringen kan även ske via X.509-certifikat. Det är enligt utredarens mening inte helt praktiskt att ha två typer av användare där den ena ligger definierad i databasen och den andra utanför systemet. För att man säkert och enkelt skall kunna administrera alla användare centralt så bör dessa bara finnas definierade på ett ställe. Framtida krav för åtkomstkontroll Oavsett lösning för autentisering så kommer det behövas ett rollbaserat behörighetssystem. Enligt det förslaget som jag lägger fram så kommer information att läsas och skrivas via tre olika vägar. Antingen kommer omgivande system att prata med Ladok-systemet via en Web Service-lösning, en del information kommer att gå via ESB (Enterprise Service Bus) och slutligen via användarnas interaktioner på webben. Gemensamt för alla dessa inVersion 1.1 – Marcus Gelderman, email: [email protected] 23 / 45 formationsvägar är att man inte kan lita på dem utan man behöver veta vem som frågar och vad man frågar om. För att göra detta enkelt så klassificerar man in de olika händelserna i roller; exempelvis kan en Web Service förfrågan från en lokal maskin gällande uppgifter av väldigt allmän art vara sådan att den kommer in okrypterad och oautentiserad och ges den process i systemet som skall utföra frågan en roll som gör att den bara kan komma åt oskyddade uppgifter i systemet. Om samma maskin ställer en ny fråga, denna gång över en krypterad uppkoppling t ex via Transport Layer Security (TLS) eller Secure Sockets Layer (SSL) och samtidigt skickar med någon form av autentisering så tilldelas en helt annan roll till den processen som skall ställa frågan emot systemet och databasen. Identifierade risker I den nuvarande lösningen är det svårt att få en överblick av användarna eftersom de kan definieras i det externa behörighetssystemet eller i databastabellerna. För att effektivt kunna administrera alla användare så bör de vara definierade på samma ställe. Version 1.1 – Marcus Gelderman, email: [email protected] 24 / 45 Framtida möjligheter Singel Sign On (SSO) och autentisering utanför systemet En av de enklare men ganska viktiga teknikerna som många tittar på idag är ”Singel Sign On” (SSO), dvs. att användaren endast autentiserar sig en gång och sedan har sin behörighet till de system som använts utan att behöva autentisera sig ytterligare. SSO ses ofta som en ren komfortfråga för användarna, men kan faktiskt vara ett av det enklare och mer praktiska sätten att höja intrångssäkerheten i systemen radikalt. Om man väljer att implementera SSO så har användarna bara en lösenordspolicy att ta hänsyn till och man kan kräva lite högre krav på utformning av lösenord och hur ofta det skall bytas. För användarnas del brukar det vara enklare att acceptera att man har ett något krångligare lösenord om det dels bara behöver användas en gång per session och det är det enda som man behöver hålla reda på när man arbetar med systemen. I dagens system skulle detta kanske gå att lösa genom att bygga på en lösning där man översätter det som symboliserar en autentiserad användare till ett användarnamn i Ladok systemet. Ett problem med att bygga på en lösning på det befintliga systemet är att man fortfarande har kvar infrastrukturen i systemet och det kommer kräva underhåll ifrån användaren sida vid exempelvis byte av lösenord och liknande. En annan fara är att man missar eller underlåter sig att byta passord i systemet och på så sätt skapa en falsk trygghet där man tror att man har en hög säkerhet i och med att SSO-autentiseringen uppfattas som säker. De generella fördelar man brukar se med SSO är: • Färre samtal till supporten på grund av glömda passord. • Kortare tid läggs på att logga in i systemen. • Passorden återanvänds inte i samma utsträckning och upprepas inte ifrån system till system • En gemensam policy för hur passorden skall se ut. Väljer man att implementera SSO skall man vara noga med att se till att den lösningen man väljer stödjer minst Microsoft Active Directory, Kerberos baserad inloggning, UNIX/Linux PAM inloggning och troligtvis vill man även kunna hantera OTP (One-Time Password) RSA SecurID och Smart card baserad inloggning. Elektronisk id och autentisering av studenter När det gäller autentisering av studenterna så ser kravbilden lite annorlunda ut. Man kan i de flesta fallen utgå ifrån att studenten har tillgång till någon form av elektronisk id utfärdad av dennes bank. Även om verifiering av BankID är ganska tekniskt knöligt i dagsläget så är ju det fullt möjligt att centralisera denna funktionalitet så att alla läroanstalter använder ett gemensamt system för autentisering. BankID har en stor fördel och det är väl utbredd och läroanstalten slipper själv lägga energi och tid på att verifiera att personer är de, de ut ger sig för att vara. BankID lösningen behöver kompletteras men en lösning för utländska studenter som inte av någon anledning har ett bankkonto i en svensk bank. Andra möjligheter kan vara det av Yale University utvecklade Central Authentication Service (CAS - http://www.ja-sig.org/products/cas/ ) för autentisering. En annan möjlighet som Version 1.1 – Marcus Gelderman, email: [email protected] 25 / 45 ofta används är autentisering via engångskoder skickade till mobiltelefonen. Nackdelen med detta är att det kräver att man registrerat sitt mobilnummer i förväg och man har en mobiltelefon. Om man väljer att bygga Ladok-systemet så att det kan hantera autentisering utanför det egna systemet så finns det egentligen ingen gräns för vad man kan välja för typer av autentisering. Rollbaserad säkerhet Ett rollbaserat säkerhetssystem bör byggas för att stärka säkerheten i systemet. Beroende på vad din uppgift är i systemet, samt hur du har autentiserat dig bör ge en säkerhetsklass eller en roll. Vad man kan utföra i en viss roll är förutbestämt i Ladok och vilka roller man får bestäms vid inloggningen beroende på vilken typ av användare du är, samt hur du valt att autentisera dig för system. En användare som loggar in via webben med användarnamn och lösenord kanske inte skall få lämna uppgifter till systemet utan bara läsa. Samma användare kanske senare på eftermiddagen loggar in med sitt smart card via datorn på institutionen och hamnar då i en annan säkerhetsklass och har då möjlighet att ändra uppgifter i systemet. SPOCP (Simple Policy Control Project - http://www.spocp.org/ ) är ett samarbetsprojekt mellan fem svenska universitet, Karolinska Institutet, Lunds Universitet, Stockholms Universitet, Umeå Universitet och Uppsala Universitet och Uninett, the Norwegian National Research Network. SPOCP kan mycket väl vara en bra lösning för att hantera rollbaserad säkerhet. SPOCP nyttjas redan i viss utsträckning i nuvarande version av LpW så kunskap finns i viss mån redan i organisationen, vilket kan vara en fördel. Rätt hanterat är rollbaserad säkerhet relativt enkelt att administrerar och man kan enkelt hantera rättigheter för stora grupper på en gång. Ser man till att göra ett tydligt gränssnitt för den egna kod som hanterar autentisering och roller så kan ett eventuellt byte det externa system som hanterar autentisering och roller vara fullt möjligt ifall man i efterhand inser att man valt fel. Viktig här är att man i det egna systemet implementerar de delarna som hanterar autentisering och roller väldigt generiskt och med ett plug-in tänk. Kryptering, Certifikat och digitala signaturer Digitala signaturer och kryptering av data är i dag en viktig faktor för att säkerställa att informationen är oförvanskad och i samma skicka som när den skickades. I en värld där man mer och mer litar på de digitala uppgifterna blir det mer och mer viktigt att man skyddar dess uppgifter på ett bra och riktigt sätt. Programmeringsspråket Java har mycket goda möjligheter till både kryptering och digitala signaturer och det är ganska enkelt att nyttja dessa API: er. När det gäller kryptering så är också det vikigt att man enkelt kan byta algoritm men mycket kort varsel; anledningen till detta är att datortekniken går så snabbt framåt att en algoritm som anses som väldigt säker idag kan anses har kraftiga säkerhetsbrister inom en väldigt nära framtid. Ett problem med den nuvarande lösningen där Ladok Nouveau kör på Uniface plattformen är att även om man nyttjar Uniface möjligheten att anropa Java kod riskerar att få underhålla två olika kodbaser för kryptering, detta gör att uppdatering och eventuella byte av krypterings algoritm kan bli onödigt avancerade operationer. Version 1.1 – Marcus Gelderman, email: [email protected] 26 / 45 Nationella och internationella tekniska samarbeten Framtida möjligheter På samma sätt som i den övriga världen har man i universitetsvärlden sett de ökade möjligheterna med integration. Värdet av det egna systemet blir större om det kan kommunicera med omvärlden. Den traditionella lösningen för integration är att man bygger unik lösning för varje system man vill kommunicera med drar nytta av den teknik som finns tillgänglig. Vanligtvis leder detta till att man får en svår överblickad lösning och någon form av applikationsspagetti. Figur 5: Applikationsspagetti Krav på en framtida lösning Den framtida lösningen tillåter inte direkt access till databasen, tydliga interface är definierade för att läsa och skriva information till databasen. I och med att interfacen är metodbaserad kan man tydligare definiera vad som skall hända när de anropas. Information utbyts antingen via ett Web Service anrop för mindre datamängder och enklare funktioner eller via ett XML-baserat meddeladeinterface. De XML-baserade meddelandena av krypteras vid behov och valideras mot ett XML Schema för att säkerställ att informationen och syntax är riktig. Innan informationen har nått Ladok-systemet har det passerat integrationslösningen (ESB) som också har validerat data och syntax och eventuellt har konverterat meddelandet ifrån någon av de meddelande typer som man tillåter. Integrationslösningen (ESB) har också loggat meddelandet för spårbarhet och i händelse av att något är fel med meddelandet så har det loggats och en rapport har skickat till någon som kan åtgärda felet. En annan fördel med integrationslösningen (ESB) är att man centraliserar kopplingarna till en punkt och man har en betydligt bättre överblick. I och med att man valt en eller ett fåtal produkter att jobba med så har behöver man inte sprida kunskap över ett flertal olika tekniska lösningar och de som skall utveckla applikationer för valideringar och/eller konvertering har bättre förutsättningar att återanvända lösningar. Version 1.1 – Marcus Gelderman, email: [email protected] 27 / 45 Figur 6: En integrationslösning centraliserar kopplingarna Möjligheter i den nuvarande lösningen I den nuvarande lösningen finns det en början till en integrationslösning och tankarna finns där i form av Ladok Connector. Tyvärr är väl arkitekturen inte optimal för en enkel lösning. Ett problem som kommer att uppstå är när man har behov av nära realtidsintegration och behöver informera eller uppdatera en användare eller process om att ny information finns tillgänglig i databasen. Det finns inget enkelt sätt att få databasen att informera de överliggande lagren om att ny data finns tillgängligt och den vanligaste lösningen bygger på att man regelbundet läser tabeller i databasen för att se ifall det kommit ny information. Detta problem är inget specifikt för Ladok utan är ett resultat av arkitekturen. Datastandarder Meddelanden som skickas och tas emot brukar vanligtvis i något av följande format ANSI X.12 (USA), EDIFACT (Europa), XML (Hela världen), Eget inhouse format (Hela världen). En bra integrationsplattform har stöd för dessa format och i praktiken är det underordnat i vilket form meddelandena kommer att komma in i. Integrationsplattformen kommer att kunna göra en formatkonvertering av meddelandet till ett format som används av de bakomliggande systemen. I dagsläget är det troligt att krav på student- och kursinformation kan utväxlas ganska fritt mellan de olika utbildningssystemen. Med tiden så kommer krav på ökad utväxling av information och möjligheten att styra i vilken format data kommer kan vara svårt. Viktigt är att ta höjd för att man kommer få hantera udda datastandarder, samt se till att välja en integrationsplattform som är flexibel nog att hantera dem. Version 1.1 – Marcus Gelderman, email: [email protected] 28 / 45 Internationella samarbeten När man tittar på de internationella samarbetena som exempelvis Metadata for Learning Opportunities (MLO), CDM, EMIL, eduCourse är dessa oftast XML baserade, samtidigt håller XML på att bli det vanligaste formatet vid nyutveckling, detta gör att man bör fokusera på en integrationsplattform med bra stöd för XML. Ladok systemet själv kommer troligtvis ha ett behov att kunna utväxla studieresultat och information om genomgångna kurser för att förenkla administrationen när studenten vill ta ut sin examen. Version 1.1 – Marcus Gelderman, email: [email protected] 29 / 45 Beslutskriterier för ombyggnad och kostnadsaspekter Beslutskriterierna för ett beslut om ombyggnad Att besluta om eller när ett system behöver bytas ut eller förnyas är alltid svårt. I denna utredning så har utredaren försökt lyfta fram punkter till förbättring och påvisa risker med den nuvarande lösningen, men hur skall man veta att det är dags för förnyelse eller om det är okey att stanna kvar i den gamla lösningen ett tag till? För att ge en hjälp på vägen så har utredaren tagit fram några punkter att reflektera över. • De nya ramverken för webbapplikationer öppnar för en långsiktigt hållbar och expanderbar arkitektur och sänker kostanden för drift. Det faktum att vi närmar oss en standard för hur en webbapplikation av den här storleken skall byggas och hur de skall fungera ger en säkrare framtid och en större långsiktighet i investeringen. • Compuware uppger själva att deras Uniface-plattform inte längre är modern – ”Arguably the biggest difficulty that Compuware faces with respect to Uniface is that development environments with a 4GL/RAD ancestry have fallen out of fashion.” Även om Compuware själva anser att detta är ett misstag och anser att plattformen har ett fortsatt existensberättigande så är Compuware affärsdrivande och kommer att fasa ut produkter som inte generera pengar. Upplevs plattformen som föråldrad kommer det till slut bli självuppfyllande och plattformen är att betrakta som föråldrad. Att göra nyinvesteringar i en föråldrad plattform innebär med god säkerhet att man får ta kostnaden ytterligare en gång och då i samband med att man byter plattform. • Genom att röra sig mot nyare tekniker och mer generella ramverk och fokusera på Enterprise Java (J2EE) så är det enklare att hitta kompetens. Det finns en risk att fastna med en teknik som är dyr att hitta kompetens inom. • Den nuvarande databaslayouten är så omfattande att det kommer leda till problem och i framtiden. Genom att migrera och objektifiera (via Hibernate) data i databasen så tvingas man reda ut problematiken. Det blir betydligt lättare att identifiera de personer med historiken kring databasen om man inte väntar för länge. Kostnadsaspekter Utredaren har valt att avstå ifrån att göra direkta kostnadsuppskattningar. Anledningen till detta är att dels att licensavgifter, drifts- och underhållskostnader för den befintliga lösningen inte varit kända för utredaren under pågående utredningen, dels att arbetet med att sätta upp en tidplan och beräkna kostnader för nyutveckling inte varit en del av uppdraget. Att i förhand beräkna kostanden för nyutveckling inom områdena som berör databasen kan bli svårt och kan kräva att man gör en liten förstudie där man migrerar lite data på prov och ser vilken omfattning på arbete som krävs. Version 1.1 – Marcus Gelderman, email: [email protected] 30 / 45 T e k n i s k a b i l a go r Hibernate Summering Hibernate är lösningen på problematiken att spara objekt (persistens), i detta fall Java-objekt, i en relationsdatabas för att uppnå så stora fördelar som möjligt ifrån båda världarna. Object Relational Mapping (ORM) heter begreppet och i praktiken är det ett system som omvandlar data som ligger i en eller ett flertal tabeller i databasen till ett Java-objekt. ORM omfattar även begreppet persistens; den mekanism/teknik som gör att data spara på ett säkert sätt och på ett annat medium är i själva minnet. Det finns andra lösningar en Hibernate, men Hibernate är den populäraste lösningen och i min mening den bästa lösningen för ORM i dagsläget. De vanligaste lösningarna utöver Hibernate är Enterprise Java Beans (EJB) och CMP entity beans/BMP entity beans, Java Data Objects (JDO) alternativt en egen lösning med hjälp av JDBC och egen java kod. Alla dessa tekniker kan ha någon fördel jämfört med Hibernate men ser man till hela helheten så är Hibernate i regel den bästa lösningen. Hibernate fungerar tillsammans med alla stora produkter på marknaden och alla populära open sourcelösningar. Hibernate själv är utvecklat som open source och finns att hämta på nätet ifrån http://www.hibernate.org. Hibernate i princip Principen för Hibernate är ganska enkel, helt vanliga Java objekt (POJOs – Plain Old Java Objects) serialieras i databasens tabeller enligt det reglerverk man beskrivit i konfigurationen för Hibernate. Alla förändringar i databasen sker via Hibernate och Hibernate genererar själv den SQL som behövs för att stödja de frågor och förändringar som utvecklaren vill göra. Utvecklaren behöver i princip bara tänka på hur man skall hantera Javaobjekten och lämna persisteringsfrågan åt Hibernate. Den SQL Hibernate genererar är i regel väldigt effektiv, men skulle man ha ett krav på att en fråga måste ställas på ett visst sätt är det möjligt att skriva egen SQL för en fråga. I och med att SQL:en genereras dynamiskt (…och vanligtvis vid systemstart) så är det möjligt och inte alls en allt för svår operation att byta databas efter att systemet har utvecklats. Hibernate har också stöd i en del utvecklingsmiljöer som t ex Eclipse och med hjälp av plug-in:er kan man få en närmare koppling till miljön under utvecklingsfasen. Hibernate går också utmärkt att integrera med de flesta test och utvecklingsmodeller och använder man exempelvis JUnit under ”normal” utveckling går det utmärkt att fortsätta med det även i ett Hibernate projekt. Hibernate är byggt ovanpå en del kända Apache open source-projekt och hämtar en del av sin funktionalitet ifrån Apache Commons-projekten. Hibernate nyttjar också en del open source-projekt från caching av objekt (cacha – att temporärt spara objekt i ett snabbt åtkomligt minne), vilket gör det möjligt att välja vilken ”cache provider” man vill ha (…eller ingen alls om man inte bryr sig om prestanda). Denna möjlighet att välja cache innebär att man exempelvis kan välja en distribuerande cache-implementering och på så sätt fördela prestanda Version 1.1 – Marcus Gelderman, email: [email protected] 31 / 45 över ett flertal installationer eller att man efter att systemet tagits i drift har möjlighet att genom konfiguration ändra till en lösning som kanske är mer lämpad för den uppgiften som skall lösas. Viktigt att nämna här är att i och med att Hibernate kommunicerar helt vanlig JDBC med databasen så fungerar det i de flesta fall alldeles utmärkt att nyttja de prestanda höjande lösningarna som databas tillverkaren redan erbjuder i sin lösning tillsammans med Hibernate. Figur 7: Hibernate systembild Prestanda och Hibernate Om man har satt upp Hibernate riktigt, använder en cache som passar lösningen rimligt och har skrivit Java-kod som är rimlig så skall man förvänta sig en prestanda som ligger i paritet med vad JDBC skulle ha gjort. Den SQL-kod som genereras av systemet är väldigt effektiv och det är väldigt få utvecklare som skulle få till en lika effektiv kod om de väljer att skriva egen SQL. Anser man att prestandan ligger under vad JDBC skulle ha gjort så skall man nog undersöka hur arv och mappningar av Java-objekten ser ut i koden. Anser man ändå att man kan skapa bättre prestanda med egen SQL eller har ett problem som inte går att lösa med det inbyggda frågespråket HQL (Hibernate Query Language) så hindrar inte Hibernate en ifrån att blanda in egen SQL om man så vill; Priset av att använda SQL i Hibernate är att om man skriver databas specifik SQL så förlorar man möjligheten att väldigt enkelt byta ut den underliggande databasen och blir tvungen att skriva om den SQL som man gjort för att får den att passa en eventuell ny databas dialekt av SQL och eftersom objekt cache:en hanterar Java-objekt kommer man inte kunna nyttja cache funktionaliteten för den SQL kod man skrivit (…troligtvis blir priset också sämre prestanda och/eller ett sårat ego hos ännu en utvecklaren som konstaterat att han/hon inte skrev bättre SQL än en maskin) Version 1.1 – Marcus Gelderman, email: [email protected] 32 / 45 Att förstå Hibernate Att lära sig Hibernate kan vara lite svår och en del av tiden går åt att förstå hur objektgrafen ser ut vid ett givet tillfälle och hur den kommer att se ut efter förändring (objektgrafen är den tänkta bild man skulle få om man ritade ut alla objekt och deras relation med varandra vid en given tidpunkt) och en stor del av den kritik som Hibernate har fått bygger ofta på att kritikern inte riktigt har förstått hur Hibernate fungerar eller när det är en lämplig teknik. Det är av största vikt att man lägger tid och energi på att lära sig hur Hibernate fungerar om projektet skall bli lyckat. Hibernate-kunskap För hjälp att lära sig Hibernate finns det kurser man kan gå, dessa kurser hålls i USA eller i Europa, men tyvärr har jag inte sett någon som har hållits i Sverige. Utöver kurser så finns det en väldigt bra bok; ”Java Persistence with Hibernate” (Christian Bauer & Gavin King; ISBN10: 1932394885 ISBN13: 9781932394887) som är skriven av de som ursprungligen utvecklade Hibernate och den fungerar även som referensverk. Vill man pröva och stegvis lära sig hur det fungerar så finns det även en något äldre bok som på ganska enkelt sätt beskriver de första stegen in i Hibernate världen; ”Hibernate: A Developer's Notebook” (James Elliott; ISBN10: 0596006969 ISBN13: 9780596006969). Utöver dessa böcker finns det ytterligare några fler skrivna i ämnet, samt ett hyfsat forum där man ges möjlighet att ställa frågor och om man har tur få ett bra svar. Snabbsummering för- och nackdelar Bra • Skapar ett oberoende till databasleverantören, ger möjlighet att byta databas relativt enkelt • Ger möjlighet till centraliserad och enhetlig konfiguration • Förkortar utvecklingstiden (när man förstår hur Hibernate fungerar) • Den del av koden som hanterar persistents blir mindre komplex. • Systemet blir relativt enkelt att underhålla och uppgradera i tack med ny teknik kommer. Dåligt • Lite hög inlärningströskel • Arvsmodellen kan vara svår att förstå Version 1.1 – Marcus Gelderman, email: [email protected] 33 / 45 JBoss Application Server (JBoss AS) Summering JBoss AS är en open source-baserad applikationsserver. JBoss AS uppfyller de krav som man kan ställa på en full Java EE (Java Platform, Enterprise Edition) implimentation. JBoss AS går utmärkt att köra på de flesta operativsystem där ibland Mac OS X, Linux eller Microsoft Windows. JBoss AS kräver en Java miljö version 1.4 senare (rekommendationen vid nyutveckling idag är att minst välja version 1.5 av Java). JBoss AS skalar bra mellan olika miljöer och är relativt snabb när man nyttjar den som utvecklingsmiljö. Den öppna licensmodellen innebär att man enkelt kan förse alla utvecklare med komplett utvecklingsmiljö på den egna maskinen utan några licenskostnader för applikationen. I och med att JBoss AS är den applikationsserver som använts för LpW så finns ju en del kunnande redan inom organisationen, skulle det inte räcka så går det utmärkt att köpa support (exempelvis från Redpill http://www.redpill.se). JBoss AS är en erkänd och välanvänd applikations server vilket innebär att det finns ett flertal konsulter i Sverige som kan erbjuda sina tjänster mot plattformen. Den öppna licensmodellen är också en ekonomisk faktor och kanske en möjlighet att krympa kostnaden för licenser och support. Standarder och tekniker som stöds av JBoss AS • Clustering • Failover (including sessions) • Load balancing • Distributed caching (using JBoss Cache, a standalone product) • Distributed deployment (farming) • Enterprise Java Beans version 3 • Aspect-Oriented Programming(AOP)-support • Hibernate-integration (for persistence programming;JPA) • Support for J2EE-Web Services like JAX-RPC (Java API for XML for Remote Procedure Call) • Java Message Service integration • JCA (Java Connector Architecture)-integration • JACC (Java Authorization Contract for Containers)-integration • EJB 2.1-specification • JSP/Servlet (Tomcat) • RMI-IIOP (JacORB, alias Java and CORBA) • JTA (Java Transaction API) • JDBC • SAAJ (SOAP with Attachments API for Java) • JNDI (Java Naming and Directory Interface) • JAAS (Java Authentication and Authorization Service) • JavaMail Version 1.1 – Marcus Gelderman, email: [email protected] 34 / 45 • Deployment API • Management API Version 1.1 – Marcus Gelderman, email: [email protected] 35 / 45 Web Service, SOAP och WSDL Web Service Begreppet Web Service är definierat av W3C (World Wide Web Consortium) till "a software system designed to support interoperable machine-to-machine interaction over a network". Web Service som grund innebär att man publicerar tjänster (tjänsterna är i praktiken motsvarigheten till funktioner i ett proceduriellt programmeringsspråk). Dessa tjänster kan anropas av omkringliggande system men även internt ifrån samma system. Vanligtvis kan man se Web Service-tjänsterna som ett Webb API. SOAP SOAP är ett protokoll för utbyta XML-baserade meddelande över ett nätverk. Vanligtvis är protokollen http eller http/s de bärande protokollen för informationen, men SOAP-standarden tillåter andra protokoll; exempelvis SMTP. Tidigare stod SOAP för ”Simple Object Access Protocol” men i och med version 1.2 av standarden så släppte man den utläsningen av förkortningen eftersom den ansågs missvisande (Vad man förväntar sig att förkortningen SOAP skall stå för nu har inte gått att utröna). Bland fördelarna med SOAP är att det är plattforms- och språkoberoende och det är ett enkelt protokoll att få igenom brandväggar och proxie servrar. Nackdelarna anses vara att det är XML-baserat och följaktligen skickas det mer data, vilket gör att det anses som långsammare än andra protokoll särskilt då stora datamängder skall utväxlas. Web Services Description Language (WSDL) WSDL är ett sätt att beskriva hur en Web Service tjänst skall anropas. Nuvarande version av WSDL-standarden är nu på 2.0 och en rekommenderad standard ifrån W3C (World Wide Web Consortium) – W3C Recommendation (REC). När man väljer verktyg för att utveckla Web Services skall man vara lite vaksam eftersom en hel del av verktygen endast genererar WSDL: er som uppfyller 1.1 av standarden. Att nyttja WSDL: er är inget måste om man vill använda sig av Web Service men man bör komma ihåg att WSDL dokumentet (i praktiken är det en XML-fil) är samtidigt dokumentationen över hur anrop av Web Service tjänsten skall ske. Rent praktiskt brukar det bara ytterst fördelaktigt att nyttja WSDL: er både ur Web Service tjänsteleverantörens synkvinkel, då det ofta innebär ytterst marginellt mer arbete för att få fram en WSDL och ur tjänste konsumentens synvinkel, då det ofta bara är att mata utvecklingsmiljön med WSDL: en för att få fram kod som kan ansluta till Web Service-tjänsten automatiskt. Version 1.1 – Marcus Gelderman, email: [email protected] 36 / 45 XML Extensible Markup Language (XML) är ett generellt ”markup language”. Ursprunget till XML kommer ifrån Standard Generalized Markup Language (SGML) men XML har designats så att det skall vara lite enklare. XML är i dag en av de största standarderna för informations utbyte och serialisering av data. I och med XMLs utbreddhet finns det stöd för XML i de flesta programmeringsspråk, antingen direkt i språket eller via tillägg till programmeringsspråket. XML är en fri öppen standard och dess användning rekommenderas av World Wide Web Consortium (W3C). Version 1.1 – Marcus Gelderman, email: [email protected] 37 / 45 XML Schema En XML Schema Defintion (XSD) har vanligtvis filändelsen ”.xsd” och är i praktiken en XML fil. XML Schema är ett bra sätt att verifiera att en XML-fil innehåller de värden man förväntar sig och följer de syntaktiska regler man har definierat för sin XML fil och den data som skall utbytas. XML Schema är ett bra och oklanderligt sett att dokumentera XML-filer på. I de flesta programmeringsspråk finns det möjlighet att validera en XML-fil mot en XML Schema Defintion. I Java finns mekanismer för att omvandla en XML-fil till en Java böna (se JAXB) enligt den mall som XML Schema Defintion har definierat. Användandet av XML Schema är oftast inte så utbrett och tekniken missuppfattas ofta som krånglig och svårhanterad. Rätt använd ger den möjlighet till ett otroligt väldefinierat data utbyte med möjlighet till avancerade kontroller av data mot ett eget definierat regelverk. Kombinerat med tekniker som JAXB så ger den en otrolig tidsbesparing. I många fall kan det inte vara försvarbart att inte nyttja fördelarna med XML, XML Schema och JAXB när man ser hur mycket utvecklingstid man kan spara in. Version 1.1 – Marcus Gelderman, email: [email protected] 38 / 45 Java Architecture for XML Binding (JAXB) JAXB erbjuder teknik för att kunna serialisera och deserialisera Java-bönor. JAXB är inget underverk av högteknologi men erbjuder istället en teknik som rätt använd sparar väldigt mycket tid under utvecklingsstadiet av ett system. Nyttjandet sker i två steg. JAXB kompilatorn skapar java klasser utifrån ett XML Schema. I Steg två använder utvecklaren de skapade klasserna för att omvandla ett XML meddelande eller fil till en Java böna som ligger i minnet. Version 1.1 – Marcus Gelderman, email: [email protected] 39 / 45 Spring Framework Spring är ett open source ramverk för Java Enterprise lösningar. Spring kan användas på många olika sätt och ger ett bra stöd för att enklare kunna nyttja Hibernate i en webblösning. Som ramverk är Spring ganska enkelt och det kräver inte att man använder all funktionalitet utan ger utvecklaren möjlighet att set till behoven och sedan välja vilka delar som man nyttja av ramverket. Det som gjort Spring populärt är det extra stöd man får av ramverket för att bygga webbapplikationer och Spring erbjuder färdiga lösningar på några av de lite kluriga problemen man kan stöta på som Java Enterprise Edition (Java EE) utvecklare. Några av funktionerna som gör Spring Framework unikt är: Inversion of Control container Inversion of control (IoC) bygger på den kända Hollywood-principen ”ring inte oss; vi ringer dig”. I praktiken innebär detta att applikationen blir lite bättre integrerad och man får en högre grad av återanvändning av skapad kod. Aspect-orienterad programmering Aspect-oriented programming (AOP) och aspect-oriented software development (AOSD) är ett försök hjälpa utvecklaren att separera funktionalitet så mycket som möjligt. I de flesta fall kan man enkelt separera funktionaliteten i paket, klasser eller metoder, men det finns vissa undantag som exempelvis funktionalitet för loggning. Loggning dyker upp på ett flertal ställen i koden. Ibland utvecklare brukar detta kallas ”cross-cutting concerns” eftersom kravet på funktionalitet skär igenom paket, klasser och metoder. Aspekt-orienterad programmering är kortfattat ett försök att även kapsla in sådan funktionalitet. Data access och Transaction management ramverk Data access och Transaction management ramverken underlättar för integration av exempelvis Hibernate och gör att utvecklaren kan nyttja färdiga lösningar på några av de klurigheter som kan uppstå. Version 1.1 – Marcus Gelderman, email: [email protected] 40 / 45 ESB (Enterprice service bus) ESB är ett arkitekturbegrepp inom systemutveckling och syftar på någon form av middleware eller integrationslösning. ESB är lösningen för att kunna skicka meddelande mellan olika komponenter i ett system eller mellan olika system. Tanken är att på samma sätt som bussen i en dator kan välja att skicka en ström med data till hårddisken, minnet eller till grafikkortet så skall de olika systemkomponenterna gå att nå i ett större system via ESB:n. Det finns en mängd produkter att välja mellan för att lösa ESB frågan och för att få rätt produkt behöver den utvärderas mot de system som den skall kopplas emot. Java världen har legat lite efter med bra produkter för systemintegration och vissa lösningar är lite väl fyrkantiga för att passa i ett större perspektiv. Vanligtvis har man ju krav på att kunna kommunicera med väldigt varierande system och över väldigt varierande kommunikationsprotokoll så det är av yttersta vikt att man har inventerat behovet innan man bestämmer sig för en produkt. Om man är intresserad av Java-baserade open source-lösningar så finns det i alla fall två lösningar som man bör kika på: xBus (http://xbus.sourceforge.net/) Apache ServiceMix (http://servicemix.apache.org/) Vill man ha en ren JMS-lösning så kan man även JBoss Messaging (http://www.jboss.org/jbossmessaging/) vara ett alternativ (se JMS). Version 1.1 – Marcus Gelderman, email: [email protected] 41 / 45 Java Message Service (JMS) Java Message Service (JMS) API är ett ”Java Message Oriented Middleware” (MOM) API för att skicka meddelanden mellan två eller fler klienter. JMS är en del av Java EE (Java Platform, Enterprise Edition) och är definierad i Java Community Process as JSR 914. JMS stödjer två både point-to-point (queuing) mode samt publish and subscribe mode. När man väljer att skicka point-to-point så kan det bara finnas en mottagare till meddelandet och man har en hantering för att se att mottagaren har mottagit meddelandet. Mottagaren av meddelandet behöver inte vara tillgänglig när meddelandet skall skickas och sändaren behöver inte vara tillgänglig när ett meddelande skall tas emot. Väljer man skicka med publish and subscribe så kan man ha flera mottagare av ett meddelande. Är man inte lyssnande när ett meddelande skickas så missar mottagaren det meddelandet (Det finns undantag till och det går att skapa en prenumeration som åter sänder de meddelande man eventuellt har missat om man inte har varit ansluten). Det finns ett flertal JMS-leverantörer och det finns en abstraktions mekanism i implementeringen som gör att man kan återanvända sin kod om man av någon anledning väljer att byta JMS-implementation. Viktigt att notera är att två olika leverantörers JMS-lösningar inte behöver fungera särskilt bra tillsammans och ibland inte alls; bäst resultat får man om man uteslutande väljer en leverantörs JMS-lösning. JBoss har en JMS-lösning i sitt system (JBoss Messaging) och Apache har sin Apache ActiveMQ (http://activemq.apache.org/): Andra kända open source JMS-lösningar är OpenJMS (http://openjms.sourceforge.net/) och JORAM (http://joram.objectweb.org/). Om man vill föredrar att betala en licenskostnad för JMS-implementationen så erbjuder i alla applikationsservertillverkare och några fristående företag en JMS-lösning där kanske IBMs Websphere MQ och SonicMQ är de mest kända produkterna. De mest kända leverantörerna är troligtvis Oracle, IBM, BEA Weblogic, TIBCO samt SAP AG. Version 1.1 – Marcus Gelderman, email: [email protected] 42 / 45 JUnit JUnit JUnit är ett Java ramverk för enhetstester. JUnit är väldigt enkelt att använda och kräver inte så mycket energi av utvecklaren för att skriva testerna. I och med att JUnit är så pass lättanvänt som det faktiskt är så bör man lägga lite mer energi på att fundera ifall de testerna man skrivit är relevanta. Konventionen säger att ett testcase namn skall avslutas med ”Test” och en metod skall börja med test. Koden nedan visar hur en bit test kod kan se ut. I detta fallet använder man Java annotation för att markera vad som är ett testcase public class HelloWorld { @Test public void testMultiplication() { // Testing if 3*2=6: TestCase.assertEquals ("Multiplication", 6, 3*2); } } Version 1.1 – Marcus Gelderman, email: [email protected] 43 / 45 Asynchronous JavaScript And XML (Ajax) Asynchronous JavaScript And XML – Ajax är samlingsnamnet på en webbteknik där man låter JavaScript-kod ute hos klienten kommunicera med servern via det vanliga http eller http/s protokollet men skillnaden är att man dynamiskt uppdaterar vad användaren ser. Den stora fördelen med denna teknik är att webbapplikationen blir betydligt mer lik en traditionell vanlig applikation eller en fet klient fast man inte kräver någon installation ute hos klienten. Denna teknik är väldigt vanlig och används på de flesta större webbplatser i någon form. Nackdelarna med tekniken är att den är lite pillig att få till och att man ställer höga krav på att utvecklingsmiljön är snabb så man kan snabbt göra ändringar och testa. Utvecklingen bedrivs ofta i snabba ändra, testa, ändra och testa cykler. En annan nackdel är att variationer i implementering av webbläsarna göra att man är tvungen att testa mot alla de läsare som man bestämt sig skall stödja och kan tvingas göra unika lösningar för vissa av webbläsarna. En stor fördel är att de nyare mobila plattformarna som exempelvis Apples iPhone har ett bra stöd för JavaScript i webbläsaren och att en webblösning som fungerar bra mot Apples webbläsare Safari fungerar med få eller inga modifieringar mot den mobila plattformen. Tidigare har möjligheterna att bygga en bra klientmiljö för mobila enheter varit väldigt kostsamt och svårt eller rent ut omöjligt. Version 1.1 – Marcus Gelderman, email: [email protected] 44 / 45