Other Potential Applications
I do not profess to know even a small number of the applications that would benefit from modeling with code generation. The most likely candidates are those applications with many repetitive parts, such as a data warehouse. Other candidates are applications that require staging several different types of input files since you could take advantage of the CWM to model the data and transformations, even if the data does not load into a data warehouse. It would also not be difficult to create an application that built DDL for a model based on the OLAP design, although this is not necessary if you are using OWB. Yet another potential candidate are applications with a security component because security modules often provide a few different security services to many different objects and sometimes gather the metadata about their resources from several sources.
Modeling with code generation has benefits in addition to speeding development, although these other benefits are not as objectively measurable. First, there are fewer bugs. Autogeneration means fewer typos. Second, many requirements changes are quicker to implement. Most changes that do not cause significant changes in the model can be performed in a few hours, even if thousands of lines are affected. Third, modeling with objects in the correct context is better. If you are modeling dimensions and fact tables, those are the objects you should be dragging and dropping. You should only be able to create semantically reasonable relationships between those objects, which should reduce errors. Fourth, some people think better graphically. Fifth, developers actually build what was designed. The code is guaranteed to match the model, which puts much more control into the hands of the architects. Finally, following standards improves the possibility of taking advantage of future tools. By using standards like MOF and CWM, future tools are likely to be even more beneficial to these same applications. For example, the CWM is currently being improved with the Information Management Metamodel (IMM) specification at the OMG. This specification expands on the CWM to make it more effective at modeling a wider range of applications. The methods and tools described here are likely to work with that specification.
The technique I described here would not satisfy a purist's view of the MDA process, not the least because there is no explicit platform-specific model (PSM) used in generating the application code. However, a designer/developer can increase their effectiveness with an MOF model, tools intended for MDA, and code-generation procedures. In short, the technique provides what developers are looking fora faster way to develop applications.