Dies ist ein (unvollständiger) Auszug aus dem gedruckten Buch .

Kennen Sie diesen Drang nach Verallgemeinerung, den tiefen Wunsch etwas Großes zu schaffen? Der Flexibilisator findet den ultimativen Kick, wenn er über den beschränkten Spezialfall der aktuellen User-Story hinaus quasi ein zeitloses Denkmal der Flexibilität erschaffen kann.

Flexibilität

Wir möchten hier zuerst etwas über mögliche Arten der Flexibilität von Software klarstellen, auf einige Vor- und Nachteile davon eingehen und anschließend kräftiges Bashing von Flexibilisatoren betreiben.

  • Flexibilität (Konfigurierbarkeit) zur Laufzeit: Zur Laufzeit der Komponente können unterschiedliche Parameter gesetzt und/oder verändert werden. Beispiele dafür sind konfigurierbare Benutzungsoberflächen (z. B. skinnable UI), konfigurierbare Abläufe, Prozesse, Pfade, Gültigkeitsregeln oder sogar Datenstrukturen.
  • Flexibilität bei der Installation und Inbetriebnahme (Konfigurierbarkeit zum Lade- oder Startzeitpunkt): Die Komponente lässt sich in verschiedenen Umgebungen (z. B. verschiedene Hardware, Betriebs- systeme, Netztopologien o. ä.) in Betrieb nehmen.

  • Flexibilität bei Tests: Die Komponente kann in verschiedenen Umgebungen oder Konfigurationen getestet werden. Beispielsweise ist sie unabhängig von konkreter Ressourcenausstattung oder Konfiguration der Testumgebung, oder es können zum Test Mocks oder Stubs für Teilsysteme eingesetzt werden.

  • Flexibilität bezüglich der Entwicklungszeit: Eine Komponente bietet eine flexible oder universell verwendbare Schnittstelle an, sodass sie in unterschiedlichen Verwendungssituationen bzw. durch unterschiedliche Konsumenten benutzt werden kann, möglicherweise über Grenzen einzelner Programmiersprachen hinweg.

Es ist die Laufzeit-Flexibilität, der wir uns an dieser Stelle primär widmen.

Overly Configurable… ORCS

Wenn der Flexibilisator voll zuschlägt, schenkt er den späteren Nutzern seiner Software eine Menge Freiheit, allerdings setzt er sie gleichzeitig gravierenden Risiken aus. Aber, denkt sich der meist jugendlich-leicht- sinnige Flexibilisator, no risk, no fun.

Hochgradig generisch oder allgemein verwendbar bedeutet, auf jede Menge Leitplanken zu verzichten, auf (teilweise sinnvolle oder sogar notwendige) Grenzen. Nennen wir die ultraflexiblen Produkte des Flexibilisators mal übermäßig laufzeitkonfigurierbare Systeme, englisch Overly Runtime Configurable Systems, kurz ORCS.

Diese Abkürzung weckt doch hoffentlich auch bei Ihnen Assoziationen zum Filmepos Herr der Ringe1.

Woher kommen ORCS?

Bekommen normale Entwicklungsteams halbwegs vernünftige Anforderungen, so entsteht (hoffentlich) klar strukturierte Software, die eben genau diese Anforderungen erfüllt.

Schlimm wird es, wenn Anforderungen völlig vage oder unklar daherkommen, also im klassischen Fall „unterspezifiziert“ sind („die wissen nicht, was sie wollen“). Daraus resultiert wolkige Software, die auf (zu) viele Eventualitäten vorbereitet ist, ohne klare Abgrenzung. ORCS eben.

Nun treibt unser Flexibilisator dieses Schema auf die Spitze. Er nämlich schafft es, aus einer glasklar und präzise formulierten Anforderung ein schwer fassbares Oeuvre zu produzieren – ein nach allen Seiten offenes Wunderding der Softwarekunst.

Ultraflexibel und ultrafragil.

Verwandte Muster

Quellen

Hinweis

arc42 offers architecture training.

The data is currently loaded from the backend and should display here shortly. If not, you can see the next dates at trainings.arc42.org .

Updated: