01 Front Matter
01 Front Matter
Software Validation
Abhik Roychoudhury
Department of Computer Science
National University of Singapore
Permissions may be sought directly from Elsevier’s Science & Technology Rights
Department in Oxford, UK: phone: (+44) 1865 843830, fax: (+44) 1865 853333,
E-mail: permissions@elsevier.co.uk. You may also complete your request on-line
via the Elsevier homepage (http://elsevier.com), by selecting “Customer Support” and
then “Obtaining Permissions.”
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
CHAPTER 1 Introduction 1
Bibliography 233
Index 241
This book owes a lot to all my students, colleagues, and co-workers. It is by working
with them over the past decade that I have discovered the issues and challenges
in the field of embedded systems validation. So, first and foremost, I must thank
them all.
I have written this book off and on, in the course of my teaching and research
work at the National University of Singapore (NUS). Funding from a University
Research Council project at NUS is gratefully acknowledged.
A leave from NUS in 2007 to the Indian Institute of Science (IISc) infused in me
the energy to start writing the book. The calm environs of the IISc campus helped
set the mood for writing this book.
The support of Elsevier staff was instrumental in ensuring that the book has
proceeded on schedule.
Finally, playing with my 5-year-old son Jishnu allowed me to absorb the pressures
of writing the book in the midst of various deadlines and commitments. Thanks,
Jishnu!
Singapore
19 January 2009
ix
This book attempts to cover the issues in validation of embedded software and
systems. There are many books on this topic, as a Web search with the appropriate
search terms will reveal. So, why this book?
There are several ways to answer the question. The first, most direct answer is that
the current books mostly deal with the programming and/or co-design of embedded
systems. Validation is often discussed almost as an afterthought. In this book, we
treat validation as a first-class citizen in the design process, weaving it into the design
process itself.
The focus of our book is on validation, but from an embedded software and sys-
tems perspective. The methods we have covered (testing/model-checking) can also
be covered from a completely general perspective, focusing only on the techniques,
rather than on how they fit into the system design process. But we have not done so.
Even though the focus of the book is on validation methods, we clearly show how it
fits into system design. As an example, we present and discuss the model-checking
method twice in two different ways — once at the level of system model (Chapter 2)
and again at the level of system implementation (Chapter 5).
Finally, being rooted in embedded software and systems, the focus of our book
is not restricted to functionality validation. We have covered at least two other
aspects — debugging of performance and communication behavior. As a result, this
book contains analysis methods that are rarely found in a single book — testing
(informal validation), model checking (formal validation), worst-case execution time
analysis (static analysis for program performance), schedulability analysis (system
level performance analysis), and so on — all blended under one cover, with the goal
of reliable embedded system design.
As for the chapters of the book, Chapter 1 gives a general introduction to the issues
in embedded system validation. Differences between functionality and performance
validation are discussed at a general level.
Chapter 2 discusses model-level validation. It starts with generic discussions on
system structure and behavior, and zooms into behavioral modeling notations such
as finite-state machines (FSMs) and message sequence charts (MSCs). Simulation,
testing, and formal verification of these models are discussed. We discuss model-
based testing, where test cases generated from the model are tried out on the system
implementation. We also discuss property verification, and the well-known model-
checking method. The chapter ends with a nice hands-on discussion of practical
validation tools such as SPIN and SMV. Thus, this chapter corresponds to model-level
debugging.
xi