SlideShare a Scribd company logo
Measuring Software:
From Data to Actionable Knowledge
16 May 2015
International Workshop on Software Architecture and Metrics
Radu Marinescu
radumarinescu@me.com
@radu_marinescu
ogo
lori
Culoare pentru o institu]ie unic - clar, curat, u[or de recunoscut - culoarea
este elementul cel mai u[or de recunoscut, albastru indigo reflect personalitatea
institu]ieide<nv]m>ntsuperiortehnic-ferm,puternic,darintrospectiv,valorizator.
Este o combina]ie de albastru [i ro[u, <n care dominant este albastrul cu atributele
sale introspective. Griul neutru pune <n valoare albastrul, accentu>nd valorile sale.
ogo
ulori
Culoare pentru o institu]ie unic - clar, curat, u[or de recunoscut - culoarea
este elementul cel mai u[or de recunoscut, albastru indigo reflect personalitatea
institu]ieide<nv]m>ntsuperiortehnic-ferm,puternic,darintrospectiv,valorizator.
Este o combina]ie de albastru [i ro[u, <n care dominant este albastrul cu atributele
sale introspective. Griul neutru pune <n valoare albastrul, accentu>nd valorile sale.
Logo
culori
Culoare pentru o institu]ie unic - clar, curat, u[or de recunoscut - culoarea
este elementul cel mai u[or de recunoscut, albastru indigo reflect personalitatea
institu]ieide<nv]m>ntsuperiortehnic-ferm,puternic,darintrospectiv,valorizator.
Este o combina]ie de albastru [i ro[u, <n care dominant este albastrul cu atributele
sale introspective. Griul neutru pune <n valoare albastrul, accentu>nd valorile sale.
Logo
culori
Culoare pentru o institu]ie unic - clar, curat, u[or de recunoscut - culoarea
este elementul cel mai u[or de recunoscut, albastru indigo reflect personalitatea
institu]ieide<nv]m>ntsuperiortehnic-ferm,puternic,darintrospectiv,valorizator.
Este o combina]ie de albastru [i ro[u, <n care dominant este albastrul cu atributele
sale introspective. Griul neutru pune <n valoare albastrul, accentu>nd valorile sale.
Michele Lanza
Radu Marinescu
Object-Oriented
Metrics
in Practice
Using Software Metrics to
Characterize, Evaluate, and Improve
the Design of Object-Oriented Systems
Foreword by Stéphane Ducasse
1 3
1000+reprinted2010/2015
MIPICSME’14
inFusion
inFusion
inFusion
inFusion
seentoo much…
I have
time & money
wasted on…
“hide & seek”
bug chasing
playing futile
numbers games
code being
thrown away
but also…
myriads of
useless papers
tens of
“mayfly”
prototypes
a true story…
180.9
(12 subsystems)
(17 methods)
(3 subsystems)
NOW6 months ago
(1 class)
(22
(10 methods)
(32 classes)
(16 classes)
(28 classes)
(120 methods)
180.9
(12 subsystems)
(17 methods)
(3 subsystems)
NOW6 months ago
(1 class)
(22
(10 methods)
(32 classes)
(16 classes)
(28 classes)
(120 methods)
180.9
(12 subsystems)
(17 methods)
(3 subsystems)
NOW6 months ago
(1 class)
(22
(10 methods)
(32 classes)
(16 classes)
(28 classes)
(120 methods)
180.9
(12 subsystems)
(17 methods)
(3 subsystems)
NOW6 months ago
(1 class)
(22
(10 methods)
(32 classes)
(16 classes)
(28 classes)
(120 methods)
CYCLOMATIC
COMPLEXITY
!This is not an
isolated story
use of metrics
(and other code analyses) in
use of metrics
(and other code analyses) in
misuse
http://nemo.sonarqube.org/
12 Person-Years
http://nemo.sonarqube.org/
12 Person-Years
1 issues / 8 LOC
http://nemo.sonarqube.org/
12 Person-Years
1 issues / 8 LOC1 “key” issue / 140 LOC
http://nemo.sonarqube.org/
12 Person-Years
1 issues / 8 LOC1 “key” issue / 140 LOC
OMG! How is an “E”?!
http://nemo.sonarqube.org/
Picture from http://www.savvykidsofarkansas.com/event/the-boy-who-cried-wolf/
http://nemo.sonarqube.org/
The most efficient 7 weeks in the
history of software development…
http://nemo.sonarqube.org/
The most efficient 7 weeks in the
history of software development…
http://nemo.sonarqube.org/
The most efficient 7 weeks in the
history of software development…
16.5 Person-Years of Technical Debt vanished!
http://nemo.sonarqube.org/
The most efficient 7 weeks in the
history of software development…
16.5 Person-Years of Technical Debt vanished!
http://nemo.sonarqube.org/
Let’s zoom-in…
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
are these separate problems?
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
who “authorized”
these thresholds?
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
reducing CYCLO takes
only 1 min / branch ?
http://nemo.sonarqube.org/
reducing CYCLO takes
only 1 min / branch ?
reducing CYCLO for class
is easier (137’) than for
methods (285’)
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
http://nemo.sonarqube.org/
never knew it’s so easy
to change a signature!
http://nemo.sonarqube.org/
but what if…
but what if…
http://nemo.sonarqube.org/
solving duplication
does only depend on
the number of blocks?
http://nemo.sonarqube.org/
…are these 2 cases equally easy?
…
Image from http://imgur.com/gallery/iWKad22
Let’s summarize…
1 Irrelevant Warnings
1 Irrelevant Warnings
2 Misleading Debt Quantification
1 Irrelevant Warnings
2 Misleading Debt Quantification
3 Toxic/Stupid Refactoring Advices
1 Irrelevant Warnings
2 Misleading Debt Quantification
3 Toxic/Stupid Refactoring Advices
4 Phony Thresholds
Why
?
Technical Debt
The first scary things was bugs
http://www.google.com/imgres?imgurl=http://micheltriana.com/
wp-content/uploads/2010/12/
resharper-8x6.png&imgrefurl=http://micheltriana.com/
2010/12/01/configuring-resharper-code-analysis/
&h=459&w=640&tbnid=MFJydOmaXXj3xM:&zoom=1&docid=e0
dqbvDRdbGVSM&ei=xOEcVaXfOsiWaoa6gJAI&tbm=isch&client
=safari&ved=0CBwQMygAMAA
http://www.google.com/imgres?imgurl=http://micheltriana.com/
wp-content/uploads/2010/12/
resharper-8x6.png&imgrefurl=http://micheltriana.com/
2010/12/01/configuring-resharper-code-analysis/
&h=459&w=640&tbnid=MFJydOmaXXj3xM:&zoom=1&docid=e0
dqbvDRdbGVSM&ei=xOEcVaXfOsiWaoa6gJAI&tbm=isch&client
=safari&ved=0CBwQMygAMAA
but then we realised…
Most maintenance effort goes into
understanding
messy code
47%
19%
6%
28%
Testing Documenting
Coding Understanding
M. Ben-Menachem and G. S. Marliss. Software quality: Producing practical, consistent software. International Thomson Computer Press, 1997
Bugs
error-prone
Bugs
Time
hard to maintain
error-prone
… and bugs also usually hide in
messy code
Checkstyle
!We missed
an essential distinction
=
Strategic Flaws
Tactical Flaws
Execution Flaws
…system
…statements
…classes
and functions
How do I
design the…
Execution flaws Tactical flaws
Execution flaws Tactical flaws
Execution flaws Tactical flaws
Execution flaws Tactical flaws
Execution flaws Tactical flaws
PSA
PSA Gleason
PSA Gleason
PSA Gleason
?what about tactical problems
public class TarHeader{
/**
* The entry's name.
*/
public StringBuffer name;
/**
* The entry's permission mode.
*/
public int mode;
/**
* The entry's user id.
*/
public int userId;
/**
* The entry's group id.
*/
public int groupId;
}
public
/**
* The entry's name.
*/
/**
* The entry's permission mode.
*/
int
/**
* The entry's user id.
*/
/**
* The entry's group id.
*/
int
}
public
public
public
public
public
/**
* The entry's name.
*/
/**
* The entry's permission mode.
*/
int
/**
* The entry's user id.
*/
/**
* The entry's group id.
*/
int
}
public
public
public
public
Data
Class
public
/**
* The entry's name.
*/
/**
* The entry's permission mode.
*/
/**
* The entry's user id.
*/
/**
* The entry's group id.
*/
int
}
public
/**
* The entry's name.
*/
/**
* The entry's permission mode.
*/
/**
* The entry's user id.
*/
/**
* The entry's group id.
*/
int
}
private
private
private
private
public
/**
* The entry's name.
*/
/**
* The entry's permission mode.
*/
/**
* The entry's user id.
*/
/**
* The entry's group id.
*/
int
}
private
private
private
private
Encapsulate public data
(in TarHeader)1
compile errors!
public class {
public void parseTarHeader( TarHeader hdr, byte[] header ){
int offset = 0;
hdr.name = TarHeader.parseName( header, offset,
TarHeader.NAMELEN );
offset += TarHeader.NAMELEN;
hdr.mode = (int)TarHeader.parseOctal( header, offset,
TarHeader.MODELEN );
offset += TarHeader.MODELEN;
hdr.userId = (int)TarHeader.parseOctal( header, offset,
TarHeader.UIDLEN );
offset += TarHeader.UIDLEN;
hdr.groupId = (int)TarHeader.parseOctal( header, offset,
TarHeader.GIDLEN );
}
TarEntry
public
public
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader
}
TarEntry
TarHeader hdr
hdr.name
hdr.mode
hdr.userId
hdr.groupId
parseTarHeader
public
public
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader
}
TarEntry
TarHeader hdr
hdr.name
hdr.mode
hdr.userId
hdr.groupId
parseTarHeader
Move the method
(TarEntry > TarHeader)1
public
public
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader.
offset += TarHeader.
hdr.
TarHeader
}
TarEntry
TarHeader hdr
hdr.name
hdr.mode
hdr.userId
hdr.groupId
parseTarHeader
Encapsulate public data
(in TarHeader)2
Move the method
(TarEntry > TarHeader)1
however …
public
public
int
hdr.
header, offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader
}
public
int
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
long
offset = TarHeader.getLongOctalBytes
( size, outbuf, offset, TarHeader.
}
hdr.mode = (int)TarHeader.parseOctal( header,
hdr.mode = (int)TarHeader.parseOctal( header,
offset, TarHeader.MODELEN );
offset, TarHeader.MODELEN );
offset += TarHeader.MODELEN;
offset += TarHeader.MODELEN;
hdr.userId = (int)TarHeader.parseOctal( header,
hdr.userId = (int)TarHeader.parseOctal( header,
offset, TarHeader.UIDLEN );
offset, TarHeader.UIDLEN );
parseTarHeader
writeEntryHeader
public
public
int
hdr.
header, offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader
}
public
int
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
long
offset = TarHeader.getLongOctalBytes
( size, outbuf, offset, TarHeader.
}
hdr.mode = (int)TarHeader.parseOctal( header,
hdr.mode = (int)TarHeader.parseOctal( header,
offset, TarHeader.MODELEN );
offset, TarHeader.MODELEN );
offset += TarHeader.MODELEN;
offset += TarHeader.MODELEN;
hdr.userId = (int)TarHeader.parseOctal( header,
hdr.userId = (int)TarHeader.parseOctal( header,
offset, TarHeader.UIDLEN );
offset, TarHeader.UIDLEN );
parseTarHeader
writeEntryHeader
Duplicated
Code
public
public
int
hdr.
header, offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader
}
public
int
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
long
offset = TarHeader.getLongOctalBytes
( size, outbuf, offset, TarHeader.
}
hdr.mode
hdr.mode
offset, TarHeader.
offset, TarHeader.
offset += TarHeader.
offset += TarHeader.
hdr.userId
hdr.userId
offset, TarHeader.
offset, TarHeader.
parseTarHeader
writeEntryHeader
Extract method
(by factoring out the duplicated code)1
public
public
int
hdr.
header, offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader
}
public
int
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
long
offset = TarHeader.getLongOctalBytes
( size, outbuf, offset, TarHeader.
}
hdr.mode
hdr.mode
offset, TarHeader.
offset, TarHeader.
offset += TarHeader.
offset += TarHeader.
hdr.userId
hdr.userId
offset, TarHeader.
offset, TarHeader.
parseTarHeader
writeEntryHeader
Extract method
(by factoring out the duplicated code)1
Move the newly created method
(in TarHeader)2
public
public
int
hdr.
header, offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader
}
public
int
hdr.
offset, TarHeader.
offset += TarHeader.
hdr.
offset, TarHeader.
long
offset = TarHeader.getLongOctalBytes
( size, outbuf, offset, TarHeader.
}
hdr.mode
hdr.mode
offset, TarHeader.
offset, TarHeader.
offset += TarHeader.
offset += TarHeader.
hdr.userId
hdr.userId
offset, TarHeader.
offset, TarHeader.
parseTarHeader
writeEntryHeader
Extract method
(by factoring out the duplicated code)1
Move the newly created method
(in TarHeader)2
Encapsulate public data
(in TarHeader)3
yet, there is an alternative solution…
Move data
(TarHeader > TarEntry)1
Move data
(TarHeader > TarEntry)1
Encapsulate public data
(in TarEntry)2
vs.
Extract method
(out of the duplicated code)1
Move the newly created method
(in TarHeader)2
Encapsulate public data
(in TarHeader)3
Move data
(TarHeader > TarEntry)1
Encapsulate public data
(in TarEntry)2
vs.
Which solution is best?
Extract method
(out of the duplicated code)1
Move the newly created method
(in TarHeader)2
Encapsulate public data
(in TarHeader)3
Move data
(TarHeader > TarEntry)1
Encapsulate public data
(in TarEntry)2
Only the developer
who knows the context
can decide!
?How to dealwith
tactical flaws
start with
symptom indicators
Checkstyle
Lorenz, Kidd, 1994
Chidamber, Kemerer, 1994
LOC - number of lines of code
CYCLO - cyclomatic complexity of a function
NOF - number of functions
FANOUT - outgoing coupling
NOA - number of attributes
DIT - depth of inheritance tree
TCC - tight class cohesion
…
The problem is…
Image from pickywallpapers.com
!Tactical flaws must be treated as
first-class entities
!…and symptoms must be
aggregated
for example…
from S.Demeyer, S.Ducasse, O.Nierstrasz - Object-Oriented Reengineering Patterns, 2003
from S.Demeyer, S.Ducasse, O.Nierstrasz - Object-Oriented Reengineering Patterns, 2003
from S.Demeyer, S.Ducasse, O.Nierstrasz - Object-Oriented Reengineering Patterns, 2003
or another example…
God Classes
use data from small data-classes,
centralize the intelligence of the system,
and do everything.
A.Riel, 1996
God Classes
break encapsulation, and
are complex, and
are not cohesive.
A.Riel, 1996
ATFD > FEW
Class uses directly more than a
few attributes of other classes
WMC ≥ VERY HIGH
Functional complexity of the
class is very high
TCC < ONE THIRD
Class cohesion is low
AND GodClass
from M.Lanza, R.Marinescu - Object-Oriented Metrics in Prac
but there is
one more problem
when dealing with metrics…
Thresholds
who “authorized”
these thresholds?
Experts, right?
Image from http://www.dilbert.com
5 projects?!?!
< 100 classes?!?!
Michele Lanza
Radu Marinescu
Object-Oriented
Metrics
in Practice
Using Software Metrics to
Characterize, Evaluate, and Improve
the Design of Object-Oriented Systems
Foreword by Stéphane Ducasse
1 3
Michele Lanza
Radu Marinescu
Object-Oriented
Metrics
in Practice
Using Software Metrics to
Characterize, Evaluate, and Improve
the Design of Object-Oriented Systems
Foreword by Stéphane Ducasse
1 3
37/45 projects…
4800 projects(SourceForge)
300.000.000 lines of code
4800 projects(SourceForge)
300.000.000 lines of code inFusion
4800 projects(SourceForge)
300.000.000 lines of code inFusion
Wrapping it up…
#1
Distinguish tactical flaws
from execution flaws
#2
Don’t correct tactical flaws
by fixing isolated symptoms
#3
Correcting tactical flaws
requires exploration tools
#3
Correcting tactical flaws
requires exploration tools
powerful
Flaw Summary
Flaw Summary
Visualization
Metrics
Related flaws
Source Highlighter
Dependency Breakout
#4
Improve
technical debt calculators
#5
Build massive collection of
curated measurement data
“ ”
A single arrow is easily broken, but not ten in a bundle.
Japanese proverb
Measuring Software:
From Data to Actionable Knowledge
16 May 2015
International Workshop on Software Architecture and Metrics
Radu Marinescu
radumarinescu@me.com
@radu_marinescu

More Related Content

Viewers also liked

WelcometoourSchool
WelcometoourSchoolWelcometoourSchool
WelcometoourSchool
WaikatoForever
 
Analítica web: Métricas clave para entender a nuestros usuarios
Analítica web: Métricas clave para entender a nuestros usuariosAnalítica web: Métricas clave para entender a nuestros usuarios
Analítica web: Métricas clave para entender a nuestros usuarios
Sistema de Servicios de Información y Bibliotecas SISIB
 
I Social Media spiegati a Gino, produttore di vino
I Social Media spiegati a Gino, produttore di vinoI Social Media spiegati a Gino, produttore di vino
I Social Media spiegati a Gino, produttore di vinoElisabetta Tosi
 
Jordans hokkaido
Jordans hokkaidoJordans hokkaido
Jordans hokkaido
WaikatoForever
 
Good karma dalai lama
Good karma dalai lamaGood karma dalai lama
Good karma dalai lama
Krishnan Swaminathan
 
Week6 Presentation 3
Week6 Presentation 3Week6 Presentation 3
Week6 Presentation 3
kserate21
 
Dr. Mack T. Hines, III - National FORUM Journals
Dr. Mack T. Hines, III - National FORUM JournalsDr. Mack T. Hines, III - National FORUM Journals
Dr. Mack T. Hines, III - National FORUM Journals
William Kritsonis
 
Moodle Strategy for Small Business
Moodle Strategy for Small BusinessMoodle Strategy for Small Business
Moodle Strategy for Small Business
Rhys Moult
 
Hokey Pokey
Hokey PokeyHokey Pokey
Hokey Pokey
WaikatoForever
 
Horizontal Navigation for BBC part 1
Horizontal Navigation for BBC part 1Horizontal Navigation for BBC part 1
Horizontal Navigation for BBC part 1
onpause
 
DeSE: Final Crit Program
DeSE: Final Crit ProgramDeSE: Final Crit Program
DeSE: Final Crit Program
Sami Nerenberg
 
Get the most out of your LinkedIn Profile for Digital Enterprise Program
Get the most out of your LinkedIn Profile for Digital Enterprise ProgramGet the most out of your LinkedIn Profile for Digital Enterprise Program
Get the most out of your LinkedIn Profile for Digital Enterprise Program
Rhys Moult
 
National FORUM of Teacher Education Journal, Dr. William Allan Kritsonis, Ed...
National FORUM of Teacher Education Journal,  Dr. William Allan Kritsonis, Ed...National FORUM of Teacher Education Journal,  Dr. William Allan Kritsonis, Ed...
National FORUM of Teacher Education Journal, Dr. William Allan Kritsonis, Ed...
William Kritsonis
 
Manuscript submission guidelines for a hard copy journal
Manuscript submission guidelines for a hard copy journalManuscript submission guidelines for a hard copy journal
Manuscript submission guidelines for a hard copy journal
William Kritsonis
 

Viewers also liked (16)

WelcometoourSchool
WelcometoourSchoolWelcometoourSchool
WelcometoourSchool
 
Analítica web: Métricas clave para entender a nuestros usuarios
Analítica web: Métricas clave para entender a nuestros usuariosAnalítica web: Métricas clave para entender a nuestros usuarios
Analítica web: Métricas clave para entender a nuestros usuarios
 
生命密碼 20110224
生命密碼 20110224生命密碼 20110224
生命密碼 20110224
 
I Social Media spiegati a Gino, produttore di vino
I Social Media spiegati a Gino, produttore di vinoI Social Media spiegati a Gino, produttore di vino
I Social Media spiegati a Gino, produttore di vino
 
Jordans hokkaido
Jordans hokkaidoJordans hokkaido
Jordans hokkaido
 
Good karma dalai lama
Good karma dalai lamaGood karma dalai lama
Good karma dalai lama
 
Week6 Presentation 3
Week6 Presentation 3Week6 Presentation 3
Week6 Presentation 3
 
Dr. Mack T. Hines, III - National FORUM Journals
Dr. Mack T. Hines, III - National FORUM JournalsDr. Mack T. Hines, III - National FORUM Journals
Dr. Mack T. Hines, III - National FORUM Journals
 
Care u-care-me
Care u-care-meCare u-care-me
Care u-care-me
 
Moodle Strategy for Small Business
Moodle Strategy for Small BusinessMoodle Strategy for Small Business
Moodle Strategy for Small Business
 
Hokey Pokey
Hokey PokeyHokey Pokey
Hokey Pokey
 
Horizontal Navigation for BBC part 1
Horizontal Navigation for BBC part 1Horizontal Navigation for BBC part 1
Horizontal Navigation for BBC part 1
 
DeSE: Final Crit Program
DeSE: Final Crit ProgramDeSE: Final Crit Program
DeSE: Final Crit Program
 
Get the most out of your LinkedIn Profile for Digital Enterprise Program
Get the most out of your LinkedIn Profile for Digital Enterprise ProgramGet the most out of your LinkedIn Profile for Digital Enterprise Program
Get the most out of your LinkedIn Profile for Digital Enterprise Program
 
National FORUM of Teacher Education Journal, Dr. William Allan Kritsonis, Ed...
National FORUM of Teacher Education Journal,  Dr. William Allan Kritsonis, Ed...National FORUM of Teacher Education Journal,  Dr. William Allan Kritsonis, Ed...
National FORUM of Teacher Education Journal, Dr. William Allan Kritsonis, Ed...
 
Manuscript submission guidelines for a hard copy journal
Manuscript submission guidelines for a hard copy journalManuscript submission guidelines for a hard copy journal
Manuscript submission guidelines for a hard copy journal
 

Similar to Measuring Software: From Data to Actionable Knowledge

OpenML DALI
OpenML DALIOpenML DALI
OpenML DALI
Joaquin Vanschoren
 
6.2 sustainability system design tools vezzoli 10-11 (32)
6.2 sustainability system design tools vezzoli 10-11 (32)6.2 sustainability system design tools vezzoli 10-11 (32)
6.2 sustainability system design tools vezzoli 10-11 (32)
LeNS_slide
 
R programming for psychometrics
R programming for psychometricsR programming for psychometrics
R programming for psychometrics
Diane Talley
 
Designing Testable Software
Designing Testable SoftwareDesigning Testable Software
Designing Testable Software
Omegapoint Academy
 
Faster! Faster! Accelerate your business with blazing prototypes
Faster! Faster! Accelerate your business with blazing prototypesFaster! Faster! Accelerate your business with blazing prototypes
Faster! Faster! Accelerate your business with blazing prototypes
OSCON Byrum
 
Java Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or IgnoredJava Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or Ignored
Chris Parnin
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
cklosowski
 
Recommender Systems and Linked Open Data
Recommender Systems and Linked Open DataRecommender Systems and Linked Open Data
Recommender Systems and Linked Open Data
Polytechnic University of Bari
 
Data Modelling at Scale
Data Modelling at ScaleData Modelling at Scale
Data Modelling at Scale
David Simons
 
The Research Software Encyclopedia
The Research Software EncyclopediaThe Research Software Encyclopedia
The Research Software Encyclopedia
Vanessa S
 
PostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestPostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit Test
Andrea Adami
 
Reproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter NotebookReproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter Notebook
Keiichiro Ono
 
Open Analytics Environment
Open Analytics EnvironmentOpen Analytics Environment
Open Analytics Environment
Ian Foster
 
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
PROIDEA
 
MyMediaLite
MyMediaLiteMyMediaLite
MyMediaLite
Zeno Gantner
 
What's new in Vaadin 8, how do you upgrade, and what's next?
What's new in Vaadin 8, how do you upgrade, and what's next?What's new in Vaadin 8, how do you upgrade, and what's next?
What's new in Vaadin 8, how do you upgrade, and what's next?
Marcus Hellberg
 
Kanban in Action
Kanban in ActionKanban in Action
Kanban in Action
Marcus Hammarberg
 
Artificial Intelligence and Machine Learning
Artificial Intelligence and Machine LearningArtificial Intelligence and Machine Learning
Artificial Intelligence and Machine Learning
Abhishek Sharma
 
