Reusability is a quality feature of software modules. This term summarizes the properties of such a component that enables it to be used not only in the context of a project for which it was originally developed.
Reusable building blocks became popular with the advent of modular programming and object-oriented programming , as these paradigms created a means to easily reuse them. Code repetitions can be avoided by reusing program code and program packages .
The salient property of a reusable building block is its abstract character. This means that the block usually does not require any further blocks or the conditions of a specific software project. In object-oriented programming , for example, this can be supported by using the event listener model for interaction between different modules .
The flexible planning of a module goes hand in hand with its abstract character. When developing a software project, it can easily happen that when planning the individual components only the requirements relating to this project are considered. If a module is to be reusable, however, further requirements that may arise must be anticipated. In the above example with the event listener model , this could mean that such an event is generated for all events that can occur in a component , regardless of whether they are obviously relevant.
Perl, Python and other scripting languages
Scripting languages have always been at the forefront of reusable components. There are large collections of freely available modules for the more widespread copies. Legendary, but not unique, is the Perl archive CPAN . There are apparently inexhaustible sources for such modules for other scripting languages as well, for example Python .
The programming language and runtime environment Java is offered under the designation Java EE as a component-oriented development environment for web services. Due to the modularity of Java EE, there are countless, commercially available, reusable components under the keyword Enterprise Java Beans . Outside of Java EE there is a similarly named but very differently implemented concept called Java Beans , a framework that describes how reusable components can publish their properties and methods. On this basis, for example, a graphic development interface can allow links between the properties of different beans to be created with a click of the mouse.
The .NET technology, which is based on Java, provides similar possibilities as Java itself. While the Java EE counterpart .NET Enterprise Services is not yet widely used, a market for reusable components comparable to Java has developed in the area of application development.