It is widely accepted that a requirements specification describes software system functions and features independently of its implementation. This apparently restrictive statement is, however, the superficial manifestation of a major problem: how to properly describe software systems independently of their implementations.
Most approaches used during requirements engineering (RE) all too often focus on the internal aspects of the software, obviating the decisive influence of the environment. This chapter, however, specifies the relationships between requirements, specifications, and environment. Distinguishing between these three elements during RE provides a systematic approach to the description of software systems.
For readers familiar with Jackson’s thought, this chapter provides no new input. Indeed, it is a quick summary of one of his books [1]. Nevertheless, this chapter could be of interest to a casual reader. Indeed, most practitioners, accustomed to constructive methods and techniques like conceptual models or use cases, will find this work disconcerting.
The text is dotted with a variety of simple examples, which are at the same time sufficient to illustrate the concepts it deals with. However, the brevity of the chapter means that the complex problems addressed can only be dealt with superficially. In any case, any work by Jackson is always impressive for its logic and systematism, and, although it has not deeply penetrated the RE community, it has the solidity required to become a foundational framework for software systems specification.