• No results found

Visual Care : Utveckling av en webbapplikation för att visualisera vårdprocesser

N/A
N/A
Protected

Academic year: 2021

Share "Visual Care : Utveckling av en webbapplikation för att visualisera vårdprocesser"

Copied!
107
0
0

Loading.... (view fulltext now)

Full text

(1)

Visual Care

Utveckling av en webbapplikation

f¨or att visualisera v˚

ardprocesser

Otto Bergdahl

Peter Arvidsson

Victor Bennich

Hakan Celik

Petter Granli

Gunnar Grimsdal

Johan Nilsson

Handledare, Jonas Wallgren Examinator, Kristian Sandahl

(2)

Detta dokument h˚alls tillg¨angligt p˚a Internet – eller dess framtida ers¨attare – under 25 ˚ar fr˚an publiceringsdatum under f¨oruts¨attning att inga extraordin¨ara omst¨andigheter uppst˚ar.

Tillg˚ang till dokumentet inneb¨ar tillst˚and f¨or var och en att l¨asa, ladda ner, skriva ut enstaka kopior f¨or enskilt bruk och att anv¨anda det of¨or¨andrat f¨or ickekommersiell forskning och f¨or undervisning.

¨

Overf¨oring av upphovsr¨atten vid en senare tidpunkt kan inte upph¨ava detta tillst˚and. All annan anv¨andning av dokumentet kr¨aver upp-hovsmannens medgivande. F¨or att garantera ¨aktheten, s¨akerheten och tillg¨angligheten finns l¨osningar av teknisk och administrativ art. Upphovsmannens ideella r¨att innefattar r¨att att bli n¨amnd som upp-hovsman i den omfattning som god sed kr¨aver vid anv¨andning av dokumentet p˚a ovan beskrivna s¨att samt skydd mot att dokumen-tet ¨andras eller presenteras i s˚adan form eller i s˚adant sammanhang som ¨ar kr¨ankande f¨or upphovsmannens litter¨ara eller konstn¨arliga anseende eller egenart.

F¨or ytterligare information om Link¨oping University Electronic Press se f¨orlagets hemsida http://www.ep.liu.se/.

c Otto Bergdahl c Peter Arvidsson c Victor Bennich c Hakan Celik c Petter Granli c Gunnar Grimsdal c Johan Nilsson

(3)

Rapporten beskriver hur produkten Visual Care har tagits fram. Produkten ¨ar en webbapplikation f¨or visualisering av statistik fr˚an kunden Region ¨Osterg¨otland. M˚alet med applikationen ¨ar att hj¨alpa anst¨allda p˚a Region ¨Osterg¨otland att planera behandling av cancer-patienter.

Syften med den h¨ar rapporten ¨ar att analysera projektgruppens ut-vecklingsmetoder och processer f¨or att ta fram produkten Visual Ca-re. Produkten kommer inte att anv¨andas av Region ¨Osterg¨otlands anst¨allda, utan kommer ist¨allet att anv¨andas som en prototyp och inspiration f¨or framtida projekt av kunden.

Abstract

This report is about the production of the web application Visual Care. The product is a tool for visualising statistics provided by the customer Region ¨Osterg¨otland. The goal of the application is to help employees at Region ¨Osterg¨otland to plan treatment of cancer patients.

The purpose of this report is to analyze the group’s development pro-cess for the product. The product will not be used by the employees of Region ¨Osterg¨otland, but will instead be used as an inspiration for future projects by the customer.

(4)
(5)

Den h¨ar rapporten handlar om projektgruppens framtagning av produkten Visual Care, samt om medlemmarnas individuella delar. Till sist vill projektgruppen tacka handledaren Jonas Wallgren f¨or sitt engagemang f¨or projektet. Gruppen vill ¨aven tacka alla inblan-dade fr˚an Region ¨Osterg¨otland f¨or deras hj¨alp.

(6)
(7)

1 Inledning 3

1.1 Motivering . . . 3

1.2 Syfte och m˚al . . . 3

1.3 Fr˚agest¨allningar . . . 4

1.4 Avgr¨ansningar . . . 4

1.4.1 Avgr¨ansningar f¨or systemet . . . 4

1.4.2 Avgr¨ansningar f¨or rapporten . . . 4

2 Bakgrund 5 3 Teori 6 3.1 Standardiserade v˚ardf¨orlopp . . . 6

3.2 D3.js . . . 6 3.3 Node.js . . . 6 3.4 Mocha . . . 6 3.5 REST-API . . . 7 4 Metod 8 4.1 Utvecklingsmetod . . . 8 4.1.1 F¨orstudier . . . 8 4.1.2 Modifierad SCRUM . . . 9 4.1.3 Gr¨anssnittsdesign . . . 9

4.2 Metod f¨or att f˚anga erfarenheter . . . 11

5 Resultat 12 5.1 REST-API . . . 12 5.2 Kundkontakt . . . 12 5.3 Systembeskrivning . . . 12 5.4 Produkt . . . 14 5.5 Gemensamma erfarenheter . . . 15 5.5.1 Organisation . . . 15 5.5.2 Programutvecklingsmetodik . . . 16 5.5.3 Kundkontakt . . . 16 5.5.4 Dokumentation . . . 16 5.5.5 Programutveckling . . . 17 5.5.6 Systemanatomi . . . 17

5.6 Oversikt ¨¨ over individuella bidrag . . . 18

(8)

5.6.4 Bidrag D . . . 18 5.6.5 Bidrag E . . . 19 5.6.6 Bidrag F . . . 19 5.6.7 Bidrag G . . . 19 6 Diskussion 20 6.1 Diskussion av resultatet . . . 20

6.1.1 Alternativa implementationss¨att . . . 20

6.1.2 Tillfredsst¨allelse av kundens behov . . . 21

6.1.3 L¨ardomar fr˚an projektet . . . 21

6.2 Metod . . . 22

6.2.1 Konsekvenser f¨or resultatet . . . 22

6.2.2 Alternativa metoder . . . 22

6.2.3 K¨allkritik . . . 22

6.3 Arbetet i ett vidare sammanhang . . . 23

6.3.1 Samh¨alleliga aspekter . . . 23

6.3.2 Milj¨oaspekter . . . 23

6.3.3 Etiska aspekter . . . 24

(9)

A.1 Inledning . . . 29

A.1.1 Syfte . . . 29

A.1.2 Fr˚agest¨allningar . . . 29

A.2 Bakgrund . . . 30

A.3 Teori . . . 30

A.4 Metod . . . 31

A.5 Resultat . . . 31

A.5.1 Samlade erfarenheter . . . 31

A.5.2 Enk¨atunders¨okning . . . 32

A.6 Diskussion . . . 37

A.6.1 Resultatet . . . 37

A.6.2 Metoden . . . 38

A.7 Slutsatser . . . 38

B Peter Arvidsson - Visualisering i D3.js 39 B.1 Inledning . . . 39 B.1.1 Syfte . . . 39 B.1.2 Fr˚agest¨allningar . . . 39 B.2 Bakgrund . . . 39 B.3 Teori . . . 40 B.4 Metod . . . 40 B.5 Resultat . . . 41

B.5.1 Utv¨ardering av biblioteken och dess inbyggda funktioner . . . 41 B.5.2 Google Chart . . . 41 B.5.3 C3.js . . . 42 B.5.4 D3.js . . . 43 B.6 Diskussion . . . 46 B.6.1 Andam˚¨ al f¨or visualiseringsverktyg . . . 46 B.7 Slutsatser . . . 47

C Victor Bennich - Testa ett API med Mocha 48 C.1 Inledning . . . 48

C.1.1 Syfte . . . 48

C.1.2 Fr˚agest¨allningar . . . 49

C.2 Bakgrund . . . 49

(10)

C.5.1 J¨amf¨orelse . . . 53

C.6 Diskussion . . . 53

C.7 Slutsatser . . . 55

D Hakan Celik - Dokumentationsstrategi i ShareLaTeX 56 D.1 Inledning . . . 56 D.1.1 Syfte och m˚al . . . 56 D.1.2 Fr˚agest¨allningar . . . 56 D.2 Bakgrund . . . 57 D.3 Teori . . . 58 D.4 Metod . . . 59 D.5 Resultat . . . 59

D.5.1 Praktiska problem och l¨osningar . . . 59

D.5.2 Dokumentstrukturer . . . 61

D.6 Diskussion . . . 62

D.7 Slutsatser . . . 63

E Petter Granli - Automatiserad drifts¨attning av kod f¨or webbapplikationer 64 E.1 Inledning . . . 64

E.1.1 Syfte . . . 64

E.1.2 Fr˚agest¨allningar . . . 64

E.2 Bakgrund . . . 65

E.3 Teori . . . 65

E.3.1 SaaS (Software as a service) . . . 65

E.3.2 PaaS (Platform as a service) . . . 65

E.3.3 IaaS (Infrastructure as a service) . . . 66

E.3.4 Molnet . . . 66

E.3.5 Heroku . . . 67

E.3.6 Openshift . . . 67

E.3.7 Github . . . 67

E.3.8 Digital Ocean . . . 67

E.4 Metod . . . 68

E.4.1 Test av verktyg . . . 68

E.4.2 Litteraturstudie . . . 68

E.5 Resultat . . . 69

(11)

E.7 Slutsatser . . . 72

F Gunnar Grimsdal - Webbserver i Node.js 73 F.1 Inledning . . . 73 F.1.1 Syfte . . . 73 F.1.2 Fr˚agest¨allningar . . . 73 F.2 Bakgrund . . . 73 F.3 Metod . . . 75 F.3.1 Unders¨okning 1 . . . 75 F.3.2 Unders¨okning 2 . . . 78 F.3.3 Unders¨okning 3 . . . 79 F.4 Resultat . . . 80 F.4.1 Unders¨okning 1 . . . 80 F.4.2 Unders¨okning 2 . . . 80 F.4.3 Unders¨okning 3 . . . 81 F.5 Diskussion . . . 82 F.6 Slutsatser . . . 82

G Johan Nilsson - Utecklingsmetodik och Scrum 83 G.1 Inledning . . . 83 G.1.1 Syfte . . . 83 G.1.2 Fr˚agest¨allningar . . . 83 G.2 Bakgrund . . . 84 G.3 Teori . . . 85 G.3.1 Agil systemutveckling . . . 85 G.3.2 Scrum . . . 86 G.4 Metod . . . 87 G.5 Resultat . . . 88

G.5.1 Resultat fr˚an unders¨okningen . . . 88

G.6 Diskussion . . . 89

(12)
(13)

Del I: Gemensamma

(14)
(15)

1

Inledning

Inom h¨also- och sjukv˚ard har det historiskt genomf¨orts mycket sto-ra och betydande arbeten, men p˚a senare tid har befolkningen ¨okat. Idag ¨ar det d¨arf¨or en stor utmaning att f˚a en ¨overblick av hur m˚anga m¨anniskor som tillh¨or ett visst v˚ardf¨orlopp (se kapitel 3.1 Defini-tioner) och hur man optimalt kan f¨ordela resurser. Dock finns det st¨andigt v¨axande potential i digitala verktyg f¨or att underl¨atta han-teringen av denna typ av problem. Det ¨ar d˚a naturligt att f¨ors¨oka finna en l¨osning f¨or att visualisera tillg¨angliga data, vilket kommer att f¨ordjupas i detta arbete.

1.1 Motivering

I detta projekt har det d¨arf¨or utvecklats en webbapplikation f¨or visualisering av statistik f¨or standardiserade v˚ardf¨orlopp [46] som anv¨ands av Region ¨Osterg¨otland. Denna applikation ska framf¨or allt anv¨andas f¨or att hj¨alpa anst¨allda inom cancerv˚arden att pla-nera behandling av patienter enligt de riktlinjer som finns f¨or de standardiserade v˚ardf¨orloppen.

1.2 Syfte och m˚al

Syftet med detta arbete ¨ar att analysera projektgruppens utveck-lingsmetoder och processer f¨or att ta fram produkten. Vidare ges en redovisning av samtliga erfarenheter inom detta. I kursplanen f¨or TDDD96 Kandidatprojekt i programvaruutveckling, som nu ¨ar aktuell, ing˚ar det n¨amligen att skriva en kandidatrapport som be-handlar projektet. M˚alet med detta ¨ar att f˚a kunskaper om hur man uttrycker sig professionellt och vetenskapligt i skrift.

(16)

1.3 Fr˚agest¨allningar

I denna rapport ska f¨oljande fr˚agor besvaras;

1. Hur har projektgruppens produkt Visual Care implementerats f¨or att skapa v¨arde f¨or kunden?

2. Vilka erfarenheter kan dokumenteras fr˚an detta kandidatpro-jekt i kursen TDDD96 som kan vara intressanta f¨or framtida projekt?

3. Vilket st¨od kan man f˚a genom att skapa och f¨olja upp en sys-temanatomi?

4. Kan Visual Care spara tid och resurser hos kunden? 1.4 Avgr¨ansningar

Detta avsnitt anger projektets avgr¨ansningar. De indelas i tv˚a delar d¨ar den ena handlar om systemet och den andra om rapporten.

1.4.1 Avgr¨ansningar f¨or systemet

Avgr¨ansningar som finns ¨ar att produkten inte ska vara beroende av stora bibliotek och att all skriven programkod m˚aste vara ¨oppen k¨allkod. En annan avgr¨ansning ¨ar att kunden inte har beg¨art att n˚agra s¨akerhets˚atg¨arder ska implementeras.

1.4.2 Avgr¨ansningar f¨or rapporten

Rapporten tar upp de utvecklingsmetoder som har anv¨ants i pro-jektet. Den g˚ar d¨aremot inte igenom de utvecklingsmetoder som har ¨

overv¨agts men inte anv¨ants. Eftersom den huvudsakliga funktionen f¨or produkten ¨ar visualisering kommer extra fokus att l¨aggas just p˚a detta.

(17)

2

Bakgrund

Svensk sjukv˚ard har under en l¨angre tid haft problem med l˚anga v¨antetider. Inom cancerv˚ard har d¨arf¨or ett standardiserat v˚ ard-f¨orlopp inf¨orts, vars m˚al ¨ar att effektivisera v˚arden f¨or cancerpa-tienter. [46] I nul¨aget finns det ingen metod att f¨olja upp om v˚arden uppfyller den kvalitet och de ledtider som ¨ar specificerade f¨or de standardiserade v˚ardf¨orloppen. Projektet best¨alldes som ett verk-tyg f¨or att visuellt kunna visa om sjukv˚arden klarar av de krav som specificerats, samt visa vilken del i v˚ardprocessen som inte klarar av det.

Projektets gruppmedlemmar har tidigare arbetat i b˚ade h˚ ardvaru-och mjukvaruprojekt i form av robotbyggen, datordesign ardvaru-och andro-idutveckling, och k¨ande sig d¨arf¨or bekv¨ama med detta uppdrag. Gruppen har bland annat erfarenhet av att arbeta enligt LIPS-modellen. [2]

(18)

3

Teori

Detta kapitel g˚ar igenom en del begrepp som har anv¨ants i projektet. Det g˚ar ¨aven igenom speciella verktyg f¨or utveckling av produkten. 3.1 Standardiserade v˚ardf¨orlopp

Ett standardiserat v˚ardf¨orlopp, h¨adanefter SVF, betyder att alla som utreds f¨or en viss cancersjukdom ska bem¨otas lika och f˚a tillg˚ang till samma v˚ard. M˚alet ¨ar att alla unders¨okningar ska g¨oras s˚a fort som m¨ojligt och i samma ordning oavsett vem patienten ¨ar eller var denne bor. Varje cancersjukdom har t.ex. ett eget SVF. [46]

3.2 D3.js

D3.js ¨ar ett JavaScript-bibliotek som anv¨ands f¨or att visualisera da-ta med hj¨alp av webbtekniker som till exempel SVG, HTML5 och CSS3. [14] D3.js anv¨ands i projektet f¨or att visualisera v˚ardprocesser.

3.3 Node.js

Node.js ¨ar ett JavaScript-bibliotek byggt p˚a Chromes V8 JavaScript-motor. [20] Node.js anv¨ander en h¨andelsestyrd, icke-blockerande I/O-modell som g¨or den l¨att och effektiv. Node.js egna ekosystem f¨or paket, NPM, ¨ar enligt Linux.com det st¨orsta ekosystem f¨or ¨oppna bibliotek i v¨arlden. [30] I projektet anv¨ands Node f¨or att k¨ora det REST-API som hanterar produktens data och kommunikation.

3.4 Mocha

Mocha ¨ar ett testramverk i JavaScript som k¨ors p˚a Node.js och i webbl¨asaren, vilket underl¨attar asynkron testning. Mochatester k¨ors i serie, vilket m¨ojligg¨or flexibel och korrekt rapportering, medan kartl¨aggning av ohanterade undantag g˚ar till r¨att testfall. [33]

(19)

3.5 REST-API

REST st˚ar f¨or REpresentational State Transfer. Det bygger p˚a ett tillst˚andsl¨ost, klient-server, cachebart kommunikationsprotokoll. I m˚anga fall ¨ar det HTTP-protokollet som anv¨ands. REST ¨ar en arkitekturstil f¨or att utforma n¨atverksapplikationer. En anv¨andare beh¨over d˚a inte veta n˚agot om hur strukturen hos serversidan ser ut. [38]

(20)

4

Metod

Metoder som har anv¨ants kan delas in i tv˚a kategorier. Dessa inne-fattar utvecklingsmetoder och metoder f¨or att f˚anga erfarenheter.

4.1 Utvecklingsmetod

Detta delkapitel g˚ar igenom hur gruppen har arbetat med projektet och hur produkten togs fram.

4.1.1 F¨orstudier

Projektgruppen lottades fr˚an de studenter l¨aste kursen TDDD96 un-der 2017. Gruppen valde sedan projekt fr˚an ett antal projektf¨orslag som lagts fram fr˚an f¨oretag och fr˚an institutioner p˚a Link¨opings uni-versitet. Projektgruppen best˚ar av sju projektmedlemmar med olika roller. Vilka roller som b¨or ing˚a beslutades av examinator och i en-lighet med det f¨ordelade projektgruppen dessa internt. Den f¨orsta kontakten med kunden var genom ett mejl f¨or att informera kunden om vilka som kommer att vara deras leverant¨orer.

N¨ar det g¨aller dokumentation har projektgruppen anv¨ant sig av projektmodellen Lips kompletterad med anvisningar f¨or rapport-skrivning p˚a institutionen f¨or datavetenskap. [2] [49] Utbildningen inom projektgruppen har best˚att av individuell inl¨arning och test-program med hj¨alp av internet samt gemensamma genomg˚angar av olika implementationer av delprodukter.

N¨ar det g¨aller programkod har projektgruppen, genom interna m¨oten, diskuterat fram olika riktlinjer och standarder. Programkoden, vars centrala spr˚ak var HTML5, CSS3 och JavaScript, beslutades att kommenteras f¨or att f˚a en ¨overblick av den och f¨olja standarder f¨oreslagna av w3Schools. [44] [45] N¨ar det g¨aller versionshantering-en har det, tillsammans med konfigurationsansvarig, beslutats att anv¨anda Git. I Git skrivs varje delprodukt med hj¨alp av s˚a kallade f¨orgreningar f¨or att inte p˚averka resterande programkod. F¨or vidare detaljer se kvalitetsplanen i bilaga 1.

(21)

4.1.2 Modifierad SCRUM

Utveckling skedde med en variant av SCRUM med en sprinttid p˚a en vecka. [40] Prioriterade arbetsuppgifter best¨amdes gemensamt. Projektmedlemmarna tr¨affades en g˚ang per vecka f¨or att evaluera f¨oreg˚aende iteration samt att planera n¨asta. Under m¨otet rapporte-rades vad alla projektmedlemmarna hade utf¨ort. Detta skedde under varje handledarm¨ote och kompletterades med minst ett gruppm¨ote d¨ar fokus l˚ag p˚a veckorapportering och erfarenhetsf˚angst. F¨or en b˚ade mer flexibel och spontan respons fr˚an varje projektmedlem anv¨andes dessutom onlinetj¨ansten Slack. Mestadels skedde arbetet enskilt hemifr˚an, men mindre grupper kunde bildas f¨or att fokusera p˚a ett visst omr˚ade.

4.1.3 Gr¨anssnittsdesign

Efter att ett flertal kundm¨oten hade h˚allits, f¨or att komma fram till kundens verkliga behov, p˚ab¨orjades arbetet p˚a en f¨orsta proto-typ. Det som fokuserades p˚a med prototyperna i det h¨ar stadiet var sj¨alva visualiseringen av data fr˚an kunden och inte gr¨anssnitten f¨or menyer och andra kringfunktioner. Gruppen tog fram id´eer genom att rita upp skisser p˚a koncept p˚a en tavla och sedan diskutera dem. Tre lovande koncept valdes i detta stadie att arbetas vidare p˚a. Fr˚an dessa tre koncept skapades ett antal prototyper som visades f¨or kun-den, dessa kan ses i figur 1.

(22)

Parallellt med prototypningsarbetet jobbade delar av gruppen med att strukturera data, som tillhandah˚allits av kunden, i en databas. Klient-applikationen n˚ar datan som finns i databasen genom ett REST-API. N¨ar API:et b¨orjade designas fanns det endast ett f˚atal funktioner planerade. I efterhand som prototyper togs fram vida-reutvecklades funktionaliteten hos API:et f¨or att kunna bidra med filtrering av data fr˚an databasen.

N¨ar kunden hade godk¨ant vissa av prototyperna p˚ab¨orjades arbe-tet p˚a en f¨orsta version av applikationen. Anv¨andartester utf¨ordes l¨opande under produktutvecklingens g˚ang. St¨orre designbeslut togs gemensamt i gruppen genom omr¨ostning och vid behov tillfr˚agades ¨

aven kunden. En f¨orsta design av webbsidan togs fram, se figur 2.

(23)

4.2 Metod f¨or att f˚anga erfarenheter

Erfarenhetsf˚angst skedde med hj¨alp av olika gruppm¨oten och hand-ledarm¨oten d¨ar projektmedlemmarna fick ber¨atta om vad som hade varit bra och mindre bra med arbetet i varje sprint. Gruppm¨otena hade en fri agenda baserat p˚a vilka aktuella problem som skulle l¨osas, medan handledarm¨otena f¨oljde en mall framtagen av projekt-gruppen och dokumenterades i form av ett m¨otesprotokoll.

Under dessa tillf¨allen har det ¨aven diskuterats olika l¨osningar p˚a problem, b˚ade allm¨ant och i mer detalj. Projektgruppen har ¨aven nyttjat den ˚aterkoppling som har getts fr˚an andra projektgrupper p˚a de seminarier som ing˚ar i kursen. F¨or att komplettera ovan n¨amnda f˚angstmetoder har det ¨aven till˚atits att projektmedlemmar spontant kommit med synpunkter och fr˚agor under utveckling av projektet.

(24)

5

Resultat

Resultatet inleds med en beskrivning av vilken typ av API som har anv¨ants vid programutveckling. D¨arefter kommer en n¨armare re-dog¨orelse f¨or relationer med kunden och kundkontakten. Vidare ges en systembeskrivning av produkten f¨oljt av gemensamma erfaren-heter inom projektet och en avslutande ¨oversikt ¨over individuella bidrag i rapporten.

5.1 REST-API

Ett API f¨or kommunikation mellan databasen och applikationen ska-pades f¨or att dynamisk kunna h¨amta data som webbapplikationen beh¨ovde. API:et fungerar s˚a att applikationen skickar en HTTP GET-f¨orfr˚agan till API:et, som sedan skickar tillbaka ett JSON-objekt, ett datautbytesformat, till applikationen med de data som f¨orfr˚agades. API:et st¨odjer tv˚a olika ”resurser” i GET-f¨orfr˚agan, /persons/[nummer] och /persons/. Om man anv¨ander resursen /per-sons/[nummer] d¨ar [nummer] ¨ar ett heltal kommer API:t returnera data f¨or den person med ID passande heltalet. Om resursen /per-sons/ anv¨ands kan anv¨andaren med hj¨alp av parametrar i GET-f¨orfr˚agan filtrera och sortera de data som skickas tillbaka.

5.2 Kundkontakt

Gruppen har haft en aktiv kontakt med kunden, och har m¨ott en rad olika m¨anniskor fr˚an olika delar av Region ¨Osterg¨otland. Grup-pen har i perioder haft en del problem med kunden, d˚a kunden inte haft en komplett bild av vad det ¨ar den vill ha. Projektgruppen har l¨ost det genom att tr¨affa en m¨angd olika personer fr˚an Regi-on ¨Osterg¨otland, samt genom att presentera ett antal exempel och prototyper f¨or kunden.

5.3 Systembeskrivning

Produkten som levereras till kund best˚ar av tv˚a delar, en klient- och en serverdel. En ¨overblick ¨over detta ges i figur 3. Serverdelens upp-gift ¨ar att kommunicera med en databas och svara p˚a f¨orfr˚agningar fr˚an klientdelen. Serverdelen har ¨aven funktionalitet f¨or att impor-tera data till databasen samt att sorimpor-tera och filtrera data.

(25)

Klient-delens uppgift ¨ar att visualisera data som efterfr˚agas fr˚an serverde-len. Anv¨andaren kan via klientdelen v¨alja mellan olika datavisuali-seringsvyer och vilka data som ska visas med hj¨alp av olika filtre-ringsreglage.

Vid utveckling av produkten har gruppen genomg˚aende arbetat med HTML5, CSS3 och JavaScript som programspr˚ak. I praktiken in-neb¨ar detta att b˚ade klient- och serverdel ¨ar skrivna i JavaScript d¨ar Node.js anv¨ands f¨or att exekvera koden p˚a serversidan. Produk-ten har st¨od f¨or att anv¨anda en rad olika databaser av SQL-typ d¨ar kundens efterfr˚agade, Microsoft SQL, ing˚ar.

(26)

5.4 Produkt

Produkten levereras som en webbaserad l¨osning och riktas fr¨amst mot l¨akare och de inom sjukv˚arden som har och beh¨over tillg˚ang till statistik f¨or cancerpatienter. Anv¨andaren av produkten bem¨ots av en ¨overblick ¨over tre huvudsakliga diagramtyper beroende p˚a vilken statistik anv¨andaren vill se. Dessa tre diagram motsvarar:

• En enkel f¨ordelning mellan exempelvis ˚alder och k¨on p˚a pati-enter inom SVF

• Ett sambandsdiagram med estimerade utg˚angsdatum baserat p˚a normalf¨ordelning

• En mer detaljerad normalf¨ordelning med expanderbar informa-tion om patienter f¨or valt datum.

(27)

Efter vald diagramtyp presenteras anv¨andaren av en graf tillsam-mans med filtreringsalternativ inneh˚allandes bland annat tidsinter-vall, ˚aldrar, k¨on, kommun, med fler. Se figur 5 f¨or att tydligare se hur gr¨anssnittet presenteras.

F¨or att inte tappa n˚agon v¨ardefull information och ha m¨ojlighet att framf¨ora ett diagram vidare, kan en sk¨armdump av inneh˚allet sparas med hj¨alp av en knapp. Ny data f¨or visualiseringen kan ¨aven laddas upp fr˚an ett Excel-dokument direkt p˚a applikationen. Med den v¨anstra menyn kan anv¨andaren dessutom snabbt v¨axla mellan de olika diagramtyperna.

Figur 5: Vald typ av diagram med filtreringsalternativ.

5.5 Gemensamma erfarenheter

Genom projektet har projektgruppen samlat m˚anga olika erfaren-heter. Dessa ¨ar bland annat inom organisation, programutveckling, dokumentation och kundkontakt som n¨armare beskrivs i detta av-snitt.

5.5.1 Organisation

N¨ar det g¨aller organisation har projektgruppen tillsammans tagit fram olika hj¨alpmedel och verktyg f¨or att hantera olika typer av in-formation. Kommunikation g¨allande projektet har skett via Slack

(28)

och omfattat information om m¨oten, seminarier, kundkontakt, sta-tus f¨or delprodukter och allm¨anna fr˚agor kring olika ¨amnen. Detal-jerad information om detta ges i kvalitetsplanen, se bilaga. Projekt-gruppen har varit n¨ojd med detta eftersom det har visat sig vara ett snabbt och effektivt s¨att att dela information.

5.5.2 Programutvecklingsmetodik

Inom programutvecklingsmetodik fanns det i b¨orjan av projektet ett intresse f¨or att anv¨anda sig av en mer formell och v¨aldefinierad metod. I samband med detta f¨oreslogs SCRUM och efter en diskus-sion kring dess ing˚aende faser och koncept beslutades det att arbeta enligt en modifierad variant som beskrevs tidigare. Detta f¨or att projektgruppen upplevde att endast n˚agra koncept, som i det h¨ar projektet innebar planering och arbete i sprintar, skulle bidra till en effektivare programutveckling och att resterande endast skulle ta tid som ist¨allet kunnat ¨agnas ˚at annat. Efter en utv¨ardering av detta visades sig att denna metod var l¨amplig f¨or just denna projektgrupp och projekt eftersom inga problem uppstod p˚a grund av detta val.

5.5.3 Kundkontakt

Projektgruppens kundkontakt har inneburit de st¨orsta utmaningar-na. Kunden har haft en vision och ¨onskan kring den slutliga produk-ten, men ingen s¨arskild ˚asikt om detaljer. Vidare har det f¨ormedlats att detta ist¨allet kan sk¨otas av projektgruppen. Detta ledde till pro-blem inom programutvecklingen speciellt i b¨orjan av projektet. Pro-jektgruppen l¨oste detta genom att f¨ors¨oka finna ett rum av id´eer som t¨acker kundens kreativitet och krav. D¨arf¨or har m˚anga olika proto-typer utvecklats och presenterats f¨or kund med syfte att g˚a fr˚an en vision till en konkret l¨osning. I samband med dessa kundm¨oten har projektgruppen l¨art sig att man verkligen beh¨over v¨agleda kunden med fr˚agor och f¨orslag som, av projektgruppen, anses vara m¨ojliga och rimliga l¨osningar.

5.5.4 Dokumentation

I och med att dokumentation mestadels har genomf¨orts via onli-netj¨ansten ShareLaTeX har det medf¨ort problem och l¨osningar p˚a dessa. De huvudsakliga problemen har bland annat varit spr˚akets

(29)

inl¨arningsfas, syntaktiska fel och sv˚arigheter med att tyda kom-pileringsfel. Samtliga problem har l¨osts och trots att det kr¨avdes f¨orarbete upplevde projektgruppen verktyget som nyttigt inf¨or fram-tida dokumentation. En mer detaljerad beskrivning av l¨osningarna ges av det individuella bidrag givet av kvalitetssamordnare och do-kumentansvarig.

5.5.5 Programutveckling

N¨ar det g¨aller programutveckling har kunden rekommenderat att programspr˚aken g¨arna ¨ar s˚a f˚a som m¨ojligt och att de helst ¨ar kom-patibla med JavaScript. D¨arf¨or f¨oreslogs, i b¨orjan av projektet, att det centrala programspr˚aket skulle vara TypeScript. Projektgrup-pen ans˚ag det l¨ampligt f¨or projektet, men efter en p˚ab¨orjan av pro-duktens back-end, som skrevs i Node.js, uppt¨acktes det att Type-Script inte hade den ¨onskade kompatibiliteten med Node.js. D¨arf¨or ¨

overgick projektgruppen till JavaScript. Projektgruppen har varit n¨ojd med programspr˚aket eftersom det har erbjudit mer frihet i hur olika mindre problem kunde l¨osas, trots att det medf¨orde mer disci-plin och komplexitet vid programmering.

Vid utvecklingen av produktens front-end var det inga oklarhe-ter med att HTML5 och CSS3 skulle vara centrala programspr˚ak. D¨aremot har projektgruppen parallellt testat tv˚a metoder f¨or att generera olika grafer och diagram. Dessa var programbiblioteken D3 och C3 d¨ar D3 bygger p˚a JavaScript och C3 p˚a D3. Projektgruppen uppt¨ackte tidigt att anv¨andandet av C3 var mycket enklare eftersom det kr¨avdes ett tiotal rader programkod i C3 och ett hundratal ra-der programkod i D3 f¨or att erh˚alla samma resultat. D¨arf¨or hade projektgruppen hoppet att C3:s bibliotek skulle vara tillr¨ackligt f¨or samtliga visualiseringar. Dock var det inte fallet och C3:s begr¨ansade bibliotek ledde d¨arf¨or till att projektgruppen helt ¨overgick till D3. D¨armed accepterades det att arbeta med ett mer komplext bibliotek f¨or att erh˚alla den ¨onskade friheten vid utvecklingen av produktens front-end.

