To Be And Not To Be: On Managing Inconsistency in Software Development

Bashar Nuseibeh

Abstract

The development of software systems involves the detection and handling of inconsistencies. These inconsistencies arise in system requirements, design specifications and, quite often, in the descriptions that form the final implemented software product. This paper presents a critical review of approaches that explicitly tolerate and manage inconsistencies, and explores different kinds of inconsistencies that arise during different stages of software development. Managing inconsistency refers not only to the detection and removal of inconsistencies, but also to activities that facilitate continued development in their presence. Such activities include procedures for controlled amelioration or avoidance of inconsistency, which in turn may require analysis and reasoning in the presence of inconsistency.

This paper is in the Proceedings of 8th International Workshop on Software Specification and Design (IWSSD-8), pp164-169, Scloss Velen, Germany, 22-23 March 1996, IEEE CS Press.

It is also available over the Web: [compressed postscript version].






This research was sponsored by the EPSRC, under a research project entitled Managing Inconsistency in Software Engineering.