Intention-based diagnosis of errors in novice programs
Intention-based diagnosis of errors in novice programs
The programmer's apprentice
Automated program recognition: a feasibility demonstration
Artificial Intelligence
An Algorithm for Parsing Flow Graphs
An Algorithm for Parsing Flow Graphs
A procedure and tools for transition engineering
SDE 4 Proceedings of the fourth ACM SIGSOFT symposium on Software development environments
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program understanding and the concept assignment problem
Communications of the ACM
Reverse engineering to the architectural level
Proceedings of the 17th international conference on Software engineering
A Knowledge-Based Approach to the Analysis of Loops
IEEE Transactions on Software Engineering
Reverse engineering and system renovation—an annotated bibliography
ACM SIGSOFT Software Engineering Notes
Extracting Reusable Functions by Flow Graph-Based Program Slicing
IEEE Transactions on Software Engineering
Understanding natural programs using proper decomposition
ICSE '91 Proceedings of the 13th international conference on Software engineering
Toward new techniques to assess the software implementation process
ICSE '91 Proceedings of the 13th international conference on Software engineering
The concept assignment problem in program understanding
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Program and interface slicing for reverse engineering
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Design Recovery for Distributed Systems
IEEE Transactions on Software Engineering
Recovering software architecture from multiple source code analyses
Proceedings of the 1998 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
IBM Systems Journal
Support of semantics recovery during code scavenging using repository classification
SSR '99 Proceedings of the 1999 symposium on Software reusability
Reverse engineering: a roadmap
Proceedings of the Conference on The Future of Software Engineering
Advances in software engineering
Browsing and searching source code of applications written using a GUI framework
Proceedings of the 24th International Conference on Software Engineering
An Approach for Recovering Distributed System Architectures
Automated Software Engineering
Knowledge Intensive Software Engineering Tools
IEEE Transactions on Knowledge and Data Engineering
From relational program dependencies to hypertextual access structures
Nordic Journal of Computing
An Experiment in Distributed Software Architecture Recovery
Proceedings of the Second International ESPRIT ARES Workshop on Development and Evolution of Software Architectures for Product Families
Transformation-Based Diagnosis of Student Programs for Programming Tutoring Systems
IEEE Transactions on Software Engineering
Design recovery of interactive graphical applications
Proceedings of the 25th International Conference on Software Engineering
Partial design recovery using dynamic programming
CASCON '94 Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research
Pattern matching for design concept localization
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Qualifying reusable functions using symbolic execution
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Recognizers for extracting architectural features from source code
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Feed-forward and recurrent neural networks for source code informal information analysis
Journal of Software Maintenance: Research and Practice
The development of a partial design recovery environment for legacy systems
CASCON '93 Proceedings of the 1993 conference of the Centre for Advanced Studies on Collaborative research: software engineering - Volume 1
CASCON '93 Proceedings of the 1993 conference of the Centre for Advanced Studies on Collaborative research: software engineering - Volume 1
An approach to program understanding by natural language understanding
Natural Language Engineering
Static analysis of students' Java programs
ACE '04 Proceedings of the Sixth Australasian Conference on Computing Education - Volume 30
Retargeting Sequential Image-Processing Programs for Data Parallel Execution
IEEE Transactions on Software Engineering
Relational programming with CrocoPat
Proceedings of the 28th international conference on Software engineering
Proceedings of the 5th international conference on Generative programming and component engineering
Identifying Crosscutting Concerns Using Fan-In Analysis
ACM Transactions on Software Engineering and Methodology (TOSEM)
Designing an understanding and debugging tool (UDT) for object-oriented programming language
AIKED'05 Proceedings of the 4th WSEAS International Conference on Artificial Intelligence, Knowledge Engineering Data Bases
Pattern-Driven Automatic Parallelization
Scientific Programming
Improving program comprehension by combining code understanding with comment understanding
Knowledge-Based Systems
AAAI'06 proceedings of the 21st national conference on Artificial intelligence - Volume 2
Automatic diagnosis of student programs in programming learning environments
IJCAI'99 Proceedings of the 16th international joint conference on Artificial intelligence - Volume 2
Knowledge-based code inspection with ICICLE
IAAI'92 Proceedings of the fourth conference on Innovative applications of artificial intelligence
A toolset for the reengineering of complex computer systems
ECBS'97 Proceedings of the 1997 international conference on Engineering of computer-based systems
A graph-based aspect interference detection approach for UML-based aspect-oriented models
Transactions on aspect-oriented software development VII
A graph-based aspect interference detection approach for UML-based aspect-oriented models
Transactions on aspect-oriented software development VII
Hi-index | 0.02 |
Psychological experiments have shown that programmers tend to use the same structure over and over. The authors call these commonly used programming structures 'cliches'. They describe a prototype, the Recognizer, that automatically finds all occurrences of a given set of cliches in a program and builds a hierarchical description of the program in terms of the cliches it finds. The key to the Recognizer's approach is a representation shift. Instead of looking for cliches directly in the source code, the Recognizer first translates the program into a language-independent, graphical representation called the Plan Calculus. The Plan Calculus is a program representation shared by all components of the Programmer's Apprentice, an intelligent programming system. Thus, although the authors have demonstrated the Recognizer only on small Common Lisp programs, the underlying technology is language-independent.