5.5.6 Systemanatomi

Inf¨or utveckling av v˚ar produkt gjordes en systemanatomi f¨or att underl¨atta utvecklingsarbetet. Systemanatomin hj¨alpte gruppen att

(30)

gemensamt arbeta mot det stora m˚alet genom att dela upp arbetet i mindre bitar och tydligt visa vilka delar som var viktiga. Gruppen hade hj¨alp av systemanatomin d˚a den visade tydligt vilka funktioner som var ¨onskv¨arda snarare ¨an hur dessa skulle implementeras. 5.6 Oversikt ¨¨ over individuella bidrag

De individuella bidragen, sju stycken, beskrivs ¨oversiktligt nedan.

5.6.1 Bidrag A

Otto Bergdahls bidrag handlar om kontakten mellan projektgruppen och best¨allare/kund. Texten g˚ar igenom problem som kan uppst˚a vid kundkontakt och kravs¨attning samt redovisar en unders¨okning om hur kontakt med best¨allare och kund sett ut f¨or andra grupper i kursen TDDD96. Bidraget avslutas med en diskussion om de erfa-renheter deltagare i kursen har tagit med sig fr˚an kontakten med kund och best¨allare som kan komma till nytta i framtida arbeten i projektform.

5.6.2 Bidrag B

Peter Arvidssons bidrag handlar om f¨ordelarna med att anv¨anda sig av ett visualiseringsverktyg som D3.js, vad som utm¨arker det och hur det skiljer sig fr˚an andra liknande visualiseringsverktyg.

5.6.3 Bidrag C

Victor Bennichs bidrag handlar om vilka vinsterna av automatisera-de testning ¨ar och ger en ¨overblick av testverktyget Mocha. En grov introduktion till att s¨atta upp automatiska tester med Mocha ges och en j¨amf¨orelse och diskussion g¨ors kring huruvida vinsterna av automatisk testning r¨attf¨ardigar resurserna som l¨aggs ned p˚a dess utveckling.

5.6.4 Bidrag D

Hakan Celiks bidrag handlar om dokumentationsstrategi i Share-LaTeX. Syftet ¨ar att analysera identifierade praktiska problem vid dokumentation i onlinetj¨ansten ShareLaTeX, om det finns l¨osningar p˚a dem och hur man ska organisera dokumentation f¨or att erh˚alla

(31)

en kvalitativ dokumentstruktur. Slutsatser som dras ¨ar att det finns m˚anga olika problem inom exempelvis inl¨arning och programmering samt att det beh¨ovs en skr¨addarsydd dokumentstruktur anpassad till projekt och projektgrupp.

5.6.5 Bidrag E

Petter Granlis individuella bidrag handlar om verktyg f¨or automa-tiserad drifts¨attning av kod f¨or webbapplikationer och fokuserar p˚a vilka f¨ordelar dessa f¨or med sig samt skillnaderna mellan dessa olika verktyg.

5.6.6 Bidrag F

Gunnar Grimsdals individuella bidrag handlar om prestanda hos en enkel webbserver skriven i JavaScript och exekverad i Node.js j¨amf¨ort med andra l¨osningar. Syftet ¨ar att hitta skillnader i pre-standa och att unders¨oka hur asynkrona funktioner kan f¨orb¨attra prestandan hos webbservern.

5.6.7 Bidrag G

Johan Nilssons individuella bidrag handlar om agil utveckling och utvecklingsmetodik f¨or mindre projekt. Syftet med det individuella bidraget ¨ar att diskutera huruvida Scrum passar som utvecklings-metodik f¨or ett mindre projekt, samt unders¨oka om det finns n˚agon annan etablerad utvecklingsmetodik som passar b¨attre.

(32)

6

Diskussion

I detta kapitel diskuteras resultat, metod och arbetet i ett vida-re sammanhang. Det behandlar vida-resultatets alternativa utseende, utv¨ardering och l¨ardomar. Vidare f¨ors en diskussion kring anv¨anda metoder, dess konsekvenser och alternativ samt k¨allkritik. Kapit-let avslutas med att beskriva hur produkten f¨orh˚aller sig till olika aspekter.

6.1 Diskussion av resultatet

I detta avsnitt diskuteras resultatet genom att behandla alterna-tiva implementationss¨att, tillfredsst¨allelse av kundens behov och l¨ardomar fr˚an projektet.

6.1.1 Alternativa implementationss¨att

M˚anga beslut om hur produkten skulle implementeras har tagits under projektets g˚ang och sj¨alvklart finns det andra s¨att att imple-mentera en produkt med samma funktionalitet. Ett tydligt exem-pel p˚a en alternativ l¨osning ¨ar att f¨or varje diagram ha ett sepa-rat HTML-dokument. F¨ordelen med separata HTML-dokument f¨or varje diagram ¨ar att anv¨andaren inte beh¨over ladda ner lika myc-ket information fr˚an servern f¨or att webbapplikationen ska fungera vid start. En annan f¨ordel vore mindre komplex JavaScript-kod d˚a webbservern och webbl¨asaren hade hanterat vilken graf som skulle laddas. En nackdel med denna metod ¨ar att identisk kod finns i olika dokument och d¨armed g¨or vidareutveckling sv˚arare.

I b¨orjan av projektet fick projektgruppen direktiv att produkten skulle kunna l¨asa data fr˚an en Microsoft SQL Server, men efter ett senare kundm¨ote blev gruppmedlemmarna informerade om att kun-den inte hade tillg˚ang till n˚agon SQL-server. Vid denna tidpunkt hade dock produktens API redan utvecklats. Nu i slutet av pro-jektet har gruppen implementerat en funktion i webbapplikationen som kan l¨asa in patientdata fr˚an xlsx-filer. Om gruppen hade f˚att information om att kunden inte hade tillg˚ang till n˚agon databas i b¨orjan av projektet hade troligtvis implementationen av produkten sett helt annorlunda ut, speciellt eftersom API:et i nul¨aget ¨ar helt oanv¨andbart f¨or kunden. Ist¨allet f¨or att utveckla API:et och

(33)

server-delen hade gruppen kunnat l¨agga sin tid p˚a att f¨orb¨attra webbapli-kationen samt funktionen att l¨asa xlsx-filer.

6.1.2 Tillfredsst¨allelse av kundens behov

Innan projektstart hade kunden inget bra s¨att att lokalisera brister eller f˚a en tydlig ¨overblick ¨over patient- och resursf¨ordelningen inom v˚arden eftersom all information om v˚ardf¨orloppet fanns i journaler, dokument, listor inf¨orda i Microsoft Excel och liknande. M˚alet med produkten var att tydligt visualisera den information som fanns och d¨armed hj¨alpa kunden att f˚a en tydlig ¨overblick av patient- och re-sursf¨ordelningen. Efter ett flertal kundm¨oten ins˚ag gruppen att kun-den inte hade tillg˚ang till data p˚a det s¨att som det hade f¨orklarats tidigare under projektet och d¨arf¨or lades fokus ist¨allet p˚a att skapa en prototyp som skulle visa hur produkten skulle kunnat fungera. F¨or att tillfredsst¨alla kundens behov hade produkten beh¨ovt l¨asa pa-tientdata fr˚an analysverktyget Power BI och logga alla anv¨andare som beg¨arde patientdata. [32]

6.1.3 L¨ardomar fr˚an projektet

B˚ade gruppen och kunden kan dra mycket l¨ardom av projektet. Gruppen har l¨art sig vikten av att komma ig˚ang tidigt med att f˚a fram en produktid´e f¨or att arbetet skall fortskrida sm¨artfritt och kunden kan hitta f¨orb¨attringsm¨ojligheter vid uppdragsgivande f¨or att underl¨atta detsamma.

Gruppens val att dela upp utvecklingen av applikationen i en server-och en klientdel med separat utveckling server-och versionshantering av de tv˚a har underl¨attat programmeringsarbetet avsev¨art. F¨or mindre erfarna programmerare blir det l¨att kodkrockar n¨ar m˚anga arbetar med samma produkt vilket praktiskt taget eliminerades i och med v˚art tillv¨agag˚angss¨att. Gruppen upplevde ocks˚a att m¨angden admi-nistration och koordination mellan gruppmedlemmarna minskades n¨ar det gick att dela in gruppen i mindre grupper.

(34)

6.2 Metod

H¨ar diskuteras effekterna av hur utvecklingsmetoden har p˚averkat resultatet och en diskussion kring alternativa metoder. Vidare ges en k¨allkritik kring de referenser som har anv¨ants i rapporten.

6.2.1 Konsekvenser f¨or resultatet

Sprinter med ¨overgripliga m˚al per sprint har kunnat effektivisera arbetet med en klar uppdelning av arbetetsb¨ordan i gruppen. Med regelbundna m¨oten har alla medlemmar i gruppen uppdaterats om hur projektets status ligger till. Eftersom produktens krav f¨or¨andats under projektets g˚ang har arbetet l¨att kunnat anpassas sprintvis till nya krav och ny funktionalitet som efterfr˚agats.

6.2.2 Alternativa metoder

Projektgruppen har valt att inte anv¨anda metoder som vattenfalls-metoden och ist¨allet g˚att p˚a en mer agil v¨ag f¨or att kunna anpassa utvecklingen till nya och f¨or¨andrade krav. Om vattenfallsmetoden anv¨ants skulle ¨andringar p˚a krav inneburit att vi skulle passerat designfasen n¨ar nya krav dykt upp fr˚an kunden och projektet hade blivit mindre flexibelt.

6.2.3 K¨allkritik

M˚anga av k¨allorna som anv¨ands i denna rapport kommer ifr˚an ut-vecklarna av produkten som k¨allorna handlar om. Detta ger att k¨allorna med all sannolikhet st¨ammer n¨ar det kommer till rent tek-niska detaljer. Dock kan utvecklare glorifiera sin produkt vilket kan ge att endast de positiva delarna av produkten tas upp i k¨allorna. De produkter som gruppen har anv¨ant har dock testats i den ut-str¨ackning som har varit m¨ojligt. I dessa fall har mindre program skrivits med syfte att unders¨oka om produktens funktionalitet mot-svarat gruppens efterfr˚agan. D¨armed har eventuella negativa aspek-ter av produkten kommit upp.

Vid anv¨andning av icke publicerade k¨allor som bloggar eller mindre officiella informationsblad har upphovsm¨annen i m¨ojlig m˚an bak-grundkollats och gruppen har f¨or varje k¨alla f¨ors¨okt verifiera infor-mationen mot andra k¨allor.

(35)

6.3 Arbetet i ett vidare sammanhang

Under en utvecklingsprocess ¨ar det l¨att att endast fokusera p˚a pro-gramkod och att uppn˚a funktionalitet, men denna sektion behandlar fler ¨an de tekniska aspekterna f¨or produkten.

