Skip to main content

2010 | Buch

Collaborative Software Engineering

herausgegeben von: Ivan Mistrík, John Grundy, André Hoek, Jim Whitehead

Verlag: Springer Berlin Heidelberg

insite
SUCHEN

Über dieses Buch

Collaboration among individuals – from users to developers – is central to modern software engineering. It takes many forms: joint activity to solve common problems, negotiation to resolve conflicts, creation of shared definitions, and both social and technical perspectives impacting all software development activity. The difficulties of collaboration are also well documented. The grand challenge is not only to ensure that developers in a team deliver effectively as individuals, but that the whole team delivers more than just the sum of its parts.

The editors of this book have assembled an impressive selection of authors, who have contributed to an authoritative body of work tackling a wide range of issues in the field of collaborative software engineering. The resulting volume is divided into four parts, preceded by a general editorial chapter providing a more detailed review of the domain of collaborative software engineering. Part 1 is on "Characterizing Collaborative Software Engineering", Part 2 examines various "Tools and Techniques", Part 3 addresses organizational issues, and finally Part 4 contains four examples of "Emerging Issues in Collaborative Software Engineering".

As a result, this book delivers a comprehensive state-of-the-art overview and empirical results for researchers in academia and industry in areas like software process management, empirical software engineering, and global software development. Practitioners working in this area will also appreciate the detailed descriptions and reports which can often be used as guidelines to improve their daily work.

Inhaltsverzeichnis

Frontmatter

Characterizing Collaborative Software Engineering

Frontmatter
Chapter 1. Collaborative Software Engineering: Concepts and Techniques
Abstract
Collaboration is a central activity in software engineering, as all but the most trivial projects involve multiple engineers working together. Hence, understanding software engineering collaboration is important for both engineers and researchers. This chapter presents a framework for understanding software engineering collaboration, focused on three key insights: (1) software engineering collaboration is model-based, centered on the creation and negotiation of shared meaning within the project artifacts that contain the models that describe the final working system; (2) software project management is a cross-cutting concern that creates the organizational structures under which collaboration is fostered (or dampened); and (3) global software engineering introduces many forms of distance – spatial, temporal, socio-cultural – into existing pathways of collaboration. Analysis of future trends highlight several ways engineers will be able to improve project collaboration, specifically, software development environments will shift to being totally Web-based, thereby opening the potential for social network site integration, greater participation by end-users in project development, and greater ease in global software engineering. Just as collaboration is inherent in software engineering, so are the fundamental tensions inherent in fostering collaboration; the chapter ends with these.
Jim Whitehead, Ivan Mistrík, John Grundy, André van der Hoek
Chapter 2. Global Software Engineering: A Software Process Approach
Abstract
Our research has shown that many companies are struggling with the successful implementation of global software engineering, due to temporal, cultural and geographical distance, which causes a range of factors to come into play. For example, cultural, project management and communication difficulties continually cause problems for software engineers and project managers. While the implementation of efficient software processes can be used to improve the quality of the software product, published software process models do not cater explicitly for the recent growth in global software engineering. Our thesis is that global software engineering factors should be included in software process models to ensure their continued usefulness in global organisations. Based on extensive global software engineering research, we have developed a software process, Global Teaming, which includes specific practices and sub-practices. The purpose is to ensure that requirements for successful global software engineering are stipulated so that organisations can ensure successful implementation of global software engineering.
Ita Richardson, Valentine Casey, John Burton, Fergal McCaffery
Chapter 3. Requirements-Driven Collaboration: Leveraging the Invisible Relationships between Requirements and People
Abstract
In this chapter we introduce requirements-driven collaboration, which is the collaboration of a cross-functional team of business analysts, designers, developers and testers during the development and management of requirements. We describe an approach that (1) constructs a requirement-centric social network which represents the membership and relationships among members working on a requirement and its associated downstream artifacts and (2) outlines a number of social network analysis techniques to study collaboration aspects such as communication, awareness, and the alignment of technical dependencies driven by development of requirements and social interactions. To demonstrate our approach, we discuss a case study that examines requirements-driven collaboration within an industrial, globally-distributed software team. Finally, we discuss implications regarding the use of our requirements-driven collaboration approach for research and practice.
Daniela Damian, Irwin Kwan, Sabrina Marczak
Chapter 4. Softwares Product Lines, Global Development and Ecosystems: Collaboration in Software Engineering
Abstract
Effective collaboration in software engineering is very important and yet increasingly complicated by trends that increase complexity of dependencies between software development teams and organizations. These trends include the increasing adoption of software product lines, the globalization of software engineering and the increasing use of and reliance on 3rd party developers in the context of software ecosystems. Based on action research, the paper discusses problems of in effective collaboration and success-factors of five approaches to collaboration in large-scale software engineering.
Jan Bosch, Petra M. Bosch-Sijtsema
Chapter 5. Collaboration, Communication and Co-ordination in Agile Software Development Practice
Abstract
This chapter analyses the results of a series of observational studies of agile software development teams, identifying commonalities in collaboration, co-ordination and communication activities. Pairing and customer collaboration are focussed on to illustrate the nature of collaboration and communication, as are two simple physical artefacts that emerged through analysis as being an information-rich focal point for the co-ordination of collaboration and communication activities. The analysis shows that pairing has common characteristics across all teams, while customer collaboration differs between the teams depending on the application and organisational context of development.
Hugh Robinson, Helen Sharp
Chapter 6. Applications of Ontologies in Collaborative Software Development
Abstract
Making distributed teams more efficient is one main goal of Collaborative Software Development (CSD) research. To this end, ontologies, which are models that capture a shared understanding of a specific domain, provide key benefits. Ontologies have formal, machine-interpretable semantics that allow to define semantic mappings for heterogeneous data and to infer implicit knowledge at run-time. Extending development infrastructures and software architectures with ontologies (of problem and solution domains) will address coordination and knowledge sharing challenges in activities such as documentation, requirements specification, component reuse, error handling, and test case management. The purpose of this article is to provide systematic account of how ontologies can be applied in CSD, and to describe benefits of both existing applications such as “semantic wikis” as well as visionary scenarios such as a “Software Engineering Semantic Web”.
Hans-Jörg Happel, Walid Maalej, Stefan Seedorf

