More and more often organizations tend to behave like dynamically reconfigurable networked structures that carry out their tasks by means of collaboration and teamwork. Effective teamwork is an essential part of any non-trivial engineering process, and collaborative capabilities are an essential support for these teams. Software development is no exception; it is in itself a collaborative team effort, which has its own peculiarities. Both in the context of open source software development projects and in organizations that develop corporate products, more and more developers need to communicate and liaise with colleagues in geographically distant areas about the software product that they are conceiving, designing, building, testing, debugging, deploying, and maintaining. In their work, these development teams face significant collaborative challenges motivated by barriers erected by geographic distances, time factors, number of participants, business units or differences in organizational hierarchy or culture that inhibit and constrain the natural flow of communication and collaboration. To successfully overcome these barriers, these teams need tools by means of which to communicate with each other and coordinate their work. These tools should also take into account the functional, organizational, temporal and spatial characteristics of this collaboration. Software product users are now becoming increasingly involved in this process, for which reason they should also be considered.
Key Terms in this Chapter
Open Source: This concept describes practices in production and development that promote access to the end product’s sources and allow for the concurrent use of different agendas and approaches to production. Some consider it a philosophy, and others as a pragmatic methodology. Open source has come to represent much more than software whose source code may be freely modified and redistributed with few restrictions imposed by the terms of its distribution license. Information, documentation, and other “sources” generally related to innovation and knowledge building and sharing processes, tend to fall under the open source umbrella.
Collaborative Development Environment: A virtual space wherein all the stakeholders of a project, even if separated by time or distance, may negotiate, communicate, coordinate, brainstorm, discuss, share knowledge, and liaise to carry out some task, most often to create an executable deliverable and its supporting artifacts, holistically integrating multiple collaborative tools and resources.
Groupware: Computer-based systems that support groups of people engaged in a common task (or goal) and that provide an interface to a shared environment, thanks to the enabling technologies of computer networking, software and services.
Open Source Community: A loosely organized, ad-hoc community of contributors from all over the world who share an interest in meeting a common need, ranging from minor projects to huge developments, which they carry out using a high-performance collaborative development environment, allowing the organizational scheme and processes to emerge over time. The concept represents one of the most successful examples of high-performance collaboration and community-building on the Internet.
Collaborative Tool: A software module conceived to assure that the people who design, produce, maintain, commercialize and use software are aware of and communicate about the activities of the others simply, efficiently and effectively, also encouraging creativity, driving innovation, and considering software development’s social nature.
Collaboration: Refers to the different processes wherein people, from small groups to larger collectives and societies, work together, possibly in ubiquitous environments like Internet. A number of useful and effective collaborative environments and methods have emerged from the study of such processes and their distinctive properties.
Computer-Supported Cooperative Work: A field of study addressing the way collaborative activities and their coordination can be supported by means of software and computer systems commonly referred to as groupware, as well as their psychological, social, and organizational effects.
Coordination: The management of dependencies between activities (generally representing independent subtasks as a result of the division of a cooperative task) and the support of (inter) dependencies among actors involved in carrying them out.