Despite advances in hardware and software technologies, it remains challenging to develop web services software that are correct, efficient, and flexible. Some challenges arise from increasingly demanding end user requirements for it’s quality and functionality. Other challenges arise from complexities associated with integrating embedded systems composed of modular components. Web services represent an evolution of the Web to allow the open and flexible interaction of applications over the Internet. XML Web services are the fundamental building blocks in the move to distributed computing on the Internet.
In this paper, we focuses on integrating Component based development and Web Services to enable the development and usage of components through the web by dynamically creating web services for the functionalities of the components. XML Web services standards, which include SOAP, XML, and WSDL, provide a high level of interoperability across platforms, programming languages and applications and hence these facets of web services have been used to integrate the best aspects of Component based development and the Web.
A software architecture, once defined, specifies the components that are part of the architecture and, for each component, its provided and required interfaces and its functional and quality specifications.
Thus a software component is a unit of composition with explicitly specified provided, required and configuration interfaces and quality attributes. In the case of product-line architectures, the component is not composed by third parties, but rather by the organization itself, for the various products. Developing reusable components is a fairly constrained process in that the software architecture, of which the component will be a part, defines to a considerable extent the way the component is to be developed, the functionality encompassed by the component and the required quality of the component as in Figure 1.
In addition to the software architecture, there are however several other factors which affect component development such as the intended reusability of the component and the presence of legacy code. The intended reusability of a component is of high importance for component development, because it has considerable effect on the design, implementation and deployment of the component.
There are 3 levels of component reuse[3,4]:
The component needs only to fulfill the product requirements and be prepared for future system requirements.
Software product line:
The second level of reuse is where components are used for subsequent product versions and for a family of products containing related but not identical functionality. A component should in this context, be prepared to easily incorporate new requirements for subsequent versions, but also cover the differences in component requirements between the various products. The latter is generally termed as variability.
Third party components:
The highest level of reuse is the use of components over product versions, a family of products and within different organizations. This is also referred to as commercial off the shelf (COTS) technology.