AMDAQ

The proper way to use OOP - Object Orient Programming:

AMDAQ - Agents, Messages, Dispatchers And Queues


AMDAQ300x400The AMDAQ diagram shows the systems architecture I have developed over 50+ years of controls and systems experience. It is robust, scalable and has the one element missing in most software today: simplicity. It uses agents - independent subsystems performing one task; messages - communications and transactions from/to agents; dispatchers - the agent which controls other agents with start, stop & wait transactions; and queues - places where agents and messages await dispatch. The entire structure is built of peer nodes or objects and coordinated via the use of dispatchers executing commands or messages.

Amazingly enough, many of the systems I have seen over the years have no structure whatsoever, necessitating rescue projects at great cost and pain. "Plan? What plan? We didn't have time to plan."  My reaction: "A pile of bricks is not a usable or safe building." Structure provides usability, stability, performance and maintainability.

Although a system in which all components  are identical makes life simpler for the designer/builder, it is not practical for meeting the needs of today's user. Today you will see a mixture of desktop, laptops and rack mounted servers - attached to a variety of devices from telescopes to 18 wheelers on the road and ships on the ocean - and running windows, mac os x, UNIX, Solaris, AIX, MVS, OS400, etc. operating systems. Although today's systems must be capable of operating in this environment, this is still no excuse for disorganization and sloppiness. 

A visible organization or architecture at the top level is absolutely necessary. I remember once, after reorganizing the computing facilities of a multi-billion dollar corporation founded in 1917, and   using a simple diagram similar to one at right, several people, from accounting - to shipping said to me: "This is the first time I could see my job."

AMDAQ can be implemented on most platforms - UNIX preferred and/or some real time operating systems such as VxWorks or RT/Linux, sometimes even windows. The preferred top level structure is built on 1 - python/c/c++ and pyro or 2 - java/c++ and corba.  Displays at the top level are often dedicated programs, but recently more web based displays are  used.

Often, underneath the visible upper structure is a set of servers. Some of these serve the entire system, such as a central database; while others are often specific, such as device controllers for a coolers, valves, motors or even an AGV - Automatic Guided Vehicle or CNC machine - Computerized Numeric Control such as a machining center. There are now some device control systems free and available in the public domain, such as EPICS, [Experimental Physics and Industrial Control System], which is used in science and industry, or the simpler SCADA devices.

Using this approach, a new system design can concentrate mainly on your specific area of value-added difference - the upper level systems design and local custom devices and programs - and avoiding reinventing the wheel where you don't get anything new for your money.  Much of the lower level work is already done and the other needed pieces of structure are already available and working. The systems cost and timeline are significantly reduced.  What a deal!

©Gareth Harris, 2008                   Questions? Ideas? write: garethharris@mac.com             See also: penres.com, sentimentalstargazer.com