6.3.1 Samh¨alleliga aspekter

Sjukv˚arden ¨ar en s¨arskilt viktig samh¨allsfunktion d¨ar ¨agande och styre till avg¨orande del best˚ar av samh¨allet sj¨alvt. Sjukv˚arden ¨ar beroende av samh¨allets fullgoda funktion och vice versa. D¨armed sker en sj¨alvklar p˚averkan av samh¨allet vid vidareutveckling och ef-fektivisering av sjukv˚arden.

Vid utveckling av v˚ar produkt ˚at Region ¨Osterg¨otland l˚ag fokus sj¨alvklart p˚a att produkten skulle underl¨atta f¨or kunden. I fallet med v˚ar produkt gick s˚aledes m˚alet med produkten och samh¨allsnytta hand i hand eftersom en effektivare sjukv˚ard naturligt leder till minskad kostnad f¨or samh¨allet. Det leder antagligen ocks˚a till en behagligare upplevelse f¨or v˚ardtagare och dess anh¨origa. S¨arskilt viktigt kan detta upplevas i samband med det som produkten ¨ar t¨ankt att underl¨atta, dvs. arbete vid cancerdiagnoser.

6.3.2 Milj¨oaspekter

Ett s¨att att minska det negativa avtrycket p˚a milj¨on fr˚an produk-ten ¨ar att optimera antalet n¨atverkspaket som skickas till webbap-plikationen. Detta kan g¨oras genom att minska storleken p˚a alla JavaScript-, HTML- och CSS-filer som beh¨ovs f¨or att webbapplika-tionen ska fungera. Alla dessa filer g˚ar att komprimera genom att ta bort alla obetydliga mellanrum, indrag och radbrytningar, detta g¨or dock koden mer sv˚arl¨ast. Genom att beh˚alla den okomprimerade filen, som kan anv¨andas f¨or vidareutveckling, och vid varje uppda-tering skapa nya komprimerade filer som servern anv¨ander beh˚aller man l¨asbarheten.

Ett annat s¨att att minska n¨atverksanv¨andningen ¨ar att minska an-talet f¨orfr˚agningar webbapplikationen g¨or till servern. V˚ar f¨orsta prototyp av webbaplikationen laddade in alla JavaScript filer och hela databasen varje g˚ang ett nytt diagram visades. Detta var ingen

(36)

bra l¨osning. D¨arf¨or ¨andrades det till att databasen endast laddas in f¨orsta g˚angen en anv¨andare g˚ar in p˚a hemsidan och att webbappli-kationen laddar in JavaScript-filerna n¨ar det beh¨ovs.

REST-API:t komprimerar den data som returneras med gzip. [22] Detta ¨ar inte ett lika sj¨alvklart val som att komprimera filer ge-nom att ta bort obetydlig information eftersom data komprimerad med gzip beh¨over avkodas av webbapplikationen; en operation som anv¨ander energi. Huruvida anv¨andningen av gzip ¨ar ett bra alter-nativ beror p˚a hur mycket energi det tar att skicka n¨atverkspaketen mellan webbapplikationen och API:t och hur mycket energi det tar f¨or webbapplikationen att avkoda informationen.

6.3.3 Etiska aspekter

Produkten kommer att behandla sekretesslagd information som per-sonnummer, namn och adresser. Om dessa uppgifter l¨acks ut eller obeh¨origa f˚ar tilltr¨ade till dem s˚a kan det inneb¨ara risker f¨or pati-enterna.

Eftersom s¨akerhet inte togs h¨ansyn till under utvecklingen av pro-dukten f˚ar kunden ist¨allet anv¨anda den p˚a ett ansvarsfullt s¨att. Om produkten endast ¨ar tillg¨anglig p˚a ett slutet n¨at och med en in-loggningsfunktion minimeras riskerna f¨or att information l¨acker ut. Produktens funktionalitet i sig skulle kunna g¨ora stor nytta i v˚arden f¨or att prioritera resurser och i slut¨andan r¨adda liv. Avv¨agningen ¨ar att riskera personlig information f¨or att f¨orb¨attra v˚arden. Eftersom detta sker varje dag i samh¨allet g¨or det inte denna produkt unik ur ett etiskt perspektiv.

(37)

7

Slutsatser

Syftet med detta arbete var att analysera projektgruppens utveck-lingsmetoder och processer f¨or att ta fram produkten. Vidare skulle det ges en redovisning av samtliga erfarenheter inom detta. Arbe-tet har besvarat detta och projektgruppen kan dra slutsatser kring fr˚agest¨allningarna enligt f¨oljande:

1. Produkten Visual Care har implementerats som en hemsida med funktionalitet f¨or att visualisera data fr˚an Region ¨Osterg¨ ot-land.

2. N¨ar det g¨aller erfarenheter kan det s¨agas att projektgruppen skulle ha kunnat b¨orja med implementationen tidigare om kun-den hade varit tydligare med vad som ¨onskades.

3. F¨or att hantera detta har projektgruppen, med hj¨alp av en systemanatomi, identifierat de viktigaste behoven hos kunden och fokuserat p˚a funktionalitet som tar h¨ansyn till det.

4. Produkten kommer i sitt nuvarande tillst˚and att fungera som en prototyp och inspiration f¨or en integrerad version hos kunden. Om kunden implementerar en version baserat p˚a Visual Care kommer tid och resurser att sparas eftersom helhet och detaljer klarg¨ors tydligare j¨amf¨ort med dokumentation i pappersformat.

(38)
(39)
(40)
(41)

A

Otto Bergdahl - Erfarenheter av kontakt med

best¨

allare och kund under ett projekt

A.1 Inledning

Detta kapitel unders¨oker hur kontakten med best¨allare och kund har fungerat under projekten som genomf¨orts i samband med kursen TDDD96 VT17. Under projektet har en av de st¨orsta utmaningarna f¨or gruppen varit kontakten med best¨allaren och att ta deras behov och visioner och skapa en konkret produkt. Unders¨okningen bygger till stor del p˚a en enk¨atunders¨okning med personer som g˚ar kursen TDDD96 VT17 och deras erfarenheter om kontakt med kund och best¨allare under projektet.

A.1.1 Syfte

Syftet med denna unders¨okning ¨ar att se hur kontakt med best¨allare och kund har fungerat under projektet, vad som g˚att bra, vad som g˚att mindre bra och vilka erfarenheter som kan hj¨alpa i framtida projekt och vidare i arbetslivet.

A.1.2 Fr˚agest¨allningar

1. Vilka erfarenheter har samlats ang˚aende kundkontakt under projektet?

2. Hur har kontakten med kund/best¨allare fungerat f¨or projekt-grupperna i kursen TDDD96 VT17?

(42)

A.2 Bakgrund

I projektet i kursen TDDD96 har f¨oretag lagt fram projektf¨orslag som studenterna i grupper om ca 7 sju personer har f˚att v¨alja mel-lan. Varje projektf¨orslag bestod av en beskrivning av produkten p˚a ca tv˚a A4-sidor. Efter att gruppen valt ett projektf¨orslag p˚ab¨orjades kontakt med best¨allaren. Utifr˚an denna kontakt skulle gruppen spe-cificera krav och planera projektet. Sedan skulle planen genomf¨oras och en produkt till slut levereras till kunden. I v˚ar grupp (grupp 5) st¨otte vi snabbt p˚a hinder vid v˚ar kontakt med best¨allaren. Det visade sig vara sv˚arare ¨an vad vi trott att specificera best¨allarens behov till n˚agot konkret. Detta dels f¨or att best¨allaren inte var s¨aker p˚a exakt vad den ville f˚a ut av produkten samt att vi i gruppen var oerfarna av att sortera ut krav ur det som diskuterades p˚a m¨oten med best¨allaren. Efter dessa erfarenheter har nyfikenhet v¨ackts om hur kontakt med best¨allare och kund fungerat f¨or ¨ovriga grupper i projektet. D¨arf¨or har det valts att unders¨oka detta n¨armare.

A.3 Teori

H¨ar f¨oljer en kort beskrivning av n˚agra begrepp som tas upp i rap-porten.

Best¨allare/kund

Best¨allare ¨ar den part i projektet som best¨allt produkten av pro-duktgruppen, i detta projekt ¨ar det ¨aven best¨allaren som varit kund och dessa kommer d¨arf¨or att anv¨andas synonymt i rapporten. Slack

Popul¨ar n¨attj¨anst f¨or gruppkommunikation vid projekt med m¨ojlighet att skapa olika kanaler f¨or olika delar av gruppen eller f¨or olika sam-tals¨amnen. [42]

Google Hangouts

N¨attj¨anst f¨or videokonferenser och text-medelanden. [23] Skype

(43)

A.4 Metod

Kundkontakt har varit en stor del av projektet och under projek-tet har en del erfarenheter samlats fr˚an hur v˚ar projektgrupp upp-levt kundkontakten. Dessa erfarenheter kommer att unders¨okas och j¨amf¨oras med erfarenheter fr˚an andra grupper. Erfarenheterna har samlats in l¨opande under projektet fr˚an kommentarer och diskus-sioner under gruppm¨oten.

F¨or att samla mer erfarenheter fr˚an ¨ovriga deltagare i projektet har en enk¨atunders¨okning genomf¨orts (se kapitel A.5.2). Enk¨aten bestod av fem fr˚agor ang˚aende kundkontakt som besvarades p˚a en skala 1-5. Ut¨over dessa fanns det tre extra fr˚agor d¨ar respondenten hade m¨ojlighet att ge mer utf¨orliga svar.

A.5 Resultat

I detta kapitel presenteras resultatet fr˚an den enk¨atunders¨okning om genomf¨orts och de erfarenheter som samlats in fr˚an gruppen under projektets g˚ang.

A.5.1 Samlade erfarenheter

Under projektets g˚ang har v˚ar grupp l¨art oss mycket om kundkon-takt och vad som kan g˚a fel och vara sv˚art n¨ar man kommunicerar med kunden. H¨ar f¨oljer n˚agra av de erfarenheter vi samlat in under projektet.

Ett tidigt problem som uppstod var att det inte var speciellt tyd-ligt vad kunden faktiskt ville f˚a ut av produkten vi skulle utveckla. De hade m˚anga id´eer som var v¨aldigt spridda och som inte alltid fungerade tillsammans. Vissa id´eer gick inte att f¨orverkliga alls d˚a data som skulle beh¨ovas inte fanns. Detta ledde till att vi i b¨orjan av projektet beh¨ovde l¨agga mycket tid till att tillsammans med kun-den gallra bland id´eerna f¨or att sedan g¨ora om dem till krav i en kravspecifikation.

Vi hade under projektet kontakt med m˚anga olika personer fr˚an kundens sida. Personerna kom fr˚an flera olika avdelningar och var olika v¨al insatta i projektet. De hade alla skilda uppfattning av vad

(44)

produktens syfte var och vad den skulle best˚a av.

A.5.2 Enk¨atunders¨okning

