Friday, February 25, 2005

What's up with the microfocus on side-effects and atomicity and stuff?

(Originally published on: Wed 17 of Nov, 2004)
I’m interested in creating high-leverage techniques for transforming and composing sets of models to significantly advance the capabilities of the Model Driven Architecture (MDA) approach to software development. I intrinsically believe that the first step in this process is clarifying the formal foundation on which model transformation rests; in particular, clarifying and formalizing notions of context, atomicity, concurrency, complexity and performance in order to be able to more accurately determine whether two models are equivalent and whether one model is superior to another in certain desireable domains.

I believe a useful starting place to begin this work is to examine the theory of formal mathematical functions and (possibly) extend it to provide some additional tools for analyzing the types of functions found in programming languages. (For this purpose, I have begun by considering proceedural programming languages, since they are most prevalent and often least served by formal analysis. I’ll extend the thinking to declarative, constraint-based and other forms of programming languages as a secondary activity.)

What I’ve been chewing on for most of this last year is how to effectively broaden the bridge between formal mathematics and various computer science constructs in a way that really facilitates this analysis without needlessly inventing new concepts.

Most of the conceptual tools we need already exist to one degree or another, but they are often found in unrelated or informally related domains. (Lots of transaction work has been done from the point of view of databases. Very little has been done to bridge that work to the work done on conventional procedural languages.) I'd like to clarify a context in which these concepts can be brought together, transformed if necessary, and assembled into a powerful and useful toolbox for understanding what is possible and semantically correct in model transformation in the general case.

No comments: