1 / 17

Case Studies of Accessibility Excessiveness Analysis for Java Programs

Case Studies of Accessibility Excessiveness Analysis for Java Programs. Dotri Quoc Inoue Laboratory. Research Problem(1 ) Access Modifier in Java. CLASS1. p ublic int [] A ; protected int c ; ….. public void sort() { … } (default) int binarySearch ( int value) { … }

sadie
Download Presentation

Case Studies of Accessibility Excessiveness Analysis for Java Programs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Case Studies of Accessibility Excessiveness Analysis for Java Programs DotriQuoc Inoue Laboratory

  2. Research Problem(1)Access Modifier in Java CLASS1 publicint[] A ; • protectedint c ; ….. • public void sort() { … } • (default)intbinarySearch(int value) { … } private void process(){ … } field declaration Access Modifier method declaration

  3. Research Problem(2) • Access Modifier of fields/methods in Java : control the access of other classesto that field/method.

  4. 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

  5. Example of bad access modifier Declaration Class X Public method B Public method A Current program OK Initialization Main job Invoke Other objects Future modification Directly invoke B

  6. 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 Actual use

  7. 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

  8. Approach to AE Analysis(1)AE MAP Unused AE Id AE Id of Excessive fields/methods Syntax Error No Discrepancy

  9. 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 • MASU : Platform for Metrics measurement but is useful as a Java program analysis framework Static source code Analysis is required Employing MASU MASU - http://sourceforge.net/projects/masu/

  10. Architecture of ModiChecker ModiChecker Input MASU Source Code Analyzer AST Database Source Code Extraction of access modifier declaration Extraction of method/field usage Required Library(.jar files) Detection of declaration excessiveness Report of AE Id for each method/field

  11. 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) • 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)

  12. EXPERIMENT RESULT - FIELDS

  13. EXPERIMENT RESULT - METHODS

  14. 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)

  15. 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

  16. Conclusion AND FUTURE WORK • Conclusion • Analysis method named AE for each field/method • ModiChecker : report AE of each field/method • Experiment on some softwaresystems • Future work • ModiCheckerfor other Java systems and other programming language system(C# , C++…)

  17. Thank you for your attention

More Related