Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SynchronizingModels and Code       Oscar Nierstrasz  Software Composition Group         scg.unibe.ch         TOOLS Europe ...
g         nizin de    chro CoSyn and      lsM ode  or:               Mind the Gap                         Oscar Nierstrasz...
Programming is Modeling
Programming is Modeling                          Mind the gap
Programming is Modeling                                        Mind the gap                          Bridging the gaps
Programming is Modeling                                Mind the gap   Bridging the gaps                          Lessons l...
Programming is   Modeling
What exactly is“the OO paradigm”?                     9
What exactly is“the OO paradigm”?          Think about it ...                               9
10
Reuse        10
11
Design         11
12
Encapsulation                12
13
Objects + Classes + Inheritance                              13
14
Programs = Objects + Messages                            14
15
Everything is an Object!                           15
So, whatʼs missing?                      16
17
“Design your own paradigm”                             18
Itʼs all about enabling change                                 19
Mind the gap
Does this change respect                        the architecture? What does thispart depend on?                  Why is th...
What is the run-time                         architecture?       Where is this        feature?Gap between static and   dyn...
Gap between                   application                  and runtime  How do I getunder the hood?                       ...
How do I migrate to                   a new, clean state?   What codecaused this bug?            Gap between past,        ...
How to bridge these gaps?   25
Bridging the gap
Bridging Models and Code
Moose is a platform forsoftware and data analysis                   www.moosetechnology.org                               ...
Model repositoryThe Story of Moose, ESEC/FSE 2005                                29
Model repository            Navigation             Metrics            Querying            GroupingThe Story of Moose, ESEC...
Model repository            Navigation             Metrics            Querying            Grouping            SmalltalkThe...
ConAn    Van     Hapax     ...            CodeCrawler          Model repository            Navigation              Metrics...
ConAn       Van    Hapax        ...               CodeCrawler          Extensible meta model            Model repository  ...
ConAn       Van    Hapax        ...                           CodeCrawlerSmalltalk                      Extensible meta mo...
ConAn       Van    Hapax        ...                                             CodeCrawlerSmalltalk                      ...
System complexity                    30
Clone evolution                  31
Class blueprint                  32
Topic correlation matrix                           33
Distribution map(topics spread over classes in packages   34
Hierarchy evolution view                           35
Ownership map                36
37
The problem with heterogeneous systems                                     38
Inheritance                                                             *            *                                    ...
Start an unnecessary                        Starts UnnecessaryStart a Transactions Start Transactions                     ...
Start an unnecessary                                            Starts Unnecessary                    Start a Transactions...
Mondrian: An Agile Visualization Framework, SoftVis 2006                                                       42
43
Embedding Languages without Breaking Tools. ECOOP 2010                                                     44
45
Bridging Static and Dynamic Views
Live Feature Analysis with                             47
Live Feature Analysis with                             48
Live Feature Analysis with                             49
Live Feature Analysis with                        Modeling Features at Runtime, MODELS 2010                               ...
Hermion — linking source code to runtime                                           518                                    ...
Hermion — linking source code to runtime                                       instrumented methods                       ...
Hermion — linking source code to runtime                                                      instrumented methodsnavigate...
Hermion — linking source code to runtime                                                       instrumented methodsnavigat...
Hermion — linking source code to runtime                                                                         instrumen...
Exploiting Dynamic Information in IDEs Improves Speed andCorrectness of Software Maintenance Tasks, IEEE TSE, to appear   ...
Bridging the Application and          Runtime
Problem: some errors arise after the bug is already off the stack   54
Object Flow Analysis adapts the VM     Practical Object-Oriented Back-in-Time Debugging, ECOOP 2008.                      ...
an extensible VM for                                                             dynamic languages   Interpreter extension...
Bridging Past, Present and Future
Releasebranch          bug fix                   58
merged Deployed  branchReleasebranch                     bug fix                              59
merged               merged  Deployed   branchReleasebranch                                                            bug...
First-class contexts enable dynamic updates                                              61
First-class contexts enable dynamic updates                                bidirectional                                tr...
SCG Present and Past                       63
Lessons learned ...
Less is More
Reify EverythingConAn       Van    Hapax        ...             CodeCrawler        Extensible meta model          Model re...
Link complementary views
You can change a running system                                                     n  text                               ...
Closing thoughts
Closing thoughts  An object-oriented IDE
Closing thoughts  An object-oriented IDE
Closing thoughts  An object-oriented IDE
Closing thoughts   Maintain the links
Closing thoughts Manipulate models, not code
Closing thoughts Manipulate models, not code
Thatʼs all, Folks!                         Focus on change                                                    Maintain the...
Tools2011 Keynote
Upcoming SlideShare
Loading in …5
×

Tools2011 Keynote

1,005 views

Published on

Keynote talk at TOOLS Europe 2011. http://toolseurope2011.lcc.uma.es/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Tools2011 Keynote

  1. 1. SynchronizingModels and Code Oscar Nierstrasz Software Composition Group scg.unibe.ch TOOLS Europe 2011 Keynote
  2. 2. g nizin de chro CoSyn and lsM ode or: Mind the Gap Oscar Nierstrasz Software Composition Group scg.unibe.ch TOOLS Europe 2011 Keynote
  3. 3. Programming is Modeling
  4. 4. Programming is Modeling Mind the gap
  5. 5. Programming is Modeling Mind the gap Bridging the gaps
  6. 6. Programming is Modeling Mind the gap Bridging the gaps Lessons learned ...
  7. 7. Programming is Modeling
  8. 8. What exactly is“the OO paradigm”? 9
  9. 9. What exactly is“the OO paradigm”? Think about it ... 9
  10. 10. 10
  11. 11. Reuse 10
  12. 12. 11
  13. 13. Design 11
  14. 14. 12
  15. 15. Encapsulation 12
  16. 16. 13
  17. 17. Objects + Classes + Inheritance 13
  18. 18. 14
  19. 19. Programs = Objects + Messages 14
  20. 20. 15
  21. 21. Everything is an Object! 15
  22. 22. So, whatʼs missing? 16
  23. 23. 17
  24. 24. “Design your own paradigm” 18
  25. 25. Itʼs all about enabling change 19
  26. 26. Mind the gap
  27. 27. Does this change respect the architecture? What does thispart depend on? Why is this code the way it is?Gap between Model and Code 21
  28. 28. What is the run-time architecture? Where is this feature?Gap between static and dynamic views 22
  29. 29. Gap between application and runtime How do I getunder the hood? 23
  30. 30. How do I migrate to a new, clean state? What codecaused this bug? Gap between past, present and future 24
  31. 31. How to bridge these gaps? 25
  32. 32. Bridging the gap
  33. 33. Bridging Models and Code
  34. 34. Moose is a platform forsoftware and data analysis www.moosetechnology.org 28
  35. 35. Model repositoryThe Story of Moose, ESEC/FSE 2005 29
  36. 36. Model repository Navigation Metrics Querying GroupingThe Story of Moose, ESEC/FSE 2005 29
  37. 37. Model repository Navigation Metrics Querying Grouping SmalltalkThe Story of Moose, ESEC/FSE 2005 29
  38. 38. ConAn Van Hapax ... CodeCrawler Model repository Navigation Metrics Querying Grouping SmalltalkThe Story of Moose, ESEC/FSE 2005 29
  39. 39. ConAn Van Hapax ... CodeCrawler Extensible meta model Model repository Navigation Metrics Querying Grouping SmalltalkThe Story of Moose, ESEC/FSE 2005 29
  40. 40. ConAn Van Hapax ... CodeCrawlerSmalltalk Extensible meta model Java Model repositoryCOBOL Navigation C++ Metrics … Querying Grouping Smalltalk The Story of Moose, ESEC/FSE 2005 29
  41. 41. ConAn Van Hapax ... CodeCrawlerSmalltalk Extensible meta model Java Model repositoryCOBOL External CDIF Navigation Parser C++ Metrics … Querying Grouping XMI Smalltalk The Story of Moose, ESEC/FSE 2005 29
  42. 42. System complexity 30
  43. 43. Clone evolution 31
  44. 44. Class blueprint 32
  45. 45. Topic correlation matrix 33
  46. 46. Distribution map(topics spread over classes in packages 34
  47. 47. Hierarchy evolution view 35
  48. 48. Ownership map 36
  49. 49. 37
  50. 50. The problem with heterogeneous systems 38
  51. 51. Inheritance * * subclass superclass 0..1 implementation JEEBean Class 1 belongsTo * MethodEntity Session MessageDriven invokedBy candidate 1 Layer * * Invocation BelongsToData Business Presentation Service Logic 39
  52. 52. Start an unnecessary Starts UnnecessaryStart a Transactions Start Transactions TransactionsInheritTransactions Transactions Inherit Transactions Supports Transactions Support TransactionsNo attributes defined No attributes DB Accessors Staring Data base accessorDB accessors Data base accessor a Transaction starting a transaction 40
  53. 53. Start an unnecessary Starts Unnecessary Start a Transactions Start Transactions Transactions InheritTransactions Transactions Inherit Transactions Supports Transactions Support Transactions No attributes defined No attributes DB Accessors Staring Data base accessor DB accessors Data base accessor a Transaction starting a transactionRecovery and Analysis of Transaction Scope from Scattered Information in Java Enterprise Applications, ICSM 2010 41
  54. 54. Mondrian: An Agile Visualization Framework, SoftVis 2006 42
  55. 55. 43
  56. 56. Embedding Languages without Breaking Tools. ECOOP 2010 44
  57. 57. 45
  58. 58. Bridging Static and Dynamic Views
  59. 59. Live Feature Analysis with 47
  60. 60. Live Feature Analysis with 48
  61. 61. Live Feature Analysis with 49
  62. 62. Live Feature Analysis with Modeling Features at Runtime, MODELS 2010 50
  63. 63. Hermion — linking source code to runtime 518 3
  64. 64. Hermion — linking source code to runtime instrumented methods 518 3
  65. 65. Hermion — linking source code to runtime instrumented methodsnavigate to senders 518 3
  66. 66. Hermion — linking source code to runtime instrumented methodsnavigate to senders navigate to receivers 518 3
  67. 67. Hermion — linking source code to runtime instrumented methodsnavigate to senders navigate to receivers types bound to variables 518 3
  68. 68. Exploiting Dynamic Information in IDEs Improves Speed andCorrectness of Software Maintenance Tasks, IEEE TSE, to appear 528 3
  69. 69. Bridging the Application and Runtime
  70. 70. Problem: some errors arise after the bug is already off the stack 54
  71. 71. Object Flow Analysis adapts the VM Practical Object-Oriented Back-in-Time Debugging, ECOOP 2008. 55
  72. 72. an extensible VM for dynamic languages Interpreter extension interpretMethod: aMethod | result | result := super interpretMethod: aMethod. ^ assignSlot: aSlot to:result) (ReturnAlias alias: anAlias overrides | alias unwrappedSelf | environment: environment. unwrappedSelf := currentSelf value. Interpreter alias := (FieldWriteAlias alias: anAlias) environment environment: environment. interpret: aClosure alias predecessor: (aSlot readFrom: unwrappedSelf). ^ self send: (Message new selector: #value) ^ aSlot assign: alias on: unwrappedSelf to: aClosure asAliased implements nativelyC Core natives Pinocchio: Bringing Reflection to Life with First-Class Interpreters, OOPSLA Onward! 2010 56
  73. 73. Bridging Past, Present and Future
  74. 74. Releasebranch bug fix 58
  75. 75. merged Deployed branchReleasebranch bug fix 59
  76. 76. merged merged Deployed branchReleasebranch bug fixDevelopment branch broken refactored mergedEncapsulating and Exploiting Change with Changeboxes, ICDL 2007 60
  77. 77. First-class contexts enable dynamic updates 61
  78. 78. First-class contexts enable dynamic updates bidirectional transformation d con text Ol Method Shared object Method has one identity aPage but two states … Method Method … w co ntext Ne ongoing ... 62
  79. 79. SCG Present and Past 63
  80. 80. Lessons learned ...
  81. 81. Less is More
  82. 82. Reify EverythingConAn Van Hapax ... CodeCrawler Extensible meta model Model repository Navigation Metrics Querying Grouping Smalltalk tex t O ld con Method Method Interpreter extension aPage … Method overrides Interpreter Method environment implements natively … ActiveContext xt conte C Core natives N ew
  83. 83. Link complementary views
  84. 84. You can change a running system n text Old co Method Interpreter extension Method aPage overrides … Method Interpreter environment Method implements natively … ActiveContext C Core natives xt ew conte N
  85. 85. Closing thoughts
  86. 86. Closing thoughts An object-oriented IDE
  87. 87. Closing thoughts An object-oriented IDE
  88. 88. Closing thoughts An object-oriented IDE
  89. 89. Closing thoughts Maintain the links
  90. 90. Closing thoughts Manipulate models, not code
  91. 91. Closing thoughts Manipulate models, not code
  92. 92. Thatʼs all, Folks! Focus on change Maintain the linksAn object-oriented IDE Manipulate models, not code http://www.slideshare.net/onierstrasz

×