SlideShare a Scribd company logo
1 of 25
Download to read offline
FAMOOSr 2011
         ESUG 2011
Alexandre Bergel & Jannik Laval
About the workshop


Discuss about the MOOSE software analysis platform
Open to people interested in software analysis
Goals
  Knowing what others are working on

  Find oportunities for join work
During the workshop



 About 20 people attended the workshop. The room
was full
 A large majority of the audience knows Moose,
however they asked for a small briefing :-)
Tudor Gîrba
www.tudorgirba.com
Moose’s pillars


Analysis environment for software systems
4 core actions
  navigation: moving between things

  selection: grouping things

  inspection: inspecting things

  presentation: rendering things
McCabe = 21

NOM                            0
    =   102                   0
                        3  ,0
                      75
                  =


                                                                                          ...
              C
         LO
   Metrics                         Queries                               Visualizations




                                             {               {
                                                 {                   {
                                                                         }
                                                     }
                                                     }
                                                         }       {       }
Currently supported languages



             C
           Java
           Spem
          Smalltalk
        ADA (partially)
FAMIXis a a language independent meta-
FAMIX is language independent meta-model
                 model
                               Package                        Namespace

                              packagedIn                             belongsTo

                                                 *       *
                                                             superclass             *
                                                 Class                                  Inheritance
                                                             subclass               *

                                     belongsTo           belongsTo


                                      *                              *
             *   invokedBy
Invocation                     Method                          Attribute
             *   candidate
                             accessedIn                                  accesses


                                                     *   *

                                             Access
Scheduled presentation

 "The curse of Pharo", digging in Cobol - D. Lont and
Stephan Eggermont
 Exposing hidden dependencies in heterogenous applications
- Fabrizo Perin
 Extending Mondrian with Interactive HTML Visualisation -
Santiago Vidal, Alexandre Bergel, Claudia Marcos, Tudor
Girba
 Using unit tests to increase accuracy of inter-method
dependencies - Alexandre Bergel
 Modeling Check style rules - Angel Nunez, Alexandre Bergel,
Stéphane Ducasse
The curse of Pharo", digging in
                Cobol


 Presented by Diego and Stephan
 Their goal is to replace a large system written in
Cobol
 The original developer of the Cobol system passed
away 10 years ago
 The current maintainer recently got an heart attack.
Refactoring the application

600+ data files
800+ lib files
First question they have:
  do we have all files? use distribution map

  can we read the data? Use a glamour browser to navigate
 between the cobol definitions

Their goals
  complete the implementation of the new ERP system by the end of
 the year

  only move data that is actually needed
Deciphering Cobol



  Separate description of the data format and the file
location
 per file fixed record length, but miltiple record types in
the same file
 references between records are by convention
Browser driven development




 Create a short feedback loop by letting the client use
a browser (made in Glamour)
the curse




 The amount of data to analyze is high: 724 Mbyte of
raw data
Dealing with cobol


 They do not parse Cobol code using a grammar
generated by a parser.
 They gradually parse using regular expression when
they actually need it
 They use convention based on name
 They approach may work only for their case study
however
Demo




They have two browsers (made in glamour):
  INNO browser, for the clients. You can have all the source files and
 load them.

  The data files are presented using a distribution map
Exposing hidden dependencies in
     heterogenous applications
 by Fabrizio from the University of Bern
 heterogenous application: applications written in
different languages
 Fabrizio will shows us a case study with a customer
 he wanted to identify the hidden dependencies
between the DSL scripts and the Java classes
 DSL Scripts and Java classes both share tables in a
database
Idea


 If a java class map or access a table T
 And if a script accesses the same table T
 then we deduce a dependency between the script
and the java classes
 We qualify it as hidden since it is not explicit in the
source
Metamodeling



 Fabrizio has defined a metamodel for this
 He has built browsers to navigate between the tables
and visually represent
 He considers the MySQL databases by using a sql
script using PetitParser
Translating a Mondrian visualization
              into HTML

 Presented by Santiago Vidal, from Argentina
 He has written an exporter that compiles a structure
of Mondrian
 He demoed a number of visualizations, including
system complexity, distribution map and Hapao
  The audience asked about whether a server can
listen to the event the user may do. This is ongoing
work
Unit tests


 presented by Alexandre, myself
 the lack of static type annotation prevents one from
accurately analyzing smalltalk applications
 The idea is to profile the execution of unit tests to
reduce the amount of candidate of an invocation
 Demostrated on Arki and Mondrian
Orion



 Presented by Jannik Laval
 It enables one to explore different path during a
quality improvement activity
 It extends the FAMIX metamodel to have the
difference models information
Demo




Demo using the network Pharo package
AspectMaps

 Given by Johan Fabry, from the University of Chile
 It shows us how it extended the FAMIX metamodel
 An aspect is contained in a namespace
 An aspect has a list of advices and pointcut
  Johan has to extend Glamour by putting an
announcer on the window, thus bypassing the
transmission between widgets
 Apparently Diego & Stefan experienced the very same
problem

More Related Content

Viewers also liked (7)

Language-side Foreign Function Interfaces with NativeBoost
Language-side Foreign Function Interfaces with NativeBoostLanguage-side Foreign Function Interfaces with NativeBoost
Language-side Foreign Function Interfaces with NativeBoost
 
ESUG 2011 Welcome
ESUG 2011 WelcomeESUG 2011 Welcome
ESUG 2011 Welcome
 
Eurydike: Schemaless Object Relational SQL Mapper
Eurydike: Schemaless Object Relational SQL MapperEurydike: Schemaless Object Relational SQL Mapper
Eurydike: Schemaless Object Relational SQL Mapper
 
Seaside Esug 2008
Seaside Esug 2008Seaside Esug 2008
Seaside Esug 2008
 
Representing Code History with Development Environment Events
Representing Code History with Development Environment EventsRepresenting Code History with Development Environment Events
Representing Code History with Development Environment Events
 
iBizLog. Smalltalking the Web
iBizLog. Smalltalking the WebiBizLog. Smalltalking the Web
iBizLog. Smalltalking the Web
 
OOSCM. Object Oriented SCM
OOSCM. Object Oriented SCMOOSCM. Object Oriented SCM
OOSCM. Object Oriented SCM
 

Similar to FAMOOSr 2011

Construction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific LanguagesConstruction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific Languages
ThoughtWorks
 
JaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM CompilerJaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM Compiler
Almann Goo
 
Java Collections Framework
Java  Collections  FrameworkJava  Collections  Framework
Java Collections Framework
guestd8c458
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitions
Luciano Resende
 
Java%20 collections%20framework
Java%20 collections%20frameworkJava%20 collections%20framework
Java%20 collections%20framework
Ilakkian
 

Similar to FAMOOSr 2011 (20)

Semantically-aware Networks and Services for Training and Knowledge Managemen...
Semantically-aware Networks and Services for Training and Knowledge Managemen...Semantically-aware Networks and Services for Training and Knowledge Managemen...
Semantically-aware Networks and Services for Training and Knowledge Managemen...
 
The Evolution of Scala
The Evolution of ScalaThe Evolution of Scala
The Evolution of Scala
 
Managing Binary Compatibility in Scala (Scala Days 2011)
Managing Binary Compatibility in Scala (Scala Days 2011)Managing Binary Compatibility in Scala (Scala Days 2011)
Managing Binary Compatibility in Scala (Scala Days 2011)
 
Managing Binary Compatibility in Scala (Scala Lift Off 2011)
Managing Binary Compatibility in Scala (Scala Lift Off 2011)Managing Binary Compatibility in Scala (Scala Lift Off 2011)
Managing Binary Compatibility in Scala (Scala Lift Off 2011)
 
Construction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific LanguagesConstruction Techniques For Domain Specific Languages
Construction Techniques For Domain Specific Languages
 
Object Oriented Programming with COBOL
Object Oriented Programming with COBOLObject Oriented Programming with COBOL
Object Oriented Programming with COBOL
 
Core_Java_Interview.pdf
Core_Java_Interview.pdfCore_Java_Interview.pdf
Core_Java_Interview.pdf
 
JaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM CompilerJaCIL_ a CLI to JVM Compiler
JaCIL_ a CLI to JVM Compiler
 
Advanced application architecture
Advanced application architectureAdvanced application architecture
Advanced application architecture
 
Easy Data Object Relational Mapping Tool
Easy Data Object Relational Mapping ToolEasy Data Object Relational Mapping Tool
Easy Data Object Relational Mapping Tool
 
Java Collections Framework
Java  Collections  FrameworkJava  Collections  Framework
Java Collections Framework
 
B vb script11
B vb script11B vb script11
B vb script11
 
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCONMicroservices Application Tracing Standards and Simulators - Adrians at OSCON
Microservices Application Tracing Standards and Simulators - Adrians at OSCON
 
Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015
Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015
Data FAIRport Prototype & Demo - Presentation to Elsevier, Jul 10, 2015
 
Object-Oriented Application Frameworks
Object-Oriented Application FrameworksObject-Oriented Application Frameworks
Object-Oriented Application Frameworks
 
Data access layer and schema definitions
Data access layer and schema definitionsData access layer and schema definitions
Data access layer and schema definitions
 
ITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptxITTutor Advanced Java (1).pptx
ITTutor Advanced Java (1).pptx
 
Use Eclipse Technologies to build a modern embedded development IDE
Use Eclipse Technologies to build a modern embedded development IDEUse Eclipse Technologies to build a modern embedded development IDE
Use Eclipse Technologies to build a modern embedded development IDE
 
