Weitere Artikel dieser Ausgabe durch Wischen aufrufen
The principle of information hiding has been very influential in software engineering since its inception in 1972. This principle prescribes that software modules hide implementation details from other modules in order to reduce their dependencies. This separation also decreases the dependency among software developers implementing these modules, thus simplifying the required coordination. A common instantiation of this principle widely used in the industry is in the form of application programming interfaces (APIs). While previous studies report on the general use and benefits of APIs, they have glossed over the detailed ways in which APIs facilitate the coordination of work. In order to unveil these mechanisms, we performed a qualitative study on how practitioners use APIs in their daily work. Using ethnographic data from two different software development teams, we identified three roles played by APIs in the coordination of software development projects. These roles are described using three metaphors: APIs as contracts, APIs as boundaries, and APIs as communication mechanisms. As contracts, APIs allow software developers to work in parallel and independently. As a communication mechanism, APIs facilitate communication among software developers by giving them something specific to talk about. At the same time, APIs establish the boundaries between developers, and, accordingly, what should be talked about. This paper also reports on problems the studied teams face when using APIs to coordinate their work. Based on these results, we draw theoretical implications for collaborative software engineering.
Brooks, F. P. (1974). The mythical man-month: Essays on software engineering, Addison-Wesley.
Bucciarelli, L. L. (1996). Designing engineers. Cambridge: MIT.
Buschmann, F., R. Meunier, et al. (1996). Pattern-oriented software architecture: A system of patterns. Chichester, West Sussex, UK, Wiley.
Cataldo, M., J. D. Herbsleb, et al. (2008). Socio-technical congruence: a framework for assessing the impact of technical and work dependencies on software development productivity. Proceedings of the Second ACM-IEEE international symposium on Empirical software engineering and measurement. Kaiserslautern, Germany, ACM.
Cataldo, M., P. A. Wagstrom, et al. (2006). Identification of coordination requirements: implications for the design of collaboration and awareness tools. 20th Conference on Computer Supported Cooperative Work. Banff, Alberta, Canada, ACM Press.
Cheng, L.-T., De Souza, C. R. B., et al. (2003a). Building collaboration into IDEs. Edit ->Compile ->Run ->Debug ->Collaborate? ACM Queue, 1, 40–50. CrossRef
Cheng, L.-T., S. Hupfer, et al. (2003b). Jazz: a collaborative application development environment. ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications, Anaheim, CA, USA, ACM Press.
Conway, M. E. (1968). How do committees invent? Datamation, 14(4), 28–31.
Coplien, J. O., & Harrison, N. B. (2005). Organizational patterns of agile software development. Upper Sadle River: Pearson Prentice Hall.
Curtis, B., Krasner, H., et al. (1988). A field study of the software design process for large systems. Communications of the ACM, 31(11), 1268–1287. CrossRef
de Souza, C. R. B. and D. Bentolila (2009). Automatic evaluation of API usability using complexity metrics and visualizations (to appear). New Ideas and Emerging Results — International Conference on Software Engineering. Vancouver, B.C., Canadá, IEEE Press.
de Souza, C. R. B. and D. Redmiles (2007). The awareness network: Should I display my actions to whom? And, whose actions should I monitor? European Conference on Computer-Supported Cooperative Work. Limerick, Ireland, Springer: 99–117.
de Souza, C. R. B. and D. Redmiles (2009). On the alignment of organizational and software structure. Handbook of Research on Socio-Technical Design and Social Networking Systems. B. Whitworth and A. de Moor, IGI Publications. 1: 93–103.
de Souza, C. R. B., S. Quirk, et al. (2007). Supporting collaborative software development through the visualization of socio-technical dependencies. ACM Conference on Supporting Group Work, Sanibel Island, FL, ACM Press.
de Souza, C. R. B., D. F. Redmiles, et al. (2003). "Breaking the Code", Moving between private and public work in collaborative software development. International Conference on Supporting Group Work (GROUP'2003), Sanibel Island, Florida, USA.
de Souza, C. R. B., D. Redmiles, et al. (2004a). How a good software practice thwarts collaboration-The multiple roles of APIs in software development. Foundations of Software Engineering, Newport Beach, CA, USA, ACM Press.
de Souza, C. R. B., D. Redmiles, et al. (2004b). Sometimes you need to see through walls— a field study of application programming interfaces. Conference on Computer-Supported Cooperative Work, Chicago, IL, USA, ACM Press.
des Rivieres, J. (2001, May 18, 2001). "How to Use the Eclipse API." Retrieved March 9., 2004, from http://www.eclipse.org/articles/Article-API%20use/eclipse-api-usage-rules.html.
des Rivieres, J. (2004). "Eclipse APIs: Lines in the sand." EclipseCon Retrieved March 18, 2004, from http://eclipsecon.org.
Ellis, B., J. Stylos, et al. (2007). The factory pattern in API design: A usability evaluation. Proceedings of the 29th international conference on Software Engineering, IEEE Computer Society: 302–312.
Fetterman, D. M. (1997). Ethnography step by step. Thousand Oaks: Sage Publications.
Fitzpatrick, G., Kaplan, S., et al. (2002). Supporting public availability and accessibility with Elvin: Experiences and reflections. Journal of Computer Supported Cooperative Work, 11(3–4), 299–316.
Fowler, M. (2002). Public versus published interfaces. IEEE Software, 19(2), 18–19. CrossRef
Gall, H., K. Hajek, et al. (1998). Detection of logical coupling based on product release history. Proceedings of the International Conference on Software Maintenance, IEEE Computer Society.
Gamma, E., Helm, R., et al. (1995). Design patterns: Elements of reusable object-oriented software. Addison-Wesley: Reading.
Ghezzi, C., M. Jazayeri, et al. (2003). Fundamentals of software engineering, Prentice Hall.
Grinter, R. E. (1995). Using a configuration management tool to coordinate software development. Conference on Organizational Computing Systems, Milpitas, CA.
Grinter, R. E. (1998). Recomposition: Putting it all back together again. Conference on Computer Supported Cooperative Work (CSCW'98), Seattle, WA, USA.
Grinter, R. E. (1999). System architecture: Product designing and social engineering. work activities coordination and collaboration. ACM: San Francisco.
Grinter, R. E. (2003). Recomposition: Coordinating a web of software dependencies. Journal of Computer Supported Cooperative Work, 12(3), 297–327. CrossRef
Grinter, R., J. Herbsleb, et al. (1999). The geography of coordination: Dealing with distance in R&D work. ACM Conference on Supporting Group Work (GROUP '99), Phoenix, AZ, ACM Press.
Heath, C., & Luff, P. (1992). Collaboration and control: Crisis management and multimedia technology in London underground control rooms. Journal of Computer Supported Cooperative Work, 1(1–2), 69–94. CrossRef
Heath, C., Svensson, M. S., et al. (2002). Configuring awareness. Journal of Computer Supported Cooperative Work, 11(3–4), 317–347. CrossRef
Herbsleb, J. D. and R. E. Grinter (1999). "Architectures, coordination, and distance: Conway's law and beyond." IEEE Software: 63–70.
Hutchins, E. (1995a). Cognition in the wild. Cambridge: MIT.
Hutchins, E. (1995b). How a cockpit remembers its speeds. Cognitive Science, 19, 265–288. CrossRef
Jorgensen, D. L. (1989). Participant observation: A methodology for human studies. Thousand Oaks: SAGE.
Kiczales, G. (1996). Beyond the Black Box: Open implementation. IEEE Software, 13(1), 8–11. CrossRef
Kiczales, G., J. Lamping, et al. (1997). Open implementation design guidelines. International Conference on Software Engineering, Boston, MA, USA, IEEE Press.
Larkoff, G., & Johnson, M. (1980). Metaphors we live by. Chicago: The University of Chicago.
Larman, G. (2001). Protected variation: The importance of being closed. IEEE Software, 18(3), 89–91. CrossRef
McCracken, G. (1988). The long interview. Thousand Oaks: SAGE.
McDonald, D. W. and M. S. Ackerman (1998). Just talk to me: a field study of expertise location. Conference on Computer Supported Cooperative Work (CSCW '98), Seattle, Washington.
Meyer, B. (1992). Applying "Design by Contract". IEEE Software, 25(10), 40–51.
Michi, H. (2009). API design matters. Commun. ACM, 52(5), 46–56. CrossRef
Mintzberg, H. (1979). The structuring of organizations: A synthesis of the research. Englewood Cliffs: Prentice-Hall.
Parnas, D. L. (1972). On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12), 1053–1058. CrossRef
Sarma, A., Z. Noroozi, et al. (2003). Palantír: Raising awareness among configuration management workspaces. Twenty-fifth International Conference on Software Engineering, Portland, Oregon.
Schmidt, K. (2002). The problem with 'Awareness' — introductory remarks on 'awareness in CSCW'. Journal of Computer Supported Cooperative Work, 11(3–4), 285–298. CrossRef
Schmidt, K., & Simone, C. (1996). Coordination mechanisms: Towards a conceptual foundation of CSCW systems design. Journal of Computer Supported Cooperative Work, 5(2–3), 155–200. CrossRef
Smolander, K. (2002). Four metaphors of architecture in software organizations: finding out the meaning of architecture in practice. In Proceedings of the First International Symposium in Empirical Software Engineering, Nara, Japan, IEEE Press.
Strauss, A., & Corbin, J. (1998). Basics of qualitative research: Techniques and procedures for developing grounded theory. Thousand Oaks: SAGE.
Teasley, S., L. Covi, et al. (2000). How does radical collocation help a team succeed? Conference on Computer Supported Cooperative Work, Philadelphia, PA, USA, ACM Press.
Thompson, J. D. (1967). Organizations in action: Social sciences of administrative theory. New Brunswick: Transaction Publishers.
Trainer, E., Quirk, S., et al. (2005). Bridging the gap between technical and social dependencies with Ariadne. San Diego: Eclipse Technology Exchange.
Xie, T. and J. Pei (2006). MAPO: Mining API usages from open source repositories. International Workshop on Mining Software Repositories, Shanghai, China.
- On The Roles of APIs in the Coordination of Collaborative Software Development
Cleidson R. B. de Souza
David F. Redmiles
- Springer Netherlands
Neuer Inhalt/© ITandMEDIA, Product Lifecycle Management/© Eisenhans | vege | Fotolia