Evolutionary developed domain models
During 2014 we were doing research in
the field of domain model evolution.
Domain Model Evolution
The research project on evolutionary developed domain models focused on the problem scope given by any modification of complex business applications. The idea is to incorporate all business logic into the domain model of a business application first. We have done that to a large extent and are constantly pushing the limits of what can be modeled further.
The History of Business Logic
We have put our effort into the separation of the domain evolution and data history. What exactly does that mean? Business applications manage business data. As time progresses, data is accumulated and modified. Business applications are also logical machines and their logic is transformed over time. When the requirements are to go back to a historical data set, you usually do not want to go back to a previous logic –as what a backup/restore process would do– at least for the modeled part of your logic.
Separating domain model evolution and data history gives two historical “streams”. These two streams are merely ways of looking at your business application. They are not separate in a sense that they can’t be put together. On the contrary, the domain model “knows” about its state at any point in time and also knows how any point of the historical data stream fits into it.
Historic Data Projection onto Future Domain Models
Since the Sclable core engine generates a complete business application from the domain model (domain driven design), the next step would be to let the core engine do projections of any historical point from the data stream onto any point in the domain evolution stream. This allows us to view current or past data through any current, past or future version of the domain model.
This builds the foundation for complex tasks such as the transformation of a business application, which will allow for an automated data migration of any kind. Imagine “test driving” an altered business logic and revert, if needed!
What Else Can We Do with Time in Mind?
Evolutionary developed domain model means that you can work very differently with historical data sets within your business application based on a domain model. It will let you reference not only a related entity for your value objects but a point in time as well. For example, your application’s users can change a customer’s dataset only for future objects such as offers or invoices; all other value objects prior to the change will remain untouched.
Our research project was kindly supported by the FFG, the Austrian Research Promotion Agency.
Did you know?
With this 1855 chart, Daniel McCallum, general superintendent of the New York and Erie Railroad, tried to define an organizational structure that would allow management of a business that was becoming unwieldy in its size.