175 research outputs found
Overcoming Language Dichotomies: Toward Effective Program Comprehension for Mobile App Development
Mobile devices and platforms have become an established target for modern
software developers due to performant hardware and a large and growing user
base numbering in the billions. Despite their popularity, the software
development process for mobile apps comes with a set of unique, domain-specific
challenges rooted in program comprehension. Many of these challenges stem from
developer difficulties in reasoning about different representations of a
program, a phenomenon we define as a "language dichotomy". In this paper, we
reflect upon the various language dichotomies that contribute to open problems
in program comprehension and development for mobile apps. Furthermore, to help
guide the research community towards effective solutions for these problems, we
provide a roadmap of directions for future work.Comment: Invited Keynote Paper for the 26th IEEE/ACM International Conference
on Program Comprehension (ICPC'18
BOAT: An Experimental Platform for Researchers to Comparatively and Reproducibly Evaluate Bug Localization Techniques
BOAT available at http://www.vlis.zju.edu.cn/blp.</p
A Data Set of Generalizable Python Code Change Patterns
Mining repetitive code changes from version control history is a common way
of discovering unknown change patterns. Such change patterns can be used in
code recommender systems or automated program repair techniques. While there
are such tools and datasets exist for Java, there is little work on finding and
recommending such changes in Python. In this paper, we present a data set of
manually vetted generalizable Python repetitive code change patterns. We create
a coding guideline to identify generalizable change patterns that can be used
in automated tooling. We leverage the mined change patterns from recent work
that mines repetitive changes in Python projects and use our coding guideline
to manually review the patterns. For each change, we also record a description
of the change and why it is applied along with other characteristics such as
the number of projects it occurs in. This review process allows us to identify
and share 72 Python change patterns that can be used to build and advance
Python developer support tools
SEWordSim: Software-Specific Word Similarity Database
International audienceMeasuring the similarity of words is important in accurately representing and comparing documents, and thus improves the results of many natural language processing (NLP) tasks. The NLP community has proposed various measurements based on WordNet, a lexical database that contains relationships between many pairs of words. Recently, a number of techniques have been proposed to address software engineering issues such as code search and fault localization that require understanding natural language documents, and a measure of word similarity could improve their results. However, WordNet only contains information about words senses in general-purpose conversation, which often differ from word senses in a software-engineering context, and the software-specific word similarity resources that have been developed rely on data sources containing only a limited range of words and word uses.In recent work, we have proposed a word similarity resource based on information collected automatically from StackOverflow. We have found that the results of this resource are given scores on a 3-point Likert scale that are over 50% higher than the results of a resource based on WordNet. In this demo paper, we review our data collection methodology and propose a Java API to make the resulting word similarity resource useful in practice.The SEWordSim database and related information can be found at http://goo.gl/BVEAs8. Demo video is available at http://goo.gl/dyNwyb
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree of Interest
Logging is a significant programming practice. Due to the highly
transactional nature of modern software applications, massive amount of logs
are generated every day, which may overwhelm developers. Logging information
overload can be dangerous to software applications. Using log levels,
developers can print the useful information while hiding the verbose logs
during software runtime. As software evolves, the log levels of logging
statements associated with the surrounding software feature implementation may
also need to be altered. Maintaining log levels necessitates a significant
amount of manual effort. In this paper, we demonstrate an automated approach
that can rejuvenate feature log levels by matching the interest level of
developers in the surrounding features. The approach is implemented as an
open-source Eclipse plugin, using two external plug-ins (JGit and Mylyn). It
was tested on 18 open-source Java projects consisting of ~3 million lines of
code and ~4K log statements. Our tool successfully analyzes 99.22% of logging
statements, increases log level distributions by ~20%, and increases the focus
of logs in bug fix contexts ~83% of the time. For further details, interested
readers can watch our demonstration video
(https://www.youtube.com/watch?v=qIULoAXoDv4).Comment: 4 pages, ICSE '22 (tool demo track
Recognizing Developers' Emotions while Programming
Developers experience a wide range of emotions during programming tasks,
which may have an impact on job performance. In this paper, we present an
empirical study aimed at (i) investigating the link between emotion and
progress, (ii) understanding the triggers for developers' emotions and the
strategies to deal with negative ones, (iii) identifying the minimal set of
non-invasive biometric sensors for emotion recognition during programming task.
Results confirm previous findings about the relation between emotions and
perceived productivity. Furthermore, we show that developers' emotions can be
reliably recognized using only a wristband capturing the electrodermal activity
and heart-related metrics.Comment: Accepted for publication at ICSE2020 Technical Trac
A Tool for Rejuvenating Feature Logging Levels via Git Histories and Degree of Interest
Logging is a significant programming practice. Due to the highly transactional nature of modern software applications, a massive amount of logs are generated every day, which may overwhelm developers. Logging information overload can be dangerous to software applications. Using log levels, developers can print the useful information while hiding the verbose logs during software runtime. As software evolves, the log levels of logging statements associated with the surrounding software feature implementation may also need to be altered. Maintaining log levels necessitates a significant amount of manual effort. In this paper, we demonstrate an automated approach that can rejuvenate feature log levels by matching the interest level of developers in the surrounding features. The approach is implemented as an open-source Eclipse plugin, using two external plug-ins (JGit and Mylyn). It was tested on 18 open-source Java projects consisting of ~3 million lines of code and ~4K log statements. Our tool successfully analyzes 99.22% of logging statements, increases log level distributions by ~20%, and increases the focus of logs in bug fix contexts ~83% of the time. For further details, interested readers can watch our demonstration video (https://www.youtube.com/watch?v=qIULoAXoDv4)
- …