home | products | community | about aQtive | download | help
community > developers > developers pack > principles

onCue and aQtiveSpace - design principles

The way to construct robust, extensible and reliable systems is by combining strong theoretical foundations with practical understanding of software architectures and user interface principles.

status-event analysis

aQtiveSpace has been developed from a strong theoretical standpoint; in particular, it is heavily influenced by status-event analysis. The discrete nature of computation means that at an implementation level everything reduces to events and the system's response to them. This is reflected in the majority of specification notations and implementation platforms. However, many aspects of the physical world are of a different kind, status phenomena, which always have a value that can be sampled. In context-aware applications, such as onCue, many of the contextual elements are better viewed as status rather than prematurely decomposed into events. The primitives in aQtiveSpace, although by their nature discrete, are designed to enable an effective and natural encoding of status phenomena. This makes it easier to build context-aware applications, such as onCue, on top of aQtiveSpace. Also the direct mapping between intended user interface behaviour and underlying architecture means that the resulting systems behave correctly and consistently.

external and dynamic configuration

Another theoretical underpinning of aQtiveSpace is the theory and practice of agent and component technology. To some extent aQtiveSpace (although developed independently) has similarities with Java Beans. Components (Qbits) have named attributes (nodes) that you can set, get or listen for changes on. aQtiveSpace adds to these basic primitives, however: first the thing that is registered with a 'listenable' node is not a special callback function or object, but a settable node. Also, there is a parallel of 'listen' called 'give', which takes a 'gettable' node and asks it for values when required. This symmetry makes it far easier to externally plug together Qbits both statically and dynamically.


home | products | community | about aQtive | download | help