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