• No results found

Analysen av data kommer ske genom att ta reda på hur många FDs varje deltagare genererar per kodsegment och var de i koden är som flest. Dessutom kommer den genomsnittliga fixationstiden per expe-riment och testare tas fram och jämföras samt tiden det tar för varje deltagare att lösa varje uppgift. Videorna kommer analyseras för att se ifall det går att upptäcka något gemensamt mönster i hur deltagarnas blick rör sig över koden.

Resultat och Analys

Nedan kommer resultaten av formuläret och eye-trackingen presente-ras i samband med analys utav denna.

Majoriteten av deltagare ansåg sig välorienterade med Java (Figur 4.1) och samtliga deltagare hade tidigare erfarenhet av kodning i annat språk.

Figur 4.1: Svaren på frågan ang. hur välorienterade deltagarna känner sig med Java

Andelen korrekta svar på den proceduruppdelade versionen jäm-fört med den monolitiska var betydligt lägre i uppgift två, men där-emot högre i uppgift ett och lika i uppgift tre. Programmerare som ansåg sig vara professionella hade alla rätt på uppgifterna medans de andra hade signifikant lägre antal rätt svar.

KAPITEL 4. RESULTAT OCH ANALYS 21

Figur 4.2: Andel korrekta svar på den monolitiska respektive proce-duruppdelade versionen av samma uppgift

Vid analys över hur lång tid deltagarna tog på sig att svara på var-je kodsegment (Figur 4.3) kan man tyda att proceduruppdelad kod verkar ta längst tid att lösa till skillnad från det monolitiska kodseg-mentet och programmerare som ansåg sig vara professionella visade minst skillnad i hur lång tid det tog att svara.

Figur 4.3: Tiden tagen i minuter att lösa varje problem per deltagare. Staplarna förekommer i samma ordning som teckenförklaringen där monolit11 (monolitisk) och prodedur1 (procedurell) är respektive svar på samma uppgift.

Generellt sätt genererades flest fixationer vid proceduruppdelad kod jämfört med monolitisk kod (figur 4.4) fast med kortare genom-snittliga fixationsvaraktigheter (Figur 4.5).

KAPITEL 4. RESULTAT OCH ANALYS 23

Figur 4.4: Antal fixationspunkter per problem. Staplarna förekommer i samma ordning som teckenförklaringen där monolit1 och procedur1 är respektive svar på samma uppgift.

Figur 4.5: Genomsnittlig fixationsvaraktighet per problem i millise-kunder. Staplarna förekommer i samma ordning som teckenförkla-ringen där monolit1 och procedur1 är respektive svar på samma upp-gift.

KAPITEL 4. RESULTAT OCH ANALYS 25

Ett intressant mönster uppstod hos flera av de mer erfarna delta-garna men även hos en nybörjare vilket bestod av att de läste en bit av första kodraden men hoppade snabbt till en annan kodrad (rad x) för att sedan hoppa tillbaka till den initiala kodraden i väldigt snabb succession i en s.k scan-path (se Figur 4.6).

Det verkar som om de bara ger kodraden de hoppar till en snabb överblick medans de läser rad 1 ordentligt då de är få fixationer med väldigt kort varaktighet på raden de hoppar till. Dessa mönster upp-kom vare sig de läste monolitisk eller proceduruppdelad kod och del-tagarna hade alla fyra eller fler rätt.

Figur 4.6: Exempel på hur erfarna programmerare läser kod. Rad x betecknar godtycklig rad.

Värt att nämna är hur kodsegment uppdelade i procedurer genere-rar kortare FDs jämfört med monolitisk kod (se Figur 4.5). Den kortare genomsnittliga fixationsvaraktigheten i proceduruppdelad kod jäm-fört med monolitisk skulle kunna förklaras genom att deltagaren mås-te hoppa i koden till procedurerna vilket de inmås-te behöver i monolitisk kod och därför har proceduruppdelad kod fler fixationspunkter. pro-ceduruppdelad kod har även lägre fixationsvaraktighet på majoriteten av fixationerna jämfört med vad monolitisk kod har.

