3 Classification of Software System TYPes In this chapter a classification scheme for programs is presented and the different types of software are described. These need different versions of the software environments described in chapter 2. In this chapter the different aspects of software engineering environments are dis- cussed. Just as there is no one programming language which is suitable for all types of applications, so there is no software engineering environment which is correct for all types of projects. Where it is necessary to implement programs embedded in a more complex environment, methods must be used to specify the interaction of the program with its environment. If there are time requirements, then specification, design and implementation methods must be used that allow the description of these requirements. There are special requirements in a software engineering environment for the development of fault tolerant programs. Designing a concurrent or distributed program is different from designing a sequential program. Even the hardware architecture influences the choice of the right software engineering environment. In order to use the special features of a particular hardware architecture, special techniques are required. In summary the type of software system depends on the following major charac- teristics: The relationship to the environment, e.g. interactive, non-interactive The general system behaviour, e.g. time constraints, fault tolerance The expected program type, e.g. sequential or concurrent The system architecture on which the software will run, e.g. distributed or not distributed These characteristics are covered by different aspects of a software engineering en- vironment. The relationship of a software system to the environment requires cer- tain software life cycles and methods. In order to describe time constraints for exam- ple a specification method must have corresponding language features. The system architecure can be hidden by tools. A compiler can translate a program into code which is executed concurrently. In the following sections, the characteristics of software systems and their rela- tionship to different aspects of software engineering environments are described. A. Fleischmann, Distributed Systems © Springer-Verlag Berlin Heidelberg 1994