2014 01-ticosa

465
-1

Published on

A presentation about reengineering tools for the TICOSA conference

Published in: Education, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
465
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

2014 01-ticosa

  1. 1. Dedicated tools and research for Software Business intelligence @ Tisoca 2014 Dr. S. Ducasse rmod.lille.inria.fr stephane.ducasse.free.fr 1
  2. 2. stephane.ducasse.free.fr • Leader of RMOD Inria team • Co-founder of http://www.synectique.eu • • • • Co-creator of Moose http://www.moosetechnology.org Leader of http://www.pharo.org Coder and object-designer Traits co-father
  3. 3. Software is Complex
  4. 4. Software is a living entity... •Early decisions were certainly good at that time •But the context changes •Customers change •Technology changes •People change
  5. 5. Maintenance = Success!!
  6. 6. We only maintain useful successful software
  7. 7. Maintenance is continuous Development 4% Other 20% 80% 18% Adaptive (new platforms or OS) Between 50% and 90% of global effort is spent on “maintenance” ! 4% 18% 18% 60% 18% Corrective (fixing reported errors) 60% Perfective (new functionality) “Maintenance”
  8. 8. 50% of development time is lost trying to understand code ! 20% 20% 80% Between 50% and 80% of the overall cost is spent in the evolution 40% 40% We lose a lot of time with inappropriate and ineffective practices
  9. 9. We need dedicated tools!
  10. 10. Pragmatic researchers in action
  11. 11. Dedicated tools tailored to your problems Profitable in terms of cost http://www.synectique.eu
  12. 12. RMOD RMoD: code analysis, metamodeling, software metrics, program understanding, program visualization, evolution analysis, refactorings, legacy code, quality, ... Current focus Remodularization analyses Reverse Engineering Quality models (PSA-Airfrance) Towards semantic merge Old and odd language analyses Representation Rule and bug assessment Collaborations Soft-VUB (Belgium), Pleiad (Chile) UFMG (Brazil), SCG (Swiss), LIRMM Analyses Transformations Evolution 13
  13. 13. Understanding Large Systems Static/Dynamic Information Feature Analysis Class Understanding Reverse Package Blueprints Engineering Distribution Maps Analyses Representation Software Metrics Quality Models Duplicated Code Identification Test Generation Cycle and Layer Identification Merging technics Rules assessment Transformations Evolution Language Independent Meta Model (FAMIX) An Extensible Reengineering Environment S.Ducasse Language Independent Refactorings Reengineering Patterns Version Analyses HISMO metamodel 14 LSE
  14. 14. Java C  /  C++ Smalltalk .NET
  15. 15. ols d To cate edi D Data Develop Analysis Model Analysis Take decision “an analysis should lead to a decision”
  16. 16. Example : Who is behind package X ? (4) Visualisation (3) Analyses (2) Modèle (1) Extraction
  17. 17. Step 1 - Model Creation/Import (4) Visualisation (3) Analyses (2) Modèle (1) Extraction Definition of a model to represent entities Data Extraction (CVS...)
  18. 18. Step 2 - Analyses (4) Visualisation (3) Analyses (2) Modèle (1) Extraction Who wrote how many lines of code?
  19. 19. Step : 3 - Creating the Map
  20. 20. JBoss at a glance Interactive tool Data in perspective (4) Visualisation (3) Analyses (2) Modèle (1) Extraction
  21. 21. data importers models engines m o o se techno l ogy.org analyses
  22. 22. Naviga3on  in  the  Model
  23. 23. Queries  reduce  the  analysis   Query
  24. 24. So@ware  Metrics
  25. 25. Metrics  in  Moose
  26. 26. Metrics Dashboard
  27. 27. Evolution Dashboard
  28. 28. Evolution Matrix
  29. 29. Moose  Meta-­‐Model To  represent  program   informa3on Java Smalltalk C/C++ .NET ...
  30. 30. Custom rules can be captured and checked daily for you.
  31. 31. Dedicated Analysis reports with Moose provide pertinent analysis for software elements
  32. 32. Reports can integrated into software process: Automated, continuous reports with integration servers
  33. 33. Custom Rules Rule followers and breakers green: followers orange: break < 2 rules Red: break > 2 rules
  34. 34. Tudor Gîrba
  35. 35. Tools  Design  With  Moose
  36. 36. Modeling of Eclipse Plugins
  37. 37. Contextual Visualization of Plugins Core: Blue Uml: Red
  38. 38. Visualization of Plugins & Dependencies All incoming dependencies for a package in green
  39. 39. Analysis of bugs
  40. 40. Dedicated Analyses ...
  41. 41. Dedicated Tools Rich Compact Best Focus
  42. 42. b := GLMTabulator new. b column: #namespaces; column: #classes; column: #methods. b transmit to: #namespaces; andShow: [:a | a tree display: [ :model | model allNamespaces select: #isRoot ]; children: #childScopes; format: #name ]. b transmit to: #classes; from: #namespaces; andShow: [:a | a list display: #classes; format: #name ]. b transmit to: #methods; from: #classes; andShow: [:a | a list display: #methods; format: #signature ]. b transmit toOutsidePort: #class; from: #classes. b transmit to: #methods; from: #methods. B := GLMTabulator new. B title: 'Code Browser'. B row: #nav; row: #details. B transmit to: #nav; andShow: [:a | a custom: b ]. B transmit to: #details; from: #nav port: #class; andShow: [:a | a text display: #sourceText ]. B transmit to: #details; from: #nav port: #method; andShow: [:a | a text display: #sourceText ].
  43. 43. One picture is worth one thousand words Which one? How could it be that simple? 50
  44. 44. Program visualization is difficult Limited number of colors: 12 Blur and color emergence Limited screen size Limited context, edges crossing Limited short-term memory (three to nine) Difficult to remember too many symbols/semantics Culture, Colorblind 51
  45. 45. Our constraints Lot of existing and advanced solutions ICPC is full of them HEB Plenty of works on information visualization Simple but not simplistic Ideally, solutions that an engineer could reproduce in a couple of days 52
  46. 46. Understanding large systems • • • • Understanding code is difficult! Systems are large Code is abstract Should I really convinced you? • Some existing approaches -Metrics: you often get meaningless results once combined -Visualization: often beautiful but with little meaning • Polymetric view is an idea of M. Lanza [WCRE,TSE]
  47. 47. System  Complexity Class  Blueprint Classes  and  their  hierarchy Height  =  NOM Width  =  NOA Color  =  LOC Outer  Rectangles  =  Classes  Inner  =  methods/aVributes Demonstrates  class  layers  and   class  interac3ons Chronia X-­‐axis  =  3me Y-­‐axis  =  files Colors  =  authors Distribu2on  Map Rectangles  =  A  reference  Par33on (Example:  Packages) Color  =  Some  property (words) Code  City Districts  =  Packages Towers  =  Classes Tower  Height  =  NOM Tower  width  =  NOA Trace  Signal Lines  =  execu3on  of  methods
  48. 48. System Complexity shows class hierarchies. attributes methods lines
  49. 49. Polymetric views condense information To get a feel of the inheritance semantics: adding vs. reusing Classes+Inheritance W: # of Added Methods H: # of Overridden Methods C: # of Method Extended methods LOC # statements # parameters S.Ducasse 56 LSE
  50. 50. Understanding Classes: Easier? • Public and non public methods • No predefined reading order • Inheritance • Class blueprint is an idea of M. Lanza [OOPSLA]
  51. 51. Understanding Changes
  52. 52. Introducing a feature Introduced PopupChoice / RequestDialog 59
  53. 53. How to understand changes • Torch is the work of V. Uquillas-Gomez
  54. 54. Package Structure
  55. 55. Removing a feature (I) Removed Pen and PenPointRecorder 64
  56. 56. Editing comments
  57. 57. Lessons learned • Program visualization is difficult • Squares and little symbols are just squares and little symbols • Glancing at code is still efficient
  58. 58. Omnipresent code + visualization is excellent
  59. 59. Dedicated tools tailored to your problems Profitable in terms of cost http://www.synectique.eu
  60. 60. Inven3ve  Toolkit •  Multi-language •  Meta-tool: An environment to build tools •  Any kind of data: logs, authors, bugs, …
  61. 61. Example of dedicated tools http://www.synectique.eu
  62. 62. Analysis and Migration Support Problem: Since 30 years company X develops insurance solution. The old compiler costs more and more. Which part to migrate first? How to reduce the migration cost (duplicated code, screen numbers)? How to control the migration? Solution : Build a specific analysis tools (2 cycles of 6 weeks) Domain and problem analysis Engineer formation
  63. 63. Reverse engineering and support new generation Problem: Since 15 years company X develops missile shooting systems. The most of original team left. Other foreign code to maintain. Understanding current message driven architecture. Extracting domain model Mapping concepts back to code. Supporting testing components Solution : Domain and problem analysis Build a specific analysis tools (3-4 months) Engineer formation
  64. 64. Decision Making Support Problem: Since 20 years company X develops insurance solution. The old compiler costs more and more. Which part depends on which other one? Duplicated code? Dead code? Solution : Domain and problem analysis Build a specific analysis tools (2 cycles of 6 weeks) Engineer formation
  65. 65. : #isGod ses select clas 00 ,0 53 7 McCabe = 21 C = LO ... Inventive Toolkit /59
  66. 66. Multi levels Dashboard Code   analyzer Impact  analyzer /59 Duplica3on   inspector
  67. 67. Dashboard • Metrics: o Method projets o Forms o Tables • Quality • Debt • Reports /59
  68. 68. Code Analyzer /59 • Code Browser • Dependencies • Filters
  69. 69. Duplication Inspector • Duplication detector • Customizable /59
  70. 70. Impact Analyzer • Global dependencies • Interactif • Cyclic dependencies  /59
  71. 71. Rule Checker /59 Automated rule checking Specific client driven rules
  72. 72. http://stephane.ducasse.free.fr http://www.synectique.eu
  73. 73. Interested by your problems - Migration support - Decision making support - Extraction and definition of rules - Software architecture Verification - Visualizations - Cost prediction - Impact change - Service-oriented architecture - Software analysis
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×