5 research outputs found
The Stores Model of Code Cognition
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
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
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
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