SlideShare a Scribd company logo
1 of 70
1 
Engineering 
Software Analytics Studies 
Diomidis Spinellis 
Department of Management Science and Technology 
Athens University of Economics and Business 
http://www.spinellis.gr/ 
@CoolSWEng 
18/9/2014 1
2
3
4 
curiosity
5 
serendipity
6 
Outline 
• Data gathering 
• Processing 
– Methods 
– Advice 
• Performance 
Data gathering
7 
Alliances
8
9 
Google hacks
10
11 
Instrumentation
12
13 
4266 utimensat(AT_FDCWD, 
"boost_1_44_0/libs/bind/test/bind_stdcall_mf_test.cpp", {{1336157319, 
67677176}, {1090801932, 0}}, 0) = 0 
4266 chown("boost_1_44_0/libs/bind/test/bind_stdcall_mf_test.cpp", 0, 0) 
= 0 
4266 chmod("boost_1_44_0/libs/bind/test/bind_stdcall_mf_test.cpp", 0644) 
= 0 
4266 open("boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", 
O_WRONLY|O_CREAT|O_EXCL, 0600) = 4 
4266 write(4, ""..., 2789) = 2789 
4266 close(4) = 0 
4266 utimensat(AT_FDCWD, 
"boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", {{1336157319, 
67677176}, {1090801932, 0}}, 0) = 0 
4266 chown("boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", 0, 0) = 
0 
4266 chmod("boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", 0644) = 
0 
4266 open("boost_1_44_0/libs/bind/test/bind_test.cpp", 
O_WRONLY|O_CREAT|O_EXCL, 0600) = 4 
4266 read(3, <unfinished ...>
14 
Recursion
15
16
17 
Synthesis 
cvs2svn
18 
git fast-import
19 
$ git log --reverse --date-order 
``` 
commit 94a21182365ebb258eeee2aa41c5fbcb1f7fd566 
Author: Ken Thompson and Dennis Ritchie <research!{ken,dmr}> 
Date: Tue Jun 20 04:00:00 1972 -0500 
Research V1 development 
Work on file u5.s 
commit b7b2640b9e27415d453a8fbe975a87902a01849d 
[…] 
Author: Ken Thompson <research!ken> 
Date: Tue Nov 26 18:13:21 1974 -0500 
Research V5 development 
Work on file usr/sys/ken/slp.c 
commit 3d19667a65d35a411d911282ed8b87e32a56a349 
[…] 
Author: Dennis Ritchie <research!dmr> 
Date: Mon Dec 2 18:18:02 1974 -0500 
Research V5 development 
Work on file usr/sys/dmr/kl.c 
[…] 
commit 171931a3f6f28ce4d196c20fdec6a4413a843f89 
Author: Brian W. Kernighan <research!bwk> 
Date: Tue May 13 19:43:47 1975 -0500 
Research V6 development 
Work on file rat/r.g 
[…] 
commit ac4b13bca433a44a97689af10247970118834696 
Author: S. R. Bourne <research!srb> 
Date: Fri Jan 12 02:17:45 1979 -0500 
Research V7 development 
Work on file usr/src/cmd/sh/blok.c 
[…] 
Author: Eric Schmidt <schmidt@ucbvax.Berkeley.EDU> 
Date: Sat Jan 5 22:49:18 1980 -0800 
BSD 3 development 
Work on file usr/src/cmd/net/sub.c 
$ git blame -C -C usr/sys/sys/pipe.c 
3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 53) rf->f_flag = FREAD|FPIPE; 
3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 54) rf->f_inode = ip; 
3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 55) ip->i_count = 2; 
[...] 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 122) register struct inode *ip; 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 123) 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 124) ip = fp->f_inode; 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 125) c = u.u_count; 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 126) 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 127) loop: 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 128) 
1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 129) /* 
9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 130) * If error or all done, return. 
9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 131) */ 
9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 132) 
9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 133) if (u.u_error) 
9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 134) return; 
6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 135) plock(ip); 
6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 136) if(c == 0) { 
6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 137) prele(ip); 
6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 138) u.u_count = 0; 
6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 139) return; 
6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 140) } 
```
20 
Probing 
nmap
21 
Processing 
methods
22 
KISS 
Count word occurrences 
• 20GB in 36,260 files 
• Hadoop: 12:25:20
23 
sgsh 
Count word occurrences 
• 20GB in 36,260 files 
• Hadoop: 12:25:20 
• sgsh: 00:34:38
24 
find Gutenberg -type f | 
xargs cat | 
tr -s ' tnrf' n | 
sort -S 6G | 
uniq -c 
Count word occurrences 
• 20GB in 36,260 files 
• Hadoop: 12:25:20 
• sgsh: 00:34:38 
• Unix pipeline: 00:21:37
25 
Processing 
pipelines 
Get 
Fetching
26 
Select 
Selecting 
Process 
Processing
27 
Summarize 
Summarizing 
Get 
Fetching
28 
curl 
wget 
git log 
git blame
29 
$ # Print author names 
git log --format='%an' | 
# Order them by author 
sort | 
# Count number of commits for each author 
uniq --count | 
# Order them by number of commits 
sort --numeric-sort --reverse | 
# Print top ten 
head -10 
20131 Linus Torvalds 
8445 David S. Miller 
7692 Andrew Morton 
5156 Greg Kroah-Hartman 
5116 Mark Brown 
4723 Russell King 
4584 Takashi Iwai 
4385 Al Viro 
4220 Ingo Molnar 
3276 Tejun Heo
30 
100 
80 
60 
40 
20 
0 
0 10 20 30 40 50 60 70 80 90 
Number of developers in the annotated file
31 
Select 
Selecting
32 
grep 
cut 
awk 
sed 
Process 
Processing
33 
sort 
-n 
-r 
+2nr 
-u 
-t:
34 
diff 
$ diff file1 file2 | 
grep ’^[<>]’ | 
wc -l
35 
comm 
$ comm Linux FreeBSD 
[ 
arch 
ash 
bash 
cat 
chflags 
chgrp 
chio 
chmod 
chown 
cp 
cpio 
csh 
date 
dd 
df 
dir 
dmesg 
dnsdomainname 
domainname 
echo 
ed 
egrep 
expr 
false 
getfacl
36 
join 
gvpr
37 
digraph D { 
"archivers/arj" -> "devel/gmake" 
"archivers/arj" -> "devel/autoconf259" 
"archivers/dact" -> "devel/gmake" 
"archivers/dact" -> "security/libmcrypt" 
"archivers/dact" -> "archivers/lzo" 
"archivers/deepforest" -> "x11-toolkits/tkstep80" 
"archivers/deepforest" -> "graphics/libimg" 
"archivers/deepforest" -> "x11/xorg-libraries" 
"archivers/fastjar" -> "devel/gmake" 
"archivers/fastjar" -> "lang/perl5.8" 
"archivers/gtar" -> "converters/libiconv" 
"archivers/gtar" -> "devel/gettext" 
BEG_G { 
$tvtype = TV_fwd; 
$tvroot = node($, ARGV[0]); 
} 
N [$tvroot = NULL; 1] 
END_G { 
induce($T); 
write($T); 
exit(0); 
}
38
39 
Summarize 
Summarizing
40 
wc 
uniq 
head 
tail
41 
fmt 
awk
42 
awk '{print $2}' licenses | 
sort | 
uniq -c | 
sort -rn
43
44 
0 
2 
4 
6 
8 
10 
12 
14 
16 
18 
01/06/1974 
01/06/1975 
01/06/1976 
01/06/1977 
01/06/1978 
01/06/1979 
01/06/1980 
01/06/1981 
01/06/1982 
01/06/1983 
01/06/1984 
01/06/1985 
01/06/1986 
01/06/1987 
01/06/1988 
01/06/1989 
01/06/1990 
01/06/1991 
01/06/1992 
01/06/1993 
01/06/1994 
01/06/1995 
01/06/1996 
01/06/1997 
01/06/1998 
01/06/1999 
01/06/2000 
01/06/2001 
01/06/2002 
01/06/2003 
01/06/2004 
01/06/2005 
01/06/2006 
01/06/2007 
01/06/2008 
01/06/2009 
01/06/2010 
01/06/2011 
01/06/2012 
FNAMELEN 
IDLEN 
0 
0.005 
0.01 
0.015 
0.02 
0.025 
0.03 
0.035 
0.04 
0.045 
0.05 
01/06/1974 
01/06/1975 
01/06/1976 
01/06/1977 
01/06/1978 
01/06/1979 
01/06/1980 
01/06/1981 
01/06/1982 
01/06/1983 
01/06/1984 
01/06/1985 
01/06/1986 
01/06/1987 
01/06/1988 
01/06/1989 
01/06/1990 
01/06/1991 
01/06/1992 
01/06/1993 
01/06/1994 
01/06/1995 
01/06/1996 
01/06/1997 
01/06/1998 
01/06/1999 
01/06/2000 
01/06/2001 
01/06/2002 
01/06/2003 
01/06/2004 
01/06/2005 
01/06/2006 
01/06/2007 
01/06/2008 
01/06/2009 
01/06/2010 
01/06/2011 
01/06/2012 
goto / line 
register / line
45 
Scripting languages 
github.com/dspinellis/unix-history-repo 
• Research Edition Unix: V1, V3–V7 
• Unix 32V 
• BSD 1, 2, 3, 4, 4.1, 4.2, 4.3 *, 4.4 * 
• 386BSD 0.0, 0.1 
• FreeBSD 1.0–10.0 
• Tags 
• Contributors 
• Branches and merges
46 
Tool front ends 
find /usr/ports/ -name Makefile 
-maxdepth 3 | 
sed 's,/Makefile,,' | 
while read dir 
do 
cd $dir 
make -V PORTNAME 
-V RUN_DEPENDS -V BUILD_DEPENDS 
-V LIB_DEPENDS -V FETCH_DEPENDS 
-V DEPENDS 
done
47 
C Preprocessor 
0% 
5% 
10% 
15% 
20% 
25% 
30% 
35% 
40% 
45% 
50% 
01/06/1974 
01/05/1975 
01/04/1976 
01/03/1977 
01/02/1978 
01/01/1979 
01/12/1979 
01/11/1980 
01/10/1981 
01/09/1982 
01/08/1983 
01/07/1984 
01/06/1985 
01/05/1986 
01/04/1987 
01/03/1988 
01/02/1989 
01/01/1990 
01/12/1990 
01/11/1991 
01/10/1992 
01/09/1993 
01/08/1994 
01/07/1995 
01/06/1996 
01/05/1997 
01/04/1998 
01/03/1999 
01/02/2000 
01/01/2001 
01/12/2001 
01/11/2002 
01/10/2003 
01/09/2004 
01/08/2005 
01/07/2006 
01/06/2007 
01/05/2008 
01/04/2009 
01/03/2010 
01/02/2011 
01/01/2012 
01/12/2012 
comment char %
48 
Analyze Binaries 
nm,readelf 
ar,ldd 
dumpbin 
javap
49 
$ cd /usr/bin 
$ ldd * 2>/dev/null | 
awk '/=>/{print $3}' | 
sort | 
uniq -c | 
sort -rn | 
head 
541 /lib/libc.so.6 
541 /lib/ld-linux.so.2 
104 /lib/libdl.so.2 
92 /lib/libm.so.6 
62 /lib/libncurses.so.5 
59 /lib/libnsl.so.1 
50 /lib/libcrypt.so.1 
34 /usr/lib/libstdc++- 
libc6.2-2.so.3 
34 /lib/libpam.so.0 
28 /usr/lib/libz.so.1
50
51 
Tool Interoperability
52 
Combine 
data sources
53 
http://geonames.usgs.gov/ 
http://earth-info.nga.mil/
54
55 
Processing 
advice
56 
AITMOAF 
Automate
57 
make 
set –e 
a && b && c 
Monitor
58 
top/htop 
logger 
pv 
monitor 
(www.spinellis.gr/blog/20081027/) 
Take notes
59 
Checkpoint 
Handle 
broken 
connections
60 
nohup 
mosh 
Performance
61 
Optimize 
Parallelize
62 
parallel
63 
find . -name *.c -type f -print0 | 
xargs -0 -n 1  
analyze-file.sh 
find . -name *.c -type f -print0 | 
parallel --keep-order -d '0' -n 1 –gnu  
analyze-file.sh
64 
Low-level processing
65 
class RangeMap { 
private: 
vector<bool> active; 
public: 
static const int NMONTH = (2009 - 2001) * 12; 
RangeMap() : active(NMONTH, false) {} 
}; 
class EntryDetails { 
private: 
RangeMap defined, stub; 
vector <int> nrefs; 
string definer, referrer, firstRef; 
time_t firstDef; 
int numReferences, numContributors; 
int numRevisions, numReverts; 
public: 
EntryDetails() : defined(), stub(), 
nrefs(RangeMap::NMONTH, 0), firstDef(-1), 
numReferences(0), numContributors(0), numRevisions(0), 
numReverts(0) {} 
};
66 
class RangeMap { 
private BitSet active; 
public static final int NMONTH = (2009 - 2001) * 12; 
public RangeMap() { 
active = new BitSet(NMONTH); 
} 
} 
class EntryDetails { 
RangeMap defined, stub; 
ArrayList <Integer> nrefs; 
String definer, referrer, firstRef; 
Date firstDef; 
int numReferences, numContributors; 
int numRevisions, numReverts; 
public EntryDetails() { 
defined = new RangeMap(); 
stub = new RangeMap(); 
nrefs = new ArrayList<Integer>(RangeMap.NMONTH); 
} 
} 
MB 
7,212 
12,287 
C++ Java
67
68 
Experiment 
on a subset 
Sample
69
70 
Thank you! 
http://www.spinellis.gr 
@CoolSWEng 
dds@aueb.gr 
Image Credits 
• Aero Icarus 
• Chrysler Group 
• Jose Maria Minarro Vivancos 
• Kirti Poddar 
• Lab Science Career 
• Lachlan Donald 
• Luigi Chiesa 
• Marco40134 
• Mark Sze 
• Meats Meyer 
• NASA 
• NTSB 
• PSParrot 
• Q-Wing 
• Rachel Kramer 
• Sam Rayner 
• Tim Bouwer 
• Tudor Barker 
• Wikimedia Commons 
• William Avery, W. Heath Robinson 
• kaktuslampan 
• kenmainr 
• max guitare 
• patrasTimes.gr 
• vlc team, ubuntu, Hidro 
• zzpza

More Related Content

What's hot

PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...
PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...
PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...Faisal Akber
 
Staring into the eBPF Abyss
Staring into the eBPF AbyssStaring into the eBPF Abyss
Staring into the eBPF AbyssSasha Goldshtein
 
The Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerThe Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerSasha Goldshtein
 
(131116) #fitalk extracting user typing history on bash in mac os x memory
(131116) #fitalk   extracting user typing history on bash in mac os x memory(131116) #fitalk   extracting user typing history on bash in mac os x memory
(131116) #fitalk extracting user typing history on bash in mac os x memoryINSIGHT FORENSIC
 
Observable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJSObservable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJSYunong Xiao
 
LSFMM 2019 BPF Observability
LSFMM 2019 BPF ObservabilityLSFMM 2019 BPF Observability
LSFMM 2019 BPF ObservabilityBrendan Gregg
 
ch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystemch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystemyushiang fu
 
Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...
Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...
Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...NETWAYS
 
JDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin Stożek
JDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin StożekJDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin Stożek
JDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin StożekPROIDEA
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようSatoshi Noda
 
Modern Linux Tracing Landscape
Modern Linux Tracing LandscapeModern Linux Tracing Landscape
Modern Linux Tracing LandscapeSasha Goldshtein
 
Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...
Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...
Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...Spark Summit
 
Spack - A Package Manager for HPC
Spack - A Package Manager for HPCSpack - A Package Manager for HPC
Spack - A Package Manager for HPCinside-BigData.com
 
YOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceBrendan Gregg
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Brendan Gregg
 
Plan 9でWebプログラミング
Plan 9でWebプログラミングPlan 9でWebプログラミング
Plan 9でWebプログラミングRyousei Takano
 

What's hot (20)

PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...
PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...
PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...
 
Staring into the eBPF Abyss
Staring into the eBPF AbyssStaring into the eBPF Abyss
Staring into the eBPF Abyss
 
The Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerThe Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF Primer
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
Containers for sysadmins
Containers for sysadminsContainers for sysadmins
Containers for sysadmins
 
(131116) #fitalk extracting user typing history on bash in mac os x memory
(131116) #fitalk   extracting user typing history on bash in mac os x memory(131116) #fitalk   extracting user typing history on bash in mac os x memory
(131116) #fitalk extracting user typing history on bash in mac os x memory
 
Observable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJSObservable Node.js Applications - EnterpriseJS
Observable Node.js Applications - EnterpriseJS
 
Ctf hello,world!
Ctf hello,world! Ctf hello,world!
Ctf hello,world!
 
LSFMM 2019 BPF Observability
LSFMM 2019 BPF ObservabilityLSFMM 2019 BPF Observability
LSFMM 2019 BPF Observability
 
ch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystemch8-pv1-the-virtual-filesystem
ch8-pv1-the-virtual-filesystem
 
Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...
Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...
Open Source Backup Conference 2014: Workshop bareos introduction, by Philipp ...
 
JDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin Stożek
JDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin StożekJDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin Stożek
JDO 2019: Kubernetes logging techniques with a touch of LogSense - Marcin Stożek
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしよう
 
Linux Basics
Linux BasicsLinux Basics
Linux Basics
 
Modern Linux Tracing Landscape
Modern Linux Tracing LandscapeModern Linux Tracing Landscape
Modern Linux Tracing Landscape
 
Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...
Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...
Fire in the Sky: An Introduction to Monitoring Apache Spark in the Cloud with...
 
Spack - A Package Manager for HPC
Spack - A Package Manager for HPCSpack - A Package Manager for HPC
Spack - A Package Manager for HPC
 
YOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems Performance
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
Plan 9でWebプログラミング
Plan 9でWebプログラミングPlan 9でWebプログラミング
Plan 9でWebプログラミング
 

Similar to Keynote 1 - Engineering Software Analytics Studies

Useful linux-commands
Useful linux-commandsUseful linux-commands
Useful linux-commandsHimani Singh
 
Designing Tracing Tools
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing ToolsSysdig
 
Designing Tracing Tools
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing ToolsBrendan Gregg
 
Noah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsNoah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsHeroku
 
DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDocker, Inc.
 
Linux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene PirogovLinux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene PirogovPivorak MeetUp
 
Installation of application server 10g in red hat 4
Installation of application server 10g in red hat 4Installation of application server 10g in red hat 4
Installation of application server 10g in red hat 4uzzzle
 
SANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management DatabasesSANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management DatabasesPhil Hagen
 
NSC #2 - Challenge Solution
NSC #2 - Challenge SolutionNSC #2 - Challenge Solution
NSC #2 - Challenge SolutionNoSuchCon
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識維泰 蔡
 
Dtrace и немного магии
Dtrace и немного магииDtrace и немного магии
Dtrace и немного магииDan Kruchinin
 
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Composeraccoony
 
Miscelaneous Debris
Miscelaneous DebrisMiscelaneous Debris
Miscelaneous Debrisfrewmbot
 
Half-Century of Unix; History, Preservation, and Lessons Learned
Half-Century of Unix; History, Preservation, and Lessons Learned Half-Century of Unix; History, Preservation, and Lessons Learned
Half-Century of Unix; History, Preservation, and Lessons Learned OW2
 
Sysdig
SysdigSysdig
Sysdiggnosek
 
Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedBrendan Gregg
 
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterDUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterAndrey Kudryavtsev
 
bcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challengesbcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challengesIO Visor Project
 

Similar to Keynote 1 - Engineering Software Analytics Studies (20)

Useful linux-commands
Useful linux-commandsUseful linux-commands
Useful linux-commands
 
Designing Tracing Tools
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing Tools
 
Hotsos Advanced Linux Tools
Hotsos Advanced Linux ToolsHotsos Advanced Linux Tools
Hotsos Advanced Linux Tools
 
Debug generic process
Debug generic processDebug generic process
Debug generic process
 
Designing Tracing Tools
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing Tools
 
Noah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsNoah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku Secrets
 
DCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker CaptainsDCEU 18: Tips and Tricks of the Docker Captains
DCEU 18: Tips and Tricks of the Docker Captains
 
Linux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene PirogovLinux Tracing Superpowers by Eugene Pirogov
Linux Tracing Superpowers by Eugene Pirogov
 
Installation of application server 10g in red hat 4
Installation of application server 10g in red hat 4Installation of application server 10g in red hat 4
Installation of application server 10g in red hat 4
 
SANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management DatabasesSANS @Night There's Gold in Them Thar Package Management Databases
SANS @Night There's Gold in Them Thar Package Management Databases
 
NSC #2 - Challenge Solution
NSC #2 - Challenge SolutionNSC #2 - Challenge Solution
NSC #2 - Challenge Solution
 
Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識Linux 系統管理與安全:基本 Linux 系統知識
Linux 系統管理與安全:基本 Linux 系統知識
 
Dtrace и немного магии
Dtrace и немного магииDtrace и немного магии
Dtrace и немного магии
 
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
 
Miscelaneous Debris
Miscelaneous DebrisMiscelaneous Debris
Miscelaneous Debris
 
Half-Century of Unix; History, Preservation, and Lessons Learned
Half-Century of Unix; History, Preservation, and Lessons Learned Half-Century of Unix; History, Preservation, and Lessons Learned
Half-Century of Unix; History, Preservation, and Lessons Learned
 
Sysdig
SysdigSysdig
Sysdig
 
Performance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting Started
 
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation CenterDUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
DUG'20: 12 - DAOS in Lenovo’s HPC Innovation Center
 
bcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challengesbcc/BPF tools - Strategy, current tools, future challenges
bcc/BPF tools - Strategy, current tools, future challenges
 

More from ESEM 2014

Keynote 2 - The 20% of software engineering practices that contribute to 80% ...
Keynote 2 - The 20% of software engineering practices that contribute to 80% ...Keynote 2 - The 20% of software engineering practices that contribute to 80% ...
Keynote 2 - The 20% of software engineering practices that contribute to 80% ...ESEM 2014
 
33 - On Knowledge Transfer Skill in Pair Programming
33 - On Knowledge Transfer Skill in Pair Programming33 - On Knowledge Transfer Skill in Pair Programming
33 - On Knowledge Transfer Skill in Pair ProgrammingESEM 2014
 
222 - Design Pattern Decay: The Case for Class Grime
222 - Design Pattern Decay: The Case for Class Grime222 - Design Pattern Decay: The Case for Class Grime
222 - Design Pattern Decay: The Case for Class GrimeESEM 2014
 
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...ESEM 2014
 
169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...
169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...
169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...ESEM 2014
 
196 - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...
196  - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...196  - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...
196 - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...ESEM 2014
 
42- Using Templates to Elicit Implied Security Requirements from Functional R...
42- Using Templates to Elicit Implied Security Requirements from Functional R...42- Using Templates to Elicit Implied Security Requirements from Functional R...
42- Using Templates to Elicit Implied Security Requirements from Functional R...ESEM 2014
 
166 - ISBSG variables most frequently used for software effort estimation: A ...
166 - ISBSG variables most frequently used for software effort estimation: A ...166 - ISBSG variables most frequently used for software effort estimation: A ...
166 - ISBSG variables most frequently used for software effort estimation: A ...ESEM 2014
 
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...ESEM 2014
 
224 - Factors Impacting Rapid Releases: An Industrial Case Study
224 - Factors Impacting Rapid Releases: An Industrial Case Study224 - Factors Impacting Rapid Releases: An Industrial Case Study
224 - Factors Impacting Rapid Releases: An Industrial Case StudyESEM 2014
 
215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...
215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...
215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...ESEM 2014
 
214 - Sampling Improvement in Software Engineering Surveys
214 - Sampling Improvement in Software Engineering Surveys214 - Sampling Improvement in Software Engineering Surveys
214 - Sampling Improvement in Software Engineering SurveysESEM 2014
 
201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...
201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...
201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...ESEM 2014
 
130 - Motivated software engineers are engaged and focused, while satisfied o...
130 - Motivated software engineers are engaged and focused, while satisfied o...130 - Motivated software engineers are engaged and focused, while satisfied o...
130 - Motivated software engineers are engaged and focused, while satisfied o...ESEM 2014
 
178 - A replicated study on duplicate detection: Using Apache Lucene to searc...
178 - A replicated study on duplicate detection: Using Apache Lucene to searc...178 - A replicated study on duplicate detection: Using Apache Lucene to searc...
178 - A replicated study on duplicate detection: Using Apache Lucene to searc...ESEM 2014
 
124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...
124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...
124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...ESEM 2014
 
18 - Impact of Process Conformance on the Effects of Test-driven Development
18 - Impact of Process Conformance on the Effects of Test-driven Development18 - Impact of Process Conformance on the Effects of Test-driven Development
18 - Impact of Process Conformance on the Effects of Test-driven DevelopmentESEM 2014
 
65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...
65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...
65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...ESEM 2014
 
52 - The Impact of Test Ownership and Team Structure on the Reliability and E...
52 - The Impact of Test Ownership and Team Structure on the Reliability and E...52 - The Impact of Test Ownership and Team Structure on the Reliability and E...
52 - The Impact of Test Ownership and Team Structure on the Reliability and E...ESEM 2014
 
167 - Productivity for proof engineering
167 - Productivity for proof engineering167 - Productivity for proof engineering
167 - Productivity for proof engineeringESEM 2014
 

More from ESEM 2014 (20)

Keynote 2 - The 20% of software engineering practices that contribute to 80% ...
Keynote 2 - The 20% of software engineering practices that contribute to 80% ...Keynote 2 - The 20% of software engineering practices that contribute to 80% ...
Keynote 2 - The 20% of software engineering practices that contribute to 80% ...
 
33 - On Knowledge Transfer Skill in Pair Programming
33 - On Knowledge Transfer Skill in Pair Programming33 - On Knowledge Transfer Skill in Pair Programming
33 - On Knowledge Transfer Skill in Pair Programming
 
222 - Design Pattern Decay: The Case for Class Grime
222 - Design Pattern Decay: The Case for Class Grime222 - Design Pattern Decay: The Case for Class Grime
222 - Design Pattern Decay: The Case for Class Grime
 
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...210 - Software Population Pyramids: The Current and the Future of OSS Develop...
210 - Software Population Pyramids: The Current and the Future of OSS Develop...
 
169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...
169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...
169 - Bridging the Gap: SE Technology Transfer into Practice - Study Design a...
 
196 - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...
196  - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...196  - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...
196 - Evaluation in Practice: Artifact-based Requirements Engineering and Sc...
 
42- Using Templates to Elicit Implied Security Requirements from Functional R...
42- Using Templates to Elicit Implied Security Requirements from Functional R...42- Using Templates to Elicit Implied Security Requirements from Functional R...
42- Using Templates to Elicit Implied Security Requirements from Functional R...
 
166 - ISBSG variables most frequently used for software effort estimation: A ...
166 - ISBSG variables most frequently used for software effort estimation: A ...166 - ISBSG variables most frequently used for software effort estimation: A ...
166 - ISBSG variables most frequently used for software effort estimation: A ...
 
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
112 - The Role of Mentoring and Project Characteristics for Onboarding in Ope...
 
224 - Factors Impacting Rapid Releases: An Industrial Case Study
224 - Factors Impacting Rapid Releases: An Industrial Case Study224 - Factors Impacting Rapid Releases: An Industrial Case Study
224 - Factors Impacting Rapid Releases: An Industrial Case Study
 
215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...
215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...
215 Towards a Framework to Support Large Scale Sampling in Software Engineeri...
 
214 - Sampling Improvement in Software Engineering Surveys
214 - Sampling Improvement in Software Engineering Surveys214 - Sampling Improvement in Software Engineering Surveys
214 - Sampling Improvement in Software Engineering Surveys
 
201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...
201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...
201 - Using Qualitative Metasummary to Synthesize Empirical Findings in Liter...
 
130 - Motivated software engineers are engaged and focused, while satisfied o...
130 - Motivated software engineers are engaged and focused, while satisfied o...130 - Motivated software engineers are engaged and focused, while satisfied o...
130 - Motivated software engineers are engaged and focused, while satisfied o...
 
178 - A replicated study on duplicate detection: Using Apache Lucene to searc...
178 - A replicated study on duplicate detection: Using Apache Lucene to searc...178 - A replicated study on duplicate detection: Using Apache Lucene to searc...
178 - A replicated study on duplicate detection: Using Apache Lucene to searc...
 
124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...
124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...
124 - Impact of Developer Reputation on Code Review Outcomes in OSS Projects:...
 
18 - Impact of Process Conformance on the Effects of Test-driven Development
18 - Impact of Process Conformance on the Effects of Test-driven Development18 - Impact of Process Conformance on the Effects of Test-driven Development
18 - Impact of Process Conformance on the Effects of Test-driven Development
 
65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...
65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...
65 - An Empirical Simulation-based Study of Real-Time Speech Translation for ...
 
52 - The Impact of Test Ownership and Team Structure on the Reliability and E...
52 - The Impact of Test Ownership and Team Structure on the Reliability and E...52 - The Impact of Test Ownership and Team Structure on the Reliability and E...
52 - The Impact of Test Ownership and Team Structure on the Reliability and E...
 
167 - Productivity for proof engineering
167 - Productivity for proof engineering167 - Productivity for proof engineering
167 - Productivity for proof engineering
 

Recently uploaded

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 

Recently uploaded (20)

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 

Keynote 1 - Engineering Software Analytics Studies

  • 1. 1 Engineering Software Analytics Studies Diomidis Spinellis Department of Management Science and Technology Athens University of Economics and Business http://www.spinellis.gr/ @CoolSWEng 18/9/2014 1
  • 2. 2
  • 3. 3
  • 6. 6 Outline • Data gathering • Processing – Methods – Advice • Performance Data gathering
  • 8. 8
  • 10. 10
  • 12. 12
  • 13. 13 4266 utimensat(AT_FDCWD, "boost_1_44_0/libs/bind/test/bind_stdcall_mf_test.cpp", {{1336157319, 67677176}, {1090801932, 0}}, 0) = 0 4266 chown("boost_1_44_0/libs/bind/test/bind_stdcall_mf_test.cpp", 0, 0) = 0 4266 chmod("boost_1_44_0/libs/bind/test/bind_stdcall_mf_test.cpp", 0644) = 0 4266 open("boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", O_WRONLY|O_CREAT|O_EXCL, 0600) = 4 4266 write(4, ""..., 2789) = 2789 4266 close(4) = 0 4266 utimensat(AT_FDCWD, "boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", {{1336157319, 67677176}, {1090801932, 0}}, 0) = 0 4266 chown("boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", 0, 0) = 0 4266 chmod("boost_1_44_0/libs/bind/test/bind_stdcall_test.cpp", 0644) = 0 4266 open("boost_1_44_0/libs/bind/test/bind_test.cpp", O_WRONLY|O_CREAT|O_EXCL, 0600) = 4 4266 read(3, <unfinished ...>
  • 15. 15
  • 16. 16
  • 19. 19 $ git log --reverse --date-order ``` commit 94a21182365ebb258eeee2aa41c5fbcb1f7fd566 Author: Ken Thompson and Dennis Ritchie <research!{ken,dmr}> Date: Tue Jun 20 04:00:00 1972 -0500 Research V1 development Work on file u5.s commit b7b2640b9e27415d453a8fbe975a87902a01849d […] Author: Ken Thompson <research!ken> Date: Tue Nov 26 18:13:21 1974 -0500 Research V5 development Work on file usr/sys/ken/slp.c commit 3d19667a65d35a411d911282ed8b87e32a56a349 […] Author: Dennis Ritchie <research!dmr> Date: Mon Dec 2 18:18:02 1974 -0500 Research V5 development Work on file usr/sys/dmr/kl.c […] commit 171931a3f6f28ce4d196c20fdec6a4413a843f89 Author: Brian W. Kernighan <research!bwk> Date: Tue May 13 19:43:47 1975 -0500 Research V6 development Work on file rat/r.g […] commit ac4b13bca433a44a97689af10247970118834696 Author: S. R. Bourne <research!srb> Date: Fri Jan 12 02:17:45 1979 -0500 Research V7 development Work on file usr/src/cmd/sh/blok.c […] Author: Eric Schmidt <schmidt@ucbvax.Berkeley.EDU> Date: Sat Jan 5 22:49:18 1980 -0800 BSD 3 development Work on file usr/src/cmd/net/sub.c $ git blame -C -C usr/sys/sys/pipe.c 3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 53) rf->f_flag = FREAD|FPIPE; 3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 54) rf->f_inode = ip; 3cc1108b usr/sys/ken/pipe.c (Ken Thompson 1974-11-26 18:13:21 -0500 55) ip->i_count = 2; [...] 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 122) register struct inode *ip; 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 123) 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 124) ip = fp->f_inode; 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 125) c = u.u_count; 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 126) 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 127) loop: 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 128) 1f183be2 usr/sys/sys/pipe.c (Ken Thompson 1979-01-10 15:19:35 -0500 129) /* 9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 130) * If error or all done, return. 9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 131) */ 9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 132) 9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 133) if (u.u_error) 9a9f6b22 usr/src/sys/sys/pipe.c (Bill Joy 1980-01-05 05:51:18 -0800 134) return; 6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 135) plock(ip); 6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 136) if(c == 0) { 6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 137) prele(ip); 6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 138) u.u_count = 0; 6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 139) return; 6d632e85 usr/sys/ken/pipe.c (Ken Thompson 1975-07-17 10:33:37 -0500 140) } ```
  • 22. 22 KISS Count word occurrences • 20GB in 36,260 files • Hadoop: 12:25:20
  • 23. 23 sgsh Count word occurrences • 20GB in 36,260 files • Hadoop: 12:25:20 • sgsh: 00:34:38
  • 24. 24 find Gutenberg -type f | xargs cat | tr -s ' tnrf' n | sort -S 6G | uniq -c Count word occurrences • 20GB in 36,260 files • Hadoop: 12:25:20 • sgsh: 00:34:38 • Unix pipeline: 00:21:37
  • 25. 25 Processing pipelines Get Fetching
  • 26. 26 Select Selecting Process Processing
  • 27. 27 Summarize Summarizing Get Fetching
  • 28. 28 curl wget git log git blame
  • 29. 29 $ # Print author names git log --format='%an' | # Order them by author sort | # Count number of commits for each author uniq --count | # Order them by number of commits sort --numeric-sort --reverse | # Print top ten head -10 20131 Linus Torvalds 8445 David S. Miller 7692 Andrew Morton 5156 Greg Kroah-Hartman 5116 Mark Brown 4723 Russell King 4584 Takashi Iwai 4385 Al Viro 4220 Ingo Molnar 3276 Tejun Heo
  • 30. 30 100 80 60 40 20 0 0 10 20 30 40 50 60 70 80 90 Number of developers in the annotated file
  • 32. 32 grep cut awk sed Process Processing
  • 33. 33 sort -n -r +2nr -u -t:
  • 34. 34 diff $ diff file1 file2 | grep ’^[<>]’ | wc -l
  • 35. 35 comm $ comm Linux FreeBSD [ arch ash bash cat chflags chgrp chio chmod chown cp cpio csh date dd df dir dmesg dnsdomainname domainname echo ed egrep expr false getfacl
  • 37. 37 digraph D { "archivers/arj" -> "devel/gmake" "archivers/arj" -> "devel/autoconf259" "archivers/dact" -> "devel/gmake" "archivers/dact" -> "security/libmcrypt" "archivers/dact" -> "archivers/lzo" "archivers/deepforest" -> "x11-toolkits/tkstep80" "archivers/deepforest" -> "graphics/libimg" "archivers/deepforest" -> "x11/xorg-libraries" "archivers/fastjar" -> "devel/gmake" "archivers/fastjar" -> "lang/perl5.8" "archivers/gtar" -> "converters/libiconv" "archivers/gtar" -> "devel/gettext" BEG_G { $tvtype = TV_fwd; $tvroot = node($, ARGV[0]); } N [$tvroot = NULL; 1] END_G { induce($T); write($T); exit(0); }
  • 38. 38
  • 40. 40 wc uniq head tail
  • 42. 42 awk '{print $2}' licenses | sort | uniq -c | sort -rn
  • 43. 43
  • 44. 44 0 2 4 6 8 10 12 14 16 18 01/06/1974 01/06/1975 01/06/1976 01/06/1977 01/06/1978 01/06/1979 01/06/1980 01/06/1981 01/06/1982 01/06/1983 01/06/1984 01/06/1985 01/06/1986 01/06/1987 01/06/1988 01/06/1989 01/06/1990 01/06/1991 01/06/1992 01/06/1993 01/06/1994 01/06/1995 01/06/1996 01/06/1997 01/06/1998 01/06/1999 01/06/2000 01/06/2001 01/06/2002 01/06/2003 01/06/2004 01/06/2005 01/06/2006 01/06/2007 01/06/2008 01/06/2009 01/06/2010 01/06/2011 01/06/2012 FNAMELEN IDLEN 0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 01/06/1974 01/06/1975 01/06/1976 01/06/1977 01/06/1978 01/06/1979 01/06/1980 01/06/1981 01/06/1982 01/06/1983 01/06/1984 01/06/1985 01/06/1986 01/06/1987 01/06/1988 01/06/1989 01/06/1990 01/06/1991 01/06/1992 01/06/1993 01/06/1994 01/06/1995 01/06/1996 01/06/1997 01/06/1998 01/06/1999 01/06/2000 01/06/2001 01/06/2002 01/06/2003 01/06/2004 01/06/2005 01/06/2006 01/06/2007 01/06/2008 01/06/2009 01/06/2010 01/06/2011 01/06/2012 goto / line register / line
  • 45. 45 Scripting languages github.com/dspinellis/unix-history-repo • Research Edition Unix: V1, V3–V7 • Unix 32V • BSD 1, 2, 3, 4, 4.1, 4.2, 4.3 *, 4.4 * • 386BSD 0.0, 0.1 • FreeBSD 1.0–10.0 • Tags • Contributors • Branches and merges
  • 46. 46 Tool front ends find /usr/ports/ -name Makefile -maxdepth 3 | sed 's,/Makefile,,' | while read dir do cd $dir make -V PORTNAME -V RUN_DEPENDS -V BUILD_DEPENDS -V LIB_DEPENDS -V FETCH_DEPENDS -V DEPENDS done
  • 47. 47 C Preprocessor 0% 5% 10% 15% 20% 25% 30% 35% 40% 45% 50% 01/06/1974 01/05/1975 01/04/1976 01/03/1977 01/02/1978 01/01/1979 01/12/1979 01/11/1980 01/10/1981 01/09/1982 01/08/1983 01/07/1984 01/06/1985 01/05/1986 01/04/1987 01/03/1988 01/02/1989 01/01/1990 01/12/1990 01/11/1991 01/10/1992 01/09/1993 01/08/1994 01/07/1995 01/06/1996 01/05/1997 01/04/1998 01/03/1999 01/02/2000 01/01/2001 01/12/2001 01/11/2002 01/10/2003 01/09/2004 01/08/2005 01/07/2006 01/06/2007 01/05/2008 01/04/2009 01/03/2010 01/02/2011 01/01/2012 01/12/2012 comment char %
  • 48. 48 Analyze Binaries nm,readelf ar,ldd dumpbin javap
  • 49. 49 $ cd /usr/bin $ ldd * 2>/dev/null | awk '/=>/{print $3}' | sort | uniq -c | sort -rn | head 541 /lib/libc.so.6 541 /lib/ld-linux.so.2 104 /lib/libdl.so.2 92 /lib/libm.so.6 62 /lib/libncurses.so.5 59 /lib/libnsl.so.1 50 /lib/libcrypt.so.1 34 /usr/lib/libstdc++- libc6.2-2.so.3 34 /lib/libpam.so.0 28 /usr/lib/libz.so.1
  • 50. 50
  • 52. 52 Combine data sources
  • 54. 54
  • 57. 57 make set –e a && b && c Monitor
  • 58. 58 top/htop logger pv monitor (www.spinellis.gr/blog/20081027/) Take notes
  • 59. 59 Checkpoint Handle broken connections
  • 60. 60 nohup mosh Performance
  • 63. 63 find . -name *.c -type f -print0 | xargs -0 -n 1 analyze-file.sh find . -name *.c -type f -print0 | parallel --keep-order -d '0' -n 1 –gnu analyze-file.sh
  • 65. 65 class RangeMap { private: vector<bool> active; public: static const int NMONTH = (2009 - 2001) * 12; RangeMap() : active(NMONTH, false) {} }; class EntryDetails { private: RangeMap defined, stub; vector <int> nrefs; string definer, referrer, firstRef; time_t firstDef; int numReferences, numContributors; int numRevisions, numReverts; public: EntryDetails() : defined(), stub(), nrefs(RangeMap::NMONTH, 0), firstDef(-1), numReferences(0), numContributors(0), numRevisions(0), numReverts(0) {} };
  • 66. 66 class RangeMap { private BitSet active; public static final int NMONTH = (2009 - 2001) * 12; public RangeMap() { active = new BitSet(NMONTH); } } class EntryDetails { RangeMap defined, stub; ArrayList <Integer> nrefs; String definer, referrer, firstRef; Date firstDef; int numReferences, numContributors; int numRevisions, numReverts; public EntryDetails() { defined = new RangeMap(); stub = new RangeMap(); nrefs = new ArrayList<Integer>(RangeMap.NMONTH); } } MB 7,212 12,287 C++ Java
  • 67. 67
  • 68. 68 Experiment on a subset Sample
  • 69. 69
  • 70. 70 Thank you! http://www.spinellis.gr @CoolSWEng dds@aueb.gr Image Credits • Aero Icarus • Chrysler Group • Jose Maria Minarro Vivancos • Kirti Poddar • Lab Science Career • Lachlan Donald • Luigi Chiesa • Marco40134 • Mark Sze • Meats Meyer • NASA • NTSB • PSParrot • Q-Wing • Rachel Kramer • Sam Rayner • Tim Bouwer • Tudor Barker • Wikimedia Commons • William Avery, W. Heath Robinson • kaktuslampan • kenmainr • max guitare • patrasTimes.gr • vlc team, ubuntu, Hidro • zzpza