Good software design will help achieve your systematic reuse objectives. It is critical for achieving several things:
Identifying candidate or potential reusable software assets
Reducing coupling between software modules, systems, services, and processes
Ensuring that a reusable software asset can scale and perform based on your neeeds
Gracefully extend a software asset’s capabilities to meet changing business requirements
….and many more related to supportability, availability, testing effort, etc.
Design is at the very heart of systematic reuse – without good design practices and principles your reuse effort will not succeed. Good design is a necessary (not a sufficient) condition for success.There is a ton to be said on this topic and we will certainly explore them using examples.
In your experience, has design facilitated a reuse initiative or effort? did good design help achieve high degree of reuse for a service or component?