Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Like this? Share it with your network

Share

Code City

on

  • 1,391 views

Code City. Richard Wettel. ESUG 2008, Amsterdam

Code City. Richard Wettel. ESUG 2008, Amsterdam

Statistics

Views

Total Views
1,391
Views on SlideShare
1,391
Embed Views
0

Actions

Likes
3
Downloads
43
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Code City Presentation Transcript

  • 1. Code City Richard Wettel and Michele Lanza University of Lugano, CH
  • 2. Software systems as
  • 3. The city metaphor Richard Wettel and Michele CodeCity 3
  • 4. The city metaphor domain mapping classes buildings package districts s system city Richard Wettel and Michele CodeCity 3
  • 5. The city metaphor domain mapping classes buildings package districts s system city Richard Wettel and Michele CodeCity 3
  • 6. The city metaphor domain mapping classes buildings package districts s system city Richard Wettel and Michele CodeCity 3
  • 7. The city metaphor domain mapping classes buildings package districts s system city Richard Wettel and Michele CodeCity 3
  • 8. The city metaphor domain mapping classes buildings package districts s system city class metric building number of property height methodsof number (NOM) width, attributes (NOA) length Richard Wettel and Michele CodeCity 3
  • 9. The city metaphor domain mapping classes buildings package districts s system city package district class metric building metric level property nesting color number of property height methodsof number (NOM) width, attributes (NOA) length Richard Wettel and Michele CodeCity 3
  • 10. “Reading” a code city Richard Wettel and Michele CodeCity 4
  • 11. “Reading” a code city skyscrapers (NOM, NOA) Richard Wettel and Michele CodeCity 4
  • 12. “Reading” a code city skyscrapers (NOM, NOA) parking lots (NOM, NOA) Richard Wettel and Michele CodeCity 4
  • 13. “Reading” a code city skyscrapers (NOM, NOA) parking lots office buildings (NOM, (NOM, NOA) NOA) Richard Wettel and Michele CodeCity 4
  • 14. Mapping techniques
  • 15. 1. Identity mapping NOM f(x) = x height Richard Wettel and Michele CodeCity 6
  • 16. 1. Identity mapping NOM f(x) = x height Richard Wettel and Michele CodeCity 6
  • 17. 1. Identity mapping NOM f(x) = x height Richard Wettel and Michele CodeCity 6
  • 18. Identity mapping applied Richard Wettel and Michele CodeCity 7
  • 19. 2. Linear mapping NOM f(x) = ax + b height Richard Wettel and Michele CodeCity 8
  • 20. 2. Linear mapping NOM f(x) = ax + b height Richard Wettel and Michele CodeCity 8
  • 21. 2. Linear mapping NOM f(x) = ax + b height Richard Wettel and Michele CodeCity 8
  • 22. 2. Linear mapping NOM f(x) = ax + b height Richard Wettel and Michele CodeCity 8
  • 23. Linear mapping applied Richard Wettel and Michele CodeCity 9
  • 24. 3. Boxplot-based mapping NOM clustering height Richard Wettel and Michele CodeCity 10
  • 25. 3. Boxplot-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 10
  • 26. 3. Boxplot-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 10
  • 27. 3. Boxplot-based mapping NOM clustering height very high upper whisker high upper quartile median average lower quartile lower whisker low very low Richard Wettel and Michele CodeCity 10
  • 28. 3. Boxplot-based mapping NOM clustering height very high upper whisker high upper quartile median average lower quartile lower whisker low very low Richard Wettel and Michele CodeCity 10
  • 29. 3. Boxplot-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 10
  • 30. 3. Boxplot-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 10
  • 31. 3. Boxplot-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 10
  • 32. Boxplot-based mapping applied Richard Wettel and Michele CodeCity 11
  • 33. 4. Threshold-based mapping NOM clustering height Richard Wettel and Michele CodeCity 12
  • 34. 4. Threshold-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 12
  • 35. 4. Threshold-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 12
  • 36. 4. Threshold-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 12
  • 37. 4. Threshold-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 12
  • 38. 4. Threshold-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 12
  • 39. 4. Threshold-based mapping NOM clustering height very high high average low very low Richard Wettel and Michele CodeCity 12
  • 40. Threshold-based mapping applied Richard Wettel and Michele CodeCity 13
  • 41. Mappings compared identit y linear boxplot- based threshold- Richard Wettel and Michele based CodeCity 14
  • 42. Mappings compared identit y linear boxplot- based threshold- Richard Wettel and Michele based CodeCity 14
  • 43. Mappings compared identit y linear boxplot- based threshold- Richard Wettel and Michele based CodeCity 14
  • 44. Mappings compared identit y linear boxplot- based threshold- Richard Wettel and Michele based CodeCity 14
  • 45. Mappings compared identit y linear boxplot- based threshold- Richard Wettel and Michele based CodeCity 14
  • 46. Understanding programs
  • 47. Reverse-engineering ArgoUML Richard Wettel and Michele CodeCity 16
  • 48. Reverse-engineering ArgoUML Richard Wettel and Michele CodeCity 16
  • 49. Reverse-engineering ArgoUML Richard Wettel and Michele CodeCity 16
  • 50. The twin towers Richard Wettel and Michele CodeCity 17
  • 51. The twin towers Facade 1 attribute 337 methods Richard Wettel and Michele CodeCity 17
  • 52. The twin towers Facade 1 attribute 337 methods FacadeMDRI mpl 3 attribute 349 methods Richard Wettel and Michele CodeCity 17
  • 53. The twin towers Facade 1 attribute 337 methods Is there FacadeMDRI mpl anybody 3 attribute out 349 methods Richard Wettel and Michele CodeCity 17
  • 54. The twin towers Facade 1 attribute 337 methods FacadeMDRI mpl 3 attribute 349 methods Richard Wettel and Michele CodeCity 17
  • 55. Hotels, parking lots, duplication Richard Wettel and Michele CodeCity 18
  • 56. Hotels, parking lots, duplication org.argouml.language. java.generator JavaTokenType JavaRecognizer s 146 attributes 24 attributes 0 methods 91 methods Richard Wettel and Michele CodeCity 18
  • 57. Hotels, parking lots, duplication org.argouml.language. java.generator JavaTokenType JavaRecognizer s 146 attributes 24 attributes 0 methods 91 methods org.argouml.uml.reveng.class file STDCTokenTy CPPParser pes attributes 152 85 attributes 0 methods 204 methods Richard Wettel and Michele CodeCity 18
  • 58. Hotels, parking lots, duplication org.argouml.language. org.argouml.uml.reveng.java java.generator JavaTokenType JavaRecognizer JavaTokenTyp JavaRecogniz s 146 attributes 24 attributes es er attributes 173 79 0 methods 91 methods attributes 0 methods 176 methods org.argouml.uml.reveng.class file STDCTokenTy CPPParser pes attributes 152 85 attributes 0 methods 204 methods Richard Wettel and Michele CodeCity 18
  • 59. Hotels, parking lots, duplication org.argouml.language. org.argouml.uml.reveng.java java.generator JavaTokenType JavaRecognizer JavaTokenType JavaTokenTyp JavaRecogniz s 146 attributes 24 attributes s es er attributes 145 attributes 173 79 0 methods 91 methods attributes 0 methods 176 methods 0 methods org.argouml.uml.reveng.class file STDCTokenTy CPPParser pes attributes 152 85 attributes 0 methods 204 methods Richard Wettel and Michele CodeCity 18
  • 60. Hotels, parking lots, duplication org.argouml.language. org.argouml.uml.reveng.java java.generator JavaTokenType JavaRecognizer JavaTokenType JavaRecognizer JavaTokenTyp JavaRecogniz s 146 attributes 24 attributes s es er attributes 145 attributes 22 attributes 173 79 0 methods 91 methods attributes 0 methods 176 methods 0 methods 88 methods org.argouml.uml.reveng.class file STDCTokenTy CPPParser pes attributes 152 85 attributes 0 methods 204 methods Richard Wettel and Michele CodeCity 18
  • 61. Looking at the design
  • 62. On software design... Richard Wettel and Michele CodeCity 20
  • 63. On software design... Definitions bad smells [Beck & Fowler 1998], design flaws heuristics [Riel 2000], principles [Martin 2002], patterns [GoF 1995] Richard Wettel and Michele CodeCity 20
  • 64. On software design... Definitions bad smells [Beck & Fowler 1998], design flaws heuristics [Riel 2000], principles [Martin 2002], patterns [GoF 1995] Techniques detection strategies for the design flaws Richard Wettel and Michele CodeCity 20
  • 65. On software design... Definitions bad smells [Beck & Fowler 1998], design flaws heuristics [Riel 2000], principles [Martin 2002], patterns [GoF 1995] Techniques detection strategies for the design flaws Visualization ? Richard Wettel and Michele CodeCity 20
  • 66. The God Class detection strategy Richard Wettel and Michele CodeCity 21
  • 67. God classes of JDK 1.5 in Moose Richard Wettel and Michele CodeCity 22
  • 68. God classes of JDK in CodeCity Richard Wettel and Michele CodeCity 23
  • 69. Class-level disharmony maps Security (NOA 3, NOM 30) Event (NOA 84, NOM 14) Calendar (NOA 81, NOM 71) BigDecimal BigInteger (NOA 18, NOM 96) (NOA 28, NOM 103) Logger (NOA 18, NOM 53) Class (NOA 27, NOM 107) LogRecord (NOA 17, NOM 28) String java.util.logging (NOA 7, NOM 81) java.util.regex java.awt.geom Matcher (NOA 17, NOM 38) Component Pattern (NOA 88, NOM 280) (NOA 29, NOM 66) AbstractQueuedSynchronizer Frame (NOA 9, NOM 54) (NOA 33, NOM 38) java.util.concurrent.locks Container (NOA 21, NOM 127) Font (NOA 34, NOM 78) Frame (NOA 33, NOM 38) KeyboardFocusManager (NOA 33, NOM 94) JDK 1.5 InputEvent (NOA 21, NOM 14) KeyEvent (NOA 205, NOM 18) java.awt.event Richard Wettel and Michele CodeCity 24
  • 70. Class-level disharmony ma Facade org.argouml.uml.notation.uml (NOA 1, NOM 337) FacadeMDRImpl UmlFactoryMDRImpl (NOA 3, NOM 349) (NOA 9, NOM 22) CoreHelperMDRImpl org.argouml.language.java.generator (NOA 3, NOM 349) JavaRecognizer org.argouml.model.mdr (NOA 24, NOM 91) GeneratorJava (NOA 11, NOM 66) JavaLexer (NOA 9, NOM 72) FigEdgeModelElement (NOA 13, NOM 76) FigAssociation (NOA 8, NOM 17) FigNodeModelElement (NOA 39, NOM 98) org.argouml.diagram.ui SimpleByteLexer$GeneratorPHP4 JavaRecognizer (NOA 4, NOM 33) (NOA 79, NOM 176) SimpleByteLexer$GeneratorCPP Modeller (NOA 34, NOM 100) (NOA 15, NOM 52) SimpleByteLexer$CPPParser ArgoUML (NOA 85, NOM 204) JavaTokenTypes (NOA 173, NOM 0) org.argouml.reveng.classfile org.argouml.reveng.java Richard Wettel and Michele CodeCity 25
  • 71. Granularity of representation class C NOM = 7 2 = A NO NO A =2 coarse Richard Wettel and Michele CodeCity 26
  • 72. Granularity of representation class C NOM = 7 2 = A NO NO A =2 coarse fine-grained Richard Wettel and Michele CodeCity 26
  • 73. Granularity of representation class C NOM = 7 las sC c 2 = A NO NO A =2 coarse fine-grained Richard Wettel and Michele CodeCity 26
  • 74. Granularity of representation class C m6 NOM = 7 m5 m7 m2 m1 m3 m4 las sC c 2 = A NO NO A =2 coarse fine-grained Richard Wettel and Michele CodeCity 26
  • 75. Feature envy map Jmol Richard Wettel and Michele CodeCity 27
  • 76. Feature envy map 1,500 methods (25 %) Jmol Richard Wettel and Michele CodeCity 27
  • 77. Shotgun surgery map ArgoUM L Richard Wettel and Michele CodeCity 28
  • 78. Shotgun surgery map ArgoUM L Richard Wettel and Michele CodeCity 28
  • 79. Shotgun surgery map ArgoUM L Richard Wettel and Michele CodeCity 28
  • 80. Exploring the history
  • 81. Modeling history: Hismo Class Richard Wettel and Michele CodeCity 30
  • 82. Modeling history: Hismo Class time Richard Wettel and Michele CodeCity 30
  • 83. Modeling history: Hismo Class Version Class timestamp N time Richard Wettel and Michele CodeCity 30
  • 84. Modeling history: Hismo Class Class Version Version ... Class Class timestamp 2 timestamp N time Richard Wettel and Michele CodeCity 30
  • 85. Modeling history: Hismo Class Class Class Version Version Version ... Class Class Class timestamp 1 timestamp 2 timestamp N time Richard Wettel and Michele CodeCity 30
  • 86. Modeling history: Hismo Class History Class Class Class Version Version Version ... Class Class Class timestamp 1 timestamp 2 timestamp N time Richard Wettel and Michele CodeCity 30
  • 87. Visualizing evolution Time travel Age map fine Timeline Richard Wettel and Michele CodeCity 31
  • 88. Visualizing evolution Time travel Age map fine Timeline Richard Wettel and Michele CodeCity 31
  • 89. Visualizing evolution Time travel Age map fine Timeline Richard Wettel and Michele CodeCity 31
  • 90. Consistent locality Blueprint for the city, based on the maximal Foo Bar expansion of each artifact A (building, district). Richard Wettel and Michele CodeCity 32
  • 91. Consistent locality Blueprint for the city, based on the maximal Foo Bar expansion of each artifact A (building, district). version 1 Fo Bar Richard Wettel and Michele CodeCity 32
  • 92. Consistent locality Blueprint for the city, based on the maximal Foo Bar expansion of each artifact A (building, district). version 1 version 2 Fo Bar Foo Ba A Richard Wettel and Michele CodeCity 32
  • 93. Consistent locality Blueprint for the city, based on the maximal Foo Bar expansion of each artifact A (building, district). version 1 version 2 version 3 Fo Bar Foo Ba Foo A A Richard Wettel and Michele CodeCity 32
  • 94. Age map Bricks position is chronological neighbors are contemporary las sC c Richard Wettel and Michele CodeCity 33
  • 95. Age map Superficial glimpse in the past. color layer according to age (number of versions) Bricks position is chronological neighbors are contemporary las sC c Richard Wettel and Michele CodeCity 33
  • 96. Age map Superficial glimpse in the past. color layer according to age (number of versions) N 1 Bricks position is chronological neighbors are contemporary las sC c Richard Wettel and Michele CodeCity 33
  • 97. Age map Superficial glimpse in the past. color layer according to age (number of versions) N 1 Bricks position is chronological neighbors are contemporary las sC c Richard Wettel and Michele CodeCity 33
  • 98. Age map Superficial glimpse in the past. color layer according to age (number of versions) N 1 m6 m5 m7 Bricks position is m2 m1 chronological m4 m3 neighbors are contemporary las sC c Richard Wettel and Michele CodeCity 33
  • 99. Age map interpretation age: 1 2 3 4 5 6 7 8 Richard Wettel and Michele CodeCity 34
  • 100. Age map interpretation age: 1 2 3 4 5 6 7 8 stable very old Richard Wettel and Michele CodeCity 34
  • 101. Age map interpretation age: 1 2 3 4 5 6 7 8 stable rarely updated very old old Richard Wettel and Michele CodeCity 34
  • 102. Age map interpretation age: 1 2 3 4 5 6 7 8 stable highly unstable rarely updated very old old young Richard Wettel and Michele CodeCity 34
  • 103. Age map interpretation updated often, age: 1 2 3 4 5 6 7 8 rather unstable stable highly unstable rarely updated very old old young very old Richard Wettel and Michele CodeCity 34
  • 104. Age map, fine-grained CH.ifa.draw.framework class StandardDrawingView CH.ifa.draw.figures in CH.ifa.draw.standard. class DrawApplication in CH.ifa.draw.application library packages: java javax junit org.w3c.dom CH.ifa.draw.standard CH.ifa.draw.test (classes) AllTests Richard Wettel and Michele CodeCity 35
  • 105. Time travel, coarse-grained ArgoUML Richard Wettel and Michele CodeCity 36
  • 106. Time travel, coarse-grained ArgoUML Richard Wettel and Michele CodeCity 36
  • 107. Time travel, fine-grained JHotDraw Richard Wettel and Michele CodeCity 37
  • 108. Time travel, fine-grained JHotDraw Richard Wettel and Michele CodeCity 37
  • 109. Timeline History of class C Richard Wettel and Michele CodeCity 38
  • 110. Timeline History of class C m5 m3 e ns) V1 tim sio (ver Richard Wettel and Michele CodeCity 38
  • 111. Timeline History of class C m 12 m8 m5 m3 m3 V2 e ns) V1 tim sio (ver Richard Wettel and Michele CodeCity 38
  • 112. Timeline History of class C m 12 m8 m5 m3 m3 V2 e ns) V1 tim sio (ver Richard Wettel and Michele CodeCity 38
  • 113. Timeline m 18 History of class C m 12 m 12 m8 m5 m3 V3 m3 V2 e ns) V1 tim sio (ver Richard Wettel and Michele CodeCity 38
  • 114. Timeline m 18 History of class C m 12 m 12 m8 m5 m3 V3 m3 V2 e ns) V1 tim sio (ver Richard Wettel and Michele CodeCity 38
  • 115. Examples of timelines Richard Wettel and Michele CodeCity 39
  • 116. Examples of timelines Richard Wettel and Michele CodeCity 39
  • 117. Scripting cities Richard Wettel and Michele CodeCity 40
  • 118. On relationships Richard Wettel and Michele CodeCity 41
  • 119. The tool
  • 120. Tool chain iPlasma model exchange Moose parsing & metric computation Jun rendering CodeCity VisualWorks 7.6 Richard Wettel and Michele CodeCity 43
  • 121. Cityscapes Richard Wettel and Michele CodeCity 44
  • 122. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 123. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 124. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 125. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 126. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 127. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 128. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 129. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 130. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 131. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 132. Cityscapes System Languag NOP NOC kLO e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 133. Languag NOP NOC kLO Cityscapes System e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 Richard Wettel and Michele CodeCity 44
  • 134. Languag NOP NOC kLO Cityscapes System e C Azureus Java 457 4734 274 ArgoUML Java 144 2542 137 JHotDraw Java 72 998 30 iText Java 149 1250 80 Jmol Java 105 1032 85 JDK 1.5 Java 137 4715 160 core Moose Smalltal 278 961 32 k Jun Smalltal 288 2236 351 k CodeCity Smalltal 129 291 18 k ScumVM C++ 18 1331 105 1.25 million Richard Wettel and Michele CodeCity LOC 44
  • 135. http://www.inf.unisi.ch/phd/wettel/ codecity.html
  • 136. over 1100 downloads since March 2008 ! http://www.inf.unisi.ch/phd/wettel/ codecity.html
  • 137. over 1100 downloads since March 2008 ! http://www.inf.unisi.ch/phd/wettel/ codecity.html
  • 138. ^ Smalltalk over 1100 downloads since March 2008 ! http://www.inf.unisi.ch/phd/wettel/ codecity.html