5 research outputs found

    The Stores Model of Code Cognition

    Get PDF
    Program comprehension is perhaps one of the oldest topics within the psychology of programming. It addresses a central issue: how programmers work with and manipulate source code to construct effective software systems. Models can play an important role in understanding the challenges developers and engineers contend with. This paper presents a model of program comprehension, or code cognition, which has been derived from literature found within the disciplines of computing and psychology. Drawing on direct experimentation, this paper argues that a model of code cognition should take account of the visual, spatial and linguistic abilities of developers. The strengths and weaknesses of this model are discussed and further research directions presented

    Comprehending large code bases - the skills required for working in a "Brown Fields" environment

    Get PDF
    In the search for answers to the effective teaching of programming at the beginner level, we are now seeing broader programs of research investigate the distinctions between reading, comprehending and writing small programs [1], [2]. In New Zealand we have joined this work with the "Bracelet" project, in which multiple institutions will investigate how students comprehend small computer programs. We hope this may help answer critical teaching and assessment questions

    Python-tutor on program comprehension

    Get PDF
    Dissertação de mestrado integrado em Informatics EngineeringThe time spent analysing a software with the goal of comprehending it is huge and expensive. Reduce the time necessary to a professional understand a program is essential for the advance of technology. Therefore, the program comprehension has always been an area of interest as realizing how a programmer thinks can help facilitate many of their daily activities, making the developer a more productive worker. As the world begins to reshape itself thanks to the advances of technology, this area of research gains more and more relevance. This project aim to study the tools developed within the comprehension of programs that usually are associated to software maintenance and analysing the animation web tool Python-Tutor. After this study, it’s required to explore Python-Tutor to understand how it can be improved with the addition of important features to program comprehension as Control Flow Graph (CFG), Data Flow Graph (DFG), Function Call Graph (FCG) and System Control Graph (SCG). The idea behind this is to allow new programmers to view their programs and create a visual image of them in order to understand them and improving their skills to understand someone else’s programs.O tempo despendido a analisar um programa de forma a compreendê-lo é enorme e dispendioso. Reduzir o tempo necessário para um profissional compreender um programa é fulcral para o avanço da tecnologia. Assim, a compreensão de programas sempre foi uma área de interesse pois perceber como um programador pensa pode ajudar a facilitar muitas atividades diárias deste, tornando o programador num trabalhador mais produtivo. À medida que o mundo se vai moldando à informática, esta área de pesquisa tem ganho cada vez mais relevância. Neste projecto iremos estudar as ferramentas desenvolvidas no âmbito da compreensão de programas associadas à manutenção de software e analisar a ferramenta de animaçãoweb Python-Tutor. Iremos explorar esta ferramenta de modo a perceber como a podemos melhorar através da inclusão de novos recursos importantes para a compreensão de programas, tais como: o Grafo de Controlo de Fluxo, Grafo de Fluxo de Dados e o Grafo de Chamadas de Funções. A ideia base passa então, por permitir aos novos programadores visualizar os seus programas e criar uma imagem visual destes de modo a os compreenderem e a melhorarem as suas competências para compreenderem programas de outrem

    An Empirical Validation of Cognitive Complexity as a Measure of Source Code Understandability

    Full text link
    Background: Developers spend a lot of their time on understanding source code. Static code analysis tools can draw attention to code that is difficult for developers to understand. However, most of the findings are based on non-validated metrics, which can lead to confusion and code, that is hard to understand, not being identified. Aims: In this work, we validate a metric called Cognitive Complexity which was explicitly designed to measure code understandability and which is already widely used due to its integration in well-known static code analysis tools. Method: We conducted a systematic literature search to obtain data sets from studies which measured code understandability. This way we obtained about 24,000 understandability evaluations of 427 code snippets. We calculated the correlations of these measurements with the corresponding metric values and statistically summarized the correlation coefficients through a meta-analysis. Results: Cognitive Complexity positively correlates with comprehension time and subjective ratings of understandability. The metric showed mixed results for the correlation with the correctness of comprehension tasks and with physiological measures. Conclusions: It is the first validated and solely code-based metric which is able to reflect at least some aspects of code understandability. Moreover, due to its methodology, this work shows that code understanding is currently measured in many different ways, which we also do not know how they are related. This makes it difficult to compare the results of individual studies as well as to develop a metric that measures code understanding in all its facets.Comment: 12 pages. To be published at ESEM '20: ACM / IEEE International Symposium on Empirical Software Engineering and Measuremen
    corecore