23 research outputs found
Declarative visitors to ease fine-grained source code mining with full history on billions of AST nodes
Software repositories contain a vast wealth of information about software development. Mining these repositories has proven useful for detecting patterns in software development, testing hypotheses for new software engineering approaches, etc. Specifically, mining source code has yielded significant insights into software development artifacts and processes. Unfortunately, mining source code at a large-scale remains a difficult task. Previous approaches had to either limit the scope of the projects studied, limit the scope of the mining task to be more coarse-grained, or sacrifice studying the history of the code due to both human and computational scalability issues. In this paper we address the substantial challenges of mining source code: a) at a very large scale; b) at a fine-grained level of detail; and c) with full history information.
To address these challenges, we present domain-specific language features for source code mining. Our language features are inspired by object-oriented visitors and provide a default depth-first traversal strategy along with two expressions for defining custom traversals. We provide an implementation of these features in the Boa infrastructure for software repository mining and describe a code generation strategy into Java code. To show the usability of our domain-specific language features, we reproduced over 40 source code mining tasks from two large-scale previous studies in just 2 person-weeks. The resulting code for these tasks show between 2.0x--4.8x reduction in code size. Finally we perform a small controlled experiment to gain insights into how easily mining tasks written using our language features can be understood, with no prior training. We show a substantial number of tasks (77%) were understood by study participants, in about 3 minutes per task
Benefitting from the Grey Literature in Software Engineering Research
Researchers generally place the most trust in peer-reviewed, published
information, such as journals and conference papers. By contrast, software
engineering (SE) practitioners typically do not have the time, access or
expertise to review and benefit from such publications. As a result,
practitioners are more likely to turn to other sources of information that they
trust, e.g., trade magazines, online blog-posts, survey results or technical
reports, collectively referred to as Grey Literature (GL). Furthermore,
practitioners also share their ideas and experiences as GL, which can serve as
a valuable data source for research. While GL itself is not a new topic in SE,
using, benefitting and synthesizing knowledge from the GL in SE is a
contemporary topic in empirical SE research and we are seeing that researchers
are increasingly benefitting from the knowledge available within GL. The goal
of this chapter is to provide an overview to GL in SE, together with insights
on how SE researchers can effectively use and benefit from the knowledge and
evidence available in the vast amount of GL
Quantifying programmers' mental workload during program comprehension based on cerebral blood flow measurement: a controlled experiment
Blogging developer knowledge: motivations, challenges, and future directions
Why do software developers place so much effort into writing public blog posts about their knowledge, experiences, and opinions on software development? What are the benefits, problems, and tools needed—what can the research community do to help? In this paper, we describe a research agenda aimed at understanding the motivations and issues of software development blogging. We interviewed developers as well as mined and analyzed their blog posts. For this initial study, we selected developers from various backgrounds: IDE plugin development, mobile development, and web development. We found that developers used blogging for a variety of functions such as documentation, technology discussion, and announcing progress. They were motivated by a variety of reasons such as personal branding, knowledge retention, and feedback. Among the challenges for blog authors identified in our initial study, we found primitive tool support, difficulty recreating and recalling recent development experiences, and management of blog comments. Finally, many developers expressed that the motivations and benefits they received for blogging in public did not directly translate to corporate settings.Chris Parnin, Christoph Treude, Margaret-Anne Store
The Essence Theory of Software Engineering : Large-Scale Classroom Experiences from 450+ Software Engineering BSc Students
Abstract. Software Engineering as an industry is highly diverse in terms of development methods and practices. Practitioners employ a myriad of methods and
tend to further tailor them by e.g. omitting some practices or rules. This diversity
in development methods poses a challenge for software engineering education,
creating a gap between education and industry. General theories such as the Essence Theory of Software Engineering can help bridge this gap by presenting
software engineering students with higher-level frameworks upon which to build
an understanding of software engineering methods and practical project work. In
this paper, we study Essence in an educational setting to evaluate its usefulness
for software engineering students while also investigating barriers to its adoption
in this context. To this end, we observe 102 student teams utilize Essence in practical software engineering projects during a semester long, project-based course.peerReviewe
Human aspects, gamification, and social media in collaborative software engineering
Software engineering is inherently a collaborative venture. In open-source software (OSS) development, such collaborations almost always span geographies and cultures. Because of the decentralised and self-directed nature of OSS as well as the social diversity inherent to OSS communities, the success of an OSS project depends to a large extent on the social aspects of distributed collaboration and achieving coordination over distance. The goal of this dissertation research is to raise our understanding of how human aspects (e.g., gender or cultural diversity), gamification and social media (e.g., participation in social environments such as Stack Overflow or GitHub) impact distributed collaboration in OSS