Archive of posts with category 'Practices'

A Definition of Ready for Architectural Decisions (ADs)

It is important to hit the most responsible moment for an Architectural Decision (AD) about a pattern or other concept, technology or product. But when is an AD actually ready...

An Adoption Model for Architectural Decision Making and Capturing

Architectural Decision (AD) making and capturing are essential tasks for enterprise architects and solution architects; Architectural Decision Records (ADRs) have become increasingly popular. However, principles and practices for AD management...

How to review Architectural Decision Records (ADRs) — and how not to

This post reflects about reviewing ADRs. It identifies three review perspectives, recommends related practices and discusses anti-patterns. A review checklist is provided and an ADR reviewer pledge proposed.1 ADR stands...

How to create Architectural Decision Records (ADRs) — and how not to

ADR stands for architectural decision record, but could just as well stand for archive of design rationale. This post is about making ADRs valuable; a sibling post covers ADR review....

Design Practice Repository and Reference: GitPages Enhanced and eBook Completed

Our public Design Practice Repository (DPR) and the corresponding eBook at LeanPub collect proven method elements for agile architecting in general and API/service design in particular. Version 1.5 of the...

The Markdown ADR (MADR) Template Explained and Distilled

The Markdown Architectural Decision Record (MADR) Template turned five on Nov 22, 2022. MADR stems from documenting architectural decisions and used to be named “Markdown Architectural Decision Records”; but time...

Questions to Ask when Migrating to the Cloud

Cloud-Native Application (CNA) has been a trending buzzword in blogs, books and articles for several years now. But what about migrating an application to the cloud? How to find out...

Process-Oriented Service Design with Discrete Event Simulation

The post on “Event-Driven Service Design” proposes continuous refinement steps to derive process flows and API designs from event-command chains. Here, we show how to convert such process flows to...

Story-Driven Service Design: From Feature Request to Minimum Viable API Product

Goal-oriented API design (“contract-first”) is a recommended practice in the Web API community; data modeling is equally important to balance API granularity and client-provider coupling. Finally, refactoring to API patterns...

Event-Driven Service Design: Five Steps from Event Storming to OpenAPI and Camel Flow

Event storming workshops yield domain events and commands (among other artifacts). This post proposes a continuous refinement process to derive an API design and an executable integration flow from such...

ADR = Any Decision Record? Architecture, Design and Beyond

If architectural decision records are so useful to capture software design rationale, why not extend their scope: Can they log organizational and managerial decisions as well? How about everyday decisions?...

APIs should get to the POINT

This post proposes five principles for API design, summarized in the backronym POINT: purposeful, style-oriented, isolated, channel-neutral and T-shaped.

Do Software Architectures Meet Extra-Functional or Non-Functional Requirements?

Should our favorite “-ilities” and miscellaneous design/decision drivers be filed under “Non-Functional Requirements” or “Extra-Functional Requirements”? The two editors of IEEE Software Insights do not agree. Read their arguments and...

DPR: Open Source Repository and eBook Collecting Mighty Methods

The Design Practice Repository (DPR) on GitHub collects proven method elements and other knowledge nuggets for API and service design — and agile software architecture work in general. This post...

Architectural Significance Criteria and Some Core Decisions Required

What is important when analyzing and designing software architectures, and what is not? This post proposes 5+2 criteria for the architectural significance of requirements (and other artifacts) and applies them...

Domain-Driven Service Design with Context Mapper and MDSL

In an ICWE keynote, I presented(ed) our evolving tool chain for object-oriented analysis and design (or DDD, to be precise) and service design. Here’s how to run the full demo....

A Definition of Done for Architectural Decision Making

It is good to know when the most responsible moment for an architectural decision about a pattern or technology has come. But when can a decision be considered done? This...

Architectural Decisions — The Making Of

Architectural Decisions (ADs) have been answering “why” questions about design options since the inception of software architecture in the 1990s. Ways to capture them should be part of each architect’s...