From Complexity to Clarity: Architecting Software
Tags: softwareengineering, architecture
Published: 2023-06-05 06:02:17

**Intro**:
From the early days of the Zachman Framework to the more comprehensive TOGAF, the 4+1 architectural view model, and the recent C4 model, these models have offered architects and developers new approaches to software design and catered to the evolving industry demands. Advanced frameworks like TOGAF and Zachman, while providing a structured approach to software architecture, can be difficult to implement effectively in practical scenarios. The complexity of these frameworks often hinders architects and developers from extracting tangible value, particularly in large-scale, intricate digital transformation projects.
The article aims is to sheds light on how newer models like C4 strive to strike a balance between complexity and practicality, aiming to make a meaningful impact in the realm of software architecture.

**Need for software architecture**:

- Shared language for developers, architects, and business stakeholders to discuss and understand complex system landscapes

- Architecture models help in managing complexity by breaking down the system landscape into smaller, manageable components

- Reasoning about the current state and desired future state of software systems in complex enterprises.

- Models facilitate planning and execution the software development process

**The Power of Perspective**
Enterprise architecture and Software architecture are interconnected disciplines that center around the planning, structure, and administration of systems. 

**SA** - The <u>focus</u> is with respect to design and implementation of software systems. The topics covers the system functional and non functional design and conceptualize logical architecture, physical architecture, deployment architecture, and operational architecture. The <u>goal</u> is to ensure the system design addresses the usability and operability also to ensure quality and reliability of the system.

**EA**- The <u>focus</u> is with respect to strategic and tactical objective for the business growth. Understand the underlying business process, the data involved, the system landscape and the underpinning technology stack. The <u>goal</u> is to drive efficiency, scalability, and adaptability at the same time managing complexity, reducing risks, and facilitating decision-making across the organization.

An architecture **_model_** is like a map or a plan that helps us understand how something is organized or put together. The detailing could be at micro level / component level. An **_architecture framework_**, on the other hand, is like a set of rules or guidelines. The detailing is at macro level.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ere32pdwa25o08cy4vgb.png)

An **_architecture framework_** provides a standardized structure, methodology and set of tools for developing and managing architectures. It typically includes a set of principles, concepts, and practices that guide the creation of architectural artifacts, such as models, diagrams, and specifications.
A **_model_** can refer to a concrete set of views (or diagrams) describing a specific system landscape. A model could include a context view, data model view, a component view, an integration view and a deployment view. (also **_metamodel_**)

TOGAF is an enterprise architecture framework and C4 is a software architecture model. Having said that the application domain of TOGAF has lot of overlapping with C4Model. 

Let's imagine we are tasked to build **_TIE Interceptor_** lego.
The building instruction are bundled into smaller groups and each smaller block of building provides a view of how the smaller component fits with the whole Tie Interceptor. This smaller instruction for building an component is architecture Model.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2n8hgabf2ybc863e25xw.png)

Once we have built all the individual components, the instruction of how we combine all the components to build the complete TIE interceptor is framework. An architecture framework, on the other hand, is like a set of rules or guidelines that help us create and organize our LEGO creations


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sl5qj3pm9q8r5idcwwev.png)

Focusing on individual meta-model should help software team to understand and develop software for the problem in scope. Choice wisely whether its Application domain of **_TOGAF_** or **_C4Model_**

From Architecture Framework on left to C4 Model on the right

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z0qy0c66dg14l2saxq30.png)




**<u>_Further Read_</u>**

1. https://www.opengroup.org/togaf
2. https://c4model.com/
3. https://www.zachman.com/about-the-zachman-framework