You are on page 1of 6

To Be and Not to Be: On Managing Inconsistency in Software Development

Bashar Nuseibeh
Department of Computing, Imperial College
180 Queen’s Gate, London SW7 2BZ, UK
Email: ban@doc.ic.ac.uk

Abstract 2. Causes of Inconsistencies (the why)


The development of software systems involves the detection
and handling of inconsistencies. These inconsistencies arise Inconsistency is an inevitable part of software
in system requirements, design specifications and, quite development processes. Even in the most well-defined,
often, in the descriptions that form the final implemented managed and optimised development process, system
software product. This paper presents a critical review of requirements are often uncertain or contradictory,
approaches that explicitly tolerate and manage alternative design solutions exist, and errors in
inconsistencies, and explores different kinds of implementation arise.
inconsistencies that arise during different stages of software The requirements engineering stage of development is
development. Managing inconsistency refers not only to the
detection and removal of inconsistencies, but also to particularly illustrative of such inconsistencies. During
activities that facilitate continued development in their requirements acquisition, customer requirements are often
presence. Such activities include procedures for controlled sketchy and uncertain. For large projects in particular, a
amelioration or avoidance of inconsistency, which in turn number of “client authorities” may exist who have
may require analysis and reasoning in the presence of conflicting, even contradictory requirements. In many
inconsistency. instances customers may not even be certain of their own
needs, and a requirements engineer’s job is partly to elicit
1. Introduction and clarify these needs. The requirements specification
The development of a software system inevitably produced as a result of such a specification and analysis
involves the management of inconsistencies. process however is not static: it continues to evolve as
Inconsistencies may arise in the early stages of new requirements are added and conflicts identified are
development if, for example, contradictory requirements resolved.
are specified. They may also arise in design specifications Thus, there is a wide range of possible causes of
as developers explore alternative solutions; and in inconsistencies in software development. Many of these
implementations if programmers fail, say, to consider are due to the heterogeneity of the products being
particular exceptions. A large proportion of software developed (e.g., systems deploying different technologies)
engineering research has been devoted to consistency and the multiplicity of stakeholders and/or development
maintenance, or at the very least, has been geared towards participants involved in the development process.
eradicating inconsistencies as soon as they are detected. Inconsistencies arise between multiple development
In our previous work [ 121,we proposed an approach to participants becauseof the:
software development that is tolerant of inconsistencies, l different views they hold,
and which provides rules for handling them explicitly. We
also explored the consequences of taking a radically l different languagesthey speak,
decentralised approach in which multiple development l different development strategies(methods) they deploy,
participants hold multiple - often inconsistent - views l different stagesof development they address,
[14]. In this paper, we survey a range of approaches that
tolerate inconsistency during software development, based l partially, totally or non-overlapping areas of concern
on an analysis of the kinds of inconsistencies that arise they have, and
and the ways in which they are handled. We then discuss l different technical, economic and/or political objectives
the requirements for a framework for managing they want to achieve.
inconsistency. Since inconsistencies can occur in software
The paper is organised as follows. We begin by development processes and products for a variety of
outlining the origins and kinds of inconsistencies that reasons, we adopt a single, simple definition of what
arise in software development (section 2), and how they actually constitutes an inconsistency:
may be detected and identified (section 3). With reference An inconsistency occurs ifand only ifa
to related work, we then discuss strategies for handling (consistency) rule has been broken.
inconsistencies (section 4), and outline a framework for Such a rule explicitly describes some form of
managing inconsistency in this setting (section 5). We relationship or fact that is required to hold. In previous
conclude with a discussion of outstanding research issues,
work, we examined three uses of such consistency rules.
and propose an agenda for future work (section 6).

1063-6765/96 $5.00 0 1996 IEEE 164


Proceedings of IWSSD-8

Proceedings of the 8th International Workshop on Software Specification and Design (IWSSD '96)
1063-6765/96 $10.00 © 1996 IEEE
They can describe syntactic relationships between what actually constitutes an inconsistency from one
development artefacts prescribed by a development participant’s perspectivemay not be the case from another
method, which is also a way of describing semantic perspective. An example of this is an “inconsistency” in a
relationships between artefacts produced by that method person’s tax return. Such an inconsistency may actually
[23]. They can also be used to prescribe relationships be a “desirable” piece of information from a tax
between the sub-processes in an overall development inspector’s point of view !
process, which is also a way of coordinating the activities One of the difficulties in handling inconsistencies
of developers deploying different development strategies effectively, even after they have been successfully
[7]. Finally, they can be used to describe user-defined detected, is that the kind of inconsistency detected must
relationships that emerge as development of a software also be identified. To addressthis difficulty, some form of
specification proceeds [8, 91. This is useful for capturing classification of inconsistency may be helpful in
ontological relationships between the products of a diagnosing their source and cause. The CONMAN
development process (for example, two developers (configuration management) system [26] for example,
specifying a library system may use the term “user” and attempts to classify consistency in programs into one of
“borrower” to refer to the sameperson). six kinds in order to facilitate inconsistency handling later
Reducing an inconsistency to the breaking of a rule on. These are: fill consistency - where a system satisfies
facilitates the detection and subsequent identification the rules that a programming language specifies for legal
(“diagnosis”) of inconsistenciesin specifications, and is a programs (insofar as they can be checked prior to
useful tool for managing other “problems” that arise execution); type consistency - where a system satisfies
during software development. For example, if we treat the static type checking rules of the programming
conflict as the interference of the goals of one party language; version consistency - where a system is built
caused by the actions of another party [lo], then we can using exactly one version of each logical source code file;
use inconsistency as a tool for detecting many conflictsl. derivation consistency - where a system is operationally
Similarly, if we define a mistake as an action that would equivalent to some version consistent system; link
be acknowledged as an error by its perpetrator (e.g., a consistency- where each compilation unit is free of static
typo), then we can detect mistakes that manifest type errors, and each symbolic reference between
themselvesas inconsistencies. compilation units is type safe according to the rules of
Hagensen and Kristensen adopted a similar strategy in the programming language; reachable consistency- where
their explicit examination of the “consistency all code and data that could be accessedor executed by
perspective”in software development [ 161.They proposed invoking the system through one of its entry points are
a framework that focuses on structures for representing safe. CONMAN checks for all six kinds of consistency
information (“descriptions”) and the relations between automatically, and then reacts differently depending on the
these structures. Consistency of descriptions is defined as kind of inconsistency detected. The six kinds of
relations between interpretations of descriptions. inconsistency are very specific to configuration
Consistency handling techniques are modelled in terms of management applications, but their identification is
descriptions, interpretations and relations. fundamental to effective inconsistency handling in this
setting.
3. DeMug&~hlco-(lhehow)
Once consistency has been defined in terms of explicit 4. Handling IInconsistencies
rules, inconsistency may be detected automatically by Identifying the cause and nature of an inconsistency
checking these rules. For example, a type checker can may not be possible without further analysis and action
check whether or not an instance or variable conforms to in the presence of inconsistency. For this reason,
its type definition. Similarly, a parser can check whether approachesthat tolerate inconsistencyare needed.We now
or not a sentenceconforms to the syntactic rules specified examine alternative approachesto inconsistency handling
by its grammar. Simple inferences in classical logic can that tolerate inconsistency in a variety of ways. We then
also be used to detect logical inconsistencies resulting use this survey to suggest some general approaches for
from too much or too little information. For example, a acting on, and reasoning in the presence of,
contradiction (the simutaneousassertion, or deduction, of inconsistency.
both X and 1X) may be detected in this way. 4.1. Related work (the who)
Other kinds of inconsistency are more difficult to detect.
A conflict between two development participants may not Schwanke andiKaiser suggestthat during large systems
manifest itself as an inconsistency until further development, programmers often circumvent strict
development has taken place (making the original source consistency enforcement mechanisms in order to get their
of the inconsistency difficult to identify). Furthermore, jobs done [26]. They propose an approach to “living with
inconsistency”, implemented in the CONM A N
programming environment described in section 3.
1 Of course, not all conflicts will manifest themselves as CONMAN handles inconsistency by: identifying and
inconsistencies, particularly if the conflict is caused by a
“conceptual disagreement” such as a difference in personal values. tracking the six different kinds of inconsistencies

165

Proceedings of the 8th International Workshop on Software Specification and Design (IWSSD '96)
1063-6765/96 $10.00 © 1996 IEEE
described above (without requiring them to be removed); supported by exception handling mechanisms that deal
reducing the cost of restoring type safety after a change with errors resulting from built-in operations (e.g.,
(using a technique called “smarter recompilation”); and, division by zero) is also relevant. Building on this work,
protecting programmers from inconsistent code (by Borgida proposed an approach to handling violations of
supplying debugging and testing tools with inconsistency assumptions in a database [3]. His approach provides for
information). CONMAN is somewhat restricted in kinds “blaming” violations on one or more database facts. In
of handling strategies it supports, because of the small this way, either a program can be designed to detect and
and fixed kinds of inconsistency it recognises. treat “unusual” facts, or a database can adjust its
Balzer proposes the notion of “tolerating inconsistency” constraints to tolerate the violation in the data. Balzer’s
by relaxing consistency constraints during development approach described above is based on Borgida’s
[l]. The approach suggests that inconsistent data be mechanisms.
marked by guards (“pollution markers”) that have two Feather has recently also proposed an approach to
uses: (1) to identify the inconsistent data to code modular&d exception handling [ 1 l] in which programs
segments or human agents that may then help resolve the accessing a shared database of information impose their
inconsistency, and (2) to screen the inconsistent data from own assumptions on the database,and treat exceptions to
other segments that are sensitive to the inconsistencies. those assumptions differently. The assumptions made by
The approach does not however provide any mechanism each program together with their respective exception
for specifying particular actions that need to be performed handlers are used to provide each program with its own
in order to handle these inconsistencies. individual view of the database. Alternative - possibly
Gabbay and Hunter suggest “making inconsistency inconsistent - views of the same information can therefore
respectable” by proposing that inconsistencies be viewed be used to support different users or developers of a
as signals to take external actions (such as “asking the software system. Each program’s view is derived from the
user” or “invoking a truth maintenance system”), or as shared data in such a way as to satisfy all the program’s
signals for taking internal actions that activate or assumptions. This is achieved by a combination of
deactivate other rules [ 151. Again, the suggestion is that ignoring facts that hold in the shared data and “feigning”
“resolving” inconsistency is not necessarily done by facts that do not hold.
eradicating it, but by supplying rules that specify how to Table 1 summarises the various approaches to
act in the presence of such inconsistency. Gabbay and inconsistencyhandling described above.
Hunter further propose the use of temporal logic to
specify these meta-level rules. We have adapted this 4.2. AdinginIhepmsmceofinco~(~wha@
approach to multi-perspective software development [ 121, The approachesdescribed above handle inconsistencies
in which logical inconsistencies between partial in different ways. What they have in common, however,
specifications (Viewpoints) are detected by translating is the goal of allowing continued development in the
them into classical logic, and then using an action-based presenceof inconsistency. Such action may include:
temporal logic to specify inconsistency handling rules. Ignoring the inconsistency completely and
This approach however requires further development since continuing development regardless. This may be
classical logic does not allow reasoning in the presence of appropriate in certain circumstances where the
inconsistency. inconsistency is isolated and does not affect further
Narayanaswamy and Goldman propose “lazy” development, or prevent it from taking place.
consistency as the basis for cooperative software Circumventing the inconsistency and continuing
development [21]. This approach favours software development. This may be achieved by marking
development architectures where impending or proposed inconsistent portions of the system (e.g., using
changes - as well as changes that have already occurred - Balzer’s “pollution markers”) or by continuing
are “announced”. This allows the consistency development in certain directions depending on the
requirements of a system to be “lazily” maintained as it kind of inconsistency identified (e.g., as in
evolves. The approach is a compromise between the CONMAN). It is appropriate in situations where it is
optimistic view in which inconsistencies are assumed to desirable for the inconsistency to be avoided and/or
occur infrequently and can thus be handled individually its removal deferred.
when they arise, and a pessimistic approach in which Removing the inconsistency altogether by correcting
inconsistencies are prevented from ever occurring. Such a any mistakes or resolving conflicts. This depends on
compromise is particularly realistic in a distributed a clear identification of the inconsistency and
development setting where conflicts or “collisions” of assumesthat the actions required to fix it are known.
changes made by different developers may occur. Lazy Restoring consistency completely can be difficult to
consistency maintenance supports activities such as achieve, and is quite often impossible to automate
negotiation and other organisational protocols that completely without human intervention.
support the resolution of conflicts and collisions.
Ameliorating inconsistent situations by performing
Finally, work on programming languages which are actions that “improve” these situations and increase

166

Proceedings of the 8th International Workshop on Software Specification and Design (IWSSD '96)
1063-6765/96 $10.00 © 1996 IEEE
Approach Mechanism Scope
Living with inconsistency [26] Smarter recompilation Programming
(Configuration Management)
Tolerating inconsistency [l] Pollution markers Programming
Making inconsistency respectable [15] Meta-level temporal rules (Logic) Databases
Application: Inconsistency handling Multiple Viewpoints in software
between multiple perspectives [12] development
Lazy inconsistency [21] Announce proposed changes Cooperative software developmen
Exception handling [3] Run-time exception handlers Database/Information systems
Modularised exception handling [l l] Multiple exception handlers Programming views
Table 1: Some inconsistency handling approaches in software development.

the possibility of future resolution (this may involve occurs between a software development processdefinition
ignoring or circumventing inconsistencies). This and the actual (enacted) process instance [6]. Such an
approach is attractive in situations where complete inconsistencybetween “enactment state”and “performance
and immediate resolution is not possible (perhaps state” is often avoided by blocking further development
because further information is required from another activities until some precondition is made to hold. Since
development participant), but where some steps can this policy is overly restrictive, many developers attempt
be taken “fix” part or some of the inconsistent to fake conformance to the process definition (for
information. This approach however requires example, by fooling a tool into thinking that a certain
techniques for analysis and reasoning in the presence task has been performed in order to continue
of inconsistency. development).
Logic-based approaches offer promising contributions What is therefore needed is a software development
to inconsistency handling by providing techniques that process which is flexible enough to tolerate development
facilitate analysis and reasoning in the presence of that diverges from its definition, or a process that can be
inconsistency. For example, the proof rules of classical dynamically corrected, changed and/or improved as it is
logic may be adapted to allow continued reasoning in the being enacted. Cugola et al. [5] have addressed exactly
presence of inconsistency [2], and various labels and this problem in their temporal logic-based approach
qualifications may be used to track and diagnose which is used to capture and tolerate some deviations
inconsistent information (e.g., by propagating labels from a process description during execution. Deviations
during reasoning and computing maximally consistent are tolerated as long as they do not affect the correctness
subsetsof inconsistent information) [ 171. of the system (if they do, the incorrect data must be fixed,
Promising contributions are also offered by work on or the process model - or its active instance - must be
fault-tolerant distributed systems [4] where continued changed).Otherwise, deviations are tolerated, recorded and
operation of these systems is still possible in the propagated - and “pollution analysis” (based on logical
presenceof failure. Failure in this context is analogous to reasoning) is performed to identify possible sources of
inconsistency in software development, and includes inconsistency.
problems caused by omissions (e.g., server not 5. Towards a Framework for Managing
responding to input), timing (e.g., server response is too
Inconsistency (the where)
early or too late), response (e.g., server response is
incorrect) and crashes.What fault-tolerant systemshave in Clearly, managing inconsistency is a multi-faceted
common in such failure scenarios is their ability to react activity that is increasingly recognised as fundamental to
to these failures and continue operating. In fact, analysis the successful management of software development. In
of many such failures often produces information that fact, one could argue that in reality software development
identifies hitherto undetectederrors which can then also be practitioners live and work with inconsistent information
repaired. on a daily basis. A framework is therefore needed within
Finally, it is worth noting that what we have been which a variety of inconsistency management activities
may be performed. Such a framework should facilitate the
discussing thus far are inconsistencies that arise in the
artefacts of software development (e.g., specifications, interworking of a combination of, normally isolated,
programs, systems, etc.). Inconsistencies can also arise in techniques, mechanisms and tools for detecting,
software development processes themselves. An identifying (diagnosing/classifying) and handling
interesting example of these is an inconsistency which inconsistencies.

167

Proceedings of the 8th International Workshop on Software Specification and Design (IWSSD '96)
1063-6765/96 $10.00 © 1996 IEEE
We are currently pursuing a logic-based approach to systems for example, some degree of uncertainty or
managing inconsistency, an elaboration of which is inconsistency may be tolerated - even in the final product.
beyond the scope of this paper [17]. ,In summary In such cases however, there is a need to measure (or at
however, we detect logical inconsistencies by translating least estimate) both the likely consequencesand frequency
different kinds of development knowledge (including of failures, in order to assesssystem reliability, and then
specifications) into classical logic. We then use an devise ways of handling such failures [20].
adaptation of classical logic, called quasi-classical (QC) A clearer understanding of the nature of software
logic, that allows continued logical reasoning in the development is also needed in order to help identify and
presence of inconsistency. We annotate the proof rules of prioritise inconsistencies. An illustrative example of this
the logic with labels which can then be used to diagnose is the distinction between an inconsistency reflecting an
the likely sources of inconsistency, and to track their error in development, and an inconsistency that only
consequences during development. Inconsistencies are exists temporarily becausecertain development stepshave
handled (and ultimately managed) by specifying, in an not been performed yet. The latter inconsistency is a part
action-based temporal logic, guiding actions that may be of every development and, is less important than the
taken in the presence of particular kinds of inconsistency. former, which reflects a more fundamental failure in
Providing automated tool support for the different development. If at all, current process modelling
activities involved in managing inconsistency is both technology [ 131 provides guidance for “normal”
crucial and in need of further work. For example, many development (e.g., “what should I do next?“), whereas we
commercial CASE tools provide specification consistency are attempting to handle inconsistencies that are usually
checkers, and process-centred environments check the labelled as “undesirable” in such a development process
processes by which these specifications are developed. (e.g., “how do I get out of the mess I’m now in?“) [22].
However, most of these tools have limited inconsistency Moreover, because some inconsistencies can only be
handling capabilities, concentrating instead on identified as a development process unfolds, we have been
inconsistency detection and identification, and leaving exploring process-guided approaches to inconsistency
handling to the users of these tools (this is similar to handling that analyse explicitly recorded development
programming-support tools like debuggers which provide actions, then act according to the context of any
limited automated support for removing errors from inconsistenciesdetected [ 18,241.
programs). Some scope for conflict resolution is provided Another interesting temporal consideration in this
by negotiation-support tools [25], which can be useful for setting is what we might call the “age” of an unresolved
handling inconsistencies that occur between development inconsistency. This is a measure of, say, the number of
participants. Finally, a class of research tools known as development actions that were performed since the last
theorem provers [ 191 offer some scope for inconsistency time an inconsistency was introduced by an action. It may
handling in that they attempt to prove that a description be useful to explore the correlation, if any, between the
(e.g., a specification) satisfies a set of properties or age of an unresolved inconsistency and the degree of
contains no contradictions. Therefore, these tools have the difficulty by which it may be handled or resolved.
capability of reasoning about why an inconsistency exists Intuitively, one would expect that the greater the age of
when a proof cannot be produced. the last consistency check, the higher the risk becomes,
and that there is a trade-off between the cost of
6. Discussion, Conclusions & Future Work consistency checking and the cost of resolution (we
We have argued that software development processes measure risk in this context as the likelihood of
must explicitly support the evolving nature of software consistency failures multiplied by the cost of resolving
systems (specifications and programs), and must therefore them).
be capable of managing the inevitable inconsistenciesthat Finally, in this paper we have not explicitly addressed
arise in the descriptions of such systems. Managing software development process considerations that
inconsistencies in this setting does not necessarily mean determine when consistency checks should be performed,
removing them, although in many cases this may be how these checks should be performed, and what should
desirable, rather, it involves: (a) detecting and identifying be done as result of performing these checks. Broadly
the kinds of inconsistencies, and possibly their source, speaking, deciding when to perform a consistency check
and (b) continuing development in the presence of such should be determined by the process prescribed by a
inconsistencies, with a view to removing them later on software development method. This should be designed to
down the line (or in some situations deferring resolution be “non-intrusive” since continuous reminders to perform
indefinitely). Often, intermediate steps that ameliorate the checks are irritating and undesirable. The way in which
state of a specification, or simply make progress towards checks are performed on the other hand, is an interaction
removing inconsistencies in it, are also useful. issue and is determined by the context in which the check
Of course, depending on the application for which a is applied. For example, in a cooperative development
software system is being developed, different “levels of setting a negotiation protocol may be suitable, whereas in
reliability” may also be acceptable.For non-safety-critical a distributed systems setting low-level communication

168

Proceedings of the 8th International Workshop on Software Specification and Design (IWSSD '96)
1063-6765/96 $10.00 © 1996 IEEE
protocols may be more appropriate. Finally, determining [91 S. Easterbrook and B. Nuseibeh (1996); “Using Viewpoints for
Inconsistency Management”; (to appear in) Software
how to act once a consistency check has been performed Engineering Journal; IEEIBCS.
is largely an inconsistency management issue which we [lOI S. M. Easterbrook, E. E. Beck, J. S. Goodlet, L. Plowman, M.
have discussedin this paper. Sharples and C. C. Wood (1993); “A Survey of Empirical
Studies of Conflict”; (In) CSCW: Cooperation or Conflict?; S.
We believe that many of the inconsistency management M. Easterbrook (Ed.); l-68; Springer-Verlag, London.
issues raised in this paper lie at the heart of software 1111 M. Feather (11995);“Modularized Exception Handling”; Draft
technical report, 9th February 1995; USC/Information Sciences
development. At all stages of a development life cycle, Institute, Marina de1Rey, California, USA.
inconsistencies may arise and can be used to provide 1121 A. Finkelstein, D. Gabbay, A. Hunter, J. Kramer and B.
valuable input into a software development process. In Nuseibeh (1994); “Inconsistency Handling in Multi-Perspective
Specifications”; Transactions on Software Engineering, 20(8):
fact, identifying and handling inconsistency in this 569-578, August 1994: IBEE CS Press.
context is a vehicle for monitoring and guiding [I31 A. Finkelstein, J. Kramer and B. Nuseibeh (Eds.) (1994);
development, and can be used as a tool for measuring Software Process Modelling and Technology, Advanced
Software Development Series, Research Studies Press Ltd.
many attributes of software development processes and (Wiley), Somerset,UK.
products. We believe that there is a need to addressissues u41 A. Finkelstein, J. Kramer, B. Nuseibeh, L. Finkelstein and M.
of inconsistency management explicitly, and to provide Goedicke (1992); “Viewpoints: A Framework for Integrating
Multiple Perspectivesin System Development”; Int. Journal of
computer-based tools that support this activity. These Software Engineering and Knowledge Engineering, 2(l): 31-58,
tools need to go beyond inconsistency avoidance or March 1992; World Scientific Publishing Co.
consistency maintenance, allow reasoning in the presence 1151 D. Gabbay and A. Hunter (1992); “Making Inconsistency
Respectable: A Logical Framework for Inconsistency in
of inconsistency, and provide support for inconsistency Reasoning: Part 2”; (In) Symbolic and Quantitative Approaches
handling which does not always involve immediate to Reasoning and Uncertainty; 129-136; LNCS, Springer-
inconsistency resolution. Ultimately however, many Verlag.
1161 T. M. Hagensen and B. B. Kristensen (1992); “Consistency in
inconsistencies can only be resolved by human Software System Development: Framework, Model, Techniques
intervention, and therefore there also is a need to provide & Tools”; Sojtware Engineering Notes (Proc. of ACM SIGSOPT
tools that support human-centred inconsistency Symposium on Software Development Environments), 17(5): 58-
67,9-l lth December 1992; SIGSOFT & ACM Press.
management. v71 A. Hunter and B. Nuseibeh (1995); “Managing Inconsistent
Specifications: Reasoning, Analysis and Action”; Technical
7. Acknowledgements report, DoC 95/15, June 1995; Department of Computing,
The ideas presented in this paper have benefited from discussions Imperial College, London, UK.
with Steve Easterbrook. Martin Feather. Anthonv Finkelstein. Michael VU E9eurhardt, A. Finkelstein, J. Kramer and B. Nuseibeh
Goedicke, Carlo Ghezzi, Tony Hunter, Jeff Kramer and Vie Stenning. : “Decentralised Process Enactment in a Multi-
Partial funding was provided by the UK EPSRC as part of the VOILA PerspectiveDevelopment Environment”; Proc. of 17th Int. Conj
project, and the European Union as part of the Basic ResearchAction of Software Engineering, Seattle, Washington, USA, 23-30th
Promoter and the IS1 project (ECAUSOO3). April 1995,255-264; ACM Press.
[I91 P.-A. Lindsay (1988); “A Survey of Mechanical Support for
8. References Formal Reasoning”; Software Engineering Journal (special issue
on mechanical support for formal reasoning), 3(l): 3-27,
Ill R. Balzer (1991); “Tolerating Inconsistency”; Proc. of 13th In?. January 1988; IEE, UK.
Conj on Sofrware Engineering (ICSE-13). Austin, Texas, USA, 1201 B. Littlewood (1994); “Learning to Live with Uncertainty in
13-17th May 91, 158-165; IEEE CS Press. Our Software”; Proc. of 2nd Int. Symposium on Software
121 P. Besnard and A. Hunter (1995); “Quasi-classical Logic: Non- Metrics, London, UK, 24-26th October 94.2-8; IEEE CS Press.
trvializable classical reasoning from inconsistent information”: 1211 K. Narayanaswamy and N. Goldman (1992); ““Lazy”
{In) Symbolic and Quantitati& Approaches to Uncertainty; C: Consistency: A Basis for Cooperative Software Development”;
Froidevaux & J. Kohlas (Eds.); 44-51; LNCS 946, Springer- Proc. of Int. Conj on Computer-Supported Cooperative Work
(CSCW ‘92p, Toronto, Ontario, Canada, 31st October - 4th
[31 A. Borgida (1985); “Language Features for Flexible Handling November, 257-264; ACM SIGCHI & SIGOIS.
of Exceptions in Information Systems”; Transactions on 1221 B. Nuseibeh, A. Finkelstein and J. Kramer (1993); “Fine-Grain
Database Systems, lO(4): 565-603, December 85; ACM Press. Process Modelling”; Proc. of 7th Int. Workshop on Software
[41 F. Christian (1991); “Basic Concepts and Issues in Fault- Specification and Design (IWSSD-7). Redondo Beach,
Tolerant Distributed Systems”; Proc. of Int. Workshop on California, USA, 6-7 December 1993,42-46; IEEE CS Press.
Operating Systems of the 90s and Beyond, Dagstuhl Castle, WI B. Nuseibeb, J. Kramer and A. Finkelstein (1994); “A
Germany, 8-12th July 1991, 119-149; LNCS 563, Springer- Framework for Expressing the Relationships Between Multiple
Verlag. Views in RequirementsSpecification”; Transactions on Sojtware
[51 G. Cugola, E. Di Nitto, C. Ghezzi and M. Mantione (1995); Engineering, 20(10): 760-773, October 1994; IEEE CS Press.
“How To Deal With Deviations During Process Model 1241 B. Nuseibeh, J. Kramer, A. Finkelstein and U. Leonhardt
Enactment”; Proc. of 17th Int. Con& on Software Engineering (1995); “Decentralised Process Modelling”; Proc. of 4th
(ICSE-27). Seattle, USA, 23-30 April 95,265-273; ACM Press. European Workshop on Software Process Technology (EWSPT
1’51 M. Dowson (1993); “Consistency Maintenance in Process ‘951, Noordwijkerhout, 185-188; Springer-Verlag.
Sensitive Environments”; Proc. of Workshop on Process 1251 W. N. Robinson (1992); “Negotiation Behaviour During
Sensitive Environments Architectures, Boulder, Colorado, USA, Requirements Specification: A need for automated conflict
Rocky Mountain Institute of Software Engineering (RMISE). resolution”; Proc. of 12th Int. Conf. on Software Engineering,
[71 S. Easterbrook, A. Finkelstein, J. Kramer and B. Nuseibeh Nice, France, 26-30th March 1990,268-276; IEEE CS Press.
(1994); “Coordinating Distributed Viewpoints: The Anatomy of 12’3 R. W. Schwanke and G. E. Kaiser (1988); “Living With
a Consistency Check”; Concurrent Engineering: Research and Inconsistency in Large Systems”; Proc. of the Int. Workshop on
Applications, 2(3): 209-222, CERA Institute, West Bloomfield, Software Version and Configuration Control, Grassau,Germany,
USA. 27-29 January 1988,98-118; B. G. Teubner, Stuttgart..
la1 S. Easterbrook and B. Nuseibeh (1995); “Inconsistency
Management in an Evolving Specification”; Proc. of 2nd Int.
Symposium on Requirements Engineering (RE 95). York, UK,
48-55; IEEE CS Press.

169

Proceedings of the 8th International Workshop on Software Specification and Design (IWSSD '96)
1063-6765/96 $10.00 © 1996 IEEE

You might also like