1. The document discusses using topic models to study defects in software systems.
2. Topic models are used to analyze source code files and group them into topics, some of which are found to be more defect-prone than others.
3. Metrics related to topic membership are able to better explain post-release defects compared to traditional static and historical metrics. This suggests topics can help identify areas of code more likely to contain defects.
3. int int manageMemory(int
index){
readFile(String
filePath){ if mem[index] is
fp =
not NULL{
readFile(filePath
) freeInd =
if fp findFreeMemoryLoc()
== NULL
return -1 goto(freeInd)
else }
return fp
}
}
3
4. int int
readFile(String manageMemory(int
filePath){ index){
fp = if mem[index] is
readFile(filePath not NULL{
) freeInd =
if fp == NULL findFreeMemoryLoc()
return -1 goto(freeInd)
else }
return fp }
}
More Risky
Concern
4
5. int int
readFile(String manageMemory(int
Can we use
filePath){ index){
concerns to
fp = if mem[index] is
study
readFile(filePath notdefects?
NULL{
) freeInd =
if fp == NULL findFreeMemoryLoc()
return -1 goto(freeInd)
else }
return fp }
}
More Risky
Concern
5
6. Capturing Concerns Using Topic
Models
read file
file path Topic 1
fp file read, file, path,
path fp fp, file, index,
Topics Models
ind
manage (LDA)
Topic 2
memory manage,
index mem memory, mem,
free ind
free, find, loc
find free
memory loc
6
7. How defect Can topics
prone are explain software
topics? defects?
7
8. Case Studies
3 versions of each system
0.4 - 8.8 MLOC
2.8 - 17 K files
1,300 ~ 6,500 post-release defects
8
9. How defect Can topics
prone are explain software
topics? defects?
9
10. If some topics are more defect-
prone than others...
We can allocate MORE
testing resources on these
topics!
10
11. If some topics are more defect-
prone than others...
We can allocate MORE
testing resources on these
topics!
11