The role of the software architect is a frequently discussed topic and changes depending on any number of factors. Even with a large amount of existing material available (e.g. the RUP role definitions, the IASA Skills Library, etc), defining exactly what a software architect does is hard, particularly when you're trying to define a role profile for a project or recruitment. In an attempt to address this particular area, I've distilled what I think it means to be a software architect on a bespoke software development project and broken down the role into a number of broad groupings, which are the aspects of the software architect's role.
Rather than simply present a breakdown of the software architect role, I've given each aspect a brief description and listed a number of levels to reflect that the role of an architect is an evolutionary experience. For example, there's a big difference between contributing to the architecture of a software system and defining it yourself.
This additional categorisation of the aspects means that you can use the diagram in a couple of ways. The first is as a prompt when interviewing potential architect candidates so when they say "I've architected a system", you can ask them whether they contributed to or defined it, drilling into detail where necessary. The second way in which you can use this diagram is as a self-assessment. If you're an aspiring software architect, this will give you more information on what the role entails. Likewise, for more experienced architects, it will highlight areas in which you have little experience. For example, I'd say that my infrastructure selection experience is limited because of the type of environments that I work in (many banks have a central infrastructure team that take care of this stuff for you).
This is certainly a work in progress and we'll be refining this over the coming weeks, perhaps also putting some detail behind each of the major boxes. If you have any comments, find it useful, etc, please let us know.
Update: Please see What is the role of a software architect for much more information about the role.
Simon is an independent consultant specializing in software architecture, and the author of Software Architecture for Developers (a developer-friendly guide to software architecture, technical leadership and the balance with agility). He’s also the creator of the C4 software architecture model and the founder of Structurizr, which is a collection of open source and commercial tooling to help software teams visualise, document and explore their software architecture.