Who doesn’t like the idea of reuse? It’d be like saying you don’t like mom, apple pie and puppies (or kittens if you’re a cat person). We can all say that we like the concept – but putting a successful reuse program into action has been a challenge.
To help increase the chances of success in running a reuse effort, we can embrace two ideas – having a target and leveraging the use of patterns.
Let’s start with the idea of having a target. In thinking about adopting reuse within an organization, a quote that I like is: “If you don’t know where you are going, any road will get you there.” To help guide us in figuring out where we want our reuse program to take us, we can refer to a maturity model. A maturity model provides a summarized view\framework that incorporates industry experience, research and guidance. It’s a first step in reuse – reuse the experiences of others in setting up your reuse effort.
A maturity model can help us figure out where we are: What are our strengths? What are our weaknesses? There are a number of different models out there – but the important thing is to find a model that works for our situation. An example, the Reuse Maturity Framework is shown on the right.
Reuse Maturity Model
We could quibble about a few of the aspects and characteristics – but it certainly gives us a great starting point in figuring out where we are today and where we want our reuse program to go. Each of the columns represents a stage in the maturity of the reuse effort. Moving from left to right shows an increase in reuse maturity. Each row maps to a characteristic\aspect of the reuse effort – highlighting that such an effort has multiple facets. Some of the key things that we can glean from this framework include:
- Recognition that culture is a major component and we need to get past just incentivizing and make reuse a part of the organizational culture
- Planning for reuse is part of the strategic effort within an organization
- Assets that are acquired\created need to be managed and classified. If assets cannot be found easily and quickly – mapping to the needs of the moment – then they provide no value.
- We need to consider the capabilities of the tools that we use and how they support reuse.
- And related to tooling – not only do we need to capture metrics – but we strive to find ways to automate the collection of data and analysis of results.
- Recognition that in most organizations it is the breadth of reuse that drives the need for greater structure and tooling, so that the cost of reuse is minimized while the value\return is maximized.
Moving on from the maturity model, we can now look at the use of patterns. As you may recall, patterns provide a proven best practice solution to a known, recurring problem. Patterns provide a concrete and tangible way for people to experience reuse. Which all sounds great – but the success of using patterns is limited when we take an ad hoc, inconsistent approach to using them and fail to measure and consider the impact that they deliver.
So we need to go beyond the simple statement of “use patterns” and look for an approach that provides more support. More specifically, we should follow Patterns-Based Engineering (PBE) – a systematic, disciplined and quantifiable approach to using both written and automated patterns in delivering software solutions. With PBE we look at how to improve how we identify, produce, manage and consume patterns. Recognizing that not only will we work with patterns provided by others – but we will also look at identifying and creating our own patterns. PBE help us to get started with reuse AND it helps us to reach higher levels on the maturity framework.
Those that have adopted PBE, have found it a great way to get started with reuse. It has helped them improve the quality of their solutions, deliver solutions more quickly, and better leverage skilled resources. To find out more about PBE, including a detailed case study, a development practice and a set of PBE patterns and guidelines – I encourage you to visit patternsbasedengineering.net.
About the author
Lee Ackerman, a Distinguished IT Specialist at IBM, has extensive experience with patterns, model-driven development, XML, data, and SOA. He has spent the past few years helping IBM build its Patterns-Based Engineering approach and offerings and has written and presented extensively on these topics.
You can follow Lee on Twitter or via his personal blog. Lee can be contacted via email@example.com.
 Image is sourced from: DeCarlo, J., et al. 2008. Strategic Reuse with Asset-Based Development. IBM Redbook. www.redbooks.ibm.com/abstracts/sg247529.html which is based on work done by Koltun and Hudson as discussed in Lim, W. 1998. Managing Software Reuse: A Comprehensive Guide to Strategically Reengineering the Organization for Reusable Components. Upper Saddle River, NJ:Prentice Hall.