Plans in programming: definition, demonstration, and development
Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers
Cognitive processes in program comprehension
Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers
Comprehension strategies in programming
Empirical studies of programmers: second workshop
Knowledge exploited by experts during software system design
International Journal of Man-Machine Studies - What programmers know
Comprehension processes during large scale maintenance
ICSE '94 Proceedings of the 16th international conference on Software engineering
Identification of Dynamic Comprehension Processes During Large Scale Maintenance
IEEE Transactions on Software Engineering - Special issue: best papers of the 17th International Conference on Software Engineering (ICSE-17)
Proceedings of the 2002 ACM symposium on Applied computing
Toward A Constraint-Satisfaction Frameworkfor Evaluating Program-Understanding Algorithms
Automated Software Engineering
On Increasing Our Knowledge of Large-Scale Software Comprehension
Empirical Software Engineering
Organisational trails through software systems
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
On the Meaning of Computer Programs
CT '01 Proceedings of the 4th International Conference on Cognitive Technology: Instruments of Mind
Human cognition of complex thought patterns
Acta Cybernetica
An examination of software engineering work practices
CASCON '97 Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research
A multi-perspective software visualization environment
CASCON '00 Proceedings of the 2000 conference of the Centre for Advanced Studies on Collaborative research
On Integrating Visualization Techniques for Effective Software Exploration
INFOVIS '97 Proceedings of the 1997 IEEE Symposium on Information Visualization (InfoVis '97)
A comparison of methods for locating features in legacy software
Journal of Systems and Software
Understanding Service-Oriented Software
IEEE Software
Software Visualisation for Object-Oriented Program Comprehension
Proceedings of the 26th International Conference on Software Engineering
Hypertext support for the information needs of software maintainers
Journal of Software Maintenance and Evolution: Research and Practice
Towards understanding programs through wear-based filtering
SoftVis '05 Proceedings of the 2005 ACM symposium on Software visualization
On generating cognitive patterns of software comprehension
CASCON '05 Proceedings of the 2005 conference of the Centre for Advanced Studies on Collaborative research
The Structural Complexity of Software: An Experimental Test
IEEE Transactions on Software Engineering
Documenting software systems using types
Science of Computer Programming - Software analysis, evolution and re-engineering
Questions programmers ask during software evolution tasks
Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering
Industrial tools for the feature location problem: an exploratory study: Practice Articles
Journal of Software Maintenance and Evolution: Research and Practice
The SEXTANT Software Exploration Tool
IEEE Transactions on Software Engineering
Difficulties experienced by students in maintaining object-oriented systems: an empirical study
ACE '07 Proceedings of the ninth Australasian conference on Computing education - Volume 66
Journal of Systems and Software
Facilitating maintenance of knowledge management systems with a software tool
International Journal of Advanced Media and Communication
Abstractness, specificity, and complexity in software design
Proceedings of the 2nd international workshop on The role of abstraction in software engineering
ICER '08 Proceedings of the Fourth international Workshop on Computing Education Research
Empowering Software Maintainers with Semantic Web Technologies
ESWC '07 Proceedings of the 4th European conference on The Semantic Web: Research and Applications
Dynamic analysis of Ada programs for comprehension and quality measurement
Proceedings of the 2008 ACM annual international conference on SIGAda annual international conference
Execution trace analysis through massive sequence and circular bundle views
Journal of Systems and Software
Automatic identification of key classes in a software system using webmining techniques
Journal of Software Maintenance and Evolution: Research and Practice
A constraint-based system for product design and manufacturing
Robotics and Computer-Integrated Manufacturing
The effect of task order on the maintainability of object-oriented software
Information and Software Technology
Using sound to understand software architecture
Proceedings of the 27th ACM international conference on Design of communication
How to compare program comprehension in FOSD empirically: an experience report
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
Impact of the visitor pattern on program comprehension and maintenance
ESEM '09 Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement
OTM '09 Proceedings of the Confederated International Conferences, CoopIS, DOA, IS, and ODBASE 2009 on On the Move to Meaningful Internet Systems: Part I
Patterns for understanding frameworks
Proceedings of the 15th Conference on Pattern Languages of Programs
A unified ontology-based process model for software maintenance and comprehension
MoDELS'06 Proceedings of the 2006 international conference on Models in software engineering
No Code Required: Giving Users Tools to Transform the Web
No Code Required: Giving Users Tools to Transform the Web
Multimedia learning object to build cognitive understanding in learning introductory programming
Proceedings of the 7th International Conference on Advances in Mobile Computing and Multimedia
CodeTalk Conversations about Code
C5 '10 Proceedings of the 2010 Eighth International Conference on Creating, Connecting and Collaborating through Computing
Empirical Software Engineering
Information and Software Technology
Proceedings of the 48th Annual Southeast Regional Conference
An examination of software engineering work practices
CASCON First Decade High Impact Papers
Using domain ontologies in a dynamic analysis for program comprehension
Ontology-Driven Software Engineering
Authorization enforcement usability case study
ESSoS'11 Proceedings of the Third international conference on Engineering secure software and systems
Canonical method names for Java: using implementation semantics to identify synonymous verbs
SLE'10 Proceedings of the Third international conference on Software language engineering
An introduction to program comprehension for computer science educators
Proceedings of the 2010 ITiCSE working group reports
Identifying program, test, and environmental changes that affect behaviour
Proceedings of the 33rd International Conference on Software Engineering
FireDetective: understanding ajax client/server interactions
Proceedings of the 33rd International Conference on Software Engineering
Explicit use-case representation in object-oriented programming languages
Proceedings of the 7th symposium on Dynamic languages
International Journal of Human-Computer Studies
Categorization of concerns: a categorical program comprehension model
Proceedings of the 3rd ACM SIGPLAN workshop on Evaluation and usability of programming languages and tools
Towards the visualization of software systems as 3D forests: the CodeTrees environment
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Multi-understanding: a basis for switchable understanding for agents
SCSC '09 Proceedings of the 2009 Summer Computer Simulation Conference
Slicing and replaying code change history
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Systematizing pragmatic software reuse
ACM Transactions on Software Engineering and Methodology (TOSEM)
Cognitive architectures: a way forward for the psychology of programming
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
MODELS'12 Proceedings of the 15th international conference on Model Driven Engineering Languages and Systems
Understanding Ajax applications by connecting client and server-side execution traces
Empirical Software Engineering
Answering software evolution questions: An empirical evaluation
Information and Software Technology
Evaluating usage and quality of technical software documentation: an empirical study
Proceedings of the 17th International Conference on Evaluation and Assessment in Software Engineering
Normalizing source code vocabulary to support program comprehension and software quality
Proceedings of the 2013 International Conference on Software Engineering
An ontology toolkit for problem domain concept location in program comprehension
Proceedings of the 2013 International Conference on Software Engineering
Do background colors improve program comprehension in the #ifdef hell?
Empirical Software Engineering
Taupe: Visualizing and analyzing eye-tracking data
Science of Computer Programming
Proceedings of the 45th ACM technical symposium on Computer science education
Hi-index | 4.10 |
How well programmers comprehend programs is key to effective software maintenance and evolution. But how exactly do programmers understand code? Over the years, several code-comprehension models have been developed to help researchers answer this question. Five types of tasks are commonly associated with software maintenance and evolution: adaptive, perfective, and corrective maintenance; reuse; and code leverage. Each type has its own set of typical activities. Some of them, such as understanding a system or problem, are common to several tasks. Code comprehension models describe the cognitive processes involved in these tasks. Experiments support some, but not all of these models. The authors analyze six comprehension models and their validation experiments to determine the current state of knowledge program comprehension offers. They begin by describing some common elements of cognition models. Programmer knowledge plays a key role in the understanding process. The mental model--an internal, working representation of the software under consideration--includes both static and dynamic elements. Static elements include text-structure knowledge, "chunks," plans, hypotheses, beacons, and rules of discourse. Dynamic elements include strategies, actions, episodes, and processes. The authors compare the six models in this light and identify a need for more experimental studies with experienced software engineers working on specific maintenance tasks and large-scale code in state-of-the-art computing environments.