Mapping of Concepts in Program Comprehension (original) (raw)

An information retrieval approach to concept location in source code

2004

Abstract Concept location identifies parts of a software system that implement a specific concept that originates from the problem or the solution domain. Concept location is a very common software engineering activity that directly supports software maintenance and evolution tasks such as incremental change and reverse engineering. This work addresses the problem of concept location using an advanced information retrieval method, Latent Semantic Indexing (LSI).

The role of concepts in program comprehension

Proceedings 10th International Workshop on Program Comprehension, 2002

The paper presents an overview of the role of concepts in program comprehension. It discusses concept location, in which the implementation of a specific concept is located in the code. This process is very common and precedes a large proportion of code changes. The paper also discusses the process of learning about the domain from the code, which is a prerequisite of code reengineering. The paper notes the similarities and overlaps between program comprehension and human learning.

A Framework of Source Code Comprehension for Software Maintenance

International Journal of Computer Applications, 2014

In maintenance of object-oriented software, one of the most important concepts is inheritance, which organizes classes into a hierarchy. The presence of the inheritance increases the number of potential dependencies within a program. Moreover, the comprehension of an existing software system can consume half or more of the maintenance time. The relationships among packages, classes, access modifiers, inherited classes and methods can affect on modification of the software. So, the proposed system uses the concept-based approach, Formal Concept Analysis (FCA) in order to comprehend the overall system (software project), and graphically visualize the modifier-based dependencies in terms of packages, classes, methods and inheritance relationship. The proposed system focuses on the problem how to provide an understanding of the software. Static java source code is analyzed in this system.

Delving source code with formal concept analysis

Computer Languages, Systems & Structures, 2005

Getting an initial understanding of the structure of a software system, whether it is for software maintenance, evolution or reengineering purposes, is a nontrivial task. We propose a lightweight approach to delve a system's source code automatically and efficiently for relevant concepts of interest: what concerns are addressed in the code, what patterns, coding idioms and conventions have been adopted, and where and how are they implemented. We use formal concept analysis to do the actual source-code mining, and then filter, classify and combine the results to present them in a format that is more convenient to a software engineer. We applied a prototype tool that implements this approach to several small to medium-sized Smalltalk applications. For each of these, the tool uncovered several design pattern instances, coding and naming conventions, refactoring opportunities and important domain concepts. Although the tool and approach can still be improved in many ways, the tool does already provides useful results when trying to get an initial understanding of a system. The obtained results also illustrate the relevance and feasibility of using formal concept analysis as an efficient technique for source code mining.

Problem domain oriented approach for program comprehension

2012

This paper is concerned with an ontology driven approach for Program Comprehension that starts picking up concepts from the problem domain ontology, analyzing source code and, after locating problem concepts in the code, goes up and links them to the programming language ontology. Different location techniques are used to search for concepts embedded in comments, in the code (identifier names and execution traces), and in string-literals associated with I/O statements. The expected result is a mapping between problem domain concepts and code slices. This mapping can be visualized using graph-based approaches like, for instance, navigation facilities through a System Dependency Graph. The paper also describes a PCTool suite, Quixote, that implements the approach proposed.

An empirical study of the concept assignment problem

2007

Concept assignment involves identifying the parts of the source code associated with the implementation of a high-level concept, such as a functional requirement. Although concept assignment is at the root of a number of software engineering activities (e.g., reverse engineering, requirement traceability), we know relatively little about the characteristics of the code that different developers map to a concept. For example, for a given concept, how much do the mappings produced by different developers vary? We designed and conducted an empirical study of concept assignment. Our study resulted in the collection of three distinct mappings for 16 different concepts (for a total of 48 mappings), and produced by 23 distinct subjects. This report describes our experimental procedure and the data we collected.

From System Comprehension to Program Comprehension

2002

Program and system comprehension are vital and expensive parts of the software maintenance process. In this paper, we discuss the need for both perspectives and describe two methods that may be integrated to provide a smooth transition in understanding from the system level approach to the program level.