Showing posts with label Object orientation. Show all posts
Showing posts with label Object orientation. Show all posts

Monday, August 6, 2007

Agent versus Object

Hi, everybody.

I read about how the impact of the agent-based technology probably will be not as much as the impact in the object orientation in the terms of the mainstream. The article with the title "Agent Technology: Computing as Interaction" described the challanging problems that agent-based technology will have to handle. This article was written by Michael Luck, Peter McBurney, Onn Shehory, Steve Willmott and the agentlink community . Below is what they said about the problems.

In attempting to understand the likely future development of agent-based computing, and its pathway to adoption, one might usefully consider the history of object-oriented technologies. It started from the Simula languages in 1962 when the term of "object oriented" itself was introduced by Alan Kay in 1970. Then there came the development of Smalltalk in 1973 and C++ in 1983. Furthermore, the developments were followed with the Object Management Group being formed in 1989, then the Java was announced in 1991, CORBA in 1991, UML in 1994 and ANSI C++ in 1998. This is an extended period over which the technologies and techniques involved came to maturity and to wide scale adoption.

Agent and object technologies are both essentially disruptive technologies that provide more effective and flexible techniques for software and its development. To understand how the future of agent-based technology may progress, we need to look to the differences between these technologies. Firstly, object technology began in an era in which computing as a discipline and as an industry was relatively immature, and limited in scope. The techniques, technologies, and standard were still not common for the development of the software as is the case now. The changes required for the object to be existed was far less substantial and challenging than it is now for agent technologies.

Secondly, while there are still many problems to be tackled in computing, the degree of improvement, in terms of productivity or efficiency, to be realized from specific advances decreases as the general level of maturity in computing increases. Thus, while there was no step change arising through object orientation, the gradual improvement in the state of software is likely to be even less marked with agent technologies. Thirdly, the current environment is much more heterogeneous also more distributed and diverse than at any point in the previous software development, and it will continue to more evolve in this manner. The result is a further development of standards, techniques, methodologies and multiple vested interests and corporate initiatives that must be integrated, overcome or otherwise addressed for broad acceptance of new paradigms. Investment in new technologies at this point of the IT adoption cycle presents a much more challenging problem than ever before. For all these reasons, it is likely that no technology in the near future will have anything like the impact of object orientation.

Does the article above just tell us that agent-based technology will fail in the future? From what I believe , it will definetely not true. Agent-based technology will bring us to the more efficient and more machine readable system. It will make the less intervention of human in processing a problem in order to achieve its certain goals. However, the article above told us that it will be more challenging problem to be solved when we want to have our system with agent-based capabilities in it. One obvious example is by imagining how huge and the semi-structured data in the internet will be processed using the agent-based technology. It will be a very challenging work to do that. Later, I will discuss also about many researchers who also think about how to include the agent in the internet.


Monday, May 14, 2007

When Object Orientation is not enough

Object orientation is such a powerful paradigm for software engineering. With this technique, one is able to rely heavily on the modeling of processes such as activity diagrams, event sequence charts, etc. It means that there would be a model of conditions that we would or should know what will happen through the processes. If we look on more detail, the paradigm of object oriented is concerning a development strategy based on the concept that systems should be built from a collection of reusable components called objects. Another explanation about how powerful OO is described by wikipedia. Object-oriented analysis and design (OAD) applies object-modeling techniques to analyze the requirements for a context — for example, a system, a set of system modules, an organization, or a business unit — and to design a solution. Most modern object-oriented analysis and design methodologies are use case driven across requirement, design, implementation, testing, and deployment.


As mentioned above, current technique relies heavily on the modeling of processes. Eric Yu describes that the emphasis of the current model (ex. Object oriented) has been on the capture, analysis and specification of what users and clients want in a system [1]. Consistency, completeness, and validation of requirements have been the dominant objectives. However, real-life is not as simple as that. The nature, characteristic and interaction of today’s and tomorrow’s systems and their environment have become more varied ,dynamic, initiative, complex- distributed, unpredictable, heterogenous, and highly interactive. If I may resume all of above words , it would be : to be much more FLEXIBLE. Also when a system or environment will only have little control and knowledge, it is hard to anticipate all contingencies and be able to know in advance what responses are appropriate. If we look an example in supply chain management, unexpected events can cause delays, wastages, and loss of revenue or customer


[2] explains that current system (ex : OO) produces outputs from inputs, either as pre-defined processes or as reactive responses to control signal or events. Complexity and scalability is primarily dealt with by composition or decomposition, with the behavior of the whole being determined by behavior of the parts together with compositional rules. Those aspects could be seen as a drawback when a system and its environments require autonomy, then above assumptions no longer hold. With autonomy, a entity can choose to cooperate, or not, to varying degrees, and on their own terms or again… can be more flexible J. Thus, a social paradigm is needed to cover the much richer kinds of relationships that exist in such settings rather than sticking with producing outputs from processes based on the simplified entities and environments.


Now, let's play with words :).
The current modeling encapsulates identity (“who”), state (“what entities exist, what activities occur, and what relationships hold”), and passive behavior (“how, if invoked”). Sometimes, those aspects are not enough because it is also important to encapsulate multiple degree of freedom in activity and interaction to know about the “why” aspect. Furthermore, realizing why the entities exist, occur or hold will extend the quality of the business process or, more specialized, the social organizational setting which is made of social actors having (mostly different) goals, abilities, belief, commitment and interests [1]. It can be said that an entity knows why he performs an action and even the “motivation” of an action will be provided based on his goals and beliefs. However, it will also allow having a wrong belief about the world. For example, when we model a business process, we will describe how work entities progress from a process activity to other process activities. In this new model, new aspect is included which is to describe how the actor performing these step relate to each other intentionally, such as in terms of goals, belief, ability and commitment.


I referred to the words flexibility several times.
So, what is flexibility ? (in the terms of the limitation of OO)
[3] define the notion of flexibility is further expanded to incorporate:
- responsiveness : respond to the changes of the environments
- pro-active : do not simply act in response to their environment, they are able to exhibit goal-directed behavior by taking the initiative
- social : should be able to interact in order to complete their own problems and help others with their activities
- autonomy : operate without the direct intervention of humans or others and can not all be assumed to be fully controllable in their behavior due to confilicting interests and non- public individual preferences


In conclusion, Object oriented are inadequate to handle the intentional of the entities and social dimensions, to sense in the incomplete environments and to operate with less intervention from human. Many researchers studied about the limitation of the object orientation and came with new ideas concerning "software agent". They claimed that The software agent can handle many of the problem which OO suffers. They came with the name of distributed artificial technology, agent-based system, multi-agent system, and so on.

For me, the question remains : How powerful is the agent?

Source :

[1] E. S. K. Yu and J. Mylopoulus, From E-R to "A-R" - Modelling Strategic Actor Relationships for Business Process Reengineering

[2] E. Yu, Agent-Oriented Modelling, Software Versus the World

[3] B. Henderson-Sellers and I. Gorton, Agent-based Software Methodologies