Höß, O.O.Höß2022-03-072022-03-072005https://publica.fraunhofer.de/handle/publica/276055Software spielt eine immer größere Rolle in den Wertschöpfungsketten der Unternehmen. Auch die Wertschöpfungsprozesse von in Deutschland traditionell starken Branchen, wie dem Maschinenbau oder der Elektrotechnik, werden in einem immer stärkeren Maße von Software beeinflusst. Dies geschieht vor allem in Form von prozessunterstützenden Systemen, Steuerungssoftware oder Embedded Software. Für die Unternehmen wird es aufgrund dieser gesteigerten Bedeutung von Software immer wichtiger, die Potenziale zu nutzen, die durch die effiziente Entwicklung und den effizienten Einsatz der Software realisiert werden können. An die Systeme selbst resultieren aus dieser zentralen Rolle hohe Anforderungen hinsichtlich Entwicklungsdauer, Entwicklungskosten, Qualität sowie Flexibilität. Laut dem CHAOS-Report 2003 der Standish Group können jedoch nur 34% der Software-Entwicklungsp¬rojekte als Erfolg gewertet werden. 51% der Projekte überziehen das Zeit oder Kostenbudget bzw. erfüllen nicht alle funktionalen Anforderungen und 15% der Projekte werden vorzeitig abgebrochen. Die komponentenbasierte Software-Entwicklung ist der derzeit wichtigste Ansatz zur Bewältigung dieser Herausforderungen. Die Wiederverwendung von bereits bestehenden Software-Komponenten ist dabei der wesentliche Erfolgsfaktor bei der Umsetzung dieses Entwicklungsparadigmas. Trotz der Existenz von standardisierten Komponenten-Technologien, wie z.B. J2EE und .NET, die die Wiederverwendung von Komponenten auf technischer Ebene unterstützen, bestehen noch eine Reihe von Hemmnissen im personen- und unternehmensbezogenen sowie unternehmensübergreifenden Umfeld. Das wesentliche Hemmnis ist dabei der Mangel einer geeigneten Werkzeugunterstützung für das Wiederverwendungs-Management von Software-Komponenten. Zielstellung der vorliegenden Arbeit ist daher die Konzeption und Realisierung eines Komponenten-Repositories, d.h. eines Systems zur Speicherung und Verwaltung der in einem Unternehmen existierenden Software-Komponenten zum Zweck der Wiederverwendung. Der wesentliche Kern der Arbeit ist dabei die Definition und Umsetzung einer integrierten Dienstearchitektur für das Repository, die neben den Basisdiensten für das Einstellen und Suchen von Komponenten neuartige Mehrwertdienste beinhaltet. Beispiele für Mehrwertdienste sind Benachrichtigungsmechanismen, Verwendungsnachweise, ein Anreizsystem sowie ein Kennzahlensystem für das Controlling der wiederverwendungsorientierten Softwareentwicklungsprozesse. Diese Mehrwertdienste beinhalten einen Zusatznutzen für die Anwender und steigern somit den Wert und die Akzeptanz des Systems. Bereits bestehende Ansätze und Produkte konzentrieren sich vor allem auf die Basisfunktionalitäten, wie z.B. komplexe Suchfunktionalitäten, ohne die Mehrwertdienste, die den eigentlichen Zusatznutzen für die Anwender bilden, zu berücksichtigen. Ergänzend zu der Dienstearchitektur wird eine Klassifikations- und Spezifikationsmethodik definiert, um die im Repository gespeicherten Komponenten nach einem einheitlichen Schema zu klassifizieren und zu beschreiben. Dabei wird auf die bewährten Industriestandards XML und UML aufgesetzt. Der erfolgreiche Einsatz des Repositories bedingt auch Anpassungen der Entwicklungsprozesse sowie der Organisationsstrukturen eines Unternehmens. Daher werden im Rahmen der Arbeit die notwendigen wiederverwendungsrelevanten Aktivitäten für eine Anpassung der Entwicklungsprozesse sowie die Konzepte für eine Anpassung der Organisationsstrukturen definiert. Ergänzt werden diese um eine Einführungsstrategie, mit der eine schrittweise Umsetzung der beschriebenen Konzepte ermöglicht wird. Zur Validierung der Konzepte wird ein Komponenten-Repository implementiert, das die definierte Dienstearchitektur, insbesondere die Mehrwertdienste, umsetzt und praktisch erprobt. Bei der Realisierung des Repositories werden dabei selbst wiederum Komponenten-Technologien aus dem J2EE-Umfeld eingesetzt. Zur weiteren Erprobung der Konzepte werden diese in drei Anwendungsfällen, bei der Entwicklung von Erkennungssystemen, von Anwendungen für technische Prüforganisationen sowie von Steuergerätesoftware, umgesetzt. Dabei können sowohl qualitative als auch quantitativ messbare Verbesserungen, z.B. eine um über 50% reduzierte Entwicklungszeit für einzelne Komponenten, festgestellt werden. Die Arbeit schließt mit einer zusammenfassenden Betrachtung und einem Ausblick auf zukünftige Entwicklungen. Insgesamt liefert die Arbeit einen wesentlichen Beitrag zur Verbesserung der Softwareentwicklungsprozesse in technischen Anwendungsfeldern, indem ein System definiert wird, das das Wiederverwendungs-Management von Software-Komponenten unterstützt und somit die Effizienz und Qualität in der Softwareentwicklung steigert.Software plays a steadily increasing role in the value creation chain of today's companies. Due to this high impact of software it becomes more and more necessary to enhance the process of developing and operating software solutions. At the present time component-based software development is one of the most promising approaches to meet this challenge. The reuse of existing components is the key success factor in implementing this development paradigm. However, despite the existence of component technologies like J2EE or .NET, which facilitate the reuse of software components on a technical level, a lot of obstacles are based on non-technical issues. The main aspect is the lack of tool support for managing the reuse of software components which is especially impedimental for developing software in distributed teams. This thesis therefore had the objective of designing and implementing a component repository for storing and managing software components with the focus on increasing the level of component reuse. The thesis defines a framework of services for the component repository which comprises basic services for uploading and retrieving components including versioning and release management. In addition to these basic services which are already partially implemented in currently available products the thesis focuses on the definition of value-added services which offer additional benefits to the users of the system and thus increase the acceptance of the component repository. Examples for valueadded services are notification mechanisms, reuse references, incentive systems and the recording of performance indicators. In addition to the service framework the thesis defines a classification scheme and a specification method based on the industry standards XML und UML in order to enable the uniform description of the components stored in the repository. To successfully establish a central component repository in an existing organization the development processes and organizational structures have to be adopted to support component reuse. In the context of this thesis the relevant activities, roles and skills for performing this organizational transition are described and complemented with a step-by-step rollout strategy. In order to validate the concepts developed in the thesis a web-based component repository implementing the basic and value-added services was realized using J2EE technologies and open source components. A further validation was conducted by applying the concepts in three use cases in different areas: the development of automotive software, the development of text recognition systems and the development of applications for technical surveillance organizations. The thesis concludes with summarizing considerations and an outlook on future developments regarding software reuse.dekomponentenbasierte SoftwareentwicklungWiederverwendungsoftware reuseSoftwarekomponenteWissensmanagementSoftware670Ein System für das Wiederverwendungs-Management von Software-KomponentenA system for managing the reuse of software componentsdoctoral thesis