Case Studies of Accessibility Excessiveness Analysis for

Download Report

Transcript Case Studies of Accessibility Excessiveness Analysis for

CASE STUDIES OF ACCESSIBILITY
EXCESSIVENESS ANALYSIS FOR JAVA
PROGRAMS
Dotri Quoc
Inoue Laboratory
RESEARCH PROBLEM(1)
ACCESS MODIFIER IN JAVA
CLASS1
Access
Modifier
public int[] A ;
protected int c ;
…..
public void sort()
{
…
}
(default) int binarySearch(int value)
{
…
}
private void process(){
…
}
field
declaration
method
declaration
RESEARCH PROBLEM(2)

Access Modifier of fields/methods in Java :
control the access of other classes to that
field/method.
Access
Modifier
Same
Class
Package
Subclass
Any Class
Public
OK
OK
OK
OK
Protected
OK
OK
OK
-
Default
OK
OK
-
-
Private
OK
-
-
3
RESEARCH PROBLEM(3)
In Java, inexperienced/careless developers often
set all of the access modifier public or default(no
declaration)
 The fields/methods which should be hidden are
not hidden
 Bugs in latter development/maintenance phase

4
EXAMPLE OF BAD ACCESS MODIFIER
DECLARATION
Class X
Current
program
O
K
Initialization
Future
modification
Public method B
Public method A
Invoke
Main job
Other
objects
Directly invoke B
5
AE : ACCESSIBILITY EXCESSIVENESS(1/2)
AE : Discrepancy between declared access modifier and
actual usage
 An AE could cause unwilling access to method/field
 AE could be used as an indicator of immaturity of
developer

Declaration
AE
Access
Modifier
Same
Class
Package
Subclass
Any Class
Public
OK
OK
OK
OK
Protected
OK
OK
OK
-
Default
OK
OK
-
-
Private
OK
-
-
-
Actual use
6
AE : ACCESSIBILITY EXCESSIVENESS(2/2)

Acquirement of AE for each field/method

AE causes bug in latter development and
maintenance phase
AE analysis tool : ModiChecker
7
APPROACH TO AE ANALYSIS(1)
AE MAP
ActualError
Usage
Syntax
AE Id
AE Id of Excessive
fields/methods
Unused
Public
Protected
Default
Private
Unused
okpub0
pub1
pub2
pub3
pub4
-
ok-pro0
pro1
pro2
pro3
Default
-
-
ok-def0
def1
def2
Private
-
-
-
ok-pri0
pri1
Declaration
Public
Protected
No
Discrepancy
8
APPROACH TO AE ANALYSIS(2)
STATIC SOURCE CODE ANALYSIS
 Requirement
Information of each field/method’s access modifier declaration
 Actual Usage of each field/method

Static source code Analysis is required
Employing MASU
 MASU
: Platform for Metrics measurement but
is useful as a Java program analysis framework
MASU - http://sourceforge.net/projects/masu/
9
ARCHITECTURE OF MODICHECKER
Input
Source
Code
Required
Library(.jar
files)
ModiChecker
MASU
Source Code
Analyzer
AST Database
Extraction of access
modifier declaration
Extraction of
method/field usage
Detection of declaration
excessiveness
Report of AE Id for each
method/field
10
OVERVIEW OF EXPERIMENT(1/2)

Objectives of experiment
Validation of our approach
 Quantitative analysis of AE Id in some software systems


Reasons for excessive/unused fields/methods
(found by interviewing developers)
1.
2.
3.

Reason 1 : Set for future use
Reason 2 : Created by other program(automatic code generators or
refactoring tools…) or accessed by other programs(Java bean)
Reason 3 : Carelessness and immaturity
Target Software
 Industrial Software(341 Java files/ 64455 LOC)
11
EXPERIMENT RESULT - FIELDS
Actual
Usage
Public
Protected
Default
Private
Unused
0
59
936
33
-
0
9
18
0
Default
-
-
4
5
2
Private
-
-
-
1123
5
Declaration
Public
Protected
207
12
EXPERIMENT RESULT - METHODS
Actual
Usage
Public
Protected
Default
Private
Unused
14
23
190
1005
-
13
36
48
9
Default
-
-
0
3
0
Private
-
-
-
488
4
Declaration
Public
Protected
816
13
EXPERIMENT RESULT
Excessive fields : 1027
 Excessive methods : 512
 Unused methods : 1018
 Unused fields: 40




5 fields named serialVersionUID
Intentionally set for future use : 8
Actually unused : 28 (5 fields contain
potential bug)
14
DISCUSSION

Validation of ModiChecker output
Changed all of the excessive access modifier and
deleted some unused fields/methods
 Modified programs were compiled and executed
without any error


Developer should look for the detailed result and
make decision to change/delete the
unused/excessive fields/methods
15
CONCLUSION AND FUTURE WORK
 Conclusion
Analysis method named AE for each
field/method
 ModiChecker : report AE of each
field/method
 Experiment on some software systems

 Future

work
ModiChecker for other Java systems and
other programming language system(C# ,
C++…)
16
THANK YOU FOR YOUR ATTENTION
17