An Empirical Study on Leanness and Flexibility in Distributed Software Development

11/03/2017
by   Mohammad Abdur Razzak, et al.
Lero
0

Nowadays, many individuals and teams involved on projects are already using agile development techniques as part of their daily work. However, we have much less experience in how to scale and manage agile practices in distributed software development. Distributed and global development- that requiring attention to many technical, organizational, and cultural issues as the teams interact to cooperatively delivery the solution. Alongside, very large team sizes, teams of teams, and more complex management structures forcing additional attention to coordination and management. At this level, there is an increasing need to standardize best practices to avoid reinvention and miscommunication across artifacts and processes. Complexity issues in enterprise software delivery can have significant impact on the adoption of agile approaches. As a consequence, agile strategies will typically need to be evaluated, tailored, and perhaps combined with traditional approaches to suit the particular context. The characteristics of software products and software development processes open up new possibilities that are different from those offered in other domains to achieve leanness and flexibility. Whilst Lean principles are universal, a further understanding of the techniques required to apply such principles from a software development angle. Thus, the aim of this research is to identify, how leanness facilitate flexibility in distributed software development to speed-up development process.

READ FULL TEXT VIEW PDF
POST COMMENT

Comments

There are no comments yet.

Authors

page 1

page 2

page 3

page 4

11/20/2019

Agile Ways of Working: A Team Maturity Perspective

With the agile approach to managing software development projects comes ...
06/20/2019

Plan-Driven approaches are alive and kicking in agile Global Software Development

Background: Agile methods are no longer restricted to small projects and...
04/30/2021

Technical debt and agile software development practices and processes: An industry practitioner survey

Context: Contemporary software development is typically conducted in dyn...
04/15/2021

A proposal to systematize introducing DevOps into the software development process

The software development industry has been evolving with new development...
04/16/2020

Organisational Structure Patterns in Agile Teams: An Industrial Empirical Study

Forming members of an organization into coherent groups or communities i...
01/12/2022

The openCARP CDE – Concept for and implementation of a sustainable collaborative development environment for research software

This work describes the setup of an advanced technical infrastructure fo...
01/29/2021

Understanding Technology Use in Global Virtual Teams: Research Methodologies and Methods

Context: The globalisation of activities associated with software develo...
This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.

I Background

I-a Global Software Development

Improved communication technologies, access to global talent, cheaper labour, proximity to new markets and legal requirements have all contributed to the growth in Global Software Development (GSD) [28]. GSD is software work undertaken in different geographical locations, across national boundaries in a coordinated fashion through synchronous and asynchronous interaction [12]. As a result, a growing numbers of software companies started to implement GSD to reduce time-to-market, increase operational efficiency, improve quality, and many more. Over the years several recommendations have been published in support of this complex development paradigm [5]. But, industrial experience shows that, GSD is reputed to suffer from communication breakdowns, low morale and delays due to teams being geographically, culturally and temporally separated [17, 3, 4, 8].

I-B Agile Methods

Traditionally GSD has followed a plan driven, structured, waterfall approach, where tasks are allocated according to where they appear in the software lifecycle[9]. It was considered that agile methods envisaged for small projects and co-located teams [13, 1] would be a poor fit for GSD because both Agile and distributed development approaches differ significantly [24]. Agile methods tend to rely on informal processes to facilitate coordination whereas distributed software development relies on formal mechanisms. There is a growing trend for companies to adopt agile methods as reported in a tertiary study of GSD [11]. Adopting Agile practices such as short iterations, frequent builds, and continuous delivery all pose challenges to configuration management and version management [19]. But, practices such as Short iterations increase transparency of Work-in-Progress (WIP) and provde a big picture project progress to stakeholders [18]. However, setting up an Agile team is usually motivated by benefits such as increased productivity, innovation, and employee satisfaction [26] but introducing an Agile method can change the culture (command and control model) in a company; so to implement the Agile practices in global software environment developers need to have more autonomy as well as decision-making power [10].

I-C Lean in Software Development

