SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
8/18/05 © Tudor Gîrba
Understanding your code assets
with Moose
Stéphane Ducasse, Tudor Gîrba, Adrian Kuhn
Software Composition Group
University of Bern, Switzerland
Michele Lanza
Faculty of Informatics
University of Lugano, Switzerland
…
8/18/05 © Tudor Gîrba
2
Context: Software development is more than
forward engineering
Requirements
Analysis
Design
ImplementationTime
8/18/05 © Tudor Gîrba
3
Reverse engineering is creating high level views
of the system …
For example:
It provides an overview, by
striping away details
8/18/05 © Tudor Gîrba
4
Reverse engineering is creating high level views
of the system …
Large systems
Not an algorithm
Multiple techniques:
UML diagrams
Metrics
Visualization
…
8/18/05 © Tudor Gîrba
5
Moose is a reengineering tool which integrates
multiple techniques
Visualization
Evolution Analysis
Moose
…
Queries and Navigation
Number of classes = 382
Number of methods = 4268
…
Semantic Analysis
Metrics
word1 word2
8/18/05 © Tudor Gîrba
6
…
= 7Average number of
methods per class
= 4268Number of methods
= 382Number of classes
Metrics compress the system into numbers and
enable comparisons
Metrics can answer questions:
How big is the system?
How is the complexity spread over the system?
…
8/18/05 © Tudor Gîrba
7
Visualization compresses the system into
pictures
Visualization can provide:
Quick overview
Spatial orientation
…
8/18/05 © Tudor Gîrba
8
Visualization: Polymetric views can display up to
5 metrics on a 2D figure
Color
Metric
Position
Metrics
Width Metric
Height
Metric System
Complexity View
Class Blueprint
8/18/05 © Tudor Gîrba
9
Queries reduce the analysis space
Queries reveal:
Similar entities
Entities which are out of ordinary
Queries make use of properties (e.g., metrics)
8/18/05 © Tudor Gîrba
10
Moose at work: analyzing the structure of
software systems
Visualization
Queries and Navigation
Number of classes = 382
Number of methods = 4268
…
Metrics
8/18/05 © Tudor Gîrba
11
Semantic analysis attaches semantics to
structure
word1
word3
word2
…
Applicability:
Text Search
Semantic Clustering
…
8/18/05 © Tudor Gîrba
12
Moose at work: analyzing the semantics of
software systems
Semantic Analysis
word1 word2
8/18/05 © Tudor Gîrba
13
Time contains useful information for reverse
engineering
Time
Requirements
Analysis
Design
Implementation
8/18/05 © Tudor Gîrba
14
The evolution analysis compresses time through
metrics, visualization …
History can answer questions:
Which parts are change-prone?
How did the system get in the current shape?
…
Problem: Large amounts of data
8/18/05 © Tudor Gîrba
15
Our approach: History as a first class entity
encapsulates the evolution
Vers.1 Vers.2 Vers.3 Vers.4 Vers.5
History
A
B
C
D
8/18/05 © Tudor Gîrba
16
History can be measured: How much was a class
changed in its history?
4 2 3 31
3 + 2 + 1 + 0
Evolution of Number
of Methods (E_NOM)
Stability of Number
of Methods (S_NOM)
0 + 0 + 0 + 1
4
=
= = 0.25
= 6
8/18/05 © Tudor Gîrba
17
Moose at work: analyzing the history of software
systems
Evolution Analysis
8/18/05 © Tudor Gîrba
18
…
Actually, Moose is an environment for
reengineering
Van
VW Smalltalk
Java
C/C++ Parser
Cobol
Tools integration
mechanisms
Metrics
Language independent
model repository
CodeCrawler
Visualization
Evolution
analysis
…
Semantic analysis
Concept analysis
Dynamic analysis
Clustering
Duplication detection
…
8/18/05 © Tudor Gîrba
19
Class
Namespace
Method
Attribute
InvocationAccess
Inheritance
Package…
1
*
*
*
*
1
*
2
*21*
1
*
1*
Moose is language independent through the
FAMIX meta-model
Java Parser: jFamix Eclipse Plugin (http://jfamix.sourceforge.net/)
C++ Parser: Columbus (http://www.frontendart.com/products.html#Columbus)
Java/C++ Parser: iPlasma (Loose Research Group)
8/18/05 © Tudor Gîrba
20
Moose has been validated on real life systems
written in different languages
…………
~1800260’000SmalltalkSqueak
~4900300’000JavaJBoss
~700135’000SmalltalkJun
~110001’000’000C/C++X
~400120’000C++/JavaY
~23001’200’000C++Z
ClassesLines of CodeLanguageSystem
8/18/05 © Tudor Gîrba
21
Summary: Moose is an extensible and
collaborative reengineering environment
is research driven: metrics, visualization,
evolution analysis …
is industrially validated
is free under BSD license
Accessibility:
www.iam.unibe.ch/~scg/Research/Moose/
VisualWorks distribution CD
Questions?
8/18/05 © Tudor Gîrba
22
Ownership Map reveals how developers drive
software evolution

Weitere ähnliche Inhalte

Ähnlich wie Understanding your code assets with Moose

Ähnlich wie Understanding your code assets with Moose (20)

Data Science as a Service: Intersection of Cloud Computing and Data Science
Data Science as a Service: Intersection of Cloud Computing and Data ScienceData Science as a Service: Intersection of Cloud Computing and Data Science
Data Science as a Service: Intersection of Cloud Computing and Data Science
 
Data Science as a Service: Intersection of Cloud Computing and Data Science
Data Science as a Service: Intersection of Cloud Computing and Data ScienceData Science as a Service: Intersection of Cloud Computing and Data Science
Data Science as a Service: Intersection of Cloud Computing and Data Science
 
Software Engineering Challenges in building AI-based complex systems
Software Engineering Challenges in building AI-based complex systemsSoftware Engineering Challenges in building AI-based complex systems
Software Engineering Challenges in building AI-based complex systems
 
Concepts, use cases and principles to build big data systems (1)
Concepts, use cases and principles to build big data systems (1)Concepts, use cases and principles to build big data systems (1)
Concepts, use cases and principles to build big data systems (1)
 
Enterprise Metadata Integration, Cloudera
Enterprise Metadata Integration, ClouderaEnterprise Metadata Integration, Cloudera
Enterprise Metadata Integration, Cloudera
 
Trivento summercamp masterclass 9/9/2016
Trivento summercamp masterclass 9/9/2016Trivento summercamp masterclass 9/9/2016
Trivento summercamp masterclass 9/9/2016
 
Big Data is changing abruptly, and where it is likely heading
Big Data is changing abruptly, and where it is likely headingBig Data is changing abruptly, and where it is likely heading
Big Data is changing abruptly, and where it is likely heading
 
Simulation UNIT-I
Simulation    UNIT-ISimulation    UNIT-I
Simulation UNIT-I
 
Trivento summercamp fast data 9/9/2016
Trivento summercamp fast data 9/9/2016Trivento summercamp fast data 9/9/2016
Trivento summercamp fast data 9/9/2016
 
AI challanges - Cse day-2018.04.12
AI challanges - Cse day-2018.04.12AI challanges - Cse day-2018.04.12
AI challanges - Cse day-2018.04.12
 
Graph Databases and Machine Learning | November 2018
Graph Databases and Machine Learning | November 2018Graph Databases and Machine Learning | November 2018
Graph Databases and Machine Learning | November 2018
 
StreamSight: A Query-Driven Framework Extending Streaming IoT Analytics to th...
StreamSight: A Query-Driven Framework Extending Streaming IoT Analytics to th...StreamSight: A Query-Driven Framework Extending Streaming IoT Analytics to th...
StreamSight: A Query-Driven Framework Extending Streaming IoT Analytics to th...
 
Eecs6893 big dataanalytics-lecture1
Eecs6893 big dataanalytics-lecture1Eecs6893 big dataanalytics-lecture1
Eecs6893 big dataanalytics-lecture1
 
TensorFlow 16: Building a Data Science Platform
TensorFlow 16: Building a Data Science Platform TensorFlow 16: Building a Data Science Platform
TensorFlow 16: Building a Data Science Platform
 
Hive at LinkedIn
Hive at LinkedIn Hive at LinkedIn
Hive at LinkedIn
 
Towards Scalable Model Views on Heterogeneous Model Resources - MODELS 2018 @...
Towards Scalable Model Views on Heterogeneous Model Resources - MODELS 2018 @...Towards Scalable Model Views on Heterogeneous Model Resources - MODELS 2018 @...
Towards Scalable Model Views on Heterogeneous Model Resources - MODELS 2018 @...
 
Distributed deep learning reference architecture v3.2l
Distributed deep learning reference architecture v3.2lDistributed deep learning reference architecture v3.2l
Distributed deep learning reference architecture v3.2l
 
Cheryl Wiebe - Advanced Analytics in the Industrial World
Cheryl Wiebe - Advanced Analytics in the Industrial WorldCheryl Wiebe - Advanced Analytics in the Industrial World
Cheryl Wiebe - Advanced Analytics in the Industrial World
 
Algorithms
AlgorithmsAlgorithms
Algorithms
 
ML Abstraciton for Keras to Serve Several Cases
ML Abstraciton for Keras to Serve Several CasesML Abstraciton for Keras to Serve Several Cases
ML Abstraciton for Keras to Serve Several Cases
 

Mehr von ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Mehr von ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

Understanding your code assets with Moose

  • 1. 8/18/05 © Tudor Gîrba Understanding your code assets with Moose Stéphane Ducasse, Tudor Gîrba, Adrian Kuhn Software Composition Group University of Bern, Switzerland Michele Lanza Faculty of Informatics University of Lugano, Switzerland …
  • 2. 8/18/05 © Tudor Gîrba 2 Context: Software development is more than forward engineering Requirements Analysis Design ImplementationTime
  • 3. 8/18/05 © Tudor Gîrba 3 Reverse engineering is creating high level views of the system … For example: It provides an overview, by striping away details
  • 4. 8/18/05 © Tudor Gîrba 4 Reverse engineering is creating high level views of the system … Large systems Not an algorithm Multiple techniques: UML diagrams Metrics Visualization …
  • 5. 8/18/05 © Tudor Gîrba 5 Moose is a reengineering tool which integrates multiple techniques Visualization Evolution Analysis Moose … Queries and Navigation Number of classes = 382 Number of methods = 4268 … Semantic Analysis Metrics word1 word2
  • 6. 8/18/05 © Tudor Gîrba 6 … = 7Average number of methods per class = 4268Number of methods = 382Number of classes Metrics compress the system into numbers and enable comparisons Metrics can answer questions: How big is the system? How is the complexity spread over the system? …
  • 7. 8/18/05 © Tudor Gîrba 7 Visualization compresses the system into pictures Visualization can provide: Quick overview Spatial orientation …
  • 8. 8/18/05 © Tudor Gîrba 8 Visualization: Polymetric views can display up to 5 metrics on a 2D figure Color Metric Position Metrics Width Metric Height Metric System Complexity View Class Blueprint
  • 9. 8/18/05 © Tudor Gîrba 9 Queries reduce the analysis space Queries reveal: Similar entities Entities which are out of ordinary Queries make use of properties (e.g., metrics)
  • 10. 8/18/05 © Tudor Gîrba 10 Moose at work: analyzing the structure of software systems Visualization Queries and Navigation Number of classes = 382 Number of methods = 4268 … Metrics
  • 11. 8/18/05 © Tudor Gîrba 11 Semantic analysis attaches semantics to structure word1 word3 word2 … Applicability: Text Search Semantic Clustering …
  • 12. 8/18/05 © Tudor Gîrba 12 Moose at work: analyzing the semantics of software systems Semantic Analysis word1 word2
  • 13. 8/18/05 © Tudor Gîrba 13 Time contains useful information for reverse engineering Time Requirements Analysis Design Implementation
  • 14. 8/18/05 © Tudor Gîrba 14 The evolution analysis compresses time through metrics, visualization … History can answer questions: Which parts are change-prone? How did the system get in the current shape? … Problem: Large amounts of data
  • 15. 8/18/05 © Tudor Gîrba 15 Our approach: History as a first class entity encapsulates the evolution Vers.1 Vers.2 Vers.3 Vers.4 Vers.5 History A B C D
  • 16. 8/18/05 © Tudor Gîrba 16 History can be measured: How much was a class changed in its history? 4 2 3 31 3 + 2 + 1 + 0 Evolution of Number of Methods (E_NOM) Stability of Number of Methods (S_NOM) 0 + 0 + 0 + 1 4 = = = 0.25 = 6
  • 17. 8/18/05 © Tudor Gîrba 17 Moose at work: analyzing the history of software systems Evolution Analysis
  • 18. 8/18/05 © Tudor Gîrba 18 … Actually, Moose is an environment for reengineering Van VW Smalltalk Java C/C++ Parser Cobol Tools integration mechanisms Metrics Language independent model repository CodeCrawler Visualization Evolution analysis … Semantic analysis Concept analysis Dynamic analysis Clustering Duplication detection …
  • 19. 8/18/05 © Tudor Gîrba 19 Class Namespace Method Attribute InvocationAccess Inheritance Package… 1 * * * * 1 * 2 *21* 1 * 1* Moose is language independent through the FAMIX meta-model Java Parser: jFamix Eclipse Plugin (http://jfamix.sourceforge.net/) C++ Parser: Columbus (http://www.frontendart.com/products.html#Columbus) Java/C++ Parser: iPlasma (Loose Research Group)
  • 20. 8/18/05 © Tudor Gîrba 20 Moose has been validated on real life systems written in different languages ………… ~1800260’000SmalltalkSqueak ~4900300’000JavaJBoss ~700135’000SmalltalkJun ~110001’000’000C/C++X ~400120’000C++/JavaY ~23001’200’000C++Z ClassesLines of CodeLanguageSystem
  • 21. 8/18/05 © Tudor Gîrba 21 Summary: Moose is an extensible and collaborative reengineering environment is research driven: metrics, visualization, evolution analysis … is industrially validated is free under BSD license Accessibility: www.iam.unibe.ch/~scg/Research/Moose/ VisualWorks distribution CD Questions?
  • 22. 8/18/05 © Tudor Gîrba 22 Ownership Map reveals how developers drive software evolution