Skip to main content
main-content

Über dieses Buch

Rather than deciding whether or not to get involved in global sourcing, many companies are facing decisions about whether or not to apply agile methods in their distributed projects. These companies are often motivated by the opportunities to solve the coordination and communication difficulties associated with global software development. Yet while agile principles prescribe close interaction and co-location, the very nature of distributed software development does not support these prerequisites. Šmite, Moe, and Ågerfalk structured the book into five parts. In “Motivation” the editors introduce the fundamentals of agile distributed software development and explain the rationale behind the application of agile practices in globally distributed software projects. “ Transition” describes implementation strategies, adoption of particular agile practices for distributed projects, and general concepts of agility. “Management” details practical implications for project planning, time management, and customer and subcontractor interaction. “Teams” discusses agile distributed team configuration, effective communication and knowledge transfer, and allocation of roles and responsibilities. Finally, in the “Epilogue” the editors summarize all contributions and present future trends for research and practice in agile distributed development. This book is primarily targeted at researchers, lecturers, and students in empirical software engineering, and at practitioners involved in globally distributed software projects. The contributions are based on sound empirical research and identify gaps and commonalities in both the existing state of the art and state of the practice. In addition, they also offer practical advice through many hints, checklists, and experience reports. Questions answered in this book include: What should companies expect from merging agile and distributed strategies? What are the stumbling blocks that prevent companies from realizing the benefits of the agile approach in distributed environments, and how can we recognize infeasible strategies and unfavorable circumstances? What helps managers cope with the challenges of implementing agile approaches in distributed software development projects? How can distributed teams survive the decisions taken by management and become efficient through the application of agile approaches?

Inhaltsverzeichnis

Frontmatter

Motivation

Frontmatter

Chapter 1. Fundamentals of Agile Distributed Software Development

This chapter provides an introduction to the area of agile distributed software development. It proceeds as follows. We start by introducing and motivating (globally) distributed software development, and follow on with agile software development. With this foundation we discuss the concept of agile distributed development, its motivation and some of the pertinent issues involved.

Darja Šmite, Nils Brede Moe, Pär J. Ågerfalk

Transition

Frontmatter

Chapter 2. Implementing Extreme Programming in Distributed Software Project Teams: Strategies and Challenges

Agile software development methods and distributed forms of organizing teamwork are two team process innovations that are gaining prominence in today’s demanding software development environment. Individually, each of these innovations has yielded gains in the practice of software development. Agile methods have enabled software project teams to meet the challenges of an ever turbulent business environment through enhanced flexibility and responsiveness to emergent customer needs. Distributed software project teams have enabled organizations to access highly specialized expertise across geographic locations. Although much progress has been made in understanding how to more effectively manage agile development teams and how to manage distributed software development teams, managers have little guidance on how to leverage these two potent innovations in combination. In this chapter, I outline some of the strategies and challenges associated with implementing agile methods in distributed software project teams. These are discussed in the context of a study of a large-scale software project in the United States that lasted four months.

Likoebe M. Maruping

Chapter 3. Transitioning from Distributed and Traditional to Distributed and Agile: An Experience Report

Global companies that experienced extensive waterfall phased plans are trying to improve their existing processes to expedite team engagement. Agile methodologies have become an acceptable path to follow because it comprises project management as part of its practices. Agile practices have been used with the objective of simplifying project control through simple processes, easy to update documentation and higher team iteration over exhaustive documentation, focusing rather on team continuous improvement and aiming to add value to business processes. The purpose of this chapter is to describe the experience of a global multinational company on transitioning from distributed and traditional to distributed and agile. This company has development centers across North America, South America and Asia. This chapter covers challenges faced by the project teams of two pilot projects, including strengths of using agile practices in a globally distributed environment and practical recommendations for similar endeavors.

Daniel Wildt, Rafael Prikladnicki

Chapter 4. Tailoring Agility: Promiscuous Pair Story Authoring and Value Calculation

This chapter describes how a multi-national software organization created a business plan involving business units from eight countries that followed an agile way, after two previously failed attempts with traditional approaches. The case is told by the consultant who initiated implementation of agility into requirements gathering, estimation and planning processes in an international setting. The agile approach was inspired by XP, but then tailored to meet the peculiar requirements. Two innovations were critical. The first innovation was promiscuous pair story authoring, where user stories were written by two people (similarly to pair programming), and the pairing changed very often (as frequently as every 15–20 minutes) to achieve promiscuity and cater for diverse point of views. The second innovation was an economic value evaluation (and not the cost) which was attributed to stories. Continuous recalculation of the financial value of the stories allowed to assess the projects financial return. In this case implementation of agility in the international context allowed the involved team members to reach consensus and unanimity of decisions, vision and purpose.

Steve Tendon

Chapter 5. Scrum and Global Delivery: Pitfalls and Lessons Learned

Two trends are becoming widespread in software development work—agile development processes and global delivery, both promising sizable benefits in productivity, capacity and so on. Combining the two is a highly attractive possibility, even more so in fast-paced and constrained commercial software engineering projects. However, a degree of conflict exists between the assumptions underlying the two ideas, leading to pitfalls and challenges in agile/distributed projects which are new, both with respect to traditional development and agile or distributed efforts adopted separately. Succeeding in commercial agile/distributed projects implies recognizing these new challenges, proactively planning for them, and actively put in place solutions and methods to overcome them. This chapter illustrates some of the typical challenges that were met during real-world commercial projects, and how they were solved.

Cristiano Sadun

Chapter 6. Onshore and Offshore Outsourcing with Agility: Lessons Learned

This chapter reflects on case study based an agile distributed project that ran for approximately three years (from spring 2003 to spring 2006). The project involved (a) a customer organization with key personnel distributed across the US, developing an application with rapidly changing requirements; (b) onshore consultants with expertise in project management, development processes, offshoring, and relevant technologies; and (c) an external offsite development team in a CMM-5 organization in southern India. This chapter is based on surveys and discussions with multiple participants. The several years since the project was completed allow greater perspective on both the strengths and weaknesses, since the participants can reflect on the entire life of the project, and compare it to subsequent experiences. Our findings emphasize the potential for agile project management in distributed software development, and the importance of people and interactions, taking many small steps to find and correct errors, and matching the structures of the project and product to support implementation of agility.

Clifton Kussmaul

Chapter 7. Contribution of Agility to Successful Distributed Software Development

In recent times, both researchers and practitioners have touted agility as the latest innovation in distributed software development (DSD). In spite of this acknowledgement, there is little understanding and evidence surrounding the effect of agility on distributed project success. This chapter reports on a study that examines practitioner views surrounding the relative importance of different sub-types of agility to DSD project success. Preliminary results indicate that practitioners view on-time completion of DSD projects, and effective collaboration amongst stakeholders as the top two criteria of DSD project success, with lower emphasis on within-budget considerations. Among the many agility sub-types examined, people-based agility, communication-based agility, methodological agility, and time-based agility emerged as the most important for practitioners in terms of ensuring DSD project success.

Saonee Sarker, Charles L. Munson, Suprateek Sarker, Suranjan Chakraborty

Chapter 8. Preparing your Offshore Organization for Agility: Experiences in India

Two strategies that have significantly changed the way we conventionally think about managing software development and sustainment are the family of development approaches collectively referred to as agile methods, and the distribution of development efforts on a global scale. When you combine the two strategies, organizations have to address not only the technical challenges that arise from introducing new ways of working, but more importantly have to manage the ‘soft’ factors that if ignored lead to hard challenges. Using two case studies of distributed agile software development in India we illustrate the areas that organizations need to be aware of when transitioning work to India. The key issues that we emphasize are the need to recruit and retain personnel; the importance of teaching, mentoring and coaching; the need to manage customer expectations; the criticality of well-articulated senior leadership vision and commitment; and the reality of operating in a heterogeneous process environment.

Jayakanth Srinivasan

Management

Frontmatter

Chapter 9. Improving Global Development Using Agile

How Agile Processes Can Improve Productivity in Large Distributed Projects

Global development promises important productivity and capability advantages over centralized work by optimally allocating tasks according to locality, expertise or cost. All too often, global development also introduces a different set of communication and coordination challenges that can negate all the expected benefits and even cause project failures. Most common problems have to do with building trust or quick feedback loops between distributed teams, or with the integration of globally developed components. Agile processes tend to emphasize the intensity of communication, and would seem to be negatively impacted by team distribution. In our experience, these challenges can be overcome, and agile processes can address some of the pitfalls of global development more effectively than plan-driven development. This chapter discusses how to address the difficulties faced when adapting agile processes to global development and the improvements to global development that adopting agile can produce.

Alberto Avritzer, Francois Bronsard, Gilberto Matos

Chapter 10. Turning Time from Enemy into an Ally Using the Pomodoro Technique

