Problemraum und Lösungsraum

(Gast) Birgit Feld

15/11/2019

In einem meiner letzten Projekte haben wir ein schaurig-schönes Lehrstück zum Thema „Trennung von Problem- und Lösungsraum“ erleben dürfen. Diese Erfahrung möchte ich gerne mit Euch teilen:

Für die Ansteuerung eines Motors und zweier Bremsen gab es vom Kunden neben ein paar wenigen natürlich-sprachlichen Requirements auch eine Spezifikation in Tabellenform. Dieses Excel-Dokument hatte zu Projektbeginn 8 Tabellenblätter auf denen Statemachines beschrieben waren: States in Spalten, Inputs in Zeilen. Manche dieser Tabellen kamen mit 3×4 Zellen aus, andere umfassten bereits 10×6 Zellen. Viele Randbedingungen waren über Fußnoten zu den einzelnen Zellen beschrieben. So weit, so gut.

Im Laufe des Projekts stellten wir immer wieder Inkonsistenzen und Probleme mit diesen Tabellen fest. Manchmal stellte sich heraus, dass das resultierende Verhalten des Motors nicht den Wünschen des Kunden entsprach. Ein anderes Mal waren nicht alle möglichen Fehlerfälle durch die Tabellen abgebildet.
Der Kunde veränderte und erweiterte sein Tabellendokument aufgrund unserer Rückmeldungen immer weiter und weiter. Es kamen 2 weitere Tabellenblätter hinzu. Die States, die alphabetisch benannt waren, näherten sich rapide dem Buchstaben Z…

Der Kunde war etwas unglücklich, denn ich kam nicht umhin einen Change-Request von einige Zehntausend-Euro für die Mehraufwände zu stellen. Wie konnte es sein, dass sie plötzlich so viel bezahlen sollten, obwohl sie doch gar nichts anderes wollten als zu Projektbeginn? Sie hatten doch sogar Ihr Dokument freundlicherweise für uns angepasst, damit wir es besser implementieren können. Bei uns hingegen türmten sich die Aufwände: Anpassen riesiger Statemachine, Unittests schreiben und pflegen für Switch-Case-Anweisungen mit über 1.000 Zeilen ist kein Vergnügen!

Damit es bei der Umsetzung des Change-Requests nicht zu weiteren Änderungen kommt, sondern wir einen wirklich finalen Stand haben, wollte der Kunde das Tabellen-Dokument noch einmal intern reviewen und freigeben. Als ich nach 3 sehr schönen Urlaubswochen wieder im Büro war, stellte ich überrascht fest, dass sie das Tabellendokument überhaupt nicht überarbeitet hatten. Stattdessen hatten sie eine vollständig neue Spezifikation des gewünschten Verhaltens in einem Word-Dokument mit ein paar Statemachine-Diagrammen erstellt.

Der Schock war zunächst groß! Das schöne Tabellendokument! Unsere Implementierung basierte 1 zu 1 auf diesen Tabellen – inklusive Benennung der States und Events. Jetzt sollte es nur noch diese High-Level-Spezifikation geben?! Sollten wir nun daraus die riesigen Tabellen selbst ableiten?!

Ich begann zu prüfen, ob die High-Level-Spezifikation denn wenigstens zu den bestehenden Tabellen passt. Eine Sisyphusarbeit! Lieber nochmal von der anderen Seite probieren und aus der High-Level-Beschreibung die Tabelle generieren. Und siehe da: eine Tabelle die vorher fast 400 Zellen hatte, schnurrte auf handliche 50 Zellen zusammen! Wie konnte das sein? Hatte ich etwas übersehen? Die Komplexität nicht verstanden? Oder: Warum hatte ich es vorher nicht gesehen?

Es lag an der zauberhaften Trennung von Problem- und Lösungsraum!
Erst jetzt, wo die High-Level-Spezifikation geschrieben war; nachdem das vom Kunden gewünschte Verhalten deutlich – und vor allem frei von Lösungsvorschlägen – dargestellt wurde, war es möglich geworden eine effiziente Lösung für das Problem zu finden. Das Tabellendokument hatte von Anfang an versucht eine Lösung zu beschreiben. Aber bevor die High-Level_Spezifikation existierte, war gar nicht klar, zu welchem Problem diese gehören sollte.

Auch wenn es nun endlich möglich war eine effiziente Lösung für das Problem zu finden: Der Aufwand und die Kosten für den Change-Request sind bei einer beachtlichen Größe geblieben. Denn wir mussten viel rückbauen, verwerfen und überarbeiten. Späte Erkenntnisse sind leider immer teure Erkenntnisse!

Daher schließe ich mit der Empfehlung: Erst das Problem verstehen, dann die Lösung suchen.
Birgit Feld


Geschrieben von (Gast) Birgit Feld

Birgit Feld arbeitet seit 15 Jahren in der Medizintechnik und Laborautomatisierung. Nach dem Studium der Elektrotechnik an der RWTH Aachen widmete sie sich zunächst der Softwareentwicklung. Als Systemarchitektin bei der Entwicklung von Defibrillatoren genoss sie es den Überblick auf das Große und Ganze zu haben und Produktentwicklungen von der Idee bis zum Markt zu begleiten. Seit 2017 arbeitet sie als Projektleiterin bei der infoteam Software AG.


Weitere Beiträge

  • 05/12/2024
  • Allgemein, Systems Engineering, Unternehmen, Veranstaltungen

In einer sich ständig wandelnden Geschäftswelt ist Kreativität ein entscheidender Faktor für den Erfolg. Unternehmen, die innovative Lösungen entwickeln und sich kontinuierlich an neue Herausforderungen anpassen können, haben einen ...

Weiterlesen
  • 09/07/2024
  • Allgemein, Elektrostimulation, Systems Engineering, Unternehmen, Veranstaltungen

Liebe Ingenieurinnen und Ingenieure, technisch Interessierte und Familienangehörige, am 13. Juli 2024 findet der Familientag „Faszination Technik“ in Nürnberg statt! Das Event wird veranstaltet vom VDI-Bezirksverein Bayern Nordost e.V. und der Technischen Hochschule Nürnberg. ...

Weiterlesen
  • 30/04/2024
  • 3D Druck, Allgemein, Gastblogs, Hardware, Mechanik

Oder: wie man eine Idee ruckzuck in einen Prototyp verwandeln kann Ich weiß nicht, wie es Ihnen geht, aber ich habe immer mal wieder Ideen zu nützlichen Gadgets, die ...

Weiterlesen
Cookie-Übersicht

Die Internetseiten der MEDtech Ingenieur GmbH verwenden Cookies. Cookies sind Textdateien, welche über einen Internetbrowser auf einem Computersystem abgelegt und gespeichert werden.

Zahlreiche Internetseiten und Server verwenden Cookies. Viele Cookies enthalten eine sogenannte Cookie-ID. Eine Cookie-ID ist eine eindeutige Kennung des Cookies. Sie besteht aus einer Zeichenfolge, durch welche Internetseiten und Server dem konkreten Internetbrowser zugeordnet werden können, in dem das Cookie gespeichert wurde. Dies ermöglicht es den besuchten Internetseiten und Servern, den individuellen Browser der betroffenen Person von anderen Internetbrowsern, die andere Cookies enthalten, zu unterscheiden. Ein bestimmter Internetbrowser kann über die eindeutige Cookie-ID wiedererkannt und identifiziert werden.

Durch den Einsatz von Cookies kann die MEDtech Ingenieur GmbH den Nutzern dieser Internetseite nutzerfreundlichere Services bereitstellen, die ohne die Cookie-Setzung nicht möglich wären.

