Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why are Agents & Managers considered poor O-O design

Tags:

object

oop

Back in the early '90s I participated in the design and implementation of a system that included lots of "Agent" classes. The system worked well and was reasonably maintainable. Now I'm in arguments with folks in a new work environment who make the claim that "Objects should be nouns". Are there good articles around explaining why Agents are a Bad Idea? And what distinguishes an Agent from an Object in more detail (I get the general idea, but what specifically is deprecated?)

Preferably not whole books: I just now started reading Bertrand Meyer's book on Object-Oriented Software Construction, and it's gonna take some time to get through that.

Per comments from Tomasz and Niko, I changed the subject line (from asking for pointers to articles) and now invite people to answer directly rather than give pointers to articles.

like image 973
Leonard Avatar asked Aug 24 '12 18:08

Leonard


1 Answers

Wikipedia says

Agent-oriented programming (AOP) is a programming paradigm where the construction of the software is centered around the concept of software agents. In contrast to object-oriented programming which has objects (providing methods with variable parameters) at its core (http://en.wikipedia.org/wiki/Active_object)

However I don't think at AOP as separated from OOP I personally worked with JADE(http://jade.tilab.com/, which is one of the most famous framework implementing the FIPA standards (http://www.fipa.org) and as far as I remember in JADE agents can own objects (as instances of java classes) that can exploit to perform complex functions. In this sense the concept of agent is similar to the concept of active object (http://en.wikipedia.org/wiki/Active_object). The main differences are that Agents publish a description of the services they provide in a yellow pages registry and are capable of communicating by means of shared languages (possibly based on onthologies). Also mobility can be provided so that a running agent may migrate to a different device preserving its execution state. However such complexity can be implemented on the top of the Thread thus extending the OO paradigm and not being in contrast with it.

the concept of agent was first used by Yoav Shoham within his Artificial Intelligence studies, in 1990.

In this link http://www.infor.uva.es/~cllamas/MAS/AOP-Shoham.pdf you can find an excerpt of a Shoham pubblication in which he says

whereas OOP proposes viewing a computational system as made up of modules that are able to communicate with one another and that have individual ways of handling incoming messages, AOP specializes the framework by fixing the state (now called mental state) of the modules (now called agents) to consist of precisely defined components called beliefs (including beliefs about the world, about rhemselves, and abour one anorher), capabiliries, choices, and possibly orher similar norions. A compurarion consists of rhese agents' informing, requesting, offering, accepting, rejecting, competing, and assisting one another. This idea is borrowed directly from the speech act literature (Grice 1989; Searle 1969;Austin 1962).

The key word is that AOP specializes the OOP framework. So as I said it extends OOP (not necessarely in a good way though). I guess you may want to use this kind of architecture, which is very nice to design and implement, when you deal with computational intensive systems that may need to scale to cope with highly variable amount of tasks. In other cases AOP may be overkilling but that is up to your designer/architect sensitivity.

like image 111
Andrea Sindico Avatar answered Nov 30 '22 16:11

Andrea Sindico