Micro patterns in Java']Java code

被引:61
|
作者
Gil, J [1 ]
Maman, I [1 ]
机构
[1] Technion Israel Inst Technol, Dept Comp Sci, IL-32000 Haifa, Israel
关键词
design; object-oriented programming; program analysis; design patterns; implementation patterns;
D O I
10.1145/1103845.1094819
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Micro patterns are similar to design patterns, except that micro patterns stand at a lower. closer to the implementation, level of abstraction. Micro patterns are also unique in that they are mechanically recognizable, since each such pattern can be expressed as a formal condition on the structure of a class. This paper presents a catalog of 27 micro-patterns defined on JAVA classes and interfaces. The catalog captures a wide spectrum of common programming practices, including a particular and (intentionally restricted) use of inheritance, immutability I data management and wrapping, restricted creation, and emulation of procedural-, modular-, and even functional- programming paradigms with object oriented constructs. Together, the patterns present a set of prototypes after which a large portion Of all JAVA classes and interfaces are modeled. We provide empirical indication that this portion is as high as 75%. A statistical analysis of occurrences of micro patterns in a large software corpus, spanning some 70,000 JAVA classes drawn from a rich set of application domains, shows, with high confidence level that the use of these patterns is not random. These results indicate consciousness and discernible design decisions, which are sustained in the software evolution. With high confidence level, we can also show that the use of these patterns is tied to the specification, or the purpose, that the software realizes. The traceability, abundance and the statistical significance of micro pattern occurrence raise the hope of using the classification of software into these patterns for a more founded appreciation of its design and code quality.
引用
收藏
页码:97 / 116
页数:20
相关论文
共 50 条
  • [1] Generating Java']Java code from design patterns formalized in BPSL
    Taibi, Toufik
    Mkadmi, Taieb
    [J]. 2006 INNOVATIONS IN INFORMATION TECHNOLOGY, 2006, : 351 - +
  • [2] Reverse engineering of design patterns from Java']Java source code
    Shi, Nija
    Olsson, Ronald A.
    [J]. ASE 2006: 21ST IEEE INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING, PROCEEDINGS, 2006, : 123 - 132
  • [3] Feature Space for Statistical Classification of Java']Java Source Code Patterns
    Mojzes, Matej
    Rost, Michal
    Smolka, Josef
    Virius, Miroslav
    [J]. 2014 15TH INTERNATIONAL CARPATHIAN CONTROL CONFERENCE (ICCC), 2014, : 357 - 361
  • [4] Java']Java code patterns for Petri net based behavioral models
    Hagge, N
    Wagner, B
    [J]. 2005 3RD IEEE INTERNATIONAL CONFERENCE ON INDUSTRIAL INFORMATICS (INDIN), 2005, : 450 - 455
  • [5] A Patterns based reverse engineering approach for Java']Java source code
    Couto, Rui
    Ribeiro, Antonio Nestor
    Campos, Jose Creissac
    [J]. PROCEEDINGS OF THE 2012 IEEE 35TH SOFTWARE ENGINEERING WORKSHOP (SEW 2012), 2012, : 140 - 147
  • [6] An Investigation of confusing code patterns in Java']JavaScript
    Torres, Adriano
    Oliveira, Caio
    Okimoto, Marcio
    Marcilio, Diego
    Queiroga, Pedro
    Castor, Fernando
    Bonifacio, Rodrigo
    Canedo, Edna Dias
    Ribeiro, Marcio
    Monteiro, Eduardo
    [J]. JOURNAL OF SYSTEMS AND SOFTWARE, 2023, 203
  • [7] Backporting Java']Java 5 Code
    Gutzmann, Tobias
    Steijger, Tamara
    [J]. 2009 NINTH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION, PROCEEDINGS, 2009, : 121 - 122
  • [8] Dynamic code repositioning for Java']Java
    Tanaka, S
    Yamada, T
    Shiraishi, S
    [J]. IEICE TRANSACTIONS ON INFORMATION AND SYSTEMS, 2004, E87D (07): : 1737 - 1742
  • [9] Automatic assessment of Java']Java code
    Insa, David
    Silva, Josep
    [J]. COMPUTER LANGUAGES SYSTEMS & STRUCTURES, 2018, 53 : 59 - 72
  • [10] Method Level Text Summarization for Java']Java Code using Nano-Patterns
    Rai, Sawan
    Gaikwad, Tejaswini
    Jain, Sparshi
    Gupta, Atul
    [J]. 2017 24TH ASIA-PACIFIC SOFTWARE ENGINEERING CONFERENCE (APSEC 2017), 2017, : 199 - 208