{"id":1012,"date":"2014-03-27T08:00:00","date_gmt":"2014-03-27T07:00:00","guid":{"rendered":"https:\/\/www.formalmind.com\/blog\/traceability-between-uml-and-requirements-pror\/"},"modified":"2022-04-11T18:58:55","modified_gmt":"2022-04-11T16:58:55","slug":"traceability-between-uml-and-requirements-pror","status":"publish","type":"post","link":"https:\/\/www.formalmind.com\/de\/blog\/traceability-between-uml-and-requirements-pror\/","title":{"rendered":"R\u00fcckverfolgbarkeit zwischen UML und Anforderungen mit ProR"},"content":{"rendered":"<p><img class=\"lazyload\" data-src=\"\/sites\/blog\/papyrus-integration-4.png\" decoding=\"async\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" style=\"width: 250px; height: 238px; float: right;\"><noscript><img decoding=\"async\" alt=\"\" src=\"\/sites\/blog\/papyrus-integration-4.png\" style=\"width: 250px; height: 238px; float: right;\"><\/noscript>Die Arbeit mit Anforderungen sollte keine isolierte Aktivit\u00e4t sein \u2013 sie interagiert mit vielen Aspekten des Entwicklungsprozesses: der Fortschritt wird durch die \u00dcberpr\u00fcfung, wie viele Anforderungen implementiert wurden, verfolgt; Tests zeigen, dass Anforderungen korrekt implementiert sind; Elemente der Systemspezifikation zeigen, wie Anforderungen realisiert werden; und vieles mehr.<!--break--><\/p>\n<h2>UML\/SysML-Elemente mit Anforderungen verkn\u00fcpfen<\/h2>\n<p>Wir haben in der Vergangenheit gezeigt, wie <a href=\"https:\/\/www.formalmind.com\/en\/blog\/integrating-requirements-and-models\" target=\"_blank\" rel=\"noopener\">Anforderungen und formale Spezifikationen k\u00f6nnen integriert werden<\/a>. Wir erl\u00e4uterten auch unsere Vision einer <a href=\"https:\/\/www.formalmind.com\/en\/blog\/using-rmf-integrate-your-models\">\u00e4hnliche Integration mit UML\/SysML<\/a>. Eine erste Implementierung einer solchen Integration ist nun verf\u00fcgbar und wurde im Rahmen der <a href=\"https:\/\/www.formalmind.com\/en\/workpackage-leadership-openetcs-behalf-deutsche-bahn\" target=\"_blank\" rel=\"noopener\">openETCS Projekt<\/a>.<\/p>\n<h2>openETCS<\/h2>\n<p>F\u00fcr den Moment wird die Integration nur als Teil des openETCS-Tools angeboten und nicht als installierbares Feature. Es gibt technische Gr\u00fcnde daf\u00fcr, da Papyrus, die Komponente f\u00fcr UML\/SysML, sehr spezifische Systemanforderungen hat. Daher bitten wir Sie vorerst <a href=\"http:\/\/openetcs.org\/tool\/\" target=\"_blank\" rel=\"noopener\">OpenETCS herunterladen und installieren<\/a> (kostenlos), wenn Sie daran interessiert sind, diese Funktion auszuprobieren. Diese Funktionalit\u00e4t wird in der <a href=\"https:\/\/github.com\/openETCS\/toolchain\/wiki\/User-Documentation#Tracing_Requirements_and_SysML_Models\" target=\"_blank\" rel=\"noopener\">openETCS Dokumentation<\/a>.Daher werden wir uns hier auf das Ergebnis konzentrieren und nicht auf die Schritte, die dorthin f\u00fchren.<\/p>\n<h2>Anforderungen und UML-Modell<\/h2>\n<p>Als einfaches Beispiel erstellen wir Traces zwischen Anforderungen und einem UML-Anwendungsfalldiagramm. Als Vorbereitung haben wir einen Anwendungsfall bez\u00fcglich ProR erstellt: Eine neue Anforderung erstellen. Wir haben auch ein UML-Modell erstellt, das einen Akteur, den Requirements Engineer, enth\u00e4lt. Dies ist hier dargestellt:<\/p>\n<p style=\"text-align: center;\"><img class=\"lazyload\" data-src=\"\/sites\/blog\/papyrus-integration-1.png\" decoding=\"async\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" style=\"width: 600px; height: 426px;\"><noscript><img decoding=\"async\" alt=\"\" src=\"\/sites\/blog\/papyrus-integration-1.png\" style=\"width: 600px; height: 426px;\"><\/noscript><\/p>\n<p>Um das Tracing-Plug-in nutzen zu k\u00f6nnen, m\u00fcssen einige Datenstrukturen erstellt werden (der Linktyp und seine Attribute) und das Plug-in konfiguriert werden. Dies ist alles in der openETCS-Dokumentation beschrieben. Sobald dies geschehen ist, erfolgt die Verkn\u00fcpfung durch <strong>Ziehen aus dem Model Explorer in den Specification Editor.<\/strong>&nbsp; Dies f\u00fchrt zu einem Trace, der sich wie ein regul\u00e4rer Link in ProR verh\u00e4lt:<\/p>\n<p style=\"text-align: center;\"><img class=\"lazyload\" data-src=\"\/sites\/blog\/papyrus-integration-2.png\" decoding=\"async\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" style=\"width: 600px; height: 489px;\"><noscript><img decoding=\"async\" alt=\"\" src=\"\/sites\/blog\/papyrus-integration-2.png\" style=\"width: 600px; height: 489px;\"><\/noscript><\/p>\n<p>Man kann sehen, dass ein Link erstellt wurde, wobei die Bezeichnung des Linkziels eine pr\u00e4gnante Beschreibung des Zielelements ist (in diesem Fall, <span style=\"background-color:#dddddd;font-family:monospace;\">Anforderungsingenieur<\/span>). In der Eigenschaftenansicht sehen Sie alle Attribute des UML-Elements.<\/p>\n<p>Selbstverst\u00e4ndlich kann diese Funktionalit\u00e4t mit anderen Elementen von ProR Essentials kombiniert werden, insbesondere mit dem <a href=\"https:\/\/www.formalmind.com\/en\/pror-essentials\" target=\"_blank\" rel=\"noopener\">Verd\u00e4chtiger Link<\/a> Feature. Dies erstreckt sich auch auf das UML-Modell. Das hei\u00dft, wenn sich das UML-Modellelement \u00e4ndert, wird dies ebenfalls erkannt. Probieren wir dies aus und benennen wir den \u201cRequirements Engineer\u201d in \u201cUser\u201d um. Dies wird im UML-Modell gemacht (die Elemente in ProR sind schreibgesch\u00fctzt). Nach der Installation der Essentials und der Konfiguration von Suspect-Links erhalten Sie nach dem Umbenennen des Akteurs Folgendes:<\/p>\n<p style=\"text-align: center;\"><img class=\"lazyload\" data-src=\"\/sites\/blog\/papyrus-integration-3.png\" decoding=\"async\" alt=\"\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" style=\"width: 600px; height: 132px;\"><noscript><img decoding=\"async\" alt=\"\" src=\"\/sites\/blog\/papyrus-integration-3.png\" style=\"width: 600px; height: 132px;\"><\/noscript><\/p>\n<p>Der Linkinhalt wurde aktualisiert und neben dem Link wird ein Ausrufezeichen angezeigt. <span style=\"background-color:#dddddd;font-family:monospace;\">Ziel<\/span> Flagge. H\u00e4ttest du die Linkquelle (den Anwendungsfalltitel) aktualisiert, <span style=\"background-color:#dddddd;font-family:monospace;\">Quelle<\/span> Flagge w\u00e4re aktualisiert worden.<\/p>\n<h2>N\u00e4chste Schritte<\/h2>\n<p>Vorerst zeigt die Integration nur eine textuelle Darstellung des UML-Elements. Langfristig w\u00e4re es wirklich aussagekr\u00e4ftig, die grafische Darstellung der Modellelemente einzubinden. Stellen Sie sich vor, Sie zeigen ein Zustandsdiagramm inline mit dem Anforderungstext: Nicht als eingef\u00fcgtes Bild, sondern als lebendiges Modellelement, das sowohl visuell als auch funktional nahtlos integriert ist. Das w\u00e4re ein gro\u00dfer Fortschritt.<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Die Arbeit mit Anforderungen sollte keine isolierte Aktivit\u00e4t sein - sie interagieren mit vielen Aspekten des Entwicklungsprozesses: Der Fortschritt wird verfolgt, indem \u00fcberpr\u00fcft wird, wie viele Anforderungen implementiert wurden; Tests zeigen, dass die Anforderungen korrekt implementiert wurden; Elemente der Systemspezifikation zeigen, wie die Anforderungen realisiert werden; und vieles mehr. Verkn\u00fcpfen Sie UML\/SysML-Elemente mit...<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"single-no-separators","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[13],"tags":[],"class_list":["post-1012","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/posts\/1012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/comments?post=1012"}],"version-history":[{"count":0,"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/posts\/1012\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/media?parent=1012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/categories?post=1012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.formalmind.com\/de\/wp-json\/wp\/v2\/tags?post=1012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}