Mittels eines Cookies können die Informationen und Angebote auf unserer Internetseite im Sinne des Benutzers optimiert werden. Cookies ermöglichen uns, wie bereits erwähnt, die Benutzer unserer Internetseite wiederzuerkennen. Zweck dieser Wiedererkennung ist es, den Nutzern die Verwendung unserer Internetseite zu erleichtern. Der Benutzer einer Internetseite, die Cookies verwendet, muss beispielsweise nicht bei jedem Besuch der Internetseite erneut seine Zugangsdaten eingeben, weil dies von der Internetseite und dem auf dem Computersystem des Benutzers abgelegten Cookie übernommen wird.

Die betroffene Person kann die Setzung von Cookies durch unsere Internetseite jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers verhindern und damit der Setzung von Cookies dauerhaft widersprechen. Ferner können bereits gesetzte Cookies jederzeit über einen Internetbrowser oder andere Softwareprogramme gelöscht werden. Dies ist in allen gängigen Internetbrowsern möglich. Deaktiviert die betroffene Person die Setzung von Cookies in dem genutzten Internetbrowser, sind unter Umständen nicht alle Funktionen unserer Internetseite vollumfänglich nutzbar.

Weitere Informationen erhalten Sie in unserer Datenschutzerklärung.

Unbedingt notwendige Cookies

Dieses Cookie wird benötigt, um Ihre Cookie-Einstellungen zu merken und weitere Hauptfunktionen zur Verfügung zu stellen

Um Ihnen eine Auskunft über Ihre gespeicherten personenbezogenen Daten hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) geben zu können, benötigen wir einen Cookie, um Sie bei der Datenabfrage identifizieren zu können. Dieser Cookie muss aus Sicherheitsgründen deshalb aktiviert sein. Ein weiterer Cookie wird gesetzt, um diesen Banner nicht erneut anzeigen zu müssen.

Cookie-Name Beschreibung
PHPSESSID Name: PHP session
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wir benötigt, um Sie bei der Anfrage von personenbezogenen Daten identifizieren zu können. Das Cookie wird nur gesetzt, wenn Sie eine Anfrage hier (https://medtech-ingenieur.de/gespeicherte-daten-2/) stellen.
Laufzeit: Sitzungsende
Kategorie: Unbedingt notwendige Cookies
moove_gdpr_popup Name: Cookie-Box Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Wird benötigt, um Ihre Cookie-Einstellungen zu speichern, um den Cookie-Banner nicht erneut anzeigen zu müssen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
comment_author_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_email_9c90e388e3e1be4a6c594fa6ac8a3eec
comment_author_url_9c90e388e3e1be4a6c594fa6ac8a3eec
Name: Kommentar Einstellungen
Anbieter:
Eigentümer der Webseite (MEDtech Ingenieur)
Zweck:
Cookie wird angelegt, wenn Sie ein Kommentar auf MEDtech Ingenieur veröffentlichen wollen, um Sie als Autor identifizieren und den aktuellen Status Ihres Kommentars anzeigen zu können. Das Cookie enthält den angegebenen Namen. Das Cookie wird erst gesetzt, wenn Sie der Speicherung Ihrer personenbezogenen Daten zustimmen.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
rmp-rate Name: RMP Rate
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie eine Bewertung eines Blogbeitrags mithilfe des Sternebewertungssystems abgeben. Ihnen wird eine anonymisierte ID zugewiesen, um zu erkennen, ob Sie einen Artikel bereits bewertet haben oder nicht. Das Cookie wird nur verwendet, um zu verhindern, dass mehrfache Bewertung abgegeben werden und erst gesetzt, wenn Sie auf einen Stern klicken.
Laufzeit: 1 Jahr
Kategorie: Unbedingt notwendige Cookies
medtech-download-page Name: Download Page
Anbieter: Eigentümer der Webseite (MEDtech Ingenieur)
Zweck: Cookie wird angelegt, wenn Sie den Landing-Page Prozess erfolgreich durchlaufen haben. Dies geschieht nur, wenn Sie einen Content-Download von unserer Website anstreben.
Laufzeit: 1/2 Jahr
Kategorie: Unbedingt notwendige Cookies