• No results found

Hur har arbetet med konsulterna påverkat arbetsmetodiken och pro-

E.3 Teori

F.7.3 Hur har arbetet med konsulterna påverkat arbetsmetodiken och pro-

I litteraturstudien som gjordes för den agila arbetsprocessen togs det upp saker som att agilt arbete inte var för alla men för dem som fokuserar på individuell kompetens och utveckling. Det nämndes även att politik triumferar personen i agilt arbete vilket drar en stark samman- koppling mellan projektgruppen, konsulterna och företaget. Utan ett bra stöd ovanifrån, som gruppen i detta fallet fick i form av konsulter från företaget, hade det varit svårare att komma igång med de arbete som projektgruppen skulle utföra. Det vill säga att beroende på situa- tion kan mer eller mindre stöd ovanifrån behövas för att få ett projekt att rulla på så bra som möjligt. Det togs även upp i litteraturstudien att kompetensen inom grupp var mycket viktigt för att få ett fungerande team, vilket tillsammans med individuell kompetens och utveckling passade bra överens i ett studiesammanhang som detta projekt, då gruppen innehöll studen- ter med målet att utvecklas och bygga upp sina kompetenser inför framtiden.

G

Hur kan Azure DevOps

underlätta ett

mjukvaruutvecklingsprojekt? -

Samuel Knutsson

G.1

Introduktion

Azure DevOps är en samling tjänster som tillsammans täcker hela livscykeln från planering till färdig produkt av en applikation. På senare tid har Azure DevOps växt fram som en av de populäraste sätten att utveckla en applikation, både bland företag och hobbyister. Denna rapport har som mål att fördjupa sig i de olika möjligheterna Azure DevOps tillhandahåller och att ta reda på hur det kan förenkla processen av mjukvaruutveckling.

G.1.1

Syfte

Syftet med denna rapport är att undersöka hur Azure DevOps kan vara till nytta för ett mjukvaruutvecklingsprojekt. Rapporten ska ta reda på vilka tjänster som finns tillgängliga och hur de kan tänkas användas. För tjänsterna i Azure ska det sedan jämföras med hur vi i projektgruppen använde dem i detta kandidatarbete. Detta är tänkt att göras genom att besvara frågeställningarna listade nedan.

G.1.2

Frågeställning

1. Går det att säkerställa att en projektgrupp arbetar effektivt i Azure DevOps? 2. Vilka olika verktyg används för versionshantering i Azure DevOps?

3. Vilka delar av Azure DevOps använde sig gruppen av under projektet?

G.1.3

Avgränsningar

Storleken på ett mjukvaruutvecklingsprojekt är en stor faktor till hur man väljer sin arbets- process. Denna individuella rapport tar inte till hänsyn till storleken på projekten.

G.2

Bakgrund

För detta kandidatarbete använde sig gruppen av Azure som plattformstjänst till webbappli- kationen. För många av gruppens medlemmar var Azure en ny och outforskad miljö. Valet

G.3. Teori

av plattform gjordes av tidigare utvecklare av produkten ARCH innan denna kandidatgrupp blev tilldelad uppgiften att vidareutveckla produkten. ARCH var redan vid överlämning av större skala jämfört med de projekt som arbetats på tidigare i Civilingenjörsprogrammet i Mjukvaruutveckling på Linköpings Universitet.

En tjänst som Azure DevOps innehåller många funktionaliteter som underlättar vid ut- veckling. Många av dessa funktionaliteter kan tänkas användas vid utvecklingen av ARCH. Vilka av dessa tjänster nyttjades under utvecklingen av produkten och vad hade kunnats användas för att förenkla processen?

G.3

Teori

I detta avsnittet kommer olika begrepp och verktyg inom programvaruutveckling som är relevanta till denna studie förklaras.

G.3.1

Agil systemutveckling

Agil systemutveckling är ett samlingsnamn för metoder som följer grundtanken att det är ett flexibelt sätt att arbeta på. Planer och metoder i agil systemutveckling kan och kommer utvärderas och förbättras under utvecklingsprocessen. I agilt utvecklande är fungerande och frekvent kommunikation mellan kund och leverantör i fokus [69]. Under denna kommunika- tion kan delresultat visas upp och planer justeras vid behov. Denna arbetsmetodik har växt fram efter att utvecklare ansåg att systemutvecklingsmetoder som vattenfallsmodellen kän- des för strikta och i många fall orealistiska. De tyckte att man litade för mycket på formella dokument istället för kommunikation under utvecklingen. [70]

G.3.2

Continuous integration

