Software architect
This article needs additional citations for verification. (December 2010) |
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.
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 a "new" end product that, in essence, already existed has grown markedly. A new "Software architect" role became 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[dubious – discuss] 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 architects.
Duties
Despite the lack of an accepted overall definition, 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, so as to advance business goals rather than to place arbitrary restrictions on the choices of developers[citation needed]. 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 "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. This may be a full- or a part-time role. The application "architect" is almost always an active software developer[citation needed] .
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]
Architect metaphor
The term "software architect" came into being because of the perceived similarities between the creation of software and the creation of buildings.[2] Although a simplified construction metaphor may be flawed,[3] the term is allegedly meaningful in the sense that it describes the "design" aspect of the job.
The term "architect" is a professional title protected by law and restricted, in most of the world's jurisdictions, to those who are trained in the planning, design and supervision of the construction of buildings. In these jurisdictions, anyone who is not a licensed architect is prohibited from using this title in any way. In the State of New York, and in other U.S. states, the unauthorized use of the title "architect" is a felony and is subject to criminal proceedings.[4]
Ivory towers
When "architects" become too disconnected from the actual developers, they are often dismissively termed "architards", "architecture astronauts", or "Ivory Tower Architects"[citation needed] . "Architects" may think this term is often incorrectly used by developers who do not have the experience or knowledge to comprehend the "architecture"[citation needed].
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[which?] holds that enterprise "architects" should also have a development background, so as to avoid the issues that can arise from an ivory-tower approach[citation needed] .
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