This book provides an introduction to formal methods based on temporal logic, describing techniques for testing and developing complex computational systems. It starts with a full introduction to the subject and then goes into more detail, covering the basics of temporal logics in order to give the reader a firm basis on which to progress further. A variety of examples, exercises and pointers to more advanced work in this area help to clarify and illustrate topics discussed. The following chapter shows how this logic can be used to specify a variety of computational systems. Chapters 4, 5 and 6 analyse techniques using temporal specifications to verify and develop computational systems, namely deductive verification, algorithmic verification, and direct execution. A final chapter on case studies analyses the potential problems that can occur in a range of engineering applications, and explains how temporal logic can improve their accuracy and reliability. Fisher also gives pointer to where the reader can find full descriptions of these computations earlier in the book. An appendix provides an introduction to classical logic, and an accompanying website contains links to additional material related to the book, and to a range of systems based on temporal logic.