Discussion
Although it may seem wasteful to spend so much time on the specification, this phase is probably more important than design in software development! If handled incorrectly, the specification can become the bottleneck of the development.
A flexible interface has the advantage of simplifying the experimentation. If prototypes can be refined without changing the interface, the iterations are significantly reduced. As well as practical benefits, there are also design advantages:
High-level understanding— The specification provides the blueprint for the AI as a black box, separating design from implementation. Not only does this place the task within a bigger picture (the entire architecture), but it also allows theoretical analysis of the process (for instance, can this problem be solved). Abstraction— If the input and outputs have been formally described, the entire problem may be classed as a particular variation of a more generic one (for instance, pattern recognition and function approximation). We can then use the expertise from this second domain to assist our development. Comparison— Given the same interface, different modular implementations can be easily integrated. Evaluating them together then becomes a much simpler task, which is an advantage when comparing prototypes.
These benefits very often outweigh the difficulty of establishing the specification—such as taking into account restrictions, comparing options, making compromises.
|