So modellieren Sie die Abhängigkeiten zwischen Feldern in sehr komplexen Formen


8

Wir müssen eine Webanwendung erstellen, die als Antragsformular für mehrere Versicherungsprodukte verwendet wird (insgesamt 15). Dieses Antragsformular ähnelt einem Formularassistenten und erstreckt sich über mehrere Seiten, je nachdem, welches Produkt zwischen 4 und 10 liegt.

Die Gesamtsumme aller verschiedenen Elemente (Eingaben, Auswahlfelder), die das Formular rendern wird, beträgt ungefähr 250, aber selbst das komplexeste Produkt wird nicht mehr als 170 davon verwenden. Die am wenigsten komplexe benötigt noch rund 80 Elemente.

Wir möchten nicht 15 verschiedene Antragsformulare erstellen, eines pro Produkt, sondern ein einziges Antragsformular, das von allen Produkten verwendet wird.

Wie Sie sich vorstellen können, bestehen zwischen den Elementen viele Abhängigkeiten. Ein in ein Feld eingegebener Wert kann dazu führen, dass ein anderes Feld oder eine Reihe von Feldern angezeigt oder ausgeblendet wird (auf der aktuellen Seite oder einer oder mehreren folgenden Seiten). Einige andere Abhängigkeiten basierend auf eingegebenen Werten:

  • Wert eines Elements ist erforderlich oder nicht
  • Mögliche Werte für Auswahlfelder werden geändert
  • Die Validierungsbeschränkungen werden geändert

Wie Sie sich vorstellen können, ist die Modellierung sehr komplex. Die Frage ist, welches Tool würden Sie empfehlen, um all diese Elemente, die Abhängigkeiten zwischen ihnen und die Validierungsbeschränkungen zu modellieren (und zu dokumentieren)? Wie würden Sie die Modellierung durchführen? In diesem Fall wird überhaupt nicht über das Datenmodell gesprochen. Dieses Modell wird Teil der Spezifikationen dessen sein, was getan werden muss, und als Referenz nach Abschluss des Projekts. Durch Ändern des Modells werden die Antragsformulare nicht automatisch geändert.

Einige der Dinge, die wir gerne einfach machen möchten:

  • Sehen Sie, von welchen Elementen ein bestimmtes Element abhängt
  • Alle im Formular enthaltenen Elemente für ein bestimmtes Produkt anzeigen
  • Siehe erforderliche Elemente für ein bestimmtes Produkt
  • Definieren Sie Validierungsregeln für jedes Element
  • Definieren Sie verschiedene Attribute für jedes Element

Einschränkung: Unsere Produktmanager und Produktbesitzer sind diejenigen, die die Modellierung durchführen.


Ich bin mir nicht sicher, was Sie unter "was" in "was würden Sie empfehlen" verstehen, aber wahrscheinlich wäre es sinnvoll, zuerst eine Art Ontologie zu definieren, um die Sache für die Modellbauer zu vereinfachen. Konkrete Fälle werden dann durch Inferenzregeln gesteuert. Als Bonus erhalten Sie aussagekräftige Gruppierungen von Eingabe-Widgets.
Roman Susi

@ RomanSusi danke für den Hinweis, gerade die Frage aktualisiert
Marius Burz

1
Wie ich kürzlich erfahren habe, ist die Toolempfehlung hier offtopisch, siehe Hilfeprogramm programmers.stackexchange.com/help/on-topic . Außerdem ist aus Ihrer Frage nicht ersichtlich, ob Ihr System die Bearbeitung von Produkten zulassen soll oder ob dies nur einmal in der Phase der Anforderungserfassung erfolgt.
Roman Susi

@ RomanSusi ist nur ein Teil der Spezifikationen und als Referenz. Ich würde nicht sagen, dass dies nur während der Anforderungserfassungsphase geschieht. Bei dieser Komplexität wird dies auch als Referenz verwendet. Nicht wirklich nach dem Tool allein fragen, eher wie würden Sie es tun und was würden Sie verwenden, um es zu tun.
Marius Burz

Haben Sie LimeSurvey ausprobiert / studiert? Jedes andere Online-Vermessungstool würde ebenfalls funktionieren. Bonuspunkte für Sie, wenn Sie es einfach direkt verwenden können, anstatt Ihr eigenes Werkzeug zu rollen ...

Antworten:


1

Für ein ähnlich komplexes Projekt haben wir im Business-Layer einen Interpreter mit Formeln für "isValid" und "isVisible" für jedes Formularelement implementiert

Für den Interpreter haben wir die Object Constraint Language von UML verwendet, die einst für diesen Zweck entwickelt wurde.

Leider spricht fast niemand "uml-ocl", so dass es schwierig ist, jemanden zu finden, der die Regeln einhält.

Wenn wir das noch einmal machen müssten, würden wir eine allgemeinere Sprache wie js / vb-script für den Interpreter wählen


Dies ist bereits Teil der Implementierung, wenn ich es richtig verstehe. Ich sage nicht, dass es falsch ist, den Code für die Dokumentation zu verwenden. Meistens ist es das, was die Geschichte wirklich so erzählt, wie sie ist, aber um den Code zu schreiben, müssen Sie bereits die Spezifikationen haben und alles gut dokumentiert haben. Das ist der Kontext der Frage.
Marius Burz

Ich würde die Vorstellung bestreiten, dass Sie alles Dokumentierte und Spezifizierte benötigen, bevor Sie den Code schreiben können. Dies ist genau die Art von Projekt, die mit einem iterativen Ansatz leicht durchgeführt werden kann, wobei der Kunde den Fortschritt überprüft und Änderungen regelmäßig zurückmeldet. Es ist viel einfacher zu beschreiben, was zu tun ist, wenn ein teilweise implementiertes Formular vor Ihnen liegt, als zu versuchen, alle Anforderungen im Voraus zu ermitteln.
Jules

@jules: Ich stimme voll und ganz zu, insbesondere, dass nicht triviale Validierungs- / Sichtbarkeitsregeln nicht im Voraus festgelegt werden können. Sie müssen im Laufe der Zeit übernommen werden. Doch eine Domäne-specific_language für die Definition von validaion / Sichtbarkeit kann im Voraus festgelegt und durchgeführt werden. Der Interpreter von Domain-Specific_language kann die vom Menschen lesbaren Regeln für die Validierung / Sichtbarkeit lesen und ausführen. Der Code muss nicht mehr aktualisiert werden, wenn sich die Spezifikation ändert. Diese Spezifikation sollte sich im Laufe der Zeit weiterentwickeln
k3b

1

Eine Kombination von Tools kann bei der Verwaltung der Komplexität hilfreich sein. Ich beginne gerne mit einem strukturierten, aber beschreibenden Ansatz (im Gegensatz zu einem stark formalisierten Ansatz), mit dem Menschen leicht interagieren können. PMs sollten mit Tabellenkalkulationen vertraut sein, und es kann hilfreich sein, Abhängigkeiten in Tabellenform zu gestalten.

  1. ZB eine Tabelle für Produkt-x-Feldabhängigkeiten.
  2. Eine zweite Tabelle kann die Interaktionen zwischen Feldern (Feld x Feld) kapseln. Die sich überschneidenden Zellen können anfänglich beschreibenden Text enthalten.

In einem ersten Durchgang kann dies Probleme mit der Logik aufdecken und / oder Möglichkeiten zur Vereinfachung der Logik identifizieren.

Und während PMs möglicherweise direkt vor Webprogrammierung zurückschrecken, verwenden Sie eine moderne, ausdrucksstarke clientseitige Technologie, um die "Sprache" Ihrer Anwendung aufzubauen. Tools wie angle.js fördern die Konzentration auf die Funktionen der Komponenten und minimieren den Rauschcode. Die richtige Web-Technologie sollte auch eine gute Testunterstützung bieten.


