A guide to VHDL for digital system modeling. It aims to show how VHDL modeling fits into a design flow, starting from high-level design and proceeding through detailed design and verification, synthesis, FPGA place and route, and final timing verification.
Maude is a language and system based on rewriting logic. In this comprehensive account, you´ll discover how Maude and its formal tool environment can be used in three mutually reinforcing ways: as a declarative programming language, as an executable formal specification language, and as a formal verification system. Examples used throughout the book illustrate key concepts, features, and the many practical uses of Maude.
Recent years have seen the development of powerful tools for verifying hardware and software systems, as companies worldwide realise the need for improved means of validating their products. There is increasing demand for training in basic methods in formal reasoning so that students can gain proficiency in logic-based verification methods. The second edition of this successful textbook addresses both those requirements, by continuing to provide a clear introduction to formal reasoning which is both relevant to the needs of modern computer science and rigorous enough for practical application. Improvements to the first edition have been made throughout, with extra and expanded sections on SAT solvers, existential/universal second-order logic, micro-models, programming by contract and total correctness. The coverage of model-checking has been substantially updated. Further exercises have been added. Internet support for the book includes worked solutions for all exercises for teachers, and model solutions to some exercises for students.
A decision procedure is an algorithm that, given a decision problem, terminates with a correct yes/no answer. Here, the authors focus on theories that are expressive enough to model real problems, but are still decidable. Specifically, the book concentrates on decision procedures for first-order theories that are commonly used in automated verification and reasoning, theorem-proving, compiler optimization and operations research. The techniques described in the book draw from fields such as graph theory and logic, and are routinely used in industry. The authors introduce the basic terminology of satisfiability modulo theories and then, in separate chapters, study decision procedures for each of the following theories: propositional logic; equalities and uninterpreted functions; linear arithmetic; bit vectors; arrays; pointer logic; and quantified formulas. They also study the problem of deciding combined theories and dedicate a chapter to modern techniques based on an interplay between a SAT solver and a decision procedure for the investigated theory. This textbook has been used to teach undergraduate and graduate courses at ETH Zurich, at the Technion, Haifa, and at the University of Oxford. Each chapter includes a detailed bibliography and exercises. Lecturers´ slides and a C++ library for rapid prototyping of decision procedures are available from the authors´ website.
Automated testing is a cornerstone of agile development. An effective testing strategy will deliver new functionality more aggressively, accelerate user feedback, and improve quality. However, for many developers, creating effective automated tests is a unique and unfamiliar challenge. xUnit Test Patterns is the definitive guide to writing automated tests using xUnit, the most popular unit testing framework in use today. Agile coach and test automation expert Gerard Meszaros describes 68 proven patterns for making tests easier to write, understand, and maintain. He then shows you how to make them more robust and repeatable--and far more cost-effective. Loaded with information, this book feels like three books in one. The first part is a detailed tutorial on test automation that covers everything from test strategy to in-depth test coding. The second part, a catalog of 18 frequently encountered test smells, provides trouble-shooting guidelines to help you determine the root cause of problems and the most applicable patterns. The third part contains detailed descriptions of each pattern, including refactoring instructions illustrated by extensive code samples in multiple programming languages. Topics covered include Writing better tests--and writing them faster The four phases of automated tests: fixture setup, exercising the system under test, result verification, and fixture teardown Improving test coverage by isolating software from its environment using Test Stubs and Mock Objects Designing software for greater testability Using test smells (including code smells, behavior smells, and project smells) to spot problems and know when and how to eliminate them Refactoring tests for greater simplicity, robustness, and execution speed This book will benefit developers, managers, and testers working with any agile or conventional development process, whether doing test-driven development or writing the tests last. While the patterns and smells are especially applicable to all members of the xUnit family, they also apply to next-generation behavior-driven development frameworks such as RSpec and JBehave and to other kinds of test automation tools, including recorded test tools and data-driven test tools such as Fit and FitNesse. Visual Summary of the Pattern Language Foreword Preface Acknowledgments Introduction Refactoring a Test PART I: The Narratives Chapter 1 A Brief Tour Chapter 2 Test Smells Chapter 3 Goals of Test Automation Chapter 4 Philosophy of Test Automation Chapter 5 Principles of Test Automation Chapter 6 Test Automation Strategy Chapter 7 xUnit Basics Chapter 8 Transient Fixture Management Chapter 9 Persistent Fixture Management Chapter 10 Result Verification Chapter 11 Using Test Doubles Chapter 12 Organizing Our Tests Chapter 13 Testing with Databases Chapter 14 A Roadmap to Effective Test Automation PART II: The Test Smells Chapter 15 Code Smells Chapter 16 Behavior Smells Chapter 17 Project Smells PART III: The Patterns Chapter 18 Test Strategy Patterns Chapter 19 xUnit Basics Patterns Chapter 20 Fixture Setup Patterns Chapter 21 Result Verification Patterns Chapter 22 Fixture Teardown Patterns Chapter 23 Test Double Patterns Chapter 24 Test Organization Patterns Chapter 25 Database Patterns Chapter 26 Design-for-Testability Patterns Chapter 27 Value Patterns PART IV: Appendixes Appendix A Test Refactorings Appendix B xUnit Terminology Appendix C xUnit Family Members Appendix D Tools Appendix E Goals and Principles Appendix F Smells, Aliases, and Causes Appendix G Patterns, Aliases, and Variations Glossary References Inde
This book constitutes the refereed post-conference proceedings of the 26th International Workshop on Functional and Constraint Logic Programming, WFLP 2018, held in Frankfurt/Main, Germany, in September 2018. From the 19 full papers submitted,12 were accepted for presentation at the workshop. During a second review after the workshop, 10 papers were accepted for inclusion in this volume. The papers cover different programming areas of functional and logic programming, including code generation, verification, and debugging. They are organized in the following topical sections: compilers and code generation; debugging and testing; and foundations of functional logic programming.
The theory of finite automata on finite stings, infinite strings, and trees has had a dis tinguished history. First, automata were introduced to represent idealized switching circuits augmented by unit delays. This was the period of Shannon, McCullouch and Pitts, and Howard Aiken, ending about 1950. Then in the 1950s there was the work of Kleene on representable events, of Myhill and Nerode on finite coset congruence relations on strings, of Rabin and Scott on power set automata. In the 1960s, there was the work of Btichi on automata on infinite strings and the second order theory of one successor, then Rabin´s 1968 result on automata on infinite trees and the second order theory of two successors. The latter was a mystery until the introduction of forgetful determinacy games by Gurevich and Harrington in 1982. Each of these developments has successful and prospective applications in computer science. They should all be part of every computer scientist´s toolbox. Suppose that we take a computer scientist´s point of view. One can think of finite automata as the mathematical representation of programs that run us ing fixed finite resources. Then Btichi´s SIS can be thought of as a theory of programs which run forever (like operating systems or banking systems) and are deterministic. Finally, Rabin´s S2S is a theory of programs which run forever and are nondeterministic. Indeed many questions of verification can be decided in the decidable theories of these automata.
In präziser, praxisorientierter Form vermitteln die Autoren das Wissen zur Therapie mit Herzschrittmachern und zur Betreuung von Herzschrittmacherpatienten: - anatomisch-physiologische und technische Grundlagen - Indikationen und Auswahl des Schrittmachers - Durchführung der Implantation - Schrittmacherprogrammierung - Kleine und große Schrittmacherkontrolle - Komplikationen und ihre Behandlung - Schrittmacher- oder Elektrodenwechsel Zahlreiche Fallbeschreibungen und EKG-Beispiele tragen zur Anschaulichkeit bei. Die häufigsten Fragen der Patienten an den Arzt sind mit Antwortvorschlägen in einem Anhang zusammengefaßt. Ein Schrittmacherlexikon ermöglicht auf einen Blick die Information über alle spezifischen Begriffe. Based on the needs of the educational community, and the software professional, this book takes a unique approach to teaching software testing. It introduces testing concepts that are managerial, technical, and process oriented, using the Testing Maturity Model (TMM) as a guiding framework. The TMM levels and goals support a structured presentation of fundamental and advanced test-related concepts to the reader. In this context, the interrelationships between theoretical, technical, and managerial concepts become more apparent. In addition, relationships between the testing process, maturity goals, and such key players as managers, testers and client groups are introduced. Topics and features: - Process/engineering-oriented text - Promotes the growth and value of software testing as a profession - Introduces both technical and managerial aspects of testing in a clear and precise style - Uses the TMM framework to introduce testing concepts in a systemmatic, evolutionary way to faciliate understanding - Describes the role of testing tools and measurements, and how to integrate them into the testing process Graduate students and industry professionals will benefit from the book, which is designed for a graduate course in software testing, software quality assurance, or software validation and verification Moreover, the number of universities with graduate courses that cover this material will grow, given the evoluation in software development as an engineering discipline and the creation of degree programs in software engineering.
SysML extends UML with powerful systems engineering capabilities for modeling a far wider spectrum of systems, and effectively capturing all aspects of a system?s design. Now, there?s a go-to reference for everyone who wants to start creating accurate and useful system models with SysML. Drawing on his pioneering experience creating models for Lockheed Martin and NASA, Lenny Delligatti illuminates SysML?s core components, and shows how to use them even under tight deadlines and other constraints. You needn?t know all of SysML to create effective models: SysML Distilled quickly teaches what you do need to know, and helps you deepen your knowledge incrementally as the need arises. Coverage includes: How SysML extends and improves UML, and how to immediately put it to practical use How to use SysML as a foundation for Model-Based System Engineering (MBSE) or Model-Based Engineering (MBE) What to know before you start an SysML modeling project How to use key SysML diagrams for block definitions, internal blocks, use cases, activities, sequences, state machines, parametrics, requirements, and packages How to use allocations to define cross-cutting relationships And much more ? including appendices presenting complete SysML notation, identifying changes between SysML versions, and identifying authoritative sources for more information Product Description The Systems Modeling Language (SysML) extends UML with powerful systems engineering capabilities for modeling a wider spectrum of systems and capturing all aspects of a system?s design. SysML Distilled is the first clear, concise guide for everyone who wants to start creating effective SysML models. (Drawing on his pioneering experience at Lockheed Martin and NASA, Lenny Delligatti illuminates SysML?s core components and provides practical advice to help you create good models and good designs. Delligatti begins with an easy-to-understand overview of Model-Based Systems Engineering (MBSE) and an explanation of how SysML enables effective system specification, analysis, design, optimization, verification, and validation. Next, he shows how to use all nine types of SysML diagrams, even if you have no previous experience with modeling languages. A case study running through the text demonstrates the use of SysML in modeling a complex, real-world sociotechnical system. Modeled after Martin Fowler?s classic UML Distilled, Delligatti?s indispensable guide quickly teaches you what you need to know to get started and helps you deepen your knowledge incrementally as the need arises. Like SysML itself, the book is method independent and is designed to support whatever processes, procedures, and tools you already use. Coverage Includes Why SysML was created and the business case for using it Quickly putting SysML to practical use What to know before you start a SysML modeling project Essential concepts that apply to all SysML diagrams SysML diagram elements and relationships Diagramming block definitions, internal structures, use cases, activities, interactions, state machines, constraints, requirements, and packages Using allocations to define mappings among elements across a model SysML notation tables, version changes, and sources for more information Features + Benefits The most practical introduction to SysML Covers all essential diagrams: block definitions, internal blocks, use cases, activities, sequences, state machines, parametrics, requirements, and packages How to use SysML to move towards full-fledged Model-Based Systems Engineering (MBSE) Foreword by Rick Steiner xvii Foreword by Richard Soley xix Preface xxv Acknowledgments xxxi About the Author xxxiii Chapter 1: Overview of Model-Based Systems Engineering 1 1.1 What Is MBSE? 2 1.2 The Three Pillars of MBSE 4 1.3 The Myth of MBSE 9 Chapter 2: Overview of the Systems Modeling Language 11 2.1 What SysML Is?and Isn?t 11 2.2 Yes, SysML Is Based on UML?but You Can Start with SysML 13 2.3 SysML Diagram Overview 14 2.4 General Diagram Concepts 17 Chapter 3: Block Definition Diagrams 23 3.1 Purpose 23 3.2 When Should You Create a BDD? 24 3.3 The BDD Frame 24 3.4 Blocks 26 3.5 Associations: Another Notation for a Property 44 3.6 Generalizations 49 3.7 Dependencies 52 3.8 Actors 53 3.9 Value Types 55 3.10 Constraint Blocks 57 3.11 Comments 59 Chapter 4: Internal Block Diagrams 63 4.1 Purpose 63 4.2 When Should You Create an IBD? 64 4.3 Blocks, Revisited 64 4.4 The IBD Frame 65 4.5 BDDs and IBDs: Complementary Views of a Block 66
A decision procedure is an algorithm that, given a decision problem, terminates with a correct yes/no answer. Here, the authors focus on theories that are expressive enough to model real problems, but are still decidable. Specifically, the book concentrates on decision procedures for first-order theories that are commonly used in automated verification and reasoning, theorem-proving, compiler optimization and operations research. The techniques described in the book draw from fields such as graph theory and logic, and are routinely used in industry. The authors introduce the basic terminology of satisfiability modulo theories and then, in separate chapters, study decision procedures for each of the following theories: propositional logic; equalities and uninterpreted functions; linear arithmetic; bit vectors; arrays; pointer logic; and quantified formulas.