Nedan f¨oljer en sammanfattning av svaren fr˚an den enk¨atunders¨okning som genomf¨orts f¨or att unders¨oka hur kundkontakten fungerat f¨or medlemmar i andra projektgrupper i TDDD96 VT17. Totalt svara-de 33 personer p˚a enk¨aten.

Hade er kund tydliga krav p˚a produkten innan projektstart: Denna fr˚aga besvarades p˚a en skala 1-5 d¨ar 1 var ”Kunden hade inga specifika krav” och 5 ”Kunden hade mycket tydliga krav”. Som kan ses i figur 6 ¨ar svaren p˚a denna fr˚aga spridda men st¨orre delen av svaren ligger centrerade runt 3 med n˚agra fler svar ˚at de h¨ogre svars-alternativen. Det ser ut som att krav fr˚an kunden har existerat fr˚an kunden f¨or majoriteten av respondenterna men de har inte alltid varit speciellt tydligt formulerade.

(45)

Hur l¨att har det varit att komma i kontakt med er kund under projektet: Denna fr˚aga besvarades p˚a en skala 1-5 d¨ar 1 var ”V¨aldigt sv˚art” och 5 ”Mycket l¨att”. Enligt svaren, som kan ses i figur 7, tycks det har varit ganska till mycket l¨att f¨or de flesta av respondenterna att f˚a kontakt med sin kund under projektet.

(46)

Hur tydliga har instruktionerna fr˚an kunden varit under projektet: Denna fr˚aga besvarades p˚a en skala 1-5 d¨ar 1 var ”V¨aldigt otydliga” och 5 ”mycket tydliga”. Denna fr˚aga har besvarats mer ne-gativt, med majoriteten av svaren mellan 1 och 3, se figur 8. Det verkar allts˚a som att instruktionerna fr˚an kunden har upplevts gans-ka otydliga f¨or m˚anga respondenter.

(47)

Hur v¨al st¨amde projektet med den information som gavs i projektbeskrivningen: Denna fr˚aga besvarades p˚a en skala 1-5 d¨ar 1 var ”st¨amde inte alls” och 5 ”st¨amde helt”, se figur 9. Svaren p˚a denna fr˚aga ¨ar v¨aldigt spridda och det verkar som att kvaliteten p˚a informationen i projektbeskrivningarna har skiljt sig mycket fr˚an projekt till projekt.

(48)

Hur v¨al skulle du s¨aga att er kundkontakt fungerat under projektet: Denna fr˚aga besvarades p˚a en skala 1-5 d¨ar 1 var ”inte bra alls” och 5 ”mycket bra”. St¨orre delen av respondenterna ver-kar vara n¨ojda, eller ˚atminstone inte missn¨ojda, med kundkontakten under projektet, se figur 10.

Figur 10: Stapeldiagram ¨over insamlade svar p˚a femte fr˚agan.

Hur har ni i er grupp kommunicerat med er kund: Majo-riteten av respondenterna svarade att de anv¨ande e-post som den huvudsakliga kommunikationsv¨agen f¨or st¨orre fr˚agor och f¨or att pla-nera m¨oten. N¨ar fysiska m¨oten inte var m¨ojliga h¨olls de ist¨allet ¨

over video-/ljud-l¨ank via Skype. F¨or mindre fr˚agor eller l¨attare prat anv¨andes meddelande-tj¨anster s˚a som Slack och Google Hangouts Har du n˚agon ny erfarenhet g¨allande kundkontakt som du kommer att ta med dig fr˚an det h¨ar projektet: Denna fr˚aga gav m˚anga bra svar som kan hj¨alpa vid framtida projekt. N˚agot som togs upp av flertalet av respondenterna var vikten av att vara tydlig i kommunikationen med kunden. Det blir l¨att missf¨orst˚and vilket kan leda till att kunden och projektgruppen f˚ar olika uppfattningar om vad som best¨amts p˚a m¨oten eller via e-post. Det framgick ocks˚a att det var viktigt att h˚alla regelbunden kontakt med kunden och inte l˚ata det g˚a f¨or l˚ang tid mellan uppdateringar om framsteg. En annan sak som togs upp var att det var viktigt att b˚ade kunden vet,

(49)

och ¨ar ¨overens om, exakt vilka krav som finns i kravspecifikationen. Har du n˚agot ¨ovrigt du vill meddela ang˚aende kundkon-takt: Svaren p˚a denna fr˚aga hade inget att till¨agga som inte tagits upp i f¨oreg˚aende fr˚aga.

A.6 Diskussion

I detta kapitel diskuteras resultatet och de metoder som anv¨ants i unders¨okningen.

A.6.1 Resultatet

Fr˚an de erfarenheter jag samlat under projektets g˚ang s˚a ser jag nu vikten av att tidigt f˚a bra kontakt med kunden. Kunden kanske inte alltid sj¨alv vet vad de faktiskt vill ha och d˚a g¨aller det att till-sammans med kunden f¨ors¨oka f˚anga upp deras id´eer f¨or att kunna forma dem till en f¨ardig produkt. En metod f¨or att avhj¨alpa detta problem ¨ar att f¨ors¨oka ta fram prototyper redan innan kravspecifica-tionen ¨ar f¨ardigst¨alld. Prototyperna bygger p˚a de id´eer som kunden har och anv¨ands sedan f¨or att ta fram en riktig kravspecifikation f¨or en f¨ardig produkt. Det g¨aller dock att vara f¨orsiktig s˚a att man inte skapar en prototyp som leder bort fr˚an kundens faktiska behov, en prototyp som kanske ser bra ut men egentligen inte uppfyller det som kunden vill ha. [1]

Svaren p˚a enk¨aten gav en del insikter i hur kundkontakten funge-rat f¨or de andra projektgrupperna. Det tycks inte varit n˚agra st¨orre problem f¨or grupperna att f˚a kontakt med sina kunder under pro-jektet men d¨aremot tycks instruktionerna de f˚att fr˚an kunden varit n˚agot otydliga. En del hade ¨aven problem med att projektbeskriv-ningen inte st¨amde med projektet de till slut genomf¨orde. Vikten av att ha regelbunden kontakt med kunden och att alltid vara v¨aldigt tydlig i kommunikationen ¨ar n˚agot som tydligt framgick ifr˚an sva-ren. Detta ¨ar n˚agot jag verkligen h˚aller med om baserat p˚a mina egna erfarenheter. Ett bra s¨att f¨or att se till att kommunikationen med kunden g˚ar s˚a smidigt som m¨ojligt ¨ar att s¨atta upp en ordent-lig kommunikationskanal. Tj¨anster som Slack, Google Hangouts och Skype ¨ar exempel p˚a kanaler som fungerat bra f¨or grupper i det h¨ar projekten.

(50)

A.6.2 Metoden

Enk¨atunders¨okningen besvarades av ca 30% av kursens deltagare. Detta g¨or s˚a klart att svaren inte kan ses som helt representativa av alla deltagares erfarenheter. D¨aremot kan det antas att ˚atminstone en representant fr˚an varje grupp, eller i alla fall fr˚an majoriteten av grupperna, svarat p˚a enk¨aten. Den l˚aga svarsfrekvensen berodde nog till stor del p˚a den korta svarstid som respondenterna hade. Detta hade kunnat l¨osas genom att enk¨aten skickats ut tidigare f¨or att ge mer tid ˚at respondenterna att svara. F¨or att kontrollera fr˚an vilka grupper svaren kom ifr˚an borde detta varit en fr˚aga p˚a enk¨aten. Det hade d˚a varit l¨attare att se om svaren var representativa f¨or samtliga grupper.

A.7 Slutsatser

Nedan tas de slutsatser som kan dras av unders¨okningen upp f¨or de fr˚agest¨allningar som beskrevs i avsnitt A.1.2.

1. De erfarenheter som samlats ang˚aende kundkontakt ¨ar framf¨orallt hur viktigt det ¨ar att vara tydlig med kunden s˚a att missf¨orst˚and inte uppst˚ar. Om det ¨ar m˚anga personer inblandade fr˚an kun-dens sida ¨ar det viktigt att information g˚ar ut till alla s˚a att alla inblandade ¨ar ¨overens om kraven p˚a produkten och dess m˚al. Det ¨ar ocks˚a bra att projektgruppen tidigt sj¨alva kommer med f¨orslag och prototyper om kunden inte ¨ar helt s¨akra p˚a vad det ¨ar de vill ha.

2. Kundkontakten har fungerat ganska bra f¨or ˚arets projektgrup-per, det har varit l¨att att f˚a kontakt med sin kund. D¨aremot har en del av de projektbeskrivningar som gavs innan projektstart inte alltid st¨amt med hur det slutgiltiga projektet s˚ag ut. Dess-utom har instruktionerna fr˚an kunden under projektet till viss del varit otydliga.

Kundkontakt ¨ar inte alltid l¨att men genom att l¨ara sig av sina miss-tag och ta med sig samlade erfarenheter till n¨asta projekt har man snart den delen av projektet som i en ask.

(51)

B

Peter Arvidsson - Visualisering i D3.js

Detta kapitel behandlar den individuella delen av kandidatrapporten skriven av projektgruppens arkitekt.

B.1 Inledning

Vanligt f¨orekommande i mjukvaruprojekt ¨ar att representera och visualiera data som beskriver en produkts inneh˚all. Dessa visuali-seringar ¨ar ofta vad som f˚ar anv¨andaren att f¨orst˚a produkten och skapa en viss uppfattning om dess information. F¨or detta ¨andam˚al finns det m˚anga visualiseringsbibliotek f¨or att effektivt kunna ska-pa visualiseringar av data. Kapitlet innefattar anv¨andningen uti-fr˚an JavaScript-biblioteket D3.js och och dess syfte samt positiva anv¨andningsomr˚aden. D3 st˚ar f¨or Data-Driven Documents och ¨ar ett kraftfullt verktyg och bibliotek baserat p˚a JavaScript f¨or att grafiskt visualisera data p˚a ett enkelt och effektivt s¨att. I kapitlet j¨amf¨ors ¨aven andra mindre avancerade bibliotek f¨or att framh¨ava f¨orst˚aelsen f¨or vilken typ av bibliotek som passar arbetsg˚angen f¨or ett mjukvaruprojekt.

B.1.1 Syfte

Syftet med unders¨okningen ¨ar att unders¨oka f¨ordelarna D3.js har f¨or projektet gentemot liknande metoder f¨or visualisering av data. Gemensamt har alla visualiseringsbibliotek som huvudsyfte att un-derl¨atta visualisering av data i en smidig och l¨attl¨ast kodstruktur.

B.1.2 Fr˚agest¨allningar

1. D3.js ¨ar ett bland m˚anga liknande bibliotek. Hur skiljer sig D3.js fr˚an ¨ovriga och varf¨or har projektgruppen valt att anv¨anda just detta verktyg?

2. Vilket visualiseringsbibliotek b¨or man v¨alja f¨or att anpassa ef-ter sin erfarenhetsniv˚a och projekt?

B.2 Bakgrund

