All Topics  
Software architect

 

   Email Print
   Bookmark   Link






 

Software architect



 
 
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 increased popularity of multi-tier application development, the choices of how an application can be built have also increased.






Discussion
Ask a question about 'Software architect'
Start a new discussion about 'Software architect'
Answer questions from other users
Full Discussion Forum



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.

History

With the increased 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 development
Software development

Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
.

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 the choices available during development by
  • choosing a standard way of pursuing application development
    Software development

    Software development is the set of activities that results in software products. Software development may include research, new development, modification, reuse, re-engineering, maintenance, or any other activities that result in software products....
  • creating, defining, or choosing an application framework
    Application framework

    In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
     for the application


  • Recognizing potential reuse in the organization
    Organization

    An organization is a social arrangement which pursues collective goals, which controls its own performance, and which has a boundary separating it from its environment....
     or in the application by
  • Observing and understanding the broader system environment
  • Creating the component design
    Component-based software engineering

    Component-based software engineering is a branch of the software engineering discipline, with emphasis on decomposition of the engineered systems into Functional programming or logical components with well-defined Interface used for communication across the components....
  • Having knowledge of other applications in the organization
    Organization

    An organization is a social arrangement which pursues collective goals, which controls its own performance, and which has a boundary separating it from its environment....


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 software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
 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 trained and licenced in planning and designing buildings, and participates in supervising the construction of a building. Etymologically, architect derives from the Latin architectus, itself derived from the Greek arkhitekton , i.e....
s.

Duties

Despite the lack of an accepted overall definition, the role of software architect generally has certain common traits:

Strategic thinking

Architects address the technological aspects of business needs by considering what a given technology can contribute to the overall functions of the system, as distinct from how that technology will perform its own functions. This encourages opportunities for re-use of the technology and ultimately contributes to the organization's efficiency.

As a result, an architect's decisions will often differ from those that a developer or a project manager might make. In many ways, the architect acts as a technically savvy business owner would. Where a developer will construct a software component based purely on technical specifications designed for creating software, the software architect will integrate many such components into a coherent and viable whole.

System interactions

Architects deal with the interactions of systems, whether between components written in different languages at different times and at different locations, or between components of the same software system that use the same coding language. One recent approach to this facet, known as service-oriented architecture
Service-oriented architecture

In computing, service-oriented architecture provides methods for systems development and System integration where systems group functionality around business processes and package these as Interoperability Service ....
, offers new ways to define the API
Application programming interface

An application programming interface is a set of subroutine, data structures, class and/or Protocol provided by library and/or operating system Service s in order to support the building of applications....
s of systems.

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. Note that software architects rarely deal with the physical architecture of the hardware environment, confining themselves to 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 model
Software Architectural Model

An 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....
s that specialize in communicating architecture.

Types of software architects

The enterprise architect
Enterprise architect

Enterprise architects are practitioners of enterprise architecture; an information technology discipline that operates within large enterprises....
 handles business-related software decisions that frequently can involve multiple software systems within an organization, spanning several projects teams, and often at more than one site. The Enterprise Architect may seldom see or interact with source code.

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 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....
    , 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.
  • Systems Architect
    Systems architect

    In systems engineering, the systems architect is the high-level designer of a system to be implemented.They establish the basic structure of the system, defining the core design features that are hard to change later....
     (plural), which is often used as a synonym for Enterprise Architect
    Enterprise architect

    Enterprise architects are practitioners of enterprise architecture; an information technology discipline that operates within large enterprises....
     or 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....
    .


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 discipline that operates within large enterprises....
Across Projects Highly Abstracted Across Organization Minimal, High Level
Application Architect Component re-use, maintainability Centered on single Application Single Project Very Detailed
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


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. The sudden popularity of the term in the world of information technology most likely stems from Bill Gates
Bill Gates

William Henry "Bill" Gates III is an United States business magnate, philanthropist, author, the List of the 100 wealthiest people , and chairman of the board of Microsoft, the software company he founded with Paul Allen....
’ relinquishing of the title President and CEO of Microsoft
Microsoft

Microsoft Corporation is a multinational corporation computer technology corporation that develops, manufactures, licenses, and supports a wide range of computer software products for computing devices....
 to assume the role of “Chief Software Architect.” The phrase reflected his new role as an overseer of many software development projects at Microsoft.

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.

Ivory towers

When architects become too disconnected from the actual developers, they are often dismissively termed "Ivory Tower
Ivory Tower

The term Ivory Tower originates in the Biblical Song of Solomon , and was later used as an epithet for Mary, the mother of Jesus.From the 19th century it has been, originally ironically, used to designate a world or atmosphere where intellectuals engage in pursuits that are disconnected from the practical concerns of everyday life....
 Architects". This is partly due to the limited usefulness of the construction metaphor. Moreover, many "Waterfall model
Waterfall model

The waterfall model is a sequence development process, in which development is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design , Construction,Integration and software maintenance....
" development methodologies of the past encouraged this working method.

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 architecture
    Systems architecture

    A system architecture or systems architecture is the conceptual design that defines the structure and/or behavior of a system.An architecture description is a formal description of a system, organized in a way that supports reasoning about the structural properties of the system....
     / Systems architect
    Systems architect

    In systems engineering, the systems architect is the high-level designer of a system to be implemented.They establish the basic structure of the system, defining the core design features that are hard to change later....
  • Software Architectural Model
    Software Architectural Model

    An 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 architecture
    Software architecture

    The software architecture of a program or computing system is the structure or structures of the software system, which comprise software components, the externally visible properties of those components, and the relationships between them....
  • Hardware architecture
    Hardware architecture

    In 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 software component designers important inf...
     / Hardware architect
    Hardware architect

    The hardware systems architect or hardware architect is responsible for:*Interfacing with a systems architect or consumer Stakeholder . It is extraordinarily rare nowadays for sufficiently large and/or complex hardware systems that require a hardware architect not to require substantial software and a systems architect....
  • Systems engineering
    Systems engineering

    Systems engineering is an interdisciplinary field of engineering that focuses on how complex engineering projects should be designed and managed....
     / Systems engineer
  • Software engineering
    Software engineering

    Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
     / Software engineer
    Software engineer

    A software engineer is a person who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything with software such as chips work....
  • Requirements analysis
    Requirements analysis

    Requirements 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 Stakeholder , such as beneficiaries or users....
     / Requirements engineer
  • Systems design
    Systems design

    Systems design is the process or art of defining the architecture, components, modules, interfaces, and data for a system to satisfy specified requirements....
  • Electrical engineering
    Electrical engineering

    Electrical engineering, sometimes referred to as electrical and electronic engineering, is a field of engineering that deals with the study and application of electricity, electronics and electromagnetism....
  • Electronics engineering


External links