Slideshow transcript
Slide 1: Tudor Gîrba www.tudorgirba.com
Slide 2: 1946
Slide 3: 1956
Slide 4: 1956
Slide 5: 1956
Slide 6: 1956 2006
Slide 7: 1956 2006
Slide 8: 1956 2006
Slide 9: 1956 2006 ?
Slide 10: Software is complex. 29% Succeeded 18% Failed 53% Challenged The Standish Group, 2004
Slide 11: How large is your project?
Slide 12: How large is your project? 1’000’000 lines of code
Slide 13: How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds
Slide 14: How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds / 3600 = 560 hours
Slide 15: How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds / 3600 = 560 hours / 8 = 70 days
Slide 16: How large is your project? 1’000’000 lines of code * 2 = 2’000’000 seconds / 3600 = 560 hours / 8 = 70 days / 20 = 3 months
Slide 17: Software development is more than forward engineering. Fo rw ar d en gin ee rin g { { { { { { } { { Actual development } } } } } } } } {
Slide 18: Reverse engineering is needed to make sense of the code. Fo rw ing ar r ee d en gin gin n e ee se rin er g v Re { { { { { { } { { Actual development } } } } } } } } {
Slide 19: Reverse engineering is creating high level views. ing r ee in ng e e s er ev R { { { { } } } } } {
Slide 20: McCabe = 21 NOM 0 = 102 ,00 3 75 = C LO ... Metrics Queries Visualizations { { { { } } } } } {
Slide 21: Metrics compress the system into numbers. 0 Cyclomatic complexity = 21 ,00 3 75 NOM = = 102 OC L { { { { } } } } } {
Slide 22: Queries reduce the analysis space. { { { { } } } } } {
Slide 23: Visualization compresses the system into pictures. { { { { } } } } } {
Slide 24: 70% of our sensors are dedicated to vision.
Slide 25: How many groups do you see?
Slide 26: How many groups do you see?
Slide 27: How many groups do you see?
Slide 28: How many groups do you see?
Slide 30: CodeCity Wettel, Lanza, 07 shows where your code lives.
Slide 31: Distribution Map shows how properties spread. Ducasse etal, 06
Slide 32: Polymetric views show up to 5 metrics. Lanza etal, 03 Width metric Height metric Position metrics Color metric
Slide 33: System Complexity shows class hierarchies. attributes methods lines
Slide 34: Class Blueprint shows class internals. Ducasse, Lanza, 05 Initialize Interface Internal Accessor Attribute invocation and access direction
Slide 35: Class Blueprint shows class internals.
Slide 36: Visualization compresses the system into pictures. { { { { } } } } } {
Slide 37: McCabe = 21 NOM 0 = 102 ,00 3 75 = C LO ... Metrics Queries Visualizations { { { { } } } } } {
Slide 38: Duplication detection McCabe = 21 Evolution analysis NOM 0 = 102 ,00 3 Dynamic analysis 75 = C LO ... Semantic analysis Metrics Queries Visualizations { { { { } } } } } {
Slide 39: Moose provides an agile visualization scripting. Meyer etal, 2005 view := ViewRenderer new. view borderedRectangleShape. view nodes: classes forEach: [:each | view nodes: each methods. view gridLayout ]. view edgesFrom: #superclass. view treeLayout. view open.
Slide 40: CVS hides the past
Slide 41: But, who did this?
Slide 42: We color the files according to the authors.
Slide 43: Still, alphabetical order is no order.
Slide 44: Ownership Map reveals developer patterns. Girba etal, 2005
Slide 45: FAMIX Meta UI Mondrian EyeSee Repository Core
Slide 46: FAMIX Meta UI Mondrian EyeSee Repository Core Java iPlasma MSE Smalltalk C++
Slide 47: Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude FAMIX Meta UI Mondrian EyeSee Repository Core Java iPlasma MSE Smalltalk C++
Slide 48: CVS J-Wiretap MSE Source Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude FAMIX Meta UI Mondrian EyeSee Repository Core Java iPlasma MSE Smalltalk C++
Slide 49: CVS J-Wiretap MSE Source ... Concept BugsLife Clustering Subversion Analysis Chronia Cook CodeCity DynaMoose Hapax Softwarenaut SmallDude FAMIX Meta UI Mondrian EyeSee Repository Core Java iPlasma MSE Smalltalk C++
Slide 50: Moose is a collective effort
Slide 51: Current Team Previous Team Stéphane Ducasse Serge Demeyer Tudor Gîrba Michele Lanza Adrian Kuhn Sander Tichelaar Current Contributors Previous Contributors Hani Abdeen Ilham Alloui Tobias Aebi Frank Buchli Gabriela Arevalo Mihai Balint Thomas Bühler Calogero Butera Philipp Bunge Marco D’Ambros Daniel Frey Georges Golomingi Orla Greevy Markus Hofstetter David Gurtner Reinout Heeck Matthias Junker Adrian Lienhard Markus Kobel Michael Locher Martin von Löwis Mircea Lungu Pietro Malorgio Michael Meer Michael Meyer Damien Pollet Laura Ponisio Daniel Ratiu Sara Sellos Lucas Streit Matthias Rieger Azadeh Razavizadeh Toon Verwaest Roel Wuyts Andreas Schlapbach Daniel Schweizer Richard Wettel Mauricio Seeberger Lukas Steiger Daniele Talerico Herve Verjus Violeta Voinescu.
Slide 52: Current Team Previous Team Stéphane Ducasse Serge Demeyer Tudor Gîrba Michele Lanza Adrian Kuhn Sander Tichelaar Current Contributors menPrevious Contributors ~ 100 years Hani Abdeen Ilham Alloui Tobias Aebi Frank Buchli Gabriela Arevalo Mihai Balint Thomas Bühler Calogero Butera Philipp Bunge Marco D’Ambros Daniel Frey Georges Golomingi Orla Greevy Markus Hofstetter David Gurtner Reinout Heeck Matthias Junker Adrian Lienhard Markus Kobel Michael Locher Martin von Löwis Mircea Lungu Pietro Malorgio Michael Meer Michael Meyer Damien Pollet Laura Ponisio Daniel Ratiu Sara Sellos Lucas Streit Matthias Rieger Azadeh Razavizadeh Toon Verwaest Roel Wuyts Andreas Schlapbach Daniel Schweizer Richard Wettel Mauricio Seeberger Lukas Steiger Daniele Talerico Herve Verjus Violeta Voinescu.
Slide 53: Tudor Gîrba www.tudorgirba.com
Slide 54: Tudor Gîrba www.tudorgirba.com creativecommons.org/licenses/by/3.0/




Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 1 (more)