Jump to content

Distributed agile software development

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Gdse2020Group2 (talk | contribs) at 09:36, 12 May 2020 (Tools and techniques [Tim/Abtin]). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

This sandbox is in the article namespace. Either move this page into your userspace, or remove the {{User sandbox}} template.

Distributed Agile Software Development

Introduction [Tim] Distributed Agile Software Development is a research area which considers the effects of applying the principles of Agile software development to software development in a globally distributed development setting. The goal of applying these principles is overcoming challenges in projects which are geographically distributed.

While the principles of Agile software development already provide structures to promote better communication, not having face-to-face interaction takes away one of the core principles. This makes Distributed Agile Software Development more challenging than general Agile Software Development requiring a different focus and different techniques.

History / Research [Joas]

The increasing globalization with the aid of novel capabilities provided by the technological efficacy of the Internet has led software development companies to offshore their development efforts to more economically attractive areas. This phenomenon began in the 90s, while its strategic importance was realized in the 2000s [0]. Most initial related studies also date from around this time [1].

During this time, the Agile manifesto was released [2], which represents a departure from the more traditional waterfall approach to software development. This naturally leads to the question, "can **distributed** software development be Agile?". One of the first comprehensive reviews trying to answer this question was done in 2006 [3]. Later, in 2014, a systematic literature review (SLR) was done to identify the main problems in getting Agile to work in a distributed fashion [4]. In 2019, a similar SLR was done [5]. Moreover, a general review on the subject was done in [6].

In all, Agile distributed software development remains a highly dynamic field, research continues to be done on all of its facets, indicating that it offers unique opportunities and advantages over more traditional methods, but not without imposing its own challenges and risks.

Challenges & Risks

Distributed software development has its own inherent challenges due to spatial, temporal, and socio-cultural differences between distributed teams. Combining it with the Agile method, in turn, increases the severity of the risks involved, as both methods are in direct contrast with each other. Agile was originally intended to be used by collocated teams, as it is based on informal communication and close collaboration. Distributed development, however, requires formal communication, clear standards, guidelines, and rigid structure. [1] This section describes the risk and challenges involved in Agile distributed software engineering.

Challenges [Abtin]

Inherently Agile has a large emphasis on face to face communication as is reflected in principle number six of the agile software development manifesto. This is however not possible when working in a distributed environment. Because of this conflict, the following challenges arise[2]:

  • Documentation: where offshore organizations favor plan-driven design where detailed requirements are sent offshore to be constructed.[3] This conflicts with agile teams that give documentation a lower priority. The result of this situation is that misunderstandings are a lot more likely to arise.
  • Pair programming: where two programmers work side by side to work on a particular problem is common in Agile and it has been shown to yield better products in less time while keeping the programmers themselves content in the process [4]. Because of the distance between teams this is a lot harder to achieve.
  • Different time zones: depending on the time zone of each distributed team it obviously makes it more challenging to arrange meetings at times when both teams are available.
  • Teaching: those who enter into the field of distributed agile software development are usually already familiar with practices of agile software development in the non-distributed setting. This is because training employees who are not co-located is challenging, think of the differences in background and cultural differences.
  • Distribution of work: from all the aforementioned challenges this is the most important. We want to avoid the architecture to reflect the team’s geographical distribution by distributing the work based on the location. Because of this reason, it is better to distribute tasks relating to a single story across the whole team, thinking in terms of the stories, not the components. [5]

Risks [Joas]

A study done in 2013 has tried to consolidate the literature on risk management in distributed Agile development [1]. A more comprehensive study has tried to categorize the risk factors for distributed agile projects in [8], this was done utilizing both research literature and real-world experience from thirteen IT organizations. For the sake of brevity, the full list of forty-five risk factors, with corresponding management techniques is omitted. Instead, a brief summary of the main categories and overall management techniques is given.

Risk Categories

Software Development Life Cycle: This category comprises the risk factors related to various activities of software development like customer specification of requirements and planning, modeling, construction, and deployment of software applications [9]. Many of the risk factors in this category stem from ineffective knowledge sharing. Unclear objectives, requirements, differences in practices of standard processes or inconsistencies across designs to name a few. Many of these risks can be managed by making sure that knowledge is shared effectively. More specifically, make sure that the objective of the project is crystal clear across teams, as well as the requirements. Automate and standardize as much of the development cycle as possible, so that each team is working with the same technology stack and infrastructure. In short, ensure that everyone is on the same page.

Project Management:

Project management relates to tasks such as project planning, project organizing, project staffing, project directing, and control. This category involves risks due to interactions between development activities and managerial activities. The adoption of distributed Agile development will transform the way in which the project needs to be managed. If this is not done carefully, risks might include a lower initial velocity, teams reorganizing every sprint, or a lack of uniformity in multisite team's capabilities.

Group Awareness:

