Strategic Programming

I have been working with model-driven software development for many years, but I haven't published anything on it yet. At Allegis, we developed a complete enterprise application based on models. We found this to be much more effective than the standard object-oriented MVC approaches. One reason I returned to research, and joined academia, was to do research into this programming paradigm. I've been struggling for years with the idea, but have finally written a paper about it, with some of my students:

Strategic Programming by Model Interpretation and Partial Evaluation
William R. Cook, Benjamin Delaware, Thomas Finsterbusch, Ali Ibrahim, Ben Wiedermann

One question that we didn't address directly in the paper is "Why call it Strategic Programming?" The work is closely related to Model-Driven Software Development and also Domain-Specific Language engineering (DSL). Why not use one of those? To me, its a matter of focus. We are all "feeling the same elephant". But I want to focus on a different part of the elephant.

In programming language work there are three important components:

* Syntax
* Programs
* Semantics

When you map these onto the model/DSL viewpoint, you see the following correspondence:

* Syntax: Domain-Specific Languages
* Programs: Models
* Semantics: Interpretations (interpreters, transformers, compilers)

Some people focus on the models, others on the DSLs, and others on transformation. But rather than name the approach after one of its parts, I wanted to use a name that focuses on the overall approach. Keep in mind that there can be more than one interpretation.

I am suggesting that underlying all this is the idea of a strategy, which guides the design of the language and the interpretation of particular models to achieve some goal. It's the strategy that binds the three components together. The other reason is that some people think models are just pictures and don't have semantics, and other think that DSLs are just syntax. So I'm trying to sell a more fundamental vision of this emerging paradigm to the academic programming languages community. I think that models/DSLs/interpretation/strategies are going to be the next big programming paradigm, and so we need to get ready for it.

No comments: