David Arve:
Collaboration Patterns for Software Development,
summary, report, August 2010.
Abstract:
Software development is a collaborative effort, as such effective communication and coordination is essential. All the time that is spent on unnecessary communication and coordination, leaves less time for the core activities of developing and testing software.
There are two important aspects of software development. Software development produces software products. Products that have versions, variants, milestones and release schedules etc. This is all part of the high level product tactics. Software development is also about collaborative problem solving. Developers and testers work together to solve problems, this is a creative, social and dynamic activity. These two aspects of software development needs to work efficiently on their own and together.
The technical solution for coordinating the collaborative software development effort is mainly branches in version control tools. The technical nature of branches includes more or less advanced concepts from Software Configuration Management. Neither developers or management can be expected to be SCM experts. Developer and management need to translate their desired tactics and collaboration into SCM concepts they are not familiar with.
This thesis presents Collaboration Patterns that can be used to efficiently streamline high level product tactics with low level collaborative development. Collaboration Patterns provides high level concepts that are familiar to both management and developers, providing conceptual tools that does not require SCM knowledge. This thesis also presents methods for implementing Collaboration Patterns with version control tools, both traditional branching and with distributed version control. The common mental model of Collaboration Patterns bridges the gap between management, developers and SCM experts.