Abstract
Neural networks have been used to solve a wide range of problems. Unfortunately, many of the applications of neural networks reported in the literature have been built in an ad-hoc manner, without being informed by the techniques and tools of software engineering. The problem with developing neural networks in an ad-hoc manner, using a "trial and error" or "build and fix" approach, is that successes are difficult to repeat. Building neural networks to solve specific problems using ad-hoc processes is repeatable only if there is a sufficient culture of disciplined practice and experienced people in the organisation to facilitate the process. In this paper we propose a set of methods for developing neural networks that can be used to systematically and repeatably "engineer" neural networks to solve specific problems. We explore the "design problem" for neural networks, and the problem of validating and verifying the operation and learning algorithms for neural network software. A feature of our approach is to separate the generic components of a neural network from the application specific components.