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.”