December 4, ICSSEA’03 The SmartTools Software Factory The MDA approach and Generative programming for Software Development: by Didier Parigot Applications need to be more open and adaptable
December 4, ICSSEA’03 Evolutions in Software Engineering Open Problem Applications need to be more open and adaptable Plan Intuitive Idea of Software Factory Upheaval factors of this Software Evolution Overview of the SmartTools Software Factory 4Data Model: independent format 4Semantic Model: Aspect-Oriented Programming 4Component Model: SmartTools Architecture 4Visualisation Model: an example of a MDA component Open Problem Applications need to be more open and adaptable Plan Intuitive Idea of Software Factory Upheaval factors of this Software Evolution Overview of the SmartTools Software Factory 4Data Model: independent format 4Semantic Model: Aspect-Oriented Programming 4Component Model: SmartTools Architecture 4Visualisation Model: an example of a MDA component
December 4, ICSSEA’03 programs compilers system languages applications execution Open and adaptable An intuitive idea of Software Factory Models or Specific languages generators Business Code The Glue Platform Family of application To control the code sensitive to evolutions Capture of a knowledge Software product-line Evolutionary Applications Open and Adaptable Applications
December 4, ICSSEA’03 Factors of change in Software development The Internet 4Web applications (B2B applications and Web Semantic) The proliferation of new technologies 4Components (EJB, CCM, Web Services etc...) 4Which one to choose ? The Democratisation of computer science The time to market: fast software development The impact of standards: W3C et OMG
December 4, ICSSEA’03 Cross-Fertilisation between several research domains Evolution of programming languages By separation of concerns Aspect-Oriented Programming Component Programming Method Call or Interface Model Programming MDA approach proposed by the OMG programming languages The Applications must to be open and adaptable Models or specific languages Generators New programming languages Design Pattern Model: an abstraction for each concern
December 4, ICSSEA’03 Software Factory: SmartTools Generators PIMPSM Data Model Semantic Model Component Model View Model The Glue Business Code Platform Pivot Model Projectable Model Extensible Component MDA approach MDA Component Parts written by the programmer Parts sensitive to evolutions Independent Models (PIM)Specific Models (PSM) MDA Approach Other concerns Other models
December 4, ICSSEA’03 The Data Model Goals Independent Model : PIM 4Any programming language : neutral format 4With generator to instrument the data model : PSMs To use the Standard of W3C (or OMG) consortium 4open new application fields
December 4, ICSSEA’03 UML MOF The Data Model Data Model Meta-language : Absynt Traductors DTD XML Schema Generators Java classes top of the DOM API Is Instance of XML Java XML Is Conform to Can be serialised in Is represented by PSM Meta level
December 4, ICSSEA’03 The Semantic Model The visitor design pattern 4clear separation between structure (objects) and semantic treatments 4Control-flow inside semantic treatments 4the visit method contain the traversal of model Aspect-Oriented programming for this kind of program 4Structure + Traversal + Semantic Actions = program Useful for the projection of semantic treatments in case of data model transformation
December 4, ICSSEA’03 Projection of the semantic treatments Model 2 Transformation Technology 2 Model 1 Technology 1 treatment Projection of aspects Dynamic Projection ? components
December 4, ICSSEA’03 Component model: our approach Architecture of SmartTools Meta tools The method Definition of an abstract component model 4independent of any component technology Definition of a set of transformations to standard component models (EJB, CCM, etc..) : MDA approach Component model based on neutral model (PIM) P2P, dynamic topology Extensible Component
December 4, ICSSEA’03 Connection Generator Component Model Components Manager Creation Component model: an example Data Model View Model Graphic Model Semantic Model Document Graphic view Graphic User Interface Collaboration between all the models Capture of knowledge New notion of type (interface)
December 4, ICSSEA’03 Component model: transformation EJB Home and Remote interfaces Eclipse Eclipse API? (IDE) Abstract Component Model IDL File + Server Class CORBA CCM SmartTools Container Class + Extend facade Class Generators WSDL File SOAP Class Web Services MDA PIM PSM Different interpretations of the component notion
December 4, ICSSEA’03 SmartTools: WHAT is it ? An application manufactured by a software factory To test our approach of Software Factories An application which enables to build a software factory To propose and extend our approach A factory which enables to quickly create a family of application To build a family of application
December 4, ICSSEA’03 GUI: View model Objectives To manipulate the logical form (model) in front To force to definition of the data model Thank to XML approach (DTD, XML schema) Highly extensible Graphic view Extensible IHM, multi-support To place the application before Environment Applications Domain-specific languages (in XML) 4all our DSLs are defined with SmartTools.
December 4, ICSSEA’03 View Model: the Cosynt language Data ModelConcrete Model Logical ComponentView Component View ModelStyle Model XSLT JTOM QVT Model transformation : MDA approach MDA PIM Transformations to PSM Transformations MDA Component Input Output parserXSLT Transformationstylesheet Fusion of transformation Symmetric Transformations Incremental Transformations Double MDA approach Double MDA approach
December 4, ICSSEA’03 Basic components Component manager Graphic User Interface Generators Component Generator Data Structure Generator Semantic Generator View Generator Y logical Component Y view component Applications Y logical component X view component A Bootstrapped Application: SmartTools Kernel 0% Cosynt Xprofile Coq (XML) XML (generic) IDL bibtex In production mode Generators Component Generator Data Structure Generator Semantic Generator View Generator 100% In bash mode In none interactive or export mode N % use of the Software Factory lml Application fields ? Application fields ? RA INRIA Syntax (relax) EDF (UML) B WSDL CSS Java cdml Basic components Component Manager Graphical User Interface 100%50% XSLT DTD MathML XML Schema SVG Absynt HTML ant
December 4, ICSSEA’03 Conclusion : Macro-Programming ? The Classic programming Languages are not the solution ? Independent Model / inter-domains ? Development Processes / Incremental ? Conceptual Model / Product Model ? Universal Model / Business Model ? Open and Adaptable Applications ? Model for each concern ? AOP / directly on the model ? Dynamic Transformation / projection of semantic treatments ? Generative programming / Meta-programming ? Etc… More questions than answers ! But there is already a research prototype: SmartTools
December 4, ICSSEA’03 END QUESTIONS ? Software Factory www-sop.inria.fr/oasis/SmartTools Demonstration
December 4, ICSSEA’03 An example of the GUI
December 4, ICSSEA’03 Overview of SmartTools factory