This blog post is also available in English
Mal wieder eine Begriffsklärung aus unserer Mini-Serie: Diesmal geht’s um den Begriff Qualität.
Ziel dieses kurzen Posts ist es, Ihnen zu verdeutlichen, wie vielfältig Menschen den Begriff Qualität interpretieren oder auslegen können - und warum in diesem Spielraum in der Softwarearchitekur gewaltige Risiken lauern.
Starten wir mit einer Definition:
Qualität: (von lateinisch qualitas, Beschaffenheit, Merkmal, Eigenschaft oder Zustand) ist die Summe aller Eigenschaften eines Objektes, Systems oder Prozesses.[1].
Beschränken wir uns hier mal auf die Menge aller Eigenschaften eines Systems, und lassen Prozesse außen vor.
Qualität ist gleichbedeutend mit „Gut“
In der Umgangssprache verwenden wir Qualität als Synonym für Eigenschaften oder Dinge, die wir als „gut“ oder „exzellent“ erachten. Allerdings leben wir in der Umgangssprache ohnehin mit allerlei Unklarheiten oder Doppeldeutigkeiten, deren konkrete Bedeutung sich manchmal aus dem Zusammenhang ergibt.
Bei Qualität bleibt diese konkrete Bedeutung oft unklar („implizit“), anstatt ausdrücklich erklärt zu werden. Was „gut“ in Bezug auf einen Alltagsgegenstand bedeutet, obliegt der subjektiven Interpretation der Beteiligten.
Lassen Sie mich das Problem dieser Unklarheit am Beispiel Audio (Töne, Klänge, Musik) darstellen.
Qualität von Audio
Klingeltöne, Wecker-Töne, akustische Signale unserer Computer, die Batteriewarnung unseres Haustelefons oder gar das morgendliche Weck-Radio - Töne und Klänge („Audio“) sind in unserer technisierten Welt fast allgegenwärtig.
Fun fact: audio stammt ebenfalls aus dem Lateinischen, und bedeutet „ich höre“. [2]
Als Einstimmung dürfen Sie gerne mal ein Beispiel anhören (oder auch gleich weiterlesen)
Nun sprechen manche Menschen über Audioqualität, genaugenommen über „hohe“ oder „gute“ Audioqualität.
Aber was meinen sie nur damit? Denken Sie doch bitte kurz nach und versuchen zu präzisieren, was „gute Audioqualität“ denn genau bedeuten soll:
Stellen Sie sich vor, eine wichtige Person („Stakeholder“) hätte „gute Audioqualität“ als Anforderung über den berühmten Zaun geworfen. Sie und ihr kleines Team befinden sich in der Lieferverpflichtung und müssen diese Anforderung erfüllen.
(kurze Denkpause einlegen, bitte).
Das Sound-Sample von oben hat vermutlich beim Nachdenken nicht geholfen, es sei denn Sie haben es mit Stereo-Kopfhörern angehört…)
Lassen Sie uns einige mögliche Auslegungen des Begriffes „Audioqualität“ ansprechen:
- Wir könnten Audioqualität als die möglichst originalgetreue Wiedergabe eines aufgenommen Geräusches oder Musikstückes interpretieren, bei dem möglichst wenige Störgeräusche durch Aufnehmen oder Abspielen hinzukommen. In diesem Fall würde sich Audioqualität nicht nur auf die Audio-Datei beziehen, sondern auch das Wiedergabegerät (z.B. Kopfhörer oder Lautsprecher) umfassen. Ein Beispiel dazu - eine Saxophon-Aufnahme aus dem Yoyogi-Park in Tokyo:
- Wir könnten Audioqualität rein auf die Audiodatei beziehen - die in diesem Fall vielleicht eine bestimmte Dateigröße nicht überschreiten darf, weil wir sie z.B. auf einem extrem limitierten (embedded-) Computer speichern wollen.
- Wir mögen Stereo- oder Raumklang-Effekte: Audioqualität bedeutet, dass die verfügbaren Kanäle jeweils unterschiedliche Signale enthalten. Im nachfolgenden Diagramm können Sie das für unser Sound-Sample erkennen.
- Audioqualität könnte auch bedeuten, dass wir eine Geräuschquelle mit Frequenzen von bis zu 200kHz aufnehmen wollen, damit wir Schallwellen außerhalb des von Menschen hörbaren Bereiches erfassen, wie sie z.B. von Fledermäusen zur Navigation verwendet werden. Hierzu wäre eine Abtastrate (sampling frequency) von bis zu 400kHz erforderlich.
- Möglicherweise bedeutet Audioqualität für manche Menschen auch, Musik möglichst laut hören zu können, weil sie vielleicht ein Open-Air Konzert beschallen möchten. In diese Anforderung spielt ebenfalls beteiligte Hardware mit ein - denn Lautstärke benötigt ordentliche Verstärker. Vermutlich müssten wir in diesem Fall auch extrem darauf achten, Rauschen zu eliminieren sowie Spikes im Audiosignal hart zu begrenzen.
- Umgekehrt möchten andere die Außengeräusche durch die Erzeung kompensierender Schallwellen ausfiltern (noise cancelling). Hier bezieht sich „Audioqualität“ auf das Wiedergabegerät.
- Vielleicht sind wir Science-Fiction Freaks, und mögen es, wenn menschliche Stimmen möglichst verzerrt und irgendwie spacig klingen. Sprich: Für uns bedeutet Qualität, dass Stimmen durch Effektfilter manipuliert sind. Ein Beispiel mit und ohne solchen Effekte:
- Last not least diejenige Fraktion, die auf Hall und Echo steht, und gerne mehr Bass in der Musik haben möchte. Nachfolgend ein Sample vorher/nachher entsprechend dieser Interpretation überarbeitet - hören Sie mal beide hintereinander zum Vergleich an:
Spätestens jetzt sollten Sie sich fragen, wie unser (hypothetisches) Entwicklungsteam denn bitte Audioqualität produzieren soll: Die oben genannten Interpretationen schliessen sich gegenseitig aus - alle können wir unmöglich gleichzeitig erfüllen. Jede für sich klingt, zumindest aus meiner Sicht, irgendwie plausibel.
Legen wir Anforderungen an Audioqualität fest…
Spielen wir doch mal „Stakeholder“, und legen für unser Audio-Beispiel folgende Anforderungen fest:
Unser Audio soll:
- mit mindestens 44kHz Abtastfrequenz in Stereo aufgenommen (oder generiert) sein
- deutlich erkennbare Unterschiede zwischen linkem und rechtem Kanal aufweisen (15% oder mehr)
- als Datei 200kByte oder kleiner sein
- in einem Standardformat wie wav, flac, ogg oder mp3 kodiert sein und
- unter einer Creative-Commons Lizenz nutzbar sein. Das ist im Gegensatz zu vielen anderen gar nicht technisch umsetzbar, sondern nur organisatorisch.
Bestimmt far from perfect, aber ein Schritt in Richtung Konkretheit und Präzision - und für ein Entwicklungsteam auch gut überprüfbar. Mir persönlich erscheint das als Anforderung weit besser geeignet als der Ausdruck „hohe Audioqualität“.
In der Realität kommen jetzt diverse Stakeholder ins Spiel, und bringen ihre jeweils eigene Interpretation mit. Softwarearchitekt:innen müssen dann potenzielle Konflikte oder Widersprüche erkennen, und gemeinsam mit den Stakeholdern auflösen.
Qualität in Software
Wenn schon der Begriff „Audio“ derart viele einzelne Eigenschaften subsumiert, wie soll das erst mit dem umfassenden Begriff „Software“ sein? In der folgenden Abbildung habe ich einige Begriffe zusammengestellt, die zum Thema „Qualität von Software“ gehören.
Wie wir methodisch Qualität präzisieren oder konkretisieren können, haben viele schlaue Menschen schon ausführlich beschrieben - leider ist das in vielen Entwicklungsteams oder auch bei Product-Ownern noch nicht flächendeckend angekommen (und wird bestimmt mal Thema eines eigenen Blogposts werden).
Schauen Sie doch mal in den Artikel über Quality Storming meines Fellow-Kollegen Michael Plöd - da finden Sie eine Menge konstruktiver Hinweise.
Ergänzend gibt’s bei arc42 eine Sammlung (frei verfügbarer) Beispiele für konkrete Qualitätsanforderungen.
Danke
Danke für’s bis hierhin lesen - und mögen diese Zeilen Ihr Bewusstsein für konkrete und explizite Qualitätsanforderungen geschärft haben.
Falls Sie (oder Ihre Kolleg:innen) das lieber als Video gucken möchten - gibt’s bei YouTube.
Großen Dank an Matthias Deja und Joachim Prätorius für konstruktives Feedback.
Andere Posts dieser „Serie“
- „Projekt und System“
- Bimodale IT
- (english): Architecture
- (english): Evaluate
- (english): Transparency
- (english): Consistency
Falls Sie noch einen IT-relevanten Begriff haben, den Sie hier erläutert sehen möchten, lassen Sie uns das wissen.
Quellen
- Die Sound-Samples stammen von Freesound.org, das gesprochene Sample von Text2Speech.org
- Über Qualität als treibende Kraft habe ich im Technology-Lunch gesprochen, die Aufzeichnung (ca. 30min) gibt’s hier
- Quality Driven Software Architecture schon etwas älter, aber dennoch aktueller Artikel über Qualität als Treiber von Architekturentscheidungen.
- Qualitätsverbesserer - ist ein Teil des „Knigge für Softwarearchitekten“, den Peter Hruschka und Gernot Starke als Buch veröffentlicht haben.