A knowledge-based framework for extracting components in agile systems development Vijayan Sugumaran Æ Mohan Tanniru Æ Veda C. Storey Published online: 24 July 2007 Ó Springer Science+Business Media, LLC 2007 Abstract Considerable strides have been made in the use of components in software development. Many proprietary enterprise resource planning (ERP) software environments use modular components to develop and customize ‘‘best practices’’ to meet a specific organizational need. In agile application development, many developers and users are asked to design systems in a short period of time. These applications may use components that are embedded in software repositories. The challenge then is how to select the right software components (data and procedures) to meet an application requirement. Although experienced developers may select and customize components to meet the needs of an application, such expertise may not be available to other applications. This paper presents a knowledge-based framework to select and customize software components and demonstrates its value in deriv- ing quality specifications, even when the developers are relatively inexperienced. Keywords Component reuse Á Domain model Á Agile systems development Á Component repository Facing an increasingly competitive and uncertain busi- ness environment, enterprises are seeking new strategies and technologies to implement an agile and flexible software architecture that will allow them to react quickly to market changes. Modularity in the manage- ment of software projects became fundamental in the 70’s as the size of software development efforts started to increase (e.g. evolution of chief programmer teams). In the early 80’s, when firms wanted flexibility in soft- ware to meet changing user’s requirements and minimize software maintenance costs, the focus shifted to modu- larizing the code with ‘‘well defined’’ structures (struc- tured programming and design). These structures are intended to make code change easier when requirements change. Similarly, when firms wanted to reuse code in large software development projects, each major function was decomposed into smaller ones. In the 90’s, the reuse of software objects became more dominant as applica- tions started to incorporate more and more domain knowledge with increased potential for a certain degree of configurability. However, their reuse is complicated because of a lack of context that is generalizable or the context embedded in the reusable component is not explicit enough to appreciate its potential reuse. In es- sence, as software development moved up the application chain, a greater degree of context is being introduced to enable its wider applicability, but the context embedded has a design focus (bottom-up), as opposed to a process focus (top-down). In the 2000’s, the Internet became pervasive so orga- nizations started to make their applications transparent for external use by their business partners. As a result, agile methods have become more important for the development of flexible applications. The underlying assumption is that more and more application components (procurement, V. Sugumaran (&) Department of Decision and Information Sciences, School of Business Administration, Oakland University, Rochester, MI 48309, USA e-mail: sugumara@oakland.edu M. Tanniru School of Business Administration, Oakland University, Rochester, MI 48309, USA e-mail: tanniru@oakland.edu V. C. Storey J. Mack Robinson School of Business Administration, Georgia State University, 60 Broad St., Atlanta, GA 30303-4015, USA e-mail: vstorey@gsu.edu 123 Inf Technol Manage (2008) 9:37–53 DOI 10.1007/s10799-007-0025-7