4. 3 The Gypsy language 72 4. 4 The Gypsy Verification Environment 73 4. 5 A simple example 81 4. 6 Specification data types 91 4. 7 Future directions 95 100 4. 8 Conclusions 5 Reliable programming in standard languages 102 Bernard Carre, Program Validation Ltd. 5. 1 Introduction 102 5. 2 Language requirements for high-integrity programming 103 5. 3 The use of standard languages 108 5. 4 Programming in Pascal and Ada 110 1'19 5. 5 Practical experiences NewSpeak: a reliable programming language 6 122 I. F. Currie, Royal Signals and Radar Establishment 6. 1 Introduction 122 6. 2 Types and values 127 6. 3 Declarations and variables 132 6. 4 Guarded declarations 134 6. 5 Cases and conditionals 136 6. 6 Loops 138 6. 7 Procedures 140 6. 8 Assertions 145 6. 9 Timing 147 6. 10 Conclusion 149 6. 11 Appendix 1: summary of syntax 150 6. 12 Appendix 2: type lattice and widening 156 7 Program analysis and systematic testing 159 M. A. Hennell, University of Liverpool, and D. Hedley and I. J. Riddell, Liverpool Data Research Associates Ltd. 7. 1 Introduction 159 7. 2 The basic requirement 160 7. 3 The Liverpool experience 161 7. 4 The Liverpool experiments 162 7. 5 The LDRA Testbeds 163 Interpretation 169 7. 6 7. 7 Applicability and benefits 171 7. 8 Safety-critical systems 173 VI 8 Program analysis and verification 176 Bernard Carre, Program Validation Ltd. 8. 1 Introduction 176 8. Within 50 years computers could have capabilities rivaling that of the human brain. Effective utilization of such new technologies poses a significant challenge to the computer science community, which finds an ever increasing number of complex applications within its technological grasp. In addition to increased complexity, most, if not all, of these applications are also accompanied by an inherent increase in the consequences associated with their failure, resulting in the construction of increasingly high consequence complex systems. Systems that fall within this domain are beyond the ability to construct in a brute force manner. There are two major challenges in developing such systems: manage complexity and provide sufficient evidence that the system satisfies dependability constraints. Society is tacitly relying on the research community to solve these problems on a timetable satisfying the needs of industry. While impressive results have been obtained, the research community is still, to some extent, hamstrung by the lack of realistic case study problems against which to benchmark new techniques and approaches. The purpose of High Integrity Software is to explore a cross-section of some of the most promising areas of research in the construction of high consequence complex systems, for example, a case study involving the Bay Area Rapid Transit (BART) system. Because of its scope and complexity, the BART case study is being recognized by many in the formal methods community as one of the definitive case study problems, and as such provides a valuable insight into the challenges that must be faced in the upcoming years. High Integrity Software is suitable as a secondary text for a graduate level course, and as a reference for researchers and practitioners in industry Front Matter....Pages i-viii Introduction....Pages 1-5 Formal specification and implementation....Pages 6-38 Designing for high integrity: the software fault tolerance approach....Pages 39-68 Practical experience with a formal verification system....Pages 69-101 Reliable programming in standard languages....Pages 102-121 NewSpeak: a reliable programming language....Pages 122-158 Program analysis and systematic testing....Pages 159-175 Program analysis and verification....Pages 176-197 The algebraic specification of a target machine: Ten15....Pages 198-225 Assurance in high-integrity software....Pages 226-273 Modelling real-world issues for dependable software....Pages 274-316 Contractual specification of reliable software....Pages 317-354 Back Matter....Pages 355-360