Detta mönster skiljer sig dock från vanliga hopp till procedurer där detta sker långsammare Man kan även finna att monolitisk kod har många fler punkter med signifikant längre fixationsvaraktighet än vad proceduruppdelad kod har.

Det var endast en av deltagarna som läste kod på ett tydligt se-kventiellt sätt (se figur 4.7) vilket var testare 8.

Figur 4.7: Exempel på hur sekventiell läsning sker, samma mönster uppkommer vid läsning av litteratur

Denna deltagare hade även signifikant fler fixationspunkter i den proceduruppdelad koden jämfört med den monolitiska.

En annan iakttagelse som kunde göras var att två av deltagarna (testare 5 och 6) nämnde att de hade svårt att hålla variablerna i hu-vudet medan de läste koden. Dessa påståenden understöddes av re-sultaten där de hade signifikant fler och längre fixationer på de delar av koden där förändringar av värden hanterades. I figurerna nedan presenteras detta fenomen mellan testare tre (som var en professionell programmerare) (figur 4.8) och testare 5 (figur 4.9) (som ansåg sig vara nybörjare). För att tydliggöra dessa diagram hänvisas till figur i appen-dix, figur A.3, där koden visas med en överläggning av FDs i from av en heatmap.

KAPITEL 4. RESULTAT OCH ANALYS 27

Figur 4.8: FDs > 150 ms i exempel 3 (uppdelad i procedurer) för delta-gare 3, professionell.

Figur 4.9: FDs > 150 ms i exempel 3 (uppdelad i procedurer) för delta-gare 5, nybörjare.

Diskussion

I detta kapitel kommer resultaten att diskuteras samt felkällor.

Från resultatet av experimenten visar det sig ta längre tid att läsa kod som är uppdelad i procedurer jämfört med monolitisk kod för ny-börjare. Detta kan bero på att de inte är vana vid att använda sig utav procedurabstraktionen ännu. Denna skillnad verkar dock minska ju mer erfarna de blir med språket då de erfarna löser proceduruppde-lad kod snabbare eller lika snabbt som monolitisk kod.

Den enda deltagaren som läste koden sekventiellt visade sig dess-utom ha mycket lättare för sig att läsa monolitisk kod jämfört med pro-ceduruppdelad kod. Detta berodde sannolikt på att hen läste igenom koden helt och hållet på ett sekventiellt sätt för att sen hoppa mellan block av kod. Men då detta endast inträffade hos en av de tio delta-garna är det svårt att dra någon generell slutsats utan fler experiment måste göras med folk som är helt nya programmerare (d.v.s har inte erfarenhet av något annat programmeringsspråk över huvud taget).

Att läsbarheten ökade med proceduruppdelning hos erfarna pro-grammerare stämmer överens med studien Beauty and the Beast. Dessa tog dock inte erfarenhetsnivån hos programmerarna i beaktande vil-ket jag gjorde. Man kan därför anta att deras formel SRES, endast kan bestämma läsbarhet av en text utifrån perspektivet att den som läser koden kommer vara en erfaren programmerare.

5.1 Felkällor

Flera variabler kan ha påverkat experimentet- först och främst var de valda deltagarna väldigt brett skilda. Vissa hade lång erfarenhet av

KAPITEL 5. DISKUSSION 29

andra språk men var ändå nybörjare i Java. Det var troligtvis detta som gjorde att majoriteten av deltagarna inte läste koden sekventiellt. Det är också svårt att fastställa en generell slutsats för procedurer mot monolitisk kod då deltagarna är så få utan slutsatsen kan bara göras för vad jag funnit i detta experiment. Fler experiment måste göras för att fastställa detta med säkerhet då osäkerheten är stor.

En deltagare nämnde även att de fäste blicken vid en specifik punkt då hen tänkte, vilket många antagligen gör, och därför kan det före-komma felaktiga fixationspunkter. Totalt tappades eye-trackingen da-tainsamling under en del av testare två och och testare 8:as uppgifter i exempel 1, exempel två respektive exempel två och tre vilket påver-kade resultaten för den genomsnittliga fixationsvaraktigheten per pro-blem och figuren med antalet FDs. Detta berodde med störst sannolik-het på att båda deltagare bar glasögon.

Vidare råkade testare 7 klicka sig förbi ett av experimenten och tes-tare 9 missade att det var flera loopar i exemplen med procedurer. Det är också svårt att tyda ifall testarna gissar på svaren. I ett fall kan man se att deltagaren inte tittar på en rad där det förekommer en utskrift innan denna svarar på kodsekvensen vilket kan betyda att deltagaren gissar, men det är svårt att avgöra.

Eftersom deltagarna var övervakade när de utförde experimenten kan de ha känt sig stressade och kan därför påverkat deltagarnas pre-station negativt. Däremot valde jag att övervaka dem ifall något skulle gå fel under experimentet eller ifall deltagarna hade frågor.

Avslutning

Från resultaten kan man konstatera att proceduruppdelad kod är svå-rare för nybörjare att tyda jämfört med erfarna programmesvå-rare vilka till och med löste proceduruppdelad kod snabbare än monolitisk.

Man kan därför konstatera att kontrollflödesabstraktioner i form av procedurer gör det lättare för programmerare att läsa kod men det krävs tid och vana för att ta del av de gynnsamma effekterna utav dem. Därför bör mycket tid läggas på att lära nybörjare förstå hur man läser proceduruppdelad kod vid ett tidigt stadie för att dessa ska kunna dra nytta av t.ex. chunking och på så sätt läsa kod snabbare och effektivare. Det skulle vara intressant att testa läsbarhet av kod ytterligare ge-nom att låta erfarna programmerare hitta buggar i kod mellan monoli-tiskt uppbyggda program och program uppdelade i procedurer och på så sätt kunna anknyta slutsatsen närmare till underhåll av mjukvara.

Det skulle även vara intressant att undersöka ögonrörelser hos er-farna programmerare och ifall detta skulle kunna användas som test vid arbetsintervjuer eller som grund för att utbilda nya programmera-re i hur man ska se på kod för effektiv läsning.

Då denna studie var begränsad till en relativt kort tidsram skulle det vara intressant att föra ytterligare studier med samma metodik för att se om dessa resultat håller för en större deltagargrupp. Det skulle även vara intressant att studera ytterligare hur man kan öka nybörja-res förståelse utav proceduruppdelning så att dessa snabbt kan ta del av dess fördelar såsom chunking och ifall det kan inkorporeras i ut-bildningen inom programmering.

Litteratur

[1] Krishan K Aggarwal, Yogesh Singh och Jitender Kumar Chhab-ra. “An integrated measure of software maintainability”. I: Re-liability and maintainability symposium, 2002. Proceedings. Annual. IEEE. 2002, s. 235–241.

[2] Dave Binkley m. fl. “To camelcase or under_score”. I: Program Comprehension, 2009. ICPC’09. IEEE 17th International Conference on. IEEE. 2009, s. 158–167.

[3] Barry W Boehm. “Software engineering economics”. I: IEEE transactions on Software Engineering 1 (1984), s. 4–21.

[4] Jürgen Börstler, Michael E Caspersen och Marie Nordström. “Beauty and the Beast: on the readability of object-oriented ex-ample programs”. I: Software quality journal 24.2 (2016), s. 231– 246.

[5] Raymond PL Buse och Westley R Weimer. “A metric for software readability”. I: Proceedings of the 2008 international symposium on Software testing and analysis. ACM. 2008, s. 121–130.

[6] SN Cant, D Ross Jeffery och Brian Henderson-Sellers. “A con-ceptual model of cognitive complexity of elements of the pro-gramming process”. I: Information and Software Technology 37.7 (1995), s. 351–362.

[7] Martha E Crosby och Jan Stelovsky. “How do we read algo-rithms? A case study”. I: Computer 23.1 (1990), s. 25–35.

[8] Edgar Dale och Jeanne S Chall. “The concept of readability”. I: Elementary English 26.1 (1949), s. 19–26.

[9] William H DuBay. “The Classic Readability Studies.” I: Online Submission (2007).

[10] William H DuBay. “The Principles of Readability.” I: Online Sub-mission (2004).

[11] James L. Elshoff. “An analysis of some commercial PL/I pro-grams”. I: IEEE Transactions on Software Engineering 2 (1976), s. 113–120.

