Why Fact-Based Modeling?

Software is not mainly about how, but about what and why. Software projects fail most commonly because they build the wrong thing, not because they build it wrongly. Other forms of modeling, such as object modeling and entity relationship modeling, attempt to capture what, but the models are shaped from the start by the needs of implementation (how). That shuts out the non-technical business expert, and bends the model out of shape, losing track of why each feature is needed, what it means and under what terms, the roles it plays in the overall system. Fact-Based Modeling incorporates and transcends both approaches, and works in either Agile or traditional environments.

Fact-based models are constructed in elementary form. Every concept, whether a business entity or a relationship, is represented in the simplest possible form, isolated from all other concerns. Every role that each concept plays in the system is incorporated in simple business rules that can be effectively verbalised in plain language, displayed on diagrams, and managed in a system ontology (vocabulary). The elementary form is the most direct mind-map of the business domain that can be constructed, is based on pure logic, and is easily verbalised. That makes it much easier to understand and validate by all parties, especially the business expert. Purely for its benefits in specification, fact-based modeling is revolutionary.

Because the fact-based approach is founded in pure logic, it can be automatically transformed into working software, in the form of executable code and database designs in efficient normalised form. It's a common experience that very small changes (even additions) in business rules can require large changes to the structure of a database. Contrary to existing methods used to design and access databases, fact-based modeling allows you to make radical changes in the underlying physical table structures without the huge ramifications in your application code. The advantages in business agility are manifold.