Owf 2013 rii moose speaker 2

Post on 04-Jun-2015

65 views 0 download

Tags:

Transcript of Owf 2013 rii moose speaker 2

Software Analysis Platform

Usman  Bha)RMod  –  INRIA  Lille

Software MaintenanceSoftware needs to be adapted

Context changes

Customers change

Technology changes

People change

Software maintenance is a sign of success

Software Maintenance

Between 50% and 80% of global effort is spent on

“maintenance” !

80%

20%

Software Maintenance

Between 50% and 80% of global effort is spent on

“maintenance” !

80%

20%

40%

20%40%

Understand Code

Software Maintenance

Between 50% and 80% of global effort is spent on

“maintenance” !

80%

20%

40%

20%40%

50% of maintenance is spent reading code!

Understand Code

Software Maintenance

Between 50% and 80% of global effort is spent on

“maintenance” !

80%

20%

40%

20%40%

50% of maintenance is spent reading code!

Understand Code

CurrentPractices

tailoredmanual automatic

generic

We spend a lot of money at the wrong placewith the wrong tools!

tailoredmanual automatic

generic

We spend a lot of money at the wrong placewith the wrong tools!

feedback is key

contextualcontinuous

Pla7orm  for  So;ware  Analysis

Open  source  project  since  1996

Several  hundred  person-­‐years  of  R&D

importers modelsdata analyses

engines

In a Nutshell

Java C  /  C++ Smalltalk .NET

NavigaTon  in  the  Model

JBoss Developer activity

Test coverage

13

Query-­‐based  VisualizaTons

Tools Compact Better Focus

b := GLMTabulator new.b column: #namespaces; column: #classes; column: #methods.b transmit to: #namespaces; andShow: [:a | a tree display: [ :model | model allNamespaces select: #isRoot ]; children: #childScopes; format: #name ].b transmit to: #classes; from: #namespaces; andShow: [:a | a list display: #classes; format: #name ].b transmit to: #methods; from: #classes; andShow: [:a | a list display: #methods; format: #signature ].

b transmit toOutsidePort: #class; from: #classes.b transmit to: #methods; from: #methods.B := GLMTabulator new.B title: 'Code Browser'.B row: #nav; row: #details.B transmit to: #nav; andShow: [:a | a custom: b ].B transmit to: #details; from: #nav port: #class; andShow: [:a | a text display: #sourceText ].B transmit to: #details; from: #nav port: #method; andShow: [:a | a text display: #sourceText ].

Is  this  all  useful?

Case Study - Papyrus UML

• Problem: Understand dependencies introduced by developers of Papyrus UML

• 29  layers,  404  plugins,  10421  total  plugin  dependencies

• Dependencies  between  layers  and  plugins

• And  disTnguish  types  of  dependencies  -­‐>  Export,  Direct,  Implicit

Modeling of Eclipse Plugins

Contextual Visualization of Plugins

Layer and plugin dependencies

Colors to distinguish dependency types

Custom RulesRule followers and breakers

green: followersorange: break < 5 rules

Red: break > 5 rules

Dedicated  Tools  for  So;ware  Analysis

Synectique

• Software business intelligence

• Tailored solution to specific needs

• Legacy languages

Data Model

CreateAnalysis

Act

Analyze

Analysis should allow concrete actions

Data Model

CreateAnalysis

Act

Dedicated Tools

Analyze

Analysis should allow concrete actions

Code Model Dashboard

IDE

Duplication

Code Model

Dedicated Tools

Dashboard

IDE

Duplication

DashboardFrequency of Dead functions

Number of Dead Functions in Module

Num

ber o

f Mod

ule

Overall System view

Interactions

Modules

Properties and Metrics

Calls

Visualization

Code Duplication

Bug Maps

Tools and Services

- Modularization and impact analysis,- Architecture Extraction and Compliance,- Software Metrics and Quality models,- Maps and Visualizations of program artefacts,- Custom rules checking and Live report,- Trends Analysis, Evolution Analysis

- Languages: Java, C#, Cobol, 4D, ABAP, ...

Synectique offers

- Dedicated software analysis for effective/efficient decision making

- Software Business Intelligence for successful/reliable management of Software systems 

http://www.synectique.eu