Information Technology Reference
In-Depth Information
conversion activities. The black-box approach is limited to the study of the
external interfaces of systems and activities of encapsulation (wrapping). In re-
verse engineering various software artifacts can be analysed. A software artifact
is any tangible product created during software development. Some artifacts
(e.g. use cases, class diagrams and other UML models, requirements and design
documents) are useful to describe functions, architecture and software design.
Others involve the development process itself, such as project plans, business
cases and risk assignment. The code, the released executable and the associated
documentation are artifact too. There are two different directions in program
comprehension research: the first strives for understanding the cognitive pro-
cesses that programmers use when they understand programs and use empirical
information to produce a variety of theories that provide explanations of how
programmers understand programs, and can provide advice on how program
comprehension tools and methods may be improved; the second aims at devel-
oping semi-automated tool support to improve program comprehension. Some
of the more prominent approaches include textual, lexical and syntactic analysis
(focus on the source code and its representations), execution and testing (based
on observing program behaviour, including actual execution and inspection walk-
throughs), graphic methods (including earlier approaches such as graphing the
control flow of the program, the data flow of the program, and producing the
program dependence graphs), domain knowledge based analysis (focus on re-
covering the domain semantics of programs by combining domain knowledge
representation and source code analysis). The problem of associating concepts
to code is not a problem amenable to be solved in its general formulation because
the human-oriented concepts are inherently ambiguous, and their recognition is
based on a priori knowledge of a particular domain. The problem can instead be
solved under specific constraints and limitations, such as limiting the range of
recognition at the algorithmic level [10]. A different approach is to understand
the code through the analysis of the documentation associated with it, with
text mining techniques that capture the concepts described in the documenta-
tion and connect them with the appropriate portions of code that implement
[2]. The approach in [2] represents various software artifacts, including source
code and documents as formal ontologies. The ontological reasoning services al-
low programmers not only to reason about properties of the software systems,
but also to actively acquire and construct new concepts based on their current
understanding; and introducing an ontology-based comprehension model and
a supporting comprehension methodologies that characterize program compre-
hension as an iterative process of concept recognition and relationship discovery.
Application developers often reuse code already developed for several reasons.
The most common situation is accessing libraries of reusable components or
putting them in the application framework. Unfortunately, many libraries and
frameworks are not very intuitive to use, and libraries often lack a comprehen-
sive API documentation and code examples that illustrate a particular feature
or functionality. It is therefore useful to provide advanced tools for code search
and suggestion. This issue is addressed generally representing code in a form
 
Search WWH ::




Custom Search