D3.js ¨ar ett kraftfullt och p˚alitligt verktyg som konstant utveck-las och f¨orb¨attras med nya strukturer och optimeringar tack

(52)

va-re dess open source-modell. Eftersom D3.js har s˚a stora och breda m¨ojligheter trots sin struktur och smidighet, kan inl¨arningskurvan vara relativt brant - ¨aven f¨or n˚agon som redan har erfarenhet med JavaScript. Oavsett vad D3.js-anv¨andaren vill uppn˚a, ¨ar det mycket troligt att en mall f¨or visualiseringen redan finns klart p˚a ett eller annat s¨att, d¨aremot kr¨avs det djup f¨orst˚aelse f¨or att kunna modi-fiera mallen och f˚a nya funktioner eller strukturer att fungera ihop med varandra. D3.js anv¨ander ett JavaScript-bibliotek tillsammans med SVG, HTML5 och CSS f¨or den grafiska representationen. [41]

B.3 Teori

Som svar p˚a fr˚agan ”Vilka ¨ar de b¨asta JavaScript-biblioteken f¨or visualisering av data- rankas D3.js p˚a f¨orsta plats. [41] Eftersom D3.js fungerar s˚a bra tillsammans med andra webbteknologier som HTML, SVG och CSS och anv¨ander deras fulla potential, blir D3.js ett kraftfullt verktyg f¨or utvecklare.

Gemensamt med liknande visualiseringsverktyg ¨ar att det utnytt-jas p˚a klientsidan av applikationen, medan serversidan genererar n¨odv¨andiga data f¨or visualiseringen. Till skillnad fr˚an andra visua-liseringsverktyg anv¨ander D3.js en funktionell stil vilket inneb¨ar att kodsekvenser enkelt kan ˚ateranv¨andas och nya funktioner l¨aggas till i det ursprungliga inneh˚allet f¨or exempelvis v¨alutvecklade mallar. Det f¨oljer en stabil struktur samtidigt som utvecklaren ¨ar fri att ¨

andra stil, g¨ora egna funktioner och s¨att att interagera med data. [18]

D3.js har en stark och p˚alitlig anv¨andargrupp med m˚anga exem-pel f¨or alla t¨ankbara datavisualiseringar d¨ar de flesta ¨ar gjorda av verktygets f¨orfattare. K¨allkoden ¨ar tillg¨anglig f¨or alla, vilket inneb¨ar att vem som helst har tillg˚ang till k¨allkoden med m˚al att utveck-la verktyget vidare, d¨arf¨or finns det ¨aven m˚anga anv¨andargjorda visualiseringar presenterade f¨or biblioteket att ta del av.

B.4 Metod

Unders¨okningen har utf¨orts med hj¨alp av en onlinestudie om j¨amf¨orelse mellan olika visualiseringsverktyg d¨ar anv¨andare uttrycker sig om upplevelsen samt f¨ordelarna och nackdelarna med dessa. Dessutom

(53)

har egen anv¨andning och testning av tre v¨alk¨anda bibliotek - D3.js, C3.js och Google Charts gjorts, vars skillnader och f¨ordelar noterats f¨or respektive verktyg. Detta f¨or att f˚a en mer praktisk f¨orst˚aelse f¨or och uppfattning av visualiseringsverktyg.

B.5 Resultat

I resultatet presenteras ett exempel f¨or de ovan n¨amnda bibliote-ken , alla baserade p˚a enkla cirkeldiagram. Respektive bibliotek utv¨arderas med dess f¨ordelar och nackdelar tillsammans med ko-den samt n¨ar dessa b¨or anv¨andas. Onlinestudien tas samtidigt till h¨ansyn och de punkter som v¨ager in mest po¨angteras.

B.5.1 Utv¨ardering av biblioteken och dess inbyggda funktioner

Som del av unders¨okningen gjordes ett enkelt cirkeldiagram med hj¨alp av respektive bibliotek med s˚a f˚a funktioner och l˚ag komplex-itet som m¨ojligt. M˚alet var att se och f¨orst˚a de st¨orre skillnaderna och anv¨andningen.

B.5.2 Google Chart

Enklast och snabbast gjordes diagrammet i Google Charts vilket anv¨ander sig av ett f¨orbest¨amt dataformat: ’arrayToDataTable’ och en diagramtyp ’PieChart’ f¨or att till sist rita ut diagrammet med den inf¨orda data som parameter presenterat nedan. Av koden l¨amnas inte mycket kvar till egen utveckling och modifiering. Stildokumen-ten tillh¨or ’google.visualization’ -paketet och animationerna ¨ar redan implementerade. Sj¨alvklart g˚ar det att skriva ¨over de funktioner som finns f¨or att uppn˚a sitt ¨onskade utseende och beteende, men Google Charts ¨ar inte optimalt f¨or det ¨andam˚alet. Enkelheten lig-ger i fokus f¨or biblioteket och anv¨andaren kan snabbt implementera v¨aldesignade visualiseringar utan anstr¨angning.

(54)

Figur 11: Enkelt cirkeldiagram byggt i Google Charts f u n c t i o n d r a w C h a r t () { var d a t a = g o o g l e . v i s u a l i z a t i o n . a r r a y T o D a t a T a b l e ([ [’ D a t a T a s k ’, ’ eg . H o u r s per Day ’] , [’ D a t a 1 ’, 3] , [’ D a t a 2 ’, 2] , [’ D a t a 3 ’, 2] ]) ; var c h a r t = new g o o g l e . v i s u a l i z a t i o n . P i e C h a r t ( d o c u m e n t . g e t E l e m e n t B y I d (’ p i e c h a r t ’) ) ; c h a r t . d r a w ( d a t a ) ; }

Kodexempel 1: Google Chart

B.5.3 C3.js

C3.js ¨ar baserat p˚a D3.js p˚a s˚a vis att det packar in koden som kr¨avs f¨or att konstruera hela diagrammet. Resultatet blir att stora delar av D3.js-koden inte beh¨over skrivas, utan blir ist¨allet inbyggd i det nya bibliotekets funktioner. Exempelvis implementeras all SVG och det grafiska i type = ’pie’. Nackdelen med detta ur ett utvecklings-perspektiv ¨ar att friheten f¨or enkel modifiering f¨orsvinner.

Verktyget ¨ar utm¨arkt f¨or att komplettera en redan skapad visualise-ring i D3.js. Utan att blanda in andra bibliotek eller skriva en on¨odig m¨angd kod f¨or en kompletterande graf, kan C3.js smidigt anv¨andas f¨or att ˚astadkomma detta.

var c h a r t = c3 . g e n e r a t e ({ d a t a : { c o l u m n s : [ [’ d a t a 1 ’, 30] , [’ d a t a 2 ’, 120] , ] ,

(55)

Figur 12: Enkelt cirkeldiagram byggt i C3.js t y p e : ’ pie ’, o n c l i c k : f u n c t i o n ( d , i ) { c o n s o l e . log (" o n c l i c k ", d , i ) ; } , o n m o u s e o v e r : f u n c t i o n ( d , i ) { c o n s o l e . log (" o n m o u s e o v e r ", d , i ) ; } , o n m o u s e o u t : f u n c t i o n ( d , i ) { c o n s o l e . log (" o n m o u s e o u t ", d , i ) ; } } }) ; s e t T i m e o u t (f u n c t i o n () { c h a r t . l o a d ({ c o l u m n s : [ [" s e t o s a ", 0.2] , [" v e r s i c o l o r ", 1.4] , [" v i r g i n i c a ", 2.5] , ] }) ; } , 1 5 0 0 ) ; s e t T i m e o u t (f u n c t i o n () { c h a r t . u n l o a d ({ ids : ’ d a t a 1 ’ }) ; c h a r t . u n l o a d ({ ids : ’ d a t a 2 ’ }) ; } , 2 5 0 0 ) ; Kodexempel 2: C3.js B.5.4 D3.js

D˚a anv¨andaren av D3.js har m¨ojlighet att skapa exakt sitt ¨onskade utseende p˚a diagrammet, resulterar det ofta i att geometrin f¨or grafer och f¨ordelningar m˚aste h˚allas i tanke till skillnad fr˚an de ovan n¨amnda biblioteken. All stilkodning g¨ors separat och med sm˚a

(56)

f¨or¨andringar i koden kan stora variationer av diagrammet skapas.

(57)

var svg = d3 . s e l e c t (" svg ") , w i d t h = + svg . a t t r (" w i d t h ") , h e i g h t = + svg . a t t r (" h e i g h t ") , r a d i u s = M a t h . min ( width , h e i g h t ) / 2 , g = svg . a p p e n d (" g ") . a t t r (" t r a n s f o r m ", " t r a n s l a t e ( " + w i d t h / 2 + " , " + h e i g h t / 2 + " ) ") ; var c o l o r = d3 . s c a l e O r d i n a l ([" #98 a b c 5 ", " #8 a 8 9 a 6 ", " #7 b 6 8 8 8 ", " #6 b 4 8 6 b ", " # a 0 5 d 5 6 ", " # d 0 7 4 3 c ", " # f f 8 c 0 0 "]) ;

var pie = d3 . pie () . s o r t (n u l l) . v a l u e (f u n c t i o n( d ) { r e t u r n d . p o p u l a t i o n ; }) ; var p a t h = d3 . arc () . o u t e r R a d i u s ( r a d i u s - 10) . i n n e r R a d i u s (0) ; var l a b e l = d3 . arc () . o u t e r R a d i u s ( r a d i u s - 40) . i n n e r R a d i u s ( r a d i u s - 40) ; d3 . csv (" d a t a . csv ", f u n c t i o n( d ) { d . p o p u l a t i o n = + d . p o p u l a t i o n ; r e t u r n d ; } , f u n c t i o n( error , d a t a ) { if ( e r r o r ) t h r o w e r r o r ;

var arc = g . s e l e c t A l l (" . arc ") . d a t a ( pie ( d a t a ) ) . e n t e r () . a p p e n d (" g ") . a t t r (" c l a s s ", " arc ") ; arc . a p p e n d (" p a t h ") . a t t r (" d ", p a t h ) . a t t r (" f i l l ", f u n c t i o n( d ) { r e t u r n c o l o r ( d . d a t a . age ) ; }) ; arc . a p p e n d (" t e x t ") . a t t r (" t r a n s f o r m ", f u n c t i o n( d ) { r e t u r n " t r a n s l a t e ( " + l a b e l . c e n t r o i d ( d ) + " ) "; }) . a t t r (" dy ", " 0 . 3 5 em ") . t e x t (f u n c t i o n( d ) { r e t u r n d . d a t a . age ; }) ; }) ; Kodexempel 3: D3.js

Den totala tiden f¨or upps¨attningen och inl¨arning skiljde sig stort mellan de olika biblioteken. F¨or Google Charts kr¨avdes n¨astan inte n˚agon inl¨arning ¨overhuvudtaget. Stegen f¨or upps¨attningen var att s¨atta diagramtyp och datatyp baserat p˚a det inbyggda paketet.

