What are the Software Architecture Roles?

Briqi
14 min readAug 5, 2022

--

Software architecture is a main stage in SDLC for the initial design phase and for each iteration (as a design quality gate). It is important to utilize the different architecture roles in the way adding value to the organization business, and that won’t be achieved without understanding the architect roles.

Actually, no one can build software products and services without architecture role or skill, believe it or not.

This article is part of the Intuitive Architecture series:

  • Intuitive Software Architecture: The Roadmap
  • Software Architecture Roles
  • Intuitive Software Architecture: The Mindset
  • Intuitive Software Architecture: The Dimensions
  • Intuitive Software Architecture: The Content
  • Architecture Agility
  • Architecture Maturity and Governance
  • How to benefit from Architecture Role in SDLC?
  • What is the iArchitecture Framework?

The Responsibility

Whatever the role of software architect, at the end it is about making a design decision. And actually, the architecture landscape is a visual diagram that depict a collection of design decisions.

That raise a point about the boundaries of software architecture as these boundaries are shared in somehow (with different scopes) between the architect, developer, manager, and other stakeholders in the SDLC. So, what is really that means? And who is responsible about architecture artifacts? I’ll tell you.

It is like any profession, there is a person responsible about output, and on the other hand another persons dealing with that output. Like doctor who wrote a list of medicines after doing the required diagnostics, and then the patient deal with that output with a good knowledge (or background) about the symptoms and the treatments but not like with that depth and breadth of doctor knowledge. Another example in the civil building architecture, although the architect created the design but the civil engineer and builders have to review the architecture using their own architecture design skills.

Seems that we have two terms: profession and skill. Which means, architecture design is a skill that have to be exist with each role in the SDLC but with special consideration when looking to the architect as the responsible professional about the overall design.

The question is, what is the role of software architect in SDLC?

