Software Requirements: Styles and Techniques
Most IT systems fail to meet expectations. They don't meet business goals and don't support users efficiently. Why? Because the requirements didn't address the right issues. Writing a good requirements specification doesn't take more time. This book shows how it's done -- many times faster and many times smarter.
What are the highlights? Two complete real-life requirements specifications (the traditional and the fast approach) and examples from many others. Explanations of both traditional and fast approaches, and discussions of their strengths and weaknesses in different project types (tailor-made, COTS, and product development). Real-life illustrations of all types of requirements, stakeholder analysis, cost/benefit and other techniques to ensure that business goals are met. Proven methods for dealing with difficult or complex requirements, such as specifying ease-of-use, or dealing with 200 reports that might be needed because they are in the old system.
Who is it for? Everyone involved in the software supply chain, from analysts and developers to end users, will learn new techniques, benefit from requirements written by other specialists, and discover successes and failures from other companies. Software suppliers will find ideas for helping customers and writing competitive proposals.
Programmers and other developers will learn how to express requirements without specifying technical details, and how to reduce risks when developing a system. Students aspiring to IT careers will learn the theory and practice of requirements engineering, and get a strong foundation for case studies and projects.

Review By: Vivek Vaishampayan
07/08/2010The book describes various techniques used in Software Requirements. The book uses flowcharts and typical Data Processing diagrams with Start-End boxes. The examples covered are from very specific industries, like ship building repairs, hospital payroll etc. The software requirements in newer technologies like client-server, e-commerce, or Web development are not covered.
The author touches on various aspects related to Software Requirements. Topics like requirements reviews, standards conformance, and inspecting requirements could have been covered more in depth. Also, how the changes in requirements are handled in real projects, and how changing requirements impacts the process of testing, design, development, and project management could be covered more in depth.
The book does a good job of introducing the subject matter to a general audience and to students in IT courses. The end users can read a few chapters and still get familiar with their responsibilities / roles played in Software requirements. This is also true for various roles people are playing in actual projects such as designers, developers, testers, and project managers. Unless you are from the ship building repair industry, hospital payroll development team, or any membership administration, you are not going to miss any great details in writing your software requirements from this book.
The substance provided in the book is very basic and elementary. The software requirements in newer technologies like client-server or e-commerce or even Web development is not covered. As the author has claimed, you don’t have to read the whole book to understand the subject matter. The book is addressed to different role models involved in software requirements and each person in that role can read few chapters, depending upon their role. The style of the book is academic. The contents are overall descriptions of the applications that the author has interacted with. Commonly used techniques are described. The coverage on Functional Details using Unified Processes, Class Diagrams, Sequence diagrams, UML is very elementary and at basic level.
This book is related to Software Engineering Requirements and some chapters are devoted to quality requirements and checking/validation. However it is not very clearly demonstrated how QA can play significant role using requirements and developing test plans throughout the process of software product development making sure that the requirements are validated at each phase.
There is no description about how the requirements are tested or about the inspections or reviews to critically evaluate and follow up on the requirements throughout the life span of any project. Although the book is categorized under Software Engineering/Development, there is no coverage on "real" examples of any software development projects and how to write the system requirements, functional requirements and detail requirements for a software development project.