The Regenerate Web

facilitating the regeneration of software teams

User login

Syndicate

Syndicate content

Services


Add to Technorati Favorites

Project

- delivery (3)
- duration (1)
- effort (3)
- estimation (4)
- metrics (1)
- Planning (1)
- PMI (1)
 - PMBOK
- task (2)
- velocity (6)

Management

- Boss (1)
- consensus (1)
- influence (1)
- leader (5)
- meetings (1)
- Motivation (1)

Browse archives

« July 2008  
Su Mo Tu We Th Fr Sa
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Analysis

- modeling (3)
- requirements (3)
- research
- Analysis (1)

Who's online

There are currently 0 users and 0 guests online.

Requirements Modeling

| |

OK! So everyone who has had received requirements for a project that didn't "add up" please raise your hand.  What about requirements that were impossible to figure out if they add up without rewriting them from scratch?  What about requirements that primarily describe the current situation, and not the desired future state?  How about requirements that are written more as a functional specification (I need a report that has these data elements with this sorting grouping and formatting)?  

One of the things that use cases and user stories, try to convey rather than higher ceremony requirements documents, is a sense of what is real, and what is important.  I think that the problem is more one of context.  For large projects, and projects where the requester is moving into unfamiliar territory, the context is important.  

When we "do" software design, we start to model the business process, and how our solution will interact or integrate into the business process.  We define components, and we model interaction between those components.  Why on earth do we wait until we are designing software to do this?  Because our SDLC or Methodology told us to?  Horsepuckey!

Many projects fail on requirements because the analyst feels  or acts as if he or she must capture every level of detail before we can determine feasibility.  The truth is that at that level of detail, things are probably going to change before we get into production, anyway.  So if you start out with 9 months to do the project, you take 6 months to finish the requirements before you can START design, and then it is already to late.  All you can do is reduce scope if you want to meet the originally posited date.  In 3 months, you can't staff up fast enough and maintain traction so that you actually increase velocity sufficiently to make a difference.  I have done that project several times, and the math is now firmly embedded in my grey matter.

If you have already been there and done that, you should be asking what should we do instead?

Indeed!!!  I propose that requirements should be modeled - that is, understand the basic structures, and the axes along which requirements are likely to vary as time marches on, and let the design begin as early as possible.  Care for an example?  Thought you might.

As I develop requirements for a new system, I have many sets of business rules for various aspects of the system.  As a requirements modeler, rather than having to nail down every last rule, what I really need are the processes that rules apply to (rule sets).  For each rule set, I need the rule basis data (sets of data elements that the rules rely on).  For each rule set, I need to know the frequency of change over the last 2 years, and the axes (data elements) along which it tends to change.  I don't really care what the rules are, only how they are applied in the process, and the data that is used to drive them.  

Frequently, I have seen analysts punt, because the business model is changing, and they can't nail down the exact rules that will be in place.  It would be my strong contention that the rules won't be static after the software is live anyway, so design for rules to change.  

For people who have been doing business rules for a long time, this is probably very basic, but based on some the the requirements documents that I have seen, it is less widely understood than it should be.