Software architect
Software architect is a computer manager who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms.
History
With the 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 a "new" end product that, in essence, already existed has grown markedly. A new 'software architect' role has become necessary during software development.[citation needed]
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).[citation needed] 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 development[citation needed]
- creating, defining, or choosing an application framework for the application[citation needed]
- Recognizing potential reuse in the organization or in the application by
- Observing and understanding the broader system environment[citation needed]
- Creating the component design[citation needed]
- Having knowledge of other applications in the organization[citation needed]
- Subdivide a complex application, during the design phase, into smaller, more manageable pieces[citation needed]
- Grasp the functions of each component within the application[citation needed]
- Understand the interactions and dependencies among components[citation needed]
- Communicate these concepts to developers[citation needed]
In order to perform these responsibilities effectively, software architects often use tools or standardized model and symbol sets such as Unified Modeling Language and OOP[citation needed] to represent systems or develop artifacts. 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 architects.
Duties
The role of software architect generally has certain common traits:
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.
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.
Architects can use various software architectural models that specialize in communicating architecture.
Other types of IT-related Architects
The enterprise architect 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.
Other similar titles in use, but without consensus on their exact meaning, include:
- Solutions Architect, 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 that an enterprise can be a system, then System Architect could also mean Enterprise Architect.
- Systems Architect (plural), which is often used as a synonym for Enterprise Architect or Solutions Architect.
The table below indicates many of the differences between various kinds of software architects:
Architect Type | Strategic Thinking | System Interactions | Communication | Design |
---|---|---|---|---|
Enterprise Architect | Across Projects | Highly Abstracted | Across Organization | Minimal, High Level |
Solutions Architect | 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.[1]
See also
- Systems architecture / Systems architect
- Software Architectural Model
- Software architecture
- Hardware architecture / Hardware architect
- Systems engineering / Systems engineer
- Software engineering / Software engineer
- Requirements analysis / Requirements engineer
- Systems design
- Electrical engineering
- Electronics engineering
- International Association of Software Architects