• No results found

Det finns många system som liknar det som designats/implementerats i detta examensarbete men som på olika sätt är mer specialiserade och anpassade för mer specifika ändamål. Dessa system har generellt mer funktionalitet som är anpassat till ändamålet och det omkringliggande textverktyget om man jämför med examensarbetets system.

Några exempel på andra textsamarbets-system är Etherpad1, SubEthaEdit2, ACE3, Gobby4m.fl. Dessa

system har extra stöd för användaren i form av t.ex. olika bakgrundsfärg för att skilja på vilken klient som skrivit vilken text, visning av andra klienters markörer, chat m.m. Denna typen av extra funktio- nalitet är något som saknas i examensarbetets system, vilket även många av testanvändarna saknade i utvärderingen, se sektion 5.1. Det går att bygga ut protokollet samt klienter och server för hantera denna typ av funktionalitet, som tidigare nämnts i design-kapitlet så går det att göra även utan att bara bygga ut protokollet, servern samt bara några klienter utan att detta stör de klienter som inte har stöd för denna funktionalitet. Problemen med att göra denna typ av utökning är minst två. För det första kom- mer det krävas mer av de textredigerare där den nya funktionaliteten ska läggas till, dvs textredigeraren måste ha stöd för t.ex. att ändra bakgrundsfärgen på texten. Antalet textredigerare där det är möjligt att implementera ramverket fullt ut minskar då för varje ny funktionalitet som läggs till. För det andra så blir det mer att implementera i varje klient och därmed tar det längre tid att översätta det generiska samarbetsramverket till en ny klient.

Etherpad är kanske det av de ovan nämnda systemen som mest liknar examensarbetets ramverk, det är ett webb-baserat system, vilket medför att även det utgår ifrån en klient-/servermodell. För att kommunicera använder även den HTTP/JSON. Förutom att systemet som nämnts ovan har mer funktionalitet för att assistera användaren, så märker man vid en snabb jämförelse att förändringar sprids direkt ut till alla klienter på ett sätt som enbart skulle kunna ske om servern kan säga till klienten när en förändring från en annan klient kommit till servern. HTTP-protokollet bygger från grunden på att det alltid är en klient som frågar efter data (PULL-teknik), så servern skickar inte normalt data direkt till en klient (PUSH- teknik) vilket vore bra för att kunna skicka operationer vidare direkt när de inkommer från en annan klient. Det finns ett antal tekniker som gör det möjligt för en HTTP-server använda sig av PUSH, en av dessa är något som kallas för ”Long polling”, vilket innebär att HTTP-servern inte svarar på en förfrågan förrän den har något nytt att skicka. HTTP-servern håller anslutningen öppen och därmed kan den emulerat PUSHa ut nya operationer till klienten. Denna teknik används av Etherpad, och därmed har den bättre respons mellan klienterna i jämförelse med examensarbetets generiska ramverk. ”Long polling”, eller liknande PUSH-teknik, skulle kunna ersätta ramverkets nuvarande PULL-teknik. Med fördelarna att det ger en snabbare kommunikationskanal, men med nackdelarna att det kräver en mer avancerad server samt klient. Att använda PUSH skulle kräva att servern då måste klara av att ta emot mer än ett anrop åt gången och internt hantera synkronisering med hjälp av transaktioner mot databasen.

Sammanfattningsvis kan man säga att en avvägning ligger mellan om verktyget ska vara minimalistiskt och därmed mer generiskt och lättimplementerat i klienter, eller om det ska vara mer funktionellt vilket i ovanstående fall innebär mer användarvänlighet, bättre prestanda och större implementationskrav från både textredigerare och utvecklare.

1http://etherpad.com

2http://www.codingmonkeys.de/subethaedit 3http://sourceforge.net/projects/ace/ 4http://gobby.0x539.de

Kapitel 7

Slutsatser

Designen av det generiska samarbetsramverket fungerar som koncept. Två olika klienter och en server har implementerats efter designen och är ett bevis på att idén fungerar.

En utvärdering med användare har visat att ramverket går att använda i praktiken även om det inte skedde helt felfritt. Utvärderingen ger en bild av att det finns många sätt att förbättra ramverket i form av både prestanda och användbarhet. Förändringar som dock mer eller mindre motsätter sig syftet, där implementationsinsats ska prioriteras framför funktionsrikedom, men som kanske är illa tvunget om man vill att utvecklare ska använda just detta verktyg istället för andra lösningar. Det beror på om en utvecklare föredrar möjligheten att arbeta i sin favorit-textredigerare eller det verktyg som är bäst anpassat för simultan textredigering i grupp.

Litteraturförteckning

[1] Crockford, Douglas. JSON introduction. http://www.json.org, . Hämtad 2011-08-10.

[2] Crockford, Douglas. JSON Specification RFC 4627. http://www.ietf.org/rfc/rfc4627.txt, . Hämtad 2011-08-10.

[3] Ellis, C. A. och Gibbs, S. J. Concurrency control in groupware systems. I: Proceedings of the 1989 ACM SIGMOD international conference on Management of data, SIGMOD ’89, ss 399–407, New York, NY, USA, 1989. ACM. ISBN 0-89791-317-5. URL http://doi.acm.org/10.1145/67544. 66963.

[4] Fidge, Colin J. Timestamps in message-passing systems that preserve the partial ordering. I: Proceedings of the 11th Australian Computer Science Conference, ss 56–66, February 1988. http: //sky.scitech.qut.edu.au/~fidgec/Publications/fidge88a.pdf, hämtad 2011-02-09.

[5] Greenberg, Saul och Marwood, David. Real time groupware as a distributed system: concurrency control and its effect on the interface. I: Proceedings of the 1994 ACM conference on Computer supported cooperative work, CSCW ’94, ss 207–217, New York, NY, USA, 1994. ACM. ISBN 0- 89791-689-1. URL http://doi.acm.org/10.1145/192844.193011.

[6] Lamport, Leslie. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21:558–565, July 1978. ISSN 0001-0782. URL http://doi.acm.org/10.1145/359545.359563. [7] Oster, Gérald, Urso, Pascal, Molli, Pascal, och Imine, Abdessamad. Data consistency for P2P

collaborative editing. I: Proceedings of the 2006 20th anniversary conference on Computer supported cooperative work, CSCW ’06, ss 259–268, New York, NY, USA, 2006. ACM. ISBN 1-59593-249-6. URL http://doi.acm.org/10.1145/1180875.1180916.

[8] Ressel, Matthias, Nitsche-Ruhland, Doris, och Gunzenhäuser, Rul. An integrating, transformation- oriented approach to concurrency control and undo in group editors. I: Proceedings of the 1996 ACM conference on Computer supported cooperative work, CSCW ’96, ss 288–297, New York, NY, USA, 1996. ACM. ISBN 0-89791-765-0. URL http://doi.acm.org/10.1145/240080.240305. [9] Shen, Haifeng och Sun, Chengzheng. A log compression algorithm for operation-based version control

systems. I: Computer Software and Applications Conference, 2002. COMPSAC 2002. Proceedings. 26th Annual International, ss 867 – 872, 2002.

[10] Sun, Chengzheng. Optional and responsive fine-grain locking in Internet-based collaborative systems. IEEE Transactions on Parallel and Distributed Systems, 13:994–1008, 2002. ISSN 1045-9219. [11] Sun, Chengzheng, Jia, Xiaohua, Zhang, Yanchun, Yang, Yun, och Chen, David. Achieving

convergence, causality preservation, and intention preservation in real-time cooperative editing systems. ACM Trans. Comput.-Hum. Interact., 5:63–108, March 1998. ISSN 1073-0516. URL http://doi.acm.org/10.1145/274444.274447.

[12] Sun, D. och Sun, Chengzheng. Context-based operational transformation in distributed collaborative editing systems. IEEE Transactions on Parallel and Distributed Systems, 20(10):1454 –1470, 2009. ISSN 1045-9219.

Bilaga A

Utvärderingsuppgift

Nedan är den uppgift som testanvändarna fick utföra när de skulle utvärdera samarbetsverktyget.

Scenario

• Ni är två mjukvaruutvecklare, en av er skulle behöva hjälp med att skriva litet kodbibliotek och skulle därför vilja att ni parprogrammerade för att lösa problemet.

• Ni befinner er inte på samma plats och därför går det inte att parprogrammera ”fysiskt”.

• För att kommunicera använder ni er av telefon eller ex. Skype. dvs ni kan enbart kommunicera muntligt (ej gester etc.)

• En av er arbetar i ert favorit-utvecklingsverktyg gedit, medan den andra av er enbart har tillgång till en webbläsare för tillfället.

• Båda era redigeringsverktyg är sammankopplade med hjälp av exjobbets samarbetsramverk och därmed kan ni redigera samma kod samtidigt.

Programmeringsuppgift

Skriv ett kodbibliotek som kan göra följande operationer på en ordnad mängd med flyttal (ex. lista eller array med flyttal):

• Beräkna summan av talen. • Beräkna medelvärdet av talen.

• Sortera talen stigande. (antingen direkt eller genom att returnera en ny mängd) • Beräkna medianen av talen.

• Reversera den ordnade mängden. (antingen direkt eller genom att returnera en ny mängd) • Plocka fram ett slumpmässigt tal ur mängden.

• Plocka fram en ny mängd med alla tal mindre än medelvärdet. • (Valfri funktion om ni får tid över)

Förutsättningar

• Ni får komma överens om vilket programmeringsspråk ni vill använda er av. Syntax highlighting finns i gedit för de flesta vanliga språk.

• Koden behöver inte ha korrekt syntax och behöver inte gå att kompilera.

• Använd gärna pseudokod om ni inte minns vad en funktion heter eller om ni inte kommer ihåg exakt syntax.

• Syftet är att ni ska ha en konkret uppgift för att skapa ett mer realistiskt scenario, inte att koden fungerar korrekt.

• När ni anser att ni är klara med uppgiften eller efter max 15 minuter, så kommer ni individuellt få svara på några frågor.

Bilaga B

Utvärderingsformulär

Nedan är den utvärdering som testanvändarna fick när svara på efter att ha utfört utvärderingsuppgiften.

Utvärdering - samarbetsverktyg

1. Vilket textredigerare använde du?

Webbgränssnitt Gedit 2. Samarbetsverktyget kändes naturligt att använda.

Instämmer inte alls Instämmer helt 1 2 3 4 5

3. Om inte, varför inte?

I systemet skapas en del fördröjning från det att du gör en ändring till det att din kollega ser den. Svara på följande påståenden:

4. Det kändes som att den muntliga- och skriftliga kommunikation (koden) blev osynkroniserad, dvs den ena av er pratade om kod som den andra inte såg än.

Instämmer inte alls Instämmer helt 1 2 3 4 5

Instämmer inte alls Instämmer helt 1 2 3 4 5

6. Det kändes som att fördröjningarna hämmade produktiviteten.

Instämmer inte alls Instämmer helt 1 2 3 4 5

Ångra/Gör om-funktionalitet (undo/redo) är något som inte är anpassat för att redigera text samtidigt. 7. Hur mycket använde du dig av ångra/gör om (undo/redo)?

Inte alls Mycket 1 2 3 4 5

8. Ångra/gör om (undo/redo) fungerade som du förväntade dig.

Instämmer inte alls Instämmer helt 1 2 3 4 5

9. Om inte, hur skulle du vilja att ångra-/gör om-funktionaliteten (undo/redo) fungerade?

10. Löste ni mestadels problemen parallellt(programmerade samtidigt på olika ställen) eller sekventiellt(turades om att programmera)?

Sekventiellt Parallellt 1 2 3 4 5

11. Vem programmerade mest av dig och din programmeringspartner? 1 innebär att du programmerade hela tiden och medan din partner bara observerade koden, 5 är det motsatta.

Du Din partner 1 2 3 4 5

12. Kände du att det var nackdel eller fördel att kunna redigera koden samtidigt?

Nackdel Fördel 1 2 3 4 5

13. Tror du att det i allmänhet är en nackdel eller fördel med två tangentbord istället för ett vid parprogrammering?

Nackdel Fördel 1 2 3 4 5

14. Vad tycker du i helhet om samarbetsverktyget? Utan att ta hänsyn till vad du tycker om resten av editorn.

Dåligt Bra 1 2 3 4 5

15. Om man skulle vidareutveckla detta samarbetsverktyg, vad skulle du då vilja lägga till / ändra / ta bort / förbättra ?

Related documents