Imaging systems are traditionally developed using structured analysis and design techniques at best. Such approaches tend to be rigid with respect to changing needs, technologies, devices and algorithms-for
example, when additional compression algorithms are needed or attached devices are changed large parts of software applications employing those techniques and interfacing with those devices must be modified to accommodate the change. In a larger perspective, these systems are difficult or impossible to reuse; each new problem requires a new solution. This is generally undesirable and often not necessary, but only if best practices in software engineering are
employed. These best practices have been explored and documented in detail with regard to object-oriented systems, which suggests that it is an appropriate paradigm to employ in the development of future imaging systems. This work examines these best practices, in the form of patterns and design principles, with reference to imaging systems.