0

Die Frage ist, welches Tool würden Sie empfehlen, um all diese Elemente, die Abhängigkeiten zwischen ihnen und die Validierungsbeschränkungen zu modellieren (und zu dokumentieren)? Wie würden Sie die Modellierung durchführen?

Wir hatten ein ähnliches Projekt. Sehr komplexe Formen und viele davon.

  • Das Originalpapier bildet sich
    • Unser Ziel war es, die Webseiten genau so aussehen zu lassen, wie sie sind
  • Excel
    • Spezifikation der Bildschirmformularelementdaten
    • Name des Datenelements (sehr wichtig beim Codieren) Typ, Länge, Formatierung, allgemeine Regeln
  • Unternehmensarchitekt
    • Grundlegendes Klassendesign über UML.

Enterprise Architect (EA)

Hier ist ein Link.

Qualifier: Es ist ein paar Jahre her, seit ich es das letzte Mal benutzt habe. Ein komplexes Werkzeug. Große Lernkurve. Sehr gute UML-Kenntnisse für präzise Ergebnisse erforderlich; Hinter allem stehen Metadaten . Daher ist die EA-Funktionalität breit, tief, rätselhaft und manchmal eigenartig.

EA integriert seine Artefakte sehr gut. Das kollektive Wissen unserer Teams über UML- und EA-Tools reichte jedoch nicht aus, um ein zufriedenstellendes End-to-End-Tool zu erstellen. Beachten Sie, dass unser Ziel nicht darin bestand, es so zu verwenden. Trotzdem ist es besser, das Tool (einige Aspekte) nicht zu verwenden, als es schlecht zu verwenden.

Jeder Entwickler hat damit Klassen für sein zugewiesenes Formular (oder einen Abschnitt davon) entworfen. Der Business Analyst hat damit Anwendungsfalldiagramme erstellt. Ich habe es nicht für die Anforderungsanalyse verwendet, da die Papierformulare, Formulardaten und Prozesse gut etabliert waren - und dies vor der Einführung von EA.

Wir konnten dieses umfassende Tool, das die Integration von der Anforderungsanalyse in den tatsächlichen Code versprach, nie nutzen. Die Entwickler haben nur genug gelernt, um die rudimentären Klassen- und Sequenzdiagramme zu erstellen, die für die Genehmigung des Management-Go-Codes erforderlich sind. Und mir war klar, dass selbst wenn ich aus den Klassendiagrammen eine Code-Shell generierte, diese zu schwierig (dh ohne detaillierte UML-Kenntnisse), zu unpraktisch und zu langwierig war , um EA mit der Codeentwicklung synchron zu halten. Sobald wir mit dem Codieren begannen, wurden die UML-Diagramme sehr schnell veraltet und ignoriert.

Gute Sequenzdiagramme sind von unschätzbarem Wert für das Verständnis der Klasseninteraktion und der Objektinstanziierung. Eine schöne Karte auf hoher Ebene beim Codieren.

Warnung

Kompetentes und (angemessen) vollständiges Design von Geschäftsdomänen ist weitaus wichtiger als jedes andere Tool. Ich bekomme PTS nur darüber nachzudenken, wie universell & * $ & # unser Code war, außer in der sehr seltenen Zeit, in der wir ein gutes Geschäftsmodell gemacht haben. Ich könnte Seiten und Seiten schreiben.


Wie Sie sagten, ist dies ein sehr mächtiges Werkzeug, wir haben es tatsächlich bereits. Dies ist etwas, mit dem erfahrene Softwareentwickler arbeiten können, aber nicht etwas für unsere Produktmanager / Eigentümer. Ich denke, tatsächlich ist es ziemlich ungewöhnlich, PM / PO zu finden, die möglicherweise damit funktionieren könnten, wie Sie selbst sagten, die Lernkurve ist ziemlich großzügig.
Marius Burz
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.