$%675$&7 Use cases are an excellent tool for capturing behavioral requirements of software systems, but they are not an ideal work product for driving design activities. We believe that there is value from complementing use case descriptions with pre-and postcondition descriptions, not only to better support reasoning about system properties and a basis for testing and debugging, but also to better support a predictable decomposition level on which one can base a systematic transition to design. Nevertheless, we recognize that pre-and postcondition descriptions are not widely used in practice. We believe this is in part due to the formalism used. Either the formalism is too heavy to learn and use, or the formalism does not offer sufficient abstraction from the vocabulary of implementation.Via an example, the paper highlights our approach for specifying system behavior, which uses the Unified Modeling Language (UML) and its Object Constraint Language (OCL). We focus the paper on pre-and postconditions descriptions and in particular propose a number of enhancements and interpretations to OCL that we made while refining our approach. In particular, we describe a number of issues that cover areas such as the frame problem, incremental descriptions, structuring schemas, and events and exceptions. .(<:25'6 Unified Modeling Language, Object Constraint Language, Pre-and Postcondition Assertions, Software Specification, Requirements Analysis.
,QWURGXFWLRQSoftware development projects are subject to many factors, software and non-software related. It is a balancing act to get the right combination for a given project and its context-there are always trade-offs to make, according to priorities. For example, timeto-delivery and budget typically have a higher priority than rigor of development and quality assurance for most web-based systems [9], where the inverse is normally the case for systems that are human-life critical. There are more and more projects that are somewhere inbetween safety-critical at the one end and non-critical at the other end. We believe that there is an increasing need for approaches that can provide a reasonable level of quality assurance and rigor in development but still must obey a restrained schedule and budget. For example, at the mid-to-upper range there are many e-business applications, which are "24-7" and mission-critical. Our goal is to produce an approach for specifying reactive system behavior that can be used in the development of systems that lie in the mid-to-upper range. As a consequence, we have developed a software development method called Fondue [33] that covers the whole software development cycle, uses the UML notations, and is based on the Fusion process [6]. In this paper, we cover an important part of the analysis phase of Fondue.