how do developers document database usages in source code?boyang/ase15slides.pdf · how do...
TRANSCRIPT
![Page 1: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/1.jpg)
How Do Developers Document Database Usages in Source Code?
Mario Linares-Vasquez, Boyang Li, Christopher Vendome, and Denys Poshyvanyk
ASE 2015
![Page 2: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/2.jpg)
Database-centric application (DCA)
DCAs are software systems that rely on databases to persist records using database objects.
![Page 3: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/3.jpg)
Database-centric application (DCA)
DCAs are software systems that rely on databases to persist records using database objects.
![Page 4: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/4.jpg)
Challenges
![Page 5: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/5.jpg)
Challenges
DBManager.getAllInfoByStudentID ()
ID Num PWD Gender Address Year …
… … … … … …
… … … … … …
STUDENT
![Page 6: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/6.jpg)
Challenges
DBManager.getAllInfoByStudentID ()
ID Num PWD Gender Address Year …
… … … … … …
… … … … … …
STUDENT
ID Num PWD …
… … …
… … …
ST_LOGIN
ID Gender Address Year …
… … … … …
… … … … …
ST_DETAILS
![Page 7: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/7.jpg)
Challenges
DBManager.getAllInfoByStudentID ()
ID Num PWD Gender Address Year …
… … … … … …
… … … … … …
STUDENT
ID Num PWD …
… … …
… … …
ST_LOGIN
ID Gender Address Year …
… … … … …
… … … … …
ST_DETAILS
getSTLogin() getSTDetails()
![Page 8: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/8.jpg)
Challenges
UI.student.buttonClickShowAllInfo()
UI.student.quaryAllInfoByID ()
DBManager.getAllInfoByStudentID ()
ID Num PWD Gender Address Year …
… … … … … …
… … … … … …
STUDENT
ID Num PWD …
… … …
… … …
ST_LOGIN
ID Gender Address Year …
… … … … …
… … … … …
ST_DETAILS
getSTLogin() getSTDetails()
![Page 9: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/9.jpg)
Challenges
• How the model is described by a schema • How the database is used in the source code
![Page 10: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/10.jpg)
Related works
![Page 11: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/11.jpg)
Related works
![Page 12: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/12.jpg)
Related works
![Page 13: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/13.jpg)
Related works
No previous work has been done to understand database documentation practices at source code level.
![Page 14: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/14.jpg)
Goal
How Do Developers Document Database Usages in Source Code?
![Page 15: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/15.jpg)
381,161 projects
Methodology
![Page 16: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/16.jpg)
381,161 projects
Identified the projects using SQL 18,828 projects
Methodology
![Page 17: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/17.jpg)
381,161 projects
Identified the projects using SQL 18,828 projects
≥ 1 3,113 projects ≥ 1
Methodology
![Page 18: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/18.jpg)
A survey
A mining-based analysis
3,113 projects
Methodology
![Page 19: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/19.jpg)
A survey
A mining-based analysis
with
147 developers
on
33,045 methods
3,113 projects
Methodology
![Page 20: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/20.jpg)
A survey
A mining-based analysis
with
147 developers
on
33,045 methods
Results
Results
3,113 projects
Methodology
![Page 21: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/21.jpg)
RQ1. Do developers document database-related methods
RQ2. Do developers update comments for database-related methods
RQ3. How difficult is to understand the database schema constraints along call-chains
Research Questions
![Page 22: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/22.jpg)
RQ1. Do developers comment methods in source code that locally execute SQL queries and statements?
SQ1. Do you add/write documentation comments to methods in the source code?
SQ2. Do you write source code comments detailing database schema constraints?
Yes No
122(82.99%)
25(17.01%)
Yes No
32(21.77%)
115(78.23%) Yes No Yes No
32(21.77%)
115(78.23%)
![Page 23: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/23.jpg)
Yes No
32(21.77%)
115(78.23%)
RQ1. Do developers comment methods in source code that locally execute SQL queries and statements?
![Page 24: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/24.jpg)
“The database schema and documentation takes care of that. I can always look at the table definition very easily.”
“Comments related to the database schema and its constraints I consider to be irrelevant to the code using it. The schema, its details, and any quirks about it should be outlined in a separate document.” Yes No
32(21.77%)
115(78.23%)
RQ1. Do developers comment methods in source code that locally execute SQL queries and statements?
![Page 25: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/25.jpg)
23%
7,595 (23%)
In the 3,113 projects, we identified a total of 33,045 methods invoking SQL ueries/statements.
Yes No
32(21.77%)
115(78.23%)
RQ1. Do developers comment methods in source code that locally execute SQL queries and statements?
![Page 26: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/26.jpg)
SQ3. How often do you find outdated comments in source code?
SQ4. When you make changes to database related methods, how often do you update comments?
Never Rarely SometimesFairly Often Always
29(19.73%)
118(80.27%)
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 27: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/27.jpg)
SQ3. How often do you find outdated comments in source code?
SQ4. When you make changes to database related methods, how often do you update comments?
Never Rarely SometimesFairly Often Always
31(21.08%)
116(78.92%)
Never Rarely SometimesFairly Often Always
29(19.73%)
118(80.27%)
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 28: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/28.jpg)
3,113 projects
264 projects
8.5% Had explicit releases
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 29: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/29.jpg)
3,113 projects
264 projects
8.5% Had explicit releases
2,662 methods (Invoke SQL)
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 30: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/30.jpg)
3,113 projects
264 projects
8.5% Had explicit releases
2,662 methods (Invoke SQL)
618 methods
23.2% were updated
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 31: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/31.jpg)
3,113 projects
264 projects
8.5% Had explicit releases
2,662 methods (Invoke SQL)
618 methods
23.2% were updated
512 methods
82.8% didn’t updated comments
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 32: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/32.jpg)
3,113 projects
264 projects
8.5% Had explicit releases
2,662 methods (Invoke SQL)
618 methods
23.2% were updated
512 methods 106 methods
82.8% didn’t updated comments
17.2% updated comments
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 33: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/33.jpg)
106 methods
1 1
3 14
21 4
0 4
2 56
0 10 20 30 40 50 60
(0%,10%]
(10%,20%]
(20%,30%]
(30%,40%]
(40%,50%]
(50%,60%]
(60%,70%]
(70%,80%]
(80%,90%]
(90%,100%]
frequency that the comments were updated when the method was modified
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 34: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/34.jpg)
106 methods
1 1
3 14
21 4
0 4
2 56
0 10 20 30 40 50 60
(0%,10%]
(10%,20%]
(20%,30%]
(30%,40%]
(40%,50%]
(50%,60%]
(60%,70%]
(70%,80%]
(80%,90%]
(90%,100%]
frequency that the comments were updated when the method was modified
40(37.73%)
RQ2. Do developers update comments of database-related methods during the evolution of a system?
![Page 35: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/35.jpg)
SQ5. How difficult is it to trace the schema constraints (e.g., foreign key violations) from the methods with SQL statements to top-level method callers
Very Easy Easy ModerateHard Very Hard
50(34.01%)
97(65.99%)
RQ3. How difficult is it for developers to understand propagated schema constraints along call-chains?
![Page 36: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/36.jpg)
Lessons learnt
(i) Documenting database usages and constraints is not a common practice in source code methods
(ii) Developers do not update comments when changes are done to database-related methods
(iii) Tracing schema constraints through call-chains in the call graph is not an easy task in most of the cases
![Page 37: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/37.jpg)
Lessons learnt
(i) Documenting database usages and constraints is not a common practice in source code methods
(ii) Developers do not update comments when changes are done to database-related methods
(iii) Tracing schema constraints through call-chains in the call graph is not an easy task in most of the cases
Documentation
Automation
Calling context
![Page 38: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/38.jpg)
Summary
![Page 39: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/39.jpg)
Summary
![Page 40: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/40.jpg)
Summary
![Page 41: How Do Developers Document Database Usages in Source Code?boyang/ase15slides.pdf · How Do Developers Document Database Usages in Source Code? Mario Linares-Vasquez, Boyang Li, Christopher](https://reader033.vdocuments.mx/reader033/viewer/2022060413/5f11e6fc7a6c8a46d1784a92/html5/thumbnails/41.jpg)
Summary