Too many software applications don't do what's needed or they do it clumsily, frustrating their users and owners. The core problem: poorly conceived and poorly crafted requirements. In Designing the Requirements, Chris Britton explains why it's not enough to simply "gather" requirements-you need to design them. Britton offers powerful techniques for understanding stakeholders' concerns and working with stakeholders to get the requirements right. Using Britton's context-driven approach to requirements design, you can detect inconsistencies, incompleteness, poor usability, and misalignment with business goals upstream-long before developers start coding. You can also design outward-looking applications and services that will integrate more effectively in a coherent IT architecture. First, Britton explains what requirements design really means and presents a hierarchy of designs that move step by step from requirements through implementation. Next, he demonstrates how to build on requirements processes you already use and how to overcome their serious limitations in large-scale development.
Then, he walks you through designing your application's relationship with the business, users, data, and other software to ensure superior usability, security, and maximum scalability and resilience. Whether you're a software designer, architect, project manager, or programmer, Designing the Requirements will help you design software that works-for users, IT, and the entire business. Coverage includes * Designing the entire business solution, not just its software component * Using engineering-style design analysis to find flaws before implementation * Designing services, and splitting large development efforts into smaller, more manageable projects * Planning logical user interfaces that lead to superior user experiences * Designing databases and data access to reflect the meaning of your data * Building application frameworks that simplify life for programmers and project managers * Setting reasonable and achievable goals for performance, availability, and security * Designing for security at all levels, from strategy to code * Identifying new opportunities created by context-driven design