Where object-oriented languages deal with objects as described by classes, model-driven development uses models, as graphs of interconnected objects, described by metamodels. A number of new languages have been and continue to be developed for this model-based paradigm, both for model transformation and for general programming using models. Many of these use single-object approaches to typing, derived from solutions found in object-oriented systems, while others use metamodels as model types, but without a clear notion of polymorphism. Both of these approaches lead to brittle and overly restrictive reuse characteristics. In this paper we propose a simple extension to object-oriented typing to better cater for a model-oriented context, including a simple strategy for typing models as a collection of interconnected objects. We suggest extensions to existing type system formalisms to support these concepts and their manipulation. Using a simple example we show how this extended approach permits more flexible reuse, while preserving type safety.
%0 Journal Article
%1 steel_07_model
%A Steel, Jim
%A J'ez'equel, Jean M.
%D 2007
%J Software and Systems Modeling
%K mda model_transformation mof 2007 metamodelling type_systems _to_print typing
%N 4
%P 401--413
%R 10.1007/s10270-006-0036-6
%T On model typing
%U http://dx.doi.org/10.1007/s10270-006-0036-6
%V 6
%X Where object-oriented languages deal with objects as described by classes, model-driven development uses models, as graphs of interconnected objects, described by metamodels. A number of new languages have been and continue to be developed for this model-based paradigm, both for model transformation and for general programming using models. Many of these use single-object approaches to typing, derived from solutions found in object-oriented systems, while others use metamodels as model types, but without a clear notion of polymorphism. Both of these approaches lead to brittle and overly restrictive reuse characteristics. In this paper we propose a simple extension to object-oriented typing to better cater for a model-oriented context, including a simple strategy for typing models as a collection of interconnected objects. We suggest extensions to existing type system formalisms to support these concepts and their manipulation. Using a simple example we show how this extended approach permits more flexible reuse, while preserving type safety.
@article{steel_07_model,
abstract = {Where object-oriented languages deal with objects as described by classes, model-driven development uses models, as graphs of interconnected objects, described by metamodels. A number of new languages have been and continue to be developed for this model-based paradigm, both for model transformation and for general programming using models. Many of these use single-object approaches to typing, derived from solutions found in object-oriented systems, while others use metamodels as model types, but without a clear notion of polymorphism. Both of these approaches lead to brittle and overly restrictive reuse characteristics. In this paper we propose a simple extension to object-oriented typing to better cater for a model-oriented context, including a simple strategy for typing models as a collection of interconnected objects. We suggest extensions to existing type system formalisms to support these concepts and their manipulation. Using a simple example we show how this extended approach permits more flexible reuse, while preserving type safety.},
added-at = {2009-02-11T20:54:01.000+0100},
author = {Steel, Jim and J'{e}z'{e}quel, Jean M.},
biburl = {https://www.bibsonomy.org/bibtex/2dfcea9ea7f1b7becd587f0b2ebc297d5/leonardo},
citeulike-article-id = {1822709},
doi = {10.1007/s10270-006-0036-6},
interhash = {c788a1627a8fe001e07282179c054889},
intrahash = {dfcea9ea7f1b7becd587f0b2ebc297d5},
journal = {Software and Systems Modeling},
keywords = {mda model_transformation mof 2007 metamodelling type_systems _to_print typing},
month = {December},
number = 4,
pages = {401--413},
posted-at = {2007-10-26 00:45:31},
priority = {3},
timestamp = {2009-02-11T20:54:01.000+0100},
title = {On model typing},
url = {http://dx.doi.org/10.1007/s10270-006-0036-6},
volume = 6,
year = 2007
}