Architecture

Analysis Patterns

Discover the hidden patterns that make great software tick—explore Martin Fowler's analysis patterns that capture recurring business logic and domain knowledge into reusable, battle-tested solutions

Series: Design Patterns and Analysis | Introduction > Developed during Master’s in Web Systems Projects

A few weeks ago, during our Object-Oriented Modeling and UML class with Professor Osmar Fernandes Jr., we were introduced to Software Analysis Patterns. This post summarizes that concept and shows how it helps us model recurring business structures with clarity.

Why It Matters

As systems and business processes grow in complexity, they generate thousands of rules, entities, and relationships. Analysis patterns help us to:

  • Share reusable solutions
  • Formalize domain concepts
  • Avoid reinventing the wheel in new modules or systems

What Are Analysis Patterns

In his book Analysis Patterns: Reusable Object Models, Martin Fowler defines these patterns as reusable conceptual models. Each pattern represents a combination of classes, attributes, and relationships that occur repeatedly across different business domains.

They allow us to communicate complex ideas visually and with consistency.

UML Examples

Party

Defines a generic supertype for people and organizations.

  • Avoids duplicated logic across entities that share the same relationships (e.g., address, phone)
  • Useful for modeling any “actor” in a system
Analysis Pattern - Party

Quantity and Unit

Represents a numeric value tied to a unit (e.g., 20 km).

  • Quantity wraps the value and unit
  • Supports operations like +, -, *, / between compatible quantities
Analysis Pattern - Quantity

Conversion Ratio

Allows transforming a Quantity from one unit to another.

  • ConversionRatio links two units via a multiplier
  • Used in operations like convertTo(Unit)
Analysis Pattern - Conversion Ratio

Compound Units

Models composite units like km/h or $/m².

  • Represents combinations of multiple Unit instances
  • Supports more advanced measurement systems
Analysis Pattern - Compound Units Basic Analysis Pattern - Compound Units Detailed

Organizational Hierarchies

Models hierarchical structures recursively.

  • Organization can have a parent and multiple subsidiaries
  • Ideal for modeling regions, divisions, offices, etc.
Analysis Pattern - Organization Hierarchies

Organization Structure

Makes explicit the type of organizational relationship.

  • Defines Organization Structure Type (e.g., subsidiary, joint venture)
  • Decouples the relationship from the entities involved
Analysis Pattern - Organization Structure

Conclusion

Analysis patterns help us visualize, discuss, and build more robust systems aligned with real-world domains. They are reusable, precise, and often save hours of discussion.

In future posts, we’ll explore how design patterns complement these concepts during implementation.


Series Navigation