Domain Circular Patterns

Masoud Bahrami
8 min readJan 10, 2025

--

Introduction

This article was originally posted on Exploratory Domain Discovery website.

In The Heart of EDD , I established that identifying circular patterns within a complex domain provides valuable clues for initiating exploration. This article delves into the rationale behind this approach, explaining its significance and offering heuristics for uncovering these patterns. EDD is heavily rest on the circular patterns in a complex domain. It’s the key to discover the value streams in a domain.

Why

Let’s start with the Why part.

Why is it crucial to seek circularity in complex domains? Does it genuinely aid in exploration? Imagine navigating a vast, dark room with only a dim torch — exploring such a domain is similar. Randomly searching every inch is inefficient. Clues that narrow the search area are essential.

Circular pattern is the first clue! Circular patterns serve as these initial clues, guiding our exploration in the right direction, even IF not the precise location.

Once you find a circular pattern, You can just put your focus on that part. If we learn a cycle of this circular pattern, if we solve the problem for that cycle, we can hope that the whole cycles are learnt and solved.

The Benefit of Finding circular Pattern

Circular Patterns

Circularity is inherent in many phenomena around us. Consider a wristwatch: it features second, minute, and hour hands, each exhibiting a cyclical pattern. The second hand completes a full rotation every 60 seconds, restarting its cycle. Similarly, the minute hand restarts every 60 minutes, and the hour hand every 12 (or 24, depending on the watch). Each hand demonstrates a circular pattern based on its specific function and time scale.

Calendars provide another clear example. Days cycle through weeks, months cycle through years, and years themselves can be considered part of larger cycles (decades, centuries, etc.). Each unit of time exhibits a repeating pattern.

Even currency demonstrates circularity. In the U.S. dollar system, the cent is the smallest unit. Every 100 cents “resets” to one dollar, creating a cyclical relationship.

Beyond these concrete examples, circular patterns appear in more abstract contexts as well:

  • The Water Cycle: Water evaporates, forms clouds, precipitates as rain or snow, and eventually flows back into bodies of water, restarting the cycle.
  • Business Cycles: Economies experience periods of growth, peak, recession, and trough, forming a cyclical pattern that repeats over time.

These everyday and abstract examples illustrate the concept of circular patterns. In the context of Exploratory Domain Discovery, recognizing these patterns within complex domains is crucial for understanding how systems function and identifying potential value streams.

By identifying these repeating cycles of activity, we can gain insights into the underlying structure and behavior of the domain, which is essential for effective exploration and discovery.

Circular patterns can highlight:

  • Recurring processes: Identifying steps that repeat can reveal core workflows.
  • Dependencies: Circularity can show how different elements within the domain influence each other.
  • Feedback loops: These loops can explain how changes in one area might ripple through the system.

By focusing on circular patterns, EDD provides a powerful lens for understanding and navigating complex domains.

Critically, finding these circular patterns helps to narrow our focus and effectively begin our exploration of these complex domains. By identifying these repeating cycles of activity, we can gain insights into the underlying structure and behavior of the domain, which is essential for effective exploration and discovery.

How

Imagine working on an accounting system. Such systems are inherently structured around repeating cycles. These cycles are not just isolated occurrences; they permeate the entire domain. Consider these examples:

  • Financial Periods (Fiscal Year): The most overarching cycle, typically a year, which then subdivides into smaller reporting periods.
  • Periodic Reporting (Monthly/Quarterly): Regular generation of financial statements (balance sheets, income statements, etc.) at set intervals.
  • Periodic Inventory Counts: Regular checks on physical inventory to ensure accuracy and reconcile with accounting records.
  • Time Period Assumption: The fundamental accounting principle that financial activity is divided into artificial time periods for reporting purposes, creating inherent cycles.
  • Revenue Cycle: The recurring process of generating revenue, from order to cash collection.
  • Expenditure Cycle: The recurring process of incurring expenses, from purchase requisition to payment.
  • Closing Transactions (Daily/Monthly/Seasonal): The process of finalizing financial records for a specific period, preparing for the next cycle.

As you can see, an accounting system is immersed in these cyclical patterns. Just sharpen your eyes to recognize them. As we say in Persian “like drinking water” — it’s often remarkably easy to find them.

It’s amazing how many things happen in cycles. With a little attention, these patterns emerge, revealing the hidden order of things. These cycles are often easy to see if you know what to look for.

