A dependency taxonomy for agile software development projects

Abstract

Agile software development is designed to achieve collaborative software development. A supporting pillar of collaboration is effective coordination, which is necessary to manage dependencies in projects. Understanding the dependencies arising in agile software development projects can help practitioners choose appropriate coordinative practices from the large number of practices provided by the various agile methods. To achieve this understanding, this article analyses dependencies in three typical cases of co-located agile software development and presents the dependencies as a taxonomy with decision rules for allocating dependencies into categories. Findings show that knowledge, process, and resource dependencies are present, with knowledge dependencies predominant. In addition, there are agile practices with a coordinative function that address multiple dependencies in these agile software development projects. These practices would be a good choice for coordinating a project and supporting collaboration in agile software projects.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2

References

  1. Amrit, C., & van Hillegersberg, J. (2008). Detecting coordination problems in collaborative software development environments. Information Systems Journal, 25(1), 57–70.

    Google Scholar 

  2. Aspray, W., Mayadas, F., & Vardi, M. Y. (Eds.). (2006). Globalization and offshoring of software: A report of the ACM job migration task force. http://www.acm.org/globalizationreport/pdf/fullfinal.pdf: Association for Computing Machinery.

  3. Bailey, K. D. (1994). Typologies and taxonomies: An introduction to classification techniques. Thousand Oaks: Sage.

    Google Scholar 

  4. Beck, K. (2000). Extreme Programming Explained: Embrace Change ((The XP series)). Boston: Addison-Wesley.

    Google Scholar 

  5. Boehm, B., & Turner, R. (2004). Balancing Agility and Discipline. Boston: Addison-Wesley.

    Google Scholar 

  6. Brooks, F. (1995). The mythical man month: Essays on software engineering. Reading: Addison-Wesley.

    Google Scholar 

  7. Cao, L., Mohan, K., Ramesh, B., & Sarker, S. (2013). Adapting funding processes for agile IT projects: an empirical investigation. European Journal of Information Systems, 22(1), 191–205.

    Article  Google Scholar 

  8. Cao, L., & Ramesh, B. (2008). Agile requirements engineering practices: an empirical study. IEEE Software, 60–67.

  9. Cataldo, M., Mockus, A., Roberts, J. A., & Herbsleb, J. D. (2009). Software dependencies, work dependencies, and their impact on failures. IEEE Transactions on Software Engineering, 35(6), 864–878.

    Article  Google Scholar 

  10. Chuang, S.-W., Luor, T., & Lu, H.-P. (2014). Assessment of institutions, scholars, and contributions on agile software development (2001–2012). The Journal of Systems and Software. doi:10.1016/j.jss.2014.03.006.

    Google Scholar 

  11. Cockburn, A. (2002). Agile Software Development. Boston: Addison-Wesley.

    Google Scholar 

  12. Conboy, K. (2009). Agility from first principles: reconstructing the concept of agility in information systems development. Information Systems Research, 20(3), 329–354.

    Article  Google Scholar 

  13. Conboy, K., & Fitzgerald, B. (2007). The views of experts on the current state of agile method tailoring. In T. McMaster, D. Wastell, E. Ferneley, & J. DeGross (Eds.), IFIP International Federation for Information Processing (Vol. 235, pp. 217–234). Boston: Springer.

    Google Scholar 

  14. Crowston, K. (1991). Towards a coordination cookbook: recipes for multi-agent action. Cambridge: Massachusetts Institute of Technology.

    Google Scholar 

  15. Crowston, K., & Osborn, C. S. (2003). A coordination theory approach to process description and redesign. In T. W. Malone, K. Crowston, & G. A. Herman (Eds.), Organizing Business Knowledge: The MIT Process Handbook (pp. 335–370). Cambridge: The MIT Press.

    Google Scholar 

  16. Curtis, B., Krasner, H., & Iscoe, N. (1988). A field study of the software design process for large systems. Communications of the ACM, 31(11), 1268–1287.

    Article  Google Scholar 

  17. DeMarco, T., & Lister, T. (1987). Peopleware: Productive projects and teams. New York: Dorset House.

    Google Scholar 

  18. Dingsoyr, T., Nerur, S., Balijepally, V., & Moe, N. (2012). A decade of agile methodologies: towards explaining agile software development. The Journal of Systems and Software, 85(6).

  19. Doty, D. H., & Glick, W. H. (1994). Typologies as a unique form of theory building: toward improved understanding and modeling. The Academy of Management Review, 19(2), 230–251.

    Google Scholar 

  20. Drury-Grogan, M., & O’Dwyer, O. (2013). An investigation of the decision-making process in agile teams. International Journal of Information Technology and Decision Making, 12(6), 1097–1120.

    Article  Google Scholar 

  21. Dube, L., & Pare, G. (2003). Rigor in information systems positivist case research: current practice, trends, and recommendations. MIS Quarterly, 27(4), 597–635.

    Google Scholar 

  22. Dyba, T., & Dingsoyr, T. (2008). Empirical studies of agile software development: a systematic review. Information and Software Technology, 50(9–10), 833–859.

    Article  Google Scholar 

  23. Eisenhardt, K. M. (1989). Building theories from case study research. The Academy of Management Review, 14(4), 532–550.

    Google Scholar 

  24. Espinosa, A. J., Lerch, F. J., & Kraut, R. E. (2004). Explicit versus implicit coordination mechanisms and task dependencies: One size does not fit all. In E. Salas & S. M. Fiore (Eds.), Team Cognition: Understanding the Factors that Drive Process and Performance (pp. 107–129). Washington DC: American Psychological Association.

    Google Scholar 

  25. Espinosa, A. J., Slaughter, S. A., Kraut, R. E., & Herbsleb, J. D. (2007). Team knowledge and coordination in geographically distributed software development. Journal of Management Information Systems, 24(1), 135–169.

    Article  Google Scholar 

  26. Faraj, S., & Sproull, L. (2000). Coordinating expertise in software development teams. Management Science, 46(12), 1554–1568.

    Article  Google Scholar 

  27. Fitzgerald, B., Hartnett, G., & Conboy, K. (2006). Customising agile methods to software practices at Intel Shannon. European Journal of Information Systems, 15(2), 200–213.

    Article  Google Scholar 

  28. Glass, R. L., & Vessey, I. (1995). Contemporary application domain taxonomies. IEEE Software, 12(4), 63–76.

    Article  Google Scholar 

  29. Goh, J. C., Pan, S. L., & Zuo, M. (2013). Developing the agile IS development practices in large-scale IT projects: the trust-mediated organizational controls and IT project team capabilities perspectives. Journal of the Association for Information Systems, 14(12), 722–756.

    Google Scholar 

  30. Gregor, S. (2006). The nature of theory in information systems. MIS Quarterly, 30(3), 611–642.

    Google Scholar 

  31. Grinter, R. E. (1996). Understanding dependencies: A study of the coordination challenges in software development. PhD Thesis, University of California, Irvine.

  32. Gumm, D. C. (2006). Distribution dimensions in software development projects: a taxonomy. IEEE Software, 45–51.

  33. Herbsleb, J. D. (2007). Global Software Engineering: The future of socio-technical coordination. In Proceedings of the International Conference on Software Engineering: Future of Software Engineering FOSE’07 (pp. 188–198). IEEE Xplore digitial library.

  34. Highsmith, J. (2000). Adaptive Software Development: A Collaborative Approach to Managing Complex Systems. New York: Dorset House Publishing.

    Google Scholar 

  35. Hoda, R., Noble, J., & Marshall, S. (2010). Organizing self-organizing teams. In Proceedings of the IEEE/ACM International Conference on Software Engineering, ICSE 2010, May 2–9, 2010 (pp. 285–294). New York: ACM.

    Google Scholar 

  36. Hoegl, M., Weinkauf, K., & Gemuenden, H. (2004). Interteam coordination, project commitment, and teamwork in multiteam R&D projects: a longitudinal study. Organization Science, 15(1), 38–55.

    Article  Google Scholar 

  37. Iivari, J., Hirschheim, R., & Klein, H. K. (2004). Towards a distinct body of knowledge for information systems experts: coding ISD process knowledge in two IS journals. Information Systems Journal, 14(4), 313–342.

    Article  Google Scholar 

  38. Iivari, J., & Iivari, N. (2011). The relationship between organizational culture and the deployment of agile methods. Information and Software Technology, 53(5), 509–520. doi:10.1016/j.infsof.2010.10.008.

    Article  Google Scholar 

  39. Kerzner, H. (2003). Project Management: A Systems Approach to Planning, Scheduling, and Controlling (8th ed.). Hoboken: Wiley.

    Google Scholar 

  40. Kraut, R. E., & Streeter, L. A. (1995). Coordination in software development. Communications of the ACM, 38(3), 69–81.

    Article  Google Scholar 

  41. Malone, T. W., & Crowston, K. (1994). The interdisciplinary study of coordination. ACM Computing Surveys, 26(1), 87–119.

    Article  Google Scholar 

  42. Malone, T. W., Crowston, K., & Herman, G. A. (Eds.). (2003). Organizing Business Knowledge: The MIT Process Handbook. Cambridge: The MIT Press.

    Google Scholar 

  43. Malone, T. W., Crowston, K., Lee, J., Pentland, B., Dellarocas, C., Wyner, G., et al. (1999). Tools for inventing organizations: toward a handbook of organizational processes. Management Science, 45(3), 425–443.

    Article  Google Scholar 

  44. Marks, M. A., Mathieu, J. E., & Zaccaro, S. J. (2001). A temporally based framework and taxonomy of team processes. The Academy of Management Review, 26(8), 356–376.

    Google Scholar 

  45. Martin, A., Biddle, R., & Noble, J. (2004). The XP customer role in practice: Three studies. In Agile Development Conference, 2004 (pp. 42–54). IEEE

  46. McChesney, I. R., & Gallagher, S. (2004). Communication and coordination practices in software engineering projects. Information and Software Technology, 46(7), 473–489.

    Article  Google Scholar 

  47. Meyer, B. (2014). Agile! The good, the hype and the ugly. Switzerland: Springer.

    Google Scholar 

  48. Miles, M. B., & Huberman, A. M. (1994). Qualitative Data Analysis (2nd ed.). Thousand Oaks: Sage.

    Google Scholar 

  49. Nickerson, R. C., Varshney, U., & Muntermann, J. (2012). A method for taxonomy development and its application in information systems. European Journal of Information Systems, 22(3), 336–359.

    Article  Google Scholar 

  50. Nidumolu, S. (1995). The effect of coordination and uncertainty on software project performance: residual performance risk as an intervening variable. Information Systems Research, 6(3), 191–219.

    Article  Google Scholar 

  51. Pare, G. (2004). Investigating information systems with positivist case study research. Communications of the Association for Information Systems, 13(1), 233–264.

    Google Scholar 

  52. Pressman, R. S. (2010). Software engineering: A practitioner’s approach (7th ed.). Boston: McGraw-Hill Higher Education.

    Google Scholar 

  53. Pries-Heje, L., & Pries-Heje, J. (2011). Why Scrum works. Proceedings of the Agile Conference 2011, Salt Lake City, UT (pp. 20–28). IEEE Xplore digital library.

  54. Ramesh, B., Cao, L., & Baskerville, R. (2007). Agile requirements engineering practices and challenges: an empirical study. Information Systems Journal, 20(5), 449–480. doi:10.1111/j.1365-2575.2007.00259.x.

    Article  Google Scholar 

  55. Ramesh, B., Cao, L., Mohan, K., & Xu, P. (2006). Can distributed software development be agile? Communications of the ACM, 49(10).

  56. Sabherwal, R., & Grover, V. (2010). A taxonomy of political processes in systems development. Information Systems Journal, 20(5), 419–447.

    Article  Google Scholar 

  57. Salas, E., Sims, D. E., & Burke, C. S. (2005). Is there a “big five” in teamwork? Small Group Research, 36(5), 555–599.

    Article  Google Scholar 

  58. Schnitter, J., & Mackert, O. (2011). Large-scale agile software development at SAP AG. In L. A. Maciaszek & P. Loucopoulos (Eds.), Evaluation of Novel Approaches to Software Engineering. Communications in Computer and Information Science (Vol. 230, pp. 209–220). Heidelberg Berlin: Springer.

    Google Scholar 

  59. Schwaber, K., & Beedle, M. (2002). Agile software development with Scrum ((Agile Software Development)). Upper Saddle River: Prentice Hall.

    Google Scholar 

  60. Seddon, P. B., & Scheepers, R. (2012). Towards the improved treatment of generalization of knowledge claims in IS research: drawing general conclusions from samples. European Journal of Information Systems, 21, 6–21.

  61. Sharp, H., & Robinson, H. (2010). Three ‘C’s of agile practice: collaboration, co-ordination and communication. In T. Dingsoyr, T. Dyba, & N. B. Moe (Eds.), Agile software development: current research and future directions. Heidelberg: Springer.

    Google Scholar 

  62. Spradley, J. P. (1979). The Ethnographic Interview. New York: Holt, Rinehart and Winston.

    Google Scholar 

  63. Stankovic, D., Nikolic, V., Djordjevic, M., & Cao, D.-B. (2013). A survey study of critical success factors in agile software projects in former Yugoslavia IT companies. Journal of Systems and Software, 86(6), 1663–1678.

    Article  Google Scholar 

  64. Staudenmayer, N. (1997). Interdependency: Conceptual, practical, and empirical issues. Sloan working paper 3971.

  65. Stavru, S. (2014). A critical examination of recent industrial surveys on agile method usage. The Journal of Systems and Software, 94, 87–97. doi:10.1016/j.jss.2014.03.041.

    Article  Google Scholar 

  66. Strode, D. E. (2005). The agile methods: An analytical comparison of five agile methods and an investigation of their target environment. Master’s Thesis, Massey University, Palmerston North, New Zealand.

  67. Strode, D. E. (2012). A theory of coordination in agile software development projects. PhD Thesis, School of Information Management, Victoria University of Wellington, Wellington, New Zealand.

  68. Strode, D. E. (2013). Extending the dependency taxonomy of agile software development. In P. Antunes, M. A. Gerosa, A. Sylvester, J. Vassileva, & G. de Vreede (Eds.), Proceedings of the 19th International Conference on Collaboration and Technology, CRWIG 2013, Wellington, New Zealand, 30 October to 1 November. LNCS (Vol. 8224, pp. 274–289). Berlin Heidelberg: Springer.

    Google Scholar 

  69. Strode, D. E., & Huff, S. L. (2012). A taxonomy of dependencies in agile software development. Proceedings of the 23rd Australasian Conference on Information Systems, ACIS 2012, 3–5 December, Geelong, Australia (pp. 1–10).

  70. Strode, D. E., Huff, S. L., Hope, B., & Link, S. (2012). Coordination in co-located agile software development projects. The Journal of Systems and Software, 85(6), 1222–1238. doi:10.1016/j.jss.2012.02.017.

    Article  Google Scholar 

  71. Takeuchi, H., & Nonaka, I. (1986). The new new product development game. Harvard Business Review, 64(1), 137–146.

    Google Scholar 

  72. Thomas, D. R. (2006). A general inductive approach for analyzing qualitative evaluation data. American Journal of Evaluation, 27(2), 237–246. doi:10.1177/1098214005283748.

    Article  Google Scholar 

  73. Thompson, J. D. (1967). Organization in Action. Chicago: McGraw-Hill.

    Google Scholar 

  74. VersionOne (2014). 8th Annual state of agile survey. http://www.versionone.com/pdf/2013-state-of-agile-survey.pdf. Accessed 3 March 2014.

  75. Wageman, R. (1995). Interdependence and group effectiveness. Administrative Science Quarterly, 40(1), 145–180.

    Article  Google Scholar 

  76. Wagstrom, P., & Herbsleb, J. D. (2006). Dependency forecasting in the distributed agile organization. Communications of the ACM, 49(10), 55–56. doi:10.1145/1164394.1164420.

    Article  Google Scholar 

  77. Wang, X., Conboy, K., & Cawley, O. (2012). “Leagile” software development: an experience report analysis of the application of lean approaches in agile software development. The Journal of Systems and Software, 85(6), 1287–1299.

    Article  Google Scholar 

  78. Weber, R. (2012). Evaluating and developing theories in the information systems discipline. Journal of the Association for Information Systems, 13(1), 1–30.

    Google Scholar 

  79. Williams, L. (2010). Agile software development methodologies and practices. In M. V. Zelkowitz (Ed.), Advances in Computers (Vol. 80, pp. 1–44). Amsterdam: Elsevier.

    Google Scholar 

  80. Yetton, P., Martin, A., Sharma, R., & Johnston, K. (2000). A model of information systems development project performance. Information Systems Journal, 10, 263–289.

    Article  Google Scholar 

  81. Yin, R. K. (2003). Case Study Research (Applied social research methods series 3rd ed.). Thousand Oaks: Sage.

    Google Scholar 

