At the place where I work, I've recently described the role of Software Architect. It is a project-role, so only exists in the context of a project, and usually only in the first weeks of a project.<p>We describe it as follows (feedback is very welcome):<p># What is expected of a Software Architect?<p>* Makes high-level technical design choices.<p>* Records those choices, and the supporting arguments, in a deliverable.<p>* Ensures feasibility of the technical approach (and informs the PM).<p>* Identifies risky aspects of the project (and informs the PM).<p>* Dictates technical standards (e.g.: coding standards, tools, frameworks, platforms).<p>* Provides the team with a "standard way" to develop the software.<p>* Ensures compatibility with Hoppinger's technical road map.<p>* Aligns all his decisions with the resource constraints of the project.<p>* Recognizes "reuse" opportunities (either existing software that can be incorporated, or spin-off contributed/reused).<p>* Observes and understands the broader system environment (of the customer).<p>* Creates architectural overview diagrams and/or descriptions when needed.<p>* Knows which applications are used in the organization.<p>* If possible: subdivide a complex application, during the design phase, into smaller, more manageable pieces.<p>* Understand the functions of each component within the application, and the interactions and dependencies between components.<p>* Communicate the technical design, "architecture", to developers.<p>* When needed also provides hardware requirements (or several options), considering the needs and abilities of the customer.