Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Yuriy Tymchuk

August 23, 2016
Tweet

More Decks by Yuriy Tymchuk

Other Decks in Programming

Transcript

  1. Stories About Renraku —
    the new Quality Model of Pharo
    @yuriy_tymchuk
    Software Composition Group

    View Slide

  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

    View Slide

  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

    View Slide

  4. View Slide

  5. A Mistake

    View Slide

  6. A Mistake can be Solved Early
    A Mistake

    View Slide

  7. View Slide

  8. How do you !nd QualityAssistant?

    View Slide

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

    View Slide

  10. Very disturbing
    Disturbing
    Sometimes Disturbing
    Not influential
    Sometimes Useful
    Useful
    Very useful
    46%
    29%
    17%
    4%
    4%
    How do you !nd QualityAssistant?

    View Slide

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

    View Slide

  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?

    View Slide

  13. View Slide

  14. Renraku

    View Slide

  15. ONE DOES NOT SIMPLY
    “SHOW” RENRAKU

    View Slide

  16. The Origin

    View Slide

  17. Renraku

    View Slide

  18. Renraku
    [|]
    Rule Code

    View Slide

  19. Renraku
    [|]
    Critique
    Rule Code

    View Slide

  20. The Vocabulary

    View Slide

  21. Renraku
    [|]
    Rule Code
    Critique

    View Slide

  22. English Language
    Critique
    Critic

    View Slide

  23. English Language
    Critique
    Critic

    View Slide

  24. English Language
    Critique
    Critic

    View Slide

  25. Huge Refactoring
    Critique
    Critic
    ReTrivialCritic ReTrivialCritique

    View Slide

  26. Our Dog Food is Good

    View Slide

  27. Our Dog Food is Good!

    View Slide

  28. Death and Life

    View Slide

  29. View Slide

  30. x
    x
    Who Shoots the Assistant?

    View Slide

  31. Who is the Assistant?

    View Slide

  32. Who is the Assistant?

    View Slide

  33. This is not QualityAssistant

    View Slide

  34. This is not QualityAssistant

    View Slide

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

    View Slide

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

    View Slide

  37. Polycriticism

    View Slide

  38. Issue Tracker Connection

    View Slide

  39. Issue Tracker Connection
    We want to link FogBugs issues to
    Pharo’s classes and methods.
    Can we display this information in
    QualityAssistant?

    View Slide

  40. Issue Tracker Connection
    Sure!

    View Slide

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

    View Slide

  42. External Properties for Editor
    by Juraj Kubelka

    View Slide

  43. External Properties for Editor
    by Juraj Kubelka

    View Slide

  44. Feedback Loop

    View Slide

  45. Feedback

    View Slide

  46. RBInstVarInSubclassesRule

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  53. The Demand Shapes the Model

    View Slide

  54. Started by the Message Browser

    View Slide

  55. We Need an Interval
    self target class

    View Slide

  56. We Need an Interval
    self target class

    View Slide

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

    View Slide

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

    View Slide

  59. Types of Rules
    Transform.
    ParseTree
    Block

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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'

    View Slide

  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 ].

    View Slide

  65. View Slide

  66. Node-based Critiques

    View Slide

  67. Node-based Critiques

    View Slide

  68. Node-based Critiques

    View Slide

  69. Node-based Critiques

    View Slide

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

    View Slide

  71. The Point of No Return

    View Slide

  72. CriticBrowser on Renraku

    View Slide

  73. Old Highlight

    View Slide

  74. Highlight Based on AST

    View Slide

  75. Useless Output

    View Slide

  76. Custom Auto!x

    View Slide

  77. Auto!x by Refactoring…

    View Slide

  78. Same Preview as in QA

    View Slide

  79. Auto!x by Refactoring…

    View Slide

  80. RePropertyAction new
    icon: #smallWindow asIcon;
    description: 'Open dependency analyzer';
    action: [ :crit :package |
    self openDependencyAnalyzerOn: package ];
    yourself
    Architectural Action

    View Slide

  81. Architectural Action

    View Slide

  82. Architectural Action

    View Slide

  83. Documentation :)

    View Slide

  84. System’s Help Browser

    View Slide

  85. Here’s to the Contributors!

    View Slide

  86. Marcus Denker
    Here’s to the Contributors!

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  91. View Slide

  92. View Slide

  93. 46%
    29%
    17%
    4%
    4%

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide



  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

    View Slide