SlideShare ist ein Scribd-Unternehmen logo
1 von 166
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

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
Elisabetta Tosi
 
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
 
Horizontal Navigation for BBC part 1
Horizontal Navigation for BBC part 1Horizontal Navigation for BBC part 1
Horizontal Navigation for BBC part 1
onpause
 

Andere mochten auch (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
 

Ähnlich wie Measuring Software: From Data to Actionable Knowledge

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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Kürzlich hochgeladen (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 

Measuring Software: From Data to Actionable Knowledge