Continuous integration, ofta förkortat till CI, innebär att kod pushas kontinuerligt till master- branch, där branch är en arbetsgren och master-branch innehåller den version av produkten som är mest färdig. När kod pushas sker automatisk byggning och testning av kodbasen [71]. Fördelen med detta är att buggar hittas tidigt samt att det kommer vara god kvalitet på koden genom hela projektet. För att CI ska fungera som tänkt så krävs det, likt namnet, att kod pushas och integreras kontinuerligt. Ifall commits sker med stora mellanrum är chansen för merge konflikter och buggar stor. Som följd av detta kommer det krävas en hel del efterarbete för att bena ut och fixa alla problem.

CI kräver också att alla arbetar på en delad versionhanteringsgren. För att undvika pro- blem med CI kan endast kortvariga feature-branches skapas där arbetet i branchen är självstän- digt och till stor grad isolerat från arbetet i master-branch. Där feature-branch är en isolerad gren där arbete för en viss funktionalitet sker.

Startprocessen för att använda sig av CI är att man skapar en build definitions som ser till att master-branchen bygger och testar mjukvaran automatiskt. Det behövs också en byggserver som konfigureras för att ta hand om dessa byggningar och tester. [71]

G.3.3

Continuous delivery

Continuous delivery är likt Continuous integration i sättet att det kontinuerligt uppdaterar kod. Vad CD dock strävar efter är att ge kunden en fungerande version av mjukvaran, denna versionen ska uppdateras så frekvent som möjligt [71]. Detta möjliggör för kunden att testa produkten och följa med i utvecklingen.

G.3.4

Azure DevOps

Azure DevOps är en samling tjänster som tillsammans täcker hela livscykeln av en applika- tion och uppmanar till ett agilt arbetsflöde. Namnet DevOps kommer från de två engelska

G.4. Metod

orden Development och Operations. DevOps försöker att kombinera processerna av utveckling och operationer [72]. Med operationer syftas det på operationer som till exempel kvalitésam- ordning och testning. Med DevOps arbetar utvecklare tillsammans med operations ansvari- ga som ett lag istället för egna isolerade grupper. I Azure DevOps finns det tillgång till fem stycken tjänster: Azure Boards, Azure Repos, Azure Pipelines, Azure Test Plans och Azure Artifacts.

Azure Boards Detta är planeringsverktyget i Azure. I Boards övervakas allt arbete i projektet och medlemmar i utvecklingen kan se vilket stadie olika arbetsuppgifter befinner sig i. Det finns tillgång till planer, backlog, sprinter och tilldelade arbetsuppgifter. I Boards kan också user stories och kravspecifikation definieras.

Azure Repos I Repos hanteras allt relaterat till versionshantering. I Repos finns repositories , Pull requests och historiken för mjukvaran. Azure stöder flertal versionshanteringssy- stem som Azure Git, GitHub och Microsofts egna Team Foundation Version Control (TFVC). [73]

Azure Pipelines Detta används för att sätta upp automatisk byggning och testning av pro- jektkoden. Det är i Pipelines som Continuous integration och Continuous delivery kan an- vändas.

Azure Test Plans Här skapas manuella tester som kan köras på koden. Det sparas historik för resultaten av tidigare gjorda tester och man kan även se statistik och framsteg som gjorts under testningen. Med Test Plans kan även webbläsarbaserad användartester gö- ras där feedback sparas i Azure Test Plans.

Azure Artifacts I Azure Artifact hanteras de privata och allmänna paketen som används i projektet.

G.4

Metod

Metoden till denna rapport kommer vara en litteraturstudie med fokus runt de olika tjänster- na i Azure DevOps. Vetenskapliga artiklar relaterat till ämnet har samlats främst från IEEE Xplore och LIUs DiVA portal, någon källa här tagits from Googles sökmotor. Artiklar som hanterar koncepten på en generell nivå har valts ut. Dessa artiklar har sedan lästs igenom och använts ifall innehållet var passande och hjälpt till att förklara koncepten. Artiklar för- djupade i specialfall eller en viss bransch har däremot exkluderats från studien. Olika sökter- mer har använts för att få fram relevanta artiklar. Några exempel är: Azure DevOps, DevOps processes, Agile Software Development, Continuous Integration, Continuous Delivery.

För att ta reda på vilka Azure tjänster vi har använt under utvecklingen så kollades vårt projekt på Azure igenom. Detta gjordes genom att kolla på alla tjänsters aktivitet och ifall tjänstrelaterade saker har skapats under projektets gång. Vilka tjänster har nyttjats och vilka har inte? Alla tjänster diskuteras i rapportens diskussion och egen reflektion kommer också användas för att komma fram till slutsatser.

G.5

Resultat

I detta avsnittet kommer resultatet för de olika delarna av teorin redovisas. Det kommer också innehålla en beskrivning av vilka tjänster i Azure DevOps vi använde oss av under detta projektet.