A software architect leads and coordinates technical activities and artifacts throughout the project. A software architect coordinates some of the key design decisions in terms of technologies, structure, and organization of the software system. In contrast to the other roles defined in the RUP approach, the software architect's view is one of breadth, as opposed to one of depth. A Jack-of-All-TradesHow do we characterize the ideal architect? Around 25 B.C. , the Roman architect Vitruvius wrote, "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." This is quite a challenge! In a similar fashion, a software architect must be well rounded and possess maturity, vision, and a depth of experience that allows for grasping issues quickly and making educated , critical judgments in the absence of complete information. More specifically , the software architect, or the members of the architecture team, must combine these attributes:
A Person or a Team?If the project is large enough, then several people, grouped in a software architecture team, will play this role. A project with more than 30 people all together may want to create an architecture team. If this is your case, the goal in assembling such a team is to have a good mix of talents, covering a wide spectrum of experience and sharing a common understanding of the software engineering process. The architecture team should not be a mere committee of representatives from various teams, domains, or contractors. Software architecture is a full-time function, with staff permanently dedicated to it. We often write "the software architect does...." Understand that we mean collectively the persons playing that role at a given point in time. A Vertex of CommunicationThe architect is not a lone designer, operating from a technological ivory tower, but rather plays a major communication role in the development organization. Communication Between Project Management and DevelopmentIn the movie industry, the director is responsible for the artistic content of the movie ”the direction of actors. It is very rare that the director will also play the role of the executive producer, the latter being more focused on planning, finance, budget, crews, supplies , set construction, and so on. But at the same time, these two roles need to be very closely coordinated. They need to speak to each other constantly, especially in a moving and ever-changing environment. Similarly, in a software project, the architect and the project manager will need to be in constant communication (although careful not to do each other's job). We will see later that the architect will play a major role in planning the contents of an iteration, in identifying and addressing technical risks, and in helping the project manager with strategic and tactical changes. Communication Between Internal Parties and External StakeholdersThe architect will also interface the outside world with the rest of the team ”architecture team and project team “ “on the technical matters. The Vision Document and the requirements developed by the analysts provide the major input to the architect's work, from which the architect will extract the architecturally significant requirements that will contribute to shape the system. When multiple external parties ”customers, contractors, and so on ”are involved, this aspect of the job may become quite time-consuming . Communication Between Various Development TeamsEspecially in a large organization, the architects will also play a role of communication and coordination, on the technical front, between various development teams. They will make sure that interfaces are defined and respected; they will scout for the potential for reuse; and they will participate in reviews, striving to ensure a consistent style for the development of the system, to preserve what Frederick Brooks called its "architectural integrity." Also, this role is often continuous and informal; when things get tough, the architect plays an arbiter role between teams and takes part in the decision of a Change Control Board [1] if a CCB is instituted.
|