Specifications make assumptions which may not be obvious to
everyone. A contrived and flippant example could be that the specification
for a new model of luxury motor car does not explicitly state that there
should be four wheels; one at each corner. The designers then assume that
they can make savings by having three wheels. Consumers reject the concept
and the product becomes un-sellable.
Taking time out to learn about the domain and the legacy through reading
code and documentation, observation, interviews, workshops, and producing
prototypes will add cost and time to the project. On the other hand, such
activities should reduce the risk of missing requirements and will increase
the quality of the reengineered artefact.
Programmers are often reluctant to read documentation (particularly
if they suspect it is out of date) and code (particularly if it is poorly
structured or written in a language they are not familiar with). By providing
incentives, they are more likely to invest the necessary time than if were
merely instructed to do so. However, such incentives may add cost to the
project.
Since learning can take place throughout the project as well as at the
beginning, you can start producing code earlier. As you understanding grows,
you are better placed to ask the right questions and so improve your understanding
further. However, you could have to re-work some aspect of the reengineered
system after you discover an important requirement. On the other hand,
you may well have adopted the concept of throwing prototypes away (an idea
popularised by Brooks95 ). In which case, covering the same ground is
already an established part of the project's methodology.
An expert in the development team can provide instant and unsolicited
feedback on issues. They are also less likely to provide misleading or
incomplete advice, than the expert interviewee outside the team, since
they have a professional interest in seeing the project succeed.
Workshops are a useful means to deliver expertise to the team and also
allow them to communicate their own knowledge to the group. However, they
do require a substantial investment of time from all the staff.
The issue of not adding extra time and costs to the project has not
been fully resolved. Having made the investment, however, it is likely
that it will pay off in less time being spent testing, debugging and seeking
customer/user acceptance at the end of the project. |