ABSTRACT

Car designers do not redesign the wheel each time they produce a new model. In contrast, software engineers often find themselves repeatedly covering well-trodden ground, and although the majority of natural language processing (NLP) systems are currently experimental, it is still the case that well-understood technologies are continually reimplemented (see Section 28.1.2). The idea of using software components for many programs is an obvious one, but has proved difficult to achieve in practice (Coad & Yourdon 1991a: 12; Prieto-Diaz & Freeman 1987: 6–16).