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 full-size 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 full-size 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 full-size slide

  4. A Mistake can be Solved Early
    A Mistake

    View full-size slide

  5. How do you !nd QualityAssistant?

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  9. 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 full-size slide

  10. ONE DOES NOT SIMPLY
    “SHOW” RENRAKU

    View full-size slide

  11. Renraku
    [|]
    Rule Code

    View full-size slide

  12. Renraku
    [|]
    Critique
    Rule Code

    View full-size slide

  13. The Vocabulary

    View full-size slide

  14. Renraku
    [|]
    Rule Code
    Critique

    View full-size slide

  15. English Language
    Critique
    Critic

    View full-size slide

  16. English Language
    Critique
    Critic

    View full-size slide

  17. English Language
    Critique
    Critic

    View full-size slide

  18. Huge Refactoring
    Critique
    Critic
    ReTrivialCritic ReTrivialCritique

    View full-size slide

  19. Our Dog Food is Good

    View full-size slide

  20. Our Dog Food is Good!

    View full-size slide

  21. Death and Life

    View full-size slide

  22. x
    x
    Who Shoots the Assistant?

    View full-size slide

  23. Who is the Assistant?

    View full-size slide

  24. Who is the Assistant?

    View full-size slide

  25. This is not QualityAssistant

    View full-size slide

  26. This is not QualityAssistant

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  29. Polycriticism

    View full-size slide

  30. Issue Tracker Connection

    View full-size slide

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

    View full-size slide

  32. Issue Tracker Connection
    Sure!

    View full-size slide

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

    View full-size slide

  34. External Properties for Editor
    by Juraj Kubelka

    View full-size slide

  35. External Properties for Editor
    by Juraj Kubelka

    View full-size slide

  36. Feedback Loop

    View full-size slide

  37. RBInstVarInSubclassesRule

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  44. The Demand Shapes the Model

    View full-size slide

  45. Started by the Message Browser

    View full-size slide

  46. We Need an Interval
    self target class

    View full-size slide

  47. We Need an Interval
    self target class

    View full-size slide

  48. Transform.
    ParseTree
    Block
    Types of Rules
    Transform.
    ParseTree
    Block

    View full-size slide

  49. Transform.
    ParseTree
    Block
    Transform.
    ParseTree
    Block
    Types of Rules

    View full-size slide

  50. Types of Rules
    Transform.
    ParseTree
    Block

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  54. 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 full-size slide

  55. 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 full-size slide

  56. Node-based Critiques

    View full-size slide

  57. Node-based Critiques

    View full-size slide

  58. Node-based Critiques

    View full-size slide

  59. Node-based Critiques

    View full-size slide

  60. Transform.
    ParseTree
    Block
    Transform.
    ParseTree
    Block
    Interval Support

    View full-size slide

  61. The Point of No Return

    View full-size slide

  62. CriticBrowser on Renraku

    View full-size slide

  63. Old Highlight

    View full-size slide

  64. Highlight Based on AST

    View full-size slide

  65. Useless Output

    View full-size slide

  66. Custom Auto!x

    View full-size slide

  67. Auto!x by Refactoring…

    View full-size slide

  68. Same Preview as in QA

    View full-size slide

  69. Auto!x by Refactoring…

    View full-size slide

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

    View full-size slide

  71. Architectural Action

    View full-size slide

  72. Architectural Action

    View full-size slide

  73. Documentation :)

    View full-size slide

  74. System’s Help Browser

    View full-size slide

  75. Here’s to the Contributors!

    View full-size slide

  76. Marcus Denker
    Here’s to the Contributors!

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  79. 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 full-size slide

  80. 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 full-size slide

  81. 46%
    29%
    17%
    4%
    4%

    View full-size slide

  82. 46%
    29%
    17%
    4%
    4%
    Actionability

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  90. 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 full-size slide



  91. 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 full-size slide