Utvecklingsmiljö Version 2.0 Ladok3-projektet 2012-09-06 Mikael Berglund Sida: 1 (7) Utvecklingsmiljö Ladok3 Utvecklingsmiljö Version 2.0 Ladok3-projektet 2012-09-06 Mikael Berglund Sida: 2 (7) Innehåll 1 Introduktion .....................................................................................................................4 2 Verktyg .............................................................................................................................4 2.1 IDE ........................................................................................................................4 2.2 Applikationsserver .................................................................................................4 2.3 Ramverk ................................................................................................................4 2.4 Acceptanstest .........................................................................................................5 2.5 Utforskande tester ..................................................................................................5 2.6 Lasttester ...............................................................................................................5 2.7 Gränssnittstester .....................................................................................................5 2.8 Byggserver ............................................................................................................6 2.9 Byggverktyg ..........................................................................................................6 2.10 Operativsystem ....................................................................................................6 2.11 Versionshantering ................................................................................................6 2.12 Wiki ....................................................................................................................7 Utvecklingsmiljö Version 2.0 Ladok3-projektet 2012-09-06 Mikael Berglund Sida: 3 (7) Utgåvehistorik för dokumentet Utgåva Datum Kommentar 1.0 2011-10-04 Första version 1.1 2011-11-09 Lagt till verktyg 1.2 2011-11-10 Lagt till lasttester 1.3 2012-01-03 Lagt till mer om Spring 2.0 2012-01-18 Andra version Utvecklingsmiljö Version 2.0 Ladok3-projektet 2012-09-06 Mikael Berglund Sida: 4 (7) 1 Introduktion Detta dokument beskriver hur utvecklingsmiljön för Ladok3 installeras. Många av verktygen baseras på tidigare erfarenhet i NyA och Ladok samt andra projekt som bedrivs på ITS. Det är inga experimentella verktyg som är föreslagna. Verktyget Cucumber som skall användas för acceptanstester är kanske det mest oprövade kortet. Det finns alternativa verktyg som JBehave eller Concordion om Cucumber inte skulle möta behoven. 2 Verktyg 2.1 IDE För själva programmeringen används Eclipse, som har visat sig bli det mest populära open source-alternativet. Samma verktyg används i både nuvarande Ladok-förvaltning och för NyA. I NyA används IBMs utökade Eclipse som heter Rational Application Developer. Eftersom Spring är ett fundament i modern Java-utveckling används den version av Eclipse som är optimerad för Spring-ramverket. Eclipse SpringSource Tool Suite, 2.7.2 är den kompletta IDE som används för Ladok3. http://download.springsource.com/release/STS/2.7.2/dist/e3.7/springsource-tool-suite2.7.2.RELEASE-e3.7-win32-installer.exe 2.2 Applikationsserver Historiskt sett har olika applikationsservrar varit det de-facto-sätt som serverbaserade Java-applikationer blivit driftsatta. Som exempel kan vi ta NyA som nu är driftsatt på IBM WebSphere Application Server eller Ladok på Web som är driftsatt på JBoss. Den komplexitet som en komplett applikationsserver innebär är inte längre nödvändig. Ett enklare sätt att utveckla och driftsätta applikationer är att använda servletmotorn Tomcat. För de allra flesta applikationer behöver man inte något mer. I Ladok3 används Tomcat 7.0.22. Om situationen uppstår där mer funktionalitet behövs är det enkelt att migrera till en komplett applikationsserver. http://apache.mirrors.spacedump.net/tomcat/tomcat-7/v7.0.22/bin/apache-tomcat7.0.22.zip 2.3 Ramverk Det ramverk som är de facto-standard i Java-världen är numera Spring. Tidigare har Enterprise Java Beans varit det gällande valet, men med en enklare Utvecklingsmiljö Version 2.0 Ladok3-projektet 2012-09-06 Mikael Berglund Sida: 5 (7) programmeringsmodell och ett mer omfattande stöd för applikationsutveckling, har medfört att Spring nu tagit över. Det enda realistiska alternativet är att använda CDI-standarden. Akronymen står för Java Contexts and Dependency Injection for the Java EE platform. I dagsläget finns det bara en implementation och det är Apache Weld som inte är lika mogen som Spring. Vi bedömer att de båda teknikerna kommer att vävas ihop inom en snar framtid. Spring kan redan idag använda sig av de annoteringar som finns i CDI-standarden. 2.4 Acceptanstest I Ladok3 skall körbara acceptanstester driva utvecklingen. För att göra det på enklaste sätt används verktyget Cucumber. Testerna skrivs i ett format som verksamhetsrepresentanter kan förstå och kan exekveras i en testmiljö. Dessa tester blir då en levande dokumentation stöd för utvecklingen i ett. Ett exempel: Egenskap: Registrera student För att få studera på högskolan Som student Vill jag kunna registrera mig Scenario: En kurs Givet att jag är antagen på en kurs När jag klickar på registrera Så ska resultatet vara ”Registrerad” på skärmen Fördelen med Cucumber är att verktyget är översatt till Svenska. https://github.com/cucumber/cuke4duke 2.5 Utforskande tester 2.6 Lasttester En viktig aspekt av ett systems acceptans och stabilitet är förmågan att hantera hög belastning. För att möjliggöra det krävs regelbundna lasttester. För närvarande är det NeoLoad som har tagit ledningen jämfört med andra verktyg som LoadRunner, Rational Performance Tester, OpenSTA och JMeter. Vi föreslår därför att NeoLoad skall användas för lasttester i Ladok3. http://www.neotys.com/product/overview-neoload.html 2.7 Gränssnittstester För att automatiskt testa användargränssnittet behövs ett verktyg för det. Eftersom Ladok3 har ett webbgränssnitt används ett verktyg som speciellt anpassat för det kravet. Selenium uppfyller kraven och används i både Ladok och NyA. Utvecklingsmiljö Version 2.0 Ladok3-projektet 2012-09-06 Mikael Berglund Sida: 6 (7) http://release.seleniumhq.org/selenium-ide/1.3.0/selenium-ide-1.3.0.xpi 2.8 Byggserver För att hantera alla mjukvarubyggen och automatiska tester behövs ett byggverktyg som körs på en gemensam server. Tidigare har Huson varit det givna valet, men efter en konflikt mellan Oracle och den open source-community som drivit projektet har det delats upp i två. Det andra projektet heter Jenkins och bygger vidare på Hudson. I Ladok3 väljer vi att följa den open source-community som finns och använder Jenkins. http://mirrors.jenkins-ci.org/war/latest/jenkins.war 2.9 Byggverktyg För att köra tester och skapa distribuerbara delar av mjukvaran används ett byggverktyg. Tidigare har Ant varit det mest populära, men Maven har på senare tid växit sig stark. Fördelen med Maven är de inbyggda profilerna som skapar t.ex. en webbapplikation och kör tester. Många andra verktyg integrerar med Maven, t.ex. Jenkins och Eclipse. http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.0.3-bin.zip 2.10 Operativsystem Ladok3 behöver driftsättas i en servermiljö. Java och Linux har länge använts ihop och ger bra prestanda och enkel installation. Ladok3 använder samma operativsystem som NyA och Ladok, Red Hat Enterprise 6 på 64-bitar. Fördelen med att använda Red Hat är att vi får ett supportavtal och snabb tillgång till säkerhetspatchar. Red Hat är också optimerat för virtualisering och eventuell drift i molnet. https://rhn.redhat.com/rhn/software/downloads/SupportedISOs.do 2.11 Versionshantering För versionshantering av kod och dokument finns det en stor mängd olika verktyg. Om man reducerar ned floran till de mest använda finns det inte så många kvar. Vi har inte valt att använda ett distribuerat versionshanteingssystem eftersom vi inte bedriver utveckling efter den modellen. Kvar finns då i stort sett bara open-source-verktyget Subversion och IBMs ClearCase. ClearCase är inte lämpligt för nya projekt eftersom det har dyra licenskostnader och inga funktionella fördelar jämfört med Subversion. Vi har därför valt att använda Subversion 1.7.1 för versionshantering i Ladok3. http://subversion.apache.org/packages.html#redhat Utvecklingsmiljö Version 2.0 Ladok3-projektet 2012-09-06 Mikael Berglund Sida: 7 (7) 2.12 Wiki För att kunna definiera domänmodellen och kommunicera på ett bra sätt i projektet skall en Wiki användas. Det finns många olika Wiki-programvaror. Vi har valt att använda Atlassians Confluence. Det finns flera anledningar till det. Bl.a. så är det samma leverantör som gör JIRA som används för hantering av åtgärder för Ladok. Det gör att man kan använda samma användaruppgifter i de båda systemen. I många fall kommer det att vara samma personer som har tillgång till JIRA och Ladok3s Wiki. Många organisationer använder Confluence, däribland NORDUnet och SWAMI. Det går också att koppla Confluence till UML-diagram som skapas med verktyget Gliffy.