Download references

Acknowledgements

The author acknowledges the research participants for informing this research with their experiences and the anonymous reviewers for improving the article with their insightful advice.

Author information

Affiliations

Authors

Corresponding author

Correspondence to Diane E. Strode.

Appendix

Appendix

The interview schedule for an individual project team member.

Notes:

  • If participants choose to be interviewed in pairs or small groups that is acceptable.

  • If questions arise in this schedule that participants have addressed in previous responses then omit the question

  1. 1.

    Background questions

    • Name

    • Job title

    • Years of IT experience

    • Educational background

    • Describe your job (what is your role) and its goals

  2. 2.

    What are your main work activities (3–5) IN THIS PROJECT

    • For each activity (this will depend on specialisation/generalisation of work)

      • Main purpose of these activities – each one?

    • Depending if work is broken down into distinct activities or not…

      • How is work assigned to you?

      • How do you know when to start the work/activity?

      • Who do you work with to complete the activity [for stakeholder identification]

        • Who do you send communications to?

        • Who do you receive communications from?

      • How do you share out/or delegate the work

      • How do you decide who to share out or delegate the work to

      • What resources (things or information) do you need to complete the activity

      • What technologies do you use to help you carry out the activity? (Email, config man. tools, wiki, project database, on-line project plan, on-line specifications…)

      • What forms or documents do you need to perform the activity? Examples?

      • What is the product or partial product of the activity? (documents, information, software)

        • Who relies on the product of this activity?

      • Do any of your work products need to be integrated or fit in with other peoples work or applications?

        • Who waits for your work to be completed? Example?

    • Individual activities:

      • How do you know when the activity is complete?

      • How do others know when the activity is complete?

      • What things hinder this activity

        • What do you wait for?

        • Negotiate for?

        • Bid for?

      • What would happen if this activity was not carried out?

      • What alternative ways could the outputs or goal of this activity be achieved?

  3. 3.

    Dependency prompts:

    • Vendor [stakeholder identification]

    • Customer [stakeholder identification]

    • Other business units [stakeholder identification]

    • Lifecycle (only when multiple teams are working on same product for different platforms) – how is this managed/organised?

    • Big picture - how do you achieve an overview of how all of the parts of the system fit together?

    • Testing – test versions - how do you manage/organise this? What types of testing do you do?

    • Parallel development – when two or more people work on the same code module – how do you manage/organise this?

    • Change – when changes are made how does this impact other code modules, documentation, testing

    • Expertise – shared product knowledge

      • How do you all know what the product must do?

      • How do you know what the other people on the team are doing on a daily basis within the code?

      • How do you know what the other people on the team are doing on a daily basis within the documentation?

      • How do you know what the other people on the team are doing on a daily basis within the test bank?

      • How do you come to know what the skills and capabilities of the other team members are – how do you know who to ask about things?

    • Historical understanding – how do you find out about previous decisions made that impact

      • The code?

      • This project?

    • Integration – how do you integrate the code and other components

      • Regularly, randomly, at the end? To a schedule?

    • What is the main source of bugs in the system?

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Strode, D.E. A dependency taxonomy for agile software development projects. Inf Syst Front 18, 23–46 (2016). https://doi.org/10.1007/s10796-015-9574-1

Download citation

Keywords

  • Agile software development
  • Agile methods
  • Scrum
  • Dependency
  • Selecting agile practices
  • Coordination mechanisms