One of the most attractive temptations on a software development project is to consider it successful if it simply meets the written requirements on time and on budget. When the pressure is on and deadlines are approaching the requirements list makes for an appealing defense against the struggles of a project and its architecture. The problem with this outlook is that it does not take into account the premise of any software project: to make the lives of the users better.
Architects treating the identified requirements as the cumulative to-do list for a project are placing an implicit roadblock to discovering the real needs of the client. They run the risk of choosing an architectural approach that would seem foolish if the requirements were reasoned about to discover the deeper meanings within. By taking this viewpoint the architect places himself aligned with the words of the requirements while rejecting their intent. There is no driving need or desire to discover those intentions since expanding on the requirements means the project will have increased scope to deal with to be "successful". Meanwhile the client is left with a project that risks being little better off then what they could verbally express.
Instead an architect should consider the current set of discovered requirements as a living list of open discussion points. The relationship between the architect and the client now becomes one of shared discovery instead of trying to see how many requirements can be checked off as complete. Each requirement forms an entry point into a conversation to a deeper understanding of the problem and the boundaries for the set of possible solutions to choose from. By taking the view that a requirement is simply accumulated current knowledge an architect is encouraged to approach each one as if the problem will change or at least might be better understood tomorrow. The architect is driven to produce software that is a joy to use and makes the user's lives better.
by Christopher Dempsey
This work is licensed under Creative Commons Attribution License 3

RSS