(58)

Diagrammet i C3.js var steget kr˚angligare d˚a utrymme f¨or en del inst¨allningar fanns tillg¨angligt baserat p˚a D3.js. Som st¨orst skiljde sig D3.js fr˚an de ¨ovriga med en betydligt l¨angre tid f¨or att fr˚an grunden bygga upp ett enkelt cirkeldiagram med tillh¨orande data. Vid anv¨andning av stora m¨angder data presterar ¨aven biblioteken olika. Google Charts i och med alla sina redan inbyggda animatio-ner och grafik, blir l˚angsammare ¨an C3.js och D3.js ju mer data som beh¨over l¨asas in. [19]

B.6 Diskussion

D3.js ¨ar s˚a popul¨art p˚a grund av den smidiga l¨osningen till att f˚a fram en egen visualisering fr˚an grunden eller med hj¨alp av klara mallar, och samtidigt ha friheten att kunna modifiera alla t¨ankbara detaljer utan att g˚a ifr˚an den eleganta strukturen. Till skillnad fr˚an andra visualiseringsverktyg ¨ar inl¨arningskurvan d¨aremot be-tydligt brantare. F¨orutom friheten att bygga upp den visualisering anv¨andaren haft i tanke ger D3.js en robust och kvalitativ prestan-da samt stor variation p˚a implementationer av datatyper. Dessa kan l¨asas in som JSON, XML eller CVS medan flera andra verktyg byg-ger p˚a data-tabeller eller listor f¨or enkelheten. [19]

Ett m˚al som flera andra visualiseringsverktyg som exempelvis Goog-le Charts har ¨ar att f¨orenkla och f¨orminska kodm¨angden till det minsta m¨ojliga men samtidigt till ett imponerande resultat. I dessa bibliotek kr¨avs knappt n˚agon tidigare erfarenhet och en anv¨andare kan p˚a kort tid f˚a fram diverse grafer och visualiseringar med ¨onskat data.

B.6.1 Andam˚¨ al f¨or visualiseringsverktyg

Enklare verktyg ¨ar bra f¨or n˚agon mer oerfaren och f¨or att snabbt f˚a fram en snygg visualisering. D¨aremot m˚aste anv¨andaren anv¨anda sig av verktygets exempel och regler som ¨ar v¨aldigt l˚asta till sitt utseende p˚a grund av den enkla strukturen. En ¨andring i utseendet, funktionaliteten eller beteendet skulle kr¨ava en omskrivning av de redan klara strukturena. D¨armed ¨ar dessa verktyg inte riktade till n˚agon som vill utveckla sin egna visualisering fr˚an grunden.

(59)

En erfaren utvecklare vill oftast kunna modifiera och skapa nya funktioner och beteenden utifr˚an ett bibliotek eller verktyg. D3.js ger fullt ut precis denna m¨ojlighet.

B.7 Slutsatser

F¨or att sammanfatta syftet med den individuella rapporten s˚a un-ders¨oktes f¨ordelarna med visualiseringsbiblioteket D3.js i koppling till projektet j¨amf¨ort med andra liknande verktyg som Google Charts och C3.js. Dessutom beskrivs vid vilka anv¨andningsomr˚aden och kunskapsniv˚aer respektive bibliotek passar b¨ast.

1. Genom att unders¨oka mallar f¨or olika grafer och visualiering-ar f¨or de olika biblioteken, visar det sig att D3.js knappt har n˚agra enkla grafer likt Google Charts eller C3.js, utan allt har en viss dynamik och variation i det hela. Detta p˚avisar att det helt enkelt inte ¨ar v¨art att s¨atta sig in i ett mer komplext vi-sualiseringsbibliotek om anv¨andaren inte t¨ankt utveckla n˚agot vidare.

2. F¨or ¨andam˚alet i detta projekt var D3.js ett sj¨alvklart val, trots sin skarpa inl¨arningskurva. Verktyget gav m¨ojligheten att fr˚an grunden skapa de visualiseringar som fr˚an b¨orjan fanns som pappersprototyper f¨or projektet. D3.js tillsammans med C3.js presterar ¨aven mycket b¨attre vid st¨orre m¨angder data j¨amf¨ort med Google Charts. I projektet har C3.js anv¨ands f¨or att kom-plettera visualiseringarna med mindre viktiga diagram d¨ar fo-kus inte riktas.

Alla bibliotek har sina f¨ordelar och passar en viss anv¨andarbas b¨attre ¨an den andra. Med studien f¨orv¨antas den oerfarna l¨asaren f¨orst˚a vad visualiseringsverktyg inneb¨ar och att det finns vari-erande bibliotek med olika m˚als¨attningar och f¨ordelar.

(60)

C

Victor Bennich - Testa ett API med Mocha

Detta kapitel behandlar gruppens testansvariges individuella bidrag till kandidatrapporten. Inledningsvis beskrivs kortfattat vad bidra-get behandlar f¨oljt av syftet med bidraget, fr˚agest¨allningen och teori. Slutligen ges resultatet f¨oljt av en diskussion samt slutsatser.

C.1 Inledning

Under ett st¨orre mjukvaruprojekts livstid s˚a ¨ar det l¨att f¨or program-merarna och de ansvariga att skriva m¨angder med funktionalitet ut-an att iblut-and t¨anka p˚a helheten och om ens koden fungerar fullt ut. F¨or att ˚atg¨arda detta s˚a ¨ar det mer regel ¨an undantag i f¨oretag att ha en testavdelning som kontinuerligt testar produkten och all ny funktionalitet. Detta f˚angar upp om en ny modul inte ¨ar kompati-bel med en ¨aldre modul och om utvecklarna verkligen t¨ankt igenom alla scenarion programvaran kan uts¨attas f¨or. En viktig del av en testares arbete ¨ar att utveckla och kontinuerligt uppdatera automa-tiska tester mot produkten. Det finns or¨akneligt m˚anga olika verktyg och metoder att skriva dessa tester i, men i detta avsnitt ska det behandlas hur man bygger ett ramverk f¨or automatiska tester med hj¨alp av verktyget Mocha, en modul till Node.js som ¨ar skriven i JavaScript. [20] En studie av f¨ordelar av automatiska tester gente-mot manuella tester har genomf¨orts och resultaten pekar p˚a att om en webbapplikation som f¨oruts¨atts ha l˚ang livl¨angd och kommer vi-dareutvecklas b¨or det finnas en upps¨attning automatiska testfall f¨or att utf¨ora regressionstester under utvecklingens g˚ang.

C.1.1 Syfte

Syftet med detta kapitel ¨ar att peka p˚a f¨ordelarna och nackdelarna med att anv¨anda Mocha och automatiska tester ¨overlag, samt att ge en ¨overblick ¨over hur man bygger ett komplett ramverk av tester f¨or en applikation och de b¨asta v¨agarna f¨or att strukturera det. Efter att ha l¨ast detta kapitel ska det inte vara sv˚art f¨or en utvecklare att f¨orst˚a vinsterna med automatiska tester och komma ig˚ang att skriva sina f¨orsta tester med hj¨alp av Mocha till sin webbapplikation.

(61)

C.1.2 Fr˚agest¨allningar

Faktorer som f¨or¨andrad milj¨o, programspr˚ak och infrastruktur kan p˚averka hur mycket resurser som m˚aste l¨aggas ned p˚a underh˚allet av tester vilket leder till att resurserna f¨or utveckling av produkten blir mindre. Det som unders¨oks ¨ar skillnaden i resurser (tid) som skil-jer automatiska tester fr˚an manuella tester f¨or kandidatprojektets REST-API.

1. ¨Ar v¨art att investera signifikanta resurser och tid f¨or att bygga automatiska tester?

2. Hur effektiva ¨ar automatiska tester p˚a att peka ut och tidigt f˚anga upp fel under utvecklingen av en applikation?

C.2 Bakgrund

Mocha ¨ar ett testverktyg i JavaScript som k¨ors med hj¨alp av No-de.js. [33] Tester k¨ors asynkront, det vill s¨aga att ett test inte m˚aste avslutas innan n¨asta test kan p˚ab¨orjas. Mocha ¨ar fr¨amst annpassat till att testa webbtj¨anster och syftet med Mocha ¨ar att det ska vara enkelt och roligt att skriva tester till en applikation. Projektgrup-pen har med hj¨alp av testledaren best¨amt att Mocha ¨ar det b¨ast l¨ampade verktyget f¨or ett inte s˚a omfattande projekt. Eftersom det kan ta hj¨alp av ett n¨astintill o¨andligt bibliotek av v¨alpr¨ovade mo-duler som kan hj¨alpa till att j¨amf¨ora data och hantera anslutningar s˚a minimeras den egna koden och testerna blir mer begripliga.

C.3 Teori

I denna sektion beskrivs hur ett ramverk f¨or testning byggs upp och hur denna testning skiljer sig fr˚an manuell testning.

F¨or att skapa ett testramverk i Mocha s˚a beh¨over man f¨orst lad-da hem Mocha via Node.js. St˚ar man i projektmappen och skriver: npm install mocha installeras Mocha i mappen node modules lo-kalt f¨or projektet, och versionen av mocha sparas i filen package.json. Package.json ¨ar en fil d¨ar detaljer kring ett projekt finns definiera-de. Allt fr˚an f¨orfattare i projektet, scripts, databasinst¨allningar och vilka externa moduler som anv¨ands. F¨or att effektivt f˚a ig˚ang pro-jektet i en annan milj¨o s˚a kan kommandot npm install k¨oras s˚a

References

Related documents

1) F¨or en av de missade m¨ordarna var stj¨arnhimlen inte helt korrekt - man hade n¨amligen ett krav p˚ a att stj¨arnhimlen skulle vara korrekt inom ±15 minuter sett fr˚

F¨ or betyg 4 kr¨ avs godk¨ ant p˚ a den f¨ orsta obligatoriska delen samt minst 13 po¨ ang fr˚ an den andra delen f¨ or ¨ overbetyg.. F¨ or betyg 5 kr¨ avs godk¨ ant p˚ a

Rutinen som anv¨ands f¨ or att definiera operatorn, kan ha antingen ett eller tv˚ a argument, men eftersom funktionen normalt definieras i samma modul som inneh˚

Utredningen om producentansvar för textil lämnade i december 2020 över förslaget SOU 2020:72 Ett producentansvar för textil till regeringen.. Utredningens uppdrag har varit

Migrationsverket har beretts möjlighet att yttra sig gällande utredningen Kompletterande åtgärder till EU:s förordning om inrättande av Europeiska arbetsmyndigheten

In response to the different workplace characteristics and preferences which characterizes people from Generation Y compared to earlier generations, along with the

In summary, a portable detecting system based on a nano-plasmonic chip is designed, which theoretically can do fluorescence measurements and data analysis.. Matlab was used to get

Kunden skall via hemsidan kunna få information om företaget samt även kunna beställa varor från dem och få dessa hemkörda.. Hemsidan skall vara lättnavigerad så att alla kan