"Perfection is achieved, not when there is nothing left to add, but when there is nothing left to take away..."
- Most requirements are not easily available on the surface
- Question everything
- Important to understand the why behind a particular thing
- CHARACTERISTIC INFORMATION
- Goal in context
- Scope
- Level
- Preconditions
- Success end condition
- Failed end condition
- Primary actor
- Trigger
- MAIN SUCCESS SCENARIO
- EXTENSIONS
- VARIATIONS
- RELATED INFORMATION
- Priority
- Performance target
- Frequency
- Superordinate use case
- Subordinate use case
- Channel to primary actor
- Secondary actors
- Channel to secondary actors
- SCHEDULE
- OPEN ISSUES
- Dont want to be overspecific
- Can cramp things
- Better to have good level of abstractions
- Many project failures are blamed on an increase in scope
- Also known as feature bloat
- Track feature requirements
- Just like code source control
- Understanding "constraints" and how to exploit them is useful
- Is there an easier way?
- Are you trying to solve the right problem, or have you been distracted by a peripheral technicality?
- Why is this thing a problem?
- What is it thats making it so hard to solve?
- Does it have to be done this way?
- Does it have to be done at all?
"He who hesitates is sometimes saved"
- Prototype things just to get the juices flowing yknow?
- Flush out your concerns
- Program specification is the process of taking a requirement and reducing it down to the point where a programmers skill can take over
- Dont want to go so far as to rob the programmer of all creativity