292 research outputs found

    Evolution und Komposition von Softwaresystemen: Software-Produktlinien als Beitrag zu Flexibilität und Langlebigkeit

    Get PDF
    Software systems are today bigger, more complex and of higher importance for products and services than a decade before. At the same time changes are required many more frequently and of a larger size. Furthermore, they have to be implemented faster. Additionally, the software must achieve a higher life span, particularly because of the cost of its development. In the past, Object-Oriented Programming and Reuse techniques did not provide the expected success. The introduction of software product lines respectively system families makes possible it to reach a degree of prefabrication similar to the one of serial production. At the same time they facilitate the delivery of product variants with a short time to market. In this work methods of the methods of domain analysis are integrated with Reuse approaches and techniques of Generative Programming, and a methodology for product line development is presented. Feature models are used as means expressing variability and product configurations, so that the prefabrication be planned and the production of customer-specific products can be controlled. By enforcing the formalization in terms of syntax and semantics, feature models are made accessible to tools and automation. Object-oriented design models and architecture are separated into fine-granular components in such a way that new products can easily be developed as combinations of those components. The implementation of such products is automated by the composition of source code components. The composition of object models separated similarly enables a uninterrupted automation for the product development, which is controlled by a customer by means of a feature selection. To facilitate such a composition, the Hyperspace approach is applied to UML to Hyper/UML, which makes possible a feature-driven separation and composition of object models. In this way slim products can be developed, containing only the actually needed functionality. For the evolution of product lines and for the integration of existing solutions and components into the evolution, Reverse Engineering and Refactoring techniques are integrated. Requirements, models and implementation are connected by Traceability links to perform changes consistently. As a consequence, the loss of architectural quality - so-called Architectural Decay - can be avoided during the iterative development process. Measures for the improvement of the project and quality management are regarded briefly, as far as they are of importance for the effectiveness of the developed methods. The applicability and suitability of the results of the work were examined in several industrial projects.Softwaresysteme sind heute umfangreicher, komplexer und von entscheidenderer Bedeutung für Produkte und Dienstleistungen als eine Dekade zuvor. Gleichzeitig sind Änderungen viel häufiger und in größerem Umfang erforderlich. Sie müssen auch schneller realisierbar sein. Zudem muss die Software eine höhere Lebensdauer erreichen, vor allem wegen des Aufwandes zu ihrer Entwicklung. Objektorientierte Programmierung und Wiederverwendungstechniken haben dabei nicht den erwarteten Erfolg gebracht. Die Einführung von Software-Produktlinien beziehungsweise Systemfamilien ermöglichen es, einen der Serienfertigung ähnlichen Vorfertigungsgrad zu erreichen und erlauben es gleichzeitig, kurzfristig Produktvarianten zu erstellen. In dieser Arbeit werden Methoden der Domänenanalyse mit Wiederverwendungsansätzen und Generativen Programmiertechniken verknüpft und eine Methodik zur Produktlinien-Entwicklung vorgestellt. Featuremodelle werden als Ausdrucksmittel für Variabilität und Produktkonfigurationen eingesetzt, damit die Vorfertigung geplant und die Erstellung von kundenspezifischen Produkten gesteuert werden kann. Durch Präzisierung ihrer Syntax und Erweiterung ihrer Semantik werden Featuremodelle einer Nutzung in Werkzeugen zugänglich gemacht. Objektorientierte Entwurfsmodelle und Architektur werden so in feingranulare Komponenten zerlegt, dass Varianten als neue Produkte mit geringem Aufwand erstellbar sind. Die Erstellung der Implementierung solcher Produkte wird durch die Komposition von Quelltext-Komponenten automatisiert. Die Komposition von ebenfalls zerlegten Objektmodellen ermöglicht eine durchgehende Automatisierung der Produkterstellung, die durch einen Kunden mittels der Feature-Auswahl gesteuert wird. Dafür wird mit Hyper/UML eine Umsetzung des Hyperspace-Ansatzes auf die Modellierungssprache UML entwickelt, die eine Feature-gesteuerte Zerlegung und Komposition von Objektmodellen ermöglicht. Damit lassen sich schlanke Produkte entwickeln, die nur die tatsächlich benötigte Funktionalität enthalten. Zur Evolution von Produktlinien und zur Einbindung existierender Lösungen und Komponenten in die Evolution werden Reverse-Engineering- und Refactoring-Techniken integriert. Anforderungen, Modelle und Implementierung werden durch Traceability-Links verbunden, damit Änderungen konsistent durchgeführt werden können. Diese Mittel tragen dazu bei, dass während einer iterativen Entwicklung der Verlust an Architektur-Qualität, das sogenannte Architectural Decay, vermieden werden kann. Maßnahmen zur Verbesserung des Projekt- und Qualitätsmanagements werden kurz betrachtet, soweit sie wichtige Randbedingungen für die Wirksamkeit der Methoden schaffen müssen. Die Anwendbarkeit und Eignung der Ergebnisse der Arbeiten wurde in mehreren industriellen Projekten überprüft.Ilmenau, Techn. Univ., Habil.-Schr., 200

    Eine Methode zur kollaborativen Anforderungserhebung und entscheidungsunterstützenden Anforderungsanalyse

    Full text link
    Gegenstand dieses Beitrags ist die Entwicklung einer theoretisch fundierten Methode für eine kollaborative Anforderungserhebung mitsamt entscheidungsunterstützender Anforderungsanalyse

    Von der Industrie lernen - Steuerung der IT nach industriellen Maßstäben

    Get PDF

    Generative und Merkmal-orientierte Entwicklung von Software-Produktlinien mit noninvasiven Frames

    Get PDF
    Frames sind parametrisierte Elemente zur Erzeugung von Programmen in einer beliebigen Zielprogrammiersprache. Ihre Handhabung ist einfach und schnell zu erlernen. Allerdings findet bei Verwendung von Frames eine “Verunreinigung” des Programmcodes, der als Basis für die Generatorentwicklung dient, mit Befehlen der Generatorsprache statt. Dies erschwert die Weiterverwendung der gewohnten Entwicklungsumgebung für die Zielprogrammiersprache. Eine eventuelle Weiterentwicklung der Programmbasis muss anschließend in Form von Frames erfolgen. Im Rahmen dieser Arbeit erfolgt die Beschreibung noninvasiver Frames, bei denen Informationen zur Position der Frames getrennt vom Programmcode aufbewahrt werden. Ihre Vermischung erfolgt in einem separaten Schritt zur Darstellung oder zur eigentlichen Codeerzeugung. Der Prozess der Generatorentwicklung auf der Basis noninvasiver Frames passt sich gut in die Prozesse von Merkmal-orientierter (FOSD) und Generativer Softwareentwicklung (GSE) ein, weil noninvasive Frames die automatisierte Prüfung aller mit dem Generator erzeugbaren Programme hinsichtlich Syntax und bestimmter semantischer Eigenschaften unterstützen und die Generierung durch Auswahl der gewünschten Programmeigenschaften ermöglichen. Die Machbarkeit der Entwicklung von Softwaregeneratoren mit noninvasiven Frames wird anhand zweier Fallstudien demonstriert

    Mapping-basierte Modellierung von Softwareproduktlinien

    Get PDF

    Systemorientierung in der modellbasierten modularen E/E-Architekturentwicklung

    Get PDF
    In modernen Kraftfahrzeugen wird heute für fast jede neue Funktionalität verteilte Software eingesetzt. Sie kommt auf E/E-Komponenten zur Ausführung und ist damit Teil von verteilten Elektrik/Elektronik (E/E)-Systemen, die eine Kunden- oder eine technische Funktionalität erbringen. Durch die Zunahme der verteilten Software-basierten Fahrzeugfunktionen ist heute die Kontrolle der Komplexität im Fahrzeug eine Kernherausforderung [54, 126]. Gleichzeitig müssen Fahrzeughersteller mit immer schnelleren Innovationszyklen umgehen [24, 54]. Es werden Plattform- und Modulstrategie-Ansätze mit dem Ziel eingesetzt, möglichst gemeinsame Komponenten über viele Fahrzeuge hinweg zu verwenden [168], der Komplexität zu begegnen und Entwicklungs-Zeit und -Kosten zu reduzieren [46]. In diesem Spannungsfeld ist insbesondere die E/E-Architektur des Fahrzeugs betroffen. Sie verbindet alle E/E-Komponenten der E/E-Systeme und ermöglicht deren Interaktion. E/E-Architekturen werden modelliert mit dem Ziel E/E-Architekturen zu entwerfen, zu bewerten, zu dokumentieren und abzusichern. Die E/E-Architekturmodellierung wird eingesetzt um eine möglichst optimale Lösung zu finden [69, 159], wobei sich die Entwurfskriterien oft diametral gegenüberstehen [171]. Bei der Auslegung der E/E-Architektur ist die Absicherung der Interaktion der E/E-Komponenten, die über Software und Hardware erfolgt, ausschlaggebend. Die E/E-Komponenten sind einerseits in E/E-Systemen und andererseits in E/E-Modulen der Modulstrategien organisiert. E/E-Module werden durch die Modulstrategien in der mechanischen Fahrzeugentwicklung als Teil eines vereinfachten, schnelleren Produktionsprozess definiert und weiterentwickelt. Die Evolution (Weiterentwicklung) der E/E-Module wird in den Modulstrategien ausschließlich Hardware-orientiert, d.h. ohne Betrachtung der Software und Auswirkung auf diese durchgeführt. Für die E/E-Architektur wird die Interaktion der Software heute lediglich nach Best Engineering Practice bewertet und wird somit ohne durchgängigen Prozess, Werkzeugunterstützung und Methodik durchgeführt. Damit sind sobald die Software mit einbezogen wird die \og Ziele, die mit der E/E-Architekturmodellierung verfolgt werden, heute nicht umsetzbar. Diese Arbeit hat das Ziel, die Herausforderungen für die zukünftige E/E-Architekturauslegung in diesem Spannungsfeld zu identifizieren und ein Lösungskonzept anzubieten. Dafür wird ein neuer systemischer Ansatz verfolgt. Es wird für die E/E-Architekturmodellierung untersucht, wie E/E-Systeme und E/E-Module einbezogen und die Evolution von E/E-Systemen einschließlich der E/E-Module durchgeführt werden kann. Als Lösungskonzept wird mit dieser Arbeit das E/E-System Produktlinien Engineering vorgestellt. Das Konzept wird im industriellen Umfeld ausgearbeitet und löst den heutigen modulorientierten Ansatz ab. Dabei wird der heutige Ansatz um Funktionen und E/E-Systeme erweitert und die Abhängigkeiten zwischen den Funktionen, E/E-Modulen und E/E-Systemen erfasst. Dadurch wird eine effiziente und modellübergreifende Wiederverwendung von E/E-Systemen ermöglicht. Zudem wird auf Methoden der Software-Entwicklung zurückgegriffen um die Evolution von E/E-Systemen zu realisieren: Zweigeteilt wird hierbei über eine neue Modellierungsebene eine Bewertung einer Evolution im E/E-Architekturmodell vorgenommen und mit einem neuen Modell für die Funktionen eine Umsetzung der Evolution im E/E-Architekturmodell ermöglicht. Für das E/E-System Produktlinien Engineering werden Anwendungsfälle erarbeitet und prototypisch im Werkzeug für die E/E-Architekturmodellierung PREEvision implementiert. Mit einer praktischen Fallstudie werden die Anwendungsfälle evaluiert. Mit den Konzepten dieser Arbeit werden erstmals die Ziele für die E/E-Architekturmodellierung nicht nur für die Hardware erreicht sondern eine vollständige Betrachtung eines E/E-Systems einschließlich der funktionalen Anteile (Software) realisiert. Ein weiterer Beitrag dieser Arbeit ist eine Steigerung der Modellierungseffizienz für fast alle Anwendungsfälle. Insgesamt wird das E/E-System Produktlinien Engineering in einem industriellen Kontext im Geschäftsbereich Mercedes-Benz Cars der Daimler AG erarbeitet und evaluiert. Es werden konkrete Fragestellungen und Probleme aus der Praxis der E/E-Architekturentwicklung für Kraftfahrzeuge behandelt und E/E-Systeme und Szenarien aus der E/E-Architektur-Domäne Chassis/Fahrerassistenz herangezogen. Produktiv eingesetzt werden einige Konzepte des E/E-System Produktlinien Engineerings im E/E-Plattform-Entwicklungsprojekt STAR3, das die nächste Generation der Mercedes-Benz S-Klasse und nachfolgender Kraftfahrzeuge bei Mercedes-Benz Cars umfasst

    Semi-Automatische Deduktion von Feature-Lokalisierung während der Softwareentwicklung: Masterarbeit

    Get PDF
    Despite extensive research on software product lines in the last decades, ad-hoc clone-and-own development is still the dominant way for introducing variability to software systems. Therefore, the same issues for which software product lines were developed in the first place are still imminent in clone-and-own development: Fixing bugs consistently throughout clones and avoiding duplicate implementation effort is extremely diffcult as similarities and differences between variants are unknown. In order to remedy this, we enhance clone-and-own development with techniques from product-line engineering for targeted variant synchronisation such that domain knowledge can be integrated stepwise and without obligation. Contrary to retroactive feature mapping recovery (e.g., mining) techniques, we infer feature-to-code mappings directly during software development when concrete domain knowledge is present. In this thesis, we focus on the first step towards targeted synchronisation between variants: the recording of feature mappings. By letting developers specify on which feature they are working on, we derive feature mappings directly during software development. We ensure syntactic validity of feature mappings and variant synchronisation by implementing disciplined annotations through abstract syntax trees. To bridge the mismatch between change classification in the implementation and abstract layer, we synthesise semantic edits on abstract syntax trees. We show that our derivation can be used to reproduce variability-related real-world code changes and compare it to the feature mapping derivation of the projectional variation control system VTS by Stanciulescu et al.Trotz umfangreicher Forschung zu Software-Produktlinien in den letzten Jahrzehnten ist Clone-and-Own immer noch der dominierende Ansatz zur Einführung von Variabilität in Softwaresystemen. Daher stehen bei Clone-and-Own immer noch die gleichen Probleme im Vordergrund, für die Software-Produktlinien überhaupt erst entwickelt wurden: Die konsistente Behebung von Fehlern in allen Klonen und die Vermeidung von doppeltem Implementierungsaufwand sind äußerst schwierig, da Ähnlichkeiten und Unterschiede zwischen den Varianten unbekannt sind. Um hier Abhilfe zu schaffen, erweitern wir die Clone-and-Own-Entwicklung mit Techniken aus der Produktlinien-Entwicklung zur gezielten Synchronisierung von Varianten, sodass Entwickler ihr Domänenwissen schrittweise und unverbindlich integrieren können. Im Gegensatz zu nachträglich arbeitenden Feature-Mapping-Recovery- oder auch Mining-Techniken, leiten wir Zuordungen von Features zu Quellcode direkt während der Softwareentwicklung ab, wenn konkretes Domänenwissen vorhanden ist. In dieser Arbeit entwickeln wir den ersten Schritt zur gezielten Synchronisation von Varianten: die Aufzeichnung von Feature-Mappings. Indem Entwickler spezifizieren an welchem Feature sie arbeiten, leiten wir Feature-Mappings direkt während der Softwareentwicklung ab. Wir stellen die syntaktische Korrektheit von Feature-Mappings und der Synchronisation von Varianten sicher, indem wir disziplinierte Annotationen mithilfe von abstrakten Syntaxbäumen implementieren. Um die Diskrepanz der Klassifizierung von Änderungen zwischen der Implementierungs- und der Abstraktionsschicht zu überbrücken, synthetisieren wir Semantic Edits auf abstrakten Syntaxbäumen. Wir zeigen, dass unsere Ableitung von Feature-Mappings in der Lage ist reale Codeänderungen zu reproduzieren und vergleichen sie mit der Feature-Mapping-Ableitung des Variationskontrollsystems VTS von Stanciulescu et al

    Co-Konfiguration von Hardware- und Systemsoftware-Produktlinien

    Get PDF
    Hardwarearchitekturen im Kontext von Eingebetteten Systemen werden immer komplexer und bewegen sich zukünftig immer häufiger in Richtung von Multi- oder Manycore-Systemen. Damit diese Systeme ihre optimale Leistungsfähigkeit – für die oftmals speziellen Aufgaben im Kontext von Eingebetteten Systemen – ausspielen können, beschäftigen sich ganze Forschungszweige mit der anwendungsspezifischen Maßschneiderung dieser Systeme. Insbesondere die Popularität von Hardwarebeschreibungssprachen trägt dazu ihren Teil bei. Jedoch ist die Entwicklung von solchen Systemen, selbst bei der Verwendung von Hardwarebeschreibungssprachen und der damit verbundenen höheren Abstraktionsebene, aufwendig und fehleranfällig. Die Verwendung von Hardwarebeschreibungssprachen lässt allerdings die Grenze zwischen Hard- und Software verschwimmen, denn Hardware kann nun – ähnlich wie auch Software – in textueller Form beschrieben werden. Dies eröffnet Möglichkeiten zur Übertragung von Konzepten aus der Software- auf die Hardwareentwicklung. Ein Konzept um der wachsenden Komplexität im Bereich der Softwareentwicklung zu begegnen, ist die organisierte Wiederverwendung von Komponenten, wie sie in der Produktlinienentwicklung zum Einsatz kommt. Inwieweit sich Produktlinienkonzepte auf Hardwarearchitekturen übertragen lassen und wie Hardware-Produktlinien entworfen werden können, soll in dieser Arbeit detailliert untersucht werden. Die Vorteile der Produktlinientechniken, wie die Möglichkeit zur Wiederverwendung von erprobten und zuverlässigen Komponenten, könnten so auch für Hardwarearchitekturen genutzt werden, um die Entwicklungskomplexität zu reduzieren und so mit erheblich geringerem Aufwand spezifische Hardwarearchitekturen entwickeln zu können. Zudem kann durch die gemeinsame Codebasis einer Produktlinie eine schnellere Markteinführungszeit unter geringeren Entwicklungskosten realisiert werden. Auf Basis dieser neuen Konzepte beschäftigt sich diese Arbeit zudem mit der Fragestellung, wie zukünftig solche parallelen Systeme programmiert und automatisiert optimiert werden können, um den Entwickler von der Anwendung über die Systemsoftware bis hin zur Hardware mit einer automatisierten Werkzeugkette bei der Umsetzung zu unterstützen. Im Fokus stehen dabei die in dieser Arbeit entworfenen Techniken zur durchgängigen Konfigurierung von Hardware und Systemsoftware. Diese Techniken beruhen im Wesentlichen auf den Programmierschnittstellen zwischen den Schichten, deren Zugriffsmuster sich statisch analysieren lassen. Die so gewonnenen Konfigurationsinformationen lassen sich dann zur automatisierten Maßschneiderung der Systemsoftware- und Hardware-Produktlinie für ein spezifisches Anwendungsszenario nutzen. Die anwendungsspezifische Optimierung der Systeme wird in dieser Arbeit mittels einer Entwurfsraumexploration durchgeführt. Der Fokus der Entwurfsraumexploration liegt allerdings nicht allein auf der Hardwarearchitektur, sondern umfasst ebenso die Softwareebene. Denn neben der Maßschneiderung der Systemsoftware, wird auch die auf einer parallelen Programmierschnittstelle aufsetzende Anwendung innerhalb der Entwurfsraumexploration automatisch skaliert, um die Leistungsfähigkeit von Manycore-Systemen ausschöpfen zu können
    corecore