Planning Distributed Development Through Software Architecture
Planning Distributed Development Through Software Architecture
C2
Create JOY There should be a functional To have a functional system in each release, the development
using system by the end of each teams have to implement elements of the architecture that will
incremental release. fulfill functional requirements. Prioritized use cases are one
development artifact used to decide the order in which the modules have to
be implemented.
C3
Create JOY Before developing each An artifact that shows the module dependencies along with the
using bottom up module, other modules it possible timelines will be the best for this criterion. The CMU
development. depends on should already be team used a Design Structure Matrix (DSM) to create a
developed or under module dependency view of the JOY architecture. A timeline
development. view was derived from the optimized matrix.
C4
Allow teams to Save time by assigning work It is necessary to know technologies that are required to
focus on few units to teams according to implement each of the modules of the JOY system. Hence, the
technologies. their expertise. Assign architecture team created the technology view that maps each
modules to teams to minimize module to the technologies that are required in its
the number of teams that need implementation.
to learn a technology.
Table 2. Design Structure Matrix
Number of modules
this depends on
Module ID 1 3 14 4 5 6 15 9 11 16 12 7 10 13 8 2
PS 1 0
CP 3 0
CFG 14 0
VC 4 1 1
DA 5 1 1
CD 6 1 1
COV 15 1 1
AM 9 1 1 1 1 1 5
PD 11 1 1 1 3
AP 16 1 1 1 3
ARE 12 1 1 1 1 4
HED 7 1 1 2
AD 10 1 1 2
LRE 13 1 1 1 1 4
RED 8 1 1 1 3
LO 2 1 1 1 1 4
Number of dependants 6 2 1 1 10 2 1 3 2 2 1 1 1 1 0 0
Legend
there are dependencies among the modules and, if so, For more information about DSM and partition
which kind of dependency. A ”1“ in bold represents algorithms, refer to Yassine’s paper [5].
strong dependency, and a “1” in regular font represents
a weak dependency. If module A has a strong 4.2.2. Timeline View. The timeline view (Table 3) is
dependency on module B, A needs a correct derived from the dependency view. It is based solely on
implementation of module B to run correctly. the strong dependencies to determine in which period a
Each row represents all the modules required for the module can be developed. Weak dependencies were not
implementation of the module corresponding to that row. taken into consideration because development teams can
Similarly, reading down a specific column shows which create stubs to simulate functions of the required module
modules depend on, or use, the module corresponding to if it is not ready. Stubs cannot be used to replace
that column. For example, the PS module depends on no modules in strong dependencies.
other modules, but 6 modules depend on it. This view partitions the project into four time
periods. These do not necessarily have the same
The order of the modules in the DSM shows a duration. The earliest possible section indicates the
possible sequence of development. The first three period in which a module can be developed right after all
modules (PS, CP, CFG) can be developed in parallel as its required modules are ready. The latest possible
they do not depend on each other and not on modules section indicates the last period in which a module can
outside this group. Following this group, there are 11 be developed without delaying the development of its
modules (VC through LRE) which depend on the dependants, if any.
modules in the first group as well as on other modules Some modules have to be developed in the same
within this group. Some of these modules can be period for both options. The names of these modules are
developed in parallel; others have to be developed in shown in bold. For example, the VC module has to be
sequence. Finally, the last two modules (RED, LO) do developed in Period 1 regardless if the option is earliest
not have any dependants, and they can be developed in or latest possible.
parallel as they do not depend on each other.
Table 3. Timeline View
Option Period 1 Period 2 Period 3 Period 4
Earliest PS VC DA CE HED AD
Possible CP COV AM PD RED ARE
CFG AP LO LRE
Latest VC DA AM AP LO
Possible CFG CE PD LRE
CP ARE COV
AD PS
HED RED
Presentation
Presentation
Presentation
Subscribe
Manager
Adapter
High-level
Publish
Rules,
Rules,
Module
Data
Team 1 Team 2 Team 3 Team 4 Team 5 Team 6 Expected Functionality (End of Period)
1. PS (H) 3. CP (M) 4. VC (L)
Basic communication from FSS to JOY and viceversa
Period 1 14. CFG (M)
without persistence
15. COV (L)
9. AM (M) 5. DA (H)
Full communication from FSS to JOY including
Period 2
persistence
16. AP (M) 6. CE (H) 11. PD (H)
Period 3 10. AD (M) 8. RED (M) 7. HED (M) User Interface
2. LO (L)
12. ARE (L) 13. LRE (L)
Period 4 Rule Engines
Back-end Front-end
across periods. • As soon as teams are identified for the project,
4) Technologies that each team has to know to provide them with information about the technologies
implement their modules. At the bottom of the main they need to know. This will help in the productivity
grid, the technologies that each team needs to know and speed of development of the project as teams will
to implement their assigned modules are specified. become familiar with their development tools before
Teams need to know several technologies for their set the start of the project.
of assigned modules and each technology is specified • Documentation of the back-end functionality can be
in a single row below the main grid. A marked cell focused on intensively during periods 3-4 by teams 1-
that intersects the team name with a technology 3 as they will have “free time” based on the current
specifies which technology that team needs to know work distribution.
to implement their set of modules. • Teams 4-6 will have to coordinate more because they
5) System's high-level modules that each team will be work on the Presentation module and Rules module.
involved in implementing. This information is Ideally, these two modules should be implemented by
expressed horizontally above the main grid. The two teams instead of three; hence, more coordination
intersection of team name and high-level module is required and expected. The central team should
name shows which teams are involved in the facilitate the communication channel among these
implementation of the details of a high-level teams and provide the guidelines for user interface
module(s). design in order to achieve the same look and feel
6) Length of time in terms of periods that teams will throughout the system.
need to be involved in the project. This information
is expressed in the form of empty cells in the main
grid. An empty cell means that a team is not needed 5. Conclusion
during that period of development. Reading this
information vertically indicates how long a team is Software architecture by itself cannot assure the
needed for the duration of the project across the success of a distributed development project. An
periods. Reading this information horizontally gives integrated project that incorporates a project plan, a
no information as the size of modules is not development process, a product integration process, a
specified. configuration management environment, and a software
7) Time available for teams to learn technologies they architecture that all support distributed development
need to know. This information is shown in the main must be in place for the success of a distributed
grid. The existence of empty cells read vertically in a development effort.
team name column indicates that a team has no A project plan for a distributed development project
modules assigned to them in a period. Given that the needs to be structured based on the module
technologies a team needs is known, then a team can dependencies. This is a direct consequence of
use this time to learn a technology before they start dependencies present in the software architecture. A plan
work on their modules. that is based on the software architecture will be more
able to accommodate planning across teams and consider
Several important observations can be made from the integration and communication that needs to occur
work assignment view and interpreting the information between teams. The scheduling and organization of
embedded in this view. These observations are as teams and resources in the project plan can be deduced
follows: from the time line and development effort views defined
• During the first 2 periods, the system's implemented earlier in this article.
functionality will include no development of the user A distributed development environment directly
interface. Modules that constitute the back-end affects the elements and relationships defined in a
functionality will all be implemented. software architecture. During the design of the JOY
• The front-end will be developed in the last 2 periods architecture, the main elements affected by the
of development. distributability requirement were the relationships
• All teams need to learn C# and .NET Remoting. between elements of the architecture because they are
closely related to communication between the teams that
Based on these observations, we could make the implement the elements.
following suggestions: In creating a software architecture, the architect must
consider work assignment as one of the important
allocation views of the software architecture. Work
assignment will be based on (1) skill set of development [2] P. Clemens et al., Documenting Software Architecture,
teams, (2) development team availability, (3) feature list Addison Wesley, United States, February 2004.
requirements, (4) incremental delivery schedule, and (5)
[3] L. Bass et al., Software Architecture in Practice, Addison
module dependencies.
Wesley, United States, October 2004.