Adaptive object-models (poster session)
Addendum to the 2000 proceedings of the conference on Object-oriented programming, systems, languages, and applications (Addendum) - OOPSLA '00
The unrelenting pace of change that confronts contemporary software developers compels them to make their applications more configurable, flexible, and adaptable. A possible way to meet such requirements is to use an Adaptive Object-Model (AOM). This poster describes common architectures for adaptive object-models and summarizes the results from our ECOOP 2000 workshop . Need for Adaptable Architectures The era where business rules are buried in code is coming to an end. Today, users
... es may seek to dynamically change their business rules. Customers require systems that more easily adapt to changing business needs, meet their unique requirements, and scale to large and small installations. On the other hand, the same technique is adequate for the slightly different purpose of producing a whole line of software products: of course, a line of products may be obtained by variously instantiating an abstract model, but also by adapting a given initial system to various requirements that appear simultaneously instead of evolving in time. The Adaptive Object-Model Approach Early solutions that have been developed in order to design flexible implementation of business rules was provided by blackbox frameworks  . A more recent approach to meet such requirements is to use an Adaptive Object-Model , where the object representation of the domain under study has itself an explicit object model (albeit partial) that is interpreted at run-time. Such an object model can be changed with immediate (but controlled) effect on the system interpreting and running it. Objects have states and respond to events by changing state. The Adaptive Object-Model defines the objects, their states, the events, and the conditions under which an object changes state. If you change the object model, the system changes its behavior. For example, such a feature makes it easy to integrate a workflow mechanism, which proves useful in many systems. Adaptive Object-Models lets to confront successfully the need for change by casting information like business rules as data rather than code. In this way, it is subject to change at runtime. Using objects to model such data and coupling an interpretation mechanism to that structure, we obtain a domain-specific language, which allows users themselves to change the system following the evolution of their business. Metadata is then often used in adaptive object-models to describe the object model itself. When runtime descriptions of these objects are available, users can directly manipulate these objects. Since the system can interpret the metadata to build and manipulate these runtime descriptions, it is easy to add new objects to the adaptive object-model, and make them immediately available to users. This approach has been validated by several successful industrial projects [6, 7, 8] . Observation Framework The Observation framework  is an adaptive objectmodel architecture for dynamically describing different types of phenomenon over a given period of time; this concept is widely applied in a domain related to tests, samples, and measurements. Observations play a large role in the medical domain because they make it possible to associate specific conditions and measurements with people at a given point in time. Some typical medical observations are eye color, blood pressure, height and weight. Medical observations along with their business rules can be described and stored in a database so that any new types of observations or valid values can be made available to the system without writing new code. AOMs and End-User Programming One way to cope with the rapid need to change rules as a result of changes in user requirements is to empower domain experts with adequate tools to create, customize, specialize and extend their software applications. From the end users computing perspective, a domain expert can be characterized as a non-programmer person who has computational needs and wants to make serious use of the computers. If s/he is provided with an adequate tool, s/he can change, extend and tailor its applications to meet the demands of local conditions. Adaptive Object-Model architectural style is particularly adequate for building end-user programming systems. By providing design patterns to create dynamically adaptable systems, they offer an appropriate foundation to the problem of facilitating programming for end users and domain experts. Type Cube  is a model for building end user programming systems. It provides guidelines for designing object-oriented applications, which can be extended and personalized by domain experts. It deals with dynamic definition of new entity types and behavior. Type Cube has been validated by two industrial projects.