Tools and Techniques

Frontmatter
Chapter 7. Towards and Beyond Being There in Collaborative Software Development
Abstract
Research has shown that the productivity of the members of a software team depends on the degree to which they are co-located. In this chapter, we present distributed tools that both (a) try to virtually support these forms of collaboration, and (b) go beyond co-located software development by automatically offering modes of collaboration not directly supported by it.
Prasun Dewan
Chapter 8. Continuous Coordination Tools and their Evaluation
Abstract
This chapter discusses a set of co-ordination tools (the Continuous Co-ordination (CC) tool suite that includes Ariadne, Workspace Activity Viewer (WAV), Lighthouse, Palantír, and YANCEES) and details of our evaluation framework for these tools. Specifically, we discuss how we assessed the usefulness and the usability of these tools within the context of a predefined evaluation framework called DESMET. For example, for visualization tools we evaluated the suitability of the level of abstraction and the mode of displaying information of each tool. Whereas for an infrastructure tool we evaluate the effort required to implement co-ordination tools based on the given tool. We conclude with pointers on factors to consider when evaluating co-ordination tools in general.
Anita Sarma, Ban Al-Ani, Erik Trainer, Roberto S. Silva Filho, Isabella A. da Silva, David Redmiles, André van der Hoek
Chapter 9. The Configuration Management Role in Collaborative Software Engineering
Abstract
This chapter discusses the impact of configuration management on collaborative software engineering, analyzing both the state-of-the-practice and the state-of-the-art. It starts with a brief introduction of the configuration management field and presents how this field has been supporting collaborative software engineering. It also analyzes the current researches on configuration management that will potentially help on establishing a better support to collaborative software engineering in the future. Finally, it presents a summary that details how each configuration management function and system relates to each collaboration aspect of software engineering.
Leonardo Gresta P. Murta, Claudia Maria L. Werner, Jacky Estublier
Chapter 10. The GRIFFIN Collaborative Virtual Community for Architectural Knowledge Management
Abstract
Modern software architecting increasingly often takes place in geographically distributed contexts involving teams of professionals and customers with different backgrounds and roles. So far, attention and effort have been mainly dedicated to individuals sharing already formalized knowledge and less to social, informal collaboration. Furthermore, in Web 2.0 contexts, little to no attention has been given to practitioners carrying out complex, collaborative, and knowledge-intensive tasks in organizational contexts.
This chapter shows how we can effectively support the combination of formal and informal collaboration and build a Virtual Community for architectural knowledge sharing. We present a set of collaboration scenarios that define a conceptual model for such a Virtual Community. A solution in this area would realize the expectations of companies involved in IT and working in distributed settings to effectively exploit their expertise, and turn their professional knowledge into a global IT portfolio.
Patricia Lago, Rik Farenhorst, Paris Avgeriou, Remco C. de Boer, Viktor Clerc, Anton Jansen, Hans van Vliet
Chapter 11. Supporting Expertise Communication in Developer-Centered Collaborative Software Development Environments
Abstract
Looking at software development as a collective knowledge activity has changed the view of the role of communication in software development from something to be eliminated to something to be nurtured. Developer-centered collaborative software development environments (CSDEs) should facilitate software development in such a way, as individual software developers collaboratively develop information artifacts through social interactions. In this chapter, we identify two distinctive types of communication in software development, coordination communication and expertise communication, and argue that different sets of design guidelines are necessary in supporting each type of communication. We then describe nine design guidelines to support expertise communication based on the theories of social capital and models of supporting collective creativity.
Kumiyo Nakakoji, Yunwen Ye, Yasuhiro Yamamoto

