All Topics  
Software architect

 

   Email Print
   Bookmark   Link

 

Software architect


 
  Software architect is a general term that may refer to a broad range of roles. There are many accepted definitions. Vendor neutral and consensual terminology and certifications are evolving around this role in the last decade.

History

With the increased popularity of multi-tier application development, the choices of how an application can be built have also increased. Developers find themselves "reinventing the wheel" many times in the same organization.

A new 'Software Architect' role became a need during software DevelopmentSoftware development

Software development is the translation of a user need or marketing goal into a software product....
.

The main responsibilities of this new role are:

  • ; Limit the choices during development by

  • choosing a standard way of doing application developmentSoftware development

    Software development is the translation of a user need or marketing goal into a software product....
  • defining/creating an application frameworkApplication framework

    In computer programming, an application framework is a term usually used to refer to a set of libraries or classes that are ...
     to use for the application


  • ; Spot potential reuse in the organizationOrganization

    An organization or organisation is a formal group of people with one or more shared goals....
     or in the application by

  • Seeing the big picture
  • Doing the component designComponent-based software engineering

    Component-based software engineering is a branch of the software engineering discipline, with emphasis on decomposition of t...
  • Have contact and knowledge of other applications in the organizationOrganization Summary

    An organization or organisation is a formal group of people with one or more shared goals....



This happened at the time when the object oriented programming (OOP) was getting widespread use (late 1990s and early 2000). With the help of OOP, increasingly larger and more complex applications were being built. There became a need to oversee from a high level these complex applications.
Software Architects were given a this new responsibility that includes:

  • During design, break down the complex application to smaller manageable pieces
  • Understand the functions of each component
  • Understand the interactions and dependencies between component
  • Communicate the aboves to developers


Therefore, it is assumed that a Software Architect has knowledge about OOP and Unified Modeling LanguageUnified Modeling Language

In software engineering, the Unified Modeling Language is a non-proprietary specification language for object modeling....
 (UML). UML is a modeling language that became important for Software Architects to communicate their design to developers and other team members, it is like drawings for building architectArchitect

An architect is a person involved in the planning, designing and oversight of a building's construction....
s.

What the Software Architect does

Even given the lack of simple definition, there are some aspects to the role that are shared by all architects:

Strategic Thinking

Architects are focused on solving business needs in a strategic manner. For example, decisions are evaluated against how they will allow the enterprise, or a single software system to grow and perform in the long term. Great care is taken to create and spot opportunities for re-use.

Because of the strategic bias, decisions that an architect will make will often differ from those that a developer or a project manager will make. In many ways, the architect acts as the business owner would if they were technically savvy. While a developer is working and focused on to develop a software component, not necessarily seeing how the components would work together. The Software Architect sees the big picture and defines the interaction between components.

System Interactions

Architects deal with boundaries, interfaces, and interactions. These may be between two systems written in different languages at different locations, or between two components of the same software system, written in the same coding language.

Service-oriented architectureFacts About Service-oriented architecture

In computing, the term Service-Oriented Architecture expresses a perspective of software architecture that defines the use o...
 is a recent evolution that has the potential to simplify architects' jobs. This is primarily because it provides a way of thinking about architecture that is closely aligned with the architect's need to define the APIs of systems.

Design

The architect makes many high level (and sometimes low level) design choices.

In addition, the architect may dictate various standards, including coding standards, tools, or platforms. The reason for doing so is to facilitate strategic goals, rather than to arbitrarily restrict the choices of developers.

Communication

The final aspect is that they have to communicate, firstly in order to understand the business needs, and then in order to communicate their own architectural vision.

In addition to verbal communication, there are various Software Architectural ModelSoftware Architectural Model Summary

An Architectural Model is a rich and rigorous diagram, created using available standards, in which the primary concern is t...
s that specialize in communicating architecture.

Types of Software Architects

The Enterprise ArchitectEnterprise architect

Enterprise Architects are practitioners of Enterprise architecture; an information technology discipline that operates withi...
 deals with strategic software decisions (aligning IT with the business), typically involving many software systems within an organization, across several projects teams, typically at more than one site. The Enterprise Architect may seldom see or interact with source code.

Within the context of a single software project another distinction can be made between the physical architecture which relates to the hardware environment, and the software architecture, which involves the design methodology of the code.

An Application Architect is concerned with a single software application. This may be a full- or part-time role. The Application Architect is almost always an active software developer.

