Graph-Based Algorithms for Boolean Function Manipulation
IEEE Transactions on Computers
The craft of Prolog
Efficient implementation of a BDD package
DAC '90 Proceedings of the 27th ACM/IEEE Design Automation Conference
Symbolic Boolean manipulation with ordered binary-decision diagrams
ACM Computing Surveys (CSUR)
Symbolic model checking: 1020 states and beyond
Information and Computation - Special issue: Selections from 1990 IEEE symposium on logic in computer science
BDD variable ordering for interacting finite state machines
DAC '94 Proceedings of the 31st annual Design Automation Conference
Monitoring compliance of a software system with its high-level design models
Proceedings of the 18th international conference on Software engineering
Object-oriented metrics: measures of complexity
Object-oriented metrics: measures of complexity
Improving the Variable Ordering of OBDDs Is NP-Complete
IEEE Transactions on Computers
Software metrics (2nd ed.): a rigorous and practical approach
Software metrics (2nd ed.): a rigorous and practical approach
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
Computing with graphs and graph transformations
Software—Practice & Experience
Journal of the ACM (JACM)
Agile Software Development: Principles, Patterns, and Practices
Agile Software Development: Principles, Patterns, and Practices
Mysql Reference Manual
Programming in PROLOG
Universality of data retrieval languages
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Computers and Intractability: A Guide to the Theory of NP-Completeness
Computers and Intractability: A Guide to the Theory of NP-Completeness
Towards pattern-based design recovery
Proceedings of the 24th International Conference on Software Engineering
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)
Using Graph Patterns to Extract Scenarios
IWPC '02 Proceedings of the 10th International Workshop on Program Comprehension
Automatic Design Pattern Detection
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
An Introduction to Database Systems
An Introduction to Database Systems
Wins and Losses of Algebraic Transformations of Software Architectures
Proceedings of the 16th IEEE international conference on Automated software engineering
A Consumer Report on BDD Packages
SBCCI '03 Proceedings of the 16th symposium on Integrated circuits and systems design
An analysis and visualization for revealing object sharing
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Symbolic invariant verification for systems with dynamic structural adaptation
Proceedings of the 28th international conference on Software engineering
Relational programming with CrocoPat
Proceedings of the 28th international conference on Software engineering
Defining and continuous checking of structural program dependencies
Proceedings of the 30th international conference on Software engineering
Impact analysis of database schema changes
Proceedings of the 30th international conference on Software engineering
Analyzing the evolution of eclipse plugins
Proceedings of the 2008 international working conference on Mining software repositories
Operational Semantics for Declarative Networking
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
DeFacto: Language-Parametric Fact Extraction from Source Code
Software Language Engineering
Design pattern recovery through visual language parsing and source code analysis
Journal of Systems and Software
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
An Ahead-of-time Yet Context-Sensitive Points-to Analysis for Java
Electronic Notes in Theoretical Computer Science (ENTCS)
Formal specification of the variants and behavioural features of design patterns
Journal of Systems and Software
Improving design-pattern identification: a new approach and an exploratory study
Software Quality Control
Science of Computer Programming
A towards an extended relational algebra for software architecture
ACM SIGSOFT Software Engineering Notes
Runtime checking for program verification
RV'07 Proceedings of the 7th international conference on Runtime verification
Multi-objective problems in terms of relational algebra
RelMiCS'08/AKA'08 Proceedings of the 10th international conference on Relational and kleene algebra methods in computer science, and 5th international conference on Applications of kleene algebra
A domain analysis to specify design defects and generate detection algorithms
FASE'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Fundamental approaches to software engineering
Redocumentation of a legacy banking system: an experience report
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
EASY meta-programming with Rascal
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
Some issues in the 'archaeology' of software evolution
GTTSE'09 Proceedings of the 3rd international summer school conference on Generative and transformational techniques in software engineering III
Magic for the masses: safer high-level low-level programming through customizable static analyses
Proceedings of the 1st workshop on Modularity in systems software
Reverse engineering using graph queries
Graph transformations and model-driven engineering
Towards architectural information in implementation (NIER track)
Proceedings of the 33rd International Conference on Software Engineering
Controversy Corner: An empirical study of software architectures' effect on product quality
Journal of Systems and Software
Assessing architectural evolution: a case study
Empirical Software Engineering
A relationship-based approach to model integration
Innovations in Systems and Software Engineering
QoSA'10 Proceedings of the 6th international conference on Quality of Software Architectures: research into Practice - Reality and Gaps
A relation-algebraic view on evolutionary algorithms for some graph problems
EvoCOP'06 Proceedings of the 6th European conference on Evolutionary Computation in Combinatorial Optimization
Specifying and detecting meaningful changes in programs
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Modeling the supervisory control theory with alloy
ABZ'12 Proceedings of the Third international conference on Abstract State Machines, Alloy, B, VDM, and Z
On the existence of high-impact refactoring opportunities in programs
ACSC '12 Proceedings of the Thirty-fifth Australasian Computer Science Conference - Volume 122
Scalable motif detection and aggregation
ADC '12 Proceedings of the Twenty-Third Australasian Database Conference - Volume 124
Hi-index | 0.00 |
Calculating with graphs and relations has many applications in the analysis of software systems, for example, the detection of design patterns or patterns of problematic design and the computation of design metrics. These applications require an expressive query language, in particular, for the detection of graph patterns, and an efficient evaluation of the queries even for large graphs. In this paper, we introduce RML, a simple language for querying and manipulating relations based on predicate calculus, and CrocoPat, an interpreter for RML programs. RML is general because it enables the manipulation not only of graphs (i.e., binary relations), but of relations of arbitrary arity. CrocoPat executes RML programs efficiently because it internally represents relations as binary decision diagrams, a data structure that is well-known as a compact representation of large relations in computer-aided verification. We evaluate RML by giving example programs for several software analyses and CrocoPat by comparing its performance with calculators for binary relations, a Prolog system, and a relational database management system.