- Annette Beyer (for administrative matters)
Software designers and developers face many problems in designing, building, deploying, and maintaining cutting-edge software applications–reliability, security, performance, power, legacy code, use of multi-core platforms, and maintenance are just a few of the issues that must be considered. Many of these issues are fundamental parts of the grand challenges in computer science such as reliability and security.
As an example, consider reliability. No serious software expert would claim that the current state-of-the-art in software engineering allows the construction of even moderately complex software that does not contain flaws or bugs. Perhaps a more realistic approach is to acknowledge that, no matter what process is used (i.e., rigorous design practices, thorough software testing, etc.), the delivered software will inevitably contain imperfections. If we accept this fact, it is then expedient to consider approaches that address these flaws after delivery. Certainly a natural approach would be to consider how to build software that adapts to flaws as it runs.
Similarly, consider the hardware evolution. As technology scaling continues, hardware devices exhibit more variability in their crucial performance metrics. There is both variability over multiple devices that leave the fab, and variability within single devices over their lifetime. Some components can behave erratically or completely fail. Software must be able to adapt to this changing computational substrate.
The underlying theme is that modern software must be able to adapt–whether to an existing bug, a security attack, changing power availability, or a failing core. No longer do we build software with the notion of constancy, rather we fully embrace dynamism and develop the theories and capabilities that allow software to adapt dynamically. The resulting software is more robust, can adapt to a changing computational environment, and is potentially cheaper and faster to build.
Dynamic binary translation (DBT) has gained much attention as a powerful technique for the run-time adaptation of software. It offers unprecedented flexibility in the control and modification of a program during its execution. Some of the uses of DBT include emulating and simulating instruction sets, monitoring and optimizing performance at runtime, providing resource protection and management, virtualizing resources, and detecting malware. In many cases, virtualization looks like a very promising paradigm, and in such cases DBT is the primary means for achieving and implementing virtualization.
This Dagstuhl Seminar brought together experts from research and industry to discuss and identify the problems and promising directions for the new software requirements and hardware architectures described above. During our seminar, we identified significant challenges and opportunities in six areas of DBT research.
- Erik Altman (IBM TJ Watson Research Center, US)
- Bruce R. Childers (University of Pittsburgh, US) [dblp]
- Robert Cohn (Intel - Hudson, US)
- Jack W. Davidson (University of Virginia, US) [dblp]
- Koen De Bosschere (Ghent University, BE) [dblp]
- Bjorn De Sutter (Ghent University, BE) [dblp]
- M. Anton Ertl (TU Wien, AT)
- Michael Franz (University of California - Irvine, US) [dblp]
- Yuan Xiang Gu (Cloakware/Irdeto - Ottawa, CA) [dblp]
- Matthias Hauswirth (University of Lugano, CH) [dblp]
- Thomas Heinz (Robert Bosch GmbH - Stuttgart, DE)
- Wei-Chung Hsu (University of Minnesota - Minneapolis, US)
- Jens Knoop (TU Wien, AT) [dblp]
- Andreas Krall (TU Wien, AT) [dblp]
- Naveen Kumar (VMware - Palo Alto, US)
- Jonas Maebe (Ghent University, BE)
- Robert Muth (Google - New York, US) [dblp]
- Xavier Rival (ENS - Paris, FR) [dblp]
- Erven Rohou (INRIA Rennes - Bretagne Atlantique, FR)
- Roni Rosner (Intel Israel, IL)
- Mary Lou Soffa (University of Virginia, US)
- Jens Troeger (Microsoft Corporation - Redmond, US)
- Christopher Vick (Sun Labs - Oracle - Menlo Park, US)
- security / cryptography
- programming languages / compiler
- Dynamic binary translation
- virtual machines