62
DOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE- CENTRIC APPLICATIONS Mario Linares-Vásquez, Boyang Li, Christopher Vendome, Denys Poshyvanyk ISSTA’16

DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Embed Size (px)

Citation preview

Page 1: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

DOCUMENTING DATABASE USAGES AND SCHEMA

CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS

Mario Linares-Vásquez, Boyang Li, Christopher Vendome, Denys Poshyvanyk

ISSTA’16

Page 2: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Database-Centric Applications (DCAs)

Source code

- High level features require different database operations

- SQL-style operations

- API calls using de-facto libraries or ORM frameworks

Page 3: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Database-Centric Applications (DCAs)

Database

- Tables, columns, types, constraints

- Underlying domain model of DCAs, including business rules and terms

Source code

- High level features require different database operations

- SQL-style operations

- API calls using de-facto libraries or ORM frameworks

Page 4: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Some challenges in DCAs

- DB schema and source code evolves collaterally (i.e., asynchronously)

- Schema changes have significant impact on DCAs’ code

Page 5: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Some challenges in DCAs

- Lack of usage of referential integrity in schemas impact the understanding of the schemas

- Tracing DB schema constraints along source code method call-chains is a “moderate” or a “very hard” challenge

Page 6: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example: Xinco

- Document Management System - In active development since 2004 - J2EE Architecture + Web Services - 23 tables and 135 attributes - Referential integrity

https://sourceforge.net/p/xinco/

Page 7: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example: com.bluecubs.xinco. core.server.XincoCoreNodeServer.deleteFromDB

public void deleteFromDB(boolean delete_this, XincoDBManager DBM,int userID) throws XincoException { int i=0; try { Statement stmt; fillXincoCoreNodes(DBM); fillXincoCoreData(DBM); for (i=0;i<getXinco_core_nodes().size();i++) { ((XincoCoreNodeServer)getXinco_core_nodes().elementAt(i)) .deleteFromDB(true, DBM,userID); } for (i=0;i<getXinco_core_data().size();i++) { XincoIndexer.removeXincoCoreData([...]); XincoCoreDataServer.removeFromDB([...]); [...] } if (delete_this) { XincoCoreAuditServer audit= new XincoCoreAuditServer(); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_ace WHERE xinco_core_node_id=" + getId()); stmt.close(); audit.updateAuditTrail("xinco_core_node",new String [] {"id ="+getId()}, DBM,"audit.general.delete",userID); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_node WHERE id=" + getId()); stmt.close(); } DBM.con.commit(); } catch (Exception e) { [...] } }

Page 8: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example: com.bluecubs.xinco. core.server.XincoCoreNodeServer.deleteFromDB

public void deleteFromDB(boolean delete_this, XincoDBManager DBM,int userID) throws XincoException { int i=0; try { Statement stmt; fillXincoCoreNodes(DBM); fillXincoCoreData(DBM); for (i=0;i<getXinco_core_nodes().size();i++) { ((XincoCoreNodeServer)getXinco_core_nodes().elementAt(i)) .deleteFromDB(true, DBM,userID); } for (i=0;i<getXinco_core_data().size();i++) { XincoIndexer.removeXincoCoreData([...]); XincoCoreDataServer.removeFromDB([...]); [...] } if (delete_this) { XincoCoreAuditServer audit= new XincoCoreAuditServer(); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_ace WHERE xinco_core_node_id=" + getId()); stmt.close(); audit.updateAuditTrail("xinco_core_node",new String [] {"id ="+getId()}, DBM,"audit.general.delete",userID); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_node WHERE id=" + getId()); stmt.close(); } DBM.con.commit(); } catch (Exception e) { [...] } }

database operations2

2 tables

Page 9: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example: com.bluecubs.xinco. core.server.XincoCoreNodeServer.deleteFromDB

