How to Deal With Your IT Legacy?
Reverse Engineering with MoDisco...




Hugo Brunelière                          INRIA / AtlanMod team
Frédéric Madiot                          Mia-Software

                                                                        1
        Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Overview
           a Model-Driven platform
                     for Software Modernization projects

        Support multiple                                                                Support multiple
      Legacy Technologies            Support multiple                                       Outputs
                                  Modernization Scenarios

  Source code                                                                                   Metrics



    Databases                         • Quality Assurance                                       Models
                                      • Understanding
                                      • Refactoring
 Configuration                        • Technical Migration
     files                                                                                      New system



Other sources                                                                                   Documentation



                                                                                                           2
                        Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Approach
         Models to represent and manipulate
                              artifacts of existing systems


    Existing
Software System
                           Discover                          Understand                   Transform




Software artifacts :                                                                          New
 - source code                Models                             Viewpoints
                                                                                         Software System
 - configuration files
 - tests
 - database
 -…



                                                                                                      3
                         Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Architecture
                         Supported Technologies

     Java                               XML                                 ...

   Metamodel                      Metamodel
   Discoverer                     Discoverer
   Generator




    Discovery                         Model                      Customization
    Manager                          Browser                     & Extensibility




Plug and orchestrate              Navigation                         Definition of
      artifacts                    through                             specific
   transformators               complex models                        Viewpoints


                                Infrastructure

                                                                                     4
            Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Legacy applications in Java ?

   From the moment one writes a line of code, it becomes
   legacy, and that legacy accumulates (Grady Booch)


– Samples
  •   LinkedIn > 1M lines of java code
  •   Texas Health (TIERS application) > 2.5M lines of java code
  •   CruiseControl > 5M lines of java code
  •   Eclipse (Galileo) > 24M lines of java code
  •   SAP (NetWeaver) > 24M lines of java code (255k classes)


– Continuous evolution
  • JDK versions x Frameworks x Design Patterns


                                                                              5
              Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Complex models ?


Java metamodel :
                                                                  Example :
   -126 types
   -173 references                      Java model of draw2d :
                                            - org.eclipse.draw2d
                                                - org.eclipse.draw2d.tests

                                        447 Java classes  144 374 nodes !




                                                                              6
              Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
MoDisco Demo
                                                 java.ecore


                         MoDisco
                           Java
                                                         conforms to
                        Discoverer




                                                draw2d
    draw2d                                   java EMF model
Java source code




                                                                                  Demo

                                                                             Models
                                                              MoDisco
                                                            ModelBrowser


                                                                                      7
             Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Find Patterns in your Models !



Define and dynamically plug
         your own                                                               Example
Facets & UI Customizations
                                                          Decorate the Java model of
                                                           org.eclipse.draw2d.tests
                                                          To highlight JUnit patterns:

                                                                       -Test suite
                                                                       -Test case
                                                                       -Test




                                                                                          8
                Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
MoDisco Demo
                         java.ecore
customizes




                  conforms to




                         draw2d
                      java EMF model




  JUnit3
Customization
                                                                  Demo
                         MoDisco
                       ModelBrowser
                                                Models


           uses
                            JUnit3
                            Queries

                                                                    9
  Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
MoDisco Demo




                                        Query




  Java          OCL                        ATL                    XPath
  query         query                     query                            ...
                                                                  query



EMFQuery
  query




                                                                                 10
           Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
MoDisco Demo
                           java.ecore
customizes                                                   extends




                    conforms to




                           draw2d
                        java EMF model




      JUnit3                                          JUnit3
   Customization                                       Facets

                           MoDisco
                         ModelBrowser
                                                  Models               Demo

             uses                                   uses
                              JUnit3
                              Queries

                                                                         11
    Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
MoDisco Demo
            java.ecore                                             testsuite.ecore
extends




     conforms to                                                            conforms to




             draw2d                                                 draw2d
          java EMF model                                      testsuite EMF model




               JUnit3                 uses
                Facets




           Models
            uses

                                                                                  MoDisco
               JUnit3
                Queries
                                                   Demo                         ModelBrowser


                                                                                               12
            Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Transform and Regenerate …
Example : from JUnit3 to JUnit4
                                                    superClass
                                                                          ClassDeclaration
                 ClassDeclaration                                junit.framework.TestCase
                   RayTest                                        importedElement


                                                      ImportDeclaration
                                        imports



     MoDisco                                 MethodDeclaration
       Java          bodyDeclarations             test_length()
    Discoverer




                                                                                             13
                    Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Transform and Regenerate …
Example : from JUnit3 to JUnit4
                                                    superClass
                                                                          ClassDeclaration
                 ClassDeclaration                                junit.framework.TestCase
                   RayTest                                        importedElement


                                                      ImportDeclaration
                                        imports



     MoDisco                                 MethodDeclaration
       Java          bodyDeclarations             test_length()
    Discoverer




                                                                                             14
                    Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Transform and Regenerate …
Example : from JUnit3 to JUnit4
                 ClassDeclaration
                   RayTest




     MoDisco                             MethodDeclaration
       Java          bodyDeclarations      test_length()
    Discoverer




                                                                                    15
                    Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Transform and Regenerate …
Example : from JUnit3 to JUnit4
                 ClassDeclaration                                                   ClassDeclaration
                   RayTest                                                          org.junit.Test
                                                                                              type




                                                             annotations    Annotation
     MoDisco                             MethodDeclaration
       Java          bodyDeclarations      test_length()
    Discoverer




                                                                                                       16
                    Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Transform and Regenerate …
Example : from JUnit3 to JUnit4
                 ClassDeclaration                                                       ClassDeclaration
                   RayTest                                                              org.junit.Test
                                                                                                  type
                                                      ImportDeclaration
                                        imports


                                                                  annotations   Annotation
     MoDisco                                 MethodDeclaration
       Java          bodyDeclarations             test_length()
    Discoverer




                                                                                                           17
                    Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Transform and Regenerate …
Example : from JUnit3 to JUnit4
                 ClassDeclaration                                                       ClassDeclaration
                   RayTest                                                              org.junit.Test
                                                                                                  type
                                                      ImportDeclaration
                                        imports


                                                                                Annotation
     MoDisco
                                                                  annotations
                                                                                                            MoDisco
                                             MethodDeclaration
       Java                                                                                                  Java
                     bodyDeclarations             test_length()
    Discoverer                                                                                             Generator




                                                                                                               18
                    Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
Who is involved in MoDisco ?


       • The MoDisco team
           –   6 committers
                • 1 from INRIA
                • 5 from Mia-Software
           –   Several regular active contributors

       • Supported by the OMG (ADM TF)
           –   Reference implementations of standards from the
           –    Architecture Driven Modernization Task Force
                • KDM (Knowledge Discovery Metamodel)
                • SMM (Software Metrics Metamodel)


       • Supported by the European Commission
           –   Project initiated by INRIA in the context of
           –     the MODELPLEX IST-FP6 European Project


                                                                                              19
24/03/10                      Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
MoDisco

             Questions ?
www.eclipse.org/gmt/modisco




                                                                20
Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved

MoDisco EclipseCon2010

  • 1.
    How to DealWith Your IT Legacy? Reverse Engineering with MoDisco... Hugo Brunelière INRIA / AtlanMod team Frédéric Madiot Mia-Software 1 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 2.
    Overview a Model-Driven platform for Software Modernization projects Support multiple Support multiple Legacy Technologies Support multiple Outputs Modernization Scenarios Source code Metrics Databases • Quality Assurance Models • Understanding • Refactoring Configuration • Technical Migration files New system Other sources Documentation 2 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 3.
    Approach Models to represent and manipulate artifacts of existing systems Existing Software System Discover Understand Transform Software artifacts : New - source code Models Viewpoints Software System - configuration files - tests - database -… 3 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 4.
    Architecture Supported Technologies Java XML ... Metamodel Metamodel Discoverer Discoverer Generator Discovery Model Customization Manager Browser & Extensibility Plug and orchestrate Navigation Definition of artifacts through specific transformators complex models Viewpoints Infrastructure 4 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 5.
    Legacy applications inJava ? From the moment one writes a line of code, it becomes legacy, and that legacy accumulates (Grady Booch) – Samples • LinkedIn > 1M lines of java code • Texas Health (TIERS application) > 2.5M lines of java code • CruiseControl > 5M lines of java code • Eclipse (Galileo) > 24M lines of java code • SAP (NetWeaver) > 24M lines of java code (255k classes) – Continuous evolution • JDK versions x Frameworks x Design Patterns 5 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 6.
    Complex models ? Javametamodel : Example : -126 types -173 references Java model of draw2d : - org.eclipse.draw2d - org.eclipse.draw2d.tests 447 Java classes  144 374 nodes ! 6 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 7.
    MoDisco Demo java.ecore MoDisco Java conforms to Discoverer draw2d draw2d java EMF model Java source code Demo Models MoDisco ModelBrowser 7 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 8.
    Find Patterns inyour Models ! Define and dynamically plug your own Example Facets & UI Customizations Decorate the Java model of org.eclipse.draw2d.tests To highlight JUnit patterns: -Test suite -Test case -Test 8 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 9.
    MoDisco Demo java.ecore customizes conforms to draw2d java EMF model JUnit3 Customization Demo MoDisco ModelBrowser Models uses JUnit3 Queries 9 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 10.
    MoDisco Demo Query Java OCL ATL XPath query query query ... query EMFQuery query 10 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 11.
    MoDisco Demo java.ecore customizes extends conforms to draw2d java EMF model JUnit3 JUnit3 Customization Facets MoDisco ModelBrowser Models Demo uses uses JUnit3 Queries 11 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 12.
    MoDisco Demo java.ecore testsuite.ecore extends conforms to conforms to draw2d draw2d java EMF model testsuite EMF model JUnit3 uses Facets Models uses MoDisco JUnit3 Queries Demo ModelBrowser 12 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 13.
    Transform and Regenerate… Example : from JUnit3 to JUnit4 superClass ClassDeclaration ClassDeclaration junit.framework.TestCase RayTest importedElement ImportDeclaration imports MoDisco MethodDeclaration Java bodyDeclarations test_length() Discoverer 13 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 14.
    Transform and Regenerate… Example : from JUnit3 to JUnit4 superClass ClassDeclaration ClassDeclaration junit.framework.TestCase RayTest importedElement ImportDeclaration imports MoDisco MethodDeclaration Java bodyDeclarations test_length() Discoverer 14 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 15.
    Transform and Regenerate… Example : from JUnit3 to JUnit4 ClassDeclaration RayTest MoDisco MethodDeclaration Java bodyDeclarations test_length() Discoverer 15 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 16.
    Transform and Regenerate… Example : from JUnit3 to JUnit4 ClassDeclaration ClassDeclaration RayTest org.junit.Test type annotations Annotation MoDisco MethodDeclaration Java bodyDeclarations test_length() Discoverer 16 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 17.
    Transform and Regenerate… Example : from JUnit3 to JUnit4 ClassDeclaration ClassDeclaration RayTest org.junit.Test type ImportDeclaration imports annotations Annotation MoDisco MethodDeclaration Java bodyDeclarations test_length() Discoverer 17 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 18.
    Transform and Regenerate… Example : from JUnit3 to JUnit4 ClassDeclaration ClassDeclaration RayTest org.junit.Test type ImportDeclaration imports Annotation MoDisco annotations MoDisco MethodDeclaration Java Java bodyDeclarations test_length() Discoverer Generator 18 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 19.
    Who is involvedin MoDisco ? • The MoDisco team – 6 committers • 1 from INRIA • 5 from Mia-Software – Several regular active contributors • Supported by the OMG (ADM TF) – Reference implementations of standards from the – Architecture Driven Modernization Task Force • KDM (Knowledge Discovery Metamodel) • SMM (Software Metrics Metamodel) • Supported by the European Commission – Project initiated by INRIA in the context of – the MODELPLEX IST-FP6 European Project 19 24/03/10 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved
  • 20.
    MoDisco Questions ? www.eclipse.org/gmt/modisco 20 Copyright © 2010 Mia-Software & AtlanMod. All Rights Reserved