Software Requirements: third edition — Karl Wiegers and Joy Beattie
This new edition, much enlarged (to over 600 pages) and extensively revised, improves on an already thorough and useful book. Karl Wiegers is an established author and well-known specialist in requirements engineering, while Joy Beatty is the vice president of research and development at Seilevel and an active innovator in the requirements world. Together they bring a depth of experience to readers of this book.
The book works hard to emphasize the need to get inside the mind of the “user”. Since the last edition, ten years ago, a new role called ‘business analyst’ has become widespread in the commercial and financial worlds, covering requirements and other business-oriented software development aspects. Industry’s understanding of the software life-cycle, too, has changed radically, from staking all on a single throw of the dice in a ‘big bang’ development to multiple short cycles in what used to be called ‘extreme programming’, now better called agile project management. The book therefore rethinks old questions like how to find the voice of the user, with modern ideas like the ‘product champion’ and identifying classes of user, perhaps creating user personas to ensure people share a lively idea of who they are creating each product for.
Older topics like requirements elicitation and writing ‘excellent’ requirements get whole chapters, alongside more specialized topics like writing data requirements that were often overlooked by general software engineering texts. Key topics for projects, like prototyping, prioritisation and validation are given full weight. The book noticeably and very properly strays into project management – isn’t requirements work always a key management input? It should be – with questions of project estimation, outsourcing, and the running of agile projects. There’s also space for discussion of requirements tool support and process improvement, with simple and frank advice on the principles and pitfalls: buying a gadget does not resolve issues of dialogue with stakeholders: “A fool with a tool is an amplified fool,” as the tool chapter concludes.
Although there is ‘software’ in this book’s title, much of the advice applies equally to systems of all kinds, and indeed there is a chapter on embedded and real-time systems – the guidelines apply to system hardware as well as software. The book demonstrates the breadth of experience of its authors with useful coverage of business process automation, packaged solution projects and the challenge of enhancing or replacing existing systems – much more complex than starting from scratch, but far more likely.
Overall, this is a well thought out textbook, firmly rooted in industrial experience. As such it will be useful not only to people in industry, as stated on the book’s cover, but to students and university lecturers in software engineering and related disciplines who need a solid overview of industrial best practice. For people in industry, it represents exceptionally good value with its wide coverage of requirements topics. Highly recommended.
© Ian Alexander, 2014