An abstraction to enable MDD toolset as a product line Vinay Kulkarni Tata Research Development and Design Centre, Pune, INDIA Model-driven development has been gaining popularity in industry for past several years. Several large business products have been developed using MDD approach. The central idea being to free application developers from technology concerns enabling them to concentrate primarily on specifying business functionality in the form of models. Different models are used to specify different concerns that are typically transformed to a unified model. A set of purpose-specific code generators transform this model to a variety of text artefacts. A business product needs to deliver a given business functionality on a wide variety of implementation platforms and architectures thus necessitating multiple sets of code generators. However, there is a considerable commonality across these code generators. In absence of a suitable abstraction for capturing this commonality, there is little or no reuse across these code generators. We present an abstraction for organizing model-based code generators as a hierarchical composition of reusable building blocks. A building block is a localized specification of a concern in terms of a concern-specific meta model, model to model transformation, and model to text transformation. Model-based code generation is a 3-step walk over the composition tree wherein the first step transforms individual concern-specific models into a unified model, the second step transforms the unified model into individual concern-specific text artifacts, and the third step composes these text artifacts in a consistent manner. We have used the building block abstraction to realize a MDD toolset as a product line.