Agile Product Management, Marketing, and More
Posts tagged non-functional
Non-Functional Requirements as Stories
Nov 30th
In a prior post, I suggested that the use of a thorough checklist of possible non-functional requirements categories is a good way to probe for the relevant requirements on a specific project under consideration. As I think about it now, I realize it may also help to review non-functional requirements of other projects as another source of inspiration.
My point for writing today, however, is the idea that regardless of how one arrives at those requirements, one can still use the user-story format for recording them. Particularly when the requirement is a business-level or business-driven requirement rather than a customer-driven one, this format allows the recording of the source of a requirement so that it is easier to explain and remember later:
Consider the example of the CTO constraining the team to use the existing orders database. (This was the real situation; the team was considering a second orders database that would be sychronized at night. The CTO overheard this and said “no!”) If we wrote this requirement as simply “Must use existing orders database” it would be entirely possible that a few months down the road we wouldn’t remember why we should be constrained in that way. We’d ask the product owner if she cared if we used a secondary database, and she’d say she had no objections. And we’d make a mistake of using one. Embedding the person who wants something can be very useful.
In my own experience with collecting and then analyzing requirements for several active projects (Each at a different phase of development) I have run into the problem of not remembering the source of requirements at a later date. The author also suggests thinking of them as “constraints,” rather than “non-functional requirements” — which is a suggestion the linguist in me finds appealing, as it is a more naturally meaningful phrase.
While the CIO suggestion above does illustrate the way I find the user story format to help solve the requirement-source problem, I have a related problem that I have yet to solve: remembering the details of a negotiation. Over time, different stakeholders may make differing or even competing requests. Later in deelopment, when these stakeholders ask why their suggestion was not accepted and implemented, I have a hard time remembering the rationale for a particular decision. Thoughts, anyone?
Non-functional Requirements Checklist
Oct 25th
When developing a new software application or working to architect a new platform, the realm of non-functional requirements poses a challenge to creativity. What *should* the system requirements be?
If your new application is to be built to integrate with older software, you must keep an eye towards the languages and frameworks used–because your new application may demand resources totally foreign to the older software you integrate with, which might demand a significant investment on the part of the users of your older application to move up to the new one.
Beyond that, what kind of performance metrics should be considered “ideal”? For an application that steps into new territory for your organization, is a response time for a particular operation of a particualr number of seconds (i.e. measurable) defensible, or even feasible? Is the proper definition of a response time more useful if it is generic, without reference to a particular number of seconds? Perhaps crafting measurable numbers that are derived from the measurements of competing software or similar applications is the answer.
More food for thought about areas to consider within the category of non-functional requirements can be consumed here.
EDIT: If you’re really in the mood for a load of categories to consider, here’s Wikipedia’s list of 70-odd Ilities for you to consider!