Could someone fill in a simple cookbook for impact modelling here?
One way I explain it is that it involves going from the simplistic customer statement "I want X" (static model of requirements) into the following questions (the first two straight from TomGilb in the early 80s):
60S(Head Accountant, Jun99) |= AgedDebtors?(5%) [the head accountant would consider the system 60% successful if it reduced the number of debtors not paying within 30 days to 5% or less by June 1999]
Then there's discussion (involving customers) of high-level technical solutions that would 'solve' the statements at some point in the future (earlier the better in line with BusinessValueFirst). This then coalesces into one or more milestones (agreed delivery points) in a CommitmentSchedule. [Sorry I can't link to all relevant XP terms and corresponding WikiNames here]
We call the early days situation high potential and the whole aim of ImpactModelling is to progress as soon as possible from that dangerous but exciting consultancy state, where programmers assigned to the project probably don't have enough definition about what to do, to steady state. Steady state is where impact modelling simply becomes the regular updating, with the customer, of a list on a single piece of paper of one line EngineeringTask's or simple UserStories updatable as often as weekly.
We've recently tried using a Wiki clone for updating the list, linked to separate pages for each task or story (as I think KenAuer does). We're wondering if we need to think again about IndexCards for any descriptions to back up one line task definitions, as I explain a little in KnowingWhenToStop.
ImpactModelling certainly aims to SimplifyTheRequirements with the customer wherever possible. This is one part of the challenge of doing just enough ExternalAndInternalDesign for the next set of SuccessStatement's to be met. We believe strongly that it's a benefit for experienced IT and HumanComputerInteraction people to work closely with customers on external design issues, using prototyping or paper. In some areas, in other words, it's not wrong for developers to influence SuccessStatement's, it's essential. But it must be highly visible (and thus agreed).
Steady state is intended to be kind of boring and predictable for customers - except for those exciting scoops that the evolutionary process and well factored code allow, as described in SuccessStatement. Another way of saying this is NoNegativeSurprises?.
As I've read Wiki pages concerned with XP the impression that I'm given by most of them is that they assume steady state is achievable in all projects from day one. Although this is much better than presuming the need for conventional BigDesignUpFront I believe that it is over-simplistic if applied to all project situations. --RichardDrake
See also ChryslerAndSteadyState, OneLargeEvolutionaryAttempt and SevenPillarsOfCred
See also the 1997 slideware around http://www.objective.co.uk/events/presentation/9710_java_design/sld025.htm