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.
Similar content being viewed by others
References
Amrit, C., & van Hillegersberg, J. (2008). Detecting coordination problems in collaborative software development environments. Information Systems Journal, 25(1), 57–70.
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.
Bailey, K. D. (1994). Typologies and taxonomies: An introduction to classification techniques. Thousand Oaks: Sage.
Beck, K. (2000). Extreme Programming Explained: Embrace Change ((The XP series)). Boston: Addison-Wesley.
Boehm, B., & Turner, R. (2004). Balancing Agility and Discipline. Boston: Addison-Wesley.
Brooks, F. (1995). The mythical man month: Essays on software engineering. Reading: Addison-Wesley.
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.
Cao, L., & Ramesh, B. (2008). Agile requirements engineering practices: an empirical study. IEEE Software, 60–67.
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.
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.
Cockburn, A. (2002). Agile Software Development. Boston: Addison-Wesley.
Conboy, K. (2009). Agility from first principles: reconstructing the concept of agility in information systems development. Information Systems Research, 20(3), 329–354.
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.
Crowston, K. (1991). Towards a coordination cookbook: recipes for multi-agent action. Cambridge: Massachusetts Institute of Technology.
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.
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.
DeMarco, T., & Lister, T. (1987). Peopleware: Productive projects and teams. New York: Dorset House.
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).
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.
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.
Dube, L., & Pare, G. (2003). Rigor in information systems positivist case research: current practice, trends, and recommendations. MIS Quarterly, 27(4), 597–635.
Dyba, T., & Dingsoyr, T. (2008). Empirical studies of agile software development: a systematic review. Information and Software Technology, 50(9–10), 833–859.
Eisenhardt, K. M. (1989). Building theories from case study research. The Academy of Management Review, 14(4), 532–550.
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.
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.
Faraj, S., & Sproull, L. (2000). Coordinating expertise in software development teams. Management Science, 46(12), 1554–1568.
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.
Glass, R. L., & Vessey, I. (1995). Contemporary application domain taxonomies. IEEE Software, 12(4), 63–76.
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.
Gregor, S. (2006). The nature of theory in information systems. MIS Quarterly, 30(3), 611–642.
Grinter, R. E. (1996). Understanding dependencies: A study of the coordination challenges in software development. PhD Thesis, University of California, Irvine.
Gumm, D. C. (2006). Distribution dimensions in software development projects: a taxonomy. IEEE Software, 45–51.
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.
Highsmith, J. (2000). Adaptive Software Development: A Collaborative Approach to Managing Complex Systems. New York: Dorset House Publishing.
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.
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.
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.
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.
Kerzner, H. (2003). Project Management: A Systems Approach to Planning, Scheduling, and Controlling (8th ed.). Hoboken: Wiley.
Kraut, R. E., & Streeter, L. A. (1995). Coordination in software development. Communications of the ACM, 38(3), 69–81.
Malone, T. W., & Crowston, K. (1994). The interdisciplinary study of coordination. ACM Computing Surveys, 26(1), 87–119.
Malone, T. W., Crowston, K., & Herman, G. A. (Eds.). (2003). Organizing Business Knowledge: The MIT Process Handbook. Cambridge: The MIT Press.
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.
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.
Martin, A., Biddle, R., & Noble, J. (2004). The XP customer role in practice: Three studies. In Agile Development Conference, 2004 (pp. 42–54). IEEE
McChesney, I. R., & Gallagher, S. (2004). Communication and coordination practices in software engineering projects. Information and Software Technology, 46(7), 473–489.
Meyer, B. (2014). Agile! The good, the hype and the ugly. Switzerland: Springer.
Miles, M. B., & Huberman, A. M. (1994). Qualitative Data Analysis (2nd ed.). Thousand Oaks: Sage.
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.
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.
Pare, G. (2004). Investigating information systems with positivist case study research. Communications of the Association for Information Systems, 13(1), 233–264.
Pressman, R. S. (2010). Software engineering: A practitioner’s approach (7th ed.). Boston: McGraw-Hill Higher Education.
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.
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.
Ramesh, B., Cao, L., Mohan, K., & Xu, P. (2006). Can distributed software development be agile? Communications of the ACM, 49(10).
Sabherwal, R., & Grover, V. (2010). A taxonomy of political processes in systems development. Information Systems Journal, 20(5), 419–447.
Salas, E., Sims, D. E., & Burke, C. S. (2005). Is there a “big five” in teamwork? Small Group Research, 36(5), 555–599.
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.
Schwaber, K., & Beedle, M. (2002). Agile software development with Scrum ((Agile Software Development)). Upper Saddle River: Prentice Hall.
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.
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.
Spradley, J. P. (1979). The Ethnographic Interview. New York: Holt, Rinehart and Winston.
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.
Staudenmayer, N. (1997). Interdependency: Conceptual, practical, and empirical issues. Sloan working paper 3971.
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.
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.
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.
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.
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).
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.
Takeuchi, H., & Nonaka, I. (1986). The new new product development game. Harvard Business Review, 64(1), 137–146.
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.
Thompson, J. D. (1967). Organization in Action. Chicago: McGraw-Hill.
VersionOne (2014). 8th Annual state of agile survey. http://www.versionone.com/pdf/2013-state-of-agile-survey.pdf. Accessed 3 March 2014.
Wageman, R. (1995). Interdependence and group effectiveness. Administrative Science Quarterly, 40(1), 145–180.
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.
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.
Weber, R. (2012). Evaluating and developing theories in the information systems discipline. Journal of the Association for Information Systems, 13(1), 1–30.
Williams, L. (2010). Agile software development methodologies and practices. In M. V. Zelkowitz (Ed.), Advances in Computers (Vol. 80, pp. 1–44). Amsterdam: Elsevier.
Yetton, P., Martin, A., Sharma, R., & Johnston, K. (2000). A model of information systems development project performance. Information Systems Journal, 10, 263–289.
Yin, R. K. (2003). Case Study Research (Applied social research methods series 3rd ed.). Thousand Oaks: Sage.
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
Authors and Affiliations
Corresponding author
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.
Background questions
-
Name
-
Job title
-
Years of IT experience
-
Educational background
-
Describe your job (what is your role) and its goals
-
-
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.
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
About this article
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
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10796-015-9574-1