Transformationsprioritätenprämisse

Aus MARJORIE-WIKI
Wechseln zu: Navigation, Suche

In der Softwareentwicklung ist die Transformationsprioritätenprämisse (TPP) die Bevorzugung von Änderungen geringer Komplexität, gegenüber Änderungen höherer Komplexität, wenn neues Verhalten in einem Computerprogramm bewirkt werden soll. Sie ist ein Richtlinie bei der testgetriebenen Entwicklung, die den Programmierer dabei unterstützt, effiziente Algorithmen zu entwickeln. [1]

Erläuterung[Bearbeiten]

Die testgetriebene Entwicklungentwicklung besteht aus den 3 Phasen Test, Implementierung und Refaktorisierung. In der Phase 2 (Implementierung) besteht die Aufgabe des Programmierers darin, das Computerprogramm mit möglichst geringem Aufwand so zu verändern, dass die Anforderung des aktuellen Tests zusätzlich zu den Anforderungen aller anderen Tests für den aktuellen Programmteil (englisch "Unit") erfüllt wird. Eine solche Änderung des Verhaltens eines Computerprogramms wird auch Transformation genannt.

Gelegentlich gibt es mehr als eine Transformation, mit der die Anforderung des aktuellen Tests erfüllt werden kann. Es hat sich gezeigt, dass die Entscheidung, welche der möglichen Transformationen durchgeführt wird, großen Einfluss auf die Effizienz der resultierenden Lösung hat, und dass die Bevorzugung weniger komplexer Änderungen regelmäßig zu effizienteren Lösungen führt.

Transformationen[Bearbeiten]

Welche Transformationen möglich sind hängt wesentlich von der eingesetzten Programmiersprache ab. Deshalb sind die hier aufgeführten Transformationen nur beispielhaft und nicht vollständig.

Die Liste der Transformationen ist nach deren Komplexität aufsteigend sortiert. Im dem Fall, dass mehrere dieser Transformationen geeignet sind, das gewünschte Verhalten im Computerprogramm einzufügen, ist diejenige auszuwählen, die am weitesten oben in dieser Liste steht:

  1. {}-> Null-Objekt (kein Code vorhanden -> Null-Objekt einsetzten)
  2. Null-Objekt -> Konstante
  3. Konstante -> Konstante+ (einfache Konstante durch komplexere ersetzten)
  4. Konstante -> Scalar (ersetze Konstante durch Variable oder Parameter)
  5. Anweisung -> Anweisungen (ergänze weitere einfache Anweisungen, aber keine Schleifen oder Sprünge)
  6. linearer Ablauf -> Entscheidung (bedingtes Auslassen von ggf. zusätzlichen Anweisungen mittels if, aber kein else)
  7. Scalar -> Feld
  8. Feld -> Container
  9. Anweisung -> Rekursion
  10. Entscheidung -> Schleife
  11. Ausdruck -> Funktion
  12. Variable -> Zuweisung (den Wert einer Variablen ersetzen)

Einzelnachweise[Bearbeiten]

  1. Hochspringen Robert C Martin in The Transformation Priority Premise (abgerufen am 02. Februar 2016) "http://blog.8thlight.com/uncle-bob/2013/05/27/TheTransformationPriorityPremise.html"
Info Sign.svg Dieser Wikipedia-Artikel wurde, gemäß GFDL, CC-by-sa mit der kompletten History importiert.