- The paper presents a taxonomy categorizing key cognitive concepts and assessment methods in software engineering, reviewing 311 publications from 1973 to 2020.
- It finds that research increasingly focuses on cognitive load and biases, with quantitative methods predominating while revealing gaps in qualitative approaches.
- The study recommends expanding investigation in understudied areas like testing and quality and integrating cognitive science theories for deeper insights.
Cognition in Software Engineering: A Taxonomy and Survey
This essay outlines the paper "Cognition in Software Engineering: A Taxonomy and Survey of a Half-Century of Research" (2201.05551), which presents a comprehensive review of cognition-related research within software engineering. The paper develops a taxonomy of cognitive concepts, analyzes literature spanning five decades using this taxonomy, and discusses research gaps and future directions.
Taxonomy of Cognitive Concepts and Assessment Procedures
The taxonomy introduced in the paper categorizes cognitive concepts relevant to software engineering and enumerates methods for assessing these concepts.
Cognitive Concepts
- Perception: Processes organizing sensory information to form an understanding of the environment.
- Attention: Focused awareness on a subset of perceptual information, sub-categorized into selective, divided, and sustained attention.
- Memory: Systems of acquiring and retaining information, covering working, short-term, and long-term memory.
- Cognitive Load: The informational processing demands on attentional and working memory resources.
- Reasoning: Goal-oriented thinking processes, including problem-solving and decision-making.
- Cognitive Biases: Systematic errors stemming from heuristic simplifications of complex judgment tasks.
- Knowledge: Framework of experiences and information guiding new evaluations, split into explicit and tacit knowledge.
- Social Cognition: Cognitive activity mediating social behavior and acquisition of information from the social context.
- Cognitive Control: Ensemble of cognitive processes governing behavior, including attentional control, cognitive inhibition, and cognitive flexibility.
10. Errors: Irregularities in rational results arising from perceptual distortions and inaccurate judgments.
Assessment Procedures
- Qualitative Methods: Fieldwork, interviews, task-based observations, and open observations.
- Quantitative Methods: Task performance, physiological measures, subjective ratings, and behavioral measures.
Literature Survey and Findings
The survey systematically analyzes 311 scientific publications from 1973 to 2020, using the taxonomy to classify and characterize the research landscape.
Trends and Context
SWEBOK Areas
Assessment Methods
Theoretical Implications
- Few papers explicitly use psychological theories; the conceptual basis is often ad-hoc or inspired by general cognitive ideas.
- Greater integration with cognitive science can enhance both theoretical grounding and practical application.
Discussion and Future Directions
The state of cognition-related research in software engineering exhibits fragmentation, reflecting a diverse array of cognitive aspects studied in isolation. Gaps identified in areas such as perception and long-term memory present avenues for future research. Leveraging mixed-method approaches and advanced assessment techniques, including physiological measures, can deepen insights into cognitive processes in software engineering.
Recommendations
- Expand research in understudied areas like software testing and quality using the provided taxonomy to bring structured clarity to cognitive processes.
- Enhance interdisciplinary collaboration to integrate established cognitive science theories more robustly.
- Employ unobtrusive and physiological measurements to enrich understanding of concepts like attention and cognitive load.
Conclusion
The paper provides a valuable contribution to organizing and understanding cognition in software engineering, offering a taxonomy that serves as a blueprint for future research efforts. By positioning cognitive concepts within operational contexts, it opens pathways for enhancing both theoretical understanding and practical decision-making in software engineering.