1.7 Organizing
The project manager will need to organize the architecture design team, the development team, and all the activities associated with project management. Project management activities include the interfaces to other functions within the organization, such as marketing, quality assurance, system testing, and documentation development. The major steps involved with organizing an architecture-centric software project are summarized in Figure 1.3.
Figure 1.3 Project Organizing.
At the at the beginning of the high-level design phase, you will need to establish the architecture design team and the chief architect. The development team members will first get involved with the project during the bottom-up estimation. Ideally, the engineer who is to implement a specific component prepares the estimate for that component. Thus, the project manager needs to anticipate who the development team members will be and what their roles will be. Each team member will be given the architecture design specification and will have up to four hours to create a "paper design" and fill out a cost estimation form for each component he or she will be estimating.
The project manager will then start organizing the development team. Ideally, the architecture team members will become team leaders, and they will lead the development of each subsystem described in the architecture. Thus, the development team organization should look like the module architecture developed during high-level design.
The SDP will propose the organization, along with task assignments, schedule, and the definitions of the project team role. Most likely, at the end of the high-level design phase, you will hold a management review to determine the availability of each individual that the SDP identifies as needed to implement the product. In cases when key people are unavailable, you may need to modify the SDP or the architecture to accommodate the staffing plan.
After implementation begins, you, as project manager, will be the primary leader of the product development organization. You will need to refine the organization as the product is being developed. This may mean reassigning team members to specific tasks as they are being implemented. In general, critical tasks should be covered by the more experienced engineers. Engineers struggling with achieving their tasks may need support from a mentor or a more experienced engineer, or they may even be removed from the team if their skills or work habits are inconsistent with the needs of the project.
You will have a team of key contributors on whom you should be able to rely to implement the details of the project and make decisions. Foremost within this organization will be the chief architect, who will address many of the technical issues. Depending on the overall size of the project, you will also rely on the team leaders, who will direct the work of the engineers assigned to implement the major subsystems.