Putting Reuse Research into Practice
Jeffrey S. Poulin, Lockheed Martin Federal Systems
The field of reuse has produced many accomplishments. To suggest areas upon which to focus future work requires gaining a perspective on these accomplishments and their impact on the way organizations really develop software. What does an organization need to become successful with reuse?
Technology or not?
Much of the work in reuse centers on developing new technologies. If we were to list reuse technologies that we thought we needed for successful reuse, component-based reuse methods would get a lot of attention. So would software architectures, since we need to understand how components fit together into a system. We would also look at "product lines" and the related fields of domain analysis and engineering. Other reuse technologies might include program generation, formal methods, and transformation systems.
However, when faced with the question of whether technical or organizational problems drive reuse, most members of the reuse field agree that organizational issues prevail. More specifically, I believe that business decisions drive reuse. In short, if we cannot quantify the benefits of reuse in meaningful terms such as saving time or money, reuse simply will not happen. This truth holds from the highest levels of management to the most technical people we have writing code. To suggest that reuse research develop more technology would point our resources in the wrong direction.
What to research next
Fortunately, we understand the business aspects of software reuse and numerous positive experience reports support this claim. I believe that we have largely solved the issues essential for successful reuse [SSR97]. These issues include metrics, how to classify and retrieve components, how to build libraries, and how to most effectively organize a development organization for reuse. Interestingly, the 9th Workshop on Institutionalizing Software Reuse (WISR'9) thrived on the question of where we can claim these reuse victories and failures. While some attendees agreed that we have solved all or parts of the reuse problem, others disagreed with as much conviction [WISR99]. Clearly with all the reuse papers, journal articles, conferences, and books, the field has developed a mature body of knowledge, even if we cannot agree how to assess it.
With all the information we process in a day, I believe that we do not need to keep "re-discovering" the same ideas that already exist in this reuse body of knowledge. Unfortunately, turnover in our organizations and in our lives allow us to forget what we already know. This becomes evident when we repeatedly revisit the same topics in the literature and we unnecessarily divert our efforts to tangential issues like building reuse libraries.
Practitioners need to remind ourselves what to do and how to do it. Reuse researchers can help in this process by transitioning the reuse body of knowledge to students and practitioners. This certainly involves education as a part of all engineering instruction. The transition of reuse knowledge also includes supporting gatherings and conferences to help disseminate what we know to those that want to learn it.
I believe that the field of reuse has developed the essential body of knowledge to become successful in reuse. Practitioners and researchers alike can best impact software development organizations by helping organizations understand and apply this knowledge. By disseminating our accomplishments we can best put reuse research into practice.
[SSR97] Poulin, Jeffrey S., "On the Contributions of Reuse Research and Development to the State-of-the-Practice in Reuse," Proceedings of the ACM SIGSOFT Symposium on Software Reusability (SSR'97), Boston, MA, 17-20 April 1997, pp. 214-215. Also in ACM Software Engineering Notes (SEN), Vol. 22, No. 3, May 1997.
[WISR99] Proceedings of the 9th International Workshop on Software Reuse (WISR'9), Austin, TX, 7-9 January 1999, http://www.umcs.maine.edu/~ftp/wisr/wisr.html