Software Architect
- Software Architect
- the role that is played when a
person produces a
software architecture for a
system or
application
As illustrated in the preceding figure, Software Architect is part of the following inheritance hierarchy.
The typical role-specific responsibilities of a Software Architect are to:
- Evaluate the requirements.
- Prioritize the requirements based on optimized
implementation order given the system and software architecture.
- Help produce the system architecture (primarily the software components)
- Produce, document, maintain, and enforce the software architecture:
- Identify and prioritize the architecturally significant requirements.
- Determine the major software patterns and mechanisms.
- Identify the major software subcomponents of the software architecture.
- Ensure that these software components and mechanisms meet their associated requirements.
- Make the strategic architectural decisions that constrain the design and implementation.
- Document the architecture in the associated software architecture document.
- Enforce the integrity of the software architecture by collaborating with and mentoring the development staff.
- Evaluate the implementation of the software
architecture.
Software Architect typically inherits the
general role responsibilities from the
Role method component.
To fulfill these responsibilities, a Software Architect typically should have the following
personal characteristics,
expertise,
training, and
experience:
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).
A Software Architect typically performs the following role-specific tasks
in an iterative, incremental, parallel, and time-boxed manner:
Software Architect typically inherits
common role tasks from the
Role method component.
A Software Architect typically performs these tasks as a member of the following teams:
As a member of these teams, a Software Architect typically produces all or part of the following work products:
- 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.
- This role typically inherits the
common team guidelines from the
Role method component.