|
| Given the amount of serious and sustained attempts by qualified organizations and smart people, the fact seems to remain that software reuse initiatives are rarely as successful as hoped. When reuse initiatives do succeed they often only succeed in a limited fashion and are not scalable to the rest of the enterprise or for that matter extensible to other enterprises. Many people would agree that the promise of component based design remains largely unfulfilled. All this being said, the rewards of reuse are substantial enough to justify new and more thoughtful approaches.
Ecology verses Warehouse In traditional reuse approaches, a reuse repository (Warehouse) is created and components are placed into the repository. The theoretical hope is that other software development teams will reuse these stored components. Organizations adopting this approach see reuse primarily as an information retrieval task. They focus their infrastructure efforts on search tools. The process tends to break down whenever the warehouse does not have enough well-made, highly reusable components. Development groups also face substantial challenges when adapting components from a warehouse, even when they are well-made. A NASA Software Engineering Laboratory (SEL) study concluded that if you have to change more than 15 to 20 percent of a component to make it work in your program, it is more economical to build a new component. Cultural challenges to software reuse also undermine Warehouse based reuse efforts. These problems are inherent when reusable components are put into a repository to be picked up later for unattended reuse. There is no good way to resolve these problems without changing and extending the approach. A successful reuse program could be characterized by three attributes Access, Participation, and Collaboration. The graphic below attempts to position the flow of thought for implementing a software reuse program in an enterprise. Management starts with a policy ("we want to promote reuse"), whereas developers start with collaboration ("who's got something I can use?"). Management may impede developer access and participation in their reuse efforts by instilling barriers such as approval processes and expensive tools. Management's efforts reflect their desire to standardize reuse and control development. Applying only the top-down drive often yields reuse program banners in the hallway with little actual reuse. Conversely, applying only bottom-up drive often yields of multiple reuse repositories in various formats with little actual reuse. Solutions that address both directions of drive (top-down & bottom-up) have the greatest probability of success. The traditional Warehouse approach takes the easy way out to some degree and focuses on the tool issue first (access). Going with a "tools first" solution leads to the warehouse equivalent of the "kitchen junk drawer" of software components. Worse, it ignores the Achilles heal of all such approaches, that is, it ignores cultural change and impact. The cultural aspects of participation and collaboration are more significant to long-term success, yet more difficult to implement. Such cultural barriers include:
It seems that an appropriate approach to answering, "How to implement as successful reuse program?" is to reuse key practices from other organizations that have done better at reuse. If one were to take this approach and go looking for successful reuse programs, you would be naturally drawn to open source projects, such as Apache (http://www.apache.org/). Open source projects demonstrate that reuse can succeed in what appears to be a vibrant Ecology around software development, but it takes careful observation and thought to replicate that success. Some areas where you can see reuse in process on Apache projects are:
Open source programs are generally characterized by community, open communication, transparency, access to source code, the ability to fork, and peer review. The empirical evidence suggests that these characteristics are central to promoting successful reuse programs. The lower barriers to participation and communication in open source development dynamics means that people are not only positively inclined to factor out common code and related functionality into separable components, but that they are more likely to use pre-existing components than write their own. As typified by open source, the ecology approach to reuse is seen as an extended collaborative between the producers and consumers of code and other artifacts. The key to reuse is not the fact that source code is available, but rather that potential consumers have broad visibility into the development process and the ability to affect it by submitting requests, bug reports, and patches. Other cultural impacts promoting reuse are:
Some Recommendations Creating a truly successful reuse program is not easy. Many firms have invested in reuse, but are still having problems getting the expected level of results. Based upon this analysis, the following recommendations should be considered:
Acknowledgements I would like to acknowledge the contributions to this article from my colleagues and friends, including Mark Murphy, Dr. Jason Robbins, and Brian Behlendorf. Mike Kochanik joined CollabNet as Director of Sales in December 1999. Since joining CollabNet, Mike has helped to develop the strategic vision of how collaborative strategies can be leveraged by commercial firms and has extensive experience in working with Global 2000 firms on enterprise level collaboration initiatives. Prior to CollabNet Mike worked for 12 years in the engineering and business development at Lockheed Martin, IKOS Systems, and Geodesic Systems. Mike holds a Bachelor of Engineering degree from Stevens Institute of Technology and a MBA from Seton Hall University. You can reach Mike by email at mike@collab.net
Set as favorite
Bookmark
Email this
Hits: 4623 Trackback(0)Comments (0)
|
| Last Updated on Wednesday, 19 July 2006 04:30 |



