"Subclassing is evil".
The above could be the tabloid result of an extensive experiment that we performed for and together with Norwegian Telecom Research. in 1993.
Norwegian Telecom Research and Taskon carried out a joint project on the industrial creation of Intelligent Network Services (IN). The project built on the IN technology proposed by the EURESCOM project EUP103 and on the Taskon OOram object oriented methodology. A small-scale experimental laboratory implementing a first reference model was developed in the project, it provided examples of viable technologies for the different stages in the IN creation life cycle. Our goal was to minimize total life cycle costs and to maximize system reliability and safety. For this purpose we created a 5-layer reference model where each component built on results from the layer below.
Each layer was implemented as a framework, i.e., an ensemble of classes intended to be subclassed together. And each layer was realized by subclassing the classes of the layer below.
The result of the study was positive in the sense that the architecture seemed to minimize total life cycle costs and to maximize system reliability and safety.
N-Lab2 is a software laboratory was set up in 1993 for small-scale experiments with the design and construction of Intelligent Networks. The Intelligent Network (IN) industry is rapidly becoming one of the world's major industries which will involve a large number of actors and require a great variety of highly qualified talent for its implementation. The theme of this suite of reports is to study a simple, but complete value chain for this industry, and to to illustrate appropriate technologies for each of the levels of this value chain by means of a simple worked example. The reports give a complete design, type specification, implementation and Message Sequence Charts for selected monitored executions of the model. The example illustrates that object orientation in general and the OOram methodology in particular is exceptionally well suited as a base technology for this industry. The controlled reuse of proven components is a key to the effective production of an extensive and evolving offering of services. The advantages are three-fold. Firstly, reuse reduces development cost and lead time. Secondly, the reuse of tested constituents in a controlled environment increases system reliability. Thirdly, critical network resources can be protected through the mandatory access through validated components, thus ensuring system integrity.
The project reports are as follows:
|The Industrial Creation of
Intelligent Network Services
IN-Lab report no. 1 .PDF
|Reprint of a paper presented at the TINA '93 conference.|
IN-Lab report no. 2 .PDF
|Gives an overview of the worked example. The report also includes a Conceptual Model and a sample Service Contract Document.|
|Network Service Constituent module
IN-Lab report no. 3 .PDF
|The Network Module is a module which makes the Switching Domain functionality available to the Service Domain. All access to the Switching Domain from the Service Domain must go through this module.|
|Abstract Telephone Communication Service
IN-Lab report no. 4 .PDF
|This report describes the installation and invocation environments for Users and Services in the service Domain.|
|Abstract Telephone Communication. Service
IN-Lab report no. 5 .PDF
|The module defines the main objects involved in establishing and removing a one-to-one telephone connection together with a prescription of the interaction between these objects. There are two objects, they are responsible for the calling (A) and called (B) side of the connection respectively.|
|Calling Telephone Service (Tele-A)
Service Constituent module
IN-Lab report no. 6 .PDF
|A module defining the logic and concrete implementation of the calling side of a point-to-point telephone service.|
|Called Telephone Service (Tele-B)
Service Constituent design and specification
IN-Lab report no. 7 .PDF
|A module defining the logic and concrete implementation of the called side of a point-to-point telephone service.|
|User Terminal Service Constituent
IN-Lab report no. 8< .PDF
|The purpose of this module is to specify a terminal which may represent a User in the context of service invocation.|
The most important result was probably not appreciated at the time the experiment. We experienced that a modification of a lower layer class resulted in a nightmare of cascaded problems because every subclass had to be very carefully reconsidered.
Subclassing is only viable if one of two conditions is satisfied:
The idea of a framework is that an application is buildt by subclassing a platform of base classes. Sice even base classes will be subject to change, the simple idea of frameworks by subclassing is not viable.