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ätPermalink

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… ORCSPermalink

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?Permalink

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 MusterPermalink

QuellenPermalink

HinweisPermalink

arc42 offers architecture training.

Two expert trainers at all times, highly practical and pragmatic, ideal preparation for iSAQB CPSA-Foundation certification.

Next available dates (in English):
Next available dates (in German):

iSAQB Advanced Topics

IMPROVE: Learn to effectively evolve and maintain systems.
Req4Arc: Getting your Requirements right.
What to do if your requirements need improvement.
ADOC: Architecture Documentation
How to efficiently and effectively create and maintain useful technical documentation, with a strong focus on arc42. Within this practical course you improve your own documentation!
Contact us for inhouse training.
Version of: 2025-July-1st

Updated: