Roles & Responsibilities: Designer Architect Analyst Implementer

Worker: Designer

The designer defines the responsibilities, operations, attributes, and relationships of one or several classes and determines how they should be adjusted to the implementation environment. In addition, the designer may have responsibility for one or more design packages or design subsystems, including any classes owned by the packages or subsystems.

Staffing

The designer must have a solid working knowledge of the following:

  • Use-case modeling techniques.
  • The requirements of the system.
  • Software design techniques, including:
    • Object-oriented analysis and design techniques.
    • The Unified Modeling Language.
  • The technologies with which the system will be implemented.

In addition, the designer must:

  • Understand the architecture of the system, as represented in the Artifact: Software Architecture Document.
  • Understand the role of testing in the system.
  • Have a working knowledge of configuration management principles in general, and the Artifact: CM Plan in specific.

Worker: Architect

The Architect leads and coordinates technical activities and artifacts throughout the project. The Architect establishes the overall structure for each architectural view: the decomposition of the view, the grouping of elements, and the interfaces between these major groupings. Thus, in contrast with the other workers, the Architect's view is one of breadth, as opposed to depth.

Staffing

"The ideal architect should be a person of letters, a mathematician, familiar with historical studies, a diligent student of philosophy, acquainted with music, not ignorant of medicine, learned in the responses of jurisconsults, familiar with astronomy and astronomical calculations." --- Vitruvius, circa 25 BC

In short, the architect must be well-rounded, posses maturity, vision, and a depth of experience that allows them to grasp issues quickly and make educated, critical judgements in the absence of complete information. More specifically, the architect (or members of the architecture team) must combine the skills of:

From an expertise stand-point, the Architect must encompass all the capabilities of the Worker: Designer.

Teams. If the project is large enough to warrant an architecture team, the goal should be to have a good mix of talents, covering a wide spectrum of experience and sharing a common understanding of software engineering process. The architecture team should not be a committee of representatives from various teams, domains or contractors. Software architecture is a full-time function, with staff permanently dedicated to it.


Worker: System Analyst

The system analyst leads and coordinates requirements elicitation and use-case modeling, by outlining the system's functionality and delimiting the system. For example, establishing what actors and use cases exist and how they interact.

Staffing

A person acting as system analyst should be a good facilitator and have good communication skills. Knowledge of the business and technology domains is essential to have amongst those acting in this role, but not necessary for everyone.



Worker: Implementer

An implementer is responsible for developing and testing components, in accordance with the project’s adopted standards, for integration into larger subsystems. When test components such as drivers or stubs must be created to support testing, the implementer is also responsible for developing and testing the test components and corresponding subsystems.

Staffing

The appropriate skills and knowledge for the implementer include:

  • Knowledge of the system or application-under-test
  • Familiarity with testing and test automation tools
  • Programming skills

It is recommended that the implementer responsible for an implementation subsystem should also be responsible for its contained components.

Copyright  © 1987 - 2000 Rational Software Corporation