A model-driven software factory to support enterprise application product-lines

by

Vinay Kulkarni

Abstract: We discuss our experience in using model-driven techniques to build large business applications on a variety of architectures and technology platforms. Our foray into model-driven techniques began 15 years ago when our organization decided to develop a banking product that was to be capable of being delivered on multiple technology platforms, and capable of easily keeping pace with technological advance. We began by developing a set of modeling notations to specify different architectural layers of the application and a set of code generators that transform these models into an implementation. Separating business functionality from technological concerns, and model-based code generation resulted in significant productivity and quality gains. We then discovered that process aspect too needed to be addressed so as to extend these gains to other phases of development lifecycle. Modeling of workspaces and a role-based process enabled a large team to effectively coordinate development effort leading to significant reduction of integration effort. Encouraged by these benefits, many large development projects also readily adopted the model-driven approach despite initial investment in learning how to model. Enthusiastic, and somewhat unexpected, acceptance of our approach led to an ironical situation of the productivity toolset team becoming a bottleneck. We overcame this problem through use of product line techniques in order to model the code generators as a family, and deriving a purpose-specific implementation therefrom. We then extended the family concept to applications being generated as well, thus imparting configurability and extensibility properties.

The talk will cover the above journey, experiences, lessons learnt, and a way forward as we see it.