Re:Linguistics and Programming Languages
by Jtsummers on Monday July 17, 2017 @02:04PM
(#14790919)
We may not be able to do this automatically, but you can use a kind of refinement calculus to accomplish this.
Start off with vague requirements from your client:
We need a machine which can wash clothes at various
temperatures and speeds. The user should have options
to control the temperature and speed since they'll have
different types of materials. Maybe we can give them
some preset options?
Conversation:
What are the temperature options?
Hot, warm and cold; but it's in two cycles and each can
have a different temperature.
How long should it wash the clothes for?
That depends on the material and how dirty it is.
What if it's really dirty?
They should be able to do an extra rinse cycle.
How fast should it spin?
That depends on the material and how dirty it is.
Refined (control panel only):
Dial presenting options for:
Sanitary
Normal
Sensitive
Bulky
Buttons allowing further refinement:
Water: Hot/Cold, Warm/Warm, Warm/Cold, Cold/Cold
Extra Rinse: (yes or no)
"Dirtiness": light, normal, heavy (impacts wash duration)
If you use a proper requirements management tool, you can trace every one of those final system requirements back to some (slightly editorialized) conversation or initial (ambiguous, plain language) requirement description. Of course, this will, in reality, be an iterative process as you discover ambiguities in the specification and code and go back to the client for feedback and clarification.
Start off with vague requirements from your client:
Conversation: Refined (control panel only): If you use a proper requirements management tool, you can trace every one of those final system requirements back to some (slightly editorialized) conversation or initial (ambiguous, plain language) requirement description. Of course, this will, in reality, be an iterative process as you discover ambiguities in the specification and code and go back to the client for feedback and clarification.