4 research outputs found
Grammar-oriented object design : towards dynamically reconfigurable business and software architecture for on-demand computing
Grammar-oriented Object Design was shown to be a potent combination of
extending methods, incorporating DSLs from a given business domain (BDSLs)
and Variation-oriented Design in order to provide a seamless transition from
business models to component-based software architectures. GOOD starts by
extending current object modeling techniques to include the discovery and
explicit modeling of higher levels of reuse, starting from subsystems, defining
their manners using a domain-specific business language, i.e., using use-case
gramars, that describe the rules governing the creation, dynamic configuration
and collaboration of large-grained, business-process-scale, adaptive software
components with pluggable behavior, through the application of architectural
patterns and representation of component manners in the BDSL. 1his presents
immense potential for applications in the domains of grid services, services on
demand and a utility-based model of computing where a business need initiates
the convergence of application components based on/from the manners of
services they provide and require
Composite objects: dynamic representation and encapsulation by static classification of object references
The composition of several objects to one higher-level, composite object is a central
technique in the construction of object-oriented software systems and for the management
of their structural and dynamic complexity. Standard object-oriented programming
languages, however, focus their support on the elementary objects and on class
inheritance (the other central technique). They do not provide for the expression of
objects' composition, and do not ensure any kind of encapsulation of composite objects.
In particular, there is no guarantee that composite objects control the changes
of their own state (state encapsulation).
We propose to advance software quality by new program annotations that document
the design with respect to object composition and, based on them, new static
checks that exclude designs violating the encapsulation of composite objects' state.
No significant restrictions are imposed on the composite objects' internal structure
and dynamic construction. Common design patterns like Iterators and Abstract Factories
are supported.
We extend a subset of the Java language by mode annotations at all types of object
references, and a user-specified classification of all methods into potentially state changing
mutators and read-only observers. The modes superimpose composition
relationships between objects connected by paths of references at run-time. The
proposed mode system limits, orthogonally to the type system, the invocation of
mutator methods (depending on the mode of the reference to the receiver object),
the permissibility of reference passing (as parameter or result), and the compatibility
between references of different modes. These restrictions statically guarantee state
encapsulation relative to the mode-expressed object composition structure
Object Acquaintance Selection and Binding
Large object-oriented systems have, at least, four characteristics that complicate object communication, i.e the system is distributed and contains large numbers, e.g. thousands, of objects, objects need to be reallocated at run-time and objects can be replaced by other objects in order to adapt to the dynamic changes in the system. Traditional object communication is based on sending a message to a receiver object known to the sender of the message. At linking or instantiation time, an object establishes its acquaintances through name/class based binding and uses these objects through its life time. If this is too rigid, the software engineer has to implement the binding of objects manually using pointers. In our experiments we found the traditional acquaintance communication semantics too limited and we identified several problems, related to the reusability of objects and selection mechanisms, understandability and expressiveness. We recognised that it is important to separate an class or object’s requirements on its acquaintances from the way an object selects and binds its acquaintances in actual systems. Based on this, we studied the necessary expressiveness for acquaintance handling and identified four relevant aspects: type and duration of binding, conditions for binding, number of selected objects and selection region for binding. To implement these aspects, we defined acquaintance layers as part of the layered object model. Acquaintance layers uniformly extend the traditional object-oriented acquaintance handling semantics and allow for the first-class representation of acquaintance selection and binding, thereby increasing traceability and reusability.
Object Acquaintance Selection and Binding
Large object-oriented systems have, at least, four characteristics that complicate object communication, i.e the system is distributed and contains large numbers, e.g. thousands, of objects, objects need to be reallocated at run-time and objects can be replaced by other objects in order to adapt to the dynamic changes in the system. Traditional object communication is based on sending a message to a receiver object known to the sender of the message. At linking or instantiation time, an object establishes its acquaintances through name/class-based binding and uses these objects through its life time. If this is too rigid, the software engineer has to implement the binding of objects manually using pointers. In our experiments we found the traditional acquaintance communication semantics too limited and we identified several problems, related to the reusability of objects and selection mechanisms, understandability and expressiveness. We recognised that it is important to separate a class or object's requirements on its acquaintances from the way an object selects and binds its acquaintances in actual systems. Based on this observation, we studied the required expressiveness for acquaintance handling and identified four relevant aspects: type and duration of binding, conditions for binding, number of selected objects and selection region for binding. To implement these aspects, we defined acquaintance layers as part of the layered object model. Acquaintance layers uniformly extend the traditional object-oriented acquaintance handling semantics and allow for the first-class representation of acquaintance selection and binding, thereby increasing traceability and reusability