Lean was born as part of the industrial renaissance in Japanese manufacturing after the Second World War in the 1940s but the team “Lean” was first applied publicly to a production management process and then to product development at MIT during the mid-1980s; a detailed description of the story of Lean can be found in the book “The machine that changed the world” [31]. In general, Lean is a manufacturing & production practice that considers the expenditure of resources for any goal other than the creation of value for the end customers to be wasteful, and thus a target for elimination. In 2003, Poppendieck et al. [23] illustrated how many of the lean principles and practices can be used in Software Engineering context. Lean Software Development (LSD) shares principles with Agile especially people management and leadership, quality and technical excellence, and frequent and fast delivery of value to the customers [20].

The core five principles of Lean thinking according to MIT’s researchers are [30]: Value, Value Stream, Flow, Pull, and Perfection. But, it is challenging to adopt those principles in software development due to domain variability i.e; manufacture [16]. The concept of value is not straightforward in software development because it is not limited to a single time-bound effort [22]. Waste is also a controversial matter as work items in software development are much more intangible. The principles of value stream and flow are also challenged because software development is a process that bases mainly on information. Software development is an knowledge intensive job which relies on creativity, knowledge, and experience. That means, human factor is a dominant factor in software development whilst in a manufacturing environment human presence is mainly required to operate automated machines. The main goal is to implement lean manufacturing principles into a software development model is to reduce the waste in a system and produce a higher value for the final customer. Poppendieck et al. [22] mentioned, “If lean is thought of as a set of principles rather than practices, then applying lean concepts to product development and software engineering makes more sense and can lead to process and quality improvements”.

According to Poppendieck and Poppendieck [22, 23] interpretations of Lean thinking in Software Development, there are seven principles that guide Lean Software Development as follows:

  • Eliminate waste, understanding first what value is.

  • Build quality in, by testing as soon as possible, automation and refactoring.

  • Create knowledge, through rapid feedback and continuous improvement.

  • Defer commitment, by maintaining options and making irreversible decisions in the last responsible moment when most information is available.

  • Deliver fast, through small batches and limiting WIP.

  • Respect people, the people doing the work.

  • Optimise the whole, by implementing Lean across an entire value stream. Seven sources of waste in software development: partially done work, extra features, relearning, handoffs, task switching, delays and defects.

The interpretations presented above can be considered in practice as the body of knowledge of Lean Software Development.

I-D Combining Lean and Agile

Scaling Agile continues to be a challenge in software development. Lean software development is acquiring an identity of its own as a means to scale Agile. But, Wang and Conboy [29] question whether Agile and Lean are just two different names for the same thing, or whether they are actually different and, therefore, the challenges and issues faced by Agile processes could be addressed by Lean approaches. On the other hand, Petersen concluded that, both paradigms share almost same principles such as managing people, continuous attention to quality and technical excellence. However, the end-to-end focus and flow are unique to Lean. Different literatures also claimed that, empirical studies are need to identify the difference between Agile and Lean or combination of both in software development [29]. In general, the most important goals for Agile and Lean adopters are [25]:

  • To reduce development cycle times and time-to-market

  • To improve process quality

  • To remove waste and excess activities

Ii Motivation

Nowadays, many individuals and teams involved on projects are already using agile development techniques as part of their daily work. However, we have much less experience in how to scale and manage agile practices in distributed software development. According to Alan W. Brown [6], the one of the top most complex scaling agile issue is Distributed and global development– that requiring attention to many technical, organizational, and cultural issues as the teams interact to cooperatively delivery the solution. The author also mentioned, very large team sizes, teams of teams, and more complex management structures forcing additional attention to coordination and management. At this level, there is an increasing need to standardize best practices to avoid reinvention and miscommunication across artifacts and processes.

Scaling agile means moving from few agile teams to multiples or even more such as hundreds of agile development teams. Scaling Agile continues to be a challenge is software development because when more teams works together then its required strong coordination among teams as well as on the project [27, 21, 14, 1]. Scott W. Ambler [2] pointed out several factors, that needs to consider when scaling Agile such as team size, geographical distribution, entrenched culture, system complexity, legacy systems, regulatory compliance, organizational distribution, governance and enterprise focus. In general, productivity and quality are the two main concern of any organization to adopt the concept of scaling agile.

