Professional Documents
Culture Documents
Min Chen
Master of Software Engineering
Carnegie Mellon University
Pittsburgh, PA
amchen@cmu.edu
1
traditional software approaches to encompass the concern in distributed environments. For that reason, we
challenges of outsourced software projects by reducing the should not rely on communication to achieve coordination.
need of communication.
The following are suggestions to achieve coordination
2. Less Communication but More Coordination while minimizing communication.
The lack of communication across sites makes
1) Keep planning cycles short for higher visibility. High
coordination of the distributed teams difficult. Several
visibility allows teams to solve problems before they
researchers have proposed the use of architecture, process
become critical. This is a good practice for collocated
and tools to coordinate the work of distributed teams. A
development teams but it is necessary for distributed
plan with well-defined boundaries is critical in dividing
teams because we cannot rely on communication to
work, so that it can be assigned to different teams. Also, an
achieve visibility.
architecture based on components with independent
2) Avoid dependencies among distributed teams within a
functionalities helps divide the work across sites and
cycle. In other words, avoid assigning interdependent
reduces the necessity of interaction among the teams
tasks to distributed members within a planning cycle.
[Herbsleb 1999a].
If a team cannot deliver on time, the code of all the
other teams will not work because they depend on the
Although architectures, plans and processes are very useful
code of the first team. Furthermore, if there was not a
for coordination, they need to be adapted to a distributed
clear understanding in the interfaces, the other teams
development environment.
may have to modify their code in accordance to the
actual interfaces. This rework could have been avoided
“Architectures, plans and processes are all vital
if the interdependent tasks are distributed across
coordination mechanisms in software projects. However,
different planning cycles. By the time a team’s
their effectiveness extends only as far as our ability to see
members begin to code, the modules they depend on
into the future. Handling the unanticipated both rapidly
are already available. This allows them to have a clear
and gracefully requires flexible ad hoc communication.”
understanding of the interfaces and to test their code.
[Herbsleb 1999b].
3) Keep coordination centralized. A team or a person
must be responsible for looking after the activities at
Advanced telecommunication and collaboration
the different sites. This team or person should enable
technologies help teams to communicate and collaborate.
channels of direct communication with each
However, tools do not guarantee good communication.
distributed team.
“Technology merely enhances team effectiveness when
4) Define a process for coordination. The following
team members already have established relationships and a
section of this paper has more details about defining
sense of common affinity” [Carmel 1999]. “Email was
processes.
found weak in managing ambiguous information about
requirements. Its lack of interactivity results in lowered
4. Using a Process
ability to handle ambiguity” [Damian 2003]. In spite of the
collaboration tools, distance increases the coordination and Processes are empirically understood by collocated teams
decreases communication [Carmel 1999][Herbsleb 1999b]. members. However, they must be defined clearly when
teams are distributed in order to have a good
The following sections show how software engineering understanding of the coordination. This is the reason many
approaches can be adapted for a distributed development organizations choose CMM level 5 companies to
environment. outsource the software project.
2
The following are suggestions when defining a process in Another challenge when dealing with requirements is how
a distributed development environment. to communicate them in an unambiguous way to the rest of
the teams whose members might be in other countries and
1) Define a global process to be followed by all the speak different languages.
distributed teams to allow coordination without
communication. This global process should only take The most effective way of coordination without
care of the high-level tasks, such as a global code communication is the use of shared mental models.
integration process and coding standard. Local “Shared mental models are defined as knowledge
processes define the low-level tasks. A global process structures held by members of a team that enable them to
facilitates the coordination of development by form accurate explanations and expectations for the task,
providing a shared understanding of the purpose and and, in turn, to coordinate their actions and adapt their
desired outcomes. It gives all the members of the team behavior to demands of the task and other team members”
a common direction. [Cannon-Bowers 1993]. “These models help team
2) Define the requirements for local processes. In members develop accurate explanations and expectations
addition to being geographically distributed, members about tasks and other members’ behavior” [Espinosa
of the distributed teams come from different corporate 2002].
cultures, use different tools, follow conflicting
standards, and often speak different languages. Thus, a An architecture design can be a form of shared mental
process that works for teams in one place might not model if all the team members understand it. Software
work for teams in other places. Therefore, distributed architectures describe how a system is decomposed into
teams should be allowed to have a local process that is components, how these components are interconnected,
compliant with the global process. As long as the and how they communicate and interact with each other.
teams deliver what is specified in the global process, When poorly understood, these aspects of design are major
they can do whatever works best for them locally. For sources of errors.
example, each team is allowed to have their own
configuration management process, but the team must The problem of using an architecture design to
follow the rules of the global process when integrating communicate the requirements is that there is no standard
its code with other teams. and unambiguous way to do this without writing a
document. Language issues arise regardless of the
5. Managing Requirements language the architecture document is written in.
Members of other teams might not speak the same
“Requirements engineering is a task difficult enough when
language. Furthermore, natural languages, such as English
done locally -- but it is even more difficult when cross-
and Spanish, are full of ambiguities.
functional stakeholder groups specify requirements across
cultural, language and time zone boundaries.” [Damian
Besides an architecture design, teams can use the project’s
2003].
programming language to communicate the requirements.
In fact, the programming language is the only shared
The lack of informal communication diminishes the
mental model that all the team members have. The
awareness of local work context because it causes
programming language of a particular project is well
insufficient familiarity with the activities of remote group
understood by all the distributed teams.
members and background information that make work
contexts meaningful. This leads to misinterpretation of
To use the programming language as a requirements
actions, due to stereotyping about cultures and working
definition tool, teams should write the testing code before
styles [Damian 2003]. Hence, it makes more sense to have
the functional code. This technique is called Test-Driven
a local team gather the requirements from the customer in
Development (TDD).
order to minimize the misinterpretations. Local team in
this context means a team whose members are original
TDD is also known as test-first programming or test-first
from the place where the customer is from. The advantage
development. It was introduced by Kent Beck in his
of using a local team is that the members understand the
eXtreme Programming (XP) method.
local rules, working styles, and culture. Members also
speak the same language as the customer.
TDD is one way of specifying the acceptance tests. These
tests can form an important part of the requirements
documentation because they define exactly what the
3
stakeholders expect from system; therefore, they specify Haywood, M., Working in Virtual Teams: A Tale of
[Haywood 2000]
the critical requirements. Two Projects and Many Cities. IEEE, 2000
[Dustdar 2002] Dustdar, S., and Gall, H., Process Awareness for
Distributed Software Development in Virtual Teams.
IEEE, 2002
[Espinosa 2001] Espinosa, J., Kraut, R., Lerch, J., Slaughter, S.,
Herbsleb, J., and Mockus, A., Shared Mental Models
and Coordination in Large-Scale, Distributed Software
Development. Twenty-Second International Conference
on Information Systems, 2002
[Espinosa 2002] Espinosa, J., Kraut, R., Lerch, J., Slaughter, S.,
Herbsleb, J., and Mockus, A., Shared Mental Models,
Familiarity, and Coordination: A Multi-method Study of
Distributed Software Teams. Twenty-Third
International Conference on Information Systems
[Goodman 1991] Goodman, P., and Leyden, D., Familiarity and Group
Productivity. Journal of Applied Psychology, 1991
[Grinter 1999] Grinter, R., Herbsleb, J., and Perry, D., The Geography
of Coordination: Dealing with Distance in R&D Work.
ACM, 1999