Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
The craft of Prolog
Symbolic model checking: 1020 states and beyond
Information and Computation - Special issue: Selections from 1990 IEEE symposium on logic in computer science
A memory-based approach to recognizing programming plans
Communications of the ACM
Monitoring compliance of a software system with its high-level design models
Proceedings of the 18th international conference on Software engineering
Understanding natural programs using proper decomposition
ICSE '91 Proceedings of the 13th international conference on Software engineering
A relational approach to support software architecture analysis
Software—Practice & Experience
A C++ Data Model Supporting Reachability Analysis and Dead Code Detection
IEEE Transactions on Software Engineering
Pattern-based reverse-engineering of design components
Proceedings of the 21st international conference on Software engineering
Automating first-order relational logic
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
Automatic data structure choice in a language of very high level
Communications of the ACM
A relational model of data for large shared data banks
Communications of the ACM
Alloy: a lightweight object modelling notation
ACM Transactions on Software Engineering and Methodology (TOSEM)
Mysql Reference Manual
Universality of data retrieval languages
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Towards pattern-based design recovery
Proceedings of the 24th International Conference on Software Engineering
Knowledge-Based Program Analysis
IEEE Software
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
Software Reflexion Models: Bridging the Gap between Design and Implementation
IEEE Transactions on Software Engineering
Implementation of Relational Algebra Using Binary Decision Diagrams
ReIMICS '01 Revised Papers from the 6th International Conference and 1st Workshop of COST Action 274 TARSKI on Relational Methods in Computer Science
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Assessing Architectural Complexity
CSMR '98 Proceedings of the 2nd Euromicro Conference on Software Maintenance and Reengineering ( CSMR'98)
Querying as an Enabling Technology in Software Reengineering
CSMR '99 Proceedings of the Third European Conference on Software Maintenance and Reengineering
Declaratively Codifying Software Architectures Using Virtual Software Classifications
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
Automatic Detection of Design Problems in Object-Oriented Reengineering
TOOLS '99 Proceedings of the Technology of Object-Oriented Languages and Systems
Design Recovery by Automated Search for Structural Design Patterns in Object-Oriented Software
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
Structural Manipulations of Software Architecture Using Tarski Relational Algebra
WCRE '98 Proceedings of the Working Conference on Reverse Engineering (WCRE'98)
Identifying Similar Code with Program Dependence Graphs
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Object Oriented Design Pattern Inference
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Software Architecture Transformations
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
CrocoPat: Efficient Pattern Analysis in Object-Oriented Programs
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Design Pattern Recovery in Object-Oriented Software
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
Overview of relational programming
ACM SIGPLAN Notices
Efficient Relational Calculation for Software Analysis
IEEE Transactions on Software Engineering
Symbolic invariant verification for systems with dynamic structural adaptation
Proceedings of the 28th international conference on Software engineering
A software metric for coherence of class roles in Java programs
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Assisting potentially-repetitive small-scale changes via semi-automated heuristic search
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Global consistency checking of distributed models with TReMer+
Proceedings of the 30th international conference on Software engineering
Using JULE to generate a compliance test suite for the UML standard
Proceedings of the 30th international conference on Software engineering
Bounded Verification of Voting Software
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Client-based cohesion metrics for Java programs
Science of Computer Programming
Consistency Checking for Component Reuse in Open Systems
ICSR '09 Proceedings of the 11th International Conference on Software Reuse: Formal Foundations of Reuse and Domain Engineering
Dead or Alive: finding zombie features in the Linux kernel
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Excerpts from the TXL cookbook
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
EASY meta-programming with Rascal
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
Reverse engineering using graph queries
Graph transformations and model-driven engineering
An imperative extension to alloy
ABZ'10 Proceedings of the Second international conference on Abstract State Machines, Alloy, B and Z
Transactions on Computational Systems Biology XII
Scripting a refactoring with Rascal and Eclipse
Proceedings of the Fifth Workshop on Refactoring Tools
Program analysis scenarios in rascal
WRLA'12 Proceedings of the 9th international conference on Rewriting Logic and Its Applications
Hi-index | 0.00 |
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.