High Integrity Software


Book Description

The second half of the twentieth century has witnessed remarkable advances in technology. The unquestioned leader in this race has been computer technology. Even the most modest personal computers today have computing power that would have astounded the leading technol ogists a few decades earlier, and what's more, similar advances are pre dicted for many years to come. Looking towards the future, it has been conservatively estimated that in 2047 computers could easily be 100,000 times more powerful than they were in 1997 (Moore's law [Moore] would lead to an increase on the order of around 10 billion) [Bell]. Because of its enormous capability, computer technology is becoming pervasive across the technology spectrum. Nowadays it is not surpris ing to discover that very common household gadgets like your toaster contain computer technology. Televisions, microwave ovens, and even electric shavers contain software. And what's more, the use of computer technology has been estimated to double every two years [Gibbs]. In order to keep up with the growing technology demands and to fully utilize the ever more powerful computing platforms, software projects have become more and more ambitious. This has lead to software systems becoming dominant forces in system functionality. Further more, the ambition to realize significant portions of a system's function ality through software has extended into the high consequence realm. Presently, software controls many critical functions in (1) airplanes, (2) electronic commerce, (3) space-bound systems, (4) medical systems, and (5) various transportation systems such as automobiles and trains.




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 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 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

This book provides an accessible introduction to the SPARK programming language. Updated 'classic' that covers all of the new features of SPARK, including Object Oriented Programming. The only book on the market that covers this important and robust programming language. CD-ROM contains the main SPARK tools and additional manuals giving all the information needed to use SPARK in practice. Technology: The SPARK language is aimed at writing reliable software that combines simplicity and rigour within a practical framework. Because of this, many safety-critical, high integrity systems are developed using SPARK. User Level: Intermediate Audience: Software engineers, programmers, technical leaders, software managers. Engineering companies in fields such as avionics, railroads, medical instrumentation and automobiles. Academics giving MSc courses in Safety Critical Systems Engineering, System Safety Engineering, Software Engineering. Author Biography: John Barnes is a veteran of the computing industry. In 1977 he designed and implemented the RTL/2 programming language and was an original member of the ADA programming language design team. He was founder and MD of Alsys Ltd from 1985 to 1991. Currently self employed, John is the author of 'Programming in ADA' which has sold 150000 copies and been translated into 6 languages.




High Integrity Die Casting Processes


Book Description

"It's about time that a practicing engineer with casting and academic experience has written a book that provides answers to questions about squeeze casting and semi-solid molding/forming that many engineers and students of casting need answered." —Joseph C. Benedyk, PhD, Consultant and retired technical director, Alcoa High Integrity Die Casting Processes provides a comprehensive look at the concepts behind advanced die casting technologies, including vacuum die casting, squeeze casting, and several variants of semi-solid metalworking. Practical applications for these processes are illustrated in numerous case studies. This single-source reference tool presents the latest material in five sections: Basic concepts of die casting and molten metal flow High integrity die casting processes with case studies Product design considerations Controlling quality and avoiding defects Future advances under development Key coverage includes a survey of liquid metal flow, strategies to overcome the limitations of conventional die casting, and potential defects unique to high integrity die casting processes. Also featured are methods for minimizing porosity, reducing cost by design, practical applied statistical process control techniques, designing for manufacturability, and containment methods for potential processing defects. Several chapters present detailed real-world examples illustrating the broad range of applications possible using high integrity die casting processes. Included with this book is a CD-ROM containing PowerPoint(r) presentations for each chapter. These presentations can be used for training purposes in conjunction with numerous study questions designed to practically apply the content of the book to real-world situations. Selected PowerPoint(r) slides can be used to support engineering proposals, marketing presentations, or customer education seminars. High Integrity Die Casting Processes is a valuable reference for both component producers and component users alike. Process engineers, tool designers, manufacturing engineers, production managers, and machine operators will acquire a better understanding of these advanced die casting processes to optimize manufacturing and improve product quality. Component designers, product engineers, purchasing agents, buyers, supplier quality engineers, and project managers will gain insight into these processes and develop superior products by design.




Site Reliability Engineering


Book Description

The overwhelming majority of a software system’s lifespan is spent in use, not in design or implementation. So, why does conventional wisdom insist that software engineers focus primarily on the design and development of large-scale computing systems? In this collection of essays and articles, key members of Google’s Site Reliability Team explain how and why their commitment to the entire lifecycle has enabled the company to successfully build, deploy, monitor, and maintain some of the largest software systems in the world. You’ll learn the principles and practices that enable Google engineers to make systems more scalable, reliable, and efficient—lessons directly applicable to your organization. This book is divided into four sections: Introduction—Learn what site reliability engineering is and why it differs from conventional IT industry practices Principles—Examine the patterns, behaviors, and areas of concern that influence the work of a site reliability engineer (SRE) Practices—Understand the theory and practice of an SRE’s day-to-day work: building and operating large distributed computing systems Management—Explore Google's best practices for training, communication, and meetings that your organization can use




C++ Coding Standards


Book Description

Consistent, high-quality coding standards improve software quality, reduce time-to-market, promote teamwork, eliminate time wasted on inconsequential matters, and simplify maintenance. Now, two of the world's most respected C++ experts distill the rich collective experience of the global C++ community into a set of coding standards that every developer and development team can understand and use as a basis for their own coding standards. The authors cover virtually every facet of C++ programming: design and coding style, functions, operators, class design, inheritance, construction/destruction, copying, assignment, namespaces, modules, templates, genericity, exceptions, STL containers and algorithms, and more. Each standard is described concisely, with practical examples. From type definition to error handling, this book presents C++ best practices, including some that have only recently been identified and standardized-techniques you may not know even if you've used C++ for years. Along the way, you'll find answers to questions like What's worth standardizing--and what isn't? What are the best ways to code for scalability? What are the elements of a rational error handling policy? How (and why) do you avoid unnecessary initialization, cyclic, and definitional dependencies? When (and how) should you use static and dynamic polymorphism together? How do you practice "safe" overriding? When should you provide a no-fail swap? Why and how should you prevent exceptions from propagating across module boundaries? Why shouldn't you write namespace declarations or directives in a header file? Why should you use STL vector and string instead of arrays? How do you choose the right STL search or sort algorithm? What rules should you follow to ensure type-safe code? Whether you're working alone or with others, C++ Coding Standards will help you write cleaner code--and write it faster, with fewer hassles and less frustration.




Crowdsourcing and Probabilistic Decision-Making in Software Engineering: Emerging Research and Opportunities


Book Description

With today’s technological advancements, the evolution of software has led to various challenges regarding mass markets and crowds. High quality processing must be capable of handling large groups in an efficient manner without error. Solutions that have been applied include artificial intelligence and natural language processing, but extensive research in this area has yet to be undertaken. Crowdsourcing and Probabilistic Decision-Making in Software Engineering: Emerging Research and Opportunities is a pivotal reference source that provides vital research on the application of crowd-based software engineering and supports software engineers who want to improve the manner in which software is developed by increasing the accuracy of probabilistic reasoning to support their decision-making and getting automation support. While highlighting topics such as modeling techniques and programming practices, this publication is ideally designed for software developers, software engineers, computer engineers, executives, professionals, and researchers.