Models instead of source code

Models instead of source code

When software is based on models, it stops aging and starts evolving alongside the business.

Published on August 23, 2020

Shifting from source-code-first to model-first turns software into a living system, capable of continuously adapting to new technologies and business contexts.

🧩 Models instead of source code

When software is based on models, it stops aging and starts evolving with the business.

All code ages, but a model can mature. Moving to model‑driven systems separates functional concepts from the technology that executes them — software becomes structured knowledge, not just lines of code. Instead of rewriting everything with each new stack, you preserve what the organization knows how to do well and only change how it is executed. Architecture stops being an obstacle and becomes a mechanism for evolution.

Why this happens

Business rules and market conditions change faster than most platforms and frameworks. When rules are hard‑coded into a specific stack, every new requirement or technology shift forces teams to touch large amounts of code, carrying the risk of regressions and side effects. The result is an architecture that grows more fragile the longer it lives.

Model‑driven systems attack this fragility by preserving functional identity in a form that is independent of the underlying technology. Instead of expressing behavior only in source code, they capture it in declarative models and treat runtimes, frameworks, and infrastructure as interchangeable “technical shells”. Swapping that shell keeps the system alive without losing the context encoded in the model.

Evidence and signals

Signal: Releases are blocked by fragile technical dependencies.

Interpretation: Functionality is glued to specific technologies.

Action: Isolate rules into models and version contracts between model and runtime.

Signal: High effort to port functionalities to new stacks.

Interpretation: Low technological neutrality and high coupling.

Action: Introduce an abstraction/generation layer driven by models.

Signal: Functional changes require broad refactors across the codebase.

Interpretation: Structural coupling between business concepts and implementation details.

Action: Map domains and move rules into declarative models that can be evolved independently.

In short

Model‑first thinking is digital sustainability applied to architecture: it preserves what is essential in the business while allowing technology to rotate around it. By putting models at the center, you reduce the cost of every technical shift and increase your ability to experiment with new platforms. Software stops being a rigid block and becomes an organism that learns without losing its identity.

How to act

  1. Identify stable rules and migrate them into declarative models.
  2. Define clear “contracts” between model and execution (generation, adapters, or interpreters).
  3. Measure functional adaptation time versus technical effort over successive changes.

You will know you are progressing when “full rewrite” conversations are replaced by discussions about evolving models and connectors.

If we ignore this

If we ignore this, systems will continue to “break” at each major technology change. Functional knowledge will remain scattered across code, difficult to discover, preserve, and evolve. Every modernization cycle will feel like starting from scratch instead of building on what the organization already learned.

Reflection prompt

Which functionality could be the first to move from source code to model source?

veja também

Have a question about this topic?