It depends on the scope of design during SDLC, for example in application design, the role will be an application architect (.NET, JAVA, iOS, or Android application architect) who is responsible about application design in terms of programming technology, framework, components, layers, and the integration interfaces. Another example, is the DevOps architect who is responsible about the design of SDLC automation. Another example, the platform architect who is responsible about the design of hosting environments using different approaches and technologies (e.g. container management systems on cloud or on-prim or on hybrid solutions. Another example, the infrastructure and network architect which is responsible about DC topology and network. Another example, the solutions architect who is responsible about authoring a solution cross technologies and/or applications (e.g. Azure solutions architect, AWS solutions architect, or specific program solutions architect). And the last declaration example here is the enterprise architect who is responsible about the design of the overall architecture foundation for SDLC on the scope of the organization with describing the main architecture views (business, application, data, and technology), and some times referred to EA architect as IT architect.

The Roles

Software architecture roles has common skills and sharing the same concept of providing technical solution design for a business requirements, but the responsibilities and the output is different in terms of organization scope and technology specialization.

That leads us to organize architecture roles under three main categorize: Enterprise Architecture; Solutions Architecture; and Technology Architecture.

1. Enterprise Architecture

It is about the type of solutions that spans cross systems within organization or multiple organization.

Enterprise architecture is meant by the overall design artifacts on the level of organization, describing robust and elastic design with considering different architecture views that fit with business requirements and flexible to cope with changes as required.

The role of enterprise architect has an extended scope to business and management. Working with the top level management to understand the organization business goals, and collaborate with the underlaying architecture board to tailor EA solution that describe the landscape design of the organization digital products and services in terms of business, information , and technology principles. Enterprise architect is responsible about the continues evolvement of design principles as part of the reference architecture to guide the authoring of any type of potential design that can be handled by any architect in the organization.

And before going into more details, it would be useful for us to know the standard definition of Enterprise Architecture by TOGAF and other considerable authorities like Gartner:

  • TOGAF define Enterprise Architecture as the structure of components, their inter-relationships, and the principles and guidelines governing their design and evolution over time that describe the highest level (typically) of an organization and typically covers all missions and functions. An enterprise will often span multiple organizations.
  • Gartner define Enterprise Architecture (EA) as the discipline for proactively and holistically leading enterprise responses to disruptive forces by identifying and analyzing the execution of change toward desired business vision and outcomes. EA delivers value by presenting business and IT leaders with signature-ready recommendations for adjusting policies and projects to achieve targeted business outcomes that capitalize on relevant business disruptions.

Although this is an important architecture role but in the real world, the role might be missed or contained implicitly as part of another role responsibilities like chief architect or CTO responsibilities.

Key skills:

  • Business awareness and design
  • Organization analysis and objectivity
  • Insightful and visionary
  • Soft skills
  • Technical design skills
  • Experience and knowledge with EA frameworks

2. Solutions Architecture

It is an ambiguous architecture type as a result to its spanning through different areas in SDLC like presale, management, development and operation. It is meant by providing end-to-end solutions for a program of applications related to specific industry, vendor, or a specific program within the organization. In somehow this category of architecture type is deliberately or mistakenly counted with other architecture types (EA and TA).

So, why this type of architecture is mixed with other types? let me explain. Enterprise architect is mainly meant by the global design of the reference architecture and the general technical standards of software applications within the organization abstracted from the method and the details of the implementation. While Technology Architect is meant by the detailed design of how the solution is going to be implemented with specific system and specific technology. Thereby the Solution Architect is here to cover the gap between the two roles as this role has the skills to to provide a solution which is span through different technologies and different systems.

We can see this role in SDLC under titles grouped by vendors’ products or organization program.

Vendors like Microsoft, Amazon, Google, etc. are providing a flagship products/services e.g. AWS cloud, azure cloud, etc.

While for organizations like big companies, government (e.g. ministries), R&D labs, emerging business (e.g. crypto and IoT), or any other kind of organizations that are tending to manage a group of products (or services) internally under specific program. for example a big organization decided to organize products and services under structure of programs, while each program manages a set of applications.

Solutions architect can play different and more roles in software architecture to reflect business value via a composed technical solution while business does not stop.

Solutions architect works in harmony with enterprise architect and technical architects to conduct the desired design output in different stages of SDLC.

Key Skills:

  • Business requirements analysis
  • Stakeholder analysis
  • Experience with distributed systems and wide range of software tools and programing technologies
  • Experience with enterprise integration solutions
  • Technical leadership
  • Solution modeling and documentation (in the way that each stakeholder can understand it )
  • Solution governance over the technical implementation
  • Soft skills

3. Technology Architecture

It is the architecture type which meant by the low level design of a system based on a specific technology to provide a detailed technical solution of system sub-components and their interactions with each other and with other systems.

The complexity of the technology solution is differs as per each business case. For example, case like .NET application which manage simple data input/output for a basic business scenarios, that may not need a technology architect as the documentation of technology best practice itself is enough to cover the technical solution. While for other complex scenarios where a distributed transaction will take place between systems which requires consistent transaction commit and safe rollback, or a complex logic will take place within the system and requires special design pattern so the role of technology architect get emerged here to be required.

Is that means the Enterprise Architect and Solutions Architect are not meant by technical solution!? Absolutely, The Technology Architect is design the detailed technical implementation based on the technology strategy designed by Enterprise Architect and the technology high level designe by Solutions Architect.

In the real world, this role could be played by skilled developer or by the solution architect in case he/she has an experience with the technology and the place of work impose the merging between architecture roles like startup and small size organizations.

Technology architect is the technical geek person, Subject Matter Expert (SME), who has the skills to design pure technical solution related to specific technical domain

  • Application programming technologies e.g. .NET, Java, Python, iOS, Android, etc.
  • Data technologies e.g. databases, big data, ML &AI, API, etc.
  • Infrastructure technologies e.g. network and virtualization
  • Platform technologies e.g. Terraform, Ansible, Azure DevOps, ArgoCD, Jenkins ,etc.
  • Blockchain technologies e.g. hyperledger-fabric
  • IoT technology e.g. Cisco IoT

The following diagram depict architecture roles as per each category

The Layers

Each architecture role is considered as a layer in the design, combined to each other to form a clear design image understood by different stakeholders and reflected on the final software product.

The classification adopted here for architecture role could be explained in other words. Where Enterprise Architecture is the layer of identifying the conceptual architecture style, Solutions Architecture is the layer of identifying the logical architecture pattern, and Technology Architecture is the layer of identifying physical design pattern.

We can imagine a declarative example of the final image of the architecture solution design as in the following diagram, which depict Enterprise Architecture as the main frame (or landscape), Technology Architecture as the dots in the frame, and Solution Architecture as the line which link dots to each other.

Roles by Example

Let’s take a simplified example by dropping roles on an organization like a new telecom company, with considering that in the real world we may have different circumstances and business demands to utilize architects in the way which is good for the organization (e.g. architecture team structure and roles in the org chart).

Let's assume an ideal architecture team with the structure of one Enterprise Architect, three solution architects, and many technology architects!(to be declared latter). They will work together to deliver the target design documents that can be used in the next steps in SDLC.

This example is depicting a simplified design of the logical app view for the enterprise and solutions architecture. While other views (e.g. application, data, topology, tech stack, integration, etc.) are not depicted here.

Each architecture view could be depicted in three forms (conceptual, logical and physical). And sometimes views are mixed together (or simplified) to give a meaning to the target stakeholder.

Once the business requirements are collected, analyzed, and discussed with different stakeholders each architect role will work as follows:

(1)

Enterprise architect do analysis study on the business requirements and stakeholders, then work on the design artifacts of the landscape architecture which describe the core business of products and services in terms of information systems and technologies. The deliverables artifacts are differ from one organization to another and from architecture framework to another, but lets say that the enterprise architect draw the high level technical strategy in terms of principles and different architecture view. The solution is focus on emphasizing the main systems, their characteristics, topology, how they are communicate, and their technologies. Enterprise Architect is responsible about the governance model of the overall enterprise solution, so an assessment is taken iteratively -on the final output- to get sure that enterprise solution is implemented correctly as we go.

the following diagram depict the logical view of enterprise architecture for a telecom organization systems

(2)

Solutions Architect collaborate with enterprise architect and technology architects to provide the solution design for a specific area in the enterprise solution (e.g. self-care program) with more and deep technical dive than in the enterprise architecture.

Solution architect will give more details for each architecture view. Describing layers, components and the integration between them and the external systems. So, let's go with the following diagram as the logical application view which depict self-care solution.

The diagram depict:

  1. The client channels and the general specification of each channel e.g. (web pages, mobile apps, chat bot, etc.).
  2. The interface with the edge components like identity&user-access manager (IAM), API manager, and static content. The communication protocols and authentication mechanism.
  3. The interactions to/from the in the internal systems. And environment services.

The solution architect will go in detail with each architecture view to cover the solution from different views as per each stakeholder e.g. client, management, developers, testers and operators.

In additional to that, the solution architect will give more attention to the reusability (e.g. code template, packages, and services) and system quality attributes (e.g. reliability, availability, performance, portability, etc).

Another solution architecture example is in the following diagram which depict the logical application view of IoT solution.

The last example here is for MS Azure disaster recovery solution architecture

Enterprise-scale disaster recovery

(3)

The technology architect is more clear than the solution architect and the enterprise architect. technology architect is moving forward from the principles and theories to the real and concret implementation, so it is normal to find technology architect in the battle field of code design and supporting developers, systems’ administrators, and operators. Hand in hand but still wearing the design hat.

The type of documentation provided by the technology architect is in the form of the low level design documentation which describe code structure in terms of design patterns, database low level design, special flow diagrams which depict the complex interactions flow between systems, etc.

Technology architect does not take development tasks but support the development process with code templates, POC, and technical consultation.

That is not contradict with agile delivery, as the technology architect is the person responsible about the final technical output, support the running development process, and monitor the output of each SDLC iteration. [To be detailed in the mindset article].

Roles in Reality

First of all we have to understand very well the organization business and the org chart before proceeding in building the hierarchy of architecture team and their positions.

Startup, small-size business, medium-size business, and giant organizations each will have it is own chart and architecture roles. For example a startup company, almost will start with one expert architect. While large companies will have more mature org-chart and by then a standard architecture roles.

Each architect has t-shaped skills, expert in a specific architecture area (vertical area e.g. application architect) while collaborate well with others in the horizontal area (e.g. other architecture roles).

Architects are doing a common activities whatever the role as follows:

  1. Solution design which support business value stream.
  2. Architecture governance to monitor the execution of design or to correct the design itself as per the progress.
  3. Technical support and consultation as required.
  4. POC and R&D to support the solution design and to keep sharp technical skills.
  5. Self-development (the architect mindset and soft skills)

All of that will lead us to the fact that there is a cross-section between architecture roles which may lead into mixing between the responsibilities and a bad utilization to the architect or the architecture by the architect himself by producing costly design.

Another fact, architecture skills already exist between all members in software development. But the question here is: who is capable to take a design decision and follow-up until it turned into a business value?

It is important to maximize the collaboration model between team(s) and to segregate the responsibilities between them as possible. So, giving the design responsibility to the correct architect role will return a big value on the business.

The following diagrams depict the cross-section between architecture roles in the real world and the presence or absence of roles from one organization to another.

There is no issue that the architect take the responsibility of different architecture roles while that match the real case and the fact of t-shaped architecture skills. The issue is to mix the role of architect (which is mainly a design role) with non-design roles in SDLC or neglecting the role in somehow.

Other roles in software architecture

When looking to software as an integrated industry, that will lead us to include more roles under Software Architecture like User Experience (UX) designer and Business/Product analyst.

The architect role is a position or skill in SDLC that manage design activities.

Do we Need the Role Software Architect in SDLC?

Everyone has the skills to build a house, but how many can build it correctly without being ugly or get destroyed shortly?. Also, are we looking to build small/simple house, awesome house, or a skyscraper?. The same in Software, if you are working on a small product/service and you have skilled development team with good design skills (which already rely on an existing architecture knowledge e.g. architectures patterns) so you can go without an explicit architect. The case will be different if the organization has more than one development team and more than product/service, then the role of architect get emerged to be required to unify the design mindset and to support SDLC on design stage. Also, the case will be different when working with flagship products, you cannot go without an architect.

I’d prefer to go with software architecture as a consulting service within or outside the organization, as a way to segregate roles in SDLC to decrease coupling between teams and accelerate SDLC processes.

What is next?

It is a something necessary before proceeding with architecture solutions, the architects (led by enterprise architect) must prepare the environment of work firstly by identifying the general principles aligned with the organization business goals, vision, and mission. And also, they have to prepare a considerable reusable architecture content as a building blocks.

General principles are the common architecture principles that identifying the mindset of design thinking and guide architects to deliver solutions with business value. While the architecture content is the centralized repository of document templates, diagrams, reference architecture, solutions, and change registry.

That's what we are going to talk about in the next three article

Stay tuned…

References:

  1. TOGAF, what is enterprise? http://www.opengroup.org/public/arch/p1/enterprise.htm
  2. TOGAF, what is architecture? https://pubs.opengroup.org/togaf-standard/introduction/chap03.html#tag_03
  3. Gartner EA definition — https://www.gartner.com/en/information-technology/glossary/enterprise-architecture-ea
  4. What type of IT Architect are you — https://www.redhat.com/architect/what-type-it-architect-are-you
  5. InfoQ, https://www.infoq.com/articles/what-software-architecture/?itm_campaign=rightbar_v2&itm_source=infoq&itm_medium=articles_link&itm_content=link_text (Note: I like the idea behind the article which is emphasizing the architecture as skill, but i cannot go more than that as the article neglect the architecture “role” and responsibilities, but in general this is really a useful article and rich with ideas which raise a debates and questions to understand the role of architect).
  6. What Is a Solutions Architect (and How Do I Become One)? https://www.coursera.org/articles/solutions-architect
  7. Reference Architecture for the Telecommunications Industry https://link.springer.com/book/10.1007/978-3-319-46757-3
  8. Reference Architecture for a Telecom Enterprise Application Platform https://medium.com/codex/reference-architecture-for-a-telecom-enterprise-application-platform-257769a4a8d0
  9. TMForum — TMF910 Self Care API Component Suite R18.0.1 https://projects.tmforum.org/wiki/display/API/TMF910+Self+Care+API+Component+Suite+R18.0.1
  10. AWS reference architecture https://aws.amazon.com/architecture/?cards-all.sort-by=item.additionalFields.sortDate&cards-all.sort-order=desc&awsf.content-type=*all&awsf.methodology=*all&awsf.tech-category=*all&awsf.industries=*all
  11. MS Azure reference architecture https://docs.microsoft.com/en-us/azure/architecture/browse/
  12. Software Engineering Body of Knowledge (SWEBOK) https://www.computer.org/education/bodies-of-knowledge/software-engineering (chapter 2)

--

--

Briqi

Hisham Mohamed is an architect with passion to innovate practical solutions that add value into people life