Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport

Relevanta dokument
Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Priskamp. En prisjämförelsesite Björn Larsson

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

LNU INDIVIDUELLT MJUKVARUUTVECKLINGSPROJEKT. Honey Hunter. Androidspel. Martin Karlsson 1/17/2014

ToDo ios-applikation. Mikael Östman. Mikael Östman - mo22ez Linnéuniversitetet

Slutrapport för JMDB.COM. Johan Wibjer

Slutrapport YUNSIT.se Portfolio/blogg

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1

STADSLEDNINGSKONTORET SOA SDK IT-AVDELNINGEN VERSION 2.1. Läs mig först. Stockholms stad SOA-plattform. Sida 1 (5)

Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling

KAi SENSEMAKING SYSTEM

Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Mobilt Efos och ny metod för stark autentisering

Projektarbete myshop. Sandra Öigaard so222es WP12 Individuellt mjukvaruutvecklingsprojekt

Självhjälpsprogram för ADHD. Del 1 Att hitta din väg

Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson

Teknisk kartläggning kring plattformsval och arbetet med att skapa en app med Augmented Reality

Slutrapport för Internetfonden

Mobilt Efos och ny metod för stark autentisering

GYMKEEPER ANDREAS SÖDERSTRÖM

HejKalmar app. Projektrapport. Webbprojekt I

Mobilt Efos och ny metod för stark autentisering

Android översikt. TDDD80 Mobila och sociala applikationer

Din RelationsBlueprint - Källan till smärta eller framgång i din intima relation

Idrottsapen. 1. Inledning. 2. Mål och syfte. 3. Projektbeskrivning

DATALAGRING. Ämnets syfte

Gillakampen. av Merkur Hoxha WP

Mjukvaruprojekt Onlinebooks

Slutrapport Thunderbug

Köpguide för mobila växlar. Modern telefoni till företaget är långt ifrån vad det var för bara några år sedan.

Välkommen till kursen i Avancerad interaktionsdesign. Certec & EAT Institutionen för designvetenskaper

Introduktion till programmering, hösten 2011

Thomas Padron-Mccarthy Mobila applikationer med Android, 7.5 hp (Distans) (DT107G ) Antal svarande = 11. Svarsfrekvens i procent = 14.

GRUNDKURS I C-PROGRAMMERING

Tekniskt system för Lean Startup

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

Taxi boknings system, inpassering och medlemshanterings system, betallösningar, realtidssystem, App utveckling

Bonus Rapport Kommersiell Design KTH

Erik Lundgren GarageLoppisen.se. Projekt i kursen Individuellt Mjukvaruutvecklingsprojekt, 1dv430

Kristian Almgren Artificiell Intelligens Linköpings Universitet Talstyrning

Utvärdering efter deltagande i gruppvägledning vid Ungdomslotsen

Poäng. Start v. Utveckling av mobila applikationer 7.5. Antal registrerade (män/kvinnor) 230 (202/28)

Handi. För att livet ska funka

Hi-Fi Prototyping + laborationsgenomgång & verktyg

Hybridappar. Utveckla mobilappar i HTML, Javascript och CSS

Webbtjänster med API er

Enhetstester på.netplattformen

Elements, säkerhetskopiering och dina bilder

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

IdéTorget Manual. Google kalender. Skapa din kalender på Internet. Uppdaterad oktober 2011

Testautomation av sammansatta och mobila applikationer. Magnus Nilsson Lemontree

Låt kunderna göra jobbet!

Välkomna till DIT012 IPGO

Endless shooter neon - Post mortem

Slutrapport Get it going contracts

Guide för Tele P iphone app INLEDNING

5. Vad jag kan / What I can do. CHECKLISTA Nivå B2 Level B2. 1. Jag kan i detalj förstå vad man säger till mig på normalt samtalsspråk.

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Skrivglädje i vardagen!

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

1:5 SLUTRAPPORT - POST MORTEN LARS EHRMAN WP

Universe Engine Rapport

Home Storage Manager

Tepz klon. - Projektrapport. Linnéuniversitetet, Individuellt mjukvaruutvecklingsprojekt Janina Bergström, WP12 Distans

Mycket tillfredsställande Tillfredsställande. Ej tillfredsställande. Ej deltagit/ingen uppfattning. Tillfredsställande. Ej tillfredsställande

TDDD80 Mobila och sociala applikationer. Kursintroduktion

Högskolan i Gävle. Introduktion till att skapa appar för Android VT Eat App! Jacob Gavin

Rafel Ridha Projektdefinition

Kort om World Wide Web (webben)

JAVAUTVECKLING LEKTION 1

Designkoncept Field Study Organizer

Vår tanke med den här lärarhandledningen är att ge er förslag på arbetsformer och diskussionsuppgifter att använda i arbetet med boken. Mycket nöje!

Idéhäfte VocaFlexibel Bärbar och tålig samtalsapparat med bra ljud

SLUTRAPPORT. Sebastianlund.com. Individuellt mjukvaruutveckingsprojekt, 1DV430. Författare: Sebastian Lund WP11 Datum:

Slutrapport för Pacman

LAJKA-GUIDE. Jätteguide till molnets 9 bästa. näthårddiskar. 7 De bästa gratisalternativen 7 Så väljer du rätt 7 Smarta säkerhetstips

Wireframe när, vad, hur och varför?

Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT ) Antal svarande = 18

Namn: Program: Studieår: Kontakt: Lycka till med studierna!

Handledning för Installation av etikettskrivare

VIDEODAGBOKEN. Individuellt Mjukvaruutvecklingsprojekt. En dagbok i videoform online. Robert Forsgren (rf222ce) UD

Slutrapport Vertikala Sökmotorer Uppdrag från.se:s Internetfond Våren 2008

Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:

Konsult: Mats Lindblad; Kontaktperson: Mats Lindblad; Tel: ; E-post:

TDP003 Projekt: Egna datormiljön

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

Sammanfattning av kursutvärdering. Informatik C, IT-arkitektur vt2014. Sammanfattning Svarsfrekvens: 18% ( 7 / 39 ).

Process- och metodreflektion Grupp 5

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

Hjälpmedelscentralen. Välkomna!

LAJKA-GUIDE. Så totalraderar du. din mobil eller surfplatta. 7 Säker utrensning före försäljning 7 Smidigt och enkelt 7 För Android, Iphone och Ipad

Ökat socialt innehåll i vardagen

Projektrapport. Till Projektet Bluetoothstyrd bil

Mental träning termin 2 HT-10 Sida 1 av 1

Undervisningen i ämnet mobila applikationer ska ge eleverna förutsättningar att utveckla följande:

Transkript:

Collector en Android-app för att samla saker Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport

Abstrakt Jag har gjort en Android-app för att samla saker, Collector. Med den kan man upprätta att göra-listor över saker som man vill göra, till skillnad från sådant som man måste göra. Mest lyckosamt med projektet var att jag använde MongoDb med Mongolab som backend, att jag nyttjade bibliotek för att undvika att återuppfinna hjulet, samt att jag använde goda mjukvarutvecklingsmetoder för att strukturera arbetet. Störst problem har jag haft med att uppskatta hur lång tid det tar att arbeta med en ny teknik. En annan svårighet har varit att arbeta testdrivet i ett system som jag inte till hundra procent är bekväm med.

Innehåll Abstrakt...2 Bakgrund...4 Vad som gick bra...5 Vad som gick mindre bra...6 Slutsatser...7

