Software engineers are facing increasing pressure from clients to provide architectural solutions that can be built with today's requirements and be flexible enough to meet future needs. It is common practice in the domain of software development to see customers constantly modifying and expanding the requirements of the future system. Faced with the reality of everchanging requirements, it is desirable to use an architecture that allows for easy modifications of existing functionalities and easy adoption of new ones.

An architecture that is designed to minimize the impact of future changes is the "plug and play" architecture. According to the definition provided by Webopedia (, the plug and play architecture refers to the ability of a computer system to automatically configure expansion boards and other devices. Originally, the plug and play architecture was used by the hardware industry. The idea of installing a new device that will configure itself to work in harmony with other parts of an existing system is very promising. The "plug and play" architecture eliminated the need to adjust switches, jumpers, and other configuration elements in a hardware system. It brought general relief to the frustration caused by the large number of the problems encountered during the process of installing a new piece of hardware. The success of the plug and play approach in the hardware industry created a fertile environment in the software engineering environments to build software systems applying the same techniques.

The key to building software systems that provide this high level of flexibility is to use a component-based design. Components are units that can be developed independently and even from third parties. They can be organized to dialog with each other and to provide the functionalities required by a software system. Components provide their services through a well-defined set of interfaces. It is important to note that defining a well-thought-out set of interfaces is crucial to a component's use and reuse. If interfaces are not fully encapsulating, it will be difficult to tune or enhance implementations, as poor encapsulation will hinder reuse [Lak96]. When the component-based development reached its level of maturity, the plug and play technology was at programmers reach. Plug-ins have been used widely since the introduction of Netscape's Navigator Web browser and one of the most successful examples of plug-in architecture was Apple's QuickTime [Szy99].

0 0

Post a comment