skip to main content
10.1145/1029894.1029925acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

How a good software practice thwarts collaboration: the multiple roles of APIs in software development

Published: 31 October 2004 Publication History
  • Get Citation Alerts
  • Abstract

    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 decrease their interdependencies. This separation also decreases the dependency among software developers implementing modules, thus simplifying some aspects of collaboration. A common instantiation of this principle is in the form of application programming interfaces (APIs). We performed a qualitative study on how practitioners use APIs in their daily work. Although particularly interested in aspects of collaboration, we report all findings about their observed use. The findings include mundane observations that are predicted by theory, ways that APIs support collaborative software development. But the findings also include some surprises, ways that APIs hinder collaboration. The surprises indicate directions for further improvement of collaborative software development practices and tools.

    References

    [1]
    "Application Programming Interfaces," vol. 2004: Software Engineering Institute - Carnegie Mellon University, 2003.
    [2]
    Barthelmess, P. and Anderson, K. M., "A View of Software Development Environments Based on Activity Theory," Computer Supported Cooperative Work (CSCW) - Special Issue on Activity Theory and the Practice of Design, vol. 11, pp. 13--37, 2002.
    [3]
    Beck, K., Extreme Programming Explained: Embrace Change: Addison-Wesley, 1999.
    [4]
    Beck, K., Test-Driven Development by Example: Addison Wesley, 2003.
    [5]
    Cheng, L.-T., De Souza, C. R. B., et al., "Building Collaboration into IDEs. Edit -> Compile -> Run -> Debug ->Collaborate?," in ACM Queue, vol. 1, 2003, pp. 40--50.
    [6]
    Cheng, L.-T., Hupfer, S., et al., "Jazzing Up Eclipse with Collaborative Tools," OOPSLA Workshop on Eclipse Technology eXchange, pp. 45--49, Anaheim, CA, USA, 2003.
    [7]
    Curtis, B., Krasner, H., et al., "A field study of the software design process for large systems," Communications of the ACM, vol. 31, pp. 1268--1287, 1988.
    [8]
    de Souza, C. R. B., Redmiles, D., et al., "Management of Interdependencies in Collaborative Software Development: A Field Study," International Symposium on Empirical Software Engineering (ISESE'2003), pp. 294--303, Rome, Italy, 2003.
    [9]
    de Souza, C. R. B., Redmiles, D. F., et al., ""Breaking the Code", Moving between Private and Public Work in Collaborative Software Development," International Conference on Supporting Group Work (GROUP'2003), pp. 105--114, Sanibel Island, Florida, USA, 2003.
    [10]
    des Rivieres, J., "Eclipse APIs: Lines in the Sand," in EclipseCon, vol. 2004, 2004.
    [11]
    des Rivieres, J., "How to Use the Eclipse API," vol. 2004.
    [12]
    Dourish, P. and Bellotti, V., "Awareness and Coordination in Shared Workspaces," Conference on Computer-Supported Cooperative Work (CSCW '92), pp. 107--14, Toronto, Ontario, Canada, 1992.
    [13]
    Erickson, T. and Kellogg, W. A., "Social Translucence: An Approach to Designing Systems that Support Social Processes," Transactions on HCI, vol. 7, pp. 59--83, 2000.
    [14]
    Fowler, M., "Public versus Published Interfaces," IEEE Software, vol. 19, pp. 18--19, 2002.
    [15]
    Fuggetta, A., "Software Processes: A Roadmap," Future of Software Engineering, Limerick, Ireland, 2000.
    [16]
    Ghezzi, C., Jazayeri, M., et al., Fundamentals of Software Engineering: Prentice Hall, 1991.
    [17]
    Grinter, R., Herbsleb, J., et al., "The Geography of Coordination: Dealing with Distance in R&D Work," ACM Conference on Supporting Group Work (GROUP '99), Phoenix, AZ, 1999.
    [18]
    Grinter, R. E., "Recomposition: Putting It All Back Together Again," Conference on Computer Supported Cooperative Work (CSCW'98), pp. 393--402, Seattle, WA, USA, 1998.
    [19]
    Grinter, R. E., "System Architecture: Product Designing and Social Engineering," Work Activities Coordination and Collaboration, pp. 11--18, San Francisco, CA, USA, 1999.
    [20]
    Grinter, R. E., "Using a Configuration Management Tool to Coordinate Software Development," Conference on Organizational Computing Systems, pp. 168--177, Milpitas, CA, 1995.
    [21]
    Heath, C. and Luff, P., "Collaboration and Control: Crisis Management and Multimedia Technology in London Underground Control Rooms," Computer Supported Cooperative Work, vol. 1, pp. 69--94, 1992.
    [22]
    Hutchins, E., Cognition in the Wild. Cambridge, MA: The MIT Press, 1995.
    [23]
    Hutchins, E., "How a Cockpit Remembers its Speeds," Cognitive Science, vol. 19, pp. 265-288, 1995.
    [24]
    Jorgensen, D. L., Participant Observation: A Methodology for Human Studies. Thousand Oaks: SAGE publications, 1989.
    [25]
    Kiczales, G., "Beyond the Black Box: Open Implementation," IEEE Software, vol. 13, pp. 8--11, 1996.
    [26]
    Kiczales, G., Lamping, J., et al., "Open Implementation Design Guidelines," International Conference on Software Engineering, pp. 481--490, Boston, MA, USA, 1997.
    [27]
    Larman, G., "Protected Variation: The Importance of Being Closed," IEEE Software, vol. 18, pp. 89--91, 2001.
    [28]
    McCracken, G., The Long Interview: SAGE Publications, 1988.
    [29]
    Mockus, A. and Herbsleb, J. D., "Expertise Browser: A Quantitative Approach to Identifying Expertise," International Conference on Software Engineering, pp. 503--512, Orlando, FL, USA, 2002.
    [30]
    Mortensen, M. and Hinds, P., "Fuzzy Teams: Boundary Disagreement in Distributed and Collocated Teams," in Distributed Work: New Research on Working across Distance Using Technology, P. Hinds and S. Kiesler, Eds.: MIT Press, 2002, pp. 283--308.
    [31]
    Nutt, G. J., "The evolution toward flexible workflow systems," Distributed Systems Engineering, pp. 276--294, 1996.
    [32]
    O'Reilly, C., Morrow, P., et al., "Improving Conflict Detection in Optimistic Concurrency Control Models," 11th International Workshop on Software Configuration Management (SCM-11), Portland, Oregon, 2003 (to appear).
    [33]
    Parnas, D. L., "On the Criteria to be Used in Decomposing Systems into Modules," Communications of the ACM, vol. 15, pp. 1053--1058, 1972.
    [34]
    Rumbaugh, J., Jacobson, I., et al., The Unified Modeling Language Reference Manual. Reading, MA: Addison Wesley Longman, Inc, 1999.
    [35]
    Sarma, A., Noroozi, Z., et al., "Palantir: Raising Awareness among Configuration Management Workspaces," Twenty-fifth International Conference on Software Engineering, pp. 444--453, Portland, Oregon, 2003.
    [36]
    Strauss, A. and Corbin, J., Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory, Second. ed. Thousand Oaks: SAGE publications, 1998.
    [37]
    Teasley, S., Covi, L., et al., "How Does Radical Collocation Help a Team Succeed?," Conference on Computer Supported Cooperative Work, pp. 339--346, Philadelphia, PA, USA, 2000.

    Cited By

    View all
    • (2023)Implicit bias and negative stereotyping in global software development and why it is time to move on!Journal of Software: Evolution and Process10.1002/smr.243535:5Online publication date: 25-Apr-2023
    • (2022)API Governance: The Case of Facebook’s EvolutionSocial Media + Society10.1177/205630512210862288:2(205630512210862)Online publication date: 7-May-2022
    • (2022)Forgetting Practices in the Data SciencesProceedings of the 2022 CHI Conference on Human Factors in Computing Systems10.1145/3491102.3517644(1-19)Online publication date: 29-Apr-2022
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    SIGSOFT '04/FSE-12: Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
    October 2004
    282 pages
    ISBN:1581138555
    DOI:10.1145/1029894
    • cover image ACM SIGSOFT Software Engineering Notes
      ACM SIGSOFT Software Engineering Notes  Volume 29, Issue 6
      November 2004
      275 pages
      ISSN:0163-5948
      DOI:10.1145/1041685
      Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 31 October 2004

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. application programming interfaces
    2. empirical software engineering
    3. interfaces
    4. qualitative studies

    Qualifiers

    • Article

    Conference

    SIGSOFT04/FSE-12
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 17 of 128 submissions, 13%

    Upcoming Conference

    FSE '24

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)55
    • Downloads (Last 6 weeks)6

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Implicit bias and negative stereotyping in global software development and why it is time to move on!Journal of Software: Evolution and Process10.1002/smr.243535:5Online publication date: 25-Apr-2023
    • (2022)API Governance: The Case of Facebook’s EvolutionSocial Media + Society10.1177/205630512210862288:2(205630512210862)Online publication date: 7-May-2022
    • (2022)Forgetting Practices in the Data SciencesProceedings of the 2022 CHI Conference on Human Factors in Computing Systems10.1145/3491102.3517644(1-19)Online publication date: 29-Apr-2022
    • (2022)A3: Assisting Android API Migrations Using Code ExamplesIEEE Transactions on Software Engineering10.1109/TSE.2020.298839648:2(417-431)Online publication date: 1-Feb-2022
    • (2015)From developer networks to verified communitiesProceedings of the 37th International Conference on Software Engineering - Volume 110.5555/2818754.2818824(563-573)Online publication date: 16-May-2015
    • (2015)Why Replacing Legacy Systems Is So Hard in Global Software DevelopmentProceedings of the 18th ACM Conference on Computer Supported Cooperative Work & Social Computing10.1145/2675133.2675232(876-890)Online publication date: 28-Feb-2015
    • (2015)From Developer Networks to Verified Communities: A Fine-Grained Approach2015 IEEE/ACM 37th IEEE International Conference on Software Engineering10.1109/ICSE.2015.73(563-573)Online publication date: May-2015
    • (2014)Software modularization in global software development2014 International Conference on Data and Software Engineering (ICODSE)10.1109/ICODSE.2014.7062705(1-6)Online publication date: Nov-2014
    • (2013)Patterns of Knowledge in API Reference DocumentationIEEE Transactions on Software Engineering10.1109/TSE.2013.1239:9(1264-1282)Online publication date: 1-Sep-2013
    • (2012)A Review of Software Architecture for Collaborative Software’sAdvanced Materials Research10.4028/www.scientific.net/AMR.433-440.2372433-440(2372-2376)Online publication date: Jan-2012
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media