[12] Len Erlikh. “Leveraging legacy system dollars for e-business”. I: IT professional 2.3 (2000), s. 17–23.

[13] Fallstudier. Febr. 2016. URL: https : / / forskningsstrategier . wordpress . com / fallstudier/.

[14] Ann Fitzsimmons och Tom Love. “A review and evaluation of software science”. I: ACM Computing Surveys (CSUR) 10.1 (1978), s. 3–18.

[15] John R Foster. “Cost factors in software maintenance.” Diss. Dur-ham University, 1993.

[16] Joseph H Goldberg och Xerxes P Kotval. “Computer interface evaluation using eye movements: methods and constructs”. I: International Journal of Industrial Ergonomics 24.6 (1999), s. 631– 645.

[17] Joseph H Goldberg m. fl. “Eye tracking in web search tasks: de-sign implications”. I: Proceedings of the 2002 symposium on Eye tracking research & applications. ACM. 2002, s. 51–58.

[18] Maurice H. Halstead. “Advances in software science”. I: Advan-ces in Computers. Vol. 18. Elsevier, 1979, s. 119–172.

[19] Michael Hansen, Robert L Goldstone och Andrew Lumsdaine. “What makes code hard to understand?” I: arXiv preprint arX-iv:1304.5257 (2013).

[20] Robert JK Jacob och Keith S Karn. “Eye tracking in human-computer interaction and usability research: Ready to deliver the promises”. I: The mind’s eye. Elsevier, 2003, s. 573–605.

[21] Anker Helms Jørgensen. “A methodology for measuring the re-adability and modifiability of computer programs”. I: BIT Nu-merical Mathematics 20.4 (1980), s. 393–405.

[22] Marcel Adam Just och Patricia A Carpenter. “Eye fixations and cognitive processes”. I: Cognitive psychology 8.4 (1976), s. 441–480.

LITTERATUR 33

[23] Pezhman Kasraee och Chong Lin. Readability of Method Chains: A Controlled Experiment with Eye Tracking Approach. 2016.

[24] George Roger Klare m. fl. “Measurement of readability”. I: (1963).

[25] Dator Kunskap. Underhållsfasen i programvarans livscykel. URL: http : / / www . dator . xyz / Felsokning / pc - support / 188554.html(hämtad 2018-05-08).

[26] Bennet P Lientz, E. Burton Swanson och Gail E Tompkins. “Cha-racteristics of application software maintenance”. I: Communica-tions of the ACM 21.6 (1978), s. 466–471.

[27] Barbara Liskov, John Guttag m. fl. Abstraction and specification in program development. Vol. 180. MIT press Cambridge, 1986. [28] A Poole och LJ Ball. “Eye tracking in human-computer

interac-tion and usability research: current status and future prospects, 2005”. I: United Kingdom: Psychology Department, Lancaster Uni-versity ().

[29] Alex Poole, Linden J Ball och Peter Phillips. “In search of sa-lience: A response-time and eye-movement analysis of book-mark recognition”. I: People and computers XVIII—Design for life. Springer, 2005, s. 363–378.

[30] John Sonmez. What Makes Readable Code: Not What You Think. 2013. URL: https : / / simpleprogrammer . com / what -makes-code-readable-not-what-you-think/(hämtad 2018-02-20).

[31] Thomas A Standish. “An essay on software reuse”. I: IEEE Trans-actions on Software Engineering 5 (1984), s. 494–497.

[32] Jeff Sutherland. “Business objects in corporate information systems”. I: ACM Computing Surveys (CSUR) 27.2 (1995), s. 274– 276.

[33] Leif Tysell Sundkvist och Emil Persson. Code Styling and its Ef-fects on Code Readability and Interpretation. 2017.

Extra Material som Bilaga

Figur A.1: Svaren på frågan ang. hur lång erfarenhet deltagarna hade av att koda generellt sett

BILAGA A. EXTRA MATERIAL SOM BILAGA 35

Figur A.2: Svaren på frågan ang. hur lång erfarenhet deltagarna hade av Java i synnerhet

Figur A.3: Heatmap som utdata för exempel 3 (uppdelad i procedurer) för deltagare 8

Related documents