A field study of the software design process for large systems
Communications of the ACM
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Designing engineers
Using a configuration management tool to coordinate software development
COCS '95 Proceedings of conference on Organizational computing systems
Coordination mechanisms: towards a conceptual foundation of CSCW systems design
Computer Supported Cooperative Work - Special issue on the design of cooperative systems
Pattern-oriented software architecture: a system of patterns
Pattern-oriented software architecture: a system of patterns
Open implementation design guidelines
ICSE '97 Proceedings of the 19th international conference on Software engineering
Just talk to me: a field study of expertise location
CSCW '98 Proceedings of the 1998 ACM conference on Computer supported cooperative work
Recomposition: putting it all back together again
CSCW '98 Proceedings of the 1998 ACM conference on Computer supported cooperative work
Systems architecture: product designing and social engineering
WACC '99 Proceedings of the international joint conference on Work activities coordination and collaboration
The geography of coordination: dealing with distance in R&D work
GROUP '99 Proceedings of the international ACM SIGGROUP conference on Supporting group work
How does radical collocation help a team succeed?
CSCW '00 Proceedings of the 2000 ACM conference on Computer supported cooperative work
On the criteria to be used in decomposing systems into modules
Communications of the ACM
The Mythical Man-Month: Essays on Softw
The Mythical Man-Month: Essays on Softw
Fundamentals of Software Engineering
Fundamentals of Software Engineering
Supporting Public Availability and Accessibility with Elvin: Experiences and Reflections
Computer Supported Cooperative Work
Computer Supported Cooperative Work
The Problem with 'Awareness': Introductory Remarks on 'Awareness in CSCW'
Computer Supported Cooperative Work
Computer
Beyond the Black Box: Open Implementation
IEEE Software
Protected Variation: The Importance of Being Closed
IEEE Software
Public versus Published Interfaces
IEEE Software
Palantír: raising awareness among configuration management workspaces
Proceedings of the 25th International Conference on Software Engineering
Detection of Logical Coupling Based on Product Release History
ICSM '98 Proceedings of the International Conference on Software Maintenance
ISESE '02 Proceedings of the 2002 International Symposium on Empirical Software Engineering
Recomposition: Coordinating a Web of SoftwareDependencies
Computer Supported Cooperative Work
Jazz: a collaborative application development environment
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
"Breaking the code", moving between private and public work in collaborative software development
GROUP '03 Proceedings of the 2003 international ACM SIGGROUP conference on Supporting group work
Building Collaboration into IDEs
Queue - Distributed Development
Organizational Patterns of Agile Software Development
Organizational Patterns of Agile Software Development
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
Sometimes you need to see through walls: a field study of application programming interfaces
CSCW '04 Proceedings of the 2004 ACM conference on Computer supported cooperative work
Bridging the gap between technical and social dependencies with Ariadne
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
MAPO: mining API usages from open source repositories
Proceedings of the 2006 international workshop on Mining software repositories
CSCW '06 Proceedings of the 2006 20th anniversary conference on Computer supported cooperative work
The Factory Pattern in API Design: A Usability Evaluation
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Proceedings of the 2007 international ACM conference on Supporting group work
Proceedings of the Second ACM-IEEE international symposium on Empirical software engineering and measurement
Communications of the ACM - Security in the Browser
Using ethnographic methods in software engineering research
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Software reuse through methodical component reuse and amethodical snippet remixing
Proceedings of the ACM 2012 conference on Computer Supported Cooperative Work
The impact of communication structure on new product development outcomes
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Characterizing key developers: a case study with apache ant
CRIWG'12 Proceedings of the 18th international conference on Collaboration and Technology
Hi-index | 0.00 |
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.