A Software Architect should typically have the following expertise:
Be an abstract thinker (a “big-picture” person), who can work at high-levels of abstraction.
Strong in strategic and analytical thinking.
Able to see and understand:
The context of the software architecture.
The big picture without being caught up in diversionary details.
Beyond the obvious.
Patterns or connections between situations that are not obviously related.
Key or underlying issues in complex situations.
Be able to manage and (re)prioritize the multiple
concurrent issues, ambiguities, and contradictions that occur
during the development of the software architecture.
Be an excellent communicator who can explain and document
the software architecture.
Be able to understand both the application domain and the
major technologies used to implement the software
architecture.
Know the major reusable software mechanisms and
patterns.
Have significant previous architecting, design, and
implementation experience in similar endeavors.
A bachelor’s degree or better in software
engineering, computer science, or the equivalent.
Industry certification as software architect (e.g., Sun
Certified Enterprise Architect for Java 2 Platform).
The same person may play both the systems architect and
software architect roles, especially if the systems engineer
was originally a software architect prior to learning about hardware and data engineering.