Reuse

Reuse







Software reuse is one of the key goals of software design. It reduces the amount of coding repetition.

Probably the most successful example of software reuse is the increasing power of programming languages. In the early days, this codification was done through the provision of computer languages that were higher than machine code, 1s and 0s. As languages have become more sophisticated, so have the attempts to incorprate reuse. The higher the level of the language, the greater the facility to use reuse.

The altenative method of reuse emplys libraries of previously generated code. These software libraries can store either functions in a form that can be readily used, or alternatively can be copied and customised to fit the requirements.

The third method of reuse, is the soft reuse of using either a library of example program from which to begin coding, or examples as in the design patterns approach of the object-oriented 1990s.

Finally, the full reuse model is the purchasing of applications to run the business, or experiments. Here we then get full semantic and syntactic reuse. This is appropriate where the models provided by the package match the models required. SAP is one such example.

We can look at re-use from a syntactic and a semantic point of view. Developing systems requires both semantic and syntactic development, although it is generally recognised that the semantic level can often be the most costly to match.

A standard like ebXML hopes to achieve semantic reuse for business process concepts in order to save time with the specification and interfacing of systems.

The extent to which anyone has managed to achieve a common semantics or ontology seems limited at the moment. Only through the purchasing of "solutions" does such an ontology get accepted. The best future method therefore of getting an ontology accepted in universal purchase, subscription and use of a technology. Microsoft Windows is one such example, although the lack of integration with other technology, and the insistence on providing visually seamless integration has left a lot of code in low level languages, which do not support common ontologies.

IEEE Standard Upper Ontology (SUO) Working Group - http://suo.ieee.org/

References

Douglass, Bruce Powel (2003), "Real-Time Design Patterns", Addison-Wesley

Grenander, Ulf (1993), "General Pattern Theory", Oxford University Press

Schach, Stephen (1997), "Software Engineering with Java", Irwin/McGraw-Hill

Knudsen, Jonathan (2001), "Wireless Java: Developing with Java 2, Micro Edition", apress

Marchal, Benoit (1999), "XML by Example", Que Publications

Hughes, Merlin (1999), "Java Network Programming", Manning.

Synder, Ilana (1996), "Hypertext - The electronic labyrinth", Melbourne University Press

Dournaee, Blake (2002), "XML Security", McGraw-Hill/Osborne RSA Press

Maler, Eve (1996), "Developing SGML - From Text to Model to Markup", Prentice Hall PTR

Teague, Jason (1998), "DHTML for the world wide web", Peachpit Press - Visual Quickstart Guide