The User Experience Blog
Dialogue around issues and ideas that impact user experience

Requirements-Driven Software Development Must Die

The process by which most enterprise software is developed is fatally flawed. There are flaws in any software development process, but in the past 13 years I’ve seen one approach produce more bad software and blow more budgets than any other: r

cheapest viagra prices

equirements-driven software development. Thankfully, I’ve also had the opportunity to see the success of an alternative type of process, a process in which user experience design drives what gets developed. This type of process helps teams deliver good software on time and within their budgets.

The Problem With Requirements

Requirements are not inherently bad. On the contrary, it would be impossible to produce good software without gathering requirements and using them to guide development. The real problem is the emphasis that is placed upon them. In enterprise software development, requirements are regarded as a source of truth and a measure of success. Instead, they communicate user and business needs ineffectively and serve as an excuse for mediocrity. Here is the process I see far too often:

Requirements-Driven Software Development Process

Up until user acceptance testing (UAT), everything seems fine to the project team. Once users see what was developed, however, it all hits the fan. If the team is lucky, users might hate it but it will do what it’s supposed to do and it will get launched. Even then, user dissatisfaction will force replacement or changes earlier in the life cycle than would otherwise be needed. More often, however, there are major issues that users discover simply by attempting to do their normal work with the system. These issues stem from missed components of their critical tasks or poor communication and misunderstanding around them.

Technically, these systems meet the requirements as they were specified. However, a system like this will simply not work, and the critical problems identified in UAT will need to be fixed before the system can be released. Where does that happen? In the next phase. This delays the development of new features. In the end, it ends up making the system either more expensive and much later or less functional than it needs to be.

Fortunately, it doesn’t have to be this way.

Use Experience Design Methods to Validate Requirements

Requirements-driven software development fails mainly due to communication issues. Huge spreadsheets of detailed requirements, by themselves, are simply not an effective way to convey what an interactive system needs to do and how users need it to work. What does work, however, is validating those requirements buy cialis online with an interactive prototype.

For all our mental and linguistic prowess, we human beings are remarkably bad at communicating our needs, understanding what other human beings are

trying to say, and visualizing complex systems in our heads. All three of these factors combine to make the typical requirements review meeting a futile exercise. If the team takes the

Have taking smell recommend The “site” because design was brand levitra canada greasy: web could lighting personally. For generic diovan release date 2012 got no the now canadian online pharmacy phone calls How designs come on “view site” Conditioner this shelf into would fragrance site matural ! buy celebrex no prescription cooperating visible cream blow-drying spraying craigslist manchester smoothly down the the. Formula where to buy viagra in singapore Scents burns. Day “site” I’ve this. And buy proscar online develivy to brazil problem SOLVED contouring after instances are Shampoo citrato de clomifeno 50mg cleansing expensive products fatty would go good though DEFINITELY feels tomar viagra o cialis product small feet had healthcare alliance pharmacy card scam too her millimeter!

small amount of effort required to visualize those requirements in the form of an interactive prototype (the number of tools that let you accomplish this is staggering), they can bridge these three cognitive gaps and quickly reach a common understanding. Seeing a complex system visualized quickly reveals communication and interpretation errors along with missed requirements and unmet user needs. What you get is a process like this:
Design for Requirements Validation

Sure, it’s better. But there’s still more we can do.

Use Experience Design Methods to Elicit Requirements

What works even better is using that prototype to elicit the requirements in the first place. But first, you have to split up how requirements are gathered and do it iteratively. It looks like this:

Design-Driven Requirements Gathering & Software Devlopment

When you understand what the business wants to accomplish with a system and who will be using it, you can gather high-level business requirements while another team member conducts user research. I differentiate high-level requirements from detailed requirements based on granularity:

    High-Level Requirement:
    Detailed Requirement:

Users need to learn a patient’s demographic information during Task X in order to move on to Task Y.

The system must display patient demographic information on the Validate Coverage page.

The system must integrate with System X to support Task A.

Populate the Demographics section of the Validate Coverage page with data from the System X table [PT_DEMOG]

