Praktisches & Grundsätzliches zur Informatik

Reuse, Reusable Software, JEE, .NET, DotNet

What exactly is Reusable Software?

By definition,

we call a piece P of software reusable

if and only if the chance is high that
systems specified and implemented  a f t e r  P became available will contain P as a building block.



Preconditions for this are:



Experience is telling us:


Software created for a specific system
does not respect enough these three requirements.


Some reasons for this fact are discussed e.g. in Whatever Happened to Reuse?.

Shortly after the object-oriented programming paradigm was invented, many software engineers argued that object-oriented software — classes — would be reusable automatically. This however was too naiv a view because it ignored the fact that classes poorly documented (or not documented at all) cannot be called reusable.

We learned: Software written in C++ was nearly as hard to understand as software written in C or COBOL.

In practice, reusable software is always a library

These are the only two situations in which software development economics actually is justifying reuse.

This is so because design and implementation of software for reuse ist much more costly than to cre­ate it for use in one specific application only. In 1999 Steve Adolph wrote: A reusable compo­nent can cost three to five times more to develop than conventional software; this is so because the reusable compo­nent cannot make simplifying assumptions about its environment. Adding to the cost is that we have to document it better and have to test it much more carefully.

The break through for reusable software came with Java and the Javadoc standard. The problem here was that soon too many competing class libraries came to the market (especially as Open Source) and were heavily in use long before revised versions of such functionality could be integrated in the Java Enterprise Edition (i.e. the JEE libraries, which is main stream).

More perfect is Microsoft's .NET approach which guarantees that all reusable .NET software is part of one large class library existing in versions which are guaranteed to be upward compatible and are main­tained by one authority only (Microsoft).

To summarize:


Since we have JEE and .NET it makes sense to say:


Software is reusable — in the best sense of the word — only if it is

Microsoft .NET (Mono on Unix) or Oracle JEE


In any other case let it better be called Open Source or Freeware. As such it might or might not become a candidate (or blueprint) for truly reusable software.

Quite an important exception from this simple scenario is the Unix operating system, more precisely: its reimplementation in form of Linux.

Another exception, so you may think, is Apache software in general (Linux is part of it). So the three big software ecosystems — Apache (especially Linux), Java, and .NET — together with the fact that not even proriatary IBM software can compete with them seem to prove that software beyond a certain complexity level can be maintained sucessfully only by a VERY LARGE community of developers, many — but certainly not all of them — contributing for free.

On the other hand, it is equally clear, that totally new ideas usually do not come from the inside of these communities. They will contribute, will be "in" for a certain time, but will then either vanish or become Open Source (i.e. will become part of an ecosystem maintained by a VERY LARGE community).
Wissenswertes zu "DotNet, .NET, JEE, Reusable Software, Reuse" zusammengestellt durch Gebhard Greiter.
tags: NET1gegreit JEE1gegreit Reusable1gegreit