Fragile Base Class Problem

Fragile Base Class Problem

Das Fragile Base Class Problem (FBC) ist ein Fehlverhalten von Software, das bei der objektorientierten Softwareentwicklung beim Versionswechsel der eingesetzten Basissoftware auftreten kann und mit dem Vererbungsmechanismus zusammenhängt. Es kann auftreten, wenn diese Technik der Objektorientierung als Implementierungvererbung zur Wiederverwendung von Quelltext eingesetzt wird.

Die Entwickler einer „zerbrechlichen“ Basisklasse, die keine genaue und vollständige Kenntnis über die Nutzung ihrer Implementierungen haben können, sind bei einer Änderung nicht in der Lage, die negativen Konsequenzen vorauszuahnen, die sich für spezialisierende Klassen hieraus ergeben.

Die Gründe hierfür sind vielfältig, im Wesentlichen liegt ein Missverständnis zwischen den Entwicklern der Basisklasse und denen der verwendenden Spezialisierungen vor. Dies liegt zumeist daran, dass die Funktionalität der Basisklasse und auch das von den Spezialisierungen erwartete Verhalten nicht ausreichend präzise spezifiziert sind.

Beispiel

Ein einfaches Beispiel lässt sich mittels einer Basisklasse BagOfInt veranschaulichen, also ein Container zur Speicherung ganzer Zahlen. Diese Klasse beinhaltet folgende Funktionalität (Methoden):

  • Add: Hinzufügen eines Elements (einer Zahl)
  • AddAll: Hinzufügen einer Menge von Zahlen (durch Übergabe eines anderen BagOfInt)
  • GetSize: Ermittlung der Anzahl der enthaltenen Zahlen
  • GetAt: Zugriff auf ein bestimmtes Element mittels eine Index

Diese Klasse sei nun Bestandteil einer Klassenbibliothek und wird von einem Entwickler, der diese einsetzt, zu einer Klasse TotalizingBagOfInt erweitert, also spezialisiert. Die erbende Klasse hat die zusätzliche Eigenschaft, dass sie die Gesamtsumme aller in dem Container enthaltenen Zahlen mitführt. Der Entwickler erreicht dies durch Überschreiben der Methode Add, in der die Gesamtsumme ständig aktualisiert wird.

In einer neueren Version entscheidet sich nun der Entwickler der Basisklasse, die Methode AddAll nicht mehr wie bisher auf die Methode Add derselben Klasse zurückzuspielen, sondern die Methode aus Optimierungsgründen anderweitig zu implementieren.

Nach Austausch der Version der Basisklasse funktioniert nun die spezialisierende Klasse TotalizingBagOfInt nicht mehr, wenn die Methode AddAll verwendet wird. Der Entwickler dieser Klasse müsste nun diese Methode auch überschreiben. In der Ursprungsversion tat er das nicht, beispielsweise weil er durch Ausprobieren erkannt hatte, dass es nicht nötig war.

Literatur


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Fragile base class — The fragile base class problem is a fundamental architectural problem of object oriented programming systems where base classes (superclasses) are considered fragile because seemingly safe modifications to a base class, when inherited by the… …   Wikipedia

  • Fragile binary interface problem — The fragile binary interface problem or FBI is a shortcoming of certain object oriented language compilers, in which internal changes to an underlying class library can cause descendant libraries or programs to cease working. It is an example of… …   Wikipedia

  • Is-a — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Vererbung (objektorientierte Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Vererbung (Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Self (programming language) — Infobox programming language name = Self paradigm = object oriented prototype based year = 1986 designer = David Ungar, Randall Smith developer = David Ungar, Randall Smith, Stanford University, Sun Microsystems latest release version = 4.3… …   Wikipedia

  • IBM System Object Model — For the similarly named executable file format in the HP UX operating system, see System Object Model (file format) In computing, the System Object Model (SOM) is an object oriented shared library system developed by IBM. A distributed version… …   Wikipedia

  • Nelson class battleship — HMS Rodney in Valletta Harbour, Malta during July 1943 Class overview Name: Nelson Operators …   Wikipedia

  • Netscape Plugin Application Programming Interface — (NPAPI) is a cross platform plugin architecture used by many web browsers.It was first developed for the Netscape family of browsers starting with Netscape Navigator 2.0 but has subsequently been implemented in other browsers including Mozilla… …   Wikipedia

  • NPAPI — Netscape Plugin Application Programming Interface (NPAPI) is a cross platform plugin architecture used by many web browsers. It was first developed for the Netscape family of browsers starting with Netscape Navigator 2.0 but was subsequently… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”