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