Program Verification Using Ada


Book Description




Concurrency in Ada


Book Description

A major feature of the Ada programming language is the facilities it provides for concurrent programming. Alan Burns and Andy Wellings provide here a thorough and self-contained account of concurrent programming in Ada, and so show users, even beginners, how to harness the full power of the whole language. After giving an overview of the non-concurrent features of Ada, the authors proceed to examine in detail the uses of concurrent programming and the inherent difficulties in providing inter-process communication. The Ada tasking model is then introduced; the way it deals with these and related matters is explained in a number of separate chapters, covering system programming, real-time issues, distribution, object-oriented programming and re-use. This is the first book which deals with concurrent features in the new Ada standard, and it offers practical advice to the programmer needing to use it for embedded systems, while those interested more broadly in the development of programming languages will find many otherwise inaccessible issues probed in depth. It will thus be of value to professional software engineers and advanced students of programming alike; indeed, every Ada programmer will find it essential reading and a primary reference work. For the paperback edition the authors have made revisions throughout the text, updating and correcting where appropriate.




Interfacing with C


Book Description

Interfacing with C is about interfacing personal computers using C. Anyone who is interested in ports, transducer interfacing, analog to digital conversion, convolution, filters or digital/analog conversion will benefit from reading Interfacing with C. Students will also find this a practical introduction to real-time programming with a generous collection of tried and tested programs.The pace of the book is such that the reader is encouraged to run the programs and experiment with C. The principles precede the applications in most cases in an attempt to provide genuine understanding and encourage further development. Readers will gain much from the hands-on experience the authors' approach provides, an approach designed to enable readers to climb steep learning curves with the minimum amount of assistance. The many programs included in the text provide the essential hands-on experience. Some of the programs inevitably become rather lengthy, so the source code used is available as a free download from the Newnes website. The aim of the book, however, is to give the reader enough confidence to rewrite and improve these programs.In the second edition Mike James has thoroughly updated all aspects relating to software, operating systems and graphical interfaces. He has also increased the scope of the book to include current forms of C++. Material on data acquisition has been thoroughly updated and the section on peripherals increased. - A practical and painless way of becoming an expert C programmer - New edition also covers C++ and the Windows environment - Get up to speed with the essential maths needed for C without having to buy a university maths text!




Safety Aspects of Computer Control


Book Description

Safety Aspects of Computer Control focuses on the increased usage of computers and safety procedures for the control of their applications. The selection first elaborates on software in safety-related systems, regulatory issues, and legal liability. Topics cover product liability, liability under the contract law, liability under the law of negligence, methods of ensuring safety, some aspects of regulation of software safety, purpose and principles of regulation, and direct regulation. The book then examines standardization efforts worldwide; real-time software requirements specification and animation using extended Petri nets; and independent software verification and validation in practice. Discussions focus on verification and validation principles, organizational principles, specification language, extended Petri nets environment, history of software standards, and standardization work realized through ISO or IEC. The manuscript takes a look at design and licensing of safety-related software, fault-tolerant control for safety, and use and relevance for the development of safety-critical systems. Concerns include formal methods in the safety-critical systems life cycle, random and systematic failures, hardware and systematic failures, and software quality standards. The book is highly recommended for computer science experts and researchers interested in the safety aspects of computer control.







Ada's Legacy


Book Description

Ada’s Legacy illustrates the depth and diversity of writers, thinkers, and makers who have been inspired by Ada Lovelace, the English mathematician and writer. The volume, which commemorates the bicentennial of Ada’s birth in December 1815, celebrates Lovelace’s many achievements as well as the impact of her life and work, which reverberated widely since the late nineteenth century. In the 21st century we have seen a resurgence in Lovelace scholarship, thanks to the growth of interdisciplinary thinking and the expanding influence of women in science, technology, engineering and mathematics. Ada’s Legacy is a unique contribution to this scholarship, thanks to its combination of papers on Ada’s collaboration with Charles Babbage, Ada’s position in the Victorian and Steampunk literary genres, Ada’s representation in and inspiration of contemporary art and comics, and Ada’s continued relevance in discussions around gender and technology in the digital age. With the 200th anniversary of Ada Lovelace’s birth on December 10, 2015, we believe that the timing is perfect to publish this collection of papers. Because of its broad focus on subjects that reach far beyond the life and work of Ada herself, Ada’s Legacy will appeal to readers who are curious about Ada’s enduring importance in computing and the wider world.




Ada


Book Description




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.




Reliable Software Technologies -- Ada-Europe 2012


Book Description

This book constitutes the refereed proceedings of the 17th Ada-Europe International Conference on Reliable Software Technologies, Ada-Europe 2012, held in Stockholm, Sweden, in June 2012. The revised 15 full papers presented were carefully reviewed and selected from 34 submissions. They are organized in topical sections on application frameworks, use of ada, modeling, testing and validation,and real-time systems.




Software Verification and Analysis


Book Description

“The situation is good, but not hopeless” (Polish folk wisdom) The text is devoted to the Software Analysis and Testing (SAT) methods and s- porting tools for assessing and, if possible, improving software quality, specifically its correctness. The term quality assurance is avoided for it is this author’s firm belief that in the current state of the art that goal is unattainable, a plethora of “gu- anteed” solutions to the problem notwithstanding. Therefore, the rather awkward phrase “improving correctness” is to be understood as an effort to minimize the number of residual programming faults (“bugs”) and their impact on the software’s behavior, that is, to make the faults tolerable. It is clear that such a minimalist approach is a result of frustration. Indeed, having spent years developing software and teaching (preaching?) “How to do it right,” I still do not know how to go about it with any degree of certainty! It appears then I probably should stop right now, for who with a modicum of common sense would reach for a text that does not offer salvation but (as will be seen) hard work and misery? If I intend to continue, it is only that I suspect there are many professionals out there who have similar doubts. And they are the intended audience of this project. The philosophical underpinning of the text is the importance of sound engine- ing practices in software development.