Towards Code Reuse and Refactoring as a Practice within Extreme Programming

Towards Code Reuse and Refactoring as a Practice within Extreme Programming

Vijayan Sugumaran (Oakland University, USA) and Gerald DeHondt (Grand Valley State University, USA)
DOI: 10.4018/978-1-60566-172-8.ch004
OnDemand PDF Download:


Software reuse has been discussed in the literature for the past three decades and is widely seen as one of the major areas for improving productivity. Agile development techniques were first developed in the mid-1990s as a code-oriented method of software development that seeks to improve upon the traditional plan-based methodologies. Both approaches bring value to the software development process. The purpose of this chapter is to propose a framework that will integrate the strengths of code reuse into the Extreme Programming methodology. It is believed that this approach will lead to a more effective method of software development.
Chapter Preview


Agile software development first began in the mid-1990s as an alternative to the traditional Systems Development Life Cycle or plan-based methodologies widely implemented at the time. These lifecycle methodologies take a phased approach to systems development, requiring that one phase be completed prior to beginning the next phase (Hoffer et al. 1998). Agile methods, on the other hand, focus on iterative software development, the continuous implementation of working code. From the beginning of the agile “revolution”, specific methodologies have continued to refine these techniques, the most popular being Extreme Programming (XP). This approach was first implemented at Chrysler in 1996 (C3 Team 1998) as a way to accelerate development efforts while producing better software. XP is an implementation of Agile development techniques based upon twelve practices, one of which is refactoring. Specifically, refactoring involves modifying software to improve its internal structure in a way that does not alter the external behavior of the code (Fowler 1999).

At its core, Extreme Programming emphasizes rapid and frequent feedback to the customers and end users, unit testing, and continuous code reviews. By focusing on rapid iterations of simpler code, XP seeks to identify and resolve potential pitfalls in the development process early, leading to projects that remain focused on the ultimate goal – timely delivery of a well-designed and tested system that meets customer requirements. This methodology works by bringing the whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and tune the practices to their unique situation. It also seeks to implement the simplest design that will satisfy current user requirements (Lindstrom and Jeffries 2004) without attempting to anticipate future design or user requirements.

Nerur and Balijepally (2007) state that agile methods are people-centric, recognizing the value that competent people and their relationships bring to software development. In addition, it focuses on providing high customer satisfaction through three principles: quick delivery of quality software; active participation of concerned stakeholders; and creating and leveraging change (Highsmith 2002). Big upfront designs/plans and extensive documentation are of little value to practitioners of agile methods. Important features of this approach include evolutionary delivery through short iterative cycles — of planning, action, and reflection — intense collaboration, self-organizing teams, and a high degree of developer discretion (Nerur and Balijepally 2007). Organizations undertaking agile methodologies must invest in tools that support and facilitate rapid iterative development and versioning/configuration management (Nerur, Mahapatra, and Mangalaraj 2005). One way to achieve this is through investment in a suitable reuse strategy supporting agile development.

Reuse of existing software components has been an area of investigation since the early 1980’s and is widely seen as one of the major areas for improving software productivity. By reusing previously tested and implemented code, it is hoped that developers will become more efficient by not having to solve the same problem twice. One of the key challenges with effectively implementing a program of software reuse is the identification of suitable components. If the identification process consumes more resources than saved in development time, these programs will not be undertaken by developers.

Additional challenges encountered in this approach include a lack of incentives, lack of available resources, suitable component identification, and necessary tools for customization and validation, among other items. In spite of this, appropriate component reuse can integrate previously implemented software into current development projects serving to propagate validated code within the application infrastructure (Ravichandran 2005).

Complete Chapter List