What we know (and do not know) about Collaborative Software Engineering

Frontmatter
Chapter 12. Distributed and Collaborative Software Analysis
Abstract
Throughout the years software engineers have come up with a myriad of specialized tools and techniques that focus on a certain type of software analysis such as source code analysis, co-change analysis or bug prediction. However, easy and straight forward synergies between these analyses and tools rarely exist because of their stand-alone nature, their platform dependence, their different input and output formats and the variety of data to analyze. As a consequence, distributed and collaborative software analysis scenarios and in particular interoperability are severely limited. We describe a distributed and collaborative software analysis platform that allows for a seamless interoperability of software analysis tools across platform, geographical and organizational boundaries. We realize software analysis tools as services that can be accessed and composed over the Internet. These distributed analysis services shall be widely accessible in our incrementally augmented Software Analysis Broker where organizations and tool providers can register and share their tools. To allow (semi-) automatic use and composition of these tools, they are classified and mapped into a software analysis taxonomy and adhere to specific meta-models and ontologies for their category of analysis.
Giacomo Ghezzi, Harald C. Gall
Chapter 13. Dynamic Analysis of Communication and Collaboration in OSS Projects
Abstract
Software repositories, such as versioning, bug reporting, and developer mailing list archives contain valuable data for analyzing the history of software projects and its dynamics. In this chapter, we focus on the analysis of the communication and collaboration in software projects and present an approach that works on software archives with social network analysis techniques. Our tool called STNA-Cockpit provides both, a meta-model to represent communication and collaboration and a graph visualization technique to interactively explore instances of the meta-model. These instances are reconstructed from CVS, Bugzilla, and mailing list data. In a case study with the Eclipse Platform Core project data we demonstrate that with STNA-Cockpit one can observe project dynamics for certain periods of time. This allows, for example, project managers to early identify communication bottlenecks, contributor and expertise networks, or to understand how newcomers can be integrated fast and efficiently into their team.
Martin Pinzger, Harald C. Gall
Chapter 14. A Comparison of Commonly Used Processes for Multi-Site Software Development
Abstract
This chapter describes some commonly used multi-site software development processes and compares them with respect to the amount of coordination that they support across locations. Specifically, two common processes, called the “Extended Workbench Model” and “System of Systems Model” will be compared based on our experience. The processes have each been experimentally applied over several years to a global development project, called the “Global Studio Project” (GSP) in which university students around the world have simulated the processes used for an industrial multi-site development project. Lessons learned will be discussed and guidance given for multi-site development projects based on our experience from experimental and real projects.
Alberto Avritzer, Daniel J. Paulish

Emerging Issues in Collaborative Software Engineering

Frontmatter
Chapter 15. Collaboration Practices and Affordances in Free/Open Source Software Development
Abstract
This chapter examines collaborative work practices, development processes, project and community dynamics, and other socio-technical relationships in free and open source software development (FOSSD). It also describes what kinds of collaboration affordances facilitate collaborative work in FOSSD projects. It reviews a set of empirical studies of FOSSD that articulate different levels of analysis. Finally, there is discussion of limitations and constraints in understanding what collaboration practices and affordances arise in FOSSD studies and how they work, and then to emerging opportunities for future FOSSD studies.
Walt Scacchi
Chapter 16. OUTSHORE Maturity Model: Assistance for Software Offshore Outsourcing Decisions
Abstract
Offshore outsourcing software development (OOSD) is increasingly being used by the Software Industry. OOSD is a specific variant of Geographically Distributed Software Development (GDSD). Compared to the traditional mode of software development (i.e., in-house) GDSD is more edgy and puts at risk the attainment of the expected results. Although the failure of an offshore outsourcing software project may be caused by a variety of factors, one major complication is geographical distance. Consequently we argue that risk avoidance in outshore software development should be undertaken well in advance of the development launch. This could be done by testing the offshore outsourcing relevance of each software project and then the offshore outsourcing company involved. With this in mind we have developed the OUTSHORE Maturity Model – OMM.
Juho Mäkiö, Stafanie Betz, Andreas Oberweis
Chapter 17. Collaborative Software Architectingcollaborative software architecting Through Knowledge Sharing
Abstract
In the field of software architecture, there has been a paradigm shift from describing the outcome of the architecting process to documenting architectural knowledge, such as design decisions and rationale. Moreover, in a global, distributed setting, software architecting is essentially a collaborative process in which sharing and reusing architectural knowledge is a crucial and indispensible part. Although the importance of architectural knowledge has been recognized for a considerable period of time, there is still no systematic process emphasizing the use of architectural knowledge in a collaborative context. In this chapter, we present a two-part solution to this problem: a collaborative architecting process based on architectural knowledge and an accompanying tool suite that demonstrates one way to support the process.
Peng Liang, Anton Jansen, Paris Avgeriou
Chapter 18. Collaborative Product Line Requirements Engineering Using Rationale
Abstract
Variability management is the central part of software product line engineering. Due to the separation of domain and application engineering, product line requirements engineering encounters several collaboration problems during variability management. These collaboration problems have an additional layer of complexity, in case, product line organizations are geographically distributed. To address the collaboration problems, we propose a new methodology called issue-based variability management, which is based on the extension of variability management using rationale management. In particular, variability meta-model is viewed as a part of rhetorical rationale model. The methodology is explained and evaluated based on a combination of orthogonal variability model (OVM) and a rationale management approach based on questions, options and criteria (QOC).
Anil K. Thurimella
Chapter 19. Collaborative Software Engineering: Challenges and Prospects
Abstract
Much work is presently ongoing in collaborative software engineering research. This work is beginning to make serious inroads into our ability to more effectively practice collaborative software engineering, with best practices, processes, tools, metrics, and other techniques becoming available for day-to-day use. However, we have not yet reached the point where the practice of collaborative software engineering is routine, without surprises, and generally as optimal as possible. This chapter summarizes the main findings of this book, draws some conclusions on these findings and looks at the prospects for software engineers in dealing with the challenges of collaborative software development. The chapter ends with prospects for collaborative software engineering.
Ivan Mistrík, John Grundy, André van der Hoek, Jim Whitehead
Backmatter
Metadaten
Titel
Collaborative Software Engineering
herausgegeben von
Ivan Mistrík
John Grundy
André Hoek
Jim Whitehead
Copyright-Jahr
2010
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-642-10294-3
Print ISBN
978-3-642-10293-6
DOI
https://doi.org/10.1007/978-3-642-10294-3