Traditional top-down organizational structures and linear, step-by-step development strategies were well suited to monolithic, self-contained, standalone systems. In contrast, the distributed nature of component-based systems lends itself better to a model of small, cooperative, self-empowered companies, and a more cyclical, iterative development process.
The Team Model
The team model is built around the concept of a small company of peers working in interdependent, cooperating roles. There are six specific team roles defined in the model: Product Management, Program Management, Development, Test and Quality Assurance (QA), User Education, and Logistics Planning.
For very large projects, group managers can fill the team roles, and in turn coordinate small "subteams." Subteams can be either functional teams or feature teams, and can in turn be broken down into yet smaller subteams. Each team, from the highest to the lowest level, consists of no more than five to seven team members with well-defined roles.
The Process Model
The process model is an iterative, milestone-based approach to the development process itself. The four characteristics of this milestone-driven model are: milestone-based approach, clear ownership and accountability, risk-driven scheduling, and versioned releases.
In this process model, milestones are not freeze-points, but rather points at which baseline deliverables are placed under change control. Change is tracked through a database system through which all team members are able to participate and agree to changes. Program Management coordinates changes