You are not logged in Log in Join
You are here: Home » Members » Phillip J. Eby's Zope Center » My Wikis » State-based Workflow And Resource Management (SWARM) » AspectObjects » wikipage_view

Log in
Name

Password

 
 

AspectObjects

A key theme of SWARM is SeperatingInterfaceFromImplementation?. To achieve this seperation, it is not enough to bundle an implementation into an interface. This invariably leads to implementation knowledge and assumptions creeping out into other parts of the application. For example, the Zope notion of "local roles" was originally implemented in terms of an __ac_local_roles__ mapping object. This implementation has leaked into the interface, and as a result becomes brittle.

One way to avoid such creeping, is to group attributes and methods into layers of "aspects": components which represent interfaces and implementations. One layer of aspects represent the interfaces exposed by an object, the other layer represents interfaces exposed by the components which make up the object's implementation. Both layers are reusable components. The upper layer contains domain-specific components that represent objects closer to the "real world", while the lower layer represents objects closer to the "computer". We say closer, because of course larger components may reuse a given component, and a smaller component may be composed of still smaller components.