clerk: produces the project legacy. Records all team meetings, decisions, problems, and reports weekly on team progress (every TUESDAY). Responsible for the Project Schedule, and change procedures (will submit the enhancement schedule). Each team member keeps a log of effort expended and accomplishments that the clerk will use to quantify the resources consumed by the project.
software architect: produces the software design specification document. Responsible for breaking the software into modules and determining the global variables and parameters. Documents the interface between modules. [Chief debugger].
test planner: produces the quality assurance plan. Responsible for publishing coding standards, QA practices, and for developing test data for integration and final testing. [Specifier of the practices which the team will follow and the functionality which should be the result of the efforts.]
documenter: produces user and systems documentation. Responsible for file descriptions and data dictionary. [Repository of information about how the system works, educator of new users, maintainers.]
code librarian/QA officer: : maintains module library, performs integration testing [keeper of the product and its status, NOT responsible for correcting errors, but for identifying and clarifying them.]. Responsible for system configuration control and demonstrations. Webmaster for team website. Also inspects code and documents produced by the team to verify standards and procedures are met as specified in the QA plan Shares with code librarian responsibility for reporting on implementation of test plan and documenting defects in the product.
interface designer: designs the screens and on-line help system. Responsible for the funcdtional specification and user-friendliness of the system. [Concerned with decisions about screen format and wording. error detection and recovery. Architect specifies how the function will be produced, interface designer specifies the form, programmer implements]. Leads in documenting the Functional Specifications.
None of these roles have to do with management of the team (leadership can be provided from any role), nor do they inhibit programming (all team members will be responsible for coding one or more modules). Everyone is responsible for knowing what the goals are, what the problems are, and what decisions need to be made. Everyone is responsible for quality and meeting deadlines. The duties of all the roles will be shared to different degrees with other team members in order that milestones can be met.