Complexity issues in enterprise software delivery can have significant impact on the adoption of Agile approaches [6]. As a consequence, Agile strategies will typically need to be evaluated, tailored, and perhaps combined with traditional approaches to suit the particular context. The characteristics of software products and software development processes open up new possibilities that are different from those offered in other domains to achieve leanness and flexibility. Whilst Lean principles are universal, a further understanding of the techniques required to apply such principles from a software development perspective. Thus, the aim of this research is to identify, how leanness111Lean Software Development facilitate flexibility222Agile Software Development in distributed software development to speed-up333Continuous delivery and time-to-market development process.

Iii Research Questions

  1. Are agile practices useful in distributed software development context? What challenges and open issues arise with their introduction?

  2. How flexibility and leanness can be combined to speed-up distributed software development?

  3. What are the variability factors in scaling Lean and Agile in distributed software development?

Iv Method

Iv-a Research Methods

This research will undertake a cycle of action research. According to Robson, the purpose of action research is to “influence or change some aspect of whatever is the focus of the research”. In action research, he researcher is actively involved in introducing the intervention and making the observations [7], in fact the researcher takes an active part in the organization (e.g. by participating in a development team affected by the intervention introduced). As pointed out by Martella et al. [15] much can be learned by continuously observing the effect of a change after inducing it. However, as the researcher is actively involved in the team work action research is an effort intensive approach from the researcher’s point of view. Action research involves close cooperation between practitioners and researchers to bring about change. The action research process can be defined as a number of learning cycles consisting of predefined stages, as presented in Fig. 1.

Fig. 1: Action Research

Within the action research a number of sub-methods will be use, namely interviews and workshops for data collection, and grounded theory as well as statistical analysis. Alongside, we will also gather data through participant observations, informal meetings, informal communications (e-mails) and documents from the organization and specific projects.

This research will comprise multiple iterations over five phases in three stages:

  • Stage 1

    • Phase 1: Identify “Open Issues” of Scaling Lean and Agile in Distributed Software Development

    • Phase 2: Identify the current “As-is” process in the industrial settings

  • Stage 2

    • Phase 3: We will develop a process implementation “Roadmap” based on the outcomes, that documents how to transition from the current “As-is” process, to the desired “To-be” process.

  • Stage 3

    • Phase 4: In this stage, we will implement “To-be” process within the industrial settings and collect the KPI’s

    • Phase 5: In this phase, we will evaluate the implementation and revise Roadmap and “To-be” models accordingly.

Research Question Research Method
What makes Lean and Agile development
practices successful in GSD? Literature Survey
How flexibility and leanness can be combined to Action Research
speed-up distributed software development?
What are the variability factors in scaling Lean Action Research
and Agile in distributed software development?
TABLE I: Research Activities

Acknowledgments I would like to thanks my supervisor Dr. John Noll, Research Fellow, Lero. This work was supported, in part, by Science Foundation Ireland grants 10/CE/I1855 and 13/RC/2094 to Lero - the Irish Software Research Centre (www.lero.ie).

References

  • [1] Pekka Abrahamsson, Kieran Conboy, and Xiaofeng Wang. “lots done, more to do”: the current state of agile systems development research. 2009.
  • [2] Scott W Ambler. Agile software development at scale. In Balancing agility and formalism in software engineering, pages 1–12. Springer, 2008.
  • [3] Sarah Beecham. Motivating software engineers working in virtual teams across the globe. In Software Project Management in a Changing World, pages 247–273. Springer, 2014.
  • [4] Sarah Beecham and John Noll. What motivates software engineers working in global software development? In Product-Focused Software Process Improvement, pages 193–209. Springer, 2015.
  • [5] Sarah Beecham, Padraig OLeary, Ita Richardson, Simon Baker, and John Noll. Who are we doing global software engineering research for? In Global Software Engineering (ICGSE), 2013 IEEE 8th International Conference on, pages 41–50. IEEE, 2013.
  • [6] Alan W Brown. A case study in agile-at-scale delivery. In Agile Processes in Software Engineering and Extreme Programming, pages 266–281. Springer, 2011.
  • [7] Robson Colin. Real world research: a resource for social scientists and practitioner-researchers. Victoria: Blackwell Publishing, 2002.
  • [8] Eoin Ó Conchúir, Pär J Ågerfalk, Helena H Olsson, and Brian Fitzgerald. Global software development: where are the benefits? Communications of the ACM, 52(8):127–131, 2009.
  • [9] Hans-Christian Estler, Martin Nordio, Carlo A Furia, Bertrand Meyer, and Johannes Schneider. Agile vs. structured distributed software development: A case study. Empirical Software Engineering, 19(5):1197–1224, 2014.
  • [10] Martin Fowler. Using an agile software process with offshore development. Capturado em http://martinfowler. com/articles/agileOffshore. html, 2006.
  • [11] Geir K Hanssen, Darja Smite, and Nils Brede Moe. Signs of agile trends in global software engineering research: A tertiary study. In Global Software Engineering Workshop (ICGSEW), 2011 Sixth IEEE International Conference on, pages 17–23. IEEE, 2011.
  • [12] James D Herbsleb and Deependra Moitra. Global software development. Software, IEEE, 18(2):16–20, 2001.
  • [13] Tuomo Kähkönen. Agile methods for large organizations-building communities of practice. In Agile Development Conference, 2004, pages 2–10. IEEE, 2004.
  • [14] Chuck Maples. Enterprise agile transformation: the two-year wall. In Agile Conference, 2009. AGILE’09., pages 90–95. IEEE, 2009.
  • [15] Ronald C Martella, J Ronald Nelson, and Nancy E Marchand-Martella. Research methods: Learning to become a critical research consumer. Allyn & Bacon, 1999.
  • [16] Jürgen Münch, Ove Armbrust, Martin Kowalczyk, and Martin Sotó. Software Process Definition and Management. Springer Science & Business Media, 2012.
  • [17] John Noll, Sarah Beecham, and Ita Richardson. Global software development and collaboration: barriers and solutions. ACM Inroads, 1(3):66–78, 2010.
  • [18] Maria Paasivaara and Casper Lassenius. Using iterative and incremental processes in global software development. In 3rd International Workshop on Global Software Development, pages 42–47, 2004.
  • [19] Maria Paasivaara and Casper Lassenius. Could global software development benefit from agile methods? In Global Software Engineering, 2006. ICGSE’06. International Conference on, pages 109–113. IEEE, 2006.
  • [20] Kai Petersen and Claes Wohlin. Measuring the flow in lean software development. Software: Practice and experience, 41(9):975–996, 2011.
  • [21] Minna Pikkarainen, Jukka Haikara, Outi Salo, Pekka Abrahamsson, and Jari Still. The impact of agile practices on communication in software development. Empirical Software Engineering, 13(3):303–337, 2008.
  • [22] Mary Poppendieck and Michael A Cusumano. Lean software development: A tutorial. Software, IEEE, 29(5):26–32, 2012.
  • [23] Mary Poppendieck and Tom Poppendieck. Lean Software Development: An Agile Toolkit: An Agile Toolkit. Addison-Wesley, 2003.
  • [24] Balasubramaniam Ramesh, Lan Cao, Kannan Mohan, and Peng Xu. Can distributed software development be agile? Communications of the ACM, 49(10):41–46, 2006.
  • [25] Pilar Rodríguez, Jouni Markkula, Markku Oivo, and Kimmo Turula. Survey on agile and lean usage in finnish software industry. In Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement, pages 139–148. ACM, 2012.
  • [26] Darja Šmite, Nils Brede Moe, and Pär J Ågerfalk. Fundamentals of agile distributed software development. In Agility Across Time and Space, pages 3–7. Springer, 2010.
  • [27] Dan Turk, Robert France, and Bernhard Rumpe. Limitations of agile software processes. arXiv preprint arXiv:1409.6600, 2014.
  • [28] Aurora Vizcaíno, Felix García, Mario Piattini, and Sarah Beecham. A validated ontology for global software development. Computer Standards & Interfaces, 46:66–78, 2016.
  • [29] Xiaofeng Wang and Kieran Conboy. Comparing apples with oranges? the perceived differences between agile and lean software development processes. 2011.
  • [30] James P Womack and Daniel T Jones. Lean thinking: Banish waste and create wealth in your organisation. Simon and Shuster, New York, NY, 397, 1996.
  • [31] James P Womack, Daniel T Jones, and Daniel Roos. Machine that changed the world. Simon and Schuster, 1990.