Bakgrund Webbverktyg för att komma ihåg saker som man måste göra finns det gott om. Det som saknas är en samlingsplats för att allt som man vill göra. Till exempel se en film, läsa en bok, spela ett visst datorspel eller lyssna på en särskild skiva. Visst, det går utmärkt att använda redan existerande tjänster för att upprätta listor över några böcker som man bara måste läsa. Men dessa tjänster saknar i regel stöd för att på ett meningsfullt och effektivt sätt visa och kategorisera kulturella verk. Att visa filmer är ofta både roligare och mer lättöverskådligt med bilder på skådespelare och filmomslag. Och en digital skivsamling kan komma till liv om användaren kan bläddra igenom den i ett så kallat cover flow, som emulerar hur man bläddrar genom sin fysiska skivsamling. Denna typ av funktionalitet finns redan idag i mediaspelare och på nischsidor. Nackdelen med mediaspelare är att de hör ihop med verk som du redan har tillgång till. Deras användningsområde för att lagra det som du vill skaffa dig eller återvända till senare är alltså begränsat. Nischsidorna är typiskt sett inriktade på en enda kulturform, med en grund i topplistor och aggregation av användarbetyg. Det jag skulle vilja ha är en plats där jag kan samla kulturella verk. Verk som jag är intresserad av men inte hunnit eller kunnat skaffa med detsamma. I uppgiftsbeskrivningen för denna kurs står det att visionen ska vara omfångsrik, och det var alltså med den ovan redogjorda för, mycket ambitiösa idén i bakhuvudet som jag påbörjade mitt mjukvaruutvecklingsprojekt. Jag har gjort mitt system som en Android app. Motivationen bakom detta var framför allt att lära sig ett mobilt operativsystem. För att lagra data har jag valt MongoDb, en databas som jag var intresserad av sedan tidigare. Initialt har jag använt Eclipse som utvecklingsmiljö, men detta övergav jag efter en stund (jag återkommer till detta i Vad som gick mindre bra -avsnittet). Istället har jag huvudsakligen förlitat mig på en textredigerare och en kommandoprompt. För att testa systemet har jag använt en emulator.

Vad som gick bra När det gäller det jag har gjort i inledningsfasen av projektet, tycker jag det är mycket värdefullt att identifiera och samla systemet funktionalitet i en lista. Detta medför dels att man tänker igenom vad applikationen ska göra ordentligt innan man sätter igång och kodar, dels känns projektet inte lika hopplöst stort och ogenomförbart när man bryter ned det i mindre, hanterbera pusselbitar. Att visualera detta som en use case-karta tycker jag är suveränt för att snabbt få en överblick över vad som ska göras härnäst, samt identifiera vilken användare man ska i åtanke när man implementerar funktionen. MongoDb har varit väldigt befriande att arbeta med. En begränsning med relationsdatabaser är att de kan vara besvärliga som del i iterativt utvecklingsarbete, eftersom modellen kan ändras under utvecklingens gång. MongoDb är en NoSQL-databas och lagrar databasposter i dokument, utan vetskap om posterna eller tabellernas inbördes samband och relationer. Jag har ändrat min modell ofta medan jag arbetat med projektet, och det har aldrig varit krångligare än att ändra i ett JSONobjekt. Tyvärr saknar Android stöd för MongoDb, så för att komma runt den bristen har jag använt Mongolab en webbtjänst som hostar ens MongoDb-databas. Åtkomst sker via ett API med vanliga http-anrop. Att implementera http-anrop i Android är tämligen omständigt. För att underlätta har jag använt ett bibliotek som går under namnet Android Asynchrous Http Client. Det erbjuder http-anrop på en mer abstrakt nivå, så att man inte behöver lösa alla lågnivåproblem själv. När Anroid anropar Mongolab får operativsystemet ett JSON-svar tillbaka. För att läsa in detta har jag tagit hjälp av GSON, ett bibliotek för att läsa JSON till Java-klasser. Att sammanföra MongoDb med GSON har dock inte varit trivialt, eftersom det krävdes extra arbete för att lära GSON ObjectId-typer, MongoDb:s speciella id-räknare. Jag är mycket nöjd med att jag valde att använda dessa bibliotek i mitt projekt. Man skulle kunna argumentera för att man som ny utvecklare borde göra allt själv, att det är genom att knåda koddegen på så basal nivå som möjligt som man lär sig plattformen och de bakomliggande teknikerna. Det är inte en orimlig invändning. Men jag tycker att det finns roligare saker att lära sig, och om jag behöver förstå hur något fungerar på detaljnivå finns det källkod att tillgå. Att arbeta mot bibliotek ger dessutom en känsla för hur man på bästa sätt arbetar i ett system.

