Pattern:
Presentation-Abstraction-Control


Author

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal

Intent

"The Presentation-Abstraction-Control architectural pattern (PAC) defines a structure for interactive software systems in the form of a hierarchy of cooperating agents. Every agent is responsible for a specific aspect of the applications functionality and consists of three components: presentation, abstraction, and control. This subdivision separates the human-computer interaction aspects of the agent from its functional core and its communication with other agents." (Buschmann, F., R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture: A System Of Patterns. West Sussex, England: John Wiley & Sons Ltd., 1996)

Motivation

Structure the interactive application as a tree-like hierarchy of PAC agents. There should be one top-level agent, several intermediate-level agents, and even more bottom-level agents. Every agent is responsible for a specific aspect of the applications functionality, and consists of three components: presentation, abstraction, and control. The whole hierarchy reflects transitive dependencies between agents. Each agent depends on all higher-level agents up the hierarchy to the top-level agent. The agents presentation component provides the visible behavior of the PAC agent. Its abstraction component maintains the data model that underlies the agent, and provides functionality that operates on this data. Its control component connects the presentation and abstraction components, and provides functionality that allows the agent to communicate with other PAC agents. The top-level PAC agent provides the functional core of the system. Bottom-level PAC agents represent self-contained semantic concepts on which users of the system can act, such as spreadsheets. Intermediate-level PAC agents represent either combinations of, or relationships between, lower-level agents. For a more detailed Motivation description for this pattern see: Buschmann, F., R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture: A System Of Patterns. West Sussex, England: John Wiley & Sons Ltd., 1996.

Known Uses

This pattern has been used on the following systems: Network Traffic Management. Usage is for preventing potential bottlenecks and network traffic overloads. In this system all monitored switching units report their current traffic to a control point that in turn stores, analyzes, and displays the data. (Traving, C. and H. Stadtherr, Building a Traffic Management System with C++, Proceedings of the C++ User Group Technical Conference, Munich, 1993.) Mobile Robot. This system allows an operator to interact with a mobile robot that navigates using its own sensors and information from the operator within a closed and hazardous environment. (Crowley, J., Navigation for an Intelligent Mobile Robot, IEEE Journal of Robotics and Automation, Vol. RA-1, No. 1, pp. 31-41, March 1985.)

See Also

Model-View-Controller pattern

Thumbnail

Keywords

Model-View-Controller pattern, Presentation-Abstraction-Control pattern, Buschmann patterns, architectural patterns, interactive systems, user interface, cooperating agents

Business Domains

development of an interactive application with the help of agentsinteractive applications with a flexible human-computer interface

Problem Forces

agents maintain their own stateeach agent is specialized for a specific tasksets of interacting agents to carry out the worksystem evolves over timeuser interface is prone to change requests

Benefits

changeability and extensibility of componentsefficiency by parallel processingenhanced maintainability and extensibility of the systemframework potentialmakes exchanging product families easy

Liabilities

complexity of design and implementationrestricted efficiency

Implementation Files

Simple implementation of the pattern - TopLevelAgent. TopLevelAgent.javaSimple implementation of the pattern - IntermediateLevelAgent. IntermediateLevelAgent.javaSimple implementation of the pattern - BottomLevelAgent. BottomLevelAgent.javaSimple implementation of the pattern. pac.h



Generated on Fri Oct 20 11:19:54 GMT+02:00 2000 by Framework Studio