Formal Methods for Software Engineering


Book Description

Software programs are formal entities with precise meanings independent of their programmers, so the transition from ideas to programs necessarily involves a formalisation at some point. The first part of this graduate-level introduction to formal methods develops an understanding of what constitutes formal methods and what their place is in Software Engineering. It also introduces logics as languages to describe reasoning and the process algebra CSP as a language to represent behaviours. The second part offers specification and testing methods for formal development of software, based on the modelling languages CASL and UML. The third part takes the reader into the application domains of normative documents, human machine interfaces, and security. Use of notations and formalisms is uniform throughout the book. Topics and features: Explains foundations, and introduces specification, verification, and testing methods Explores various application domains Presents realistic and practical examples, illustrating concepts Brings together contributions from highly experienced educators and researchers Offers modelling and analysis methods for formal development of software Suitable for graduate and undergraduate courses in software engineering, this uniquely practical textbook will also be of value to students in informatics, as well as to scientists and practical engineers, who want to learn about or work more effectively with formal theories and methods. Markus Roggenbach is a Professor in the Dept. of Computer Science of Swansea University. Antonio Cerone is an Associate Professor in the Dept. of Computer Science of Nazarbayev University, Nur-Sultan. Bernd-Holger Schlingloff is a Professor in the Institut für Informatik of Humboldt-Universität zu Berlin. Gerardo Schneider is a Professor in the Dept. of Computer Science and Engineering of University of Gothenburg. Siraj Ahmed Shaikh is a Professor in the Institute for Future Transport and Cities of Coventry University. The companion site for the book offers additional resources, including further material for selected chapters, prepared lab classes, a list of errata, slides and teaching material, and virtual machines with preinstalled tools and resources for hands-on experience with examples from the book. The URL is: https://sefm-book.github.io




Foundations of Algebraic Specification and Formal Software Development


Book Description

This book provides foundations for software specification and formal software development from the perspective of work on algebraic specification, concentrating on developing basic concepts and studying their fundamental properties. These foundations are built on a solid mathematical basis, using elements of universal algebra, category theory and logic, and this mathematical toolbox provides a convenient language for precisely formulating the concepts involved in software specification and development. Once formally defined, these notions become subject to mathematical investigation, and this interplay between mathematics and software engineering yields results that are mathematically interesting, conceptually revealing, and practically useful. The theory presented by the authors has its origins in work on algebraic specifications that started in the early 1970s, and their treatment is comprehensive. This book contains five kinds of material: the requisite mathematical foundations; traditional algebraic specifications; elements of the theory of institutions; formal specification and development; and proof methods. While the book is self-contained, mathematical maturity and familiarity with the problems of software engineering is required; and in the examples that directly relate to programming, the authors assume acquaintance with the concepts of functional programming. The book will be of value to researchers and advanced graduate students in the areas of programming and theoretical computer science.




Formal Engineering for Industrial Software Development


Book Description

In any serious engineering discipline, it would be unthinkable to construct a large system without having a precise notion of what is to be built and without verifying how the system is expected to function. Software engineering is no different in this respect. Formal methods involve the use of mathematical notation and calculus in software development; such methods are difficult to apply to large-scale systems with practical constraints (e.g., limited developer skills, time and budget restrictions, changing requirements). Here Liu claims that formal engineering methods may bridge this gap. He advocates the incorporation of mathematical notation into the software engineering process, thus substantially improving the rigor, comprehensibility and effectiveness of the methods commonly used in industry. This book provides an introduction to the SOFL (Structured Object-Oriented Formal Language) method that was designed and industry-tested by the author. Written in a style suitable for lecture courses or for use by professionals, there are numerous exercises and a significant real-world case study, so the readers are provided with all the knowledge and examples needed to successfully apply the method in their own projects.




Practical Formal Software Engineering


Book Description

Based around a theme of the construction of a game engine, this textbook is for final year undergraduate and graduate students, emphasising formal methods in writing robust code quickly. This book takes an unusual, engineering-inspired approach to illuminate the creation and verification of large software systems . Where other textbooks discuss business practices through generic project management techniques or detailed rigid logic systems, this book examines the interaction between code in a physical machine and the logic applied in creating the software. These elements create an informal and rigorous study of logic, algebra, and geometry through software. Assuming prior experience with C, C++, or Java programming languages, chapters introduce UML, OCL, and Z from scratch. Extensive worked examples motivate readers to learn the languages through the technical side of software science.




Formal Software Development


Book Description

This gently-paced software engineering text concentrates on the use of formal methods for the development of high integrity software. The book contains examples and exercises throughout and is supported by a dedicated web site.




Specification and Transformation of Programs


Book Description

"Specification and transformation of programs" is short for a methodology of software development where, from a formal specification of a problem to be solved, programs correctly solving that problem are constructed by stepwise application of formal, semantics-preserving transformation rules. The approach considers programming as a formal activity. Consequently, it requires some mathematical maturity and, above all, the will to try something new. A somewhat experienced programmer or a third- or fourth-year student in computer science should be able to master most of this material - at least, this is the level I have aimed at. This book is primarily intended as a general introductory textbook on transformational methodology. As with any methodology, reading and understanding is necessary but not sufficient. Therefore, most of the chapters contain a set of exercises for practising as homework. Solutions to these exercises exist and can, in principle, be obtained at nominal cost from the author upon request on appropriate letterhead. In addition, the book also can be seen as a comprehensive account of the particular transformational methodology developed within the Munich CIP project.




Formal Approaches to Software Testing


Book Description

Testing often accounts for more than 50% of the required e?ort during system development.Thechallengeforresearchistoreducethesecostsbyprovidingnew methods for the speci?cation and generation of high-quality tests. Experience has shown that the use of formal methods in testing represents a very important means for improving the testing process. Formal methods allow for the analysis andinterpretationofmodelsinarigorousandprecisemathematicalmanner.The use of formal methods is not restricted to system models only. Test models may alsobeexamined.Analyzingsystemmodelsprovidesthepossibilityofgenerating complete test suites in a systematic and possibly automated manner whereas examining test models allows for the detection of design errors in test suites and their optimization with respect to readability or compilation and execution time. Due to the numerous possibilities for their application, formal methods have become more and more popular in recent years. The Formal Approaches in Software Testing (FATES) workshop series also bene?ts from the growing popularity of formal methods. After the workshops in Aalborg (Denmark, 2001), Brno (Czech Republic, 2002) and Montr ́ eal (Canada, 2003), FATES 2004 in Linz (Austria) was the fourth workshop of this series. Similar to the workshop in 2003, FATES 2004 was organized in a?liation with the IEEE/ACM Conference on Automated Software Engineering (ASE 2004). FATES 2004 received 41 submissions. Each submission was reviewed by at least three independent reviewers from the Program Committee with the help of some additional reviewers. Based on their evaluations, 14 full papers and one wo- in-progress paper from 11 di?erent countries were selected for presentation.




Software Engineering and Formal Methods. SEFM 2020 Collocated Workshops


Book Description

This volume constitutes the revised selected papers from the three workshops collocated with the 18th International Conference on Software Engineering and Formal Methods, SEFM 2020, held in Amsterdam, The Netherlands, in September 2020. The 15 full papers presented together with 8 short papers in this volume were carefully reviewed and selected from a total of 35 submissions. The contributions that are collected in this volume have been selected from the presentations at the following workshops: ASYDE 2020: Second International Workshop on Automated and Verifiable Software System Development; CIFMA 2020: Second International Workshop on Cognition: Interdisciplinary Foundations, Models and Applications; and CoSim-CPS 2020: Fourth International Workshop on Formal Co-Simulation of Cyber-Physical Systems. Due to the Corona pandemic this event was held virtually.




Formal Development of a Network-Centric RTOS


Book Description

Many systems, devices and appliances used routinely in everyday life, ranging from cell phones to cars, contain significant amounts of software that is not directly visible to the user and is therefore called "embedded". For coordinating the various software components and allowing them to communicate with each other, support software is needed, called an operating system (OS). Because embedded software must function in real time (RT), a RTOS is needed. This book describes a formally developed, network-centric Real-Time Operating System, OpenComRTOS. One of the first in its kind, OpenComRTOS was originally developed to verify the usefulness of formal methods in the context of embedded software engineering. Using the formal methods described in this book produces results that are more reliable while delivering higher performance. The result is a unique real-time concurrent programming system that supports heterogeneous systems with just 5 Kbytes/node. It is compatible with safety related engineering standards, such as IEC61508.




Formal Foundations for Software Engineering Methods


Book Description

In this book, Hussmann builds a bridge between the pragmatic methods for the design of information systems and the formal, mathematical background. Firstly, the principal feasibility of an integration of the different methods is demonstrated. Secondly, the formalism is used as a systematic semantic analysis of the concepts in SSADM, a British standard structured software engineering method. Thirdly, a way of obtaining a hybrid formal-pragmatic specification using a combination of SSADM notations and formal (SPECTRUM) specifications is shown. This well-written book encourages scientists and software engineers to apply formal methods to practical software development problems.