Designed for your enterprise team

 
factify_ceos.png

For CIOs and CEOs

Do you want to future-proof your data without burning down your stack and starting from scratch?  With Factify you get future proofing because the information model is an abstraction layer divorced from any tech stack or database implementation.

factify_modelers.png

For Information Modelers

Are you ready to work at a speed that has not been possible before? Finally, you can maintain the quality of your schema and update your models in a way that reflects the pace of change in the real world.  With Factify, you get to guide the solution and craft the intersection between business and technology.

factify_business.png

For Business Analysts

To be truly data-driven you need meaningful analytics which are tightly coupled with the actual work your business does - and you are the expert in that domain!  Factify makes it as simple as reading a line of text.


Fact-based modeling

Fact-based modeling (FBM) is a methodology for modeling the information semantics of a domain that is:

  • independent of the implementation-specific representation;
  • can be validated by subject matter experts based on concrete examples; and
  • is sufficiently rich to allow the generation of logical and physical models, transformation code and related artefacts for information systems development and systems design. 

Fact-based modeling is the core methodology underpinning Factil's model-driven approach.


A simple example - A Bicycle Tour Company

The easiest way to introduce Fact-based modeling is through a simple example.  This is example is based on the information that would be stored and exchanged in a company that runs multi-day bicycle tours for clients.

A Fact-based model seeks to express the information model of a domain in language of the domain.  It starts by considering the typical statements that would be spoken or written by users in the domain. Here are some typical statements from a bicycle tour company.

bicycle-tour-sentences.png
 

From a modeling perspective we consider each of these statements to be a fact, which expresses the relationship between objects or the characteristics of an object.

The objects are individually identifiable things.  A common practice in natural language is to make an statement and then later to refer to that statement as if it was an object.  There are two examples above: "this tour booking" refers to the fact that Joe Smith has booked the Pyrenees Tour starting on 15 July 2017, and "this hotel booking" refers to the fact that Chateau Elan is reserved for this tour booking starting on 17 Just 2017.  Linguists refer to this mechanism as objectification.

In Fact-based modeling, objects can be:

  • values (such as the string "joe.smith@gmail.com"),
  • entities that are identified by a name or id (such as the client Joe Smith), 
  • named facts which are objectified facts which have been given a name (such as tour booking).

Modeling is concerned with abstracting concrete information into a generic model expressed in terms of types.  A Fact Type is the definition of the possible set of facts with the same relationship.  An Object Type is the definition of the set of possible objects of the same type.

Factil's Fact Information Modeling Language (FIML) is a text-based fact-based modeling language.   The language is explained in the Introduction to FIML article.  But to give you a sample of the language, here is the complete FIML for statements above.

 
bicycle-tour-model.png

The text shown above is coloured for readability, but the language itself is independent of the colour:

  • Blue is for reserved words and phrases
  • Purple is for object types
  • Orange is for values and quantifiers
  • Green is for words that make up the readings of fact types
  • Brown is for qualified and explicit roles

 This FIML model is used for the example outputs shown in the section below.


Composing to different forms

compose-to-different-forms.png

The fundamental idea with the Factil model-based approach is that fact-based information model can be composed into a wide range of relational and non-relational forms in order to produce a consistent collection of schemas, transformation code and design artefacts.

A fact-based model is an excellent starting point for this process because the model itself is fully decomposed to elementary statements about the nature of the information model.  With these building blocks, well-structured composed forms can built using specific composition algorithms.

The algorithms can generate schemas, code and other artefacts directly, or the algorithms can generate metadata that can be input into other programming tools already in use in an organisation.


From the one model generate ...

Business Glossary

A hyperlinked glossary of business terms generated directly from the information model.  Consisting of:

  • Informal definition
  • Formal definition within fact-based model
  • Fact types providing usage of the business terms across the model
business-glossary.png
application-database.png

Application database

A well-structured third normal form relational database generated directly from the information model.  The relational database includes primary keys and foreign keys built according to the identification schemes within the information model.

Application model code (MVC)

For application development, the Model part of the Model/View/Controller design pattern that matches the application database can be generated directly from the information model.  This example shows the code generated for Ruby on Rails.

bicycle-tour-mvc.png
datavault-schema.png

Data Vault data warehouse

Data Vault is a "third generation" approach to developing agile data warehouses.  The approach is being adopted by many leading data organisations.  There is a strong conceptual link between Data Vault's hubs, links and satellites, and Fact-based modelings entity types and fact types between two or more entity types.

Read the article on Fact-based modeling and Data Vault for more details.


Cool, I'm interested. Can I get a demo?