Towards increased productivity and quality in software development using agile, lean and collaborative approaches

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 im-

[1]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[2]  Mika Mäntylä,et al.  Drivers for software refactoring decisions , 2006, ISESE '06.

[3]  Shari Lawrence Pfleeger,et al.  Software metrics (2nd ed.): a rigorous and practical approach , 1997 .

[4]  Paolo Nesi,et al.  Estimation and Prediction Metrics for Adaptive Maintenance Effort of Object-Oriented Systems , 2001, IEEE Trans. Software Eng..

[5]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[6]  Ivan Porres,et al.  Statechart features and pre-release maintenance defects , 2008, J. Vis. Lang. Comput..

[7]  R. Kaplan,et al.  The balanced scorecard--measures that drive performance. , 2015, Harvard business review.

[8]  Philippe Kruchten,et al.  The Rational Unified Process: An Introduction , 1998 .

[9]  Lionel C. Briand,et al.  A Controlled Experiment for Evaluating Quality Guidelines on the Maintainability of Object-Oriented Designs , 2001, IEEE Trans. Software Eng..

[10]  Abhaya Asthana,et al.  Quantifying software reliability and readiness , 2009, 2009 IEEE International Workshop Technical Committee on Communications Quality and Reliability.

[11]  Paul W. Oman,et al.  Using metrics to evaluate software system maintainability , 1994, Computer.

[12]  Ivan Porres,et al.  Metrics Functions for Kanban Guards , 2010, 2010 17th IEEE International Conference and Workshops on Engineering of Computer Based Systems.

[13]  Ward Cunningham,et al.  The WyCash portfolio management system , 1992, OOPSLA '92.

[14]  Reiner R. Dumke,et al.  How to Measure Agile Software Development , 2007, IWSM/Mensura.

[15]  M. Mäntylä,et al.  Subjective evaluation of software evolvability using code smells: An empirical study , 2006, Empirical Software Engineering.

[16]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..