Infosys Microsoft Alliance and Solutions blog

« WPF Application Default Assembly Version | Main | Hello People!!! »

Software Factory: Behavior based Meta-Models

There was one quote I remember from somewhere: “Code as if the guy who is going to maintain your code is a manic serial killer who knows where you live”. Scary thought, but I swear by it.

When a software moves into production and on to the maintenance mode, that’s when the real fun begins. It starts with a tiny change to the UI to reduce the color contrast of the OK button. Then it moves onto a tiny change in some rule and then a brand new version of an embedded component arrives making the developer upgrade the application. And a few weeks later, the software is nothing close to what its design documents claimed it to be.

What we notice here is a systematic degeneration of the application as incremental changes are made to it over a period of time. The looming threat is that of an application that changes too much that the original developer himself finds it hard to figure out what has changed and what has not.

This applies to the world of Software Factories and Domain-Specific Modeling as well. As we saw in the previous posts, the Meta-Models form the basic building blocks for the Software Factories as they provide the modeling vocabulary. From the created models, Code generation tools begin to operate to generate a number of source code and other artifacts. But every generated artifact is only as good as the developer who would work on it at a late point in time. The developer could start making incremental changes to such an extent that the generated artifacts would no more remain as a representation of the models.

This leads us to another classification of Meta-Models which will be based on their Behavior.

1. Well-Formed Meta-Models
2. Valid Meta-Models

A Well-Formed Meta-Model is one which adheres to all the vocabulary as dictated by the problem domain. All business rules, events, validations are captured and handled as required by the Software Factory. A Well-Formed Meta-Model is Self-Explanatory and lets one create models which is easy enough for Code Generation tools to parse and generate artifacts.

A Valid meta-Model is one which is Well-Formed and synchronous with every artifact generated by its models. For example, if a number of source code files are generated, and changes are made to the source code, then those changes must be reflected back into the Meta-Model.

In the Software Factory Scheme of things, you should always strive to keep your models Valid and not just Well-Formed. But the process of reverse synchronization is certainly not a simple one. I’ll deal with this subject in detail in a later post.

Now what we have discussed about Meta-Models and their role, in the next post I’ll discuss some ideas on creating Models from Meta-Models.

TrackBack

TrackBack URL for this entry:
http://www.infosysblogs.com/microsoft-mt/mt-tb.fcgi/111

Comments

I am eager to understand software factory further, has the posting stopped?
Looks like no post since long time.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)