Towards increased productivity and quality in software development using agile, lean and collaborative approaches
Heidenberg, Jeanette (2011-02-11)
Heidenberg, Jeanette
Turku Centre for Computer Science (TUCS)
11.02.2011
Julkaisu on tekijänoikeussäännösten alainen. Teosta voi lukea ja tulostaa henkilökohtaista käyttöä varten. Käyttö kaupallisiin tarkoituksiin on kielletty.
Julkaisun pysyvä osoite on
https://urn.fi/URN:ISBN:978-952-12-2534-5
https://urn.fi/URN:ISBN:978-952-12-2534-5
Tiivistelmä
Dagens programvaruindustri står inför alltmer komplicerade utmaningar i en värld där programvara är nästan allstädes närvarande i våra dagliga liv. Konsumenten vill ha produkter som är pålitliga, innovativa och rika i funktionalitet, men samtidigt också förmånliga. Utmaningen för oss inom IT-industrin är att skapa mer komplexa, innovativa lösningar till en lägre kostnad.
Detta är en av orsakerna till att processförbättring som forskningsområde inte har minskat i betydelse. IT-proffs ställer sig frågan: “Hur håller vi våra löften till våra kunder, samtidigt som vi minimerar vår risk och ökar vår kvalitet och produktivitet?” Inom processförbättringsområdet finns det olika tillvägagångssätt. Traditionella processförbättringsmetoder för programvara som CMMI och SPICE fokuserar på kvalitets- och riskaspekten hos förbättringsprocessen.
Mer lättviktiga metoder som t.ex. lättrörliga metoder (agile methods) och Lean-metoder fokuserar på att hålla löften och förbättra produktiviteten genom att minimera slöseri inom utvecklingsprocessen.
Forskningen som presenteras i denna avhandling utfördes med ett specifikt mål framför ögonen: att förbättra kostnadseffektiviteten i arbetsmetoderna utan att kompromissa med kvaliteten. Den utmaningen attackerades från tre olika vinklar. För det första förbättras arbetsmetoderna genom att man introducerar lättrörliga metoder. För det andra bibehålls kvaliteten genom att man använder mätmetoder på produktnivå. För det tredje förbättras kunskapsspridningen inom stora företag genom metoder som sätter samarbete i centrum.
Rörelsen bakom lättrörliga arbetsmetoder växte fram under 90-talet som en reaktion på de orealistiska krav som den tidigare förhärskande vattenfallsmetoden ställde på IT-branschen. Programutveckling är en kreativ process och skiljer sig från annan industri i det att den största delen av det dagliga arbetet går ut på att skapa något nytt som inte har funnits tidigare.
Varje programutvecklare måste vara expert på sitt område och använder en stor del av sin arbetsdag till att skapa lösningar på problem som hon aldrig tidigare har löst. Trots att detta har varit ett välkänt faktum redan i många decennier, styrs ändå många programvaruprojekt som om de vore produktionslinjer i fabriker. Ett av målen för rörelsen bakom lättrörliga metoder är att lyfta fram just denna diskrepans mellan programutvecklingens innersta natur och sättet på vilket programvaruprojekt styrs.
Lättrörliga arbetsmetoder har visat sig fungera väl i de sammanhang de skapades för, dvs. små, samlokaliserade team som jobbar i nära samarbete med en engagerad kund. I andra sammanhang, och speciellt i stora, geografiskt utspridda företag, är det mera utmanande att införa lättrörliga metoder. Vi har nalkats utmaningen genom att införa lättrörliga metoder med hjälp av pilotprojekt. Detta har två klara fördelar. För det första kan man inkrementellt samla kunskap om metoderna och deras samverkan med sammanhanget i fråga. På så sätt kan man lättare utveckla och anpassa metoderna till de specifika krav som sammanhanget ställer. För det andra kan man lättare överbrygga motstånd mot förändring genom att introducera kulturella förändringar varsamt och genom att målgruppen får direkt
förstahandskontakt med de nya metoderna.
Relevanta mätmetoder för produkter kan hjälpa programvaruutvecklingsteam att förbättra sina arbetsmetoder. När det gäller team som jobbar med lättrörliga och Lean-metoder kan en bra uppsättning mätmetoder vara avgörande för beslutsfattandet när man prioriterar listan över uppgifter som ska göras. Vårt fokus har legat på att stöda lättrörliga och Lean-team med interna produktmätmetoder för beslutsstöd gällande så kallad omfaktorering, dvs. kontinuerlig kvalitetsförbättring av programmets kod och design. Det kan vara svårt att ta ett beslut att omfaktorera, speciellt för lättrörliga och Lean-team, eftersom de förväntas kunna rättfärdiga sina prioriteter i termer av affärsvärde. Vi föreslår ett sätt att mäta designkvaliteten hos system som har utvecklats med hjälp av det så kallade modelldrivna paradigmet.
Vi konstruerar även ett sätt att integrera denna mätmetod i lättrörliga och Lean-arbetsmetoder.
En viktig del av alla processförbättringsinitiativ är att sprida kunskap om den nya programvaruprocessen. Detta gäller oavsett hurdan process man försöker introducera – vare sig processen är plandriven eller lättrörlig.
Vi föreslår att metoder som baserar sig på samarbete när processen skapas och vidareutvecklas är ett bra sätt att stöda kunskapsspridning på. Vi ger en översikt över författarverktyg för processer på marknaden med det förslaget i åtanke. The challenges of the software industry get more complex as software permeates more and more of our daily lives. The consumer wants products that are reliable, rich in functionality, innovative but at the same time inexpensive.
The industry faces the challenge of creating more complex, innovative solutions to a lesser cost.
For this reason, process improvement is as relevant as ever in the software industry. The question asked by software professionals is: “How do we keep our promises, while minimising our risk, increase our quality and productivity?” Traditional software process improvement (SPI) approaches such as CMMI and SPICE focus on the quality and risk aspect of the improvement process, while more light-weight methods such as agile and lean focus on keeping promises and increasing productivity by reducing waste.
The research presented in this dissertation was performed with that specific goal in mind: improving cost efficiency in the way of working while at the same time not compromising quality. This challenge was attacked from three different angles: the deployment of agile methods for improving the ways of working; the usage of product metrics for quality improvement; and the collaboration on process knowledge for dissemination within a large company.
Agile methods evolved during the nineties as a reaction against the unrealistic expectations placed on software development teams by the then prevailing waterfall method for software project management. Software development is a creative process. It differs from other industries in the fact that the main investment in a software development project is in creating something for the first time. Each developer has to be an expert in her own field and spends large portions of her day creating new solutions and solving problems that she has not solved before. Despite the fact that this has been well known for decades, software development projects are still often run as if they were manufacturing lines. One purpose of the agile movement was to make visible this discrepancy between the nature of software development and the practice of how software projects are run.
Agile methods have been proven to work well in the context for which they were designed: small, collocated teams working towards a committed customer. In other contexts, and specifically in large, geographically distributed settings, the adoption of agile methods is more challenging. Our approach to this challenge has been to use piloting as a deployment method.
This has the two-fold benefit of incrementally building knowledge about the methods and their interaction with the context in question while at the same time helping to overcome resistance to change by gently introducing the cultural changes through first-hand experience.
Relevant product metrics can help any software development team improve their way of working. In the case of lean and agile teams, a good set of metrics can be crucial in making the right decisions when prioritising the work items in the backlog. Our focus has been on providing lean and agile teams with internal product metrics for decision support on refactoring. A decision to refactor may be difficult to make, especially for a lean or agile team, that is expected to justify their priorities in terms of business value.
In our work, we propose a way of measuring design quality for systems developed using the model-driven paradigm. We also construct a method for incorporating the metrics in the lean and agile way of working.
Software process dissemination is an important part of any software process improvement initiative, regardless of whether the target process is plandriven or agile. We propose that collaboration on process authoring is a good way to support dissemination and we have surveyed the process authoring tools on the market with this aspect in mind.
Detta är en av orsakerna till att processförbättring som forskningsområde inte har minskat i betydelse. IT-proffs ställer sig frågan: “Hur håller vi våra löften till våra kunder, samtidigt som vi minimerar vår risk och ökar vår kvalitet och produktivitet?” Inom processförbättringsområdet finns det olika tillvägagångssätt. Traditionella processförbättringsmetoder för programvara som CMMI och SPICE fokuserar på kvalitets- och riskaspekten hos förbättringsprocessen.
Mer lättviktiga metoder som t.ex. lättrörliga metoder (agile methods) och Lean-metoder fokuserar på att hålla löften och förbättra produktiviteten genom att minimera slöseri inom utvecklingsprocessen.
Forskningen som presenteras i denna avhandling utfördes med ett specifikt mål framför ögonen: att förbättra kostnadseffektiviteten i arbetsmetoderna utan att kompromissa med kvaliteten. Den utmaningen attackerades från tre olika vinklar. För det första förbättras arbetsmetoderna genom att man introducerar lättrörliga metoder. För det andra bibehålls kvaliteten genom att man använder mätmetoder på produktnivå. För det tredje förbättras kunskapsspridningen inom stora företag genom metoder som sätter samarbete i centrum.
Rörelsen bakom lättrörliga arbetsmetoder växte fram under 90-talet som en reaktion på de orealistiska krav som den tidigare förhärskande vattenfallsmetoden ställde på IT-branschen. Programutveckling är en kreativ process och skiljer sig från annan industri i det att den största delen av det dagliga arbetet går ut på att skapa något nytt som inte har funnits tidigare.
Varje programutvecklare måste vara expert på sitt område och använder en stor del av sin arbetsdag till att skapa lösningar på problem som hon aldrig tidigare har löst. Trots att detta har varit ett välkänt faktum redan i många decennier, styrs ändå många programvaruprojekt som om de vore produktionslinjer i fabriker. Ett av målen för rörelsen bakom lättrörliga metoder är att lyfta fram just denna diskrepans mellan programutvecklingens innersta natur och sättet på vilket programvaruprojekt styrs.
Lättrörliga arbetsmetoder har visat sig fungera väl i de sammanhang de skapades för, dvs. små, samlokaliserade team som jobbar i nära samarbete med en engagerad kund. I andra sammanhang, och speciellt i stora, geografiskt utspridda företag, är det mera utmanande att införa lättrörliga metoder. Vi har nalkats utmaningen genom att införa lättrörliga metoder med hjälp av pilotprojekt. Detta har två klara fördelar. För det första kan man inkrementellt samla kunskap om metoderna och deras samverkan med sammanhanget i fråga. På så sätt kan man lättare utveckla och anpassa metoderna till de specifika krav som sammanhanget ställer. För det andra kan man lättare överbrygga motstånd mot förändring genom att introducera kulturella förändringar varsamt och genom att målgruppen får direkt
förstahandskontakt med de nya metoderna.
Relevanta mätmetoder för produkter kan hjälpa programvaruutvecklingsteam att förbättra sina arbetsmetoder. När det gäller team som jobbar med lättrörliga och Lean-metoder kan en bra uppsättning mätmetoder vara avgörande för beslutsfattandet när man prioriterar listan över uppgifter som ska göras. Vårt fokus har legat på att stöda lättrörliga och Lean-team med interna produktmätmetoder för beslutsstöd gällande så kallad omfaktorering, dvs. kontinuerlig kvalitetsförbättring av programmets kod och design. Det kan vara svårt att ta ett beslut att omfaktorera, speciellt för lättrörliga och Lean-team, eftersom de förväntas kunna rättfärdiga sina prioriteter i termer av affärsvärde. Vi föreslår ett sätt att mäta designkvaliteten hos system som har utvecklats med hjälp av det så kallade modelldrivna paradigmet.
Vi konstruerar även ett sätt att integrera denna mätmetod i lättrörliga och Lean-arbetsmetoder.
En viktig del av alla processförbättringsinitiativ är att sprida kunskap om den nya programvaruprocessen. Detta gäller oavsett hurdan process man försöker introducera – vare sig processen är plandriven eller lättrörlig.
Vi föreslår att metoder som baserar sig på samarbete när processen skapas och vidareutvecklas är ett bra sätt att stöda kunskapsspridning på. Vi ger en översikt över författarverktyg för processer på marknaden med det förslaget i åtanke.
The industry faces the challenge of creating more complex, innovative solutions to a lesser cost.
For this reason, process improvement is as relevant as ever in the software industry. The question asked by software professionals is: “How do we keep our promises, while minimising our risk, increase our quality and productivity?” Traditional software process improvement (SPI) approaches such as CMMI and SPICE focus on the quality and risk aspect of the improvement process, while more light-weight methods such as agile and lean focus on keeping promises and increasing productivity by reducing waste.
The research presented in this dissertation was performed with that specific goal in mind: improving cost efficiency in the way of working while at the same time not compromising quality. This challenge was attacked from three different angles: the deployment of agile methods for improving the ways of working; the usage of product metrics for quality improvement; and the collaboration on process knowledge for dissemination within a large company.
Agile methods evolved during the nineties as a reaction against the unrealistic expectations placed on software development teams by the then prevailing waterfall method for software project management. Software development is a creative process. It differs from other industries in the fact that the main investment in a software development project is in creating something for the first time. Each developer has to be an expert in her own field and spends large portions of her day creating new solutions and solving problems that she has not solved before. Despite the fact that this has been well known for decades, software development projects are still often run as if they were manufacturing lines. One purpose of the agile movement was to make visible this discrepancy between the nature of software development and the practice of how software projects are run.
Agile methods have been proven to work well in the context for which they were designed: small, collocated teams working towards a committed customer. In other contexts, and specifically in large, geographically distributed settings, the adoption of agile methods is more challenging. Our approach to this challenge has been to use piloting as a deployment method.
This has the two-fold benefit of incrementally building knowledge about the methods and their interaction with the context in question while at the same time helping to overcome resistance to change by gently introducing the cultural changes through first-hand experience.
Relevant product metrics can help any software development team improve their way of working. In the case of lean and agile teams, a good set of metrics can be crucial in making the right decisions when prioritising the work items in the backlog. Our focus has been on providing lean and agile teams with internal product metrics for decision support on refactoring. A decision to refactor may be difficult to make, especially for a lean or agile team, that is expected to justify their priorities in terms of business value.
In our work, we propose a way of measuring design quality for systems developed using the model-driven paradigm. We also construct a method for incorporating the metrics in the lean and agile way of working.
Software process dissemination is an important part of any software process improvement initiative, regardless of whether the target process is plandriven or agile. We propose that collaboration on process authoring is a good way to support dissemination and we have surveyed the process authoring tools on the market with this aspect in mind.