The development of software systems inevitably involves the detection and h
andling of inconsistencies. These inconsistencies can arise in system requi
rements, design specifications and, quite often, in the descriptions that f
orm the final implemented software product. A large proportion of software
engineering research has been devoted to consistency maintenance, or geared
towards eradicating inconsistencies as soon as they are detected. Software
practitioners, on the other hand, live with inconsistency as a matter of c
ourse. Depending on the nature of an inconsistency, its causes and its impa
ct, they sometimes choose to tolerate its presence, rather than resolve it
immediately, if at all. This paper argues for "making inconsistency respect
able" [A phrase first used by D. Gabbay and A. Hunter (in: Proceedings of F
undamentals of Artificial Intelligence Research'91, Springer, Berlin, p. 19
; im Symbolic and Quantitative Approaches to Reasoning and Uncertainty, Lec
ture Notes in Computer Science, Springer, Berlin, 1992, p. 129) to describe
the same sentiments that motivated our work.] - sometimes avoided or ignor
ed, but more often used as a focus for learning and as a trigger for furthe
r (constructive) development actions. The paper presents a characterization
of inconsistency in software development and a framework for managing it i
n this context. It draws upon practical experiences of dealing with inconsi
stency in large-scale software development projects and relates some lesson
s learned from these experiences. (C) 2001 Elsevier Science Inc. All rights
reserved.