| Concepts in Software Engineering | |||||
|
|
|
| |||
|
The goal of research in this area is to provide a solid foundation for
development and deployment of software for systems with stringent
requirements for security, safety, functional correctness, and
efficiency. Principal focuses are generic programming methodology and
program analysis techniques. Generic programming is largely an
activity of "lifting" of specific computer code to a more widely
useful level, while maintaining high standards of efficiency and other
required properties. This process is aided by conceptual
classification of software components according to rigorously
specified requirements. Results include the C++ Standard Template
Library (STL), which is based on joint research with colleagues in
industry; new generic sorting and searching algorithms; and new
algorithm concept taxonomies. In the program analysis area, new
techniques are being developed for different software tasks, including
testing, understanding, and verification of object-oriented software.
Results include new analyses that have been applied to testing of
polymorphism in Java applications, and to testing of recovery code in
highly reliable Web service applications. Future directions include
greater integration of generic programming and program analysis
methodology, with increased emphasis on proof-based approaches. The
long range goal is to meet new challenges that arise from distributed
software components, embedded system software updates, Web services,
and other software for modern, pervasive computing.
There are two intended meanings of the word "Concepts" in our research area's name: the common one, and the more specific, technical sense of "concept" as a set of abstractions, such as abstract data types or algorithms, whose membership is defined by a list of requirements. In this technical sense, concepts are the main abstraction and organization mechanism in generic programming. The key operation on concepts is refinement: incrementally adding requirements to a concept description, thereby reducing the number of abstractions it contains but at the same time enabling more efficient algorithms or more refined analysis to be applied to the abstractions that remain. Repeated refinement with different choices of additional requirements results in a concept taxonomy or hierarchy, such as the one for STL Container Concepts documented in the Web pages of SGI's STL Programmer's Guide; see for example the STL Algorithms on Forward Containers diagram, which depicts a small part of the overall STL concept taxonomy and the way that additional requirements on the concepts enable additional (efficient) generic algorithms. |
For an index and listing of most of the CISE group's publications, please visit our Publication Server. Some publications have not yet been included; see also our individual Web pages.