Quality Engineering
Quality Engineering bezeichnet das Management, die Erstellung, den Betrieb und die Weiterentwicklung von IT-Systemen und Unternehmensarchitekturen mit hohem Qualitätsanspruch.[1][2][3]
Beschreibung
IT-Dienste sind zunehmend über die Grenzen von Plattformen, Geräten und Organisationen hinweg zu Workflows verknüpft, beispielsweise bei Einbindung von Diensten aus einer Cloud, bei cyber-physikalischen Systemen oder Business-to-Business Workflows. In solchen Kontexten ist eine umfassende Betrachtung von Qualitätseigenschaften in Form von Quality Engineering notwendig geworden.
Dies erfordert eine "End-to-End"-Qualitätsbetrachtung vom Management bis zum Betrieb. Quality Engineering integriert dazu Methoden und Werkzeuge aus Unternehmensarchitektur-Management, Software-Produktmanagement, IT-Service-Management, Software Engineering und Systems Engineering, sowie aus Softwarequalitäts-Management und IT-Sicherheitsmanagement. Quality Engineering geht damit über die klassischen Disziplinen Software Engineering, IT-Management oder Software-Produktmanagement hinaus, da es Management-Aspekte (z. B. Strategie, Risikomanagement, Geschäftsprozess-Sicht, Wissens- und Informationsmanagement, betriebliches Leistungsmanagement), Entwurfsaspekte (z. B. Softwareentwicklungsprozess, Anforderungsanalyse, Softwaretest) und Betriebsaspekte (z. B. Konfiguration, Monitoring, IT-Sicherheitsmanagement) einbezieht. In vielen Anwendungsdomänen ist Quality Engineering eng mit der Erfüllung von rechtlichen und geschäftlichen Anforderungen, vertraglichen Bindungen und Standards verbunden. Bei den Qualitätsmerkmalen spielen Zuverlässigkeit und Sicherheit (Security und Safety) von IT-Diensten eine dominierende Rolle.
Qualitätsziele werden im Quality Engineering durch einen kooperativen Prozess erreicht. Dieser Prozess erfordert die Interaktion weitgehend unabhängig handelnder Akteure, deren Wissen auf unterschiedlichen Informationsquellen beruht.
Qualitätsziele
Qualitätsziele beschreiben grundlegende Anforderungen an die Qualität der Software. Im Quality Engineering sprechen sie häufig die Qualitätseigenschaften Verfügbarkeit, Security, Safety, Zuverlässigkeit, Performance und Usability an. Mit Hilfe von Qualitätsmodellen wie ISO/IEC 25000 und Methoden wie dem Goal Question Metric Ansatz können den Qualitätszielen messbare Kennzahlen zugeordnet werden. Die dadurch ermöglichte Messung des Grades der Erreichung von Qualitätszielen ist zentraler Bestandteil des Quality-Engineering-Prozesses und Voraussetzung für dessen kontinuierliche Kontrolle und Steuerung. Um eine effektive und effiziente Messung der Qualitätsziele zu gewährleisten, wird die Integration manuell ermittelter Kennzahlen (etwa durch Expertenschätzungen oder Reviews) und automatisch ermittelter Metriken (etwa durch statische Analyse von Quellcode oder automatisierte Regressionstests) als Entscheidungsgrundlage propagiert.[4]
Akteure
Der Ansatz des End-to-End-Qualitätsmanagements fordert für das Quality Engineering viele Akteure mit unterschiedlichen Verantwortlichkeiten und Aufgaben, unterschiedlicher Expertise und organisatorischer Einbindung.
Rollen, die in das Quality Engineering eingebunden sind:
- Fach-Architekt,
- IT-Architekt,
- Security-Verantwortliche,
- Requirements Engineer,
- Software-Qualitätsmanager,
- Testmanager,
- Projektmanager,
- Produktmanager und
- Security-Architekt.
Typischerweise sind diese Rollen über geographische und organisatorische Grenzen hinweg verteilt. Dementsprechend erfordert das Quality Engineering Maßnahmen, um die heterogenen Aufgaben dieser Rollen zu koordinieren und die zur Erfüllung dieser Aufgaben notwendigen Daten und Informationen zu konsolidieren, zu synchronisieren und dem jeweiligen Akteur in geeigneter Form zugänglich zu machen.
Wissensmanagement
Eine wichtige Aufgabe innerhalb des Quality Engineerings ist das Wissensmanagement[5]. Die Quality-Engineering-Wissensbasis umfasst eine Vielzahl strukturierter und unstrukturierter Daten, die von Code-Repositorien über Anforderungsspezifikationen, Normen, Testberichte und Unternehmensarchitekturmodelle bis zu Systemkonfigurationen und Laufzeit-Logs reicht. Bei der Abbildung dieses Wissens spielen Software- und System-Modelle eine große Rolle. Die Daten der Quality-Engineering-Wissensbasis werden in einem geographisch, organisatorisch und technisch verteilten Kontext sowohl manuell als auch werkzeuggestützt (semi-)automatisch erzeugt, verarbeitet, und zugänglich gemacht. Das wichtigste Ziel hierbei ist, dass die qualitätssichernden Aufgaben bestmöglich ausgeführt werden können, Risiken frühzeitig erkannt werden und die Kooperation der Akteure geeignet unterstützt wird.
Damit ergeben sich folgende Anforderungen an eine Quality-Engineering-Wissensbasis:
- Das Wissen ist in der erforderlichen Qualität verfügbar. Wichtige Qualitätskriterien sind Konsistenz und Aktualität, aber auch die Vollständigkeit und adäquate Granularität, bezogen auf die Aufgaben der zugeordneten Akteure.
- Das Wissen ist verknüpft und nachverfolgbar, um die Interaktion zwischen den Akteuren und die Datenanalyse zu unterstützen. Nachverfolgbarkeit bezieht sich dabei sowohl auf die Verknüpfung von Daten über Abstraktionsebenen hinweg (z. B. Verknüpfung von Anforderungen mit realisierenden Services) als auch auf Nachverfolgbarkeit über die Zeit, was geeignete Versionierungskonzepte voraussetzt. Die Verknüpfung der Daten kann sowohl manuell als auch (semi-)automatisch vorgenommen werden.
- Die Information muss in der Form verfügbar sein, die dem Domänenwissen der zugeordneten Akteure entspricht. Die Wissensbasis muss deshalb geeignete Mechanismen zur Informationstransformation (z. B. -aggregation) und -visualisierung bereitstellen. Als geeignetes Modell zur Zuordnung von Akteuren zu Informationen in einer Quality-Engineering-Wissensbasis eignet sich beispielsweise das RACI-Konzept.
- In Kontexten, in denen Akteure aus verschiedenen Organisationen oder Ebenen miteinander interagieren, muss die Quality-Engineering-Wissensbasis Mechanismen bereitstellen, die Vertraulichkeit und Integrität sicherstellen.
- Quality-Engineering-Wissensbasen bieten ein weit gefächertes Feld zur Analyse und zum Auffinden von Information zur Unterstützung der qualitätssichernden Aufgaben der Akteure.
Kooperative Prozesse
Der Quality-Engineering-Prozess umfasst alle manuell und (semi-)automatisiert durchgeführten Aufgaben zur Erhebung, Erfüllung und Messung von Qualitätseigenschaften im gewählten Kontext. Dieser Prozess ist hochgradig kooperativ in dem Sinne, dass er die Interaktion weitgehend unabhängig handelnder Akteure erfordert.
Der Quality-Engineering-Prozess muss dabei typischerweise existierende Teilprozesse integrieren, die stark strukturierte Prozesse wie die des IT-Service-Managements und schwach strukturierte Prozesse, wie die der agilen Softwareentwicklung umfassen können. Ein wichtiger Aspekt ist auch ein änderungsgetriebenes Vorgehen, bei dem Change Events, wie z. B. geänderte Anforderungen im lokalen Kontext der von dieser Änderung betroffenen Informationen und Akteure behandelt werden. Unterstützende Methoden und Werkzeuge, die Change Propagation und Change Handling unterstützen, sind hierfür eine Voraussetzung.
Ziel eines effizienten Quality-Engineering-Prozesses ist die Koordination automatisierter und manueller Qualitätssicherungsaufgaben. Beispiele für manuelle Aufgaben sind der Code Review oder die Erhebung von Qualitätszielen, Beispiele für automatisiert durchführbare Aufgaben sind der Regressionstest oder die Erhebung von Code-Metriken. Der Quality-Engineering-Prozess (bzw. seine Teilprozesse) kann ebenfalls durch Werkzeuge unterstützt werden, z. B. durch Ticket-Systeme oder Security-Management-Werkzeuge.
Weblinks
Einzelnachweise
- Ruth Breu, Annie Kuntzmann-Combelles, Michael Felderer: New Perspectives on Software Quality. IEEE Computer Society. S. 32-38. January-February 2014. Abgerufen am 2. April 2014.
- Ruth Breu, Berthold Agreiter, Matthias Farwick, Michael Felderer, Michael Hafner, Frank Innerhofer-Oberperfler: Living Models - Ten Principles for Change-Driven Software Engineering. ISCAS. S. 267-290. 2011. Abgerufen am 16. April 2014.
- Michael Felderer, Christian Haisjackl, Ruth Breu, Johannes Motz: Integrating Manual and Automatic Risk Assessment for Risk-Based Testing. Springer Berlin Heidelberg. S. 159-180. 2012. Abgerufen am 16. April 2014.
- Michael Kläs, Frank Elberzhager, Jürgen Münch, Klaus Hartjes, Olaf von Graevemeyer: Transparent combination of expert and measurement data for defect prediction: an industrial case study. ACM New York, USA. S. 119-128. 2. Abgerufen am 8. April 2014.
- Jacek Czerwonka, Nachiappan Nagappan, Wolfram Schulte, Brendan Murphy: CODEMINE: Building a Software Development Data Analytics Platform at Microsoft. IEEE Computer Society. S. 64-71. July-August 2013. Abgerufen am 7. April 2014.