Software Publications


Peter J. Denning



What is Software Quality? 1992. From ACM Communications, January 1992. We are more likely to make headway in building software of quality if we remember that quality is an assessment made by customers. It cannot be "built in."

A Discipline of Software Architecture. 1994. (With Pamela Dargan). From ACM Interactions, January 1994. Neither computer science nor software engineering qualifies as a profession, but software architecture might. Action-centered design is the means of joining the two.

Action-Centered Design. 1996. (with Pamela Dargan). In Bringing Design to Software, Terry Winograd, Ed., Addison-Wesley, 105-127. The standard engineering design process produces a fundamental blindness to the domains of action in which the customers of software systems live and work. The connection between measurable aspects of the software and the satisfaction of those customers is, at best, tenuous. We propose a broader interpretation of design that is based on observing the repetitive actions of people in a domain and connecting those action-processes to supportive software technologies. We call this activity action- centered design and we propose it as the basis of a discipline of software architecture.

Reuse Practices. 1996. For NASA Symposium on Software Reuse (1996). Our old, sophisticated technology for software reuse will do us little good until we realize that it's the practices, not the software, we reuse. (The title is a double entendre.)

Professional Software Engineering Education. 1998. Published in Annals of Software Engineering Education, 1998, No 6. This paper speculates about how universities might organize software engineering professional education. Professional education enables practicing professionals to achieve defined levels of competence and to be certified according to standards in their professions.

Principles for Reliable Operating Systems. 2002. PJD reminisces about joint work in 1975 with Roger Needham on design principles for reliable operating systems. He recounts vivid memories of two findings, about interrupts and about capability addressing. These principles are still valid a quarter century later and remain in wide use.

Post Autistic Software. 2005. Much modern software seems to be anti-social, to lack awareness of context, and to throw tantrums when subjected to stress. John Hiles and I think that the principle of locality can help software designers detect enough of a user's context that the software is a delight to use.