Mining Source Code for Structural Regularities

Angela Lozano, Andy Kellens, Kim Mens, Gabriela Arevalo

    Research output: Chapter in Book/Report/Conference proceedingConference paper

    9 Citations (Scopus)

    Abstract

    During software development, design rules and con- tracts in the source code are often encoded through regularities, such as API usage protocols, coding idioms and naming conventions. The structural regularities that govern a program can aid in comprehension and maintenance of the application, but are often implicit or undocumented. Tool support for extracting these regularities from the source code can provide developers useful insights. But building such tool support is not trivial, in particular, because the informal nature of regularities results in frequent deviations and exceptions to these regularities.
    We propose an automated approach, based on association rule mining, to discover the structural regularities that govern the source code of a software system. We chose this technique because of its resilience to exceptions. In general, tool support for mining regularities tends to discover a huge amount of rules, making interpretation of the results hard and time-consuming. To ease the interpretation, we reduce the results to a minimal canonical form, and group them to obtain a more rational description of the discovered regularities. As an initial feasibility study of our approach, we applied it on two open-source systems, namely IntensiVE (Smalltalk) and FreeCol (Java).
    Original languageEnglish
    Title of host publicationProceedings of the Working Conference on Reverse Engineering (WCRE)
    Pages22-31
    Number of pages10
    Publication statusPublished - 2010
    EventUnknown -
    Duration: 1 Jan 2010 → …

    Conference

    ConferenceUnknown
    Period1/01/10 → …

    Keywords

    • Regularities
    • Software mining

    Fingerprint

    Dive into the research topics of 'Mining Source Code for Structural Regularities'. Together they form a unique fingerprint.

    Cite this