One of the goals of the MoDSE project is to build actual enterprise software in a model-driven manner. Doesn't that sound cool? Apparently, and sadly, enterprise software is not cool. Pity. The question then becomes, if enterprise software is not cool, then, what is it? I was reminded of this question again when I read this article, which states the following about enterprise software:
Enterprise software is all about helping organizations conduct their basic business in a better, more cost-effective manner. In software jargon, it’s intended to “enable core business processes” with a high degree of reliability, security, scalability, and so on. These aren’t sexy, cool attributes, but are absolutely essential to the smooth running of businesses, organizations, and governments around the world.
This description of the purpose of enterprise software is quite clear. But whenever I hear things like "enable core business processes", "implement business rules", "business logic", I'm like, what the hey are you really talking about? A few years ago, just for "fun", I decided to look into Enterprise Java Beans (version 2 at the time). The main reason was probably that I thought it sounded cool. Man, was I disappointed. EJB was not cool, far from it. To me, it seemed like yet another overly-complex way (involving writing 5 types of Java interfaces to the same thing) of managing and manipulating rows in a database and keeping state. And honestly, now that we are generating EJB (albeit EJB 3.0) from our WebDSL code, I cannot conclude anything more than that EJBs are not much more than that. Simply data entities and variables -- database tables essentially. Polished-up and prefixed by the enterprise "E" to look shiny to the enterprise.
The nice thing is that in WebDSL, data entities just look like simple database rows again. And state really is not much more than a set of variables. We demoed WebDSL to some "enterprise programmers", and they seem hooked, but will that be enough?
We will have to work on an extra shiny logo to compensate for the lack of complexity ;)