This article was originally published on bmf-tech.com.
Overview
Referencing Chapter 2 of Practical Methods for Building System Architecture (IT Architects’ Archive Software Development Practice), we will organize the definitions and elements of architecture, architects, and architecting.
Architecture is "Structure"
In IEEE 1471-2000, architecture is defined as follows:
The fundamental structure of a system embodied in its components, their relationships to each other and the environment, and the principles guiding its design and evolution.
This definition indicates a perspective that views architecture as the essential structure of a system. Architecture focuses not on superficial configuration diagrams but on the multifaceted structure of component relationships, behaviors, constraints, environmental interfaces, and design decision criteria.
The characteristics of architecture are as follows:
- Defines structure: Clarifies what elements exist and how they relate.
- Defines behavior: Determines how each element collaborates and functions as a system.
- Focuses on critical elements: Consciously concentrates on components and design decisions that have long-term impacts.
- Integrates and aligns stakeholder needs: Balances different interests to build an agreeable structure.
- Is a collection of decisions based on logical reasoning.
- May follow existing architectural styles: Layered, microservices, client-server, etc.
- Is strongly influenced by the environment: Constraints such as technology used, organizational structure, and operational requirements.
- Affects the structure of the development organization: Corresponds to the so-called "Conway's Law".
- All systems have architecture: Even small-scale, there is design intent and structure.
- Scope is always limited: Does not necessarily encompass the whole, but has focus and purpose.
What Does an Architect Do?
An architect is an individual, team, or organization responsible for architecture (IEEE 1471-2000). Their responsibilities go beyond merely "deciding on the configuration." Architects are required to have multifaceted abilities and qualities, such as:
- Technical leader: Leads the selection of structure and determination of technical direction.
- Understands the software development process: Familiar with the entire development lifecycle.
- Has business domain knowledge: Can bridge technology and business goals.
- Is well-versed in technology: Capable of technology selection and evaluation.
- Possesses design and programming skills: Can judge the feasibility of structures.
- Has excellent communication skills: Conveys intentions and forms consensus.
- Has judgment: Selects the appropriate option from multiple choices.
- Can make political considerations: Adjusts interests within and outside the organization.
- Has negotiation skills: Derives feasible designs amidst constraints and demands.
An architect is more of a translator of intent and structure than a coding expert, serving as a compass for development.
What is Architecting?
Architecting refers to the series of activities related to defining, documenting, maintaining, improving, and assuring architecture. It is not merely a design task but has the following characteristics:
- Requires a balance of science and art: Needs both logical structure design and judgment based on experience and intuition.
- Requires knowledge across multiple fields: Desirable to be familiar with technology, processes, business, and management.
- Is a continuous activity: Design does not end once but continues to evolve in response to changes.
- Is motivated by many stakeholders: Needs to reflect diverse perspectives such as customers, management, and developers.
- Often involves trade-offs: Essential to adjust conflicting requirements such as performance and cost, quality and delivery time.
- Recognizes the importance of experience: Pattern recognition and intuitive judgment are often required.
- Requires both top-down and bottom-up perspectives: Needs to balance an overview of the structure with an understanding of on-the-ground realities.
Benefits of Architecting
Architecting offers the following practical benefits:
- Improves system quality
- Promotes consensus among stakeholders
- Supports mid-to-long-term planning
- Maintains structural consistency
- Manages system complexity
- Enhances reusability
- Reduces maintenance costs
- Improves accuracy of impact analysis during changes
Architecting can be described as a "structural investment to prevent future chaos."
Conclusion
Architecture is not merely a blueprint but a product that reflects the intentions of stakeholders and elevates them into a coherent structure. Architects are not only the designers of that structure but also translators of intent and judgment, serving as coordinators who guide the whole.
Through this Chapter 2, we have been able to enhance the resolution of the terms "architecture," "architect," and "architecting."
Top comments (0)