Risk factors related to a lack of group awareness are grouped in this category. Group awareness requires intensive communication, coordination, collaboration, and trust among the group members. Collocated teams achieve this awareness more easily, as it flows more naturally from being in the same physical location. To manage the risks involved with a lack of group awareness, spatially dispersed teams will have to use a more disciplined approach in communication using the latest technological tools. Practices such as co-locating initially, to set the track for the project, have proved to be effective in managing risk.

External Stakeholder Collaboration:

These factors relate to collaboration with customers, vendors, and third-party developers. Managing its risks boils down to making sure that the coordination and communication with these external actors are done efficiently and clearly.

Technology Setup:

Risk factors that arise due to inappropriate tool usage are grouped in this category. For example, a lack of communication structure can be solved by providing the teams with the means to do video conference calls. Besides that, choosing the right tools to use during a project is important. This can vary across projects, teams, and use cases, so an analysis beforehand on the tools to use is recommended.

Opportunities [Harinee]

Global Software Development (or Distribution of Development) appears to cause diminished perceivability of the agile process or status of project dependent on short ceaseless iterations that make it simpler to visualize the issues or criticalities on the initial stages of the project. Continuous integration of programming code, which is one of the focal pieces of agile methodology, additionally serves to reduce the setup of the executive issues. Utilization of agile principles appears to positively affect correspondence between groups as advancement in cycles makes it simpler for members to see the short-term objectives. Sprint reviews can be seen as a powerful method to improve external correspondence whilst they help to share data about the features and prerequisite conditions between partners or stakeholders. Agile practices also assist in building trust between various societies associated with the procedure by consistent communication and conveyance of programming deliverable. As indicated by an investigation made by Passivara, Durasiewicz also, Lassenius, the software quality, and correspondence are improved, and communication and coordinated effort are more regular comparatively as a result of the Scrum approach utilized in the undertaking. Additionally, the inspiration of colleagues was accounted for to have expanded [10]. Along these lines, enforcing agile in a distributed environment has demonstrated to be valuable for the quality of the project and its execution. Thus, these can be seen as some of the advantages achieved by combining agile in Distributed Development[11].

  • Enhanced inter and intra cultural diversity
  • Flexible working plans that encourage an expanded duty to the organization.
  • Teams can traverse time-zones, in this manner access as long as 24-hour limit.
  • Can incorporate individuals with incapacities and mobility limitations.
  • Increased levels of prosperity.
  • Reduces travel costs as it opens up the platform to communicate via video conferencing and other feasible options
  • Increased input because of the iterative idea of Agile.
  • Increases the ranges of abilities of groups by getting to a more extensive pool of worldwide HR.
  • Reduces office space and different related work things.

Iterative improvement with continuous delivery to the client is a central practice in agile software improvement, and one that legitimately identifies one of the significant difficulties of off-shore turn of events—diminished perceivability into project status. Visit conveyances permit venture administrators, clients, and clients to gauge progress of the project by the measure of working programming they have obtained.

Tools and best practices

Communication

One of the most important factors in overcoming the challenges faced with distributed agile software development is to improve communication [2]. This means minimizing the time it takes to set up and tear down a communication session and favor video conferencing over voice conferencing if it is available.

Face-to-face contact opportunities with the whole team should be encouraged in order to help build rapport. It is beneficial to do this at the start to set out a plan to which the team can adhere throughout the project. In addition, it is also beneficial in the last few iterations before the release of the final deliverable [5].

Time-zone differences

One option with regards to dealing with the problem of availability for meetings due to time zones is to appoint a representative for the team which serves as an intermediary for the two teams having formed good rapport with both. Another option is to use nested scrum with multilevel reporting and multiple daily scrum meetings [6].

A solution for having scrum meetings in teams that cope with time-zone differences is making a distinction between local team meetings and global scrum meetings [7]. Each team has a local meeting at the start of their day and a global meeting at another time of the day. This is only possible if their working days have overlapping time.

Keeping up with Agile practices

Due to the distributed nature, a team might veer off of solid established practices of Agile. Therefore there should be someone with the role of the coach that keeps the team on track. They should also take it upon themselves to think of alternatives for the distributed work environment using agile.

To keep every team member informed about the agile process, it is important to maintain documentation for the project. This improves the group collaboration in using agile in a DSD setting [6] [8] [9] [10] . For this, various tools can be used which support the team in maintaining the documentation [8].

Use of tools

Various tools and platforms can be used to improve communication in a distributed setting.

Communication

There are various tools available to support Communication in Distributed Software Development. Asynchronous tools like e-mail, synchronous tools like audio and video conferencing software and hybrid tools like instant messaging provide team members with the means to have the necessary meetings and communications. Another example is tools that support social networking to create a shared experience between team members across locations.

Project Management

To guide the project and make sure that all teams and team members have a clear vision of what work has to be done, project management platforms like issue management tools should be used.

Development tools

