eed not change when the variable is reassigned Discrete event modelling (Birtwistle, 1985) can be used to model to a different memory location as a result of the change. The tool, as the performance of hardware and software systems, identify bottle- assembler, which translates the assembly language into machine necks, and to predict behaviour under various running conditions. code, can resolve the symbolic references. Tools exploiting queuing theory also exist. 25.5.3 Reliability 25.6.1.3 Third generation Most of the common programming languages, such as Fortran, In hardware reliability models it is assumed that components will Pascal, C and Ada belong to the third generation. Communications fail, but that they are replaced and can eventually fail again. In systems software is predominately written in languages of this software reliability modelling, however, it is assumed that once a generation, and some of their characteristics are described below. failure occurs its source can be located and the fault removed permanently. Two leading models are the Jelinski-Moranda (Jelinski, 1972) and 25.6.1.4 Fourth generation the Littlewood-Verrall (Littlewood, 1973). The former is based on the assumption that the failure rate of the software is proportional to The fourth generation consists of problem oriented languages. Their the number of faults not yet corrected; the latter assumes that time main area of use is in commercial data processing for tasks such as between failures follows an experimental distribution. report generation and data analysis. Statistical analysis packages These and others are discussed in Goel (1985) and Shanthikumar generally provide fourth generation languages. (1983). The spread of problem oriented languages into domains other than commercial data processing is slow but continuing. Some of the notations associated with text processing and font editing, for Programming languages example, may be considered to belong to this generation. 25.6.1 Five generations 25.6.1.5 Fifth generation Programming