Tekniskt system för Lean Startup Målet med kursen är att ni ska lära er om att bygga ett sådant system Detta gör vi i tillämpat format ny bygger en app för att lära er om den processen System (som CI, byggscript, enhetstestning och automatisk uppdatering är grundläggande programmeringsdelar ni behöver för all programmering). Lär er så mycket tekniska komponenter ni kan i kursen. Ni har eget initiativ och ansvar för detta för att också utveckla er självständighet. Tänk på att detta är en lärandeprocess examinationen handlar om att ni visar att ni försöker och lär er om detta APP Core
: I er lägger ni all basfunktionalitet som krävs för att sedan lägga features och aktivera dessa. Detta ska vara en mindre del av koden. Den ska även skydda appen från bortfall av komponentiserade features Features ska inte kunna programmeras så att de skadar kärnan eller får appen att krascha. Hur detta görs är upp till varje case.
Feature komponenter innebär att systemet byggs ovanpå en egen kärna och med injicerade features som isolerade, atomiska delar. Centralt här är att en feature ska kunna integreras eller tas bort automatiskt av ett system. Det är på användarnivå som features ska avaktiveras så att viktig funktionalitet flyter upp på toppen. Av underhållsskäl och säkerhetsskäl bör featurekomponenten arkiveras helt. får konsekvens för hur man bygger GUI. Absolut positionering blir problematiskt då hela systemet måste anpassa sig efter att komponenter kan introduceras eller försvinna.
Er APPs featurekomponenter ska valideras. Validering kräver måldefintion (se nästa slide) En feature ska överleva om den ger ökad måluppfyllnad En feature ska testas enskilt under en viss tid och sedan antingen bli kvar eller tas bort från appen Ett kösystem för feature måste hantera en. En features kan arkiveras för att testas igen vid senare tillfälle Data om features betydelse behöver lagras för analys A/B-testning eller splittesting innebär att man låter halva gruppen (kontrollgruppen) använda APPen utan en feature-komponent och andra halvan med och mäter sedan om dessa halvor beter sig olika på ett positivt sätt mot APPs mål. T.ex. köper fler i användagruppen betalversionen av appen än kontrollgruppen. Då beror detta på feature-komponenten.
Valideringsmål För A/B-testning krävs mål. Detta kan t.ex. vara att användare köper en in-app purchse under sin användning av demoprodutken. Ett annat alternativ kan vara att min signar upp sig på en e-postlista. En komplexare process krävs egentligen som att man testa, signar upp sig, köper och sedan referera till en kompis. Hög viral spridning får en app om användare tipsar kompisar om appen. Då är appen livskraftig. Detta vill man mäta! Detta kräver att man förstår hur en APP t.ex. tjänar pengar eller i mer grundläggande mening uppfyller sitt syfte dvs används som det tänkts och värderas av användare Även inom Open Source behövs detta för att styra utvecklingen. Problemet kan vara att hitta meningsfull mätning men det är förståss från fall till fall. Att appen används är ju t.ex. en bra indikator på ett den är relevant. Att kunna se måluppfyllnad i typisk Marketplace-scenario är lite problematisk kring en typisk Free/ Pay-version Eftersom man inte vill själv hantera aktivering av betalnivåer utan distribuera 2 appar så att Google eller Apple sköter om piratkopieringsskyddet har man svårare att mäte om en viss funktionalitet ökar och lite problematisk för man kan tappa data. Appens feature-komponenter eller kan behöva designas för att mäta måluppfyllnad Som att motivera och möjliggöra referering till vänner genom appen och även skapa belöningar för detta.
Continuous Integration CI inbär att kod hela tiden och automatiskt validers och uppdateras Läs mer om detta t.ex. här för android http://blackriver.to/2012/02/androidcontinuous-integration-with-ant-and-jenkinspart-1/ http://en.wikipedia.org/wiki/continuous_inte gration Genom att bygga kod, byggscript och automatisk uppdatering kan en utvecklare enbart checka in kod i t.ex. gitlab och sedan flyter kedjan på så att detta tillslut hamnar ute hos kund Enhetstester skyddar mot fel Versionshantering skyddar mot Byggscript automatiserar byggnation och uppdatering av applikationer Även APPen måste ha funktionalitet för automatisk uppdatering att ladda ny version. Detta sköts ofta av t.ex. Marketplace så ni bör titta på den processen. CI är en grundläggande programmeringskomponent och jag träffade härom dan en gammal studiekamrat som jobbade specifikt med CI för Ericsson där 1000 programmerares utveckling skulle koordineras genom CI från ett stort antal olika platser runt om i världen.