{"id":3575,"date":"2015-02-05T09:40:49","date_gmt":"2015-02-05T08:40:49","guid":{"rendered":"http:\/\/www.traineebloggen.se\/?p=3575"},"modified":"2015-02-05T09:42:27","modified_gmt":"2015-02-05T08:42:27","slug":"design-och-projektplanering","status":"publish","type":"post","link":"https:\/\/www.traineebloggen.se\/index.php\/2015\/02\/trainee\/design-och-projektplanering\/","title":{"rendered":"Design och projektplanering"},"content":{"rendered":"<p>De senaste veckorna har varit intressanta. De har \u00e4gnats \u00e5t en fas av mjukvarutvecklingsprocessen som inte involverar n\u00e5got slags programmering \u00f6verhuvudtaget. I det nya projektet ska Cinnobers grundplattform byggas ut med st\u00f6d f\u00f6r att skicka ut marknadsdata med multicast-teknologi \u00f6ver FIX-protokollet. Det g\u00e5r ut p\u00e5 att en s\u00e4ndare kan skicka ut marknadsdatan till ett stort antal mottagare p\u00e5 ett effektivt och r\u00e4ttvist s\u00e4tt.<\/p>\n<p><strong>F\u00f6rstudie och design<\/strong><\/p>\n<p>Eftersom detta \u00e4r helt ny funktionalitet s\u00e5 g\u00e5r en stor del av projektet \u00e5t till att g\u00f6ra efterforskningar och ta reda p\u00e5 hur problemet kan l\u00f6sas p\u00e5 b\u00e4sta s\u00e4tt. Vi har studerat existerande Cinnobersystem, existerande implementationer som redan finns p\u00e5 marknaden, vetenskapliga artiklar, m. m. Tillsammans diskuterar vi i teamet och andra experter p\u00e5 f\u00f6retaget igenom de m\u00e5nga olika alternativa l\u00f6sningar, deras f\u00f6r- och nackdelar och v\u00e4ger dem mot varandra.<\/p>\n<p>Eftersom detta kommer vara del av grundplattformen som alla kundprojekt bygger p\u00e5 m\u00e5ste l\u00f6sningen vara tillr\u00e4ckligt flexibelt f\u00f6r att fungera f\u00f6r alla kundprojekt. Samtidigt vill man minimera m\u00e4ngden arbete kundprojekten sj\u00e4lva beh\u00f6ver g\u00f6ra f\u00f6r att anpassa systemet till deras behov. Dessutom m\u00e5ste systemet vara tillr\u00e4ckligt effektivt f\u00f6r att m\u00f6ta f\u00f6rv\u00e4ntningarna hos anv\u00e4ndare p\u00e5 moderna elektroniska marknadsplatser. Dessa h\u00e4nsynstaganden st\u00e5r ofta i konflikt med varandra, vilket utg\u00f6r intressanta problem.<\/p>\n<p><strong>Projektplanering med Scrum och story points<\/strong><\/p>\n<p>N\u00e4r vi anser att vi har en tillr\u00e4ckligt bra bild av problemst\u00e4llningen m\u00e5ste projektet planeras. I Scrum-modellen, vilken \u00e4r praxis p\u00e5 Cinnober, delas projekt upp i s\u00e5 kallade sprintar, som varar i 2-4 veckor. Problemet som ska l\u00f6sas delas upp i &#8220;stories&#8221;, som var och en t\u00e4cker in en arbetsuppgift som ska passa in i en enda sprint. Samtidigt ska varje story prioriteras, efter tv\u00e5 h\u00e4nsynstaganden. \u00c5 ena sidan kan vissa stories helt enkelt inte utf\u00f6ras f\u00f6rr\u00e4n andra \u00e4r klara, och de m\u00e5ste naturligtvis prioriteras l\u00e4gre. Dessutom prioriteras stories efter hur kritiska de \u00e4r f\u00f6r projektets framg\u00e5ng, med central k\u00e4rnfunktionalitet p\u00e5 topp och bonusfunktionalitet som l\u00f6sningen i teorin skulle klara sig utan l\u00e4ngst ner.<\/p>\n<p>N\u00e4r v\u00e4l detta \u00e4r gjort tidsestimerar vi varje story, i ett format som kallas story points. En story point kan ses som ett storleksm\u00e5tt snarare \u00e4n ett tidsm\u00e5tt. Detta f\u00f6r att tiden det tar att slutf\u00f6ra en uppgift kan variera beroende p\u00e5 vem som utf\u00f6r den, medan story points \u00e4r t\u00e4nkta att vara konstanta. En story point representerar samtidigt ingen specifik enhet, utan det viktiga \u00e4r att po\u00e4ngm\u00e5ttet \u00e4r korrekt relativt andra estimat. Dvs, en story med tre story points ska vara ungef\u00e4r tre g\u00e5nger s\u00e5 stor som en story med en story point.<\/p>\n<p>N\u00e4r v\u00e4l alla stories f\u00e5tt ett estimat uppskattar teamet tillsammans hur m\u00e5nga story points vi klarar av p\u00e5 en sprint, och de stories med h\u00f6gst prioritet plockas in i f\u00f6rsta sprinten tills po\u00e4nggr\u00e4nsen \u00e4r n\u00e5dd. Detta har dessutom f\u00f6rdelen att man omedelbart f\u00e5r ett l\u00e5ngsiktigt tidsestimat f\u00f6r hela projektet, genom att dela det totala po\u00e4ngantalet med po\u00e4nggr\u00e4nsen f\u00f6r en sprint.<\/p>\n<p>En annan finess med det h\u00e4r systemet \u00e4r att efter varje sprint kan teamets prestanda j\u00e4mf\u00f6ras med den estimerade. Det \u00e4r mycket troligt att bed\u00f6mningen av antalet po\u00e4ng som kan avklaras p\u00e5 en sprint inte \u00f6verensst\u00e4mmer med verkligheten. D\u00e5 kan man inf\u00f6r n\u00e4sta sprint utnyttja antalet po\u00e4ng som avklarades i f\u00f6reg\u00e5ende sprintar f\u00f6r att estimera n\u00e4sta. P\u00e5 s\u00e5 vis kommer tidsplanen att konstant uppdateras och komma n\u00e4rmare sanningen allteftersom att projektet fortg\u00e5r och teamet f\u00e5r tillg\u00e5ng till mer information och b\u00e4ttre f\u00f6rst\u00e5else f\u00f6r problemet och l\u00f6sningen.<\/p>\n<p>Medan jag skriver detta har vi precis avslutat den f\u00f6rsta tidsestimeringen och imorgon ska vi p\u00e5b\u00f6rja planeringen av den f\u00f6rsta sprinten. Det \u00e4r fascinerande hur sofistikerad modern projektplanering inom mjukvara kan vara och det ska bli intressant att se hur bra systemet fungerar i praktiken de n\u00e4rmaste m\u00e5naderna. N\u00e4r jag skriver n\u00e4sta g\u00e5ng kommer vi f\u00f6rmodligen kommit in p\u00e5 andra sprinten och jag kan rapportera mer om hur det g\u00e5tt. H\u00f6rs d\u00e5!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>De senaste veckorna har varit intressanta. De har \u00e4gnats \u00e5t en fas av mjukvarutvecklingsprocessen som inte involverar n\u00e5got slags programmering \u00f6verhuvudtaget. I det nya projektet ska Cinnobers grundplattform byggas ut med st\u00f6d f\u00f6r att skicka ut marknadsdata med multicast-teknologi \u00f6ver FIX-protokollet. Det g\u00e5r ut p\u00e5 att en s\u00e4ndare kan skicka ut marknadsdatan till ett stort [&hellip;]<\/p>\n","protected":false},"author":93,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[394],"tags":[395,187,30,455],"_links":{"self":[{"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/posts\/3575"}],"collection":[{"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/users\/93"}],"replies":[{"embeddable":true,"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/comments?post=3575"}],"version-history":[{"count":1,"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/posts\/3575\/revisions"}],"predecessor-version":[{"id":3576,"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/posts\/3575\/revisions\/3576"}],"wp:attachment":[{"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/media?parent=3575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/categories?post=3575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.traineebloggen.se\/index.php\/wp-json\/wp\/v2\/tags?post=3575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}