{"id":8001,"date":"2025-11-29T08:35:48","date_gmt":"2025-11-29T07:35:48","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=8001"},"modified":"2026-02-13T04:58:10","modified_gmt":"2026-02-13T03:58:10","slug":"how-do-you-safely-herd-the-flock-back-together","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/","title":{"rendered":"How do you safely gather the herd back together?"},"content":{"rendered":"<h2>Architekturanalyse f\u00fcr Software-Varianten<\/h2>\n<p style=\"text-align: left;\" align=\"center\">Autoren: Professor Dr. Rainer Koschke, Universit\u00e4t Bremen &amp; Thomas Eisenbarth, Axivion GmbH<strong><br \/>\n<\/strong><\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2016<\/h3>\n<p><strong>Wenn man sehr variantenintensive Software-Produkte zu betreuen hat, bietet sich eine Entwicklung in einer sogenannten\u00a0<em>Software-Produktlinie (SPL)<\/em>\u00a0an. Eine Produktlinie ist eine Familie von Programmen, die eine gro\u00dfe Anzahl gleicher Anforderungen erf\u00fcllt, von denen aber jedes einzelne Programm nicht genau das Gleiche tut wie die anderen \u2013 sei es weil es etwas andere funktionale Anforderungen hat oder weil es etwas andere nicht-funktionale Eigenschaften aufweist (z.B. andere Algorithmen mit unterschiedlichem Ressourcenbedarf implementiert). Manche Autoren bezeichnen SPL deshalb auch als\u00a0<em>Software-Produktfamilien<\/em>.<\/strong><\/p>\n<p>In der Praxis wird bei der Entwicklung eines neuen Produkts h\u00e4ufig ein Ansatz favorisiert, der ein bestehendes Produkt der Software-Produktlinie komplett kopiert und so ab\u00e4ndert und anpasst, dass das konkrete Problem gel\u00f6st wird. Diesen Ansatz nennt man &#8222;<em>Clone-and-Own<\/em>-Vorgehen&#8220;.<\/p>\n<p>Der Vorteil des Clone-and-Own-Vorgehens in der Praxis ist die h\u00f6here Entwicklungseffizienz. Man hat einen schnelleren Start, mehr Unabh\u00e4ngigkeit und der Ansatz ist auch recht einfach anzuwenden.<\/p>\n<p>Die Nachteile des Clone-and-Own-Vorgehens sind jedoch betr\u00e4chtlich. Es entsteht zus\u00e4tzlicher Aufwand bei der \u00c4nderung. Weil der Code durch das Kopieren hochgradig redundant ist, m\u00fcssen f\u00fcr eine konsistente \u00c4nderung gleichartige \u00c4nderungen an vielen Stellen des Codes gemacht werden. Inkonsistente \u00c4nderungen k\u00f6nnen zu Fehlern und Integrationsproblemen f\u00fchren. Der logisch gleiche Code muss unter Umst\u00e4nden mehrfach getestet werden.<\/p>\n<p>Der Clone-and-Own-Ansatz stellt ein kurzfristiges Denken dar. Es ist eine mangelhafte Form von Wiederverwendung, die nicht selten aus der Unkenntnis und dem Mangel an Ressourcen f\u00fcr bessere SPL-Praktiken resultiert. Der Clone-and-Own-Ansatz ist nicht selten auch ein Indiz f\u00fcr die mangelhafte F\u00fchrung von Software-Entwicklungsprojekten. Es gibt keine Infrastruktur f\u00fcr Wiederverwendung und auch keine definierten Prozesse und Rollen daf\u00fcr. Auch der Grad der Wiederwendung und ihre Wirkung auf Kosten, Entwicklungsgeschwindigkeit und Korrektheit werden nicht gemessen und somit vernachl\u00e4ssigt.<\/p>\n<p>Der Clone-and-Own-Ansatz f\u00fchrt zu einer Menge sehr \u00e4hnlicher Implementierungen, die man alle parallel warten muss. Die Nachteile, die daraus erwachsen, m\u00fcssen kompensiert werden, um noch Herr der Lage bleiben zu k\u00f6nnen. In dieser Situation bietet sich eine Klonanalyse an, um gleiche Teile, Variationspunkte und optionale Anteile zu identifizieren. Eine Klonanalyse sucht automatisiert nach gleichen Code-Teilen. Sie kann verwendet werden, um kopierte Dateien zueinander in Beziehung zu setzen und deren Unterschiede und Gemeinsamkeiten zu quantifizieren. Folgende Funktionen f\u00fcr jeweils zwei Dateien\u00a0<em>f<\/em><sub>1<\/sub>\u00a0und\u00a0<em>f<\/em><sub>2<\/sub>\u00a0lassen sich hierzu definieren (dabei sei\u00a0<em>tokens<\/em>\u00a0eine Funktion, die die Tokens einer Datei wiedergibt und\u00a0<em>hash<\/em>\u00a0eine Funktion, die einen Hash-Wert f\u00fcr eine Datei \u00fcber ihre Tokens berechnet, z.B. mittels MD5; ein\u00a0<em>Token<\/em>\u00a0ist die kleinste semantische Einheit einer Programmiersprache, wie zum Beispiel ein Schl\u00fcsselwort, ein Operator oder ein Bezeichner; die Funktion\u00a0<em>clone<\/em>\u00a0im Folgenden liefert die Menge geklonter Code-Fragmente zwischen zwei Dateien und\u00a0<em>parameters<\/em>\u00a0die Menge der Parameter einer Datei oder eines Code-Fragments; als Parameter werden solche Tokens betrachtet, die man eins-zu-eins substituieren kann, zum Beispiel werden im geklonten Code h\u00e4ufig Bezeichner oder Literale ausgetauscht):<\/p>\n<p><em>path-identical<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>): zwei Dateien haben denselben relativen Pfad und Dateinamen im Quellcode-Verzeichnis<\/p>\n<p><em>t-identical<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>) \u21d4\u00a0<em>hash<\/em>(<em>tokens<\/em>(<em>f<\/em><sub>1<\/sub>)) =\u00a0<em>hash<\/em>(<em>tokens<\/em>(<em>f<\/em><sub>2<\/sub>))<\/p>\n<p><em>tsim<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>) = |{<em>t<\/em>|<em>t<\/em>\u00a0\u2208\u00a0<em>f<\/em><sub>1<\/sub>\u00a0\u2227\u00a0<em>f<\/em>\u00a0\u2208\u00a0<em>clone<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>)}| \/ |<em>f<\/em><sub>1<\/sub>|<\/p>\n<p><em>psim<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>) = |<em>parameters<\/em>(<em>f<\/em><sub>1<\/sub>) \u2229\u00a0<em>parameters<\/em>(<em>f<\/em><sub>2<\/sub>)|<br \/>\n\/ |<em>parameters<\/em>(<em>f<\/em><sub>1<\/sub>) \u222a\u00a0<em>parameters<\/em>(<em>f<\/em><sub>2<\/sub>)|<\/p>\n<p><em>similar<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>) \u21d4 (<em>tsim<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>) \u2265 0.7 \u2228\u00a0<em>tsim<\/em>(<em>f<\/em><sub>2<\/sub>,\u00a0<em>f<\/em><sub>1<\/sub>) \u2265 0.7) \u2227\u00a0<em>psim<\/em>(<em>f<\/em><sub>1<\/sub>,\u00a0<em>f<\/em><sub>2<\/sub>) \u2265 0.75<\/p>\n<p>Die f\u00fcr die Funktion\u00a0<em>similar<\/em>\u00a0gew\u00e4hlten Schwellenwerte wurden von uns in einer empirischen Untersuchung ermittelt.<\/p>\n<p>Anhand dieser Funktionen l\u00e4sst sich der Code im Stammbaum der Produktlinie dateiweise in folgende Kategorien einteilen (siehe auch\u00a0<a title=\"Wie treibt man die Herde wieder sicher zusammen? (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/arch_wie_treibt_man_die_herde_wieder_sicher_zusammen_koschkeeisenbarth.pdf\" target=\"_blank\" rel=\"noopener\">Abb. 1, PDF<\/a>):<\/p>\n<ul>\n<li>different<\/li>\n<li>moved and varied<\/li>\n<li>re-written<\/li>\n<li>varied<\/li>\n<li>moved<\/li>\n<li>identical<\/li>\n<\/ul>\n<p>Je nachdem, wie sich die geklonten Produkte entwickelt haben, kann es zu sehr \u00e4hnlichen oder auch sehr un\u00e4hnlichen Variationen gekommen sein. Dadurch wird eine schrittweise Transformation in eine Produktlinie mehr oder weniger erschwert. Die Analyse dieses Gesichtspunkts kann ebenfalls durch die Klonanalyse unterst\u00fctzt werden.<\/p>\n<p>Der zweite Schritt nach der Identifikation der Gemeinsamkeiten und Unterschiede ist die Konsolidierung der Software-Varianten. Das dabei zu l\u00f6sende Problem ist die Beseitigung der Redundanz in den Softwarevarianten. Dazu braucht man einen Katalog an Vorgehensweisen zur Konsolidierung der Varianten, beispielsweise durch eine oder mehrere der folgenden Formen von Refactorings:<\/p>\n<ul>\n<li>Parametrisierung<\/li>\n<li>Einsatz von Templates\/Generizit\u00e4t<\/li>\n<li>Einsatz von Entwurfsmustern<\/li>\n<li>Einsatz von Code-Generierung<\/li>\n<\/ul>\n<p>Die Grundvoraussetzung f\u00fcr alle diese Konsolidierungsma\u00dfnahmen genauso wie f\u00fcr die Sicherstellung der konsistenten \u00c4nderung, wenn die Klone nicht beseitigt werden sollen, ist, dass Gemeinsamkeiten und Variabilit\u00e4ten zwischen Varianten auf allen Abstraktionsebenen der Software bekannt sind:<\/p>\n<ul>\n<li>Quellcode-Ebene: dies kann durch den Einsatz von Werkzeugen zum textuellen Vergleich, wie zum Beispiel\u00a0<em>diff<\/em>, oder durch dedizierte Klonerkennungswerkzeuge erreicht werden.<\/li>\n<li>Architektur: mit Hilfe von Techniken der Architekturrekonstruktion [1, 2] kann durch ein Reverse-Engineering des Codes die Architektur wiedergewonnen und die verschiedenen Architekturen der einzelnen Produktvarianten miteinander verglichen werden. Dies verschafft eine h\u00f6here Abstraktion als die Code-Ebene.<\/li>\n<li>Funktionalit\u00e4t: auch die implementierten Features werden zwischen den Varianten variieren. Dabei kann es nicht nur gleiche und ganz verschiedene, sondern auch \u00e4hnliche Features geben. Dies betrifft sowohl funktionale als auch nicht-funktionale Anforderungen (wie z.B. Ressourcen-Verbrauch, Timing, Robustheit etc.).<\/li>\n<\/ul>\n<p>Auf Quellcode-Ebene k\u00f6nnen \u00e4hnliche Funktionen zweier Varianten durch folgendes Vorgehen identifiziert werden:<\/p>\n<ol>\n<li>Identifikation von Funktionspaaren mit Hilfe der Klonerkennung<\/li>\n<li>Messung der \u00c4hnlichkeit (Levenshtein-Distanz) entweder auf Basis einer textuelle, lexikalischen oder syntaktischen Darstellung des Programms<\/li>\n<li>Sortierung nach \u00c4hnlichkeit und Validierung der \u00c4hnlichkeit; letzteres ist notwendig, weil eine automatisierter Algorithmus die \u00c4hnlichkeit nur auf Basis syntaktischer Merkmale bestimmt, aber keinen Zugang zur Semantik der Programme hat<\/li>\n<\/ol>\n<p>Auf der Architekurebene kann die Architektur einer Variante mit Hilfe des hypothesengetriebenen Ansatzes zur Architekturwiedergewinnung ermittelt werden, siehe [2]:<\/p>\n<ol>\n<li>Stelle eine Hypothese f\u00fcr ein Architekturmodell auf<\/li>\n<li>Extrahiere das Implementierungsmodell aus dem Code<\/li>\n<li>Bilde die beiden Modelle aufeinander ab<\/li>\n<li>Berechne das Reflexionsmodell, das \u00dcbereinstimmungen und Unterschiede zwischen den Architekturen automatisiert aufdeckt<\/li>\n<li>Verfeinere\/korrigiere die Hypothese, ermittle Kandidaten f\u00fcr das Refactoring<\/li>\n<\/ol>\n<p>F\u00fcr die Produktlinienarchitektur muss dieses Vorgehen erweitert werden, um aus den individuellen Produktarchitekturen eine \u00fcbergeordnete Produktlinienarchitektur zu ermitteln. Dazu wird eine Hypothese f\u00fcr die Produktlinienarchitektur aufgestellt, die dann in der Folge mit den verschiedenen Produkten abgeglichen wird; siehe\u00a0<a title=\"Wie treibt man die Herde wieder sicher zusammen? (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/arch_wie_treibt_man_die_herde_wieder_sicher_zusammen_koschkeeisenbarth.pdf\" target=\"_blank\" rel=\"noopener\">Abb. 2 (PDF)<\/a>.<\/p>\n<p>Im Wesentlichen werden bei diesem Prozess den Komponenten und ggf. ihren Abh\u00e4ngigkeiten in der Produktlinienarchitektur \u00fcber UML-Stereotypen Attribute wie &lt;&lt;optional&gt;&gt;, &lt;&lt;kernel&gt;&gt; und &lt;&lt;variant&gt;&gt; mitgegeben. Das Attribut &lt;&lt;kernel&gt;&gt; beschreibt Komponenten und Abh\u00e4ngigkeiten, die in allen Produkten identisch enthalten sind, &lt;&lt;optional&gt;&gt; solche, die nicht in allen auftauchen, und &lt;&lt;variant&gt;&gt; solche, die zwar in allen Produktarchitekturen auftreten, jedoch in unterschiedlicher Form.<\/p>\n<p>In der Praxis haben wir mit dieser Herangehensweise eine Reihe von Systemen im Rahmen industrieller Fallstudien analysiert. Dabei stellten sich folgende Erkenntnisse ein:<\/p>\n<ul>\n<li>Unsere Methode konnte identische und \u00e4hnliche Funktionspaare zwischen Varianten zuverl\u00e4ssig identifizieren.<\/li>\n<li>Wir fanden hohe Gemeinsamkeiten insbesondere f\u00fcr Code-Funktionen der als Kernel-Module identifizierten Einheiten, aber auch Variabilit\u00e4ten.<\/li>\n<li>Es gab \u00c4hnlichkeiten auch zwischen produktspezifischen Code-Funktionen. Hier wurde also Code nur zwischen einzelnen Produkten kopiert und angepasst.<\/li>\n<li>Es gab eine hohe \u00c4hnlichkeit auf Architekturebene, die es erlaubte, den Blick f\u00fcr das Ganze zu bekommen.<\/li>\n<\/ul>\n<h2>Fazit<\/h2>\n<p>Gerade im Bereich eingebetteter Systeme, die sich nicht selten durch eine Vielfalt der zugrunde liegenden Hardware auszeichnen, wird h\u00e4ufig Wiederverwendung durch Copy &amp; Paste im gro\u00dfen Stil betrieben. Wird dies wiederholt praktiziert, f\u00fchrt dies zu einer enormen Redundanz im Code. \u00c4nderungen werden damit erschwert. In diesen F\u00e4llen kann die Redundanz wieder durch geeignete Refactorings oder andere Ma\u00dfnahmen wie die Code-Generierung beseitigt werden. Ist dies nicht m\u00f6glich oder gew\u00fcnscht, dann m\u00fcssen die negativen Folgen der Redundanz zumindest durch eine Analyse der Redundanz kompensiert werden. Mit unserem Ansatz lassen sich Redundanzen und somit Gemeinsamkeiten und Unterschiede sowohl auf Code- als auch Architekturebene identifizieren. Das damit gewonnene Wissen kann dann benutzt werden, um geeignete Ma\u00dfnahmen zu ergreifen, seien dies die Konsolidierung oder die geplante konsistente Wartung mehrerer \u00e4hnlicher Code-Teile. Dies senkt die Kosten in der Entwicklung und erh\u00f6ht die Planbarkeit und die Fehlerfreiheit.<\/p>\n<h2>Quellen<\/h2>\n<p>[1] Koschke, Rainer; Simon, Daniel:\u00a0<em>Hierarchical Reflexion Models<\/em>. In: Working Conference on Reverse Engineering, IEEE Computer Society Press, November 2003, S. 36\u201345<\/p>\n<p>[2] R. Koschke, P. Frenzel, A. Breu, K. Angstmann.\u00a0<em>Extending the reflexion method for consolidating software variants into product lines<\/em>. Software Quality Journal December 2009; 17(4):331\u2013366.<\/p>\n<p><a title=\"Wie treibt man die Herde wieder sicher zusammen? (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/arch_wie_treibt_man_die_herde_wieder_sicher_zusammen_koschkeeisenbarth.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF downloaden<\/strong><\/a><\/p>\n<hr \/>\n<h2>Architektur &#8211; MicroConsult Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"Alle Trainings und Termine\" href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Architektur \/Embedded- und Echtzeit-Softwareentwicklung.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Architektur\u00a0&#8211; Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema\u00a0Architektur \/Embedded- und Echtzeit-Softwareentwicklung steht\u00a0<a title=\"Embedded Software Architektur Fachwissen\" href=\"https:\/\/www.microconsult.de\/die-7-wichtigsten-tipps-fuer-ihre-embedded-software-architektur\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong><\/a>\u00a0f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Embedded Software Architektur Fachwissen\" href=\"https:\/\/www.microconsult.de\/die-7-wichtigsten-tipps-fuer-ihre-embedded-software-architektur\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>Fachwissen zu weiteren Themen unseren Portfolios finden Sie <a title=\"Fachinformationen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Architekturanalyse f\u00fcr Software-Varianten Autoren: Professor Dr. Rainer Koschke, Universit\u00e4t Bremen &amp; Thomas Eisenbarth, Axivion GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2016 Wenn man sehr variantenintensive Software-Produkte zu betreuen hat, bietet sich eine Entwicklung in einer sogenannten\u00a0Software-Produktlinie (SPL)\u00a0an. Eine Produktlinie ist eine Familie von Programmen, die eine gro\u00dfe Anzahl gleicher Anforderungen erf\u00fcllt, von denen aber [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-8001","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wie treibt man die Herde wieder sicher zusammen? - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/how-do-you-safely-herd-the-flock-back-together\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie treibt man die Herde wieder sicher zusammen? - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Architekturanalyse f\u00fcr Software-Varianten Autoren: Professor Dr. Rainer Koschke, Universit\u00e4t Bremen &amp; Thomas Eisenbarth, Axivion GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2016 Wenn man sehr variantenintensive Software-Produkte zu betreuen hat, bietet sich eine Entwicklung in einer sogenannten\u00a0Software-Produktlinie (SPL)\u00a0an. Eine Produktlinie ist eine Familie von Programmen, die eine gro\u00dfe Anzahl gleicher Anforderungen erf\u00fcllt, von denen aber [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/how-do-you-safely-herd-the-flock-back-together\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T07:35:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-13T03:58:10+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"Wie treibt man die Herde wieder sicher zusammen?\",\"datePublished\":\"2025-11-29T07:35:48+00:00\",\"dateModified\":\"2026-02-13T03:58:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/\"},\"wordCount\":1476,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/\",\"name\":\"Wie treibt man die Herde wieder sicher zusammen? - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-29T07:35:48+00:00\",\"dateModified\":\"2026-02-13T03:58:10+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/wie-treibt-man-die-herde-wieder-sicher-zusammen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wie treibt man die Herde wieder sicher zusammen?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How do you safely herd the flock back together? - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/how-do-you-safely-herd-the-flock-back-together\/","og_locale":"en_GB","og_type":"article","og_title":"Wie treibt man die Herde wieder sicher zusammen? - MicroConsult Academy GmbH","og_description":"Architekturanalyse f\u00fcr Software-Varianten Autoren: Professor Dr. Rainer Koschke, Universit\u00e4t Bremen &amp; Thomas Eisenbarth, Axivion GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2016 Wenn man sehr variantenintensive Software-Produkte zu betreuen hat, bietet sich eine Entwicklung in einer sogenannten\u00a0Software-Produktlinie (SPL)\u00a0an. Eine Produktlinie ist eine Familie von Programmen, die eine gro\u00dfe Anzahl gleicher Anforderungen erf\u00fcllt, von denen aber [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/how-do-you-safely-herd-the-flock-back-together\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-29T07:35:48+00:00","article_modified_time":"2026-02-13T03:58:10+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"Wie treibt man die Herde wieder sicher zusammen?","datePublished":"2025-11-29T07:35:48+00:00","dateModified":"2026-02-13T03:58:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/"},"wordCount":1476,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/","url":"https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/","name":"How do you safely herd the flock back together? - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-29T07:35:48+00:00","dateModified":"2026-02-13T03:58:10+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/wie-treibt-man-die-herde-wieder-sicher-zusammen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Wie treibt man die Herde wieder sicher zusammen?"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=8001"}],"version-history":[{"count":6,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8001\/revisions"}],"predecessor-version":[{"id":11653,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8001\/revisions\/11653"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=8001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=8001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=8001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}