Software architect
Encyclopedia
Software architect is a general term with many accepted definitions, which refers to a broad range of roles. Generally accepted terminology and certifications began appearing in connection with this role near the beginning of the 21st century.
.
The software architect concept began to take hold when object oriented programming (OOP) was coming into more widespread use (in the late 1990s and early years of the 21st century) . OOP allowed ever-larger and more complex applications to be built, which in turn required increased high-level application and system oversight.
The main responsibilities of a software architect include:
Software architects can also:
In order to perform these responsibilities effectively, software architects often use Unified Modeling Language
and OOP . UML has become an important tool for software architects to use in communicating the overall system design to developers and other team members, comparable to the drawings made by building architect
s.
Software architects may also be engaged in the design of the architecture of the hardware environment, or may focus entirely on the design methodology of the code.
handles the interaction between the business and IT sides of an organization and is principally involved with determining the AS-IS and TO-BE states from a business and IT process perspective. Unfortunately many organizations are bundling the software architect duties within the role of Enterprise Architecture. This is primarily done as an effort to "up-sell" the role of a software architect and/or to merge two disparate business-related disciplines to avoid overhead.
An application architect works with a single software application. This may be a full- or a part-time role. The application architect is almost always an active software developer .
Other similar titles in use, but without consensus on their exact meaning, include:
The table below indicates many of the differences between various kinds of software architects:
In the software industry, as the table above suggests, the various versions of architect do not always have the same goals.
The use of any form of the word 'architect' is regulated by 'title acts' in many states in the UK and the US, and a person must be licensed as a building architect to use it. Enforcement of these laws may be lax, if it is immediately clear that the title refers to the computer industry and not the building industry.
Architects" . Architects may think this term is often incorrectly used by developers who do not have the experience or knowledge to comprehend the architecture .
Application or solutions architects work at a level of detail that demands involvement in actual coding, and will function best with a substantial background in software development. A school of thought holds that enterprise architects should also have a development background, so as to avoid the issues that can arise from an ivory-tower approach .
History
With the increasing popularity of multi-tier application development, the choices of how an application can be built have also increased. Given that expansion, the risk that a software development project may inadvertently create an end product that in essence already exists has grown markedly. A new 'Software architect' role became necessary during software developmentSoftware development
Software development is the development of a software product...
.
The software architect concept began to take hold when object oriented programming (OOP) was coming into more widespread use (in the late 1990s and early years of the 21st century) . OOP allowed ever-larger and more complex applications to be built, which in turn required increased high-level application and system oversight.
The main responsibilities of a software architect include:
- Limiting choices available during development by
- choosing a standard way of pursuing application developmentSoftware developmentSoftware development is the development of a software product...
- creating, defining, or choosing an application frameworkApplication frameworkIn computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of an application for a specific development environment ....
for the application - Recognizing potential reuse in the organizationOrganizationAn organization is a social group which distributes tasks for a collective goal. The word itself is derived from the Greek word organon, itself derived from the better-known word ergon - as we know `organ` - and it means a compartment for a particular job.There are a variety of legal types of...
or in the application by - Observing and understanding the broader system environment
- Creating the component designComponent-based software engineeringComponent-based software engineering is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system...
- Having knowledge of other applications in the organizationOrganizationAn organization is a social group which distributes tasks for a collective goal. The word itself is derived from the Greek word organon, itself derived from the better-known word ergon - as we know `organ` - and it means a compartment for a particular job.There are a variety of legal types of...
Software architects can also:
- Subdivide a complex application, during the design phase, into smaller, more manageable pieces
- Grasp the functions of each component within the application
- Understand the interactions and dependencies among components
- Communicate these concepts to developers
In order to perform these responsibilities effectively, software architects often use Unified Modeling Language
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...
and OOP . UML has become an important tool for software architects to use in communicating the overall system design to developers and other team members, comparable to the drawings made by building architect
Architect
An architect is a person trained in the planning, design and oversight of the construction of buildings. To practice architecture means to offer or render services in connection with the design and construction of a building, or group of buildings and the space within the site surrounding the...
s.
Duties
Despite the lack of an accepted overall definition, the role of software architect generally has certain common traits:Design
The architect makes high-level design choices much more often than low-level choices. In addition, the architect may sometimes dictate technical standards, including coding standards, tools, or platforms, so as to advance business goals rather than to place arbitrary restrictions on the choices of developers .Software architects may also be engaged in the design of the architecture of the hardware environment, or may focus entirely on the design methodology of the code.
Communication
Architects also have to communicate effectively, not only to understand the business needs, but also to advance their own architectural vision. They can do so verbally, in writing, and through various software architectural models that specialize in communicating architecture.Other types of IT-related Architects
The enterprise architectEnterprise architect
Enterprise architects are practitioners of enterprise architecture; an information technology management discipline that operates within organizations.-Role of enterprise architects:...
handles the interaction between the business and IT sides of an organization and is principally involved with determining the AS-IS and TO-BE states from a business and IT process perspective. Unfortunately many organizations are bundling the software architect duties within the role of Enterprise Architecture. This is primarily done as an effort to "up-sell" the role of a software architect and/or to merge two disparate business-related disciplines to avoid overhead.
An application architect works with a single software application. This may be a full- or a part-time role. The application architect is almost always an active software developer .
Other similar titles in use, but without consensus on their exact meaning, include:
- Solutions ArchitectSolutions ArchitectA Solutions Architect in Enterprise Architecture is a practitioner in the field of Solution Architecture.The role title has a wider meaning in relation to solving problems, but is more often used in the narrower domain of Technical architecture - the context for the remainder of this definition...
, which may refer to a person directly involved in advancing a particular business solution needing interactions between multiple applications. May also refer to an Application Architect. - System Architect (singular), which is often used as a synonym for Application Architect. However, if one subscribes to Systems theory and the idea than an enterprise can be a system, then System Architect could also mean Enterprise Architect.
- Systems ArchitectSystems architectThe systems architect establishes the basic structure of the system, defining the essential core design features and elements that provide the framework for all that follows, and are the hardest to change later....
(plural), which is often used as a synonym for Enterprise ArchitectEnterprise architectEnterprise architects are practitioners of enterprise architecture; an information technology management discipline that operates within organizations.-Role of enterprise architects:...
or Solutions ArchitectSolutions ArchitectA Solutions Architect in Enterprise Architecture is a practitioner in the field of Solution Architecture.The role title has a wider meaning in relation to solving problems, but is more often used in the narrower domain of Technical architecture - the context for the remainder of this definition...
.
The table below indicates many of the differences between various kinds of software architects:
Architect Type | Strategic Thinking | System Interactions | Communication | Design |
---|---|---|---|---|
Enterprise Architect Enterprise architect Enterprise architects are practitioners of enterprise architecture; an information technology management discipline that operates within organizations.-Role of enterprise architects:... |
Across Projects | Highly Abstracted | Across Organization | Minimal, High Level |
Solutions Architect Solutions Architect A Solutions Architect in Enterprise Architecture is a practitioner in the field of Solution Architecture.The role title has a wider meaning in relation to solving problems, but is more often used in the narrower domain of Technical architecture - the context for the remainder of this definition... |
Focused on solution | Very Detailed | Multiple Teams | Detailed |
Application Architect | Component re-use, maintainability | Centered on single Application | Single Project | Very Detailed |
In the software industry, as the table above suggests, the various versions of architect do not always have the same goals.
Architect metaphor
The term "software architect" came into being because of the perceived similarities between the creation of software and the creation of buildings. Although a simplified construction metaphor may be flawed, the term is still meaningful in the sense that it describes the "design" aspect of the job.The use of any form of the word 'architect' is regulated by 'title acts' in many states in the UK and the US, and a person must be licensed as a building architect to use it. Enforcement of these laws may be lax, if it is immediately clear that the title refers to the computer industry and not the building industry.
Ivory towers
When architects become too disconnected from the actual developers, they are often dismissively termed "architards", "architecture astronauts", or "Ivory TowerIvory Tower
The term Ivory Tower originates in the Biblical Song of Solomon , and was later used as an epithet for Mary.From the 19th century it has been used to designate a world or atmosphere where intellectuals engage in pursuits that are disconnected from the practical concerns of everyday life...
Architects" . Architects may think this term is often incorrectly used by developers who do not have the experience or knowledge to comprehend the architecture .
Application or solutions architects work at a level of detail that demands involvement in actual coding, and will function best with a substantial background in software development. A school of thought holds that enterprise architects should also have a development background, so as to avoid the issues that can arise from an ivory-tower approach .
See also
- Systems architectureSystems architectureA system architecture or systems architecture is the conceptual model that defines the structure, behavior, and more views of a system.An architecture description is a formal description and representation of a system, organized in a way that supports reasoning about the structure of the system...
/ Systems architectSystems architectThe systems architect establishes the basic structure of the system, defining the essential core design features and elements that provide the framework for all that follows, and are the hardest to change later.... - Software Architectural ModelSoftware Architectural ModelAn architectural model is a rich and rigorous diagram, created using available standards, in which the primary concern is to illustrate a specific set of tradeoffs inherent in the structure and design of a system or ecosystem...
- Software architectureSoftware architectureThe software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...
- Hardware architectureHardware architectureIn engineering, hardware architecture refers to the identification of a system's physical components and their interrelationships. This description, often called a hardware design model, allows hardware designers to understand how their components fit into a system architecture and provides...
/ Hardware architect - Systems engineeringSystems engineeringSystems engineering is an interdisciplinary field of engineering that focuses on how complex engineering projects should be designed and managed over the life cycle of the project. Issues such as logistics, the coordination of different teams, and automatic control of machinery become more...
/ Systems engineer - Software engineeringSoftware engineeringSoftware Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
/ Software engineerSoftware engineerA software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :... - Requirements analysisRequirements analysisRequirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users...
/ Requirements engineer - Systems designSystems designSystems design is the process of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements. One could see it as the application of systems theory to product development...
- Electrical engineeringElectrical engineeringElectrical engineering is a field of engineering that generally deals with the study and application of electricity, electronics and electromagnetism. The field first became an identifiable occupation in the late nineteenth century after commercialization of the electric telegraph and electrical...
- Electronics engineering
- International Association of Software Architects