8 January 2008

Should IT model the real world?

By Andrew Clifford

We assume that IT should be based on a detailed model of the real world. But the best IT is simpler and focuses on the areas of greatest value.

When we learn data analysis, we are taught to model the real world. We create data entities that represent real world entities, like "person". We create attributes that reflect real-world properties of the entities, like "date of birth", "last name" and "first name".

We take this further in object oriented analysis. As well as defining data, we define methods that reflect the real-world actions that can be performed on or by the object.

When we analyse business processes, we do something similar. We map out activities, who does them, and the flows of information between them.

We then take our analysis into design. We design data, objects and processes that represent the world as it is, or as we want it to be.

The larger and more serious the requirements, the more detailed our models. We create fully elaborated data models that can capture every last nuance, detailed object models, highly decomposed process models.

We assume that good analysis and good design requires us to build and then to implement a detailed model of the world, either as it is or as we want it to be. We assume that databases should store every nuance of real-world data, programs should implement every exceptional business rule, and every detailed business process should be automated. The goal of IT is to implement an ever more accurate model of the real world. If we were painters, we would aspire to the realism of Canaletto.

This view is not just wrong, it is potentially damaging.

At its core, IT is very simple. IT automates the storage, processing and communication of information. IT adds value when it does so in a way that is quicker, cheaper or more accurate than people. But there is always some cost involved in providing and using IT. Even if IT cost nothing to implement, it is another thing to think about, and another thing to support. If the IT does not make the activity quicker, cheaper or more accurate, then IT is not just unnecessary, it is damaging. Attempting to automate all the information and all the business processes adds hugely to the cost of IT and undermines the value.

We need to think about this during analysis and design. Of course we should start with a model of the real world, but we should not attempt to capture and implement ever nuance. We should focus on the information activities where IT can add most value. We should carry out "creative simplification" to build systems that present simple, powerful and valuable capabilities. We should be clear about the limitations of IT, and not pretend it can do everything.

Our IT should focus on providing an ever more valuable tool for the real world, not an ever more accurate model of it.