FAQ
© 2019 Staats- und Universitätsbibliothek
Hamburg, Carl von Ossietzky

Öffnungszeiten heute09.00 bis 24.00 Uhr alle Öffnungszeiten

Eingang zum Volltext in OPUS

Hinweis zum Urheberrecht

Dissertation zugänglich unter
URN: urn:nbn:de:gbv:18-97346
URL: http://ediss.sub.uni-hamburg.de/volltexte/2019/9734/


Acquiring Architecture Knowledge for Technology Design Decisions

Erfassung von Architekturwissen für Technologieentwurfsentscheidungen

Soliman, Mohamed Aboubakr Mohamed

pdf-Format:
 Dokument 1.pdf (8.195 KB) 
zip gepackt:
 CD.zip (18,210 KB) 


Freie Schlagwörter (Deutsch): Softwaretechnik , Softwarearchitektur , Entwurfsentscheidung , Wissensmanagement , wissenserfassung
Freie Schlagwörter (Englisch): software engineering , software architecture , design decision , knowledge management , knowledge capturing
Basisklassifikation: 54.52
Institut: Informatik
DDC-Sachgruppe: Informatik
Dokumentart: Dissertation
Hauptberichter: Riebisch, Matthias (Prof. Dr.)
Sprache: Englisch
Tag der mündlichen Prüfung: 02.04.2019
Erstellungsjahr: 2019
Publikationsdatum: 24.05.2019
Kurzfassung auf Deutsch: In der heutigen Zeit spielt Software eine wichtige Rolle unser Leben. Eine nützliche Software mit guter Qualität hat einen großen Einfluss auf unsere tägliche Arbeit. Dabei haben Architekturentscheidungen einen großen Einfluss auf die Qualität eines Softwaresystems. Die Softwarearchitektur ist das Ergebnis der Auswahl verschiedener Softwarearchitekturlösungen entwickelt. Die Komplexität, Vielfalt und Evolution von Architekturlösungen zwingt Softwareingenieure jedoch dazu, kritische Entwurfsentscheidungen nur aufgrund ihrer eigenen Erfahrung zu treffen. Dies führt häufig zu falschen oder suboptimalen Entwurfsentscheidungen. Damit Softwareingenieure unterstützt werden, die richtigen Entwurfsentscheidungen zu treffen, ist es erforderlich, das Architekturwissen, das verschiedene Architekturlösungen, ihre Beziehungen und Unterscheidungen umfasst, zu erfassen.
Entscheidungen zur Technologieauswahl sind eine der am häufigsten auftretenden Arten von Architekturentscheidungen, die sich auf mehrere Qualitätsattribute einer Softwarearchitektur auswirken. Die Anzahl der verfügbaren Technologieoptionen hat erheblich zugenommen, was technologische Entscheidungen schwieriger macht. Aktuelle Ansätze des Architekturwissensmanagements versuchen, Architekten zu unterstützen, indem sie eine reichhaltige Basis an Architekturlösungen anbieten. Diese Ansätze des Architekturwissensmanagements hängen jedoch von der manuellen Erfassung von Wissen über Architekturlösungen ab. Die Qualität von relevantem und wiederverwendbarem Wissen zu erhalten und zu bewerten erfordert einen erheblichen manuellen Wartungsaufwand, der mit dem schnellen Fortschritt der Änderung von Technologien nur schwer umsetzbar ist.
Das in dieser Dissertation behandelte Gesamtproblem besteht darin, die Erfassung von relevantem Architekturwissen zu erleichtern, um Entscheidungen zum Technologieentwurf treffen zu können. Wir haben dieses Problem gelöst, indem wir drei Hauptziele erreicht haben: Erstens verstehen wir die Technologieentscheidungen in der Praxis. Dies sichert die Durchführbarkeit unserer Lösungen zur Wissensgewinnung. Zweitens erkunden wir Developer-Communities nach Architekturwissen. Developer-Communities enthalten eine enorme Anzahl von Diskussionen zwischen Softwareentwicklern. Drittens schlagen wir Lösungen vor, damit der Softwareingenieur effektiv nach relevanten Architekturinformationen in Developer-Communities suchen kann.
Um Technologieentscheidungen in der Praxis zu verstehen, haben wir erfahrene Softwareingenieure zu ihrem Entscheidungsprozess befragt. Softwareingenieure betrachten bestimmte Technologieaspekte als ihren Hauptfaktor, damit sie Entscheidungen zum Softwareentwurf treffen können. Diese Aspekte unterscheiden Technologien voneinander. Während Technologieanbieter Technologielösungen als eine Reihe von Funktionen beschreiben, diskutieren Softwareingenieure die Unterschiede zwischen Technologien in Entwicklergemeinschaften. Als Ergebnis unserer Interviews haben wir bestehende Architekturwissensmodelle mit zusätzlichen Konzepten für Technologieentscheidungen erweitert. Das Modell kennzeichnet Technologieentscheidungen und ihre Argumentation.
Aktuelle Ansätze für das Management von Architekturwissen hängen von Wissensbasen ab, die viel Aufwand erfordern, um Wissen zu sammeln, zu füllen und zu pflegen. Daher haben wir die bekannteste Community (StackOverflow) als mögliche Quelle für Architekturwissen untersucht. Wir haben verschiedene Arten von architekturrelevanten Beiträgen gefunden, die das Design von Technologien und Komponenten identifizieren und bewerten. Damit wir sicherstellen können, dass wir relevante architekturrelevante Beiträge untersucht haben, haben wir unsere Klassifizierung von Beiträgen durch Feedback von Softwareingenineuren mit Erfahrung evaluiert, um den ersten Korpus von architekturrelevanten Beiträgen und die erste Ontologie für Architekturwissen in Entwicklergemeinschaften zu erstellen.
Zur Erleichterung der Suche nach Architekturinformationen in Online-Community haben wir Klassifizierungsansätze entwickelt und verglichen, um architekturrelevante Beiträge auf Stack Overflow zu identifizieren und zu klassifizieren. Die Klassifizierungsansätze stützen sich auf unsere vorgeschlagene Ontologie von Architekturkonzepten und ermöglichen daher die Erfassung von semantischen Informationen in StackOverflow, damit sich der Softwareingenieur nur auf das Keyword-Matching und lexikalischen Informationen verlassen muss. Darüber hinaus stellen wir einen neuartigen Ansatz zur Suche nach architekturrelevanten Informationen in StackOverflow vor. Wir haben diesen Ansatz in einer webbasierten Suchmaschine implementiert und deren Effektivität mit einer reinen Keyword-basierten Suche in einer Reihe von Softwareentwurfsaufgaben verglichen, die an Softwareingenieure gegeben wurden. Unsere Ergebnisse zeigen, dass die Effektivität der Suche im Vergleich zu einer herkömmlichen Keyword basierten Suche einen deutlichen Fortschritt zeigt.
Kurzfassung auf Englisch: Software became an essential and important part of our life. A useful software with a high quality has bigger influence on our daily activity. Architectural design decisions have a big influence on the quality of a software system, and are difficult to change once implemented. Software architecture is developed as a result of selecting several software architectural solutions. However, the complexity, diversity and evolution nature of architectural solutions force software engineers to make critical design decisions based only on their own experience. This could lead to wrong or sub-optimal design decisions. In order to support software engineers to take the right design decisions, assistance is required for exploring the architectural knowledge, which encompasses various architectural solutions, their relationships and distinctions.
Technology design decisions are one of the most frequently occurring types of architectural decisions, which impact several quality attributes of a software architecture. In the past decades, the number of available technology options has increased significantly, which make technology decisions harder to take. Current architecture knowledge management approaches try to support architects by offering a rich base of architectural solutions, decision factors, and rules. However, current architecture knowledge management approaches depend on manually capturing knowledge about decisions and architectural solutions. Obtaining and evaluating the quality of relevant and reusable knowledge requires significant manual maintenance effort, which is not feasible with the fast pace of advance in technological development.
The overall problem addressed in this dissertation is to facilitate acquiring relevant architectural knowledge to take technology design decisions. We addressed this problem by achieving three main goals: First, we understand technology design decisions in practice. This ensures the practicability of our knowledge capturing solutions. Second, we explore developer communities for architecture knowledge. Developer communities contain an enormous amount of discussions between software engineers, which could be a reliable and an effective source of architecture knowledge. Third, we propose solutions to effectively search for relevant architectural information in developer communities.
To understand technology design decisions in practice, we interviewed practitioners and asked them about their decision making process. Based on the interviews with practitioners, we found that software engineers consider certain technology aspects as their main factor to take technology design decisions. These aspects differentiate technologies from each other. While technology vendors describe technology solutions as a set of features, software engineers discuss the differences between technologies in developer communities. As a result from our interviews, we extended existing architecture knowledge models with additional concepts for technology design decisions.
Current approaches for architecture knowledge management depend on knowledge repositories, which requires much effort to gather, populate and maintain knowledge. Therefore, we explored the most popular software development community (StackOverflow) as a source of architectural knowledge. We analysed posts in Stack Overflow to explore the type of architectural questions and solutions. We found different types of architecture relevant posts, which identify and evaluate technology features and components design. To ensure that we explore relevant architecture-relevant posts, we evaluated our classification of posts through feedback from practitioners to create the first corpus of architecture-relevant posts in developer communities, and the first ontology for architecture knowledge in developer communities. The ontology specifies the structure and textual representation of architecture knowledge concepts in developer communities. Moreover, the ontology is empirically grounded through qualitative analyses of different Stack Overflow posts, as well as inter-coder reliability tests.
To facilitate searching for architectural information in developer communities. We developed and compared in a series of experiments a set of classification approaches to identify and classify architecture-relevant posts on StackOverflow. The classification approaches rely on our proposed ontology of architectural concepts and therefore allow capturing semantic information in StackOverflow posts rather than only relying on keyword matching and lexical information. Furthermore, we present a novel approach to search for architecture-relevant information in Stack Overflow posts. We implemented this approach in a web-based search engine and compared its effectiveness to a pure keyword-based search in a series of tasks given to practitioners. Our results show that the effectiveness of searching has been improved significantly compared to a conventional keyword-based search.

Zugriffsstatistik

keine Statistikdaten vorhanden
Legende