- Software Engineering Research
- Software Testing and Debugging Techniques
- Software Reliability and Analysis Research
- Parallel Computing and Optimization Techniques
- Teaching and Learning Programming
- Software System Performance and Reliability
- Distributed and Parallel Computing Systems
- Software Engineering Techniques and Practices
- Advanced Malware Detection Techniques
- Advanced Software Engineering Methodologies
- Gender and Technology in Education
- Embedded Systems Design Techniques
- Open Source Software Innovations
- Advanced Data Storage Technologies
- Green IT and Sustainability
- Cloud Computing and Resource Management
- Experimental Learning in Engineering
- Child Development and Digital Technology
- Logic, programming, and type systems
- Security and Verification in Computing
- Topic Modeling
- Online Learning and Analytics
- Distributed systems and fault tolerance
- Web Data Mining and Analysis
- Innovative Teaching and Learning Methods
University of Delaware
2015-2024
University of Bremen
2018
Fudan University
2018
Eindhoven University of Technology
2018
Microsoft (United States)
2018
University of Minnesota
2014
KTH Royal Institute of Technology
2014
University of California, Irvine
2014
Software Engineering Institute
2014
Istituto di Scienza e Tecnologie dell'Informazione "Alessandro Faedo"
2014
Studies have shown that good comments can help programmers quickly understand what a method does, aiding program comprehension and software maintenance. Unfortunately, few projects adequately comment the code. One way to overcome lack of human-written summary comments, guard against obsolete is automatically generate them. In this paper, we present novel technique descriptive for Java methods. Given signature body method, our automatic generator identifies content generates natural language...
Most software engineering tasks require developers to understand parts of the source code. When faced with unfamiliar code, often rely on (internal or external) documentation gain an overall understanding code and determine whether it is relevant for current task. Unfortunately, absent outdated. This paper presents a technique automatically generate human readable summaries Java classes, assuming no exists. The allow main goal structure class. focus content responsibilities rather than their...
Most current software systems contain undocumented high-level ideas implemented across multiple files and modules. When developers perform program maintenance tasks, they often waste time effort locating understanding these scattered concerns. We have developed a semi-automated concern location comprehension tool, Find-Concept, designed to reduce the spend on tasks increase their confidence in results of tasks. Find-Concept is effective because it searches unique natural language-based...
As software systems continue to grow and evolve, locating code for maintenance reuse tasks becomes increasingly difficult. Existing static search techniques using natural language queries provide little support help developers determine whether results are relevant, few recommend alternative words reformulate poor queries. In this paper, we present a novel approach that automatically extracts phrases from source identifiers categorizes the in hierarchy. Our contextual allows explore word...
One approach to easing program comprehension is reduce the amount of code that a developer has read. Describing high level abstract algorithmic actions associated with fragments using succinct natural language phrases potentially enables newcomer focus on fewer and more concepts when trying understand given method. Unfortunately, such descriptions are typically missing because it tedious create them manually.
Automated software engineering tools (e.g., program search, concern location, code reuse, quality assessment, etc.) increasingly rely on natural language information from comments and identifiers in code. The first step analyzing words requires splitting into their constituent words. Unlike languages, where space punctuation are used to delineate words, cannot contain spaces. One common way split is follow programming naming conventions. For example, Java programmers often use camel case,...
Reducing the energy usage of software is becoming more important in many environments, particular, battery-powered mobile devices, embedded systems and data centers. Recent empirical studies indicate that engineers can support goal reducing by making design implementation decisions ways take into consideration how such impact an application. However, large number possible choices lack feedback information available to necessitates some form automated decision-making support. This paper...
The energy consumption of software is an increasing concern as the use mobile applications, embedded systems, and data center-based services expands. While research in green engineering correspondingly increasing, little known about current practices perspectives engineers field. This paper describes first empirical study how practitioners think when they write requirements, design, construct, test, maintain their software. We report findings from a quantitative, targeted survey 464 ABB,...
This study presents the design of an educational technology course for pre-service teachers specific to incorporating computational thinking in K-8 classroom settings. Subsequently, it examines how participation influences teachers' dispositions and knowledge concepts ways which such can be combined with content pedagogy promote meaningful student outcomes. Data were collected from a self-reported survey case reports focusing on design, implementation, outcomes related lessons classrooms....
Context: Code refactoring's benefits to understandability, maintainability and extensibility are well known enough that automated support for refactoring is now common in IDEs. However, the decision apply such transformations currently performed without regard impacts of refactorings on energy consumption. This primarily due a lack information tools provide relevant developers. Unfortunately, concerns about efficiency rapidly becoming high priority concern many environments, including...
The continuous use of the web for daily operations by businesses, consumers, and government has created a great demand reliable applications. One promising approach to testing functionality applications leverages user-session data collected servers. User-session-based automatically generates test cases based on real user profiles. key contribution this paper is application concept analysis clustering sessions set heuristics case selection. Existing incremental algorithms are exploited avoid...
Completing software maintenance and evolution tasks for today's large, complex systems can be difficult, often requiring considerable time to understand the system well enough make correct changes. Despite evidence that successful programmers use program structure as identifier names explore software, most existing exploration techniques either structural or lexical information. By using only one type of information, automated tools ignore valuable clues about a developer's intentions -...
An important part of the leading comments for a method are formal parameters method. According to Java documentation writing guidelines, developers should write summary method'sactions followed by each parameter. In this paper, we describe novel technique automatically generate descriptive methods. Such generated can help alleviate lack developer written parameter comments. addition, they programmer in ensuring that comment is current with code. We present heuristics provide high-level...
When writing software, developers often employ abbreviations in identifier names. In fact, some may never occur with the expanded word, or more code. However, most existing program comprehension and search tools do little to address problem of abbreviations, therefore miss meaningful pieces code relationships between software artifacts. this paper, we present an automated approach mining abbreviation expansions from source enhance maintenance that utilize natural language information. Our...
Many software development and maintenance tools involve matching between natural language words in different artifacts (e.g., traceability) or queries submitted by a user code search). Because people likely created the various artifacts, effectiveness of these is often improved expanding adding related to textual artifact representations. Synonyms are particularly useful overcome mismatch vocabularies, as well other word relations that indicate semantic similarity. However, experience shows...
As the use of computers has grown, so too concern about amount power they consume. Data centers, for example, are limited in scalability as struggle with soaring energy costs from many large companies relying on fast, reliable, and round-the-clock computing services. On large-scale clusters, like data even a small drop consumption can have effects. Across contexts, reducing consumed by become major focus. In this paper, we present new approach mapping software design to empirical results...
Current policy efforts that seek to improve learning in science, technology, engineering, and mathematics (STEM) emphasize the importance of helping all students acquire concepts tools from computer science help them analyze develop solutions everyday problems. These goals have been generally described literature under term computational thinking. In this article, we report on design, implementation, outcomes an after-school program The was founded through a partnership between university...
The low cost of resource ownership and flexibility have led users to increasingly port their applications the clouds. To fully realize benefits cloud services, usually need reliably know execution performance applications. However, due random fluctuations experienced by applications, black box nature public clouds usage costs, testing on acquire accurate results is extremely difficult. In this paper, we present a novel methodology called PT4Cloud. By employing non-parametric statistical...
A technique is presented for incrementally updating solutions to both union and intersection data-flow problems in response program edits transformations. For generality, the based on iterative approach computing information. The authors show that problems, some changes can be incorporated immediately into sets while others are handled by a two-phase approach. first phase updates overestimate effect of change, enabling second update affected reflect actual change. An important problem...
User-session-based testing of web applications gathers user sessions to create and continually update test suites based on real input in the field. To support this approach during maintenance beta phases, we have built an automated framework for web-based software that focuses scalability evolving suite automatically as application's operational profile changes. This paper reports automation replay oracle components applications, which pose issues beyond those equivalent steps traditional,...
Modern software systems are typically large and complex, making comprehension of these extremely difficult. Experienced programmers comprehend code by seamlessly processing synonyms other word relations. Thus, we believe that automated tools can be significantly improved leveraging relations in software. In this paper, perform a comparative study six state the art, English-based semantic similarity techniques evaluate their effectiveness on words from comments identifiers Our results suggest...
As software continues to grow, locating code for maintenance tasks becomes increasingly difficult. Software search tools help developers find source relevant their tasks. One major challenge successful is when the user's query contains words with multiple meanings or that occur frequently throughout program. Traditional techniques, which treat each word individually, are unable distinguish and irrelevant methods under these conditions. In this paper, we present a novel technique uses...
As the use of computers has grown, so too concern about amount power they consume. Data centers, for example, are limited in scalability as struggle with soaring energy costs from many large companies relying on fast, reliable, and round-the-clock computing services. On large-scale clusters, like data even a small drop consumption can have effects. Across contexts, reducing consumed by become major focus. In this paper, we present new approach mapping software design to empirical results...
To aid program comprehension, programmers choose identifiers for methods, classes, fields and other elements primarily by following naming conventions in software. These software "naming conventions" follow systematic patterns which can convey deep natural language clues that be leveraged engineering tools. For example, they used to increase the accuracy of search tools, improve ability navigation tools recommend related raise analyses. After splitting multi-word names into their component...
Modern software development communities are increasingly social. Popular chat platforms such as Slack host public that focus on specific topics Python or Ruby-on-Rails. Conversations in these chats often follow a Q&A format, with someone seeking information and others providing answers form. In this paper, we describe an exploratory study into the potential use-fulness challenges of mining developer conversations for supporting maintenance evolution tools. We designed to investigate...