Productivity Tools and Software Engineering     


 photoPANKAJ DHOOLIA photo photo

Productivity Tools and Software Engineering - Research



Our research agenda in software testing focuses on developing innovative techniques and tools that bring automation and rigor to the tasks that are performed manually in testing services, often in an ad-hoc manner, and are prone to human lapses. Our research covers a broad spectrum of topics, including test automation, test data generation, test suite reduction, test repair, and regression testing.

For instance, we are developing tool-assisted techniques for converting manual test cases to automated test scripts, generating change-resilient test scripts, and patching test scripts across platforms, applications variants, and application versions.

Functional testing of enterprise applications is often driven by specifications in the form of business rules. We are developing notations for formally representing business rules, and techniques for automatically generating test data and operation sequences for exercising business rules.

Recent Publications

  • Robust Test Automation Using Contextual Clues. Proceedings of the International Symposium on Software Testing and Analysis (ISSTA), July 2014.
  • Efficient and Flexible GUI Test Execution via Test Merging. International Symposium on Software Testing and Analysis (ISSTA), July 2013.
  • Guided Test Generation for Web Applications. 35th International Conference on Software Engineering (ICSE), May 2013.

For more information on our testing-related research, please visit the project page.

Software Development and Maintenance

Our group is developing scalable automated techniques for API extraction from legacy code, fault detection, localization, explanation and repair. We develop new techniques for migration to mobile and cloud platforms and create productivity tools to improve design of cognitive, database-driven, cloud-based applications. Our methods employ sophisticated constraint-solving and theorem-proving techniques coupled with efficient program-analysis techniques, such slicing and differencing, along with effective information visualization and summarization for reducing cognitive overload.

Recent Publications

  • Data-Guided Repair of Selection Statements. 36th International Conference on Software Engineering (ICSE), May 2013.
  • Distributed Program Tracing. 9th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE), August 2013.
  • Compiling Mockups to Flexible UIs 9th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE), August 2013.
  • SemFix: Program Repair via Semantic Analysis. 35th International Conference on Software Engineering (ICSE), May 2013.
  • Alternate and Learn: Finding Witnesses Without Looking All Over. Computer Aided Verification (CAV), July 2012.

Mining Software Repositories

Repositories, such as version-management systems and bug-management systems, contain a wealth of information on how an application evolves over time. This information, if mined appropriately, can help project teams gain insights for supporting maintenance of the software, improving design/reuse, and enabling effective transitioning of new people into a project. Our research agenda in this area focuses on using a combination of text analytics, mining, code analysis, and visualization to enable decision making, based on knowledge derived from software repositories.

Recent Publications

  • API as a Social Glue. New ideas and emerging results Track, International Conference on Software Engineering (ICSE), June 2014.
  • A Study of External Community Contribution to Open-Source Projects on GitHub. Challenge track, Mining Software Repositories (MSR), May 2014
  • Bug Resolution Catalysts: Identifying Essential Non-Committers from Bug Repositories. 10th the Working Conference on Mining Software Repositories (MSR), May 2013.
  • AUSUM: Approach for Unsupervised Bug Report SUMmarization. 20th International Symposium on the Foundations of Software Engineering (FSE), November 2012.

Service Delivery Optimization

The goal is to improve the efficiency of service delivery processes through intelligent assignment,
scheduling and routing of work for management of practitioner utilization, and application of simulation
and optimization techniques to determine optimal staffing in the delivery organization. A
specific context that motivates this research is the factory model of shared delivery, where instead
of having customer-specific teams, a common pool of practitioners in a given specialization area is
responsible for meeting the service requests of multiple customers in that area. Building automation
tooling capabilities that assist practitioners in their day-to-day work is also an area of interest.
Ticket lifecycle management, application configuration discovery,patch management and server
health-check monitoring are all human-intensive processes which are made easier and more efficient
by tools and technologies that allow auto-discovery, auto-configuration and auto-remediation.
We are also exploring the social network of practitioners and evolution of skills in large-scale global
delivery centers following such a model. Information visualization is also another area of work for
aiding decision making by service delivery managers.

Recent Publications

    • Optimal Strategy for Proactive Service Delivery Management Using Inter-KPI Influence Relationships. ICSOC 2013.
    • Does One-Size-Fit-All Suffice for Service Delivery Clients?. ICSOC 2013.
    • Interleaving Execution into Model Driven Service Design. ICWS 2013.
    • Accelerating Collaboration in Task Assignment Using a Socially Enhanced Resource Model. BPM 2013.
    • SmartDispatch: enabling efficient ticket dispatch in an IT service environment. KDD 2012.