Duration2 days
Recommended Class Size: 10 to 20 
Moderate to advanced understanding of object-oriented design.

Architectures that can dynamically adapt to changing requirement are sometimes called “reflective” or “meta” architectures. We call a particular kind of reflective architecture an “Adaptive Object-Model (AOM)” architecture. An Adaptive Object-Model is a system that represents classes, attributes, relationships, and behavior as metadata. It is a model based on instances rather than classes. Users change the metadata (object model) to reflect changes to the domain model. These changes modify the system’s behavior. Specifically, it stores its Object-Model in XML files or in a database and interprets it. Consequently, the object model is adaptive; when the descriptive information for the object model is changed, the system immediately reflects those changes. 

We have noticed that the architects of a system with Adaptive Object-Models often claim this is the best system they have ever created, and they brag about its flexibility, power, and eloquence. At the same time, many developers find them confusing and hard to work with. This is due in part because the developers do not understand the architecture.  When working on Agile projects, developers can become overwhelmed with the rate of requirements change. The ease with which requirements can change encourages users to overwhelm us with requests for features. The result: Featuritis, which can promotes hasty construction of poorly designed software to support those features. The design of an expressive domain model might get lost in the rush to write working code. Adaptive Object-Models support changeable domain modules by casting business rules as interpreted data and representing objects, properties and relationships in external declarations. At first glance, AOM systems seem to contradict Agile values. Yet we find that under the right conditions, an AOM architecture has made our users happier and has given them the ability to control the pace of change. It’s the ultimate in agility!

Course Objectives:

  • Understanding reflective/meta architectures
  • Adaptive Object Models
  • Classes, Attributes, Relationships, and Behavior expression as metadata
  • Instances vs Classes
  • Domain model changes through metadata manipulation
  • Core elements of AOM architecture
  • Production AOM systems
  • Software growth, revision, and extension
  • Develop systems to adapt to changing requirements

This course is available in basic and advanced levels