“Good architecture is like a piece of beautifully composed music crystallized in space that elevates our spirits beyond the limitation of time.” — Tao Ho
What is systems architecture and why do we care?
A systems architecture supports the highest layers of the enterprise architecture and it helps keep the enterprise architecture aligned to the business.
Software systems have become an integral part of our daily lives, from the applications we use on our smartphones to the complex enterprise systems that power our businesses.
However, designing and building these software systems is not a simple task. It requires a well-thought-out approach that involves a thorough understanding of the system’s requirements, its components, and the relationships between them.
This is where systems architecture comes in. In this article, we will explore what systems architecture is in the context of software engineering, why it’s essential, and the key components that make up a robust systems architecture.
Whether you’re a software developer, project manager, or stakeholder in a software project, understanding systems architecture is crucial to ensuring the success of your project.
In A Practical Guide to Enterprise Architecture, James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo write about systems architecture.
Key Takeaways
Here are my key takeaways:
- A system is the structure and constellation of machines, applications and network resources to support a particular function.
- Systems architecture is a process and a discipline.
- Enterprise architecture includes: business, information, operational, organizational, architectural, and infrastructural layers.
- The purpose of the systems architecture is to support the highest layers of the enterprise architecture.
- The systems architecture helps align the enterprise architecture to the business.
What is a System
A system is the structure and constellation of machines, applications and network resources to support a particular function.
In software engineering, a system refers to a collection of related software components or modules that work together to perform a specific set of functions or achieve a specific goal. A system can be thought of as an organized structure or architecture that provides a framework for software development and deployment.
A software system can be broken down into various layers, such as the user interface layer, the application layer, and the data layer. Each layer is responsible for handling specific tasks and communicating with other layers to perform the overall functionality of the system.
Software systems can range in complexity from small standalone applications to large-scale enterprise systems. They can be designed for a variety of purposes, such as managing business operations, controlling industrial processes, or providing entertainment to users.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“A system is an interconnected set of machines, applications, and network resources.
Systems architecture unifies that set by imposing structure on the system.
More importantly, this structure aligns the functionality of the system with the goals of the business.”
What is Systems Architecture
Systems architecture is a process and a discipline.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“Systems architecture can best be thought of as both a process and a discipline to produce efficient and effective information systems.
It is a process because a set of steps is followed to produce or change the architecture of a system.
It is a discipline because a body of knowledge informs people as to the most effective way to design.”
Systems architecture in software engineering refers to the high-level design and organization of software systems. It involves the process of defining the structure, components, modules, interfaces, and relationships between various elements of the software system.
The goal of systems architecture is to ensure that the software system meets the functional and non-functional requirements of the stakeholders, such as scalability, reliability, performance, maintainability, and security.
A well-designed systems architecture can also help to minimize the risks and costs associated with software development and maintenance.
The systems architecture typically includes a variety of diagrams, models, and specifications that document the design decisions and provide a blueprint for software development.
Commonly used models in systems architecture include the Unified Modeling Language (UML), Data Flow Diagrams (DFDs), and Entity-Relationship (ER) diagrams.
The role of a systems architect is to lead the design process and collaborate with other stakeholders, such as software developers, project managers, and business analysts, to ensure that the software system meets the requirements of all stakeholders.
The systems architect is also responsible for ensuring that the software system is well-documented and can be easily maintained and updated in the future.
Enterprise Architecture Model
McGovern, Ambler, Stevens, Linn, Sharan, and Jo suggest the following model for Enterprise Architecture:
- Business
- Information
- Operational
- Organizational
- Architectural
- Infrastructural
In this model, the Infrastructural layer is on the bottom and it supports the layers above.
Systems Architecture Supports the Highest Layers of the Enterprise Architecture
The purpose of the systems architecture is to support the highest layers of the enterprise architecture.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“The basic purpose of the systems architecture is to support the highest layers of the enterprise architecture.
In many companies, the software and hardware represent a significant portion of the enterprise’s total assets.
It is important that enterprise architects do not equate their duties with the objects, the applications, or the machines that comprise their domain.
The fundamental purpose is to support and further the business objectives of the enterprise.
Hardware and software objects are fundamentally transient and exist only to further the purposes of the business.”
Systems Architecture Keeps the Enterprise Architecture Aligned to the Business
The systems architecture helps align the enterprise architecture to the business.
McGovern, Ambler, Stevens, Linn, Sharan, and Jo write:
“Systems architecture is also used as part of the process of keeping the enterprise architecture aligned with the business goals and processes of the organization.
It is important to understand the technical details of the infrastructure and the application running within it but also to have the knowledge to participate in the process of architectural change with the enterprise architecture team.
That involves the following:
1). defining the structure, relationships, views, assumptions, and rationales for the existing systems architecture and the changes in relationships, views, assumptions, and rationales that are involved in any changes required for moving from what is to what is desired.
2) Creation of models, guides, templates, and design standards for use in developing the systems architecture.”
A Well-Designed Systems Architecture Heps Ensure Quality and Manageability for the Long Run
Systems architecture is a critical component of software engineering that involves the design and organization of software systems. It provides a framework for software development and deployment, ensuring that the software system meets the functional and non-functional requirements of the stakeholders.
A well-designed systems architecture can help to minimize the risks and costs associated with software development and maintenance, and ensure that the software system is scalable, reliable, performant, maintainable, and secure.
A systems architect plays a crucial role in leading the design process, collaborating with stakeholders, and ensuring that the software system is well-documented and easily maintainable.
You Might Also Like
Conceptual Architecture View, Module View, Execution View, and Code View
4+1 View Model of Software Architecture
Architectural Patterns vs. System Metaphors
A Functional Skeleton of the System as a Whole
JD:
You are using the wrong books to get an understanding of Enterprise Architecture. “System Architecture” does not support the first “layer” of Enterprise Architecture – it is the result of transforming the business understanding into something else, of which a system is one of many transformations.
It sounds like you’re saying systems arch is the result of transforming the business understanding into something else. Can you elaborate?