Skip to content

Metamodeling in Phaset

Phaset uses a metamodel to organize software across multiple dimensions. Instead of forcing everything into a single hierarchy, the metamodel lets you describe software from different perspectives simultaneously—business context, technical architecture, and team ownership.

Think of it as adding tags to your software, but structured tags that answer specific questions.

Every Record in Phaset can be associated with three types of metadata:

ConceptQuestion it answersPurposeExample
DomainWhat business area?Business contextE-commerce, Payments, Analytics
SystemWhat capability?Technical groupingCheckout Flow, User Management
GroupWho owns this?Team ownershipPlatform Team, Data Engineering

These aren’t nested—they’re orthogonal. A single Record can belong to one of each:

  • Domain: E-commerce (business area)
  • System: Checkout Flow (technical capability)
  • Group: Payments Team (owning team)

Different people care about different views of your software:

  • Business stakeholders think in Domains: “How’s our E-commerce platform doing?”
  • Architects think in Systems: “What’s the health of our Checkout Flow?”
  • Engineers think in Groups: “What does the Payments Team own?”
  • Executives think in all three: “Which team owns the Checkout capability in E-commerce, and how’s it performing?”

The metamodel lets everyone ask questions in their own language while looking at the same software.

When you create a Record for a service, you can assign:

Record: Payment Gateway API
├─ Domain: E-commerce (optional)
├─ System: Checkout Flow (optional)
└─ Group: Payments Team (optional)

Now you can:

  • Filter by Domain to see all E-commerce software
  • Filter by System to analyze the Checkout Flow
  • Filter by Group to see what Payments Team maintains
  • Combine filters to see Payments Team’s work on E-commerce

Unlike traditional org charts or folder structures, Phaset’s metamodel doesn’t force strict parent-child relationships:

  • One System can span multiple Domains
  • One Group can maintain Records across many Systems
  • Records can exist without being assigned to any Domain or System

This flexibility matches reality: software doesn’t neatly fit into boxes, and forcing it to creates artificial constraints.

Records are the foundation. Domains, Systems, and Groups exist to organize and contextualize Records—not to replace them.

You always work with Records. The metamodel just helps you:

  • Find the right Records faster
  • Understand their context
  • Analyze them in meaningful groups

Imagine a completely realistic and plausible scenarion: You work at a large e-commerce company and your payment system starts acting up, being slow during checkout. What do you do if you have to find out more about the system and the people behind it?

Without a metamodel, you’d have to browse, quite possibly, hundreds of services hoping to find the right ones.

With a metamodel it’s much simpler:

  1. Filter by Domain: E-commerce → a dozen services
  2. Filter by System: Checkout Flow → half a dozen
  3. Filter by Group: Payments Team → one or a few

You went from hundreds of possibilities to the most relevant services in seconds.

  1. Start with Records (what you have)
  2. Add Groups (who owns it)
  3. Add Systems when you have enough Records that grouping makes sense
  4. Add Domains if business context matters to your stakeholders

Don’t over-engineer it upfront. The metamodel grows with your organization.