The concept of use case has become popular in developing requirements for software systems. It is even recommended as an inherent part of the Unified Modeling Language (UML). An early predecessor of the use case for systems and procedures practice in the 1960's was the Playscript procedure. This article describes how Playscript can contribute to better use… (More)
Many traditional engineering designs, other than software, depend on the physical properties of components. Those properties enable the engineer to specify precise tolerances between those components. Software components are abstractions with no inherent physical properties. The absence of physical properties makes it more difficult, but not impossible, to… (More)
Speakers at conferences often mention the Principle of Least Surprise. This article explores the notion of surprise on a Surprise Tolerance Continuum. We also comment on how different disciplines benefit from managing surprise. Since this publication deals with software engineering, we focus on problems related to the creation, management, and maintenance… (More)
Many different concerns contribute to the complexity of software development. Some of these concerns are easy to spot. Others are right in front of us all along but not explicitly identified in a way that makes them intellectually accessible. We describe an idea that has always been in the background of awareness for programmers and software designers, but… (More)
Article 5 ID: 1449608 DOI: 10.1145/1449603.1449608 It has long been recognized that there is a need for a comprehensive model for graduate software engineering education in the U.S. and worldwide. This article describes such an initiative and invites interested parties to participate.
Software risk management is a critical aspect of software engineering. Software risks based on metrics derived from a large number of similar projects, along with effective statistical methods, can improve risk prediction, assessment, and management.
Software safety and software risk management are two of the most important facets of modern software engineering. To understand safety requires that we understand first what is not safe. This paper examines the concept of failure in software engineering and describes an approach to failure-driven software design (FDSD).