Software Engineering

Core Research Area in Software Engineering

Software engineering is a broad field of computer science including models, languages, methods, mechanisms, and tools for the elaboration, evaluation, and evolution of products and processes all along the software lifecycle – from requirements specification to software maintenance and reengineering. At the University of Delaware, software engineering is an increasing area of research and graduate study.

Research in software engineering at University of Delaware currently focuses on software testing methodology and tools customized for web applications, systematic testing of program-based security mechanisms, techniques and tools for aspect mining, applying natural language processing to aid program understanding and navigation, and exploiting dynamic compilation technology for dynamic program analysis useful in software tools.

Current Faculty

  • James Clause, Assistant Professor: Software engineering; Program analysis; Debugging; Green software engineering; Software privacy.
  • Lori Pollock, Professor: Program analysis for building better software maintenance tools; Optimizing compilers for modern computer architectures; Software testing.
  • Stephen F. Siegel, Associate Professor: Analysis and verification of concurrent and distributed software systems, Model checking, Scientific computing, Parallel computation.

Courses

  • CISC 611/CPEG 611 Software Process Management
  • CISC 612/CPEG 612 Software Design
  • CISC 613/CPEG 613 Software Requirements Engineering
  • CISC 614/CPEG 614 Formal Methods in Software Engineering
  • CISC 615/CPEG 615 Software Testing and Maintenance
  • CISC 675 Software Engineering Principles and Practices
  • CISC 862 Advanced Software Design
  • CISC 872 Advanced Program Analysis and Transformations
Laboratories - Software Engineering

Software Analysis and Compilation Laboratory

213 Smith Hall, Professor Lori Pollock.

Our research focuses on program analysis to automate and semi-automate tedious and error-prone tasks typically performed by software engineers, testers, and scientists. Current research projects include applying natural language processing techniques to perform textual analysis of software artifacts and using that information for automatically generating documentation from source code, improving code search and feature location, and improving other software maintenance tools. We are also investigating various aspects of green software engineering to enable software designers to make energy-conscious design decisions. In software testing, we are developing techniques to automatically generate tests for web applications. Other projects focus on optimizing compilers for modern parallel architectures.

Program Analysis and Debugging Laboratory

429 Smith Hall, Professor James (Jim) Clause.

This research group focuses on developing tools and techniques to improve software quality by simplifying the detection and debugging of software faults. Current projects include investigating how dynamic tainting can be used to help guide developers in fixing common programming mistakes such as memory leaks and other types of failures. The group is also investigating how information can be safely and efficiently collected from software users and how such information can be used to improve the software development process.

Verified Software Laboratory

421 Smith Hall, Professor Stephen Siegel.

The VSL conducts research into one of the most important problems in Software Engineering: how to develop verifiably correct complex software systems. Currently, the VSL is focusing on parallel programs used for scientific computation and is developing tools that can find defects in these programs or establish their correctness. These tools are based on techniques from logic, compiler theory, symbolic computation, and model checking.

Research Software Engineering