1,492 research outputs found
An Investigation into the Imposed Cognitive Load of Static & Dynamic Type Systems on Programmers
Static and dynamic type systems have long been a point of contention in the programming language wars. Yet, for many years, arguments on either side were drawn from personal experience and not empirical evidence. A challenge for researchers is that the usability of language constructs is difficult to quantify, especially since usability can be interpreted in many ways. By one definition, language usability can be measured in terms of the level of cognitive load imposed on a developer. This can be done through questionnaires, but ultimately user responses are subject to bias. In recent years, eye-tracking has been shown to be an effective means of measuring cognitive load via direct physiological measures. Towards the goal of measuring type system usability, we present a user study in which participants completed programming tasks in Java and Groovy. This thesis explored the use of the Index of Cognitive Activity (ICA) as a cognitive load measurement tool and considered novices and experts separately in the analysis. We found ICA to be an ineffective means of measuring type system usability and we cannot say conclusively whether it can be generally applied to programming tasks. Despite this, our results contradict previous studies as we found type system did not affect success rate, task completion time, or perceived task difficulty
Recommended from our members
A systematic mapping study of API usability evaluation methods
An Application Programming Interface (API) provides a programmatic interface to a software component that is often offered publicly and may be used by programmers who are not the API’s original designers. APIs play a key role in software reuse. By reusing high quality components and services, developers can increase their productivity and avoid costly defects. The usability of an API is a qualitative characteristic that evaluates how easy it is to use an API. Recent years have seen a considerable increase in research efforts aiming at evaluating the usability of APIs. An API usability evaluation can identify problem areas and provide recommendations for improving the API. In this systematic mapping study, we focus on 47 primary studies to identify the aim and the method of the API usability studies. We investigate which API usability factors are evaluated, at which phases of API development is the usability of API evaluated and what are the current limitations and open issues in API usability evaluation. We believe that the results of this literature review would be useful for both researchers and industry practitioners interested in investigating the usability of API and new API usability evaluation methods
Lucretia - intersection type polymorphism for scripting languages
Scripting code may present maintenance problems in the long run. There is,
then, the call for methodologies that make it possible to control the
properties of programs written in dynamic languages in an automatic fashion. We
introduce Lucretia, a core language with an introspection primitive. Lucretia
is equipped with a (retrofitted) static type system based on local updates of
types that describe the structure of objects being used. In this way, we deal
with one of the most dynamic features of scripting languages, that is, the
runtime modification of object interfaces. Judgements in our systems have a
Hoare-like shape, as they have a precondition and a postcondition part.
Preconditions describe static approximations of the interfaces of visible
objects before a certain expression has been executed and postconditions
describe them after its execution. The field update operation complicates the
issue of aliasing in the system. We cope with it by introducing intersection
types in method signatures.Comment: In Proceedings ITRS 2014, arXiv:1503.0437
An analysis of the requirements traceability problem
In this paper1, we investigate and discuss the underlying nature
of the requirements traceability problem. Our work is based on
empirical studies, involving over 100 practitioners, and an
evaluation of current support. We introduce the distinction
between pre-requirements specification (pre-RS) traceability
and post-requirements specification (post-RS) traceability, to
demonstrate why an all-encompassing solution to the problem is
unlikely, and to provide a framework through which to
understand its multifaceted nature. We report how the majority
of the problems attributed to poor requirements traceability are
due to inadequate pre-RS traceability and show the fundamental
need for improvements here. In the remainder of the paper, we
present an analysis of the main barriers confronting such
improvements in practice, identify relevant areas in which
advances have been (or can be) made, and make
recommendations for research
Designing and evaluating the usability of a machine learning API for rapid prototyping music technology
To better support creative software developers and music technologists' needs, and to empower them as machine learning users and innovators, the usability of and developer experience with machine learning tools must be considered and better understood. We review background research on the design and evaluation of application programming interfaces (APIs), with a focus on the domain of machine learning for music technology software development. We present the design rationale for the RAPID-MIX API, an easy-to-use API for rapid prototyping with interactive machine learning, and a usability evaluation study with software developers of music technology. A cognitive dimensions questionnaire was designed and delivered to a group of 12 participants who used the RAPID-MIX API in their software projects, including people who developed systems for personal use and professionals developing software products for music and creative technology companies. The results from the questionnaire indicate that participants found the RAPID-MIX API a machine learning API which is easy to learn and use, fun, and good for rapid prototyping with interactive machine learning. Based on these findings, we present an analysis and characterization of the RAPID-MIX API based on the cognitive dimensions framework, and discuss its design trade-offs and usability issues. We use these insights and our design experience to provide design recommendations for ML APIs for rapid prototyping of music technology. We conclude with a summary of the main insights, a discussion of the merits and challenges of the application of the CDs framework to the evaluation of machine learning APIs, and directions to future work which our research deems valuable
Refactoring Assertion Roulette and Duplicate Assert test smells: a controlled experiment
Test smells can reduce the developers' ability to interact with the test
code. Refactoring test code offers a safe strategy to handle test smells.
However, the manual refactoring activity is not a trivial process, and it is
often tedious and error-prone. This study aims to evaluate RAIDE, a tool for
automatic identification and refactoring of test smells. We present an
empirical assessment of RAIDE, in which we analyzed its capability at
refactoring Assertion Roulette and Duplicate Assert test smells and compared
the results against both manual refactoring and a state-of-the-art approach.
The results show that RAIDE provides a faster and more intuitive approach for
handling test smells than using an automated tool for smells detection combined
with manual refactoring
Structuring Documentation to Support State Search: A Laboratory Experiment about Protocol Programming
Abstract. Application Programming Interfaces (APIs) often define object protocols. Objects with protocols have a finite number of states and in each state a different set of method calls is valid. Many researchers have developed protocol verification tools because protocols are notoriously difficult to follow correctly. However, recent research suggests that a major challenge for API protocol programmers is effectively searching the state space. Verification is an ineffective guide for this kind of search. In this paper we instead propose Plaiddoc, which is like Javadoc except it organizes methods by state instead of by class and it includes explicit state transitions, state-based type specifications, and rich state relationships. We compare Plaiddoc to a Javadoc control in a betweensubjects laboratory experiment. We find that Plaiddoc participants complete state search tasks in significantly less time and with significantly fewer errors than Javadoc participants
- …