| Backgrounder: |
Over the years a plethora of software development methodologies have been devised to address the various business and technology challenges faced by the development organizations. Many of these methods have been targeted at the development of custom applications used internally by an enterprise. Custom development methodologies tend to be optimized to support the development of one particular solution that meets a relatively limited set of requirements.
A problem exists with these methodologies, however, as the size and diversity of the enterprise that a development organizations supports becomes larger. Often large organizations have tremendous opportunities to reuse components while also having departments or divisions that need functionality with slight variations. Supporting these types of variations has typically been difficult and often leads to redundant application development.
Fortunately, an ever expanding market for commercial-off-the-shelf (COTS) software products that can be configured has driven the creation of methods aimed solving this problem. Significant research has been undertaken in the area of software product lines by a number of individuals and organizations. The following are a sample of the resulting methods:
- Carnegie Mellon Software Engineering Institute - Product Line Practice (PLP) Initiative,
- Weiss and Lai - Family-Oriented Abstraction, Specification, and Translation (FAST), and
- Jacobson, Griss, and Jonsson - The Reuse-driven Software Engineering Business (RSEB) or as some call it, Application Family Engineering (AFE).
Whether a developer of these types of packages uses object oriented, component-based, or procedural code, the need to be able to quickly customize a product within a set of constraints to meet the specific needs of one or more customers exists for many software product vendors.
In parallel, Web technologies and service oriented architectures (SOA) have helped to advance the state of the art in distributed systems processing enabling significant improvements in architectural flexibility, integration and software reuse. The approach put forth by CBDI for delivering solutions using SOA includes methods for identifying reusable services and the variations required by consumers of those services. Reuse and variability analysis are also key components of the product line approaches described above. Given this similarity, there are two obvious questions. First, how similar are these activities? Second what other opportunities exist for reusing product line techniques within the framework of SOA?
In this article we will look specifically at identifying reusable components (core services in the CBDI approach) and variability analysis. Subsequent articles will look at other aspects of product line methods and how they can be applied to SOA. |