- Green IT and Sustainability
- Software Testing and Debugging Techniques
- Software Engineering Research
- Software Reliability and Analysis Research
- Advanced Malware Detection Techniques
- Software System Performance and Reliability
- Parallel Computing and Optimization Techniques
- Caching and Content Delivery
- Security and Verification in Computing
- Energy Harvesting in Wireless Networks
- Data Quality and Management
- Natural Language Processing Techniques
- Cloud Computing and Resource Management
- Computational Physics and Python Applications
- Personal Information Management and User Behavior
- Web Application Security Vulnerabilities
- Mathematics, Computing, and Information Processing
- IoT and Edge/Fog Computing
- Innovative Human-Technology Interaction
- Software Engineering Techniques and Practices
- Distributed systems and fault tolerance
- Peer-to-Peer Network Technologies
- Diamond and Carbon-based Materials Research
- Educational Technology and Assessment
- Digital Games and Media
University of Delaware
2013-2023
Georgia Institute of Technology
2007-2011
University of Pittsburgh
2005
Dynamic taint analysis is gaining momentum. Techniques based on dynamic tainting have been successfully used in the context of application security, and now their use also being explored different areas, such as program understanding, software testing, debugging. Unfortunately, most existing approaches for are defined an ad-hoc manner, which makes it difficult to extend them, experiment with adapt them new contexts. Moreover, focused data-flow only do not consider due control flow, limits...
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,...
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...
It is difficult to fully assess the quality of software in- house, outside actual time and context in which it will execute after deployment. As a result, common for manifest field failures, failures that occur on user machines due untested behavior. Field are typically recreate investigate developer platforms, existing techniques based crash reporting provide only limited support this task. In paper, we present technique recording, reproducing, minimizing failing executions enables supports...
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...
Most existing leak detection techniques for C and C++ applications only detect the existence of memory leaks. They do not provide any help fixing underlying management errors. In this paper, we present a new technique that detects leaks, but also points developers to locations where errors may be fixed. Our tracks pointers dynamically-allocated areas and, each area, records several pieces relevant information. This information is used identify in an execution leaks occur. To investigate our...
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...
Abstract Software piracy is an important concern for application developers. Such concerns are especially relevant in mobile development, where rates can be greater than 90%. The most common approach used by developers to prevent code obfuscation. However, the decision apply such transformations currently made without regard impacts of obfuscations on another area increasing developers, energy usage. Because both software and battery life concerns, must strike a balance between protecting...
Programs written in languages that provide direct access tomemory through pointers often contain memory-related faults, which may cause non-deterministic failures and even security vulnerabilities. In this paper, we present a new technique based on dynamic tainting for protecting programs from illegal memory accesses. When is allocated, at runtime, our taints both the corresponding pointer using same taint mark. Taint marks are then suitably propagated while program executes checked every...
Most existing automated debugging techniques focus on reducing the amount of code to be inspected and tend ignore an important component software failures: inputs that cause failure manifest. In this paper, we present a new technique based dynamic tainting for automatically identifying subsets program's are relevant failure. The (1) marks program when they enter application, (2) tracks them as propagate during execution, (3) identifies, observed failure, subset potentially To investigate...
Writing oracles is challenging. As a result, developers often create that check too little, resulting in tests are unable to detect failures, or much, brittle and difficult maintain. In this paper we present new technique for automatically analyzing test oracles. The based on dynamic tainting detects both assertions—assertions depend values derived from uncontrolled inputs—and unused inputs—inputs provided by the not checked an assertion. We also presented OraclePolish, implementation of can...
Software piracy is an important concern for application developers. Such concerns are especially relevant in mobile development, where rates can approach 90%. The most commonly used by developers preventing code obfuscation. However, the decision to apply such transformations currently made without regard impacts of obfuscations on another area increasing developers: energy consumption. Because both software and battery life concerns, must strike a balance between protecting their...
In situ testing techniques have become an important means of ensuring the reliability embedded systems after they are deployed in field. However, these do not help testers optimize energy consumption their test suites, which can needlessly waste limited battery power systems. this work, we extend prior for suite minimization such a way as to allow generate energy-efficient, minimized suites with only minimal modifications existing work flow. We perform extensive empirical evaluation our...
Producing reliable and robust software has become one of the most important development concerns in recent years. Testing is a process by which quality can be assured through collection information. While testing improve reliability, current tools typically are inflexible have high over-heads, making it challenging to test large projects. In this paper, we describe new scalable flexible framework for programs with novel demand-driven approach based on execution paths implement coverage. This...
Privacy and security concerns have adversely affected the usefulness of many types techniques that leverage information gathered from deployed applications. To address this issue, we present an approach for automatically anonymizing failure-inducing inputs builds on a previously developed technique. Given input I causes failure f, our generates anonymized I′ is different but still f. can thus be sent to developers enable them debug f without having know I. We implemented in prototype tool,...
During maintenance, developers often need to understand the purpose of a test. One most potentially useful sources information for understanding test is its name. Ideally, names are descriptive in that they accurately summarize both scenario and expected outcome Despite benefits being descriptive, fall short this goal. In paper we present new approach automatically generating existing bodies. Using combination natural-language program analysis text generation, technique creates test's...
Existing specification-based testing techniques require specifications that either do not exist or are too difficult to create. As a result, they often fall short of their goal helping developers test expected behaviors. In this paper we present novel, natural language-based approach exploits the descriptive nature names generate templates. Similar how modern IDEs simplify development by providing templates for common constructs such as loops, can save time and lower cognitive barrier...
As the use of computers has grown, so too concern about amount power that they consume. Data centers, for example, are limited in scalability as struggle with soaring energy costs many large companies rely 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 tool mapping software design to describe how such...
Programs written in languages allowing direct access to memory through pointers often contain memory-related faults, which cause nondeterministic failures and security vulnerabilities. We present a new dynamic tainting technique detect illegal accesses. When is allocated, at runtime, we taint both the corresponding pointer using same mark. Taint marks are then propagated checked every time address m accessed p; if associated differ, an reported. To allow always-on checking low overhead,...
Changing UI colors is an effective approach for reducing app energy usage devices with OLED displays. Unfortunately, even when care taken to ensure that visual properties of the user interface (UI) are maintained (e.g., contrast ratios between text and background elements), such changes often compromise aesthetics application. In this paper, we investigate whether indistinguishable changes, less likely aesthetics, can also result in significant savings. To answer question, performed...
Software engineers make decisions about the design of software they are creating on a daily basis. These may impact application in terms efficiency, usability, flexibility, etc. Different competing therefore often evaluated their projected quality metrics prior to implementation. Recently energy has become concern for systems, ranging from mobile devices large data centers. Additionally, it been recognized that executing computing device can have significant device's consumption. This raises...