Stories About Renraku — the new Quality Model of Pharo (esug2016)

Stories About Renraku — the new Quality Model of Pharo (esug2016)

Earlier this year Pharo 5 was released with QualityAssistant on board. However the live quality feedback in the code browser is just the tip of the iceberg. The main value comes from Renraku — a quality model that was forged during the last two years based on the requirements of quality tools. One cannot simply “show” Renraku as it is just a meta-model with a set of handy functions. And I will never allow myself to bore audience by presenting dry specifications. Luckily I have enough stories that accumulated during the development to unveil Renraku by telling about the challenges and solutions that shaped Pharo’s quality model.

9847702de1f7f19db8c3e158325baa8e?s=128

Yuriy Tymchuk

August 23, 2016
Tweet

Transcript

  1. Stories About Renraku — the new Quality Model of Pharo

    @yuriy_tymchuk Software Composition Group
  2. Now. YT 25yo Now. YT 24yo 2006. YT 15yo Unikernel

    Freelance Team Helpdesk / Network Administrator ISP UARNet Interlogic outsourcing SW company Innocode SW company Physics and Mathematics Lyceum Minor Academy of Sciences of Ukraine Bachelor in Informatics MSc Inf. Ph.D. Lugano RMoD internship
  3. Now. YT 25yo Now. YT 24yo 2006. YT 15yo Unikernel

    Freelance Team Helpdesk / Network Administrator ISP UARNet Interlogic outsourcing SW company Innocode SW company Physics and Mathematics Lyceum Minor Academy of Sciences of Ukraine Bachelor in Informatics MSc Inf. Ph.D. Lugano RMoD internship Ph.D. Bern
  4. None
  5. A Mistake

  6. A Mistake can be Solved Early A Mistake

  7. None
  8. How do you !nd QualityAssistant?

  9. Very disturbing Disturbing Sometimes Disturbing Not influential Sometimes Useful Useful

    Very useful How do you !nd QualityAssistant?
  10. Very disturbing Disturbing Sometimes Disturbing Not influential Sometimes Useful Useful

    Very useful 46% 29% 17% 4% 4% How do you !nd QualityAssistant?
  11. 46% 29% 17% 4% 4% Very disturbing Disturbing Sometimes Disturbing

    Not influential Sometimes Useful Useful Very useful How often do you use CriticBrowser?
  12. 46% 29% 17% 4% 4% Very disturbing Disturbing Sometimes Disturbing

    Not influential Sometimes Useful Useful Very useful Don't Know Never Yearly Monthly Weekly Daily 24% 24% 22% 11% 11% 9% How often do you use CriticBrowser?
  13. None
  14. Renraku

  15. ONE DOES NOT SIMPLY “SHOW” RENRAKU

  16. The Origin

  17. Renraku 

  18. Renraku [|] Rule Code

  19. Renraku [|] Critique Rule Code

  20. The Vocabulary

  21. Renraku [|] Rule Code Critique

  22. English Language Critique Critic

  23. English Language Critique Critic

  24. English Language Critique Critic

  25. Huge Refactoring Critique Critic ReTrivialCritic ReTrivialCritique

  26. Our Dog Food is Good

  27. Our Dog Food is Good!

  28. Death and Life

  29. None
  30. x x Who Shoots the Assistant?

  31. Who is the Assistant?

  32. Who is the Assistant?

  33. This is not QualityAssistant

  34. This is not QualityAssistant

  35. Usage Contracts (2013) Angela Lozano, Kim Mens, Andy Kellens

  36. Usage Contracts (2013) Angela Lozano, Kim Mens, Andy Kellens

  37. Polycriticism

  38. Issue Tracker Connection

  39. Issue Tracker Connection We want to link FogBugs issues to

    Pharo’s classes and methods. Can we display this information in QualityAssistant?
  40. Issue Tracker Connection Sure!

  41. Issue Tracker Connection Sure! Just follow the Renraku protocol

  42. External Properties for Editor by Juraj Kubelka

  43. External Properties for Editor by Juraj Kubelka

  44. Feedback Loop

  45. Feedback

  46. RBInstVarInSubclassesRule

  47. RBInstVarInSubclassesRule „I have no idea what this rules does“

  48. RBInstVarInSubclassesRule „I have no idea what this rules does“

  49. RBInstVarInSubclassesRule „I have no idea what this rules does“

  50. RBInstVarInSubclassesRule „I have no idea what this rules does“

  51. RBInstVarInSubclassesRule „I have no idea what this rules does“

  52. RBInstVarInSubclassesRule „I have no idea what this rules does“

  53. The Demand Shapes the Model

  54. Started by the Message Browser

  55. We Need an Interval self target class

  56. We Need an Interval self target class

  57. Transform. ParseTree Block Types of Rules Transform. ParseTree Block

  58. Transform. ParseTree Block Transform. ParseTree Block Types of Rules

  59. Types of Rules Transform. ParseTree Block

  60. Types of Rules Transform. ParseTree Block 'Smalltalk ui icons iconNamed:

    `#aSymbol'
  61. Types of Rules Transform. ParseTree Block ^ GLMGenericAction new icon:

    (Smalltalk ui icons iconNamed: #stop); action: [ self halt ]. 'Smalltalk ui icons iconNamed: `#aSymbol'
  62. Types of Rules Transform. ParseTree Block ^ GLMGenericAction new icon:

    (Smalltalk ui icons iconNamed: #stop); action: [ self halt ]. 'Smalltalk ui icons iconNamed: `#aSymbol'
  63. Types of Rules Transform. ParseTree Block ^ GLMGenericAction new icon:

    (Smalltalk ui icons iconNamed: #stop); action: [ self halt ]. 'Smalltalk ui icons iconNamed: `#aSymbol' '`#aSymbol asIcon'
  64. Types of Rules Transform. ParseTree Block ^ GLMGenericAction new icon:

    (Smalltalk ui icons iconNamed: #stop); action: [ self halt ]. 'Smalltalk ui icons iconNamed: `#aSymbol' '`#aSymbol asIcon' ^ GLMGenericAction new icon: (#stop asIcon); action: [ self halt ].
  65. None
  66. Node-based Critiques

  67. Node-based Critiques

  68. Node-based Critiques

  69. Node-based Critiques

  70. Transform. ParseTree Block Transform. ParseTree Block Interval Support

  71. The Point of No Return

  72. CriticBrowser on Renraku

  73. Old Highlight

  74. Highlight Based on AST

  75. Useless Output

  76. Custom Auto!x

  77. Auto!x by Refactoring…

  78. Same Preview as in QA

  79. Auto!x by Refactoring…

  80. RePropertyAction new icon: #smallWindow asIcon; description: 'Open dependency analyzer'; action:

    [ :crit :package | self openDependencyAnalyzerOn: package ]; yourself Architectural Action
  81. Architectural Action

  82. Architectural Action

  83. Documentation :)

  84. System’s Help Browser

  85. Here’s to the Contributors!

  86. Marcus Denker Here’s to the Contributors!

  87. Nicolai Hess Marcus Denker Henrik Nergaard Here’s to the Contributors!

  88. Nicolai Hess Marcus Denker Henrik Nergaard and others… Here’s to

    the Contributors!
  89. Now. YT 25yo 2006. YT 15yo Unikernel Freelance Team Helpdesk

    / Network Administrator ISP UARNet Interlogic outsourcing SW company Innocode SW company Physics and Mathematics Lyceum Minor Academy of Sciences of Ukraine Bachelor in Informatics MSc Inf. Ph.D. Lugano RMoD internship Ph.D. Bern
  90. Now. YT 25yo 2006. YT 15yo Unikernel Freelance Team Helpdesk

    / Network Administrator ISP UARNet Interlogic outsourcing SW company Innocode SW company Physics and Mathematics Lyceum Minor Academy of Sciences of Ukraine Bachelor in Informatics MSc Inf. Ph.D. Lugano RMoD internship Ph.D. Bern
  91. None
  92. None
  93. 46% 29% 17% 4% 4%

  94. 46% 29% 17% 4% 4% Actionability

  95. 46% 29% 17% 4% 4% Actionability Critiques in Monkey

  96. 46% 29% 17% 4% 4% Actionability Critiques in Monkey Better

    Feedback
  97. 46% 29% 17% 4% 4% Code Properties Actionability Critiques in

    Monkey Better Feedback
  98. 46% 29% 17% 4% 4% Code Properties Actionability Critiques in

    Monkey Object Critiques Better Feedback
  99. 46% 29% 17% 4% 4% Code Properties Actionability Critiques in

    Monkey Object Critiques Critiques in Debugger Better Feedback
  100. 46% 29% 17% 4% 4% Code Properties Actionability Critiques in

    Monkey Object Critiques Critiques in Debugger Better Feedback Rule Developer-friendliness
  101. 46% 29% 17% 4% 4% Code Properties Actionability Critiques in

    Monkey Object Critiques Usage Analysis Critiques in Debugger Better Feedback Rule Developer-friendliness
  102. Usage Analysis 46% 29% 17% 4% 4% Object Critiques Better

    Feedback Code Properties Critiques in Debugger Actionability Critiques in Monkey Rule Developer-friendliness Continuos Refactoring
  103.   R E N R A K U object-agnostic

    tool-agnostic engine-agnostic yet connecting everything @yuriy_tymchuk Stories About Renraku — the new Quality Model of Pharo