Designing the Requirements: Building Applications that the User Wants and Needs, 1st edition

  • Chris Britton

Unfortunately, this item is not available in your country.


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

Table of contents

Preface xiii

Acknowledgments xxi

About the Author xxiii


Chapter 1: Introduction to Context-Driven Design 1

Designing Requirements 2

What Is Design? 9

Making IT Application Development More of an Engineering Discipline 19

Taking IT Architecture into Account 20

Concluding Remarks 21


Chapter 2: A Hierarchy of Designs 23

Justifying the Hierarchy of Designs 23

Context Design 28

Integration Design 35

Technical Design 41

User Interface Design 44

Database Design 46

Implementation 47

Is It Really Engineering? 48

Concluding Remarks 51


Chapter 3: Reusing Existing Methods and Practices 53

Agile 54

Upside-Down Design 60

Use Cases 62

The Problem with Estimating Cost 68

Why Is BDUF Big? 72

Iterations 74

Quality 75

Testing and Inspection 76

Using Existing Practices in Context-Driven Design 78

Learning Organizations 80

Concluding Remarks 80


Chapter 4: The Problem of Large Applications 83

The Dimensions of Size 84

Problems with Large Projects 88

Can Large Projects Be Avoided? 100

Concluding Remarks 103


Chapter 5: The Relationship with the Business 105

Understanding Business Processes 106

When It’s Not a Process 112

The Need for a Wider View 115

Applying the Business Strategy to Application Development 118

Analysis 123

Concluding Remarks 128


Chapter 6: The Relationship with the Users 129

Adding the Detail 129

Who Are the Users? 141

Analyzing the Context Design 151

Reviewing the Context Design 156

Concluding Remarks 158


Chapter 7: The Relationship to Other IT Projects 159

Integration Design 161

Services Interface Design 170

Existing Applications 178

Looking Back at the Design Process 186

Concluding Remarks 188


Chapter 8: User Interface Design and Ease of Use 189

Logical User Interfaces 191

From Tasks to Clicks 194

Ease of Use 199

Transaction and Task Integrity 208

The User Interface Design and the Other Detailed Designs 212

Concluding Remarks 212


Chapter 9: Database Design 215

Database Design 215

Database Design Theory 223

Programmers versus the Database Designer 233

Database Access Services 236

NoSQL 238

Concluding Remarks 242


Chapter 10: Technical Design—Principles 243

Principles of High Performance on a Single Machine 244

Principles of High Performance on Many Servers 252

Principles of High Resiliency 260

The Need for Testing and Benchmarking 263

The Technical Design Process 265

Concluding Remarks 268


Chapter 11: Technical Design—Structure 271

Program Structure 272

What Is a Framework? 276

The Variety of Programming Languages 281

Choosing a Programming Language and Framework 286

Extending the Framework 290

Implementing Common Functionality 293

Concluding Remarks 295


Chapter 12: Security Design 297

IT Application Security Principles 299

The Security Elements of Each Design 307

Security Programming 316

Concluding Remarks 319


Chapter 13: The Future of Application Development 323

How Context-Driven Design Changes Application Development 323

Context-Driven Design Opportunities 325

The Application Development Challenges 332

Concluding Remarks 339


Appendix A: Context Design Checklist 341

Description 341


References 349

Index 353

Published by Addison-Wesley Professional (October 19th 2015) - Copyright © 2016