Hide this madness

From Object to Context Orientation – The Evolution of Software Engineering

Conceptual Shift

Software development has undergone many recent changes, such as agile processes, domain specific languages, SOA and semantic web. We seem to have encountered a paradigm shift that expresses the discontent with a centralized perfect world, and embraces a world of variety and distribution. The discontent is related to the ontological principle that describes how an object is related to the world.

To be a successful conceptual modeler, the desire to model the world is to make a computation possible with respect to the reality. In our case, the reality may be a system in the banking or health industry. Usually, the reality is complex with a large number of concepts and conceptual relations. We, including the customer, would define ‘success’ with the model as having an accurate, efficient and economical result.

In this article, we would argue the shift from object-oriented to context-oriented modeling is the main characteristic of modern software development, where the centralized ontological principle is challenged. In the world of context, the measurement of success is also shifted from “just enough” to “change ready”. To understand this conceptual modeling shift could equip us to understand the future of modeling, handling the complexity in the real world of changes.

From Object to Context

To build a conceptual model is to provide a way to look at the world of reality. After the world is projected into the selected conceptual modeling parameters, such as objects, attributes and methods in object-oriented way, we can better examine their represented concepts and their relationship reflecting the world. In essence, we would gain computability by the conceptual projection into a model. A successful conceptual model reflects the world accurately and economically, such that the computation on the concepts is equivalent to the reality of interaction.

Conceptual modeling is not the exclusive enterprise of computer scientists. Ever since the great Greek philosophers, many philosophers pour their lives into understanding reality and how it is represented in our minds. They have invented the skill of categorizing concepts into part/whole relationships. with the progressive conceptual decomposition, simplified relationship and their effective causalities are revealed.

The tradition of the object-orientation is an example of breaking down this part/whole relationship. The ontological principle is that object existence and object behavior is pre-determined. By adopting this principle, architects have been able to successfully design systems that closely reflect the business world. With some extra careful architecture, via the design pattern, we manage to make these object-oriented systems flexible to change. Even with these successes, object-orientation has been well-criticized for its tyranny of idealized uniformity of the object-oriented concepts. The variety of object behavior is an afterthought. Whenever the environment changes, the new behavior must fit into the existing conceptual structure. This is proven to be ineffective, painful or simply wrong for the world of changes.

The criticism is not limited to computing field. The phenomenon can be traced back to the long history of philosophical thinkers. We can see there is a similar movement from structuralism, directed towards the real world of context. We can not reason independently from the pre-existence of the context. A famous philosopher, Ludwig Wittgenstein, produced two philosophies within his life time, which exactly shows the conceptual shift from his early analytic philosophy of language structuralism, to his later contextual philosophy of language usage. If these philosophers were to have been given a computer in their lifetime, they would surely have transformed the computing field! However, most of them remain obscure to general computing audiences. Perhaps we as software engineers should endeavour to understand their works and adopt their philosophical clarity into our practices.

The following examples are intended to illustrate the object-to-context conceptual shift. I am not judging if this is right or wrong, but I present it here to illustrate the pattern of evolution.

Example: Agile Development

In agile development culture, we have escaped from the idealized world view of waterfall development. We put the real world of needs up-front. In order to recognize the customer progressive understanding of their own world, agile methodology conceptualizes as an ecology of changes. The customer slowly constructs their business context and specifies functionalities better over time. Development feeds incremental improvements back to the customer. Simultaneously, agile development has a strong effect on the software ideology that one generic system fits all, which is no longer true. Exactly the opposite is proven; only a customized system best fits a customer. Any premature generalization meets a dead-end reality.

Example: Domain Specific Language

Keywords have different meanings in different contexts. In domain-specific languages, I propose diversity in expressive programming. Only by giving the customer a DSL can she express her knowledge efficiently and accurately within her context. An abstracted programming model is far too formalized to provide a good fit for a specific domain. The closer the expression is to the context, the more fluid the expression.

Example: Service Oriented Architecture

For enterprise systems, standardization has largely proved fruitless. The proposal to create a uniform programming framework and database have never flourished, with both technology and politics contributing. The integration between the old and the new, the centralized and the distributed models are constant struggles for integrators. SOA tries to sidestep the ideology of the centralized control. SOA maintains an architectural style that the services should be held in the local domain. While the global behaviors are controlled by the service-oriented management context, the services’ life-cycle, communication, configuration are made possible by external policies. The policies are outside of the service but inside the service management context.

Example: Semantic Web

Internet pioneer Tim Berners-Lee envisions the future of the Web as a universal medium for data, information, and knowledge exchange. Its diverse contents must be semantically represented, combined, and reasoned. No formalized meaning can be exerted from within; we can only specify the logical control of the combination and reasoning from without, where the context for the content becomes apparent.

What’s Next

If you have reached this point of the article, you might have similar sense of this conceptual shift. Perhaps you have thought the same thought but never crystallized it into words. As a software professional, I believe it is helpful to recognize this paradigm shift. The recognition then begs the question “How can we utilize the context-oriented movement?” This is like standing among the ocean waves: only if you know the height can you ride the wave, instead of being drowned or swept away by them. I hope to prompt a few practical paths in the progress of this investigation. In my next articles, I’ll continue the adventure with discussions on object context and object identity.

  1. Article is really nice, simply it demonstrates the movement of software development phylosophy towards the reality(Changing needs of business).But still i am not clear what do you mean by context and context orientation.

    Sreekanth
    Dec 8th, 2010
  2. Thanks for the comments!

    The article’s definition of the context is the environment that gives a object meaning, e.g. configuring a component to run in a container. Where the component is functional but could not exist without the means that a container provided. In another word, a ‘person’ object can be configured to behave differently at ‘work’ or at ‘home’, where the ‘person’ is the same but the context injected different response behavior.

    Context orientation is a method of conceptual modelling, especially emphasize the commonality rather than their special properties. You can view it as a inversion of object-orientation. Object-orientation emphasizes on specialization in the model. Context-orientation emphasizes on generalization in the model.

    I shall follow up with more blog posts on this subject, to demonstrate this conceptual shift is important to model real world complexity.

    Dec 8th, 2010

Add a comment

Comment feed
The better to greet you with
No one will ever see this
Your pride and joy
The reason this comment form exists

The crew behind ASOT

We're a team of interactive, software, and business intelligence experts skilled in the design, construction, and management of online enterprise systems.

Visit The Jonah Group site

Get in touch with us