Martin Odersky: What's next for Scala
Martin Odersky: What's next for ScalaMartin Odersky: What's next for Scala
Martin Odersky: What's next for Scala
 
Java%20 collections%20framework
Java%20 collections%20frameworkJava%20 collections%20framework
Java%20 collections%20framework
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

FAMOOSr 2011

  • 1. FAMOOSr 2011 ESUG 2011 Alexandre Bergel & Jannik Laval
  • 2. About the workshop Discuss about the MOOSE software analysis platform Open to people interested in software analysis Goals Knowing what others are working on Find oportunities for join work
  • 3. During the workshop About 20 people attended the workshop. The room was full A large majority of the audience knows Moose, however they asked for a small briefing :-)
  • 5. Moose’s pillars Analysis environment for software systems 4 core actions navigation: moving between things selection: grouping things inspection: inspecting things presentation: rendering things
  • 6. McCabe = 21 NOM 0 = 102 0 3 ,0 75 = ... C LO Metrics Queries Visualizations { { { { } } } } { }
  • 7.
  • 8. Currently supported languages C Java Spem Smalltalk ADA (partially)
  • 9. FAMIXis a a language independent meta- FAMIX is language independent meta-model model Package Namespace packagedIn belongsTo * * superclass * Class Inheritance subclass * belongsTo belongsTo * * * invokedBy Invocation Method Attribute * candidate accessedIn accesses * * Access
  • 10. Scheduled presentation "The curse of Pharo", digging in Cobol - D. Lont and Stephan Eggermont Exposing hidden dependencies in heterogenous applications - Fabrizo Perin Extending Mondrian with Interactive HTML Visualisation - Santiago Vidal, Alexandre Bergel, Claudia Marcos, Tudor Girba Using unit tests to increase accuracy of inter-method dependencies - Alexandre Bergel Modeling Check style rules - Angel Nunez, Alexandre Bergel, Stéphane Ducasse
  • 11. The curse of Pharo", digging in Cobol Presented by Diego and Stephan Their goal is to replace a large system written in Cobol The original developer of the Cobol system passed away 10 years ago The current maintainer recently got an heart attack.
  • 12. Refactoring the application 600+ data files 800+ lib files First question they have: do we have all files? use distribution map can we read the data? Use a glamour browser to navigate between the cobol definitions Their goals complete the implementation of the new ERP system by the end of the year only move data that is actually needed
  • 13. Deciphering Cobol Separate description of the data format and the file location per file fixed record length, but miltiple record types in the same file references between records are by convention
  • 14. Browser driven development Create a short feedback loop by letting the client use a browser (made in Glamour)
  • 15. the curse The amount of data to analyze is high: 724 Mbyte of raw data
  • 16. Dealing with cobol They do not parse Cobol code using a grammar generated by a parser. They gradually parse using regular expression when they actually need it They use convention based on name They approach may work only for their case study however
  • 17. Demo They have two browsers (made in glamour): INNO browser, for the clients. You can have all the source files and load them. The data files are presented using a distribution map
  • 18. Exposing hidden dependencies in heterogenous applications by Fabrizio from the University of Bern heterogenous application: applications written in different languages Fabrizio will shows us a case study with a customer he wanted to identify the hidden dependencies between the DSL scripts and the Java classes DSL Scripts and Java classes both share tables in a database
  • 19. Idea If a java class map or access a table T And if a script accesses the same table T then we deduce a dependency between the script and the java classes We qualify it as hidden since it is not explicit in the source
  • 20. Metamodeling Fabrizio has defined a metamodel for this He has built browsers to navigate between the tables and visually represent He considers the MySQL databases by using a sql script using PetitParser
  • 21. Translating a Mondrian visualization into HTML Presented by Santiago Vidal, from Argentina He has written an exporter that compiles a structure of Mondrian He demoed a number of visualizations, including system complexity, distribution map and Hapao The audience asked about whether a server can listen to the event the user may do. This is ongoing work
  • 22. Unit tests presented by Alexandre, myself the lack of static type annotation prevents one from accurately analyzing smalltalk applications The idea is to profile the execution of unit tests to reduce the amount of candidate of an invocation Demostrated on Arki and Mondrian
  • 23. Orion Presented by Jannik Laval It enables one to explore different path during a quality improvement activity It extends the FAMIX metamodel to have the difference models information
  • 24. Demo Demo using the network Pharo package
  • 25. AspectMaps Given by Johan Fabry, from the University of Chile It shows us how it extended the FAMIX metamodel An aspect is contained in a namespace An aspect has a list of advices and pointcut Johan has to extend Glamour by putting an announcer on the window, thus bypassing the transmission between widgets Apparently Diego & Stefan experienced the very same problem