Pursuing reuse is a journey, a continuous effort towards making enterprise applications and processes more agile and maintainable. Here is a simple diagram on how reuse can aid in application transformation. This isn’t a layer diagram – the intent is to show how an app goes from being monolithic to increasingly modular leveraging multiple categories of reusable assets. You can extend this to show how SOA & BPM efforts start to redefine the notion of an application from being a stovepipe to one that leverages a collection of carefully designed service capabilities.
As your systematic reuse efforts mature you will find it increasingly easier to update, extend, and refactor applications. You will start to recognize duplicate code, redundant functionality, and components that can be modified for reuse. Every application will end up with a mixture of application specific code, domain-relevant (vertical) and domain-agnostic (horizontal) reusable assets. These reusable assets can be utility classes, domain specific libraries, service capabilities, and business process flows.