People often ask me where is the opportunity for systematic reuse. I always tell them that in the enterprise software world there is a chasm between company wide systems for certain functions and individual application level code reuse. This chasm is filled with opportunities for systematic reuse. Between globally standardized application suites and ad-hoc cut and paste reuse lies several vertical domains where we can utilize systematic reuse concepts and techniques.
A business domain is likely being supported by several applications. The applications typically won’t share software assets and they might be at different levels of maturity with respect to enhancements, maintenance changes, support needs etc. Over time if not cared for, the IT environment will get more and more complex driving up the cost of ownership. Alongside this complexity will be harder to maintain code, multitude of processes, and a rat’s nest of applications talking to each other exchanging data.
These business domains are where I believe systematic reuse has most relevance. Systematic reuse can transform such a landscape into a product line, a family of related applications, sharing software assets that are domain relevant and not only fulfill business needs but provide the foundation to rapidly realize new ones.