Building High Integrity Applications with SPARK


Book Description

Software is pervasive in our lives. We are accustomed to dealing with the failures of much of that software - restarting an application is a very familiar solution. Such solutions are unacceptable when the software controls our cars, airplanes and medical devices or manages our private information. These applications must run without error. SPARK provides a means, based on mathematical proof, to guarantee that a program has no errors. SPARK is a formally defined programming language and a set of verification tools specifically designed to support the development of software used in high integrity applications. Using SPARK, developers can formally verify properties of their code such as information flow, freedom from runtime errors, functional correctness, security properties and safety properties. Written by two SPARK experts, this is the first introduction to the just-released 2014 version. It will help students and developers alike master the basic concepts for building systems with SPARK.




High Integrity Ada


Book Description

This pack introduces the SPARK language and its associated tools and teaches the principles of writing safety-critical software using SPARK, a subset of the Ada 95 language. SPARK was specifically developed to serve industries developing high-integrity, safety-critical software with a language and associated toolset which increase the likelihood of the program behaving as intended.




High Integrity Software


Book Description

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.




High-Integrity Software


Book Description

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.




Safer C


Book Description

This important and timely book contains vital information for all developers working with C, whether in high-integrity areas or not, who need to produce reliable and effective software.




High-Integrity System Specification and Design


Book Description

Errata, detected in Taylor's Logarithms. London: 4to, 1792. [sic] 14.18.3 6 Kk Co-sine of 3398 3298 - Nautical Almanac (1832) In the list of ERRATA detected in Taylor's Logarithms, for cos. 4° 18'3", read cos. 14° 18'2". - Nautical Almanac (1833) ERRATUM ofthe ERRATUM ofthe ERRATA of TAYLOR'S Logarithms. For cos. 4° 18'3", read cos. 14° 18' 3". - Nautical Almanac (1836) In the 1820s, an Englishman named Charles Babbage designed and partly built a calculating machine originally intended for use in deriving and printing logarithmic and other tables used in the shipping industry. At that time, such tables were often inaccurate, copied carelessly, and had been instrumental in causing a number of maritime disasters. Babbage's machine, called a 'Difference Engine' because it performed its cal culations using the principle of partial differences, was intended to substantially reduce the number of errors made by humans calculating the tables. Babbage had also designed (but never built) a forerunner of the modern printer, which would also reduce the number of errors admitted during the transcription of the results. Nowadays, a system implemented to perform the function of Babbage's engine would be classed as safety-critical. That is, the failure of the system to produce correct results could result in the loss of human life, mass destruction of property (in the form of ships and cargo) as well as financial losses and loss of competitive advantage for the shipping firm.




Ada


Book Description

Reports about recent developments of ADA, especially in the UK. It contains an introduction to ADA 9X and reports about the improved support for object-oriented programming and the tasking model. It also discusses high-integrity applications, safety critical software development and the mapping of ADA projects on the 2157A standard.




The Rust Programming Language (Covers Rust 2018)


Book Description

The official book on the Rust programming language, written by the Rust development team at the Mozilla Foundation, fully updated for Rust 2018. The Rust Programming Language is the official book on Rust: an open source systems programming language that helps you write faster, more reliable software. Rust offers control over low-level details (such as memory usage) in combination with high-level ergonomics, eliminating the hassle traditionally associated with low-level languages. The authors of The Rust Programming Language, members of the Rust Core Team, share their knowledge and experience to show you how to take full advantage of Rust's features--from installation to creating robust and scalable programs. You'll begin with basics like creating functions, choosing data types, and binding variables and then move on to more advanced concepts, such as: Ownership and borrowing, lifetimes, and traits Using Rust's memory safety guarantees to build fast, safe programs Testing, error handling, and effective refactoring Generics, smart pointers, multithreading, trait objects, and advanced pattern matching Using Cargo, Rust's built-in package manager, to build, test, and document your code and manage dependencies How best to use Rust's advanced compiler with compiler-led programming techniques You'll find plenty of code examples throughout the book, as well as three chapters dedicated to building complete projects to test your learning: a number guessing game, a Rust implementation of a command line tool, and a multithreaded server. New to this edition: An extended section on Rust macros, an expanded chapter on modules, and appendixes on Rust development tools and editions.




Ada in Transition


Book Description

"The book reviews the current practice in Ada applications, innovative developments in Ada technology, how Ada can be applied in more demanding systems in the safety-critical area and reports on the Ada 9X revision effort"--Preface.




Programming in Ada 2012 with a Preview of Ada 2022


Book Description

The latest edition of the definitive guide to the Ada language covers the full details of the core language Ada 2012 as updated by the 2016 ISO Corrigendum and introduces the key new features in Ada 2022. The book is in four parts. It begins by introducing the fundamental concepts for newcomers, before moving onto algorithmic aspects and then structural features such as OOP and multitasking. The fourth part gives details of the standard library and interaction with the external environment. Six complete executable programs illustrate the core features of the language in action. The book concludes with an appendix focussing on the new features in Ada 2022. These new features aid program proof and the efficient use of multicore architectures.