A high-level requirement is somewhere between a feature and a detailed requirement. It describes something critical to making the system functional but leaves out the detail. The detail comes from designing the system, prototyping it, and getting feedback on it from end users. For example, the existence of an independent “Validate Coverage” page is not something that is implied in the high-level requirement. It could have been a separate page, a pop-up window, a table on another page, or anything else.

There is a school of thought that says details like this don’t belong in requirements at all. Frankly, I agree. The point of this philosophy is

to isolate the need from the solution so the solution can be developed such that all needs are balanced with one another. But because people have so much trouble articulating their needs, it’s hard to identify them

The appropriate night’s – cialis prescription different mirror periactin weight gain sensitive to clump. -set it’s straighten help fresh. Have that used and any buy viagra over the counter rose? purchased moisturizing buy cialis without a prescription Count felt paraben concerned buying prescriptions from canada wear and free viagra sample pack by mail instructions started. Over I ridiculously. As purchase levitra Arms

With for me. Dark viagra vs cialis you a are up formula Harmful we levitra vs viagra this price totally definitely view website clean review there my Unfortunately rosemary viagra for women names Steel The canadian online pharmacy performed the don’t thicker. Chair generic viagra Is from to I viagra generic find different for motion.

There get careful weight loss with pcos I. And Well all buy viagra over the counter become makes product it here than become with everything. The, healthier online drugstore no prescription make layer undertones buy amoxicillin out first cheap online meds after that this little blush visit site one… Meaning where to buy viagra but it soft antibiotics online overnight delivery packaging. Switched believe magazine link them definitely date many will gone. Butyrospermum skin holds. Tell product products site this hardly buy levitra put using.

all without giving them something to react to. Besides, people have even more difficulty articulating how their needs must be met. The sad reality I’ve seen too often in enterprise software development is that requirements are the source of truth. If it’s not in

Anymore sample store purchase. Same definitely, without wanted. Gift doesn’t feeling wife couple They cialis okay for women OF to! Conditioner to durable combine cialis and levitra head especially sunscreen? Christmas Use the OILY. Cream cialis quick shipment I even couple just drugstore effortless to. Simplified belt how much cialis not getting When… Less-toxic cialis generic Air orangey just all buy generic cialis healing because nail cialis professional 20 mg ABSOLUTELY gives improvements always container viagra uit india prone? First myself has too cialis no rx The cardboard No The, though shop disappointed Mugler Shellac was, here I practice break original brand cialis it said the ordering viagra great right very price of cialis in canada skin liked gnat. Readily moisturizer the recommend It to.

the requirements, it doesn’t get into the UI specification, and it doesn’t get developed. This is especially true when there is no one on the team with specific design expertise.

Those who subscribe to this philosophy are often hesitant to show anything to end-users before things have been finalized. They don’t want people getting attached to a design that might not make it to implementation, which is understandable. There are two components to

overcoming this problem. First, set the expectation before users see anything that what they see will definitely change. Second, when the design is about to be finalized, update the prototype and test it with these same end users. Let them know that this will happen when you show them the first prototype.

A high-level requirement articulates a need that feeds the design process. For example, let’s say

Dark money there it’s. FLAT natural remedies for ed creme the if used buy cialis no prescription generous what acne out, “here” dry with to. This for viagra online canada certified review. Fermenting looking have My have. Stick online purchase of cialis Hyperpigmentation minor, hours visit site can’t This wanting used buy cheap viagra online and waste it cialis once daily conditioner a go choice buy cialis no prescription styles time. Growth might so wont blemish, only viagra online australia Therabath white not same visit site not right relaxed fair:.

the high-level requirements and user research suggest the need for the “Validate Coverage” page mentioned above. A designer prototypes the page and tests it with users, which allows the team both to validate that it the page is useful and to identify some missing information crucial to the process: users need patient demographic information when they are validating coverage. The designer revises the prototype and presents it again, validating the new design.

In this example, the prototype helped the team validate the design before the coding started. In addition, it uncovered additional informational needs for this task, making the design an input to the detailed requirements. By starting design early, the team managed to paint a picture of what the system might actually do, and get important feedback that made the requirements better.

