Smartphoneutveckling för flera plattformar
|
|
- Agneta Lundqvist
- för 6 år sedan
- Visningar:
Transkript
1 Smartphoneutveckling för flera plattformar Smartphone Development for Multiple Platforms Magnus Andersson Johannes Andreasson Examensarbete inom information- och programvarusystem, grundnivå Högskoleingenjör Degree Project in Information and Software Systems First Level Stockholm, Sweden 2013 Kurs II121X, 15hp TRITA-ICT-EX-2013:144
2
3
4
5 Sammanfattning... 1 Abstract... 1 Nomenklatur Inledning Om arbetet Mål Avgränsningar Uppdragsgivarens mål med systemet Teori Bakgrund Marknaden för smartphones Plattformar använda vid surf Appnedladdning PhoneGap och andra hybridverktyg Native- och hybridapplikationer Metod Problemställning Projektmodell Tester Utvärderings- och jämförelsemetoder Prestanda Inlärnings- och utvecklingstid Storlek Leverans och överlämning till kund Bilagor Konstruktion Översikt Mobilapplikationerna Server och databas Resultat Prestanda Primtalsalgoritm Uppstart Titta på erbjudanden Ändra inställningar Inlärnings- och utvecklingstid Storlek Diskussion Översikt Hybridapplikationer fördelar Hybridapplikationer nackdelar Native- applikationer fördelar Native- applikationer nackdelar Hybrid- eller native- utveckling? Hur stor del av smartphone- marknaden måste täckas in? Hur högt prioriteras snabbhet när det gäller utbildning och utvecklingsarbete? Hur högt prioriteras prestanda? Ska applikationen kosta pengar? Hur stora kunskaper finns om hybrid- språk (HTML5, CSS3, Javascript)? Hur stora kunskaper finns om native- språk (som Java och Objective- C)?... 23
6 6.3 Utvärdering av applikationer Den egna applikationen Scenario A Scenario B Scenario C Framtid Sociala och etiska aspekter Hållbar utveckling Litteraturförteckning Appendix I Systemets arkitektur... i Inledning... i Backend... i Administratörsgränssnitt... i API för mobilapplikation... iv Installation... vii Drift/underhåll... vii Mobilapplikationernas arkitektur... viii Översikt... viii Passbook... viii Gemensamt för apparna... viii PhoneGap och jquery Mobile... viii Objective- C och Cocoa Touch... x Appendix II Kravspecifikation... xii Bakgrund... xii Funktionella krav... xii Icke- funktionella krav... xii Framtida utökningar... xiii Riskanalys... xiii Appendix III Mätdata... xiv Primtalsberäkning... xiv Uppstart... xiv Fem erbjudanden... xiv Ändra inställningar... xiv
7 Sammanfattning Marknaden för de allt populärare smarta telefonerna är splittrad. Detta innebär nya utmaningar för utvecklare. Vill man vara säker på att nå mer än hälften av sin målgrupp med en mobilapplikation så måste man utveckla för minst två plattformar, något som kostar både tid och pengar. Ett antal så kallade multiplattformsverktyg har tagits fram för att lösa detta problem. Dessa låter utvecklare använda en och samma kodbas för flera olika plattformar. Därmed slipper man dubbel- eller trippelarbetet som följer med native-utveckling. Men håller multiplattformsverktygen måttet? Denna granskning visar att prestandan och upplevelsen vid användning blir sämre, men tidsvinsten är potentiellt stor. För små och mellanstora projekt där prestandan är underordnad utvecklingstid, kostnad och räckvidd kan hybridverktyg vara ett lämpligt alternativ. Nyckelord: smartphones, multiplattformsverktyg, PhoneGap, ios, distribuerade system Abstract Smartphones are becoming more and more popular every day, but the market is divided. With this come new challenges for developers. To reach more then half the user base, you have to develop for at least two platforms, something that costs time and money. A number of multiplatform tools have been developed to try and offset this issue, and allows developers to code once, and deploy to many different types of systems. This could potentially mean that the extra work of creating native applications for multiple platforms could be avoided. But do these tools really live up to what they claim? This survey shows that the usage of these tools render the applications performance and user-experience lackluster, however, the potential time savings could be quite substantial. For small and mid-sized projects where performance is subordinate to the time of development, cost and user-base reach, these tools could be a suitable alternative. Keywords: smartphones, cross platform tools, PhoneGap, ios, distributed systems 1
8
9 Nomenklatur Begrepp Application programming interface (API) Asynchronous JavaScript and XML (AJAX) Cocoa Touch CSS3 HTML5 Hybrid- /multiplattformsutveckling ios JavaScript JavaScript Object Notation (JSON) jquery jquery Mobile Förklaring En uppsättning regler för kommunikation mellan två system/delar av ett system. Används av JavaScript för att kommunicera asynkront med en server. Ett UI-ramverk för ios-utveckling Språk för att forma utseendet på webbsidor. Ett märkspråk för att skapa webbsidor. Att utveckla med ett verktyg för att köra samma kodbas på olika operativsystem. Apples operativsystem för mobila enheter. Skriptspråk som används för att skapa dynamiskt innehåll på websidor. Ett sätt att skicka data, i form av en textsträng. Ett funktionsbibliotek för JavaScript (jquery Foundation, 2013). Ett funktionsbibliotek inriktat på mobila applikationer (jquery Foundation, 2013). Native-/direktutveckling Objective-C PhoneGap Scrum Att utveckla direkt för en plattform. Ett högnivå- och objektorienterat programmeringsspråk, främst använt för utveckling till Apples system Verktyg för att skapa applikationer för flera olika plattformar med samma kodbas, i form av HTML, CCS och JavaScript. Ett sätt att jobba agilt med främst mjukvaruutveckling (Scrum.org, 2013). 2
10
11 1 Inledning 1.1 Om arbetet Denna rapport är en del av ett examensarbete inom datateknik som under våren 2013 utförs av Magnus Andersson och Johannes Andreasson, studenter på Kungliga tekniska högskolan i Stockholm. Arbetet går ut på att ta fram riktlinjer för val av ramverk vid utveckling av mobilapplikationer för flera målplattformar. Riktlinjerna tas fram genom utvecklingen av ett distribuerat system uppbyggt kring en mobilapplikation. Sedan analyseras processen och de resultat som uppnås. Det distribuerade systemet utvecklas åt företaget The Content Factory. Systemet ska bestå av ett enkelt webbgränssnitt där administratörer kan lägga in annonser och en mobilapplikation där användare kan registrera sig och se ett urval av annonserna baserat på valda intressen och position (se fig. 1). Webbsida Server Mobilapp Figur 1. Översiktsbild, det distribuerade systemet. Systemutvecklingen kan ses som ett delmål underställt det huvudsakliga målet (att ta fram riktlinjer vid val av ramverk). Detta delmål är en fullt fungerande distribuerad webb- och smartphone-applikation, som lever upp till högt ställda funktionella och icke-funktionella krav. Produkten ska hålla tillräckligt hög kvalitet för kommersiell användning. Koden ska vara så pass välstrukturerad, välkommenterad och väldokumenterad att en utomstående utvecklare utan vidare kan ta över och bygga in ny funktionalitet. (I arbetet ingår också en utredning av tillgänglig multiplattformsteknologi och vilka för- och nackdelar olika varianter kan innebära.) 1.2 Mål Syftet med arbetet är att ta fram riktlinjer för programmerare och utvecklare som står inför att skapa mobilapplikationer för flera plattformar. Rapporten ska göra valet mellan multiplattformsverktyg och direktutveckling lättare genom att belysa de skillnader som finns och hur de yttrar sig med olika förutsättningar och i olika sammanhang. Dessa riktlinjer tas fram enligt en praktiskt orienterad modell, där analys och slutsatser växer fram ur de erfarenheter vi skaffar oss under vår egen arbetsprocess. De två applikationer vi utvecklar, de tester vi utför och processen i sig blir sedan underlag för den diskussion vi för om för- och nackdelar med hybridoch native-utveckling. 3
12 1.3 Avgränsningar Utav multiplattformsverktyg undersöks endast PhoneGap, och ios undersöks som representant för direktutveckling. PhoneGap-applikationen kommer enbart att köras på en ios-enhet. Det distribuerade systemet som utvecklas kommer inte att vara en viktig del av rapporten. 1.4 Uppdragsgivarens mål med systemet Uppdragsgivarens mål är att drifta systemet och ta betalt av kunder som vill ha en applikation med erbjudanden. Tanken är att skräddarsy en applikation för varje kund, medans all information sparas i samma databas, och alla mobilapplikationer använder samma backend. 2 Teori Då detta område är relativt nytt, och väldigt föränderligt, så finns det ganska lite material i form av böcker och andra publikationer, som är relevant. Den här rapporten har därmed utgått mer ifrån utförande och tester, och i mindre mån från annat material. All information som har varit nödvändig för att utföra uppgiften har tagits från Internet, och när man hämtar sin information därifrån är det viktigt att tänka på att vara mer kritisk till innehållet än vid vanliga publikationer, eftersom det är svårt att med säkerhet verifiera att informationen är korrekt. 2.1 Bakgrund Få saker kan mäta sig med mobiltelefonen när det gäller teknisk utveckling det senaste decenniet. Vad som från början var en anordning för samtal och korta meddelanden är nu i stort sett en komplett dator, nästan jämförbar med stationära och bärbara datorer. Apples iphone har varit stilbildande och sålt i enorma kvantiteter sedan den första versionen släpptes 2007 (2008 i Sverige). Sony, HTC och Samsung tillhör de största konkurrenterna, och alla tre använder det Googleutvecklade operativsystemet Android till majoriteten av sina smartphones. Finska Nokia levererar sina nya smarta telefoner med Microsofts operativsystem Windows Phone. Andra telefoner levereras med Symbian, Blackberry eller Bada. För systemutvecklare har detta inneburit en lång rad ramverk och API:er att sätta sig in i. Varje operativsystem har krävt sina egna språk och utvecklingsmiljöer. Dessutom finns interna skillnader även mellan de mobiltelefontillverkare som använder samma operativsystem. Den splittrade marknaden gör att företag som väljer att rikta in sig på endast en plattform missar en betydande andel av de potentiella användarna. Ett sätt att slippa kostsam parallell utveckling är att ta fram helt webbaserade applikationer. Detta för dock med sig vissa begränsningar: användaren måste ha tillgång till internet, applikationen kan antas bli långsammare och dessutom kan appen sakna tillgång till en del av telefonens hårdvara (såsom kamera, geolokalisering, accelerometer eller kompass). För att komma åt dessa problem har ett antal så kallade multiplattformsverktyg (cross platform tools) tagits fram. Dessa bygger på principen code once deploy many, alltså att koden kan utvecklas oberoende av målplattform och sedan kompileras till önskat operativsystem. Idealt innebär denna hybridlösning ett mellanting mellan utveckling direkt för målplattformen och mobil webbutveckling, ett sätt att kombinera de båda metodernas fördelar och samtidigt slippa nackdelarna. Riktigt så fungerar det dock inte. Dels finns inget multiplattformsverktyg som helt och hållet täcker all funktionalitet på alla relevanta plattformar. Oftast kommer en viss del av koden få specialskrivas för varje plattform. Dessutom kommer prestandan aldrig riktigt kunna mäta sig med direktutveckling (nativeutveckling). 4
13 2.2 Marknaden för smartphones När man skall ta ett beslut angående hur man skall utveckla sin applikation är det viktigt att fundera över vilka användare man vill nå, och om det är värt att utveckla för alla plattformar. För att kunna ta detta beslut så bör man ha ett underlag så att man kan göra ett väl avvägt beslut. Statistiken som finns tillgänglig för personer utanför de stora aktörerna, som gärna inte delar med sig av sina försäljningssiffror, är dock inte 100 procent tillförlitlig, men den ger en bild av hur verkligheten ser ut. Fördelningen mellan olika OS varierar kraftigt internationellt (se fig. 3). Vi har valt att fokusera på den svenska marknaden. Två skilda undersökningar med delvis olika resultat har hittats. Men en sak är klar: Android och ios är de absolut största operativsystemen för smartphones, globalt och i Sverige. Smartphones i Sverige (Google) 60% 50% 40% 30% 20% 10% % Android Blackberry OS ios Windows Mobile Symbian Annat Vet ej Figur 2. Marknadsandelar för olika operativsystem i Sverige år 2011 och Källa: (Our Mobile Planet, 2012) Figur 3. Globala marknadsandelar för olika operativsystem uppdelat på kvartal. Källa: (Global Web Index, 2013) 5
14 Figur 4. Jämförelse mellan ios och Android i ett antal olika länder mars Källa: (Global Web Index, 2013) I graferna (se fig. 2, 3 och 4) visas marknadsandelar för de olika operativsystemen för smartphones, och i dem kan man se att Apples ios och Googles Android har de absolut största andelarna. Nokias Symbian är på väg ut, och Windows Mobile har liten andel av marknaden. Det finns dock en möjlighet att introduktionen av Windows 8 kan vända trenden som Microsoft haft mellan 2011 och 2012 där deras marknadsandel sjönk. Figur 5. Surfstatistik för olika mobila operativsystem från mars 2011 till januari Källa: (StatCounter GlobalStats, 2013) 6
15 2.2.1 Plattformar använda vid surf Ett sätt att utvärdera olika plattformar kan vara att titta på hur användarna använder sin telefon. Figur 5 visar statistik över vilken plattform som används vid vanlig surfning på smartphones. Det man kan utläsa ur grafen är, att även om Android antagligen har den största marknadsandelen, så är det ios som flest människor använder för att surfa på. Av detta kan man dra slutsatsen att en stor del av Android-användarna helt enkelt använder sin telefon till mer traditionella ändamål, och att iphone-användarna är bättre på att använda den nya generationen telefoners funktionalitet till fullo Appnedladdning En annan intressant aspekt är hur människor använder sina telefoner, eller mer specifikt för den här rapporten: kan man se skillnader i app-nedladdning mellan de olika operativsystemen? Antal nedladdade appar i Sverige (miljoner) Android ios Windows Phone Totalt Mars 2013 Figur 6. Antal nedladdade applikationer till olika operativsystem, totalt och i mars Källa: (Xyo, 2013) Andel gratis/betal-appar i Sverige, mars % % 99.60% 86.10% 96% 80.00% 60.00% 40.00% Gratis Betalda appar 20.00% 0.00% 13.90% 0.40% 4% Android ios Windows Phone Figur 7. Andel gratis- och betalapplikationer för tre operativsystem i mars Källa: (Xyo, 2013) 7
16 Ur figur 6 och 7 kan man utläsa att Android har flest app-nedladdningar. Dock är apparna för ios på iphones till en mycket högre grad köpta. Om man planerar att ta betalt för applikationen man utvecklar, framstår det därför nästan som ett måste att först och främst utveckla för ios (eller med ett multiplattformsverktyg). 2.3 PhoneGap och andra hybridverktyg Det finns en lång rad verktyg för utveckling till multipla mobilplattformar. Många bygger i någon utsträckning på webbutvecklarverktyg. Ett exempel är svenskutvecklade MoSync, som är integrerat med utvecklingsmiljön Eclipse. I MoSync skrivs koden i C/C++, HTML och Javascript. RhoMobile Suite är en uppsättning verktyg framtagna av Motorola, som bygger på en kombination av HTML och Ruby. Ett av de populäraste verktygen är PhoneGap/Cordova som drivs av Adobe. Detta verktyg är i huvudsak baserat på HTML5, CSS3 och Javascript. Användningen av detta verktyg är utbredd och på internet finns gott och dokumentation och forumdiskussioner som avhandlar dess olika kvaliteter och brister. PhoneGap blir därför det verktyg som används för detta arbete. 2.4 Native- och hybridapplikationer Hybridapplikationer och native-applikationer skiljer sig åt på flera punkter, både på ett övergripande plan och på detaljnivå. PhoneGap (se fig. 8), som är multiplattformsverktyget vi använder, utgör ett lager mellan operativsystem och applikation. Figur 8. Översiktsbild för multiplattformsverktyget PhoneGap. Källa: (PhoneGap, 2013) Native-applikationer skrivs direkt för det operativsystem som ska användas, och utvecklaren är alltså låst till exempelvis Objective-C (ios), Java (Android) eller C# (Windows Phone). I fallet PhoneGap skapar utvecklaren ett projekt för varje tänkt plattform med källkod som tillhandahålls av PhoneGap. I dessa projekt placerar utvecklaren sedan en katalog innehållandes den egna koden, som skrivs i HTML5, Javascript och CSS3. Utöver den funktionalitet som följer 8
17 med dessa verktyg står PhoneGap för ett eget API som ger tillgång till mobilspecifik I/O som exempelvis kamera, geolokalisering, accelerometer och lokal lagring. Detta API är dock inte heltäckande. Som figur 9 visar finns skillnader i vilken funktionalitet som kan nås via PhoneGap beroende på plattform. Funktion iphone Android Windows Blackberry Symbian Accelerometer Kamera Kompass x x Kontakter Filer x Geo Media x x Nätverk Notifikation (alert) Notifikation (ljud) Notifikation (vibr.) Lagring x Figur 9. Tabellen visar PhoneGap-stöd för olika funktioner på ett antal plattformar. Källa: (PhoneGap, 2013) Det finns också skillnader i beteende mellan de olika mobiltelefonerna. Android-telefoner har till exempel en home -knapp, som saknas på andra enheter. Här måste utvecklaren bestämma sig för om det är värt att lägga extra tid på något som bara ger resultat på en av målplattformarna. Dessutom tillkommer särskilda ramverk och teknologier som bara existerar för någon av plattformarna, som till exempel Apple Passbook. Två huvudsakliga skillnader mellan tillvägagångssätten utkristalliserar sig, två områden där vart och ett av tillvägagångssätten tycks stå som självklar vinnare. 1. Prestanda. Det råder inga tvivel om att native-utveckling i normalfallet ger en snabbare och effektivare slutprodukt. Det extra lager som hybridvarianterna med nödvändighet inför utgör en belastning på mobiltelefonen som, trots att utvecklingen gått oerhört snabbt framåt de senaste åren, fortfarande är betydligt långsammare än laptop- och desktopdatorer. 2. Utvecklingstid. Hybridplattformens starkaste kort. Marknaden är splittrad och för att nå en majoritet av de potentiella användarna måste man utveckla mot åtminstone två plattformar (ios och Android). Vill man nå ytterligare publik kanske till och med tre eller fyra plattformar är aktuellt. Marknaden för smartphones är dessutom skiftande och förändringar i OS-preferenser sker snabbt, mycket snabbare än för laptops och stationära datorer. Möjligheten att samtidigt utveckla för flera plattformar kan ge en oerhörd fördel om man vill nå en stor målgrupp och samtidigt har begränsad tid och/eller ett begränsat antal utvecklare. Men det kan också vara rätt väg att gå för den som vill ha möjligheten att snabbt lansera en produkt på en telefon som kanske inte fanns med i ursprungsplaneringen, men som blivit intressant i ett senare skede. 9
18
19 3 Metod 3.1 Problemställning För att nå målet, ett underlag för utvecklare som står inför att utveckla smartphone-applikationer med flera målplattformar, utvecklar vi två applikationer enligt de två olika modellerna och jämför dem. Dels tar vi fram en applikation direkt för en enskild målplattform (i det här fallet för ios med Objective-C och Cocoa Touch). Vi skapar också en applikation med samma funktionalitet, men istället utvecklad med ett multiplattformsverktyg (i vårt fall med hjälp av PhoneGap och jquery Mobile). Vi tar också fram en databas och en server som tjänar apparna, med ett tillhörande API. Sedan testar vi hur dessa versioner står sig när det gäller inlärningstid, utvecklingstid, storlek, snabbhet och stabilitet. Vi tittar dels på faktorer relaterade till själva utvecklingsprocessen programspråk, utvecklingsmiljöer, dokumentation och dels den resulterande produktens prestanda och användbarhet. Genom detta praktiska tillvägagångssätt hoppas vi uppnå relevanta och användbara resultat. Det finns många åsikter om för- och nackdelar med utveckling direkt för enskilda målplattformar kontra användning av multiplattformsalternativ. Båda varianter har sina supportrar och sina belackare. Vi är inte intresserade av att välja sida. Vår utgångspunkt är istället att båda metoderna har sina förtjänster och sina problem, och att det är omöjligt att tala i förenklade termer om vilken väg som är den rätta. Däremot finns naturligtvis specifika situationer, förutsättningar och förväntningar där den ena metoden är att föredra. Arbetet ska förhoppningsvis göra det lite lättare att avgöra vilket alternativ som är bäst utifrån en given uppsättning behov. Behov varierar dock kraftigt, och vi gör oss inga illusioner om att rapporten ska vara tillräckligt underlag för alla situationer. Istället håller vi oss till att diskutera system av en specifik typ: små/medelstora system som använder någon telefonspecifik hårdvara. Uppdraget är att konstruera en distribuerad applikation med tre huvudkomponenter en mobilapp, en server och en webbsida för administratörer. I vart och ett av fallen finns flera variabler att ta hänsyn till i valet av ramverk och övrig teknik. 3.2 Projektmodell Utvecklingen sker agilt enligt en Scrumliknande metod. Vi delar upp arbetet i korta arbetscykler, sprints, där varje sprint resulterar i faktisk funktionalitet. Vi sorterar bland önskad funktionalitet dels efter uppdragsgivarens önskemål, dels efter en riskanalys, där de delar vi bedömer som särskilt riskabla placeras i tidigare sprints. Analys och tester styrs av utvecklingsarbetet. Så fort en del av systemet är klar inleds diskussionen om vad resultatet har för betydelse för vårt mål och våra teser. Tiden för arbetet är 10 veckor vilket för två personer på heltid motsvarar 800 timmar. Figur 12 visar hur tiden som lagts på arbetet fördelat sig mellan olika aktiviteter. 10
20 Tidsåtgång (Summa = 800 timmar) Figur 10. Hur tiden som lagts på arbetet fördelats mellan olika aktiviteter. Rapportskrivande inkluderar dokumentation av systemet (arkitektur- och designdokument). 3.3 Tester Utvärderings- och jämförelsemetoder Syftet med testerna är (1) att kvantifiera skillnader i prestanda och hur dessa skillnader upplevs, (2) att titta på skillnader i utvecklings- och utbildningstid och (3) att jämföra resursåtgången för applikationer utvecklade i de två verktygen. Dessa tester ska resultera i: 1. Ett antal datapunkter ur vilka vi drar medelvärde och standardavvikelse. Dessa värden presenteras sedan i stapeldiagram där eventuella skillnader kommer framgå tydligt. 2. Vi dokumenterar vårt arbete under arbetsprocessens gång. De värden vi får fram presenteras sedan i stapeldiagram ur vilka eventuella skillnader mellan verktygen kommer framgå. 3. Vi tittar på storleken för en tom applikation skapad dels direkt med Apples utvecklingsmiljö XCode och dels med PhoneGap. Sedan tittar vi på storleken för de färdiga applikationerna. Detta kommer ge fyra punkter (0,nativeTom), (0,hybridTom), (1,nativeKlar) och (1,hybridKlar). Dessa punkter kan representeras som två linjära funktioner, där linjernas skärning med den vertikala axeln motsvarar grundstorleken och lutningen motsvarar hur snabbt applikationernas storlek ökar med ny funktionalitet. I resultatdelen räknas dessa linjära funktioner fram och ritas i ett diagram Prestanda För att göra vår jämförelse rättvis har vi strävat efter att hålla så många parametrar som möjligt konstanta applikationerna emellan. Vi har försökt skapa samma funktionalitet och liknande användargränssnitt. Den viktigaste kvarstående faktorn i jämförelsen blir då apparnas svarstid/snabbhet eller responsiveness. 11
21 För att ge ett bra mått på prestandan har vi utfört ett antal mätningar. Dels undersöker vi rå beräkningskraft med en enkel algoritm som reproduceras på de båda plattformarna. Dels utför vi ett antal standardiserade handlingar upprepade gånger och tar fram genomsnittstid för utförande. Testerna vi utför är dessa: Primtalsalgoritm Detta test syftar till att ge en grundläggande bild av beräkningskapaciteten i de olika sammanhangen. Vi använder en algoritm som finner alla primtal upp till värdet max. För att få ett referensvärde kör vi dessutom algoritmen på en stationär dator. function speedtest(){ } max = ; primecount = 0; for (i = 2; i < max; i++){ } if (isprime(i)){ } primecount++; function isprime(n){ } if (n % 2 == 0) return false; for(i = 3; i * i <= n; i += 2) { } if(n % i == 0){ } return true; return false; Primtalsalgoritmen körs under följande förutsättningar: 1. Algoritm skriven i Objective-C, körs i native-applikation på iphone Algoritm skriven i Javascript, körs i PhoneGap-applikation på iphone Algoritm skriven i Java, körs på Macbook Pro (2.8 GHz Intel Core 2 Duo) Tid för olika användarfall Här är målet att mäta det som verkligen räknas för slutanvändaren känslan av snabbhet och respons. Mobilapplikationerna kommunicerar med en server placerad på ett webbhotell. För att minska risken för att störningar och varierande svarstider påverkar resultatet så alternerar vi mellan de båda applikationerna. 1. Uppstart. Vi mäter uppstartstiden för applikationerna, tio gånger var och på samma telefon. För att minimera inflytandet från andra processer utförs uppstarten omväxlande mellan applikationerna. 2. Titta på erbjudande. Här mäter vi tiden för att gå från listvy över alla erbjudanden till detaljvy för ett erbjudande. Eftersom denna operation går relativt snabbt utförs 12
22 handlingen fem gånger fram och tillbaka för varje försök och applikation. Detta upprepas sedan tio gånger. 3. Ändra inställningar. Här går vi från listvyn till inställningarna, ändrar omväxlande från alla intressen till inga intressen och tillbaka. Handlingen utförs tio gånger i varje applikation. Ur vår data tar vi fram genomsnittliga tider och standardavvikelse Inlärnings- och utvecklingstid När det gäller tidsåtgång måste man naturligtvis ta hänsyn till att PhoneGap-versionen fungerar på flera plattformar. Detta kan man justera för med följande jämförelse: t!"#$%& = n t!""#$%!&$'( Eller: t!!"#$% = t!""#$%!&$'( t!!"#$% = t!"#$%& n Där t är utvecklingstiden och n är antalet målplattformar. Denna formel uttrycker den största fördelen med att välja ett multiplattformsverktyg. Ett problem är förstås att den förutsätter att t är en på förhand känd storhet. Både inlärnings- och utvecklingstid är oerhört svår att mäta. Först och främst beror tidsåtgången på förkunskaper, både direkt (utvecklaren kan det aktuella verktyget/programspråket) och indirekt (utvecklaren kan verktyg och språk som är besläktade med eller påminner om det aktuella verktyget). Ett andra hinder för noggranna mätningar är skillnader mellan olika projekt. Vissa funktioner låter sig implementeras lättare än andra på grund av hur ett språk eller standardbibliotek råkar vara uppbyggt. För att göra en bra uppskattning av hur lång tid ett specifikt projekt kommer ta att utveckla behövs grundliga kunskaper om alla alternativ. Vi nöjer oss med att redovisa de egna förkunskaperna, den egna inlärningstiden och den egna utvecklingstiden. För att avgöra huruvida multiplattformsutveckling är ett rimligt alternativ måste man alltså begrunda följande frågor: Är inlärningstiden för multiplattformsverktyget kortare än inlärningstiden för de målplattformsverktyg som annars måste användas? Hur mycket kortare blir utvecklingstiden med ett multiplattformsverktyg än med n målplattformsverktyg? Hur stor del av programmet måste trots multiplattformsverktyg specialskrivas för de olika plattformarna? Storlek Applikationernas storlek kan ses som tvådelad en del utgörs av storleken för en tom app, den andra delen utgörs av den app-specifika storleken. Mellan total storlek och dessa två delmängder kan följande (ungefärliga) linjära samband ställas upp: S!"!#$ = S!"#$% + k!"#$%&' F!""#$%!&$'( Ekvationen visar alltså hur programmets storlek beror av det grundläggande avtrycket. S representerar storlek i bytes, konstanten k är specifik för varje verktyg och visar resursåtgången 13
23 (enheten är bytes/funktionalitet) för att uttrycka en given mängd funktionalitet. F är den mängd funktionalitet som uttrycks i programmet (oberoende av vilket verktyg som används, enhet funktionalitet). Ett uttrycksfullt verktyg motsvarar alltså ett lågt värde på k. Ett litet program motsvarar ett lågt värde på F. 3.4 Leverans och överlämning till kund Uppdragsgivaren har önskat ett fungerande system som uppfyller vissa krav (se appendix II). Här ingår källkoden till en mobilapplikation, färdig att kompileras. Dessutom ingår en webbserver med ett administratörsgränssnitt, ett mobil-api och en databas. Till kunden levereras också dokumentation i form av design- och arkitekturdokument som beskriver systemet, samt underlättar för eventuell vidareutveckling. 3.5 Bilagor Undersöknings-, utvecklings- och testarbetet kommer resultera i ett antal tekniska dokument. Först och främst skapas ett kravdokument i samråd med uppdragsgivaren. Under själva utvecklingsfasen kommer ett arkitekturdokument att skapas. Under testfasen skapas ett dokument innehållandes all mätdata. Vart och ett av dessa dokument kommer ligga som bilagor till rapporten. 14
24
25 4 Konstruktion Arbetet handlar i första hand om att granska hur native- och hybridutveckling förhåller sig till varandra i det allmänna fallet. Men för att arbetets tester och analyser ska bli lättare för en läsare att förstå följer här en genomgång av underlaget till arbetet själva systemet. 4.1 Översikt Systemets syfte är att låta en annonsör lägga in annonser i en databas via ett webbgränssnitt. Dessa annonser är taggade enligt vilka intresseområden de berör (såsom kläder, mat, musik ) och var de gäller, alltså geografisk data som kan leda användaren till exempelvis en butik. Figur 11. Usecase-diagram som visar hur administratörer och användare interagerar med systemet. Användaren kommunicerar via sin smarta telefon och administratören/annonsören via ett webbgränssnitt. Servern tillhandahåller denna webbsida, och ett API som smartphoneapplikationer använder för att hämta och sända data. 4.2 Mobilapplikationerna För jämförelsernas skull är tanken att de två applikationerna ska likna varandra så mycket som möjligt. Följande genomgång beskriver de båda apparna i allmänna termer, med särskilda kommentarer där de skiljer sig åt. Appen består av: 1. Listvy. Här syns alla annonser som stämmer överens med användarens plats och önskemål, sorterade efter avstånd. 2. Detaljvy. Detaljerad beskrivning av annons med rubrik, text, bild, kartlänk och länk till Apple Passbook-kupong (om sådan finns) 3. Karta. Visar användarens plats samt de platser där annonsen gäller. 4. Inställningar. Låter användaren ställa in sina preferenser/intressen samt sköta registrering och in- och utloggning. 15
26 Figur 12. Mobilapplikationernas vyer, översikt. Denna beskrivning är generaliserad. De båda apparna skiljer sig åt på detaljnivå, bland annat på grund av de verktyg som har används för att skapa dess GUI:n (Xcode Storyboard/Cocoa Touch respektive jquery Mobile). 4.3 Server och databas Servern tjänar två syften dels som backend åt mobilapplikationen och dels är det där administratörsgränssnittet ligger. Servern skall besvara mobilappens asynkrona (AJAX)anrop med data (i form av JSON-objekt) och den ska tillhandahålla en webbplattform som systemets administratörer kan använda för att lägga till, överblicka och modifiera plats- och annonsdata. Två tänkbara alternativ utkristalliserar sig här antingen använder vi en enterprise-miljö för utvecklingen, som exempelvis Java EE, där koden förkompileras och körs på en applikationsserver. Detta för med sig en ökad stabilitet och snabbhet, men kan innebära problem i form av ökad utvecklingstid. Det är dessutom betydligt dyrare att hosta en applikationsserver som exempelvis Glassfish, än en vanlig webbserver. En fördel med PHP är att det kan köras på princip alla webbhotell, då alla de vanligaste operativsystem för servrar stöder PHP. Det är dessutom ett språk som båda studenterna behärskar, liksom många andra utvecklare. Valet faller alltså på PHP. I databasväg har valet fallit på MySQL, som även detta finns hos de flesta webbhotell, samt en stor användarbas, vilket gör det lättare för nya utvecklare att ta över systemet. 16
27 5 Resultat 5.1 Prestanda Till prestanda räknar dels ren processorkraft, vilket mäts med en primtalsalgoritm, dels tiden som behövs i de båda apparna för att genomföra ett antal vanliga operationer Primtalsalgoritm Vi kör algoritmen i tre serier om tio mätningar, och tar fram medelvärde och standardavvikelse (redovisas inom parentes). De uppmätta värdena är: 1. Referensomgång. 56,1 ms (6,06 ms). 2. Native-applikation på ios ms (21,8 ms) ( 44 gånger tid för referenskörning). 3. PhoneGap-applikation på iphone ms (584 ms) ( 296 gånger referenstid). 350 Primtalsalgoritm, tidsåtgång ios Phonegap Figur 13. Staplarna visar hur många gånger längre tid det tar att köra primtalsalgoritmen på de båda plattformarna än på referensplattformen, Java på en bärbar Macbook Pro. Figur 13 visar hur lång tid de båda varianterna tar på sig att utföra algoritmen i förhållande till referensvärdet vi tagit fram. Native-applikationen utför samma arbete nästan 7 gånger snabbare än hybridapplikationen Uppstart Vi tittar nu på uppstartstiden. Återigen har vi gjort mätningar i serier om 10, och tagit fram medelvärde och standardavvikelse (redovisas inom parentes). Uppmätta värden: 1. Native-applikation. 1,87 s (0,276 s) 2. Hybridapplikation. 5,63 s (1,01 s) Native-applikationen är alltså ganska exakt 3 gånger snabbare att starta än hybrid-applikationen (se fig. 14). 17
28 Öppna applikation (sekunder) ios PhoneGap Figur 14. Uppmätt tid för att öppna applikationen Titta på erbjudanden Här har vi mätt tiden för gå från listvyn till detaljvyn i applikationen. För att minimera mätfelet har mätningarna gjorts fem gånger, vilket vi har justerat för i den data som presenteras här (genomsnittstid med standardavvikelse inom parentes). Uppmätta värden (se även fig. 15): 1. Native-applikation. 1,37 s (0,104 s). 2. Hybridapplikation. 4,92 s (0,578 s) Titta på ett erbjudande (sekunder) 0 IOS PhoneGap Figur 15. Genomsnittlig tid för att titta på ett erbjudande Ändra inställningar Mäter tiden för att gå från listvyn, in i inställningar, välja alla intressen alternativt välja bort alla intressen, och gå tillbaka till listvyn (genomsnittlig tid, standardavvikelse inom parentes). Uppmätta värden (se även fig. 16): 1. Native-applikation. 6,55 s (1,64 s). 2. Hybridapplikation. 8,65 s (0,771 s). 18
29 Ändra inställningar (sekunder) ios PhoneGap Figur 16. Tiden i sekunder för att ändra inställningar. 5.2 Inlärnings- och utvecklingstid Som tidigare diskuterats är tidsåtgång, både för inlärning och utveckling, mycket svår att mäta på något meningsfullt sätt. Inga två programmerare har samma förkunskaper eller samma uppsättning talanger. Mätningen (fig. 17) visar bara hur mycket tid som lagts ned i just detta fall, av just dessa två programmerare. Resultaten ska således tas med en stor nypa salt Tidsåtgång (timmar) Utveckling Inlärning 0 ios PhoneGap Backend Figur 17. Tidsåtgång i timmar för inlärning respektive utveckling. Backend-biten är likadan i båda fallen, och arbetet med den ska bara räknas en gång. Med hänsyn till talet n från metod-delen, alltså antalet tänkta målplattformar, får man istället grafen som visas i figur 18: 300 Tid (timmar) n=1 n=2 n=3 Native Hybrid Figur 18. Beräknad utvecklings- och inlärningstid i timmar med varierande antal målplattformar (n). 19
30 En uppenbar tidsvinst för hybridvarianten vid n > Storlek Storleken betraktas som tvådelad en grundstorlek som motsvarar ett tomt projekt (här ingår bibliotek och andra allmänna resurser) och storleken för den egna koden. Eftersom PhoneGap utgörs av ett lager ovanpå en traditionell app kommer den vara större. Hur mycket större syns i figur 19. Apparnas storlekar (MB) ios PhoneGap Egen kod Grundstorlek Figur 19. Applikationernas storlek uppdelad på grundstorlek och storlek för egen kod. Det är tydligt att i båda fallen är det grundstorleken som står för den största delen. Den tomma PhoneGap-applikationen tar 40,2 MB medan motsvarande siffra för ios är 3,69 MB. Figur 20 visar tydligare hur de egna delarna av de båda applikationerna förhåller sig till varandra. Egen kod (MB) ios 0.4 PhoneGap Figur 20. Jämförelse mellan applikationerna av den egna kodens storlek. Skillnaden är för liten för att det ska vara möjligt att uttala sig säkert om vilken metod som kräver minst rader kod. Det är dock tydligt att för mindre appar så kommer det bagage som följer med en hybridapplikation är betydligt större än i native-fallet. I teoridelen ställdes en approximativ linjär funktion upp för att beskriva hur apparna växer med ny funktionalitet. Med dess hjälp kan grafen som visas i figur 21 tas fram. 20
31 Storlek (MB) Grundläge Färdig app ios PhoneGap Figur 21. Uppskattning av hur de båda applikationernas faktiska storlek växer med ny funktionalitet. Observera att den visar hur samma applikation växer beroende på om den utvecklas med PhoneGap eller direkt för ios. Valet av storlek för det som här kallas färdig app är alltså fullständigt godtyckligt, det demonstrerar bara förhållandet mellan de båda verktygen. 21
32
33 6 Diskussion 6.1 Översikt Hybridapplikationer fördelar Snabbare och billigare utveckling. Som vår granskning visar är det svårt att mäta utbildningsoch utvecklingstid exakt. Beroende på utvecklarnas förkunskaper kan tidsåtgången skilja sig rejält. Men oavsett detta har hybridverktyg som PhoneGap en enorm fördel i det att det bara krävs utbildning i och utveckling för en uppsättning verktyg. Native-miljöns fördelar. PhoneGap-utvecklare har tillgång till en stor del av den funktionalitet som följer med native-miljöerna, utan behovet att lära sig varje enskild plattform i detalj. Hybridmiljön ger direkt tillgång till kamera, geodata, kompass, kontakter, lokal lagring och många andra typiska smartphone-egenskaper Hybridapplikationer nackdelar Kvalitet. Som våra tester visar är hybrid-applikationen klart långsammare än motsvarande nativeapplikation när det gäller navigation mellan vyer. Då stängde vi ändå av vissa features som till exempel animerade övergångar mellan vyer. Dessutom måste man som hybridutvecklare själv ta ett större ansvar för design och utseende. Native-utvecklare får grafiska element och navigering gratis, hybridutvecklaren får antingen designa appen med hjälp av CSS eller använda ett externt bibliotek, jquery Mobile i vårt fall, som förvisso fungerar bra, men samtidigt bidrar till att göra applikationen ännu långsammare. När det gäller användarens allmänna upplevelse så står sig hybridapplikationen dåligt mot native-applikationen Native- applikationer fördelar Användarens upplevelse. Här har native-utvecklaren ett stort försprång apparna blir snabba och får ett bättre flyt, både när det gäller navigering och access till enhetens I/O. Naitveappar utnyttjar den smarta telefonens fulla kapacitet och lämpar sig klart bäst för utveckling av komplexa applikationer med höga krav på prestanda Native- applikationer nackdelar Större budget. Antalet språk som utvecklarteamet måste behärska växer med varje målplattform. Java och Objective-C är ett absolut krav om man vill nå en betydande del av marknaden, och för varje ytterligare plattform krävs en ny uppsättning kunskaper. Ökad tidsåtgång. För varje plattform utöver den första som native-utvecklaren vill nå kommer tidsåtgången öka drastiskt, medan tidsinvesteringen för hybridutvecklaren är nästintill oberoende av antalet målplattformar för native-utvecklaren. 6.2 Hybrid- eller native-utveckling? För att avgöra vad som passar i ett specifikt fall, native- eller hybrid-utveckling, börjar man lämpligen med att begrunda följande frågor: Hur stor del av smartphone- marknaden måste täckas in? Om man vill nå mer än ungefär hälften av marknaden för smartphones i Sverige så är det nödvändigt att utveckla för fler än en plattform. Gör man det blir tidsvinsten stor med hybridutveckling. 22
34 6.2.2 Hur högt prioriteras snabbhet när det gäller utbildning och utvecklingsarbete? Har man bestämt sig för flera målplattformar blir utbildningstid och utvecklingstid betydligt större om man ska utveckla för var och en av målplattformarna direkt Hur högt prioriteras prestanda? Prestandan sjunker ordentligt vid hybridutveckling. Även enklare funktionalitet som navigering går, som vår undersökning visar, avsevärt mycket långsammare. Är prestanda högt prioriterat så är native-utveckling sannolikt att föredra Ska applikationen kosta pengar? Som vår granskning visar så är viljan att betala för applikationer större bland ios-användarna än Android- och Windowsanvändarna. Är man inställd på att ta betalt för sitt arbete kan det därför vara en bra idé att prioritera ios högst Hur stora kunskaper finns om hybrid- språk (HTML5, CSS3, Javascript)? För en van webbutvecklare finns en självklar fördel med de hybridlösningar som bygger på webbteknologi (exempelvis PhoneGap). Goda förkunskaper innebär kortare utbildnings- och utvecklingstid, och kommer med all sannolikhet också leda till högre kvalitet på produkten Hur stora kunskaper finns om native- språk (som Java och Objective- C)? Om utvecklarteamet besitter goda kunskaper i de språk som används på de tänkta målplattformarna, samtidigt som kunskapen om hybridverktygen är begränsade, så blir tidsvinsten för hybridalternativet betydligt mindre. Samtidigt finns naturligtvis en risk att slutprodukten, som redan från början kan vara sämre i hybridfallet, tappar ännu mer i kvalitet. 6.3 Utvärdering av applikationer För att konkretisera den kunskap som inhämtats, går vi först igenom de två applikationer (en för ios och en utvecklad i PhoneGap) som utvecklats för detta projekt och utvärderar dem i relation till de krav som ställts. Som komplement har vi ställt upp tre hypotetiska scenarier; A, B och C, som vart och ett får representera en möjlig uppsättning krav från beställare Den egna applikationen Uppdragsgivaren har önskat en smartphone-applikation för att visa tillfälliga erbjudanden, liknande kuponger. Användare kan ange vilka kategorier av erbjudanden de är intresserade av, endast de erbjudanden som matchar någon av de valda kategorierna skall visas. Erbjudanden har information om platser där man kan utnyttja erbjudandet, applikationen skall sortera erbjudanden efter avstånd till närmaste plats. Information om erbjudanden och platser skall kunna ses även om det inte finns tillgång till Internet. Att täcka så många som möjligt av smartphone-användarna är högprioriterat. Platser skall kunna visas på en karta. Det är viktigt att utvecklingstiden hålls till ett minimum. Projektet som helthet kräver en ganska omfattande backend, med en databas som ska kunna lagra användarinformation, annonsdata, platsdata med mera. Servern ska tillhandahålla dels ett API för mobilapplikationerna, dels en webbsida för administratörer. 23
35 De viktiga delarna man direkt kan urläsa är alltså att applikationen skall ha tillgång till internet, geo-lokalisering, kartfunktion samt möjligheten att spara information lokalt på telefonen. Allt detta är fullt möjligt att åstadkomma med hjälp av hybridutveckling. Med beställarens krav på räckvidd står det klart att en målplattform inte är tillräckligt. Tidsvinsten blir således stor vid hybridutveckling. Om beställaren är beredd att acceptera en märkbar prestandaförsämring i utbyte mot snabbare leveranstid och mindre budget så framstår PhoneGap som det bästa alternativet i detta fall Scenario A Utvecklare A vill skapa ett svårt, stort och snyggt spel. Krävande, vill ta betalt. Utvecklaren behärskar Java, Objective-C, HTML5, CSS3 och Javascript. Scenario A visar på ett tydligt exempel där multiplattform-verktyg inte kommer att ge önskade resultat, de är helt enkelt för ineffektiva för att klara av kravet på prestandan. Här bör man istället välja att utveckla en native applikation. Eftersom Utvecklare A planerar att ta betalt för applikationen, så är det logiska valet att utveckla för ios först, även om dem inte har flest nedladdade appar, så har dem överlägset flest appar nedladdade appar som kostar pengar Scenario B Utvecklare B vill skapa ett spel i marknadsföringssyfte. Måste finnas på marknaden inom en månad, viktigt med stor spridning. Gratis. Ej högt ställda krav på prestanda. Utvecklaren behärskar Java men inte Objective-C. Scenario B är inte lika enkelt att dra en enda slutsats av, eftersom ett krav är stor spridning, så är det tveksamt om enbart en Androidapp är tillräckligt, och även om Utvecklare B är snabb på att plocka upp nya tekniker, så kanske det inte hinns med att först göra en Androidapp, för att sedan lära sig Objective-C och färdigställa en ios applikation. Så i detta fall skulle ett multiplattform-verktyg vara ett vettigt alternativ, även om det innebär att tid måste användas för att sätta sig in i teknikerna för att göra en PhoneGap applikation. Tiden det tar bör dock tjänas igen i och med att endast en applikation behöver utvecklas Scenario C Som B men har stor erfarenhet av webbutveckling i HTML5, CSS3 och Javascript. Scenario C är till skillnad från B, ganska enkelt att dra en slutsats av, eftersom Utvecklare C redan behärskar teknikerna som behövs för att använda PhoneGap, och givet att kraven på prestandan är lågt ställda, så ser PhoneGap ut som det bästa alternativet för detta scenario. 6.4 Framtid Som vi har viast så har hybridverktyg vissa nackdelar, största problemet som vi upplevde med PhoneGap är den jämförelsevis dåliga prestandan. Om man drar paralleller med Java (som också tillkom med syftet att tillåta simultan utveckling för flera olika plattformar) så ansågs även det vara segt, men efter förbättringar i mjukvaran och utvecklingen på hårdvarusidan så anses inte detta längre vara ett stort problem. Det är tänkbart att samma sak kan inträffa med hybridverktyg för mobila plattformar: de kan förbättras, samtidigt som hårdvaran kommer att bli kraftfullare. Om man skulle vilja bygga vidare på vårt arbete så finns det några intressanta områden som vi ej hann med att undersöka: Jämförelser av olika multiplattformverktyg. Undersöka hur många, om några, ändringar man behöver göra för att en applikation utvecklad i ett hybridverktyg skall fungera på samma sätt på olika plattformar. 24
36 6.5 Sociala och etiska aspekter De etiska och sociala aspekterna av det här projektet begränsas till hur informationen om vart användaren befinner sig behandlas. Erbjudanden sorteras och filtreras beroende på användarens position jämfört med platser associerade med varje erbjudande. För att minska mängden data som skickas till användaren, och för att öka mobilapplikationens prestanda sker denna databehandling på serversidan. De etiska aspekterna blir då, att systemet skulle kunna logga en användares position varje gång ett anrop utförs, vilket säkerligen inte skulle vara populärt. Systemet sparar dock ingen information om användares position, utan denna information används enbart för att göra användarupplevelsen bättre. Informationen försvinner sedan när anropet är färdigt. 6.6 Hållbar utveckling Då arbetet genomfördes genom att konstruera ett system för spridning av annonser/erbjudanden är det relevant både ekonomiskt och (om än antagligen litet) ekologiskt. Ekonomidelen kommer ur naturen av annonser, där företag vill nå ut till potentiella kunder för att generera mer inkomst. Ur användarnas synvinkel kan det vara fördelaktigt med mer information för att lättare kunna göra val om vad som skall införskaffas, och vart. Från ett ekologiskt perspektiv skulle detta system i teorin kunna ersätta användandet av kuponghäften, dock så är detta inte särskilt troligt. Arbetets resultat har ingen påverkan på samhälleliga aspekter. 25
37 7 Litteraturförteckning Global Web Index. (den ). Global Web Index. Hämtat från Global Web Index: den jquery Foundation. (den ). jquery Mobile. Hämtat från jquery Mobile: den jquery Foundation. (den ). What is jquery? Hämtat från jquery: den MobiThinking. (den ). Global mobile statistics 2013 Home: all the latest stats on mobile Web, apps, marketing, advertising, subscribers, and trends.... Hämtat från mobithinking: den MobiThinking. (den ). The insider s guide to mobile Web and marketing in Sweden. Hämtat från mobithinking: den Our Mobile Planet. (den ). Our Mobile Planet. Hämtat från Think With Google: den PhoneGap. (den ). Docs. Hämtat från PhoneGap: den PhoneGap. (den ). Supported Features. Hämtat från PhoneGap: den Scrum.org. (den ). Scrum.org. Hämtat från What is Scrum?: den StatCounter GlobalStats. (den ). Top 8 Mobile Operating Systems in Sweden from Jan 2011 to Feb Hämtat från StatCounter GlobalStats: den Xyo. (den ). Global App Download Reports, Sweden. Hämtat från Global App Download Reports: den
38
39 Appendix I Systemets arkitektur Inledning Systemet skall hantera information om användare, erbjudanden, platser samt intressen. Det är uppdelat i två huvudsakliga delar: en mobilapplikation för att presentera erbjudanden till användare, samt en webbserver som består av en MySQL-server, ett administratörsgränssnitt och ett API för mobilapplikationen (se fig. 22). Figur 22. Systemöversikt. Backend Administratörsgränssnitt Introduktion Administratörsgränssnittets syfte är att en användare enkelt skall kunna ändra informationen som är sparad i databasen. Det går att lägga till nya erbjudanden, samt ändra befintliga erbjudanden. Det går ej att ta bort erbjudanden vill man inte att slutanvändare skall kunna se ett erbjudande längre ändrar man slutdatumet till en tidpunkt som redan passerats. Det går även att lägga till samt ta bort platser och intressen. Ramverk Systemet är gjort i PHP och HTML, med viss användning av JavaScript, jquery samt en modul som heter Datetimepicker, som används för att enkelt kunna välja datum. Säkerhet Användare loggar in med sin kombination av användarnamn och lösenord. Då sparas ett nytt session-id i databasen, som sedan kontrolleras vid varje operation användaren utför. Detta gör att flera användare inte kan vara inloggade på samma konto samtidigt, enbart den som loggade in senast kan använda gränssnittet (se fig. 22). i
40 Figur 23. Hur säkerhetsnivåerna i administratörsverktyget är upplagda. Inga HTML-sidor visas direkt, utan de går först igenom ett PHP-script. Detta för att se till att enbart inloggade användare med rätt säkerhetsnivå. Lösenorden i databasen är inte sparade i klartext, utan hashas med php-funktionen crypt(). Transaktioner Vid de flesta transaktionerna i php-filerna används autocommit, att informationen sparas direkt. Dock finns det undantag där operationerna beror på utfallet av en tidigare operation. I dessa fall stängs autocommit av, och informationen sparas när all data sparats. Om inte så återställs databasen till sitt urspungliga läge. O/R- mappning All information är sparad i en databas, som är gjord för att flera olika appar kan använda samma backend, så viktiga tabeller, t.ex. för användare, erbjudanden och platser. För att göra databasen överskådligare visas enbart vissa tabeller i varje bild. Administratörsinformation Information om administratörer, endast data för att kunna logga in, samt hålla koll på session-id, så att det inte går att vara inloggad på flera ställen samtidigt (se fig. 23). Figur 24. Tabeller ur databasen för AdminUsers och AppIds. ii
41 Data om erbjudanden Figur 25. Hur intressen, erbjudanden och platser hänger samman i databasen. Figur 24 visar hur strukturen för erbjudanden är uppbyggd. Alla platser, intressen och erbjudanden har en främmande nyckel till AppIds-tabellen, för att kunna ha en delad databas för flera olika frontends. Varje erbjudande kan ha noll till flera intressen eller platser associerade till sig. Tanken bakom detta är först det självklara, att ett erbjudande finns på flera olika ställen. Sen är det samma tanke bakom intressen ett erbjudande kan matcha flera olika intressen. Data om användare Användare kan, via mobil-appen, välja vilka intressekategorier de är intresserade av, och när de sedan hämtar erbjudanden så hämtas enbart de erbjudanden som matchar minst ett av intressena (se fig. 25). iii
42 Figur 26. Hur användare som ännu inte aktiverats representeras i databasen. Felhantering Felhanteringen i systemet handlar mest om att ge användaren återkoppling om ett fel inträffar, till exempel om databasen inte är tillgänglig, eller om den inte klarade av att behandla förfrågan. En annan typ av återkoppling kan vara att bilden man försöker ladda upp är av fel typ, eller för stor. Validering Valideringen av data från användare av administratörsgränssnittet sker till viss del på klientsidan, med hjälp av JavaScript, och till viss del på serversidan. Dock går det från användarens sida att fylla i information som är dålig/felaktig, kontrollerna går mest ut på att kontrollera så att datan är av rimlig längd. Den enda regex som finns i systemet för tillfället är den som kontrollerar att Passbook-länken slutar med.pkpass. API för mobilapplikation Introduktion För att mobil-applikationen skall kunna fylla sin funktion, krävs att backenden har ett väldefinierat och fungerade interface som applikationen kan använda. API:t är skrivet i PHP, precis som administratörsgränssnittet, och tar in förfrågningar via HTTP GET requests, där varje variabel som behövs för förfrågan är en GET-variabel. API:t returnerar sedan ett AJAX-objekt med data. iv
43 Figur 27. Exempel som visar funktionskallet för att hämta intresseområden alternativt ställa in nya intresseområden. Registrera register.php Försöker registrera en användare med angiven data, om användaren inte redan är registrerad skapas en ny post i databasen och ett mail skickas till e-postadressen för validering. error -fältet skall alltid vara ifyllt, antingen med felbeskrivningen, eller om registreringen lyckades så informerar den användaren om att han behöver validera sitt konto. Variabelnamn app pw Beskrivning App- id Användarens (inloggningsnamn) Användarens lösenord Returerar JSON- objekt error Beskrivning Sträng med felbeskrivning Logga in login.php Verifierar att de angivna värdena matchar en rad i databasen, returnerar användarens unika nyckel om inloggningen lyckades, annars null. Om användaren inte validerat sitt e-postkonto än returneras inte den unika nyckeln, användaren får istället ett felmeddelande som säger åt denne att validera sitt konto. Ett nytt valideringsmail skickas även, ifall användaren kastat det gamla. Variabelnamn app Beskrivning App- id v
44 pw Användarens (inloggningsnamn) Användarens lösenord Returerar JSON- objekt error unique Sträng med felbeskrivning, null vid OK Användarens unika nyckel, null vid fel lösen/ Hämta/ändra inställningar adpref.php Har två användningar, är enbart userunique angiven i anropet hämtas alla intressen, om newpref är angiven ändras användarens inställningar, och returnerar enbart error (null om anropet lyckades). Variabelnamn userunique newpref Beskrivning Användarens unika nyckel Sträng på formen prefid:prefid [ ] med alla valda preferenser. Ex: newpref=1:2:3:4 Returerar JSON- objekt error pref pref.prefname pref.prefid pref.selected Sträng med felbeskrivning, null vid OK Lista av alla preferenser i databasen, med tre under- egenskaper Preferensens namn Preferensens Id i databasen true om den är vald, annars false. Exempel: Ändrar användarens preferenser till 1, 2, 3 och 4. Hämtar enbart information. Hämta Erbjudanden getoffers.php Hämtar alla erbjudanden som passar användarens valda intressen. Om lat och lng är satta sorteras erbjudanden, med erbjudanden som finns tillgängliga på en plats närmast användaren först. Om maxdist är angiven tas platser och erbjudanden som är längre bort än maxdist. vi
45 Variabelnamn userunique lat lng maxdist Beskrivning Användarens unika nyckel Valfri, användarens nuvarande latitud Valfri, användarens nuvarande longitud Valfri, maxlängd till närmaste plats (i kilometer) Returerar ett JSON-objekt med tre delar: error Sträng med felbeskrivning, null vid OK offers Lista av alla erbjudanden i databasen, med 8 under- egenskaper id offertext offerheadline imglink iconlink passbookurl mindistance Erbjudandets id i databasen Erbjudandets text- del Erbjudandets rubrik Relativ länk till bilden Relativ länk till bilden Passbook- länken för erbjudandet. Längden till närmaste platsen för erbjudandet locations latitude longditude name address Lista med platser: objekt med 4 egenskaper Platsens latitud Platsens longitud Platsens namn Platsens adress Exempel: Returnerar ett JSON-objekt med alla matchande erbjudanden inom angiven radie. Installation Vid installation av systemet på servern behövs först inloggningsuppgifterna till databasen, dessa uppgifter skall sedan ändras i dbconn.php filen, under funktionen getdatabaseconnection. Importera databasens struktur, samt kopiera över allt innehåll i servermappen till rätt målmap på servern. Drift/underhåll Databasen rensas ej på gammalt material som den nu är implementerad, efter att systemet varit i drift ett längre tag kan det därför vara nödvändigt att rensa databasen på gammalt material, samt vii
46 ta bort bilder från servern som inte längre används av erbjudanden. Även användare som inte har validerat sin e-postadress kan tas bort. Mobilapplikationernas arkitektur Översikt Mobilapplikationen har tagits fram i två versioner, en med PhoneGap (hybrid) och en med Objective-C (native). PhoneGap-applikationen har utvecklats i HTML5, CSS3 och Javascript. För GUI:t har jquery Mobile använts. Native-applikationen har tagits fram i Apple XCode med Objective-C och Cocoa Touch, ett ramverk för utveckling mot Apples handhållna enheter (iphone, ipad). Passbook Passbook är ett system utvecklat av Apple för att hantera kuponger. Dessa kan användas som biljetter, för rabatter och liknande. Systemet är integrerat i senaste versionen av ios (version 6). Genom att klicka på en kupong kan man få den att automatiskt läggas till i användarens Passbook, en applikation som hanterar dessa kuponger. Vi har integrerat Passbook i båda apparna, i båda fall genom att låta en knapp aktivera en länk till en.pkpass-fil. Systemet har i nuvarande utförande inget stöd för att skapa dessa filer, tillsvidare måste dessa alltså konstrueras externt. Gemensamt för apparna Båda apparna är uppbyggda kring ett antal vyer: 1. Listvy 2. Detaljvy 3. Karta 4. Inställningar 5. Registrera/logga in 6. Meny (endast PhoneGap-appen) Listvyn visar upp rubrik och annonstext för alla annonser som stämmer överens med de inställningar och den position som användaren för tillfället har. Detaljvyn ger mer detaljerad information (inklusive en bild) om den annons som användaren valt. Kartan visar annonsens alla positioner som ligger inom angivet maxavstånd från användaren (en eller flera) och användarens egen position. Inställningsvyn används för att se och ändra de inställningar som styr vilka annonser som skickas tillbaka av servern. Registrerings- och inloggningsvyerna används, som namnet antyder, till just registrering av användarnamn och lösenord (sker via mejl-autentisering) samt inloggning med epost och lösen. PhoneGap och jquery Mobile Introduktion PhoneGap-applikationen är som tidigare nämnt skriven i HTML5, CSS3 och Javascript med ramverken jquery Mobile och jquery. Grunden till de olika vyerna är skriven i HTML. Dessa vyer ligger alla i samma dokument. Med hjälp av jquery Mobile kan användaren sedan navigera mellan dessa. viii
47 Till detta HTML-dokument hör en CSS-fil som används för de designelement som inte omfattas av jquery Mobile, och en Javascript-fil med funktioner för asynkron sändning och mottagning av data, uppvisning av alerts och liknande. PhoneGap-applikationen skapas genom att ett skript körs vilket genererar ett XCode-dokument innehållandes alla klassbibliotek som utgör ramverket. I projektkatalogen finns en www-mapp vars innehåll automatiskt läses in av PhoneGap-applikationen. Som utvecklare är det här man placerar sina filer. Vyerna Vyerna är konstruerade med hjälp av jquery Mobile och HTML5. Alla vyer är samlade i ett och samma dokument, index.html. Elementen är taggade på följande sätt: <div data-role="page" id="registerview"> Och: <a href="#registerview" data-role="button">registrera ny användare</a> Med dessa sätt att tagga å ena sidan de enskilda vyerna och å andra sidan länkar så fungerar navigeringen automatiskt jquery Mobile ser till att endast vald vy syns. Modellen Modellen består av ett Javascript-dokument, main.js. Detta innehåller initieringsfunktioner, generella funktioner, och funktioner uppdelade utifrån vilka vyer de hör till. Somliga vyer (exempelvis listvyn och intressevyn) byggs dynamiskt. Detta sker via js-funktioner som körs när aktuell sida öppnas. Så här ser till exempel funktionen som körs när listvyn öppnas: function buildadlistview(){ } var url; if (isloggedin()){ if (dofetchfromserver){ } else { } } else { } dofetchfromserver = false; getadsfromserver(); buildadlistitemsloaded(); alert("ej inloggad"); $.mobile.changepage("#loginview", "slideup"); return; Först kollar funktionen om variabeln dofetchfromserver är satt till true. Detta sker när någon tidigare händelse gjort en uppdatering nödvändig. Om så är fallet så hämtas annonserna från servern, och ritas upp. I annat fall konstrueras vyn av de annonser som finns lagrade lokalt. Andra dynamiska vyer skapas på liknande sätt. En annan viktig aspekt är geodata-funktionaliteten. Geodata hämtas från telefonen med hjälp av PhoneGaps egna funktionsbibliotek. Så här ser ett anrop ut: navigator.geolocation.getcurrentposition(onsuccess, onerror); ix
48 Via onsuccess-funktionen som sänds med som argument har man sedan tillgång till geodata som koordinater, rörelse och altitud. Google Maps Kartan som visas upp hämtas från Google Maps, som erbjuder ett API för uppvisning och manipulation av kartor. Detta API bygger på en nyckel som kan registreras privat (gratis) eller kommersiellt (betaltjänst). API:et erbjuder en uppsättning Javascript-funktioner som justerar sådant som position, zoom och markörer. På följande sätt kan man skapa ett options-objekt, som innehåller grundläggande info, och utifrån det skapa ett kartobjekt som kopplas till ett HTML-element. Nedanstående kod genererar en karta inzoomad till nivå 6 över Stockholms innerstad. var lat = ; // Central Stockholm var lng = 18.05; // Central Stockholm var userlatlng = new google.maps.latlng(lat, lng); // Google Map options var userlocationoptions = { zoom: 6, center: userlatlng, maptypeid: google.maps.maptypeid.roadmap }; // Create the Google Map, set options var map = new google.maps.map(document.getelementbyid("map_canvas"), userlocationoptions); Objective- C och Cocoa Touch Introduktion ios-applikationen är utvecklad i XCode med Storyboards för vyn, och skriven i Objective-C med Cocoa Touch. Varje vy motsvaras av ett view-objekt med tillhörande controller. Grunden för GUI:t är konstruerad grafiskt med hjälp av Storyboards. Dessa vyer manipuleras sedan programmatiskt vid behov. Utöver vyerna finns ett antal hjälpklasser som sköter lokal lagring, kommunikation med server och användarstatus. Viktiga vyer och controllers MasterViewController styr den vy som laddas först. Denna listar alla annonser som finns tillgängliga och låter användaren klicka på dem. Därifrån kan man också ta sig till inställningar, login och registrering. DetailViewController handskas med detaljvyn, alltså den vy som i detalj visar upp all information som finns tillgänglig om en enskild annons. Härifrån finns också Passbook-länkar och en länk till kartvyn. SettingsViewController styr inställningsvyn. Denna används för att se och ändra den inloggade användarens preferenser. Om någon ändring skett efter ett besök hit så skickas uppdaterad data till servern. x
49 Figur 28. Översiktsbilden visar grunden till de vyer som går att nå och tillhörande controllers. Modellen Erbjudanden hanteras med hjälp av instanser av två klasser: OfferDoc och OfferData. Dessa innehåller information som rubrik, text, plats och bilder. FetchData innehåller en rad statiska funktioner för att hämta data från servern, konvertera från JSON till Objective-C-typer som NSDictionary för hashade datastrukturer och NSArray för arrayer. UserStatus används för att hålla koll på den för tillfället inloggade användaren. Här finns även funktioner för att platta till datastrukturer med användar- och erbjudandeinfo och lagra lokalt. xi
Avancerade Webbteknologier 2. AD11g Göteborg 2012 Mobilanpassning
Avancerade Webbteknologier 2 AD11g Göteborg 2012 Mobilanpassning Idag Reality Check Strategier för mobilanpassning Problem vid mobilanpassning Exempel på några ramverk Statistik Det finns väldigt mycket
Mina listor. En Android-applikation. Rickard Karlsson 2013-06-09. Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.
Mina listor En Android-applikation Rickard Karlsson 2013-06-09 Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.se Innehållsförteckning 2. Innehållsförteckning 3. Abstrakt 4. Inledning/bakgrund
Mobile First Video on demand och livesändningar på Internet. Juni 2012
Mobile First Video on demand och livesändningar på Internet Juni 2012 1 Om detta dokument Marknaden och tekniken kring film (video on demand och livesändningar) på Internet utvecklas blixtsnabbt. Video
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1 För att 3L Pro skall fungera krävs att nedanstående hårdvarukrav och mjukvarukrav är uppfyllda. Viktigt är att tänka på att
Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1
Välkommen! SAPSA Impuls Mobilitet 81 Impuls sponsorer 2012 Guldsponsorer SAPSA Impuls Mobilitet 81 Mobilitet 81: Mobil reseräkningsapp med möjlighet att fotografera kvittona Christer Ingemarsson Lena Kågedal
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q3
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q3 För att 3L Pro skall fungera krävs att nedanstående hårdvarukrav och mjukvarukrav är uppfyllda. Viktigt är att tänka på att
Undervisningen i ämnet webbutveckling ska ge eleverna förutsättningar att utveckla följande:
WEBBUTVECKLING Ämnet webbutveckling behandlar de tekniker som används för att presentera och bearbeta information i webbläsaren samt utifrån dessa tekniker skapa och vidareutveckla statiska och dynamiska
ToDo ios-applikation. Mikael Östman. Mikael Östman - mo22ez Linnéuniversitetet
ToDo ios-applikation Mikael Östman 201205 Mikael Östman - mo22ez Linnéuniversitetet mo222ez@student.lnu.se Abstrakt Detta är en slutrapport för det projekt jag bedrivit inom ramen för kursen Individuellt
Trionas arbete med Skid-VM Appen Falun2015 Live Results. Håkan Blomgren Projektledare för Trionas arbete
Trionas arbete med Skid-VM Appen Falun2015 Live Results Håkan Blomgren Projektledare för Trionas arbete Trionas åtagande För tre år sedan gick Triona in som sponsor för Skid-VM, på nivån Official Supplier.
Systemkrav WinServ II Edition Release 2 (R2)
Systemkrav WinServ II Edition Release 2 (R2) Observera: Alla rekommendationer är aktuella vid den tid då dokumentet publicerades och visar den senaste informationen för nödvändig mjukvara. Systemkrav för
Mobile Cross Development
Mobile Cross Development Johan Holm och Jörgen Bengtsson Varje år bjuder vi in våra kunder till tre inspirationsdagar där vi lyfter fram de mest intressanta IT-frågorna med fokus på strategi, teknik eller
TMP Consulting - tjänster för företag
TMP Consulting - tjänster för företag Adress: http://tmpc.se Kontakta: info@tmpc.se TMP Consulting är ett bolag som utvecklar tekniska lösningar och arbetar med effektivisering och problemslösning i organisationer.
Mobila tjänster för lojalitets system. Mobila tjänster för lojalitetssystem Mobile services for loyalty network
Mobila tjänster för lojalitets system Mobila tjänster för lojalitetssystem Mobile services for loyalty network Andreas Björklund EXAMENSARBETE 2012 Datateknik Postadress: Besöksadress: Telefon: Box 1026
Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server
Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie 2017-03-09 Justering för krav på Windows Server 2012 1.2 Micke 2017-04-07 Vitec Ekonomi från x.60 kräver IIS 8 och websocket.
Mobilsurfande i Sverige
Mobilsurfande i Sverige 1 Mobilsurfandet i Sverige ökar snabbt. Det är yngre, välutbildade storstadsbor som surfar mest idag, men det är rimligt att anta att också andra grupper inom en snar framtid kommer
Hi-Fi Prototyping + laborationsgenomgång & verktyg
Hi-Fi Prototyping + laborationsgenomgång & verktyg Karin Fahlquist 2015 Frågor att besvara Vad innebär prototyping? Vad är speciellt med hi-fi prototyping? Hur kan man använda dem? Hur väljer man nivå
Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1
Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut
Sju riktlinjer vid utveckling av hemsidor för mobil och desktop
Sju riktlinjer vid utveckling av hemsidor för mobil och desktop Denna artikel går igenom hur du gör en hemsida användarvänlig till både vanliga desktopdatorer och mobilanvändare utan att behöva ha två
Innehållsförteckning Sida 3 Om IT-Högskolan Sida 4-5.NET-utvecklare Sida 6-7 Applikationsutvecklare till iphone och Android Sida 8-9 Mjukvarutestare
YH-utbildningar 2016 Innehållsförteckning Sida 3 Om IT-Högskolan Sida 4-5.NET-utvecklare Sida 6-7 Applikationsutvecklare till iphone och Android Sida 8-9 Mjukvarutestare Sida 10-11 Webbutvecklare CMS 2
PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning
PMM (Process Maturity Metrics) PMM är en metod för att mäta processmognad i utvecklingsprojekt. I korthet går metoden ut på att man utvärderar sin utvecklingsprocess med avseende på ett antal framgångsfaktorer
QR-kodernas intåg för nytta och nöje!
QR-kodernas intåg för nytta och nöje! Föredrag av Stig Ottosson om smarta "självlänkande" streckkoder som vi kommer att se alltmer i framtiden. 2012-05-04 Webbvärlden ur exponeringssynpunkt till ca 2010
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q2
Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2013.Q2 För att 3L Pro skall fungera krävs att nedanstående hårdvarukrav och mjukvarukrav är uppfyllda. Viktigt är att tänka på att
Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt
Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt Kravhantering / Testprocess - Agenda AGENDA Grundläggande kravhanteringsprocess. Insamling, dokumentation, prioritering, Test och förvaltning
Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion
Webbteknik En kort introduktion Innehåll Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender 1 Historisk återblick 89 CERN Tim Berners Lee Ett plattformsoberoende sätt att sprida
Webbappar med OpenLayers och jquery
Webbappar med OpenLayers och jquery Johan Lahti GIT-utvecklare Malmö stad ULI Uppsala, 3 oktober 2011 smap (www.smap.se) Samarbete sedan maj 2009 Kartramverk byggt på OpenLayers och jquery Gemensam server
Distribuerade affärssystem
Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska
Metod Rapporten är baserad på egen erfarenhet av marknadsföring on-line samt studier av aktuell forskning, rapporter och webinars.
Att välja mellan native- eller webbapp Bakgrund Marknaden för smarta mobiltelefoner ökar kraftigt. Därför ser allt fler företag och organisationer behovet av att göra digitalt innehåll tillgängligt för
Uppdragsbeskrivning. Paddel-appen Utmärkta kanotleder. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.
Paddel-appen Utmärkta kanotleder Version 1.0 Distributionslista Befattning Bolag/en het Säljare Sogeti Bengt Löwenhamn Konsultchef Sogeti Åsa Maspers Mentor/handledare Sogeti Student KaU Claes Barthelson
SLUTRAPPORT WEBBPROJEKT 1
SLUTRAPPORT WEBBPROJEKT 1 Kostregistrering 30 mars 2012 Webbprojekt 1 1DV411 Institutionen för datavetenskap, fysik och matematik Linnéuniversitetet Ella Källman - ella@kallman.se Martin Kuoppa - martin@duofy.com
Konsultprofil. Per Norgren (1983) Arkitekt & webbutvecklare
Konsultprofil Per Norgren (1983) Arkitekt & webbutvecklare Per Norgren är arkitekt och webbutvecklare som främst är inriktad på Mircosofts.Net-ramverk och EPiServer. Han har arbetat i branschen sedan 2007
A" utveckla kartor med responsiv design. Johan Lah8 Geografisk IT- utvecklare Stadsbyggnadskontoret, Malmö stad
A" utveckla kartor med responsiv design Johan Lah8 Geografisk IT- utvecklare Stadsbyggnadskontoret, Malmö stad Innehåll 1. Vad och varför responsiv design? 2. Hur kan det genomföras? 3. Exempel (smap)
HejKalmar app. Projektrapport. Webbprojekt I
Projektrapport HejKalmar app Webbprojekt I Författare: Cecilia Lindqvist, Linus Lundevall, Christofer Olaison, Andreas Söderström och Isak Utegård Handledare: Tobias Ohlsson Examinator: Tobias Ohlsson
Bonus Rapport Kommersiell Design KTH
Bonus Rapport Kommersiell Design KTH Johan Holmström & Lars Åkesson Introduktion Denna rapport beskriver projektet och delmomentet Kommersiell Design i kursen Interaktionsdesign 2 på KTH i Stockholm. Detta
1:5 SLUTRAPPORT - POST MORTEN LARS EHRMAN WP12 2013-06-07
1:5 - POST MORTEN LARS EHRMAN WP12 2013-06-07 2:5 ABSTRAKT EN AVSEENDE STOREFRONT WEB- SHOP SOM HAR TAGITS FRAM SOM PROJEKT I KURSEN GRÄNSSNITTSUTVECKLING (1IK419) OCH KURSEN INDIVIDUELLT MJUKVARUUTVECKLINGS-
Innehålls förteckning
Programmering Uppsats i skrivteknik Axxell Företagsekonomi i informationsteknik 19.3.2015 Respondent: Tomas Björklöf Opponent: Theo Wahlström Handledare: Katarina Wikström Innehålls förteckning 1. Inledning...3
GYMKEEPER ANDREAS SÖDERSTRÖM
GYMKEEPER ANDREAS SÖDERSTRÖM 20120529 ABSTRAKT En post mortem på mitt ios-projekt. Utmaningen låg i att under 10 veckors tid sätta sig in i en plattform och programspråk jag aldrig använt förut. Jag har
Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
X-jobbs katalog. Medius R&D November 2011
X-jobbs katalog Medius R&D November 2011 Contents ERP och Workflow System... 2 ipad och workflow system... 3 Nya möjligheter med HTML5... 4 Nya alternativ för affärsregelmotorer... 5 Process Intelligence
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
Operativsystem och användargränssnitt
Operativsystem och användargränssnitt Som du fick läsa tidigare behöver datorn förutom hårdvara också ett program för att hantera hårdvaran, dvs. ett operativsystem. Denna sida behandlar bland annat följande
Yanting Larsen. Mjukvaruutvecklare. Cybercom Group
Cybercom Group www.cybercom.se info@cybercom.com Yanting Larsen Jag har ett stort intresse av mjukvaruutveckling och jag är angelägen om att arbeta med antingen webbapplikationer, datorprogram eller mobilapplikationer.
Webbtillgänglighet. Webbtillgänglighet. World Wide Web Consortium. Web Accessibility Initiative, WAI WCAG 2.0 WCAG 1.0
Webbtillgänglighet Webbtillgänglighet Att göra webbinnehåll så att de är tillgängliga för alla oavsett vilka funktionsnedsättningar man har Att göra webbinnehåll tillgängligt oavsett vilken in- och utmatningsutrustning
Webbserverprogrammering
Webbserverprogrammering WES Webbserverprogrammering Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets
Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) 2013-06-10 Slutrapport
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
Javautvecklare. Utbildningsfakta. 400 YH-poäng, 2 år
Javautvecklare 400 YH-poäng, 2 år Utbildningsfakta Kurser (12 stycken) Grundläggande programmering och javaverktyg 50 yhp Grafiskt gränssnitt och interaktion 20 yhp Internet, webb och webbramverk 40 yhp
behövs för enhetlighet, tala samma språk, så att användaren kan lära sig och använda det vidare.
1 2 3 Grafisk profil reglerar grunddragen i utseendet (logga, färger, typsnitt) en helhet skapas Vi ska känna igen oss, vi ska förstå vad som avsändaren vill kommunicera. Kan vara svårt att direkt applicera
KONSULTPROFIL Rodrigo
KONSULTPROFIL Rodrigo Systemutvecklare.NET/EPiServer/SharePoint Sammanfattning Rodrigo är en utåtriktad och glad person med båda fötterna på jorden som trivs både med att leda och samarbeta. Har jobbat
Uppdragsbeskrivning. Google Glass. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.
Version 1.0 Distributionslista Befattning Bolag/en het Student KaU Richard Hoorn Student KaU Johan Häger Konsult/handledare Sogeti Konsultchef Sogeti Åsa Maspers Säljare Sogeti Bengt Löwenhamn Namn Åtgärd
Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson
Minesweeper Individuellt Mjukvaruprojekt Joakim Jonsson 08 06 2013 Abstrakt Nedan följer en slutrapport för projektet inom kursen Individuellt Mjukvaru utvecklingsprojekt. Jag har under dessa 10 veckor
ENKEL INTRODUKTIO Du kanske länge har funderat vad alla begrepp som Wifi, surfplatta och app står för, kanske detta dokument kan lösa dina problem.
ENKEL INTRODUKTIO Du kanske länge har funderat vad alla begrepp som Wifi, surfplatta och app står för, kanske detta dokument kan lösa dina problem. Katarina Eriksson ipad ipad +Äldre=sant Enkel beskrivning
Webbtjänster med API er
Webbtjänster med API er Mål med lektionen! Veta kursmålen. Lite grunder om WCF Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se
Creo Customization. Lars Björs 2014-10-16
Creo Customization Lars Björs 2014-10-16 Norra Europas största partner och återförsäljare av PTC relaterad programvara (Windchill, Creo, Arbortext, MathCad, Relex) 70 anställda Egen utvecklingsavdelning
Testautomation av sammansatta och mobila applikationer. Magnus Nilsson Lemontree
Testautomation av sammansatta och mobila applikationer Magnus Nilsson Lemontree Agenda Kravställning och rapportering Hur hanterar man manuella tester tillsammans med automatiska tester Genomgång av lösningar
1. (3p) Inom MDI-området framhåller man att människor lär sig via metaforer. Hur menar man att detta går till?
1. (3p) Inom MDI-området framhåller man att människor lär sig via metaforer. Hur menar man att detta går till? Att lära sig via metaforer innebär att man drar nytta av kunskap som användaren redan har,
DIG IN TO Nätverksadministration
DIG IN TO Nätverksadministration Nätverksadministration Datormolnet The Cloud Agenda IT förändras kontinuerligt IT infrastruktur behöver byggas ut Högre krav på IT infrastrukturen Vad är datormoln? Vad
WEBBSERVERPROGRAMMERING
WEBBSERVERPROGRAMMERING Ämnet webbserverprogrammering behandlar funktionalitet för webblösningar och samspelet mellan beställare, användare, formgivare och utvecklare. Ämnets syfte Undervisningen i ämnet
Programvaruteknik, hp
1 (6) Utbildningsplan för: Programvaruteknik, 120-180 hp Software Engineering, 120-180 Credits Allmänna data om programmet Programkod Tillträdesnivå Diarienummer TPVAG Grundnivå MIUN 2010/1734 Högskolepoäng
KONSULTPROFIL Juan. Systemutvecklare.NET/EPiServer/Commerce. Sammanfattning. Kompetens. Uppdrag
KONSULTPROFIL Juan Systemutvecklare.NET/EPiServer/Commerce Sammanfattning Mångsidig IT-arkitekt med mer än 14 års erfarenhet av IT-branschen. Erfarenhet av att leverera och implementera avancerade IT-lösningar
SKOLFS. beslutade den XXX 2017.
1 (12) Skolverkets föreskrifter om ämnesplan för ämnet webbutveckling i gymnasieskolan, inom kommunal vuxenutbildning på gymnasial nivå och inom vidareutbildning i form av ett fjärde tekniskt år; beslutade
Behandling av personuppgifter innefattar all hantering av personuppgifter såsom insamling, registrering och lagring.
EMG EDUCATIONS MEDIA GROUPS INTEGRITETSPOLICY Avseende Happy Students Senast uppdaterad: 2017-[10]-[06] EMG Educations Media Group AB, org.nr 556652-1653, ( EMG, Vi eller Oss ), är ansvarig för behandlingen
Webbservrar, severskript & webbproduktion
Webbprogrammering Webbservrar, severskript & webbproduktion 1 Vad är en webbserver En webbserver är en tjänst som lyssnar på port 80. Den hanterar tillgång till filer och kataloger genom att kommunicera
Big Data i spelbranchen
Big Data i spelbranchen ett projekt med Hadoop och open source i fokus Kunden Företaget arbetar med onlinespel och utvecklar många olika spel för över 100 spelbolag, exempelvis Casinon som Casinostugan
UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten
UTVECKLINGSVERKTYG Praktiska tips för PUM-projekten TEKNIKER I PROJEKTEN ios 2 C#.NET 1 Java (inkl Android) 6 Webb (HMTL/JS) 4 En genomskumning av de tilldelade projektförslagen ger ovanstående uppfattning
QR-kodernas intåg för nytta och nöje!
QR-kodernas intåg för nytta och nöje! Föredrag av Stig Ottosson om smarta "självlänkande" streckkoder som vi kommer att se alltmer av i framtiden. 2012-06-20 Något stort hände 2007 och 2010 2007 introducerades
Projektuppgift- Mashup- Applikation
Projektuppgift- Mashup- Applikation Som avslutning på denna kurs är det tänkt att Du ska bygga en egen mashup- applikation. Du ska bygga en komplett applikation som du utan tvekan skulle kunna vilja visa
Advanced Mobile Device Management
1 Advanced Mobile Device Management Magnus Janson Produktchef Tele2 Integration Service 2 4 Tele2 en del av Kinnevikgruppen Tele2 är den mobila utmanaren Mer än 40 miljarder kr i omsättning Mer än 30 miljoner
Programmering = modellering
Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal
JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund gussk258@student.liu.se. Marcus Widblom marwi026@student.liu.se. Senast ändrad: 13 / 05 / 08
JavaRats Kravspecifikation Version 1.1 Gustav Skoglund gussk258@student.liu.se Marcus Widblom marwi026@student.liu.se Senast ändrad: 13 / 05 / 08 Sammanfattning Kravspecifikationen för JavaRats har skrivit
Slutrapport YUNSIT.se Portfolio/blogg
Slutrapport YUNSIT.se Portfolio/blogg RICKARD HANSSON 2012-06-04 Abstrakt Rapporten du har i din hand kommer handla om mitt projektarbete som jag genomfört under tio veckor för utbildningen Utvecklare
Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB
Ajax TruClient Erfarenheter, tips och trix från Swedbank IT Christian Gerdes Performance Engineer, LIGHTS IN LINE AB Intro Lite om Swedbanks Teknik Test Varför TruClient En ny teknik kräver ett nytt tänk
Priskamp. En prisjämförelsesite Björn Larsson 130609
Priskamp En prisjämförelsesite Björn Larsson 130609 Abstrakt Detta är en post-mortem slutrapport om mitt projekt "Priskamp" inom ramen för kursen Individuellt Mjukvaruutvecklingsprojekt VT 2013. Projektets
PROGRAMMERING. Ämnets syfte. Kurser i ämnet
PROGRAMMERING Ämnet programmering behandlar programmeringens roll i informationstekniska sammanhang som datorsimulering, animerad grafik, praktisk datoriserad problemlösning och användaranpassad konfiguration
Innehållsförteckning Förutsättningar... 2 Installation av Google Authenticator på iphone... 3 Installation av Google Authenticator på Android...
Säker inloggning Innehållsförteckning Förutsättningar... 2 Installation av Google Authenticator på iphone... 3 Installation av Google Authenticator på Android... 6 Installation av Microsoft Authenticator
JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?
Innehåll JavaScript En introduktion till skriptspråket JavaScript och till DOM Scripting Introduktion till JavaScript och DOM JavaScript Syntax DOM och DOM Scripting Händelsehantering och CSS Historia
Instruktion. Datum. 2013-06-19 1 (12) Coverage Dokument id Rev Status? - 1.0 Godkänd. Tillhör objekt -
20130619 1 (12)? 1.0 Godkänd Secure Manager Guide Hantera användarprofiler i tjänsten Telia Secure Manager Dokumentet beskriver hur du som administratör beställer och hanterar användarprofiler i administrationsportalen
WEBBTEKNIK. Ämnets syfte
WEBBTEKNIK Webbteknik används för att utveckla och vidareutveckla statiska och dynamiska webbsidor, webbplatser, webbapplikationer eller andra applikationer där webbtekniker används, till exempel applikationer
WEBBTEKNIK. Ämnets syfte
WEBBTEKNIK Webbteknik används för att utveckla och vidareutveckla statiska och dynamiska webbsidor, webbplatser, webbapplikationer eller andra applikationer där webbtekniker används, till exempel applikationer
Taxi boknings system, inpassering och medlemshanterings system, betallösningar, realtidssystem, App utveckling
Magnus Moberg Är en strukturerad och noggrann systemutvecklare/arkitekt som tycker om nya utmaningar. Har 17 års erfarenhet av systemutveckling, produktframställning, design och arkitekt. Har jobbat med
E12 "Evil is going on"
E12 "Evil is going on" Föreläsning 12, HT2014 AJAX Kurs: 1dv403 Webbteknik I Johan Leitet E12 Evil is going on Dagens agenda AJAX XMLHttpRequest-objektet JSON Vad är AJAX? Asynchronous JavaScript and XML
Undervisningen ska ge eleverna tillfälle att arbeta i projekt samt möjlighet att utveckla kunskaper om projektarbete och dess olika faser.
WEBBTEKNIK Webbteknik används för att utveckla och vidareutveckla statiska och dynamiska webbsidor, webbplatser, webbapplikationer eller andra applikationer där webbtekniker används, till exempel applikationer
Manual Lead tracking. Version 1.0 2013-12-12
Manual Lead tracking Version 1.0 2013-12-12 Innehållsförteckning 1 Inledning... 3 1.1 Om manualen... 3 1.2 Om tjänsten... 3 2 Använd tjänsten för första gången... 4 2.1 Installera applikationen... 4 2.2
Undervisningen i ämnet mobila applikationer ska ge eleverna förutsättningar att utveckla följande:
MOI Ämnet mobila applikationer behandlar olika tekniker för att utveckla programvara riktad mot mobila enheter samt processen från idé till färdigt program. Ämnet mobila applikationer får bara anordnas
Låt oss ta hand om din utveckling, medan du själv utvecklar ditt företag
Låt oss ta hand om din utveckling, medan du själv utvecklar ditt företag *vad är SmartCode? Vi gör ett komplett utbud av tjänster. Vi designar, utvecklar, stödjer och uppdaterar allt som fungerar i Web.
Objektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
ETS Inside. En helt ny programvara från KNX Association. Rikard Nilsson. Jan Hammarsköld. Ordförande KNX Sweden. Sekreterare KNX Sweden
ETS Inside En helt ny programvara från KNX Association Rikard Nilsson Ordförande KNX Sweden Jan Hammarsköld Sekreterare KNX Sweden ETS Inside Smart, enkelt, säkert Nytt revolutionerande verktyg idealiskt
Hej! Min uppdaterade portfolio finns online på www.lindebrand.com. alindebrand@gmail.com +46 70 54 70 052 www.lindebrand.com
Curriculum Vitae Hej! Jag heter Alexander Lindebrand och jag kallar mig ett kreativt allt-i-allo. Jag jobbar främst med grafisk design, webbdesign och fotografering men jag har erfarenhet i de flesta digitalt
Föreläsning 2. Operativsystem och programmering
Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data
Slutrapport för Internetfonden
Slutrapport för Internetfonden Webbprogrammering i matematik och fysikundervisning Mikael Tylmad mikael@roboro.se Fredrik Atmer fredrik.atmer@gmail.com Ella Kai-Larsen e@k-l.se 10 april 2014 http://www.profyma.se/
Modern webbutveckling. av Robert Welin-Berger
Modern webbutveckling av Robert Welin-Berger robertwb@kth.se Modern webbutveckling 1. Projektstorlek och Arkitektur 2. Callbacks 3. Event driven arkitektur 4. MEAN stack 5. ODM/ORM 1. Projektstorlek och
Mål. Uppdrag. NuvoAir, Stockholm Oktober 2017 Februari Spotify, Stockholm Februari 2017 September 2017
CV Erik Karlsson Timotejgatan 3, 118 59 Stockholm Mob: 073-82 69 669 E-post: erik.karlsson.flash@gmail.com Portfolio: http://erikkarlsson.net Mål Mitt mål är att fortsätta specialisera mig inom apputveckling
Systemkrav Bilflytt 1.4
Systemkrav 1.4 Systemkrav 2018-08-28 2 (9) Systemkrav 1.4 Dokumentet beskriver de krav som systemet ställer på maskinvara och programvara i de servrar och klientdatorer som ska användas för systemet. Nedan
CREATING VALUE BY SHARING KNOWLEDGE
CREATING VALUE BY SHARING KNOWLEDGE PROJEKTLEDNING 101 Nidzara Dellien, Lund September 2017 PROJEKT En formell definition på projekt är följande (enligt Wikipedia): En temporär satsning för att framställa
Manual Skogsappen - Hemkomstkontroll
Manual Skogsappen - Hemkomstkontroll Detta dokument utgör användarhandledningen till funktionen hemkomstkontroll i mobilappen Skogsappen som tillhör tjänsten epiforest. E p i s c o p e M o n i t o r i
Minnesisolering för virtuella maskiner en hypervisorstudie
1.Introduktion 1.1 Inledning Den senaste trenden inom IT-världen är cloud computing (molntjänster). Molntjänster har uppnått stor popularitet både hos IT-chefer och ekonomichefer inom stora företag. Molntjänster
Säkerhetskopiera mobilen
Säkerhetskopiera mobilen gratis och helautomatiskt 7 Bästa gratistipsen 7 För Android, Iphone och Windows Phone 7 Säkerhetskopiera till Dropbox. Så fixar du automatisk säkerhetskopiering av mobilen Visst
Hjälpmedelscentralen. Välkomna!
Välkomna! Vad finns i din Smartphone? Vad finns i din Smartphone? meddelanden socialt umgänge underhållning (spel, musik) planering påminnelser Vad finns i din Smartphone?. hitta platser eller personer
Filhanterare med AngularJS
Filhanterare med AngularJS Författare: Filip Johansson Peter Emilsson Oskar Georgsson Christian Nilsson Datum: 2014-03-26 1 Sammanfattning Filhanterare med AngularJS är en filhanterare skapad för Sigma
ADOBE FLASH PLAYER 10.3 Lokal inställningshanterare
ADOBE FLASH PLAYER 10.3 Lokal inställningshanterare PRERELEASE 03/07/2011 Juridisk information Juridisk information Juridisk information finns på http://help.adobe.com/sv_se/legalnotices/index.html. iii
Analysverktyget Program Version: 2012-09-13
Analysverktyget Program Version: 2012-09-13 Analysverktyget Program möjliggör att ta fram all data som mätningen av webb-tv omfattas av. Data finns från och med 1/5 2011 och uppdateras kontinuerligt. I