title: Extending the Peer Model with composable design patterns
Creators: name: Schermann, Gerald
Publisher: name: TU Wien
Year: 2014
Subjects: subject: Programmier Modell
subject: Design Patterns
subject: Reuse
subject: Software Variability

description: Die Wiederverwendung von Softwarekomponenten ist ein wesentlicher Faktor für den Erfolg von Unternehmen. Jede einzelne Komponente eines neuen Produkts von Grund auf neu zu entwickeln wäre ein kostspieliges Unterfangen, verknüpft mit einigen Risiken. Negative Auswirkungen auf die Produkteinführungszeit wären eine direkte Konsequenz. Die geplante Wiederverwendung von Komponenten greift hingegen auf bereits getätigte Investitionen zurück und erlaubt es, neue Systeme auf Basis bereits entwickelter Komponenten mit erprobter Qualität zu erzeugen. Wesentliche Entwicklungszeiten und -kosten können eingespart werden. Bei Software-Produktlinien wird dieser Ansatz strategisch verfolgt: Einzelne, bestehende Komponenten werden ausgewählt und maßgeschneidert an Stakeholder-Bedürfnisse zu neuen Produkten kombiniert. Um das zu ermöglichen, müssen die einzelnen Softwarekomponenten kombinierbar, an den jeweiligen Einsatzzweck anpassbar und entsprechend erweiterbar sein. Diese Eigenschaften sind unter dem Begriff der Software-Variabilität bekannt. In dieser Arbeit wird ein Pattern-basierender Ansatz präsentiert, welcher diese Software-Variabilität mit dem Peer Modell kombiniert. Das Peer Modell ist ein Programmiermodell für die Modellierung von verteilten und nebenläufigen Systemen. Patterns werden als neue Komponenten in das Peer Modell aufgenommen und deren Zusammenspiel mit den bestehenden Komponenten erläutert. Ähnlich wie bei Software-Produktlinien sollen Design-Entscheidungen verzögert und erst bei der Verwendung konkreter Instanzen getroffen werden. Das in dieser Arbeit vorgestellte Pattern-Konzept erlaubt die Definition von generischen Patterns, welche von einzelnen Parametern abhängig sind. Diese Parameter entsprechen den verzögerten Entscheidungen, diese ermöglichen tiefgreifenden Einfluss auf die Funktionalität der Patterns und dadurch eröffnen sie die Möglichkeit für die Wiederverwendung im großen Stil. Die Vorteile dieses Konzepts werden anhand eines Anwendungsfalls aus der Eisenbahndomäne demonstriert. Signale eines ankommenden Zuges werden über ein Netzwerk aus mehreren Knoten entlang der Schienen an den Bahnübergang weitergeleitet und dort von einer Komponente verarbeitet. Mehrere Modellierungswerkzeuge aus dem Gebiet der verteilten Systeme wurden ausgewählt und damit der Anwendungsfall umgesetzt. Für eine aussagekräftige Evaluierung wurde eine Liste von Kriterien aufgestellt, welche die wesentlichen Eigenschaften für die Modellierung von solchen Systemen und im Speziellen die gewünschte Software-Variabilität aufzeigen. Die Evaluierung zeigt, dass das um das Pattern-Konzept erweiterte Peer Modell hervorsticht. Weiters können damit modellierte Systeme flexibel auf sich ändernde Anforderungen reagieren und laufen nicht in die Gefahr von notwendigen zeit- und kostenintensiven Änderungen an der zugrundeliegenden Architektur.
description: In the area of software development, reuse is an essential factor. Developing each component of a new product from scratch is costly, includes risks and has negative influence on the time to market. Therefore, the strategic reuse of software components is an important factor for the success of companies. It can leverage existing software investment, companies can build systems out of well-tested components of proven quality which have been used a couple of times and thus, both risks as well as costs for development and testing can be reduced. The software product line approach follows this aim by creating a platform of flexible components which can be selected and combined to different products tailored to stakeholder requirements. This is achieved by software variability, which allows one to customize components for the use in a particular context. It enables cost efficient mass customization of components. In this work, a pattern based approach is presented which provides this software variability for the Peer Model, a programming model for modelling highly concurrent and distributed systems. Patterns are introduced as new components and their interrelations with the original components are described. Similar to the software product line approach, design decisions are delayed and fixed only when concrete instances are created. The pattern concept allows defining generic patterns depending on certain parameters or properties which represent these delayed decisions. Such decisions are not limited to minor effects; the variability allows for a far-reaching influence on the functionality provided by the pattern and thus, it opens up the possibility for reuse on a large scale. Moreover, as composition is heavily used, patterns can be combined and nested to form more complex patterns and to encapsulate functionality. The advantages of this approach are demonstrated by an example use case from the train traffic telematics domain where signals of approaching trains are transferred from a sensor over multiple network nodes to a level crossing unit. Various modelling concepts and tools ranging from more low-level to highly abstract approaches are selected and with each of them, the example use case is realized. In order to create a meaningful evaluation, a set of criteria is developed, emphasizing elements which are important for the design of highly distributed and concurrent systems and essential for the aspired-to variability. The final evaluation shows that the Peer Model, extended with the pattern concept, stands out from the other approaches in the domain of distributed and highly concurrent systems. Moreover, systems designed with the Peer Model can be adapted to changing requirements without modifying the underlying architectural design and thus, cost- and time-intensive remodelling and refactoring work can be avoided.