Time is one of the most important factors dominating agile software development processes in distributed settings. Effective time management helps agile teams to plan and monitor the work to be performed, and create and maintain a fast yet sustainable pace. The Pomodoro Technique is one promising time management technique. Its application and adaptation in Sourcesense Milan Team surfaced various benefits, challenges and implications for distributed agile software development. Lessons learnt from the experiences of Sourcesense Milan Team can be useful for other distributed agile teams to turn time from enemy into an ally.

Xiaofeng Wang, Federico Gobbo, Michael Lane

Chapter 11. MBTA: Management By Timeshifting Around

How do good managers manage and coordinate? As technologies evolve the answer has also been evolving—from MBWA (Management By Wandering Around), to MBFA (Management By Flying Around), and now to MBTA (Management By Timeshifting Around). The purpose of this chapter is to surface and introduce this de-facto managerial approach.

Erran Carmel

Chapter 12. The Dilemma of High Level Planning in Distributed Agile Software Projects: An Action Research Study in a Danish Bank

The chapter reports on an action research study with the aim to design a high level planning process in distributed and co-located software projects based on agile methods. The main contributions are the insight that high level planning process is highly integrated with other project disciplines and specific steps has to be taken to apply the process in distributed projects; and the action research approach is indeed suitable to software process improvements.

Per Svejvig, Ann-Dorte Fladkjær Nielsen

Chapter 13. Tools for Supporting Distributed Agile Project Planning

Agile project planning plays an important part in agile software development. In distributed settings, project planning is severely impacted by the lack of face-to-face communication and the inability to share paper index cards amongst all meeting participants. To address these issues, several distributed agile planning tools were developed. The tools vary in features, functions and running platforms. In this chapter, we first summarize the requirements for distributed agile planning. Then we give an overview on existing agile planning tools. We also evaluate existing tools based on tool requirements. Finally, we present some practical advices for both designers and users of distributed agile planning tools.

Xin Wang, Frank Maurer, Robert Morgan, Josyleuda Oliveira

Chapter 14. Combining Agile and Traditional: Customer Communication in Distributed Environment

Distributed development is a radically increasing phenomenon in modern software development environments. At the same time, traditional and agile methodologies and combinations of those are being used in the industry. Agile approaches place a large emphasis on customer communication. However, existing knowledge on customer communication in distributed agile development seems to be lacking. In order to shed light on this topic and provide practical guidelines for companies in distributed agile environments, a qualitative case study was conducted in a large globally distributed software company. The key finding was that it might be difficult for an agile organization to get relevant information from a traditional type of customer organization, even though the customer communication was indicated to be active and utilized via multiple different communication media. Several challenges discussed in this paper referred to “information blackout” indicating the importance of an environment fostering meaningful communication. In order to evaluate if this environment can be created a set of guidelines is proposed.

Mikko Korkala, Minna Pikkarainen, Kieran Conboy

Chapter 15. Coordination Between Global Agile Teams: From Process to Architecture

Traditional process-centric software development has served software-intensive companies well for decades. During recent years, however, the trends of increased adoption of software product lines, software ecosystems and in particular global software engineering have lead to unmanageable complexity and unacceptable overhead. In this paper we present research performed at three global companies in which we studied the relation between large-scale and agile approaches to software development as well as current problems. In addition, by integrating the best practices adopted at the case study companies, we present an alternative approach: architecture-centric software engineering. This approach largely removes inter-team dependencies and provides much higher efficiency and productivity in global software development contexts.

Jan Bosch, Petra Bosch-Sijtsema

Chapter 16. Considering Subcontractors in Distributed Scrum Teams

In this chapter we present our experiences with working with subcontractors in distributed Scrum teams. The context of our experiences is a medium size software service provider company. We present the way the subcontractors are selected and how Scrum practices can be used in real-life projects. We discuss team arrangements and tools used in distributed development teams highlighting aspects that are important when working with subcontractors. We also present an illustrative example where different phases of a project working with subcontractors are described. The example also provides practical tips on work in such projects. Finally, we present a summary of our data that was collected from Scrum and non-Scrum projects implemented over a few years. This chapter should provide a practical point of view on working with subcontractors in Scrum teams for those who are considering such cooperation.

Jakub Rudzki, Imed Hammouda, Tuomas Mikkola, Karri Mustonen, Tarja Systä

Teams

Frontmatter

Chapter 17. Using Scrum Practices in GSD Projects

In this chapter we present advice for applying Scrum practices to globally distributed software development projects. The chapter is based on a multiple-case study of four distributed Scrum projects. We discuss the use of distributed daily Scrums, Scrum-of-Scrums, Sprints, Sprint planning meetings, Sprint Demos, Retrospective meetings, and Backlogs. Moreover, we present lessons that distributed Scrum projects can benefit from non-agile globally distributed software development projects: frequent visits and multiple communication modes.

Maria Paasivaara, Casper Lassenius

Chapter 18. Feature Teams—Distributed and Dispersed

Teams have to be enabled for delivering business value to customers. Organizing project members in feature teams provides the basis for doing so. Some (large) global projects are organized in distributed feature teams, where each feature team is co-located at one site and some in dispersed feature teams, where feature team members reside at different sites. Besides focusing on delivering business value projects have to ensure conceptual integrity of the system. While feature teams deliver the business value, a technical service team ensures conceptual integrity (e.g. adherence to the same look-and-feel) across the whole system.

Jutta Eckstein

Chapter 19. Roles and Responsibilities in Feature Teams

Agile development requires self-organizing teams. The set-up of a (feature) team has to enable self-organization. Special care has to be taken if the project is not only distributed, but also large and more than one feature team is involved. Every feature team needs in such a setting a product owner who ensures the continuous focus on business delivery. The product owners collaborate by working together in a virtual team. Each feature team is supported by a coach who ensures not only the agile process of the individual feature team but also across all feature teams. An architect (or if necessary a team of architects) takes care that the system is technically sound. Contrariwise to small co-located projects, large global projects require a project manager who deals with—among other things—internal and especially external politics.

Jutta Eckstein

Chapter 20. Getting Communication Right: The Difference Between Distributed Bliss or Miss

Communication is challenging in any IT project. In distributed projects distance, timezones and cultures are thrown into the mix making it even more challenging. By focusing on getting communication to work within these constraints as opposed to ignoring them, we have seen great results among those who have taken a pragmatic yet rigorous approach to making communication work—even in distributed projects. Although a significant additional cost of distributing the effort is still there—the cost can be managed and the disadvantage of distributing a project can be reduced by applying some best practices that are emerging.

Jan-Erik Sandberg, Lars Arne Skaar

Chapter 21. A Task-Driven Approach on Agile Knowledge Transfer

Constant and unimpeded communication is an essential ingredient when it comes to successful software development projects. While manageable if the team is within shouting distance, it poses a considerable challenge in global software development (GSD) projects. In this chapter we explore how a lightweight knowledge transfer process can be established between distributed development teams. The leitmotif of the transfer process is a hands-on approach that values actual cooperation on tasks over lecturing the learning team. It introduces a set of practices that take tasks as a central means to both drive the knowledge transfer and to integrate it with the ongoing development process. The practical relevance of the described practices was successfully experienced in a case study.

Jörn Koch, Joachim Sauer

Chapter 22. Architecture-Centric Development in Globally Distributed Projects

In this chapter architecture-centric development is proposed as a means to strengthen the cohesion of distributed teams and to tackle challenges due to geographical and temporal distances and the clash of different cultures. A shared software architecture serves as blueprint for all activities in the development process and ties them together. Architecture-centric development thus provides a plan for task allocation, facilitates the cooperation of globally distributed developers, and enables continuous integration reaching across distributed teams. Advice is also provided for software architects who work with distributed teams in an agile manner.

Joachim Sauer

Epilogue

Frontmatter

Chapter 23. Agility Across Time and Space: Summing up and Planning for the Future

In this epilogue chapter the authors revisit the book content and identify the emerging trends in understanding the application of agility across time and space. This book concludes with the findings from an expert survey that put summarize the most important practical advice and the major areas of improvement and future work.

Darja Šmite, Nils Brede Moe, Pär J. Ågerfalk

Backmatter

Weitere Informationen

Premium Partner

Neuer Inhalt

BranchenIndex Online

Die B2B-Firmensuche für Industrie und Wirtschaft: Kostenfrei in Firmenprofilen nach Lieferanten, Herstellern, Dienstleistern und Händlern recherchieren.

Whitepaper

- ANZEIGE -

Product Lifecycle Management im Konzernumfeld – Herausforderungen, Lösungsansätze und Handlungsempfehlungen

Für produzierende Unternehmen hat sich Product Lifecycle Management in den letzten Jahrzehnten in wachsendem Maße zu einem strategisch wichtigen Ansatz entwickelt. Forciert durch steigende Effektivitäts- und Effizienzanforderungen stellen viele Unternehmen ihre Product Lifecycle Management-Prozesse und -Informationssysteme auf den Prüfstand. Der vorliegende Beitrag beschreibt entlang eines etablierten Analyseframeworks Herausforderungen und Lösungsansätze im Product Lifecycle Management im Konzernumfeld.
Jetzt gratis downloaden!

Bildnachweise