Special issue on component-based software development

Organizations today are in the midst of an unprecedented transformation that is driven by developments in information technology and the business use of the Internet. E-Business applications are changing the ways and methods of conducting business and delivering goods and services to customers in most industries. The effects of these changes on the information systems departments are manifold. One significant effect is the increased pressure to develop new application systems very rapidly. Internet applications are complex as they often seek to integrate systems and processes within and across organizations, use relatively new and unproven technologies and cut across diverse hardware and software platforms. The challenges of managing applications development projects increases even more, when the compressed development cycle times are taken into account.To meet these challenges, applications have to be designed to be adaptable to business and technology change. This requires applications that can be easily upgraded to infuse new functionality. An incremental approach wherein transition and evolution of software applications occurs concurrent with business and technological changes is needed since the traditional "big bang" approach of accumulating change requests until significant modifications warrant a new software release is unlikely to meet business needs. Moreover, as organizations move to integrate processes across firm boundaries and start exposing internal business applications to the Internet, the ability to protect legacy software assets while incorporating new technologies becomes necessary.Component-based Development (CBD) is a new software development paradigm that holds the promise of addressing these needs. This technology, which involves building applications using prefabricated software components and frameworks, leverages the emergence of the middleware and software object standards to make software reuse a reality. It is also expected to move applications development from a craft where in applications are custom coded and built from scratch to a more robust industrial process where applications can be assembled using standard software components procured from the marketplace.Componentization offers several advantages. Since componentization encourages the move towards more modular systems built from reusable software artifacts, it is expected to enhance the adaptability, scalability, and maintainability of the resultant software. Constructing systems with pretested software components is also likely to improve software quality and reliability (Vitharana and Jain, 2000; Lim, 1994; Sprott, 2000). Moreover, CBD has the potential to increase developer productivity (Lim, 1994), shorten development life cycle (Due, 2000), reduce development costs (Due, 2000; Patrizio, 2000) and generally move software development from a craft to a more robust industrial process.However, using component based development approaches creates unique challenges. The papers for this special issue examine three important aspects that require attention for componentbased development to be effectively utilized. First, methods and procedures for determining component requirements have to be developed. Second, effective methods to search component repositories are required. Third, component markets that allow easy procurement of components and frameworks must evolve. Two papers (one in this issue and another in the previous issue 34:3) address the first two aspects while the third paper (published in volume 33:3) focused on component markets.Requirements assessment for components is likely to be different than in traditional software development. CBD requires developers to think through the interrelationships between various elements of an application system at a more granular level at a very early stage in the development process than in traditional development approaches. While on the surface it appears more difficult to effectively assess component requirements, Jain, Vitharana & Zahedi (this issue) draw from the information processing theory to argue that componentization enables developers to form a better internal representation of the problem space and thereby improve requirement determination. Moreover, the knowledge base in the form of component repositories facilitates users information processing during requirements identification thereby improving outcomes.A rich repository of reusable components is necessary for component-based development. When reuse is attempted, the repository has to be searched for the availability of suitable software artifacts. Effective methods to search software repositories become critical for the identification and retrieval of suitable components. Sugumaran and Storey (34:3) discuss the shortcomings of current query processing approaches and propose a semantic-based approach for component retrieval. Repositories typically have one representation for each component and do not contain information about how each component is used or what its content means. When a user searches for a component to satisfy a requirement, they are expected to be very specific about what they are looking for, which limits the search and the usefulness of the information retrieved. They find that more effective component search is possible if queries can be refined through an iterative process that provides semantically meaningful information for the users.Component-based development becomes truly economical when software components and frameworks are procured rather than developed inhouse. In the last few years, a few component markets have been established (e.g. www.flashline.com, www.componentsource.com) that sell a variety of components ranging from low granularity graphical user interface objects to high granularity components that offer business functionality. Moreover, some domain specific initiatives have been undertaken where components supporting core processes in industries, such as financial services and insurance are being developed and sold. Despite these developments, the market is relatively immature and highly supply constrained where developers face difficulties in finding components that meet their requirements in part due to ineffective market mediation (Ravichandran & Rothenberger, 2003). Hong and Lerch (33:3) argue that a possible explanation for this slow progress is that the producers of software components do not understand clearly what users (consumers) of software components really want. Since current markets of software components are still in their infancy, producers of such components lack a framework for predicting consumer behavior, thus they face high uncertainty when it comes to developing software components that can meet consumers' needs. Consequently, learning what consumers consider important when evaluating and choosing software components is critical for the development of successful components.To this end, they seek to establish links between the features of software components and consumer purchasing behavior. Using a simulated component market they find that consumer preferences have a positive impact on purchasing behavior. They also find that consumer preferences are impacted by component characteristics such as the number and the popularity of the methods incorporated in the components, the functional complexity of the components.The three papers that are part of this special issue were selected based on three rounds of reviews. Totally nineteen submissions were received of which three papers were finally accepted. I would like to thank the authors for submitting interesting work and for being very responsive throughout the review process. I also thank the reviewers for their help and inputs.