A component is a set of procedural codes. It is a language that is neutral and an independently implemented package of services delivered in an encapsulated and replaceable container and, accessed via one or more published interfaces. Technology for components makes use of different platforms for different components and makes them all combinable. A component-based development (CBD) is a set of techniques and tools for construction of applications from new and prefabricated components, and thus provides infrastructure for reuse as well
The component system has developed over the years to Corba 3 that is used today. It started with Pascal and Cobol in 1970-80's and then moved on to C++ in 80s and 90s. Distributed object system developed in 1990-2000. As of 2000-2001, the future is towards the Corba 3, Java, EJB way. The productivity curve for development will improve only if there is a strong and robust architecture that is reusable, pre-defined and successful.
The Gartner Group claims, "By 2001, 60% of all applications will be developed as components." The Butter Group on a similar ground expected the CBD to take of in 1997 itself (according to a 1999 study).
Brietfeld feels the future of software lies in the CBD market because components address certain core issues. They develop applications that are time-based and using existing technologies. They increase productivity and speed of delivery without loss in quality. They also help in legacy and transition applications. Components remove the need to make binary decisions between �build and buy' at the application level.
A component model ideally consists of an object model with interface, attributes, binary layouts along with component architecture that is defined by its patterns and services. The object model is constrained by the architecture but is built by using it. The architecture's patterns could be based on an event model, a property model or even on introspection and reflection. The services offered are directories, transaction, persistence and security.
Component categories are plenty. They are business components, data components, presentation components and process components broadly. Business components implement business rules that manipulate data and provide information. Data components are reused in business components providing basic services such as create, delete, list and update. The presentation components manage the execution of business process workflow.
Any component should be identifiable, traceable, replaceable and can be accessed via an interface. For component interaction, there must be clearly specified interfaces.