A Generalized Notion of Platforms for Model-Driven Development

The notions of “platform” and “platform model” have a fundamental role to play in the MDA vision of software engineering, since they form the basis for distinguishing between Platform Independent Models (PIMs) and Platform Specific Models (PSMs) and for defining the input that allows transformation tools to map PIMs into PSMs. However, the de facto notions of platform and platform model that prevail in the MDA community today are overly narrow and only vaguely defined. In the MDA literature, the basic capability that an artifact is required to have to be characterized as a platform is the ability to support the execution of a software application. Beyond that, there is no consensus on what features a platform should possess or what form platform models should take. One school of thought holds that a platform model is essentially a Domain Specific Language (DSL) and that MDA technology is essentially about the definition and use of DSLs, but this fails to capture some important properties that are usually associated with the notion of platform. In this chapter we explain why this is the case and discuss what information a generalized platform notion should encapsulate and what form a model of such a platform should take. We present a notion of “latform” based on four minimalistic, orthogonal elements: Language, predefined types, predefined instances and patterns, and explain how this notion can be applied to contemporary software platforms such as Java, J2EE and .NET.