A heuristic for deriving loop functions
IEEE Transactions on Software Engineering
PROUST: Knowledge-Based Program Understanding
IEEE Transactions on Software Engineering
The Programmer's Apprentice: A Session with KBEmacs
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Learning to program = learning to construct mechanisms and explanations
Communications of the ACM
Algorithmics: theory & practice
Algorithmics: theory & practice
An introduction to Z and formal specifications
Software Engineering Journal - Special Section on Z
Structuring specifications in Z
Software Engineering Journal - Special Section on Z
Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
Identifying and Qualifying Reusable Software Components
Computer - Special issue on cryptography
An integrated approach to software engineering
An integrated approach to software engineering
Slice, chunk, and dataflow anomaly as datalog rules
Journal of Systems and Software
The Z notation: a reference manual
The Z notation: a reference manual
A pattern-driven approach to code analysis for reuse
A pattern-driven approach to code analysis for reuse
A method for documenting code components
Journal of Systems and Software
Understanding natural programs using proper decomposition
ICSE '91 Proceedings of the 13th international conference on Software engineering
Verification of Array, Record, and Pointer Operations in Pascal
ACM Transactions on Programming Languages and Systems (TOPLAS)
Cognitive strategies and looping constructs: an empirical study
Communications of the ACM
Communications of the ACM
The synthesis of loop predicates
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp
Automatic Program DeBugging for Intelligent Tutoring Systems
Automatic Program DeBugging for Intelligent Tutoring Systems
The Science of Programming
Princples of Computer Programming
Princples of Computer Programming
A Knowledge-Based Approach to Program Understanding
A Knowledge-Based Approach to Program Understanding
Artificial Intelligence
Software Maintenance Management
Software Maintenance Management
Knowledge-Based Program Analysis
IEEE Software
Recognizing a Program's Design: A Graph-Parsing Approach
IEEE Software
Documenting Programs Using a Library of Tree Structured Plans
ICSM '93 Proceedings of the Conference on Software Maintenance
Supporting program comprehension using semantic and structural information
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Identifying Objects in Procedural Programs Using Clustering Neural Networks
Automated Software Engineering
An approach to program understanding by natural language understanding
Natural Language Engineering
Symbolic method of verification of definite iterations over altered data structures
Programming and Computing Software
A Method for Computing the Number of Iterations in Data Dependent Loops
Real-Time Systems
Verification of finite iterations over collections of variable data structures
Cybernetics and Systems Analysis
Identifying hotspots in a program for data parallel architecture: an early experience
Proceedings of the 5th India Software Engineering Conference
Hi-index | 0.00 |
This paper presents a knowledge-based analysis approach that generates first order predicate logic annotations of loops. A classification of loops according to their complexity levels is presented. Based on this taxonomy, variations on the basic analysis approach that best fit each of the different classes are described. In general, mechanical annotation of loops is performed by first decomposing them using data flow analysis. This decomposition encapsulates closely related statements in events, that can be analyzed individually. Specifications of the resulting loop events are then obtained by utilizing patterns, called plans, stored in a knowledge base. Finally, a consistent and rigorous functional abstraction of the whole loop is synthesized from the specifications of its individual events. To test the analysis techniques and to assess their effectiveness, a case study was performed on an existing program of reasonable size. Results concerning the analyzed loops and the plans designed for them are given.