acteristics (requirements) of the software solution, typically from the above mentioned stakeholders, while being con- strained by the limitations of the following development stakeholders. Development consists of designers who elab- orate on system requirements and produce detailed techni- cal designs to satisfy software solution, programmers use those designs to produce software that complies with their design, meanwhile testers use requirements and designs to develop, and later execute, test cases. Documenters also use requirements and design to publish user documentation. As figure 1 illustrates the model shows collaboration paths as work on the software development occurs in clus- ters of activity each centered on task types within the de- velopment. While many interactions occur throughout iter- ations within the activity (circular), equally important inter-
Figure 1. Model of collaboration in software development. Bold, dashed arrows show collaboration paths between development tasks that can be supported with our awareness approach actions occur between activities. System analysts develop requirements (“R”) then review requirements and field con- cerns about requirements from development and incorpo- rate issues raised by non-development stakeholders, such as customers, users, management or marketing. The require- ments activity is concentrated around the task of develop- ing concise, complete requirement documents. Designers take requirements and develop technical designs (“D”) then they refine their designs by raising concerns about ambigu- ous, conflicting or impossible requirements, and by fielding concerns of programmers. The design activity is concen- trated around the task of developing complete, logical de- signs for programmers. Tests also take requirements (and may also use designs) to develop test cases and test sce- narios to validate the software (“T”) then they refine their tests by raising concerns about questionable requirements and by coordinating with programmers over the execution of their testing procedures. The testing activity is concen- trated around the task of developing tests to validate that the software product works and fulfills the software require- ments. Programmers take designs and develop the code that becomes the software product (“P”) then they progressively refine their code by raising concerns about the design to de- signers. The programming activity is concentrated around the task of developing functional software that satisfies their designs. In ideal circumstances once the requirements activ- ity has concluded no further events would affect the nature of the requirements, design and test could begin, and then at the conclusion of detailed design, programming could begin and finally the software would be validated with a minimum of activity iteration.