|
| 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.
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 (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.
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: 1. Focus on culture first. This is the harder part of the problem and also the one that determines the ultimate reach and sustained success of the reuse program. 2. Think about all aspects of reuse ecology - A simple “Return on Reuse” framework to help you think about implementing a successful reuse initiative is presented in the following graphic. The graphic shows that the potential value from reuse is typically greater than the value a company actually receives. There are two main gaps: communication (finding and using what is reusable) and maintenance (ensuring what is reusable today remains reusable tomorrow). The Ecology approach addresses both gaps more comprehensively than the Warehouse approach, yielding both a higher return and a greater chance of sustained success. 3. Tools – Tools are an important part of the solution, but the focus should be on collaboration tools rather that database or information retrieval tools. The Apache project achieves its collaborative development environment using web-based tools for code versioning (Concurrent Versioning System - CVS), issue tracking, mail list management, etc. The collaboration tools help: 4. Don’t limit reuse to the code or executables. All development artifacts can be reused and many have higher value than the code itself. Code tends to have limited reuse potential because it does one specific thing and cannot be reused for different purpose or in a different technology context. In contrast, design patterns, use cases, design review checklists, etc. are not complete solutions, but they are partial solutions to a wider range of problems. Some of the most valuable and reusable knowledge is simply "Why was this decision made?" and "Who can I ask about topic X?" 5. Factor in Variability – There is an unpredictable and increasing amount of variability across software business systems over time. Starting your program out with the broad based intention to be “The Enterprise Reuse Library” might be a fatal flaw. Consider product line approaches instead. In the product line approach, the organization realizes that it will build a series of related products, as part of a product line over a period of several years. The goal then shifts to balancing productivity of the current project with the overall efficiency of producing the entire product line. Unlike the reuse Warehouse repository approach, product line component developers have a fair idea of who will reuse the components and what kinds of adaptations may needed over a defined timeline. 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: 4258 Trackback(0)Comments (0)
|
| Last Updated on Wednesday, 26 July 2006 04:23 |