Supraja_SMS_presentation
Supraja_SMS_presentationSupraja_SMS_presentation
4Developers: Norbert Wójtowicz- Data-Oriented Architecture
4Developers: Norbert Wójtowicz- Data-Oriented Architecture4Developers: Norbert Wójtowicz- Data-Oriented Architecture
4Developers: Norbert Wójtowicz- Data-Oriented Architecture
PROIDEA
 

Similar to Measuring Software: From Data to Actionable Knowledge (20)

OpenML DALI
OpenML DALIOpenML DALI
OpenML DALI
 
6.2 sustainability system design tools vezzoli 10-11 (32)
6.2 sustainability system design tools vezzoli 10-11 (32)6.2 sustainability system design tools vezzoli 10-11 (32)
6.2 sustainability system design tools vezzoli 10-11 (32)
 
R programming for psychometrics
R programming for psychometricsR programming for psychometrics
R programming for psychometrics
 
Designing Testable Software
Designing Testable SoftwareDesigning Testable Software
Designing Testable Software
 
Faster! Faster! Accelerate your business with blazing prototypes
Faster! Faster! Accelerate your business with blazing prototypesFaster! Faster! Accelerate your business with blazing prototypes
Faster! Faster! Accelerate your business with blazing prototypes
 
Java Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or IgnoredJava Generics Adoption: How New Features are Introduced Championed or Ignored
Java Generics Adoption: How New Features are Introduced Championed or Ignored
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
 
Recommender Systems and Linked Open Data
Recommender Systems and Linked Open DataRecommender Systems and Linked Open Data
Recommender Systems and Linked Open Data
 
Data Modelling at Scale
Data Modelling at ScaleData Modelling at Scale
Data Modelling at Scale
 
The Research Software Encyclopedia
The Research Software EncyclopediaThe Research Software Encyclopedia
The Research Software Encyclopedia
 
PostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit TestPostgreSQL Day italy 2016 Unit Test
PostgreSQL Day italy 2016 Unit Test
 
Reproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter NotebookReproducible Workflow with Cytoscape and Jupyter Notebook
Reproducible Workflow with Cytoscape and Jupyter Notebook
 
Open Analytics Environment
Open Analytics EnvironmentOpen Analytics Environment
Open Analytics Environment
 
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
JDD 2016 - Bartosz Majsak - Meet The Assertable Chaos Monkeys
 
MyMediaLite
MyMediaLiteMyMediaLite
MyMediaLite
 
What's new in Vaadin 8, how do you upgrade, and what's next?
What's new in Vaadin 8, how do you upgrade, and what's next?What's new in Vaadin 8, how do you upgrade, and what's next?
What's new in Vaadin 8, how do you upgrade, and what's next?
 
Kanban in Action
Kanban in ActionKanban in Action
Kanban in Action
 
Artificial Intelligence and Machine Learning
Artificial Intelligence and Machine LearningArtificial Intelligence and Machine Learning
Artificial Intelligence and Machine Learning
 
Supraja_SMS_presentation
Supraja_SMS_presentationSupraja_SMS_presentation
Supraja_SMS_presentation
 
4Developers: Norbert Wójtowicz- Data-Oriented Architecture
4Developers: Norbert Wójtowicz- Data-Oriented Architecture4Developers: Norbert Wójtowicz- Data-Oriented Architecture
4Developers: Norbert Wójtowicz- Data-Oriented Architecture
 

Recently uploaded

Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Paul Brebner
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabhQuarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
aisafed42
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
Severalnines
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
kalichargn70th171
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
Maitrey Patel
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 

Recently uploaded (20)

Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
Why Apache Kafka Clusters Are Like Galaxies (And Other Cosmic Kafka Quandarie...
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabhQuarter 3 SLRP grade 9.. gshajsbhhaheabh
Quarter 3 SLRP grade 9.. gshajsbhhaheabh
 
Kubernetes at Scale: Going Multi-Cluster with Istio
Kubernetes at Scale:  Going Multi-Cluster  with IstioKubernetes at Scale:  Going Multi-Cluster  with Istio
Kubernetes at Scale: Going Multi-Cluster with Istio
 
All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...
 
ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.ACE - Team 24 Wrapup event at ahmedabad.
ACE - Team 24 Wrapup event at ahmedabad.
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 

Measuring Software: From Data to Actionable Knowledge