Differentiate Systematic Reuse from Code Reuse

If one talks to most developers about reuse the first thing that pops into their mind is code reuse. Code reuse is also commonly known as white box reuse (for more see here). When someone searches for a piece of code – could be CSS stylesheet, algorithm implemented in java, a C# code fragment, or a new javascript script for a web page – and copies and makes modifications to it they are reusing code.  Although code reuse is a good idea and has its place there are significant benefits to systematic reuse.

Systematic reuse is a more deliberate and methodical approach to achieving high degree of reuse with reusable software assets. A reusable software asset is a piece of software that is of some value to your organization – that is the way I like to think about it (although much more formal definitions exist :-)) . Software assets could be libraries, frameworks, components, services, or business process workflows. In short, any unit of software that is or could be used across projects and initiatives for your organization.  These assets are given a first-class citizen status with systematic reuse. These assets are managed like any other “product” – they are versioned, inventoried, governed, modified, and over time leveraged across multiple projects and initiatives. Additionally, there is a life-cycle put in place to take candidate assets – either from legacy systems or modules or from new ones – and evolve them into truly reusable assets. Systematic reuse also entails a maturity model where there is a road map put in place to transition from ad-hoc reuse – where assets might or might not get leveraged – to a high degree of deliberate, planned, reuse across several projects.

Systematic reuse has wide literature and there are several comprehensive approaches to it including Software Product Lines, Software Factories, and others. Here is the biggest mistake to avoid: don’t start building a reusable library of software assets rightaway! –  it is recommended that one starts simple – very simple like a single project and with a focused group of candidate assets that could potentially evolve iteratively.

As the Chinese philosopher Lao-tsu said, “A journey of a thousand miles begins with a single step.”

Like this post? Subscribe to RSS feed or get blog updates via email.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: