Accelerating Agile Development through Software Reuse


One of the main attractions of agile methods over traditional heavyweight approaches to software engineering is their ability to accelerate the software development process. By minimizing superfluous activities and artifacts such as models and documentation and focusing developers' efforts on coding, agile methods increase productivity and reduce overall development time.

One of the main attractions of agile methods over traditional, heavyweight approaches to software engineering is its ability to accelerate the software development process. By minimizing superfluous activities and artifacts, such as models and documentation, and focusing instead on coding, agile methods can increase productivity and reduce overall development time.

Focusing on coding, though, also has a down side. It means that new applications are typically written entirely from scratch. Software reuse, as envisaged by McIlroy back in 1969 [1] at the conference that coined the terms "software engineering" and "software crisis", is not explicitly addressed in the current generation of agile methods. If it takes place at all, reuse tends to be done in an ad hoc, unsystematic way.

Until recently this was not a major issue, as fine grained component reuse was not a cost effective proposition.  There simply were not enough good components around and the technologies available for finding them were too inaccurate. As a result, systematic attempts to reuse software did not pay off because the likelihood of finding suitable components was too low when compared to the effort required to find and evaluate them. However, this situation has changed over the last few years with the dramatic increase in the amount of open source software freely available over the Internet.  The emergence of high-performance code search engines such as Koders, Google Code Search and Merobase dedicated to indexing and support searches over these code resources has also contributed to its popularity. For the first time, these technologies make fine-grained component reuse a viable proposition, by reducing the effort involved in finding and reusing components to a similar or lower level, when compared with the effort of building them from scratch.

<--pagebreak-->All kinds of projects stand to benefit from this enhanced opportunity for reuse, but agile projects may benefit the most, as they specialize in development at the level of fine grained components. They also  offer the same basic value proposition as software reuse: accelerated development. Additionally, they emphasize the description of what components should do (i.e., tests) before the description of how they should do it (i.e., implementation) and a ready-made opportunity to search for potential reusable components before they are implemented from scratch. In short, there is a high potential synergy between agile development and software reuse; this can further accelerate the software development process and, ultimately, lower costs.

In this paper we introduce a software tool developed by the Software Engineering Group at the University of Mannheim that aims to promote this synergy. Code Conjurer [2] is an Eclipse plugin that is driven by the Merobase component search engine. The tool is released as open source under the GNU/GPL license.

Proactive Reuse Recommendation
The basic service, offered by Code Conjurer, is used to search for reusable components (e.g., Java classes) based on a description of an interface or API (i.e., set of operations). This description can take various forms, such as a Java code module (e.g., interface or class) or even a UML class. Suppose, for example, that a developer has decided that he wants a matrix <--pagebreak-->supporting a certain set of operations.



About the author

Werner Janjic's picture Werner Janjic


Werner Janjic is a research student at the chair for Software Engineering at the University of Mannheim. Werner’s main research interests are practical software reuse in the context of agile development and its impact on the software development lifecycle. He received a diploma in business and computer science from the University of Mannheim. Contact him at the Institute for Computer Science, University of Mannheim, A 5, 6, B238, 68131 Mannheim.


About the author

About the author

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, is the place to go for what is happening in software development and delivery.  Join the conversation now!