Everyday software must be sufficiently 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 failure. 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 fullydetailed 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
To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.