Vad som gick mindre bra Gemensamt för de element av arbetet som gick mindre bra, är att de handlar om en missräkning från min sida. Jag har i samtliga fall underskattat hur svår eller tidskrävande en viss teknik har varit att arbeta med. Att gå igenom alla de svårigheter jag har stött på är nog inte så meningsfullt, så jag nöjer mig med en översiktlig genomgång. Låt oss börja med Eclipse, som jag nämnde i inledningen av föreliggande slutrapport. Eclipse är ett hyfsat IDE om man arbetar med Java, men till Android lämnar det en del att önska. Intellij IDEA var ett bättre alternativ för att arbeta med projekthantering och design. Android Studio, ett kommande IDE, verkar lovande men är än så länge bara i testfas och inte användbart för mer seriöst utvecklingsarbete. För mer avancerad projekthantering, och för att kunna köra enhetstest från kommandoprompten, har jag använt Ant. Enligt många är Maven ett bättre val, men det var inget jag hann jämföra. Att göra layout för Android är svårt, inget man bör underskatta och dessvärre inget som Eclipse är särskilt bra på att underlätta. Hade jag gjort om det här projektet hade jag tillbringat mer tid med Android-dokumentationen och försökt använda de inbyggda komponenterna så långt som möjligt. Det gäller att bryta sig loss från sitt webbtänk och tänka mer som en applikationsutvecklare. Ett annat område där jag har fått problem är testerna. Jag ville pröva på att arbeta testdrivet. Dels för att lära mig, dels eftersom det går väldigt långsamt att göra manuella tester i emulatorn. Dock stödjer Android inte vanliga javatester eftersom Androids VM inte innehåller fullständiga klasspecifikationer. Robolectric är ett ramverk som försöker lösa det här problemet. Det var lite av ett äventyr att installera detta ramverk för Ant (det ska vara lättare med IDEA och Maven). Och när jag väl kommit igång tog det väldigt lång tid att skriva ett test. Poängen med enhetstester är inte bara att de ska gå snabbt att köra, de ska gå någorlunda snabbt att skriva också. Att arbeta testdrivet för ett system man inte känner till ordentligt tror jag väldigt få programmerare klarar. Själva konceptet med testdriven utveckling är dock inget jag tänker ge upp på. De tester jag hann skriva underlättade oerhört, och det var en stor befrielse att kunna säkerställa att kod fungerade som den skulle utan att gå omvägen via emulatorn.

Slutsatser Jag har alltså gjort en Android-app för att samla saker, Collector. Med den kan man upprätta att göra-listor över saker som man vill göra, till skillnad från sådant som man måste göra. Mest lyckosamt med projektet var att jag använde MongoDb med Mongolab som backend, att jag nyttjade bibliotek för att undvika att återuppfinna hjulet, samt att jag använde goda mjukvarutvecklingsmetoder för att strukturera arbetet. Störst problem har jag haft med att uppskatta hur lång tid det tar att arbeta med en ny teknik. En annan svårighet har varit att arbeta testdrivet i ett system som jag inte till hundra procent är bekväm med. Framöver tänker jag fortsätta utveckla systemet. Dock är jag osäker på om jag tänker göra det som en app för Android. Samtidigt som jag har genomfört mitt mjukvaruutecklingsprojekt arbetade jag skarpt med javascript-ramverket Angularjs. På samma tid som det har tagit mig att implementera en funktion i Android var jag klar med minst fem i Angular. Jag skulle dock inte vilja utesluta mer specialiserat stöd för mobila enheter. Phonegap är ett intressant projekt som skulle kunna hjälpa med just den biten.