Showing posts with label responsive computing. Show all posts
Showing posts with label responsive computing. Show all posts

Saturday, October 31, 2009

More on responsive, reactive and proactive computing



Earlier this week, I've posted in this Blog short definitions of the terms: responsive computing, reactive computing and proactive computing. Somehow, terminology always gets questions and responses, and there has been a thread in the Complex Event Processing forum that started to discuss it. So as a follow-up to this discussion, some clarification. The computing modes (responsive, reactive, proactive) are indeed mutually exclusive, however a single system may have combination of all of them.

Active databases are example that start with responsive computing, the basic operations are: insert, modify, delete or retrieve from a database. Then the active database engine takes these database operations as events, and apply reactive computing to execute rules reacting to these events.

The opposite direction is a reactive system, doing some kind of event processing, which during the event processing operations need to consult a database in order to enrich an event with more information. The database query issued is a responsive computing.

Proactive computing may also be combined with reactive and responsive systems.

Hans Gilde has posted on the complex event processing forum an example that combines all three.

While responsive computing is the bread and butter of computing, and reactive is now being more understood, proactive is still lagging behind in terms of realizing the potential, maybe the next hill to climb.

Saturday, October 24, 2009

On Proactive Computing


In the picture above you can see some products that are designated to protect your skin from various things under "proactive skin care", actually preventive medicine is also aimed at protecting one's health from future problems.

Mani Chandy has recently posted in his Blog an article about Proactive computing. I thought it is worthwhile to say a few things about this notion.

We can view three types of computing: responsive computing, reactive computing and proactive computing.

Responsive computing is the way most computing is done, I am using now some software for Blog editing, sitting on some server and waiting for me to connect, and use it, in the rest of the time it sits idle (well, the server is, for sure, being used for other important stuff), and does not do anything unless explicitly requested, this is typically the way we are working with Web servers, databases and mostly everything else when using computing.

Reactive computing is the way that event-based systems are working. An event occurs and then it triggers one or more computational processes, without being response to any request. Event processing is a vehicle for doing reactive computing,

Proactive computing is the case when a computing system arrives at a conclusion that some entity will reach an undesirable state, and attempts to eliminate it from getting to this state, or mitigate it by transferring this entity to a more desired state instead.

Some examples of proactive computing:

  • The traffic lights policy are set before a football game is going to end and the traffic is expected to flow in certain directions.
  • A repair technician is late in one of its sessions, and combining with traffic conditions he will be very late to his next customer, something that will cause several chain effects.
  • A progression in the state of a patient will make his treatment protocol inadequate
There are many other examples as well.

As said that we are now at an era of the responsive computing, reactive computing had caught on in some segments, and more segments of computing applications are now discovering it, but it is far from reaching its full potential. Some of the reactive programming applications are aimed at proactive computing, by the fact that some combination of events may be interpreted as getting to some future state that should have some action, and there are some commonality among them, it is still a good idea to look at proactive computing as as its own notion, and understand what a proactive computing application is like, and what are its characteristics.

I'll write more on that later.