Architecture

What is it?

Every Application has an Architecture

Whether or not a project team has a software architect, every application has an architecture - and somebody needs to establish and nurture it. Otherwise it is a slippery slope to entangled code and non-maintainable and brittle systems.

Every Team has guiding architects (regardless of designation)

Many of us working in software delivery teams do the work that can be labeled as software and enterprise architecture, without having the labels (designation).

Most software projects will have a small set of senior developers who create a workable architecture - whether they document it or not. So architecture is as much a skill, as it is a role.

Good software architectures focus on business requirements

…rather than frameworks, languages, diagrams, or programming paradigms (procedural, functional, etc). All these are used in creating applications, but the underlying principles that guide the architecture are informed by business requirements.

When software architecture decisions are based on technology rather than business requirements,

it is primarily due to two reasons [@Enríquez2018] :

1. Familiarity: Comfort Zone

You’re at home with what you know best!

2. Skills Reboot: Tech Bandwagon

You want to be seen as hip!

What is EA (Enterprise Architecture)?

a framework for managing the structure and strategy of an organization

execution is Key (more so than the idea itself)
An excellent framework for organizational effectiveness will have no impact unless people know how to apply it in practice.

The EA framework provides the processes for translating the strategy (intent) into organizational effectiveness in achieving the strategy (aligning to strategy). [@Jager2023]

Drivers of organizational strategy

Business Values

…agility, or the need to quickly respond to change via responsive IT systems and digital service delivery models

Environment changes

the imperatives of navigating complex regulations and the economic environment

What is Software Architecture

At a conceptual level, architecture is simple: you apply patterns, create perspectives, etc. However, reality is complex: you release a product and entropy takes over.

Similarly, dev teams face day-to-day struggles from opposing pulls of speed, quality, cost, etc.

Discipline Vs. Craft

To be useful, visual models need to reflect reality. And architects need to develop the skill of effective visual communication of software architecture.

Architecture:

The goal of architecture is to enable early and continuous delivery of business value from the software being developed.

Why create a Software Architecture?

Evolution in Architectural Paradigms: IS to EA…

1980s: the age of the monolith & vendor lock-in

Monolithic architectures, with all application components in a single executable running on a single machine were standard.

1990s: the age of the distributed monolith

2000s: the age of Internet-enabled, connected architecture and distributed computing.

Cut to present day, “creating software architecture diagrams seems to be a lost art”

Visual learners (understand through diagrams or the written word), might prefer to visualize a problem or business process as a high-level domain model.

Today, if you ask someone to draw an architectural diagram, you get an ad-hoc collection of “boxes and lines” – diagrams with no clear notation or semantics.
e.g.

Activity
Draw an architecture diagram to describe your software system

Demo examples some show very high level abstractions, some show low-level design details some diagrams show static structure, some show runtime and behavioural aspects.
some show technology aspects, most don’t.

The problem is the need to represent varying levels of abstraction, structural vs dynamic aspects, technology choices, etc.

Architectural Styles

APIs

Visualizing

Glossary

Artifacts: architecture deliverables such as models, templates

References