Other architect titles that are in use, but without consensus on the exact meaning include:
  • Solution Architect - may refer to the focus on driving a particular business solution, which needs interactions between multiple applications. May also refer to an Application Architect.
  • System Architect (singular) - used as a synonym to Application Architect.
  • Systems ArchitectSystems architect Overview

    The systems architect is responsible for:...
     (plural) - used as a synonym to Enterprise ArchitectEnterprise architect Overview

    Enterprise Architects are practitioners of Enterprise architecture; an information technology discipline that operates withi...
     or Solution Architect.


The simple table below can further assist in understanding the differences between Software architects:
Architect Type Strategic Thinking System Interactions Communication Design
Enterprise ArchitectEnterprise architect Summary

Enterprise Architects are practitioners of Enterprise architecture; an information technology discipline that operates withi...
Across Projects Highly Abstracted Across Organization Minimal, High Level
Application Architect Component re-use, maintainability Centered on single Application Single Project Very Detailed
Solution Architect Focused on solution Very Detailed Multiple Teams Detailed


In the software industry, there is a fair amount of conflict between Application and Solution Architects, and Enterprise ArchitectEnterprise architect

Enterprise Architects are practitioners of Enterprise architecture; an information technology discipline that operates withi...
s. Looking at the table above, it is not hard to see why. For example, Application and Enterprise Architects are almost completely opposite in terms of focus!

Architect Metaphor

The term "Architect" came into being because the creation of software was likened to the construction of buildings. It is clear that the role is necessary, and the closest equivalent in the building industry is the Architect.

The overwhelming popularity of the term Architect in the context of software development can be traced to the day Bill GatesBill Gates

William Henry Gates III is the co-founder, chairman, former chief software architect, and former CEO of Microsoft....
 announced that he was relinquishing the title of President and CEO of MicrosoftMicrosoft

company_name = Microsoft Corporation| company_logo = ...
 and assuming the role of Chief Software Architect. Suddenly lots of people decided that their job title also needed to include the word "Architect". Gates has since moved on.

It is generally agreed that a simplified construction metaphor is flawed with regard to software development. Nevertheless, the term is still meaningful in the sense that it describes the "design" aspect of the job.

Ivory Towers

When Architects become too divorced from the teams that are actually doing development, they are often derogatorily termed as "Ivory Tower Architects". The picture in people's minds is that of the Architect creating the architecture definition, and then handing it off to the development team(s).

Partly, this is the fault of the flawed construction metaphor (architect handing blueprints off to builder). Also, many "Waterfall modelWaterfall model

The waterfall model is a software development model in which development is seen as flowing steadily downwards through the...
" development methodologies of the past encouraged this style of working.

Controversy

At the level of detail that an Application or Solutions Architect works, it is necessary to get involved in the actual coding. A software-development background is a requirement for the job. Some people extend this requirement to Enterprise Architects too. The fear is that an Enterprise Architect without the necessary development background will tend towards the "Ivory Tower" way of doing things.

See also

  • Systems architectureSystems architecture

    In engineering, a system architecture or systems architecture is related to some aspect of the structure of a system....
     / Systems architectSystems architect

    The systems architect is responsible for:...
  • Software Architectural ModelSoftware Architectural Model

    An Architectural Model is a rich and rigorous diagram, created using available standards, in which the primary concern is t...
  • Software architectureSoftware architecture

    The software architecture of a system comprises its software components, their external properties, and their relationships ...
  • Hardware architectureFacts About Hardware architecture

    Hardware is an expression used within the engineering disciplines to explicitly distinguish the hardware from the software...
     / Hardware architectHardware architect

    The hardware systems architect or hardware architect is responsible for:...
  • Systems engineeringSystems engineering

    Aristotle, 384 BC 322 BC'Systems Engineering is an interdisciplinary approach and means for enabling the realization a...
     / Systems engineer
  • Software engineeringSoftware engineering

    Software Engineering is the discipline of designing, creating, and maintaining software by applying technologies and practi...
     / Software engineer
  • Requirements analysisRequirements analysis

    In systems engineering and software engineering, requirements analysis encompasses all of the tasks that go into the instiga...
     / Requirements engineer
  • Systems designSystems design Overview

    Systems design is the process or art of defining the hardware and software architecture, components, modules, interfaces, an...
  • Electrical engineeringElectrical engineering

    Electrical engineering is a professional engineering discipline that deals with the study and application of electricity, e...
  • Electronics engineering
  • Service-Oriented ModelingService-oriented modeling

    Service-oriented modeling is a software development methodology that employs disciplines and a universal language to provid...
     Framework (SOMF)