Saturday, November 03, 2007

Synthetic vs. Natural Objects

Structured programming shifted to Object-Oriented Programming in the 90's. Enterprises throughout the world adopt Object-Oriented technology for all their serious applications.

Over the last 20 years, waterfall model of development has slowly transformed into a more prototype-oriented agile model. Though most folks adopt all the technically "correct" methodologies and alphabet-soups, cost of development in terms of time and money shows no slowing. Even off-shoring has not seriously reduced the amount of money needed to create serious applications. The cost of development and maintenance seems to add up to the same amount.

Everyone is/will be moving into the net paradigm, but IT budget requirements seem to be increasing - not decreasing. What is the issue here? One could argue that the use of methodologies without consideration of their applicability can give much skewed results from the expected. If the model is incorrect, the results will be unexpected. A core issue to realize is the inapplicability of object oriented systems when the object world has changing aspects.

One could define synthetic object world as an object model where all objects (or most of them) are defined artificially in a complete sense. For example, the Excel Object model contains worksheets, workbooks, application, cells, etc. All of these are completely under the control of the programmer who makes excel. On the other hand, natural objects deal with real-world objects. For example, and employee - has an age, salary, color, race, sex, picture, role, bank account, spouse, children, parents, and many other attributes. A system trying to reflect a person with an object can only cover a few aspects in real-life.

Since the superset of all attributes of a natural object cannot be represented in software, natural objects systems tend to run into problems when they try to reflect real-world interactions. Many of the failures in software engineering occur when the natural vs. synthetic boundaries are mixed.

In enterprises, the focus should be on data organization, not data relationship organization. Otherwise, each system will have its own artificial database, and an enterprise wide system will be hard to make and maintain.

The same danger awaits the Semantic Web, which is a small part of the next generation of Web 3.0. The simplification of data into silos of artificial structures that do not reflect and recognize synthetic vs. natural objects will run into the same trouble that enterprise systems have at the moment. We can predict that a practical Semantic web will be impossible with "aspects" being reflected onto it. Tags alone cannot make a Web 3.0 world.