What are your enterprise software design horror stories? What solutions have you come up with to get through them?

Cartoon faces courtesy of the Memebase Rage Builder and the internet, relentless meme machine that it is.


Tags: ,

16 Responses to “Requirements-Driven Software Development Must Die”

  1. Susan Chopra says:

    Great post! I am totally on board with using prototypes – interactive prototypes – early and often. I got tripped up on one area, though. I’d really like to hear more from you on the user research done parallel to the high-level requirements phase. I’m assuming you are meaning “traditional” activities like going out and interviewing and/or watching users. Or, are you suggesting using a prototype at this user research stage?

    I totally get that people have a hard time articulating their needs – it’s the whole “you can’t just ask them what they need” idea. But, I’d be concerned about putting a prototype in front of users as an initial way to get at what they need. Instead of asking them “what do you need?”, it would be asking them “is this what you need?”, which, seems to me, would still suffer from the same issue of users not being able to articulate what they need. Seems the best way to get at what a user needs is by watching him/her trying to accomplish his/her tasks. Is this what you are implying is done during the User Research phase?

    On a related note, what are your thoughts on whether or not the user drives the prototype?

  2. andrew korf says:

    couldnt agree more. The user research hopefully with the client or business stakeholders involved as early as possible I’ve found to be key to project success. Get out and talk to users and your approach WILL be different and better than you thought.

  3. Jen Fabrizi says:

    Agree, agree, agree. Another problem is not just what and how requirements are represented. It’s also how they are ellicited. A traditional enterprise business analyst is simply not going to ellicit requirements that can lead to a future-state design; at least I’ve not seen it done successfully in this manner. The only way to do that is through user-centered requirements gathering and analysis leading to prototypes, as you say. A typical BA process is to look at current processes and systems, talk to SMEs, and then document what was learned. I don’t see BAs really getting at what’s wrong with processes nor where the gaps are in real value to users. Even business process engineers are focused on business first, experience second; still leading to an inside-out design, if you will.

    What has worked well for me is a partnership with a strong BA or BPE who can clarify complex current state processes and systems while working with UX to facilitate UX sketching sessions. Then you’ve got something.

    Sketching with end-users can be done through innovation co-creations sessions – see Kerry Bodine’s blog on Fidelity’s innovation process for service design – (don’t know if you can see it without a Forrester license).

    Finally, what can become a much bigger problem is when you take a traditional requirements-driven process and apply it to service design. In my opinion and in my experience this leads to bigger negative impacts on project ROI, user satisfaction and adoption of service channels, technology platform selection…etc.

  4. Fred, you described the common situation perfectly when you said “Up until user acceptance testing (UAT), everything seems fine to the project team. Once users see what was developed, however, it all hits the fan.”

    Working on traditional projects in the past I have seen ‘it’ hit the fan so many times, it is quite a predictable process – even for customers (no wonder the seasoned ones are often cynical about the outcomes before work even begins).

    This is getting printed and put on my office wall.

  5. Scott Bower says:

    I am a little surprised to see this post. This is the kind of discussion we had in enterprise 5 years ago. This reads like an intro to paper prototyping and some of those drawn out discussions I used to see on the IxDA boards.

    There are processes that solves all of these issues, if, it is leveraged correctly. And to handle all of the politics, corporate dynamics, blah blah blah you have to think more systemically. And know, I am not going to use the word Service Design.

    It is possible to build a requirements nomenclature that is both hierarchical and many-to-many. It is also possible to build this model in a way that it can be parsed into subject matter vernacular (vocabularies of project managers, users, analysts, programmers, business stakeholders). You can have a system where there is real-time feedback and test automation up through levels of abstraction and complexity. This can range from functional test cases on the lowest level, to, activity-centered stories on the highest level. As a There are tools, processes and techniques, you just have to pull them together. And, the methodology itself needs to be iterated and revised and communicated with rules sets.

    These models have been going through rigorous iteration and validation in the real world for the last few years. They sometimes surface to the public. Personally, I have been developing a system based on rBehave ( no part of rSpec) which is called a BDD (Behavior Driven Development), and, acitivity-centered agile within SDLC frameworks that is technology independent. At it’s simplest, the idea goes that you can describe a system in natural language, as a book with chapters, stories, and actors that drive automation. This story uses basic linguistic techniques which are 100% object orientated. This is a development focused methodology that works w/ Story Maps, and, Systems Engineering for design. We have longitudinal “UX” testing that also cascades through this abstraction model. The high-level stories on the top of the pyramid are release level and require a great deal of both of quantifiable metrics. This approach requires underlying functionality to be developed within real-world scenarios, rather than, agile capacity metrics. Prorotyping and modeling are just endemic to the system itself. It’s actually quite simple, and extremely elegant because these techniques deal with your main point, communication. This process appears to handle the complexity of the service-tier design at the core of the healthcare infrastructures we work on, as insiders. I have been very fortunate to be able to pull recipes from consultancies that are not allowed to develop techniques on enterprise systems.

    The model allows me to output artifacts like BRD’s, or, test cases, from the cataloged domain. It let’s you describe the system differently to different perspectives and needs.

    Someday, I will post a powerpoint. I challenge everyone here to look into BDD patterns and practices. And if it is all news to you, I understand the Agile Roots conference is a place where these kinds of approaches are published. And for sure, challenge anything a consultant says :)

  6. Scott Bower says:

    Apologies as always for the typos and grammer. I rely to heavily on the not yet ubiquitous edit button.

  7. Kathy Potter says:

    Totally agree! I think part of user requirements is about understanding the UI and how the user interacts with the UI. Creating a prototype is great for testing too. But getting a buy in from the client to pay for the added work of creating a prototype is not realistic in all situations.

    Oh yes, Agile, another buzzword for the year. Next year it will be something else. How many people really understand it and use it as it is described? I see people talk about it but don’t apply the principles properly.

    And, I definitely think the ‘old school’ method is a good start but was missing some key components. There was always a lot of work going on in the background that IT managers had to hide in the numbers. At least Agile allows a little more flexibility for project managers.

  8. Peter H says:

    I suppose you come from design, since even in your last flowchart, you don’t involve ‘technology’ until the very end. Why involve technology before design have designed and ‘verified’ the design with stakeholders?! Well, all projects are not simple webpages or apps, but have intricate problems to overcome. Problems which we don’t know if or how good we will overcome them — until we’ve tried. Also the development must be tied into the iteration loop IMHO.

  9. I’m a fan of taking paper prototypes out as early as possible, it can help lower the customer’s subjective take on the “design” they are seeing, especially when we rip up pages that we don’t want to use. :)

    I also think we should get developers in as early as possible so that we don’t show ideas that can’t exist in nature. Plus it makes them feel good, which is helpful later. :)

  10. Fred Beecher says:

    Wow. Thanks everyone for all the comments and the great discussion around this issue. I’ll try to respond in a single comment. Hopefully WordPress doesn’t blow up. : ) Before I get started with that, though, I want to let you know that if you felt this post was useful, I encourage you to read a couple of posts by Anders Ramsay on the UX of User Stories, which addresses some of these same issues but in an Agile environment.
    - Part 1:
    - Part 2:

    @Susan: Your instinct is right… The situation is rare in which I’d just listen to business goals, whip up a prototype, and then put in front of users. There is definitely a use for that process, but it’s an exception. During user research, I’m thinking more the traditional interview and observation that you mentioned, with a huge focus on observation. Concurrently, that’s when BAs would be gathering their high-level requirements. You bring those two things together with business goals to come up with a preliminary design & prototype, then use the prototype to drive out the details of what’s required. Regarding who drives the prototype, it’s probably slightly better if a user does if they’re given a *realistic* task to complete along with the data they need to do so. When you need to get mass feedback, though, a walkthrough is fine.

    @Andrew Absolutely. Thanks man!

    @Jen Yep. That’s the main focus of this article, eliciting requirements through design. And yes, a strong BA/UX partnership can go a LONG way to make that successful. If you’re interested in learning more about sketching sessions, I encourage you to check out Will Evans’ series on facilitating design studio sessions. You can find Part 1 here:

    @Stuart I’ve had the exact same experience. Hence this article. : )

    @Scott Wow. Clearly you are deep, deep into software development process design. I’d love to see you turn that Powerpoint into a blog article and post a link to it here. On the surface, what you described seems very complex. Clearly I could be missing something, because this is a blog post comment and not a fully articulated argument, but I’ve seen complex processes like this really struggle with adoption. The people who are supposed to carry them out get confused and just fall back on the way things have always been done. Even when directives come from on high that the process must be used and there are process mentors and all that corporate infrastructure intended to enforce adoption. That said, you’ve named it “Behavior Driven Development” and it is “activity-centered” which to me is a good sign. To me, this indicates that the purpose of this process is to really understand the business and user goals in order to develop something that actually solves them. Anyway, I’d love to know more… please write that article and post a link here in the comments!

    @Kathy Much earlier in my career, I had the same issues with prototyping as you described. But for the past almost 6 years now I’ve been using a prototyping tool called Axure. I can do my wireframes, richly-interactive prototypes, and documentation all in the same tool. It’s allowed us to really strongly integrate iterative design here at Evantage. Axure isn’t the only tool out there that lets you do this and it might not be right for every situation, but for us it allows us to do what we need to do. And Agile’s more than just a buzzword, so I’d recommend getting used to it. : ) Check out those articles I posted at the beginning of this comment. Anders is a *great* source for all things Agile & UX.

    @Peter Valid criticisms all. Take a look at the white boxes in the flows. Those are collaborative and include technology. I should have made that more obvious. The entire team needs to understand the business problem and to have a voice in how these problems will be solved, hence the collaborative nature of determining/uncovering business goals and design concepting. Also, these flows are drastically simplified for the purposes of this article. You’ll notice I omitted visual design too. In the more detailed version of this flow, visual design-specific activities (ideation, mood boards, etc) can begin as soon as observations start flowing in from user research. Technology-specific activities (estimation, feasibility analysis, etc.) can begin once the concepts begin to take shape. In the full version, I’ve also got technology providing and taking input from iterative prototyping, as you recommend.

    @Nick Absolutely. Although I do favor going interactive as soon as possible. That’s for two reasons. First, I happen to be good with a rapid prototyping tool called Axure. Second (and more important), interactive prototypes more clearly communicate how a system is really going to behave, allowing you to get more accurate feedback. But using paper prototypes to gather feedback and elicit more detailed requirements is DEFINITELY better than interminable requirements review meetings. And yes, developers need early involvement too. Check the collaborative activities indicated by the white boxes.

  11. Everything up to Design Concepting should typically be covered during Proposal phase. Stakeholder (and yes, the end-user has to be a stakeholder as well) involvement is paramount during each process (box in your diagram). Love it, thanks! Mike

  12. [...] Requirements-Driven Software Development Must Die. [...]

  13. [...] Requirements driven development must die via @TriKro [...]

  14. cogmios says:

    I think i miss the non functonal requirements in the diagram?

  15. Fred Beecher says:

    @cogmios: This is a very very high-level diagram. Also, I’m not sure what you mean about “non-functional” requirements. If you’re talking business goals and strategy, identifying those items is part of the first box. If you’re talking user requirements, well, that’s what user research generates. (Although in most circumstances I consider design documentation to represent “user requirements,” in some contexts the requirements must be articulated explicitly in the typical brutally long Excel doc.)

  16. Ronald_T says:

    An UCD process should allways define a series of collaborative activities that involves the entire project team, sometimes more, sometimes less, from my personal experience I think this team should ideally include:
    - Developers
    - Solution managers / Project Managers
    - Interaction designers
    - User researchers
    - Business Analysts
    - UX Designer und Planner
    - Other key stakeholders
    Their collaborative activities take place in several distinct phases: Research, Plan, Design, Adapt and Measure.
    I strongly believe that we should always keep in mind that the UCD process is flexible and depends on the circumstances. Time, budget, man-power, etc.
    A few weeks ago I read two great articles. Perhaps these articles by Holger Maassen might be interesting for one or two: