際際滷

際際滷Share a Scribd company logo
Roassal
turn your programming environment into a
         beauty center for objects

                Vanessa Pe単a
                Camilo Gomez
               Alexandre Bergel

         Object Pro鍖le & University of Chile
Roassal


Advanced visualization engine
Useful to draw pictures of your data
Well modularized
 Easily portable (Pharo, VisualWorks, Amber, ...)

 Few external dependencies

Open source (MIT)
Roassal presentation
view nodes: Collection withAllSubclasses.
view nodes: Collection withAllSubclasses.
view nodes: Collection withAllSubclasses.
view edgesFrom: #superclass.
view nodes: Collection withAllSubclasses.
view edgesFrom: #superclass.
view treeLayout
view shape rectangle
! width: #numberOfVariables;
! height: #numberOfMethods.
view nodes: Collection withAllSubclasses.
view edgesFrom: #superclass.
view treeLayout




                                            DEMO
Roassal architecture & model


Your application      shape1 shape2 shape3

Mondrian
                     Graphical
   Roassal           Element

  Pharo, VW,
                        interaction
    Amber                dictionary
Pro鍖ling blueprint
                                      A




                                              B



                       E

                 gray =                       C
execution      side effect
  time         yellow = no
               side effect

                                              D
               #executions



       1
              3
   2       Method 1 calls Method 2.
           Method 3 calls Method 1
                                          F




                                                  10
Pro鍖ling blueprint
                                               A




                                                       B



                                 E

                           gray =                      C
             execution   side effect

methods that takes times,
               time      yellow = no
                         side effect

are executed many times, #executions
                                                       D


  and without signi鍖cant
                1
       side effect 3Method 1 calls Method 2.
                2
                    Method 3 calls Method 1
                                                   F




                                                           11
Adding a memoization



ROElement>>bounds
! "Return the bounds of the element"

!   boundsCache ifNotNil: [ ^ boundsCache ].

!   ^ boundsCache :=
      self position extent: (shape extentFor: self)
Adding a memoization



ROElement>>bounds
! "Return the bounds of the element"

!   boundsCache ifNotNil: [ ^ boundsCache ].

!   ^ boundsCache :=
      self position extent: (shape extentFor: self)
Effect of the memoization




                            14
make display:on:
absoluteBounds
                                          call absoluteBounds
                                     instead of absoluteBoundsFor




                 A'

                                C'



                           B'




                      C'




                                          15
Execution pro鍖ling blueprints. So!ware: Practices and Experience, 2012
Visualizing Dynamic Metrics with Pro鍖ling Blueprints. Proceedings of the TOOLS, 2010
Counting Messages as a Proxy for Average Execution Time in Pharo. Proceedings of ECOOP, 2011
Identifying Optimization Opportunities by Visualizing So!ware Execution. To be submitted to CACM




                                                                                              16
17
VisuAule
             Visual code inspector

By Camilo during the show us your project session




                                                      18
Join us!

We have positions
 Interships

 Engineering

 Master

 PhD

Deadline is the end of this month
Santiago is a cool city!
 no mosquitos!
或恢逮艶界岳永姻看鍖l艶.界看馨
                             facebook.com/ObjectPro鍖le
                             @ObjectPro鍖le




Spy @ Cincom Store
Spy @ SqueakSource
Spy @ ...

Thanks to all of you guys!

More Related Content

Roassal presentation

  • 1. Roassal turn your programming environment into a beauty center for objects Vanessa Pe単a Camilo Gomez Alexandre Bergel Object Pro鍖le & University of Chile
  • 2. Roassal Advanced visualization engine Useful to draw pictures of your data Well modularized Easily portable (Pharo, VisualWorks, Amber, ...) Few external dependencies Open source (MIT)
  • 4. view nodes: Collection withAllSubclasses.
  • 5. view nodes: Collection withAllSubclasses.
  • 6. view nodes: Collection withAllSubclasses. view edgesFrom: #superclass.
  • 7. view nodes: Collection withAllSubclasses. view edgesFrom: #superclass. view treeLayout
  • 8. view shape rectangle ! width: #numberOfVariables; ! height: #numberOfMethods. view nodes: Collection withAllSubclasses. view edgesFrom: #superclass. view treeLayout DEMO
  • 9. Roassal architecture & model Your application shape1 shape2 shape3 Mondrian Graphical Roassal Element Pharo, VW, interaction Amber dictionary
  • 10. Pro鍖ling blueprint A B E gray = C execution side effect time yellow = no side effect D #executions 1 3 2 Method 1 calls Method 2. Method 3 calls Method 1 F 10
  • 11. Pro鍖ling blueprint A B E gray = C execution side effect methods that takes times, time yellow = no side effect are executed many times, #executions D and without signi鍖cant 1 side effect 3Method 1 calls Method 2. 2 Method 3 calls Method 1 F 11
  • 12. Adding a memoization ROElement>>bounds ! "Return the bounds of the element" ! boundsCache ifNotNil: [ ^ boundsCache ]. ! ^ boundsCache := self position extent: (shape extentFor: self)
  • 13. Adding a memoization ROElement>>bounds ! "Return the bounds of the element" ! boundsCache ifNotNil: [ ^ boundsCache ]. ! ^ boundsCache := self position extent: (shape extentFor: self)
  • 14. Effect of the memoization 14
  • 15. make display:on: absoluteBounds call absoluteBounds instead of absoluteBoundsFor A' C' B' C' 15
  • 16. Execution pro鍖ling blueprints. So!ware: Practices and Experience, 2012 Visualizing Dynamic Metrics with Pro鍖ling Blueprints. Proceedings of the TOOLS, 2010 Counting Messages as a Proxy for Average Execution Time in Pharo. Proceedings of ECOOP, 2011 Identifying Optimization Opportunities by Visualizing So!ware Execution. To be submitted to CACM 16
  • 17. 17
  • 18. VisuAule Visual code inspector By Camilo during the show us your project session 18
  • 19. Join us! We have positions Interships Engineering Master PhD Deadline is the end of this month Santiago is a cool city! no mosquitos!
  • 20. 或恢逮艶界岳永姻看鍖l艶.界看馨 facebook.com/ObjectPro鍖le @ObjectPro鍖le Spy @ Cincom Store Spy @ SqueakSource Spy @ ... Thanks to all of you guys!