Cognition plays a fundamental role in most software engineering activities. This article provides a taxonomy of cognitive concepts and a survey of the literature since the beginning of the Software Engineering discipline. The taxonomy comprises the top-level concepts of perception, attention, memory, cognitive load, reasoning, cognitive biases, knowledge, social cognition, cognitive control, and errors, and procedures to assess them both qualitatively and quantitatively. The taxonomy provides a useful tool to filter existing studies, classify new studies, and support researchers in getting familiar with a (sub) area. In the literature survey, we systematically collected and analysed 311 scientific papers spanning five decades and classified them using the cognitive concepts from the taxonomy. Our analysis shows that the most developed areas of research correspond to the four life-cycle stages, software requirements, design, construction, and maintenance. Most research is quantitative and focuses on knowledge, cognitive load, memory, and reasoning. Overall, the state of the art appears fragmented when viewed from the perspective of cognition. There is a lack of use of cognitive concepts that would represent a coherent picture of the cognitive processes active in specific tasks. Accordingly, we discuss the research gap in each cognitive concept and provide recommendations for future research.
翻译:认知在大多数软件工程活动中起着根本作用。 本条提供了认知概念的分类和自软件工程学科开始以来的文献调查。分类包括认知、关注、记忆、认知负荷、推理、认知偏向、知识、社会认知偏向、知识、社会认知控制、认知控制和错误等顶层概念,以及定性和定量评估这些概念的程序。分类为过滤现有研究、对新研究进行分类以及支持研究人员熟悉一个(子)领域提供了有用的工具。在文献调查中,我们系统收集和分析了长达50年的311份科学论文,并利用分类学的认知概念对其进行分类。我们的分析表明,最发达的研究领域符合四个生命周期阶段、软件要求、设计、建设和维护。大多数研究都是定量的,侧重于知识、认知负荷、记忆和推理。总体而言,从认知角度看,艺术状况似乎支离破碎。在文献调查中,缺乏认知概念的使用,无法反映活跃于具体任务中的认知过程的连贯图象。因此,我们讨论每一项研究概念的研究差距。