Search this Book:
Editorial Advisory Board
Table of Contents
Chapter 1
Hong Zhang, Rajiv Kishore, Ram Ramesh
A conceptual modeling grammar should be based on the theory of ontology and possess clear ontological semantics to represent problem domain... Sample PDF
Semantics of the MibML Conceptual Modeling Grammar: An Ontological Analysis Using the Bunge-Wand-Weber Framework
Chapter 2
Henry M. Kim, Arijit Sengupta, Mark S. Fox, Mehmet Dalkilic
This paper introduces a measurement ontology for applications to semantic Web applications, specifically for emerging domains such as microarray... Sample PDF
A Measurement Ontology Generalizable for Emerging Domain Applications on the Semantic Web
Chapter 3
Zhiyuan Chen
Environmental research and knowledge discovery both require extensive use of data stored in various sources and created in different ways for... Sample PDF
Semantic Integration and Knowledge Discovery for Environmental Research
Chapter 4
Vijayan Sugumaran, Gerald DeHondt
Software reuse has been discussed in the literature for the past three decades and is widely seen as one of the major areas for improving... Sample PDF
Towards Code Reuse and Refactoring as a Practice within Extreme Programming
Chapter 5
Miguel I. Aguiree-Urreta, George M. Marakas
Requirements elicitation has been recognized as a critical stage in system development projects, yet current models prescribing particular... Sample PDF
Requirements Elicitation Technique Selection: A Theory-Based Contingency Model
Chapter 6
VenuGopal Balijepally, Sridhar Nerur, RadhaKanta Mahapatra
Software development in organizations is evolving and increasingly taking a socio-technical hue. While empirical research guided by common sense... Sample PDF
IT Value of Software Development: A Multi-Theoretic Perspective
Chapter 7
Amel Mammar
UB2SQL is a tool for designing and developing database applications using UML and B formal method. The approach supported by UB2SQL consists of two... Sample PDF
UB2SQL: A Tool for Building Database Applications Using UML and B Formal Method
Chapter 8
Juliette Gutierrez
Crime reports are used to find criminals, prevent further violations, identify problems causing crimes and allocate government resources.... Sample PDF
Using Decision Trees to Predict Crime Reporting
Chapter 9
Karen Corral, David Schuff, Robert D. St. Louis, Ozgur Turetken
Inefficient and ineffective search is widely recognized as a problem for businesses. The shortcomings of keyword searches have been elaborated upon... Sample PDF
A Model for Estimating the Savings from Dimensional vs. Keyword Search
Chapter 10
Praveen Madiraju, Rajshekhar Sunderraman, Shamkant B. Navathe, Haibin Wang
Global semantic integrity constraints ensure the integrity and consistency of data spanning distributed databases. In this chapter, we discuss a... Sample PDF
Integrity Constraint Checking for Multiple XML Databases
Chapter 11
Russel Pears
Data Warehouses are widely used for supporting decision making. On Line Analytical Processing or OLAP is the main vehicle for querying data... Sample PDF
Accelerating Multi Dimensional Queries in Data Warehouses
Chapter 12
Vikas Agrawal, P. S. Sundararaghavan, Mesbah U. Ahmed, Udayan Nandkeolyar
Data warehouse has become an integral part in developing a DSS in any organization. One of the key architectural issues concerning the efficient... Sample PDF
View Materialization in a Data Cube: Optimization Models and Heuristics
Chapter 13
Athman Bouguettaya, Zaki Malik, Xumin Liu, Abdelmounaam Rezgui, Lori Korff
The ubiquity of the World Wide Web facilitates the deployment of highly distributed applications. The emergence of Web databases and applications... Sample PDF
WebFINDIT: Providing Data and Service-Centric Access through a Scalable Middleware
Chapter 14
James E. Wyse
Location-based mobile commerce (LBMC) incorporates location-aware technologies, wire-free connectivity, and server-based repositories of business... Sample PDF
Retrieval Optimization for Server-Based Repositories in Location-Based Mobile Commerce
Chapter 15
Shing-Han Li, Shi-Ming Huang, David C. Yen, Cheng-Chun Chang
The lifecycle of information system (IS) became relatively shorter compared with earlier days as a result of information technology (IT) revolution... Sample PDF
Migrating Legacy Systems to Web Services Architecture
Chapter 16
Myeong Ho Lee
The trend toward convergence, initiated by advances in ICT, entails the creation of new value chain networks, made up by partnerships between actors... Sample PDF
A Socio-Technical Interpretation of IT Convergence Services: Applying a Perspective from Actor Network Theory and Complex Adaptive Systems
Chapter 17
T. Ariyachandra, L. Dong
Past evidence suggests that organizational transformation from IT implementations is rare. Data warehousing promises to be one advanced information... Sample PDF
Understanding Organizational Transformation from IT Implementations: A Look at Structuration Theory
Chapter 18
Yuan Long, Keng Siau
Drawing on social network theories and previous studies, this research examines the dynamics of social network structures in Open Source Software... Sample PDF
Social Networks Structures in Open Source Software Development Teams
Chapter 19
Susanta Mitra, Aditya Bagchi, A. K. Bandyopadhyay
A social network defines the structure of a social community like an organization or institution, covering its members and their... Sample PDF
Design of a Data Model for Social Networks Applications
About the Contributors