However, the construction of software for simulating, implementing, monitoring, controlling and diagnosing such systems has become a gargantuan task. For instance, traditional product development methods for reprographic machines (photo-copiers, printers, fax machines etc.) involve dozens, if not hundreds of mechanical, electrical, software and systems engineers, sometimes working for years through several hard-prototyping cycles. Software for such systems is produced by hand, based on separate analyses by the different groups involved. Few, if any, automated tools are available to help in the design and analysis of machines, or in the production of software and documentation. In the first few prototyping cycles, the hardware may change significantly each time, further complicating concurrent software development. Different teams work on different tasks around the same machine (e.g., control software, user interfaces, customer support, service documentation), often starting from little else than the machine itself and semi-formal descriptions.
Such work practices are unable to deal with the increasing demand for faster time to market, and for greater flexibility in product lines. Faster development cycles essentially demand less hardware prototypes and faster, concurrent software development. The obvious response to the demand for flexibility is to develop a family of generic ``plug-and-play'' modules. These may be selected and composed by the customer, perhaps for the first time at the customer's location. However, this requires the development of software that is generic, reusable and customizable, rather than software that is custom-tailored for a particular configuration.
Back to the top.