Let’s look at another example: a payroll system. Payroll, like accounting, is also full of these cycles:

  • Pay Cycle: Employees record their time → Pay is calculated → Paychecks are made → Employees get paid → Reports are made (weekly, bi-weekly, or monthly).
  • Tax Cycle: Pay is figured out → Taxes are taken out → Taxes are sent to the government → Reports are sent to the government (various schedules).

When exploring a complex area like payroll using EDD, spotting these cycles helps us:

  • Understand the flow of money.
  • Identify important information.
  • See how different parts of the system connect.
  • Focus our investigation.

Just as with accounting, these repeating patterns help us understand how a payroll system works.

Let’s consider one more domain: a hotel. Here are some circular patterns:

  • Guest Cycle: Reservation → Check-in → Stay → Check-out → Post-Stay
  • Room Maintenance Cycle: Check-out → Cleaning → Inspection → Ready for Occupancy
  • Inventory Cycle (Amenities): Stocktaking → Ordering → Delivery → Restocking
  • Financial Reporting Cycle: Data Collection → Report Generation → Analysis → Planning/Budgeting

BUT

Sometimes these repeating cycles occur on such a small scale that they become akin to Atomic Operations. At this level, distinguishing them as distinct patterns can be challenging. When the duration of a cycle shrinks to the point of becoming an atomic operation, the boundaries between individual cycles blur, making it difficult to perceive them as distinct repeating patterns.

Imagine a film played at extremely high speed. Individual frames, which are distinct units, become indistinguishable, appearing as a continuous blur. Similarly, when cycles become extremely rapid, they can resemble atomic operations, making it difficult to discern their repeating nature.

Observing the Atomic Level-A Note on Micro-Cycles

Consider online booking systems. Reserving a flight seat or checking hotel room availability appears to be a single, instantaneous action. These cycles occur so quickly that they are often perceived as atomic operations from the user’s perspective. Because these underlying cycles are so tightly integrated into the system’s core functionality, they are rarely considered distinct repeating patterns. Instead, they are abstracted away, presenting the user with the illusion of a single, seamless interaction. They have effectively become atomic operations from the user’s perspective, essential building blocks of the online booking experience.

It’s essential to be mindful that not all cycles are readily apparent. These rapid, almost atomic, cycles require careful observation and analysis to be uncovered, but the insights they offer are well worth the effort. Because these underlying cycles are so tightly integrated into the system’s core functionality, they are rarely considered distinct repeating patterns. Instead, they are abstracted away, presenting the user with the illusion of a single, seamless interaction. They have effectively become atomic operations from the user’s perspective, essential building blocks of the online booking experience.

So, keep a sharp eye out! These rapid cycles might be hidden, but they’re there, and finding them can be very revealing.

When You Stuck in a Foggy/Bleary Domain Space

Exploring a complex domain can often feel like navigating through dense fog — you know there’s something there, but it’s difficult to make out the details. In some domains, unlike accounting or payroll, clear cyclical patterns aren’t immediately obvious. There are no readily apparent schedules or recurring transactions. In these “bleary spaces,” finding circularity requires a more deliberate and analytical approach.

As repeating circular patterns inherently involve a notion of time. Look for words and concepts related to duration, frequency, and repetition.

Focus on Time-Related Concepts

Because repeating circular patterns involve repetition over time, focusing on time-related concepts can be a powerful heuristic. Words and concepts related to duration, frequency, and schedules are key indicators.

Contracts, for instance, have a defined duration, often with renewal cycles, creating a clear cyclical pattern. In a guarantied hotel domain, you guarantied a hotel for a specified duration based on a contract. Similarly, in a payroll system, employee contracts and regular payment schedules establish recurring cycles.

Visualize the Patterns

So, you think you’ve found some cycles? Awesome! Now, let’s get visual.

Now that you’ve got some ideas about potential cyclical patterns, grab a domain expert and start talking! Have them explain how things flow in the domain, and as they talk, start sketching out a timeline. This collaborative approach can be incredibly valuable. The expert’s narrative combined with your visual representation will help solidify your understanding of the cycles.

For example, let’s consider the financial year in accounting. In an abstract way, we have a journal per year, and every financial transaction is booked on it. Every financial transaction has at least two subledger accounts on them.

More Than One?

In the next articles I’ll delve into dealing with more than one circularity patterns.

--

--

Masoud Bahrami
Masoud Bahrami

Written by Masoud Bahrami

DDD teacher and practitioner, software engineer, architect, and modeler. Specialized in building autonomous teams and services.

No responses yet