Invited Keynote Address at the Thirteenth International Symposium on Software Reliability Engineering (ISSRE), Annapolis, MD, November, 2002.
Download the PDF version.
Everyday software must be dependable for the needs of everyday people.
Everyday people can usually intervene when software misbehaves, and problems
with their software are usually irritating but not catastrophic. Everyday
software must thus provide cost-effective service with reasonable amounts of
human attention. Dependability for these everyday needs arises from matching
dependability levels to actual needs, achieving reasonably low failure rates at
reasonable cost, providing understandable mechanisms to recognize and deal with
failure, and enabling creation of individually-tailored systems and
configurations from available resources. This leads to different challenges from
mission-critical systems that operate autonomously and risk catastrophic
Much everyday software depends on inexpensive or free information resources available dynamically over the Internet or through retail channels. Much of this software runs on mobile devices with limited power. Increasingly, it is composed by its users rather than by professionals, and the resulting software uses information resources in ways that the resources' creators could not anticipate. In the near future user-managed configurations will have to interact acceptably with configurations managed by other users. Software development in this setting requires methods that tolerate incomplete knowledge, pursue value rather than simply capability, and base reasoning on aggregate rather than fully-detailed information. We will identify research challenges that arise from the need for everyday dependability and give examples of current Carnegie Mellon research that addresses these challenges.
Brought to you by Composable Software Systems Research Group in the School of Computer Science at Carnegie Mellon University.
[Last modified 10-OCT-02. Mail suggestions to the Maintainer.]