9.5.1 Struts
Det tog några dagar att bekanta sig med Struts, att förstå det grundläggan- de tankesättet. När detta var gjort gick det ganska raskt att komma igång med själva webbutvecklandet och lära sig mer allt eftersom. Enkla saker är väl dokumenterade i böcker och på olika webbplatser men när man an- vände och kombinerade mer avancerade funktioner kunde det ibland bli svårare att hitta bra dokumentation.
De två största fördelarna med Struts var kontrollmekanismen i konfi- gurationsfilen och den praktiska hanteringen av bönor med formulärdata. I kontrollmekanismerna kunde vi bland annat specificera vilka webbsidor som skulle visas beroende på resultatet av en metod.
Sammanfattningsvis menar vi att Struts är användbart och stödjer ett strukturerat upplägg av webbprojekt och hjälper utvecklaren att utveckla klokt. Dessutom erbjuds många hjälpkomponenter som kan spara mycket tid, till exempel validering och loggning. Struts kan däremot vara mindre lämpat för små projekt som inte ska använda andra Javaklasser eller köras i en webbehållare (eng.web container).
9.5.2 Användbarhetsfrågor
Den enskilt största svårigheten ur ett användbarhetperspektiv var att tyd- liggöra begreppen på ett lättförståeligt sätt. Efter att i princip alla testan- vändare haft problem med begreppen ”enkät” och ”enkätundersökning” kapitulerade vi och övergav vår ursprungliga plan med de i våra ögon korrekta termerna. Det hjälper inte att man tror sig använda korrekta ter- mer om de inte går att kommunicera och använda begripligt.
Den andra stora frågan var hur frågorna kom in i bilden. Eftersom des- sa ännu inte skapas i designapplikationen var det svårt att se hela flödet. Detta blev tydligare, men inte glasklart, när flikar för dessa ännu inte im- plementerade funktioner dök upp.
9.5.3 Jämförelse mellan servlets och andra tekniker
Vi tror att samma funktionalitet hade kunnat uppnås snabbare om appli- kationen hade utvecklats i exempelvis PHP3 och MySql4 eftersom inlär-
ningströskeln var högre för oss vid användandet av servlet-tekniken och Struts-ramverket. Vi tror dock att applikationerna har blivit bättre struk- turerade och mer utbyggnadsbara när vi använt servlets och Struts. En fördel med att använda Java är att vi med lätthet kan använda befintliga bibliotek av metoder, vilket vi till exempel gjorde vid krypteringen.
9.5.4 Uppdelning i lager
Användandet av trelagerstrukturen MVC har varit en fördel. Framför allt
blir det enkelt att ändra saker i programmen under utvecklingen. Vi har 3URL:http://www.php.net
9.5. Diskussion av lösningsval 91
även haft stor nytta av att all text som visas på webbsidorna finns samlad i en textfil. På grund av lageruppdelning och Struts gick det fort att lägga till en extra funktion. Ta-bort-enkät-funktionen tog 45 minuter från idé till att det var förverkligat. Vi hade även stor nytta av detta vid utvärderingen av gränssnittet som inte måste vara klart innan resten av programmet.
9.5.5 Datalagring
Vi valde till stor delXMLför att vara oberoende av olika databashanterare.
Istället för tillgång till en databashanterare krävs möjlighet att skriva och läsa till filer. Om en databashanterare används sköts en del av säkerheten av denna men om filer används regleras åtkomsten via rättigheter på filer och kataloger. De användare som har tillgång till denna del av filsystemet kan manipulera filerna. Enkätsvaren lagras dock krypterat och kan endast läsas in från svarsapplikationen.
Import och export blir okomplicerad i och med användandet avXML-
formatet. En nackdel med XML är dock att det kan vara bökigt att ta ut
en komplicerat avgränsad mängd data från filen samt att skriva ner datat från en formulärböna till en vissXML-struktur.
Lagringen iXML-filer har medfört en hel del extra klurande och pillan-
de vid bland annat nedskrivning av svar från en enkät samt vid konstruk- tion avXSLT-filen. Det hade gått enklare att använda en databas men vi är
ändå nöjda med vårt val eftersom vi slipper beroendet av en databas samt kan använda samma format både internt och externt.
9.5.6 P
ULVi har försökt att utreda hur vår applikation påverkas av PUL men inte
anpassat den fullt ut. Innan användning i verkligheten bör detta grans- kas ytterligare. Det är oklart om det krävs en längre text i svarsformuläret om vilken information som kan begäras ut av uppgiftslämnaren etcetera och det är svårt att veta om något undantag påverkas. Krypteringen torde dock vara tillräcklig och väl anpassad för det som ska krypteras.
Troligen behövs en kontaktperson för varje publicerad undersökning men detta har vi inte implementerat stöd för. Det borde dock vara lätt att lägga till lite information i sessionsbönan UserView som vi skriver till i
9.5.7 Inbjudningar
Användandet av e-post är mycket utbrett och samtidigt effektivt och bil- ligt. Den stora nackdelen är att det är svårt att skicka e-post krypterat så att alla mottagare kan ta del av inbjudningen smidigt utan några större förkunskaper. Vi har inte utrett huruvida det är oklokt eller inte att skic- ka inbjudningar som två separata meddelanden för att försvåra att någon tjuvläser inbjudningarna.
Ett annat dilemma som vi har haft är om inbjudningarna ska skickas samtidigt som enkäten publiceras eller inte. Slutligen valde vi att göra allt samtidigt, men om något blir fel vid publiceringen av enkäten skickas för- stås inga e-postmeddelanden ut.
9.5.8 X
SLTEfter att den dynamiska valideringen tillkom i svarsdelen fick vår XSLT
generera enJSP istället för en HTML-sida. Det krävde en del trixande som
gör att vårXSLT-fil inte är så enkelt uppbyggd. Ett alternativ till den var att
genereraJSP-sidan dynamiskt direkt i Java-kod, men det är inte säkert att
det blir så mycket enklare för det. Men vi borde i så fall kunna få ett över- skådligare program, och kanske blir det lättare att validera nya frågetyper eller datatyper på ett mer dynamiskt sätt.
9.5.9 Flexibilitet kring frågetyper
De ändringar som behöver göras för att skapa en ny frågetyp är följande:
• Frågetypen måste beskrivas iDTD-filen.
• I XSLT-filen måste funktionalitet för att generera JSP-kod för denna
frågetyp läggas till.
• Vid nedskrivning av svaren måste man se över så att namngivningen av formulärelementet inte strider mot något i den använda algorit- men.
• Även valideringsalgoritmen måste verifieras. Om man vill ha annan validering än att svar har givits, måste detta läggas till.