This textbook offers undergraduate students an introduction to the main principles and some of the most popular techniques that constitute `software quality assurance'. The book seeks to engage students by placing an emphasis on the underlying foundations of modern quality-assurance techniques , using these to highlight why techniques work, as opposed to merely focussing on how they work. In doing so it provides readers with a comprehensive understanding of where software quality fits into the development lifecycle (spoiler: everywhere), and what the key quality assurance activities are.
The book focuses on quality assurance in a way that typical, more generic software engineering reference books do not. It is structured so that it can (and should) be read from cover to cover throughout the course of a typical university module. Specifically, it is
Concise: it is small enough to be readable in its entirety over the course of a typical software engineering module.
Explanatory: topics are discussed not merely in terms of what they are, but also why they are the way they are - what events, technologies, and individuals or organisations helped to shape them into what they are now.
Applied: topics are covered with a view to giving the reader a good idea of how they can be applied in practice, and by pointing, where possible, to evidence of their efficacy.
The book starts from some of the most general notions (e.g. quality and development process), and gradually homes-in on the more specific activities, assuming knowledge of the basic notions established in prior chapters. Each chapter concludes with a "Key Points" section, summarising the main issues that have been covered in the chapter. Throughout the book there are exercises that serve to remind readers of relevant parts in the book that have been covered previously, and give them the opportunity to reflect on a particular topic and refer to related references.
Neil Walkinshaw is an associate professor in computer science at the University of Leicester, where he started as a lecturer in 2010. He obtained his Ph.D. from the University of Strathclyde in 2006, and subsequently worked for five years as a post-doctoral researcher with the Verification and Testing group at the University of Sheffield. His research focuses on software testing and the use of machine learning techniques for reverse-engineering useful models of software behaviour.
1 Introduction.- 2 What Is Software Quality, and Why Does it Matter.- 3 Software Development Processes and Process Improvement.- 4 Managing Requirements and Code.- 5 Planning Activities and Predicting Costs.- 6 Testing.- 7 Software Inspections, Code Reviews, and Safety Arguments.- 8 Measurement.- 9 Conclusions.