Visit MetaAgility Home Page Visit MetaAgility Home Page

New Era of Software Reuse


Scope of Software Reuse

The reuse of good practice and well proven techniques has always been central to the various disciplines of engineering. Software engineering is no exception. In fact it is no surprise that reuse is one of the core ideas in software engineering. For example the concept of the program loop and the program subroutine are both examples of software reuse. The re-execution of a binary program is another trivial example of high-level software reuse.

Productivity Gains

From the above examples it is easy to conclude that the software reuse buzzword carries little meaning unless properly qualified by the nature of the reuse. Nevertheless, the systematic adoption of high-level reuse represents an extremely powerful idea in the efficient use of software. It is the most powerful mean so far when trying to improve quality and productivity in software development. Productivity gains of more than 20 times have been seen in software development as a result of a correct deployment of software reuse methodology.

Reuse Often Considered Unrealistic

In many engineering disciplines reuse is often realised in the form of mass produced hardware components, which can be reused in many imaginative combinations to form an endless variety of high quality systems with complex functionality. On the other hand, in software development reuse is often considered as an unrealistic option, because of the perceived ease of re-implementation shared by management and developers. The management is often bound by short-term goals, like wanting to meet narrow deadlines, while developers are a strongly reinforced in a "new implementation" culture by the instant gratification from the recreation process. This is often combined with a sometimes correct perception of lack of control when reusing software implemented by someone else. All of these factors strongly reinforces the well known "not-invented-here" culture, which in the extreme case applies to individuals within organisations, and which will seriously hamper any attempts to introduce effective high-level software reuse.

Software Reuse - a New Era

However, at MetaAgility we firmly believe that the software industry now stands on the threshold of a new era centred around the systematic adoption of high-level software reuse methodology. We believe that the techniques and the efficient management of software reuse are now sufficiently well understood to allow its systematic exploitation to the benefit of business.

High-Level Reuse Concepts

At MetaAgility we believe that future software reuse methodology will be focused on the following high-level reuse concepts:

  • Components - reusing coarse grain black and white box configurable components.
  • Interfaces - reusing standards for component interaction.
  • OO-frameworks - reusing software architecture.
  • Configuration services - reusing and sharing software configuration.
  • Model Driven Architecture - reusing software design models.

Assembly of Complex Systems

A combination of these high-level reuse ideas will allow the assembly of complex systems and applications from a relatively small number of coarse-grain software components with black-box behaviour, which in isolation is relatively easy to understand and communicate.

Driven by Business Needs

The driving force for adopting software reuse technology does not primarily come from within the IT community, but from the strategic need of business organisations to become more adaptable.

Sverker Griph, January 2001

Return to the white paper index.


We would appreciate any comments or questions.
Include your details if you wish to be contacted.
kix4make
 

2007-10-23 14:27


Home of www.metaagility.com
Contact metaagility.com

Copyright (2005) MetaAgility Knowledge Engineering.