To provide a shared experience for every team member, every team member should have access to the same tools for their development []. Having the same software configuration management tools linked to project management tools enables developers to work at the same pace and communicate about the development in a similar way.

Knowledge management

To give every team member access to the same knowledge about the product and the development, tools like wiki or knowledge bases can be used.

References [0] Jiménez, M., Piattini, M., & Vizcaíno, A. (2009). Challenges and improvements in distributed software development: A systematic review. *Advances in Software Engineering*, *2009*. [1] Prikladnicki, R., Damian, D., & Audy, J. L. N. (2008, June). Patterns of evolution in the practice of distributed software development: quantitative results from a systematic review. In *12th International Conference on Evaluation and Assessment in Software Engineering (EASE) 12* (pp. 1-10). [2] Fowler, M., & Highsmith, J. (2001). The agile manifesto. Software Development, 9(8), 28-35. [3] Ramesh, B., Cao, L., Mohan, K., & Xu, P. (2006). Can distributed software development be agile?. Communications of the ACM, 49(10), 41-46. [4] Razavi, A. M., & Ahmad, R. (2014, September). Agile development in large and distributed environments: A systematic literature review on organizational, managerial and cultural aspects. In 2014 8th. Malaysian Software Engineering Conference (MySEC) (pp. 216-221). IEEE. [5] Ghani, I., Lim, A., Hasnain, M., Ghani, I., & Babar, M. I. (2019). Challenges in Distributed Agile Software Development Environment: A Systematic Literature Review. KSII Transactions on Internet & Information Systems, 13(9).[6] Shrivastava, S. V. (2010). Distributed agile software development: A review. *arXiv preprint arXiv:1006.1955*. [7] Shrivastava, S. V., & Rathod, U. (2014). Risks in distributed agile development: A review. *Procedia-Social and Behavioral Sciences*, *133*, 417-424. [8] Shrivastava, S. V., & Rathod, U. (2015). Categorization of risk factors for distributed agile projects. *Information and Software Technology*, *58*, 373-387. [9] Pressman, R. S. (2005). *Software engineering: a practitioner's approach*. Palgrave macmillan. [10] M.Paasivaara, S. Durasiewicz, C.Lassenius, Using Scrum in Distributed Agile Development: A Multiple Case Study, IEEE International Conference on Global Software Engineering , p.195-204, 2009 [11] JOURNAL OF COMPUTER SCIENCE AND ENGINEERING, VOLUME 1, ISSUE 1, MAY 2010 http://sites.google.com/site/jcseuk/I Distributed Agile Software Development: A Review Suprika Vasudeva Shrivastava and Hema Date

References

  1. ^ a b Shrivastava, S.V. and Rathod, U., 2014. Risks in distributed agile development: A review. Procedia-Social and Behavioral Sciences, 133, pp.417-424.
  2. ^ a b Shrivastava, S.V., 2010. Distributed agile software development: A review. arXiv preprint arXiv:1006.1955.
  3. ^ M. Fowler, ” Using an Agile Software Process with Offshore development”, http://martinfowler.com/articles/agileOffshore.html, July 2006 (Retrieved on May 11, 2020)
  4. ^ Williams, L., Kessler, R.R., Cunningham, W. and Jeffries, R., 2000. Strengthening the case for pair programming. IEEE software, 17(4), pp.19-25
  5. ^ a b Ade Miller,” Distributed Agile Development at Microsoft patterns and practices”, Microsoft patterns and practices, http://www.pnpguidance.net/Post/DistributedAgile 16 DevelopmentMicrosoftPatternsPractices, October 2008. (retrieved on May 11, 2020)
  6. ^ a b Smits, H. and Pshigoda, G., 2007, August. Implementing scrum in a distributed software development organization. In Agile 2007 (AGILE 2007) (pp. 371-375). IEEE.
  7. ^ J. Sutherland, A. Viktorov, J. Blount and N. Puntikov, "Distributed Scrum: Agile Project Management with Outsourced Development Teams," 2007 40th Annual Hawaii International Conference on System Sciences (HICSS'07), Waikoloa, HI, 2007, pp. 274a-274a, doi: 10.1109/HICSS.2007.180.
  8. ^ a b Hossain, E., Babar, M.A., Paik, H.Y. and Verner, J., 2009, December. Risk identification and mitigation processes for using scrum in global software development: A conceptual framework. In 2009 16th Asia-Pacific Software Engineering Conference (pp. 457-464). IEEE.
  9. ^ Holmström, H., Fitzgerald, B., Ågerfalk, P.J. and Conchúir, E.Ó., 2006. Agile practices reduce distance in global software development. Information systems management, 23(3), pp.7-18.
  10. ^ Berczuk, S., 2007, August. Back to basics: The role of agile principles in success with an distributed scrum team. In Agile 2007 (AGILE 2007) (pp. 382-388). IEEE.