public void deleteFromDB(boolean delete_this, XincoDBManager DBM,int userID) throws XincoException { int i=0; try { Statement stmt; fillXincoCoreNodes(DBM); fillXincoCoreData(DBM); for (i=0;i<getXinco_core_nodes().size();i++) { ((XincoCoreNodeServer)getXinco_core_nodes().elementAt(i)) .deleteFromDB(true, DBM,userID); } for (i=0;i<getXinco_core_data().size();i++) { XincoIndexer.removeXincoCoreData([...]); XincoCoreDataServer.removeFromDB([...]); [...] } if (delete_this) { XincoCoreAuditServer audit= new XincoCoreAuditServer(); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_ace WHERE xinco_core_node_id=" + getId()); stmt.close(); audit.updateAuditTrail("xinco_core_node",new String [] {"id ="+getId()}, DBM,"audit.general.delete",userID); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_node WHERE id=" + getId()); stmt.close(); } DBM.con.commit(); } catch (Exception e) { [...] } }

database operations2

2 tables

14 database operations

2 UPDATE, 4 SELECT, 2 INSERT, 6 DELETE

Page 10: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example: com.bluecubs.xinco. core.server.XincoCoreNodeServer.deleteFromDB

24 attributes with constraints

9 REFERENTIAL INTEGRITY

12 NOT NULL ATTRIBUTES

4 VARCHAR LIMITS

2 UNIQUE ATTRIBUTES

public void deleteFromDB(boolean delete_this, XincoDBManager DBM,int userID) throws XincoException { int i=0; try { Statement stmt; fillXincoCoreNodes(DBM); fillXincoCoreData(DBM); for (i=0;i<getXinco_core_nodes().size();i++) { ((XincoCoreNodeServer)getXinco_core_nodes().elementAt(i)) .deleteFromDB(true, DBM,userID); } for (i=0;i<getXinco_core_data().size();i++) { XincoIndexer.removeXincoCoreData([...]); XincoCoreDataServer.removeFromDB([...]); [...] } if (delete_this) { XincoCoreAuditServer audit= new XincoCoreAuditServer(); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_ace WHERE xinco_core_node_id=" + getId()); stmt.close(); audit.updateAuditTrail("xinco_core_node",new String [] {"id ="+getId()}, DBM,"audit.general.delete",userID); stmt = DBM.con.createStatement(); stmt.executeUpdate("DELETE FROM xinco_core_node WHERE id=" + getId()); stmt.close(); } DBM.con.commit(); } catch (Exception e) { [...] } }

Page 11: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

DBSCRIBE

*Image from: https://utopiaordystopia.com/2013/12/29/preparing-for-a-new-dark-age/monk-scribe/

Page 12: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Motivation

1. Understanding DB usages and schema constraints is crucial to understand how features are implemented

2. Manually documenting/investigating DB usages is time consuming

3. Less information about the DB can be inferred from source code methods at higher levels of the call-chains

Page 13: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

DBScribe

1. Updated documentation at method-level

3. Textual description of db-usages and related constraints

3. Local and delegated db operations

4. Automatic documentation for different layers in a DCA

5. Combines static-analysis and summarization techniques

Page 14: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

DBScribe

Source Code

2. Partial call graph extraction

4. DB usages and and constraints

propagation

1. SQL queries/statements detection

3. DB schema constraints extraction

5. HTML description generation

Templates

DB

Page 15: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

1. SQL queries/statements detection

public CourseSchedule(int offerID){ try{

Connection conn = Database.getConnection(); String selectpart = "Select *”; String fromPart = " FROM courseschedule” String wherePart =" WHERE offerID= ?”; String scheduleSelect = select part + fromPart + wherePart; […] PreparedStatement statement = conn.prepareStatement(scheduleSelect);

[…] }catch(SQLException e){ System.out.println("Error retrieving schedule”);

System.out.println(e.getMessage()); e.printStackTrace();

} }

DBScribe finds API calls that execute SQL-statements, and the corresponding SQL literals

VariablesMap

SQL-related calls

Page 16: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

1. SQL queries/statements detection

public CourseSchedule(int offerID){ try{

Connection conn = Database.getConnection(); String selectpart = "Select *”; String fromPart = " FROM courseschedule” String wherePart =" WHERE offerID= ?”; String scheduleSelect = select part + fromPart + wherePart; […] PreparedStatement statement = conn.prepareStatement(scheduleSelect);

[…] }catch(SQLException e){ System.out.println("Error retrieving schedule”);

System.out.println(e.getMessage()); e.printStackTrace();

} }

DBScribe finds API calls that execute SQL-statements, and the corresponding SQL literals

selectpart -> “Select *”

VariablesMap

SQL-related calls

Page 17: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

1. SQL queries/statements detection

public CourseSchedule(int offerID){ try{

Connection conn = Database.getConnection(); String selectpart = "Select *”; String fromPart = " FROM courseschedule” String wherePart =" WHERE offerID= ?”; String scheduleSelect = select part + fromPart + wherePart; […] PreparedStatement statement = conn.prepareStatement(scheduleSelect);

[…] }catch(SQLException e){ System.out.println("Error retrieving schedule”);

System.out.println(e.getMessage()); e.printStackTrace();

} }

DBScribe finds API calls that execute SQL-statements, and the corresponding SQL literals

selectpart -> “Select *”

fromPart -> “ FROM courseschedule”

VariablesMap

SQL-related calls

Page 18: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

1. SQL queries/statements detection

public CourseSchedule(int offerID){ try{

Connection conn = Database.getConnection(); String selectpart = "Select *”; String fromPart = " FROM courseschedule” String wherePart =" WHERE offerID= ?”; String scheduleSelect = select part + fromPart + wherePart; […] PreparedStatement statement = conn.prepareStatement(scheduleSelect);

[…] }catch(SQLException e){ System.out.println("Error retrieving schedule”);

System.out.println(e.getMessage()); e.printStackTrace();

} }

DBScribe finds API calls that execute SQL-statements, and the corresponding SQL literals

selectpart -> “Select *”

fromPart -> “ FROM courseschedule”

wherePart -> “ WHERE offerID= ?”

VariablesMap

SQL-related calls

Page 19: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

1. SQL queries/statements detection

public CourseSchedule(int offerID){ try{

Connection conn = Database.getConnection(); String selectpart = "Select *”; String fromPart = " FROM courseschedule” String wherePart =" WHERE offerID= ?”; String scheduleSelect = select part + fromPart + wherePart; […] PreparedStatement statement = conn.prepareStatement(scheduleSelect);

[…] }catch(SQLException e){ System.out.println("Error retrieving schedule”);

System.out.println(e.getMessage()); e.printStackTrace();

} }

DBScribe finds API calls that execute SQL-statements, and the corresponding SQL literals

selectpart -> “Select *”

fromPart -> “ FROM courseschedule”

wherePart -> “ WHERE offerID= ?”

scheduleSelect -> “Select * FROM course schedule WHERE offerID= ?”

VariablesMap

SQL-related calls

Page 20: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

1. SQL queries/statements detection

public CourseSchedule(int offerID){ try{

Connection conn = Database.getConnection(); String selectpart = "Select *”; String fromPart = " FROM courseschedule” String wherePart =" WHERE offerID= ?”; String scheduleSelect = select part + fromPart + wherePart; […] PreparedStatement statement = conn.prepareStatement(scheduleSelect);

[…] }catch(SQLException e){ System.out.println("Error retrieving schedule”);

System.out.println(e.getMessage()); e.printStackTrace();

} }

DBScribe finds API calls that execute SQL-statements, and the corresponding SQL literals

selectpart -> “Select *”

fromPart -> “ FROM courseschedule”

wherePart -> “ WHERE offerID= ?”

scheduleSelect -> “Select * FROM course schedule WHERE offerID= ?”

VariablesMap

SQL-related callsSelect * FROM course schedule WHERE offerID= ?

Page 21: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

1. SQL queries/statements detection

SQL-related calls in method mSelect * FROM course schedule WHERE offerID= ?

INSERT INTO investment VALUES (ssn,capitalGains,capitalLosses, stockDividend)

http://jsqlparser.sourceforge.net/

< literal1, operation-type1, tables1, fields1>..

< literaln, operation-typen, tablesn, fieldsn>

Page 22: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

21 3

4

6

8

5

7

12

9

11

33

10

13

M={1,2,3}

Page 23: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

21 3

4

6

8

5

7

12

9

11

33

10

13

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

M={1,2,3}

Call chains:

4 -> 1

Page 24: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

21 3

4

6

8

5

7

12

9

11

33

10

13

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

M={1,2,3}

Call chains:

4 -> 1 5 -> 1

Page 25: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

21 3

4

6

8

5

7

12

9

11

33

10

13

M={1,2,3}

Call chains:

6 -> 4 -> 1 5 -> 1

Page 26: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

21 3

4

6

8

5

7

12

9

11

33

10

13

M={1,2,3}

Call chains:

8-> 6 -> 4 -> 1 5 -> 1

Page 27: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

M={1,2,3} 21 3

4

6

8

5

7

12

9

11

33

10

13

Call chains:

12 -> 8-> 6 -> 4 -> 1 5 -> 1

Page 28: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

21 3

4

6

8

5

7

12

9

11

33

10

13

M={1,2,3}

Call chains:

12 -> 8-> 6 -> 4 -> 1 7 -> 5 -> 1

Page 29: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

2. Partial call graph extraction

21 3

4

6

8

5

7

12

9

11

33

10

13

12 -> 8-> 6 -> 4 -> 1 11 -> 7 -> 5 -> 1

M={1,2,3}

Call chains:

Given a set of methods M invoking SQL statements/queries, DBScribe finds the set of call-chains that end at any method in M, based on the callers sets

Page 30: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

3. DB schema constraints extraction

< table1, attribute1, constraint1 >< table1, attribute2, constraint2 >

.

.< tablei, attributej, constraintk >

MASTER SCHEMA

• Auto-numeric columns • Non-null columns • Foreign keys • Varchar limits • Columns that should contain unique values

Page 31: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

4. DB usages and constraints propagation

Given a set of constraints (C) and db operations (DBO) invoked by each method, DBScribe propagates (iteratively) them through the call chains, from the bottom

1

2

3

4

5

6 7{C2,DBO2}

{C1,DBO1}

{C3,DBO3}

{}

{}

{} {}

Page 32: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

4. DB usages and constraints propagation

1

2

3

4

5

6 7{C2,DBO2}

Level 0

{C1,DBO1}

{}

{}

{} {}

{C3,DBO3}

Given a set of constraints (C) and db operations (DBO) invoked by each method, DBScribe propagates (iteratively) them through the call chains, from the bottom

Page 33: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

4. DB usages and constraints propagation

1

2

3

4

5

6 7

{C1 U C2 U C3, DBO1 U DBO2 U DBO3}

{C2,DBO2}

Level 0 Level 1

{C1,DBO1}

{}

{}

{} {}

Given a set of constraints (C) and db operations (DBO) invoked by each method, DBScribe propagates (iteratively) them through the call chains, from the bottom

Page 34: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

4. DB usages and constraints propagation

1

2

3

4

5

6 7

{C1 U C2 U C3, DBO1 U DBO2 U DBO3}

{C2,DBO2}

Level 0 Level 1

{C2, DBO2}

{C1,DBO1}

{}

{} {}

Given a set of constraints (C) and db operations (DBO) invoked by each method, DBScribe propagates (iteratively) them through the call chains, from the bottom

Page 35: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

4. DB usages and constraints propagation

1

2

3

4

5

6 7

{C1 U C2 U C3, DBO1 U DBO2 U DBO3}

{C2,DBO2}

Level 0 Level 1

{C2, DBO2}

Level 2

{C1 U C2 U C3, DBO1 U DBO2 U DBO3}

{C1,DBO1}

Level 3

Given a set of constraints (C) and db operations (DBO) invoked by each method, DBScribe propagates (iteratively) them through the call chains, from the bottom

{C1 U C2 U C3, DBO1 U DBO2 U DBO3}

Page 36: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

{C1 U C2 U C3, DBO1 U DBO2 U DBO3}

5. HTML descriptions generation

1

2

3

4

m

.

.

.

{C2,DBO2}

{C1,DBO1} Description generation

Description generation

Description generation

Description generation

Description generation

.

.

.

.

.

Page 37: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example

Page 38: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example

Page 39: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example

Page 40: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example

Page 41: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example

Page 42: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

{C1 U C2 U C3, DBO1 U DBO2 U DBO3}

5. HTML descriptions generation

1

2

3

4

m

.

.

.

{C2,DBO2}

{C1,DBO1} Description generation

Description generation

Description generation

Description generation

Description generation

5. HTML description generation

.

.

.

.

.

Page 43: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Example

Page 44: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Limitations

- Current implementation supports MySQL Server, JDBC, and Hibernate

- Call graph extraction is path insensitive (over-approximation)

- No inter-procedural analysis for strings concatenation/replacement in SQL literals

Page 45: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

EVALUATION

*Image from https://en.wikipedia.org/wiki/Cuneiform_script

Page 46: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Empirical Study

5+2Systems

52 Participants

2 Original developers

Page 47: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Empirical Study

5+2Systems

52 Participants

2 Original developers

1. Quality of the descriptions: completeness, conciseness, expressiveness

2. Usefulness and user preferences

3. Industrial applicability

Page 48: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Quality of the descriptions

OS systems DBScribe

Descriptions (method level)

Participants

30 randomly selected methods and

their descriptions (6 per system)

Participant vs DBScribe • Completeness • Conciseness • Expressiveness • User preferences • Usefulness

6 methods per participant

Page 49: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

66%Completeness

Does not miss any important info

29%Misses some important info

5%Misses most important info

71%Conciseness

Contains no redundant info

25%Contains some redundant info

4%Contains a lot of redundant info

Quality of the descriptions

Page 50: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

77%Expressiveness

Is easy to read

19%Is somewhat readable

4%Is hard to read/understand

Quality of the descriptions

Page 51: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Usefulness

48/52Useful for understanding the database usages in source code methods

Incremental change21

101015Bugs

fixing

Maintenance

Others (e.g. test cases design)

Page 52: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Industrial applicability

DBScribe

HTML reports

Original developers/ maintainers

• Completeness • Conciseness • Expressiveness • User preferences • Usefulness

2 industrial systems

Page 53: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Industrial applicability

“Based on the descriptions you can be aware all dependencies a table could have. It would let you estimate in a better way the impact due to future changes.”

“It helps you create a quick vision of the system with the basic method and code structure without looking at actual source code”

DBScribe is useful for incremental change and maintenance

Page 54: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

Industrial applicability

“The link system for call-chains works only in one way, one could get lost navigating a complex system […] . A navigation tree might be useful in this case.”

“you should extend the approach to include JPA”, “it would be better to have it in the IDE, something like right click->generate”.

Feedback from developers

Page 55: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

SUMMARY

Page 56: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,
Page 57: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,
Page 58: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,
Page 59: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,
Page 60: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,

THANKS !!

http://www.cs.wm.edu/semeru/data/ISSTA16-DBScribe/

Page 61: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,
Page 62: DOCUMENTING DATABASE USAGES AND …denys/pubs/talks/ISSTA16-DBScribe.pdfDOCUMENTING DATABASE USAGES AND SCHEMA CONSTRAINTS IN DATABASE-CENTRIC APPLICATIONS Mario Linares-Vásquez,