Though a lot of literature exists on coordination in
software development (Crowston, 1997; Herbsleb &
Grinter, 1999; Kraut & Streeter, 1995; Parnas,
1972), there is no place where both researchers and
practitioners can look up solutions to known
problems dealing with coordination in software
development. This study aims to provide a
framework by which we can bridge the gap in
literature, dealing with problems of Coordination in
Software Development. In this research we have
tried to convert information systems knowledge
(especially those dealing with social networks of
teams and their tasks) into organizational patterns
that can be used for solving problems related to
coordination in software development. The newly
developed organizational patterns of this study are
related to social networks and processes within
organizations.
The rest of the paper is organized as follows. Section
2 gives a brief overview of the literature on
Coordination. The pattern language is described in
section 3. In section 4 we discuss and summarize the
results of this study and mention some
recommendations for further research.
2 COORDINATION IN
SOFTWARE DEVELOPMENT
Coordination can be defined in the following ways:
“integrating or linking different parts of an
organization to achieve a collective set of tasks”
(Ven et al., 1976)
In software development, it means that different
people working on a common project agree to a
common definition of what they are building, share
information, and mesh their activities. To build
software efficiently, they must share detailed
specifications and information about the progress of
software modules. In sum, they must coordinate
their work so that it gets done and fits together, so
that it isn’t done redundantly, and so that
components of the work are handed off
expeditiously (Kraut & Streeter, 1995)
Coordination also focuses on managing
interdependencies among multiple individuals or
activities involved in the overall task (Crowston,
1997).
In their paper Kraut and Streeter (1995) mention
scale of software projects, inherent unpredictability
of software specifications and tasks as well as the
Interdependence of software components as some of
the factors that lead to the necessity of efficient co-
ordination between the different work groups
involved in the development process.
Practical experience and organizational theory
suggest that previous efforts in software engineering
have not solved the coordination problems in
software engineering. The combination of large size,
uncertainty and interdependence requires special
coordination techniques that may not be necessary in
more routine production environments (Kraut &
Streeter, 1995).
Traditionally, most project management approaches
for improving software development coordination
have emphasised on one of the following three
methods of technical innovations:
Development of new and enhanced methods and
tools (Andres & Zmud, 2001; Crowston, 1997;
Kraut & Streeter, 1995). Modularisation both
technical (Object Oriented Programming) or
managerial such as the organizational separation of
requirements, coding and testing functions, to
encapsulate the behaviour of program elements and
individual software professionals, and thereby
reduce the needs for coordination (Kraut & Streeter,
1995).
Formal procedures, both technical, such as version
control software, case tools, and specification
languages such as test plans, delivery schedules and
requirements documents to control communication
among development personnel. (Crowston, 1997;
Kraut & Streeter, 1995)
While these techniques contributed to a modest
increase in software productivity over the past
twenty years, they only partially address the problem
of coordination. (Kraut & Streeter, 1995)
A more recent approach has involved improved
project management practices applied to software
development process. These practices focus on
improving task decomposition, task assignment and
work group coordination, which are considered
important issues in the context of Coordination
(Andres & Zmud, 2001; Crowston, 1997; Kirsch,
1996). Malone and Crowston (1994) define
Coordination Mechanism as the additional activities
that the firm must perform to overcome this
coordination problem. These coordination
mechanisms may be specific to a particular setting,
such as a code management system to control
changes to software, or general, such as hierarchical
or market mechanisms to manage assignment of
activities to actors or other resources (Malone &
Crowston, 1994). In this paper we concentrate on the
aspect of coordination related to social networks
(teams) and their tasks.
A PROCESS PATTERN LANGUAGE FOR COORDINATED SOFTWARE DEVELOPMENT
299