|
ABSTRACT
Many structural analyses of software systems are naturally formalized as relational queries, for example, the detection of design patterns, patterns of problematic design, code clones, dead code, and differences between the as-built and the as-designed architecture. This paper describes CrocoPat, an application-independent tool for relational programming. Through its efficiency and its expressive language, CrocoPat enables practically important analyses of real-world software systems that are not possible with other graph analysis tools, in particular analyses that involve transitive closures and the detection of patterns in graphs. The language is easy to use, because it is based on the well-known first-order predicate logic. The tool is easy to integrate into other software systems, because it is a small command-line tool that uses a simple text format for input and output of relations.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
| |
2
|
|
 |
3
|
Basil Becker , Dirk Beyer , Holger Giese , Florian Klein , Daniela Schilling, Symbolic invariant verification for systems with dynamic structural adaptation, Proceeding of the 28th international conference on Software engineering, May 20-28, 2006, Shanghai, China
[doi> 10.1145/1134285.1134297]
|
| |
4
|
|
 |
5
|
Marc Berndl , Ondrej Lhoták , Feng Qian , Laurie Hendren , Navindra Umanee, Points-to analysis using BDDs, Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, June 09-11, 2003, San Diego, California, USA
|
| |
6
|
|
| |
7
|
D. Beyer and A. Noack. Crocopat 2.1 Introduction and reference manual. Technical Report CSD-04-1338, University of California, Berkeley, 2004.
|
| |
8
|
|
| |
9
|
|
| |
10
|
|
| |
11
|
|
| |
12
|
|
 |
13
|
|
| |
14
|
|
| |
15
|
|
| |
16
|
|
| |
17
|
|
| |
18
|
|
 |
19
|
|
 |
20
|
|
| |
21
|
|
 |
22
|
Rudolf K. Keller , Reinhard Schauer , Sébastien Robitaille , Patrick Pagé, Pattern-based reverse-engineering of design components, Proceedings of the 21st international conference on Software engineering, p.226-235, May 16-22, 1999, Los Angeles, California, United States
[doi> 10.1145/302405.302622]
|
| |
23
|
|
| |
24
|
|
| |
25
|
|
 |
26
|
|
| |
27
|
A. O. Mendelzon and J. Sametinger. Reverse engineering by visualizing and querying. Software -- Concepts and Tools, 16(4):170--182, 1995.
|
| |
28
|
|
| |
29
|
|
 |
30
|
Jörg Niere , Wilhelm Schäfer , Jörg P. Wadsack , Lothar Wendehals , Jim Welsh, Towards pattern-based design recovery, Proceedings of the 24th International Conference on Software Engineering, May 19-25, 2002, Orlando, Florida
[doi> 10.1145/581339.581382]
|
| |
31
|
|
 |
32
|
|
| |
33
|
|
 |
34
|
|
| |
35
|
|
| |
36
|
F. Shull, W. L. Melo, and V. R. Basili. An inductive method for discovering design patterns from object-oriented software systems. Technical Report CS-TR-3597, University of Maryland, 1996.
|
| |
37
|
Swedish Institute of Computer Science. Quintus Prolog User's Manual, 2003.
|
| |
38
|
|
| |
39
|
|
| |
40
|
K. Wong. Rigi User's Manual, Version 5.4.4, 1998.
|
INDEX TERMS
Primary Classification:
D.
Software
D.1
PROGRAMMING TECHNIQUES
D.1.6
Logic Programming
Additional Classification:
D.
Software
D.2
SOFTWARE ENGINEERING
D.2.11
Software Architectures
Subjects:
Data abstraction
D.2.13
Reusable Software
Subjects:
Reusable libraries
D.2.7
Distribution, Maintenance, and Enhancement
Subjects:
Restructuring, reverse engineering, and reengineering
E.
Data
E.1
DATA STRUCTURES
Subjects:
Graphs and networks
G.
Mathematics of Computing
G.2
DISCRETE MATHEMATICS
G.2.2
Graph Theory
Subjects:
Graph algorithms
G.4
MATHEMATICAL SOFTWARE
Subjects:
Efficiency
General Terms:
Algorithms,
Design,
Languages
Keywords:
BDD,
graph models,
pattern matching,
predicate logic,
relational algebra,
software analysis,
transitive closure
|