Disweb
Disweb - Dis webtjänst för släktforskning
Disweb är ett projekt som syftar till att utveckla en modern släktforskningstjänst på webben baserad på all den erfarenhet som finns inom Dis. Disweb kan beskrivas som ett Web-baserat Disgen. Disweb är baserat på följande krav.
- funktionella krav som är realiserade i nuvarande Disgen
- funktionella krav som finns redovisade i kravspecifikationer för framtida disgen
- tekniska krav som man kan ställa på en modern webbtjänst
- interaktionskrav som modern webbteknologi gör det möjligt att realisera
Utvecklingsplaner
För närvarande håller vi på med att utveckla Disweb 1.4. Denna version har begränsade utskrifts- och kartfunktioner men web2-baserade interaktionsformer och en databas som klarar moderna familjerelationer och andra nya krav på disgen. Denna version har också ett begränsat stöd för samverkan och internetbaserad släktforskning. Disweb 1.4 består av ca 200 funktioner, 30 databas tabeller och 8000 rader av kod.
Eftersom vi tillämpar en agil utvecklingsfilosofi (se nedan) så finns inga fasta utvecklingsplaner utan efter varje version utvecklas det som är mest angeläget. Framtida versioner bör dock tex innefatta tex bra presentationsfunktioner, API till externa program som SVAR, olika former av forskningsstöd, stöd för web baserad kommunikation och samverkan, funktioner som finns hos konkurrenter och som vi bedömer är angelägna, versioner för iphone, ipad mm. Listan kan göras hur lång om helst.
Utvecklingen av Disweb har hittills skett m.h.a. mycket begränsade resurser (en person har ensamt ansvarat för utveckling och utformningen av Disweb med hjälp av en test och referensgrupp). Nu behövs det flera utvecklare för att klara målen. Alla som är intresserade av att hjälpa till - maila This e-mail address is being protected from spambots. You need JavaScript enabled to view it .
Utvecklingsförutsättningar
Disweb är ett open source projekt. Detta innebär att Disweb baseras på källkod som utan kostnad kan laddad ned från nätet och att källkoden oftast är utvecklad av ett nätverk av utvecklare som bedriver denna verksamhet oavlönad. Det innebär också att den kod som utvecklas inom Disweb skall vara tillgänglig för nedladdning enligt MIT-Licensen.
Utvecklingen av Disweb är en oavlönad verksamhet liksom all annat Dis verksamhet. Utvecklingsförutsättningarna är därför andra än i traditionellt utvecklingsarbete. Utvecklingsarbete måste vara både rolig, intressant, lärorik, självförverkligande och utmanande för att motivera utvecklarna. För att uppfylla dessa förutsättningar baseras utvecklingsarbetet på följande grundläggande förutsättningar.
- Verksamheten är baserad på en modern teknologi och en modern utvecklingsmiljö.
- Arbetet är kvalitetsstyrd snarare än tidsstyrd dvs. koden och designen bearbetas tills utvecklaren är nöjd med resultatet
- Utvecklingsprocessen är Agile dvs den betonar individer i samverkan före processer och verktyg, fungerande mjukvara över komplex dokumentation, användarsamverkan före kravkontrakt och förändringsberedvillighet före planstyrning
Utvecklingsmiljö och utvecklingsprinciper
Disweb utvecklas m.h.a. Rails, en utvecklingsmiljö för Web 2 teknologi som använder Ruby som server skript språk och HTML, CSS och ’Unobtrusive JavaScript’ för klient programmering.
Ruby är ett modernt effektivt, objektorienterat självbeskrivande, skript-baserat programmeringsspråk. Rails utvecklingsmiljö är baserad på Smalltalks model- view- controller koncept som knyter ihop databasen med Web. Web2 innebär att användarna ska ha stora möjligheter till interaktivitet och samarbete och att detta bl.a. realiseras med Asynkron Javascript (Ajax) som gör det möjligt att uppdatera sidor utan att ladda om.
Denna utvecklingsmiljö konkretiserar de allmänna utvecklingsförutsättningarna i följande mer specifika principer för utvecklingsarbetet.
- DRY – “Don’t Repeat Yourself” – Upprepning av kod skall undvikas mha rails olika tekniker för detta
- Convention Over Configuration – Rails baseras på antagande om vad man vill göra och hur man gör det istället för konfigureringsinställningar. Ett exempel på detta är att man måste följa det engelska språkets principer när det gäller namn.
- REST– Webtjänster är strukturerad i resurser, dvs tjänsten är dataorienterad och inte funktionsorienterad.
- Unobtrusive design som separerar beteende ifrån innehåll och presentation.
- Refactoring Koden bearbetas kontinuerligt för att åstadkomma bästa strukturering
- Testdriven utveckling. Först skrivs testprogram för de krav som skall realiseras, därefter skrivs den kod som realiserar kraven
- Reuse av källkod, både egen mha av moduler, bibliotek, partials etc och andras mha plugins och gems
- Användarorienterad design som betonar bl.a Interaktionsprinciperna konsistens, behålla fokus, enkelhet, effektivitet och självförklarande
Dessa principer tillämpas i utvecklingsarbetet med undantag för principen om Testdriven utveckling som inte tillämpats på grund av resursbrist. Vi hoppas kunna ändra på det nu. För mig har detta inneburit en hel del nytänkande som varit både lärorikt intressant och utmanande.
Utmaningar
Att bedriva utvecklingsarbete enligt ovanstående principer har varit både intressant, lärorikt och utmanande. De största utmaningarna både design- och kod mässigt har bl.a. gällt följande problem
- dB modell. Databas modellen är komplex och innefattar många svåra problem och övervägande rörande balansen mellan normeringar, enkelhet, effektivitet och flexibilitet. Ett exempel på detta är modellering av personrelationer.
- funktionalitet. Inom släktforskningen krävs det en mycket komplex funktionalitet för att täcka 100% av användningen, under det att många förenklingar kan göras om kraven begränsas till att täcka 80 %. Att finna den optimala balansen mellan dessa två ytterligheter har verkligen varit en utmaning
- flerspråkighet. Disweb är flerspråkigt i alla avseenden (menyer, kommandon sorter, tidsformat, namn etc – för närvarande ca 1700 termer), och att utveckla stöd för detta och realisera en fullständig flerspråkighet har varit en svår uppgift.
- testning. Den testning som sker är osystematisk och syftar mer till att utvärdera utformningen än till att testa funktioner. Eftersom antal funktioner idag är ca 200 st. och varje bör testas ifråga om många aspekter är testningen ett svårt problem
- Resursinriktningen För mig är detta ett nytt sätt att tänka och att strukturera tjänsten i resurser istället för funktioner har varit en svår utmaning.
- Dynamiken. Rails och Ruby uppdateras som alla open source system relativt ofta (ca 1 gång per år sker större uppdateringrar) och man kan inte vänta för länge med att följa med i uppdateringarna utan att kvaliten blir lidande, eftersom nya möjligheter, designprinciper och kodbibliotek införes i syfte att skapa effektivare system. Att klara detta i ett projekt med så begränsade resurser som Disweb är en stor utmaning.
- Webläsarkompabilitet Disweb skall ju fungera på så många typer av webäsare som möjligt och att sätta sig in i alla olika läsares egenheter är verkligen en stor utmaning.
Dokumentation och kod
Själva koden finns tillgänglig här för de medlemmar som önskar ladda ner den. För att testa koden behövs dock den utvecklingsmiljö som finns beskriven ovan. Kontakta This e-mail address is being protected from spambots. You need JavaScript enabled to view it för information om hur denna installeras.
Vidare diskussion
Använd gärna Disweb-gruppen i DIS Forum.


