4 research outputs found

    Mineração de questões sobre o uso de expressões lambda em Java 8

    Get PDF
    Trabalho de Conclusão de Curso (graduação)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2018.Este trabalho apresenta um estudo sobre características presentes em perguntas relacionadas com o uso de expressões lambda em Java 8. Este estudo foi realizado através da mineração de perguntas e respostas do site Stack Overflow, de onde foram encontradas 1975 perguntas e 3974 respostas relacionadas com este tema. Estes dados foram usados para verificar como o interesse dos usuários do Stack Overflow em fazer estas perguntas variou ao longo do tempo e se essas perguntas costumam ser respondidas adequadamente. Foi feita também uma análise de sentimentos nestas perguntas e suas respostas para tentar verificar quais sentimentos são expressados pelos seus autores. Além disso foram procurados os principais tópicos abordados nestas perguntas e, para isso, foram selecionadas as 100 perguntas mais populares que foram lidas uma a uma. A leitura destas perguntas possibilitou não só ajudaram a identificar os tópicos mais populares, mais também pôde ser usada para complementar os resultados da análise de sentimentos.This work presents a study about features identified in questions about the usage of lambda expressions in Java 8. The study was done by means of mining questions and answers from the site Stack Overflow, from which were found 1975 questions and 3974 answers related to this theme. The aquired data was used to check how the interest in asking these questions changed with time, and whether this questions are answered successfully. Also, a sentiment analysis was done to try and see what sentiments are expressed by the authors of these questions and answers. Furthermore, the main topics addressed in these questions were looked for and to accomplish this, the 100 most popular questions were selected and read one by one. After reading these questions it was not only possible to better identify the most popular topics among the questions, it was also possible to complement the results of the sentiment analysis

    An Architecture-based Approach for Change Impact Analysis of Software-intensive Systems

    Get PDF
    A main property of software-intensive technical systems is sustainability. Sustainable systems need to change continuously. A change to a system element can result in further changes to other system elements. If these elements originate from different domains, the change can also propagate between several domains. This book presents an architecture-based approach to change propagation analysis of software-intensive technical systems that considers heterogeneous elements from different domain

    An Architecture-based Approach for Change Impact Analysis of Software-intensive Systems

    Get PDF
    Die vorliegende Dissertation präsentiert eine automatische domänenübergreifende Wartbarkeitsanalyse basierend auf der Architektur der Systeme, in deren Entwicklung und Evolution verschiedene Domänen zusammenarbeiten müssen. Eine der integralen Eigenschaften software-intensiver technischer Systeme ist ihre Langlebigkeit. Langlebige Systeme unterliegen kontinuierlichen Anpassungen aufgrund externer Änderungen, wie Änderungen ihrer Umgebung, oder auch interner Änderungen, wie zum Beispiel Fehlerbeseitigungen. Die Eigenschaft des Systems, die angibt, welcher Aufwand erforderlich ist, um ein System gemäß eines gegebenen Änderungsszenarios zu ändern, wird als Wartbarkeit bezeichnet. Somit ist Wartbarkeit ein wichtiges Qualitätsattribut langlebiger Systeme. Eine initiale Änderung an einem Element im System kann weitere Änderungen an anderen Systemelementen zur Folge haben. Stammen die betroffenen Systemelemente aus mehreren Domänen, wie zum Beispiel aus den Domänen der Informationssysteme, Geschäftsprozesse oder automatisierten Produktionssysteme, können sich die Änderungen auch über mehrere Domänen hinweg mit Abhängigkeiten in alle Richtungen ausbreiten. Ein automatisiertes Produktionssystem kann zum Beispiel aus mechanischen und elektrischen Bauteilen, sowie Steuerungssoftware bestehen. Eine Änderung an mechanischen und/oder elektrischen Bauteilen, wie zum Beispiel Sensoren, kann zu Folgeänderungen in der entsprechenden Steuerungssoftware führen. Zudem gibt es viele unterschiedliche Möglichkeiten, wie eine Änderungsanfrage in einem System umgesetzt werden kann. Verschiedene Möglichkeiten zur Umsetzung einer Änderungsanfrage können zu verschiedenen Änderungsaufwänden, sowie unterschiedlichen Systemen bezüglich ihrer Qualitätsattribute führen. Das Abschätzen der Änderungsfolgen hat deshalb besondere Relevanz im Entscheidungsprozess. Jedoch können manuelle Änderungsabschätzungen mit hohem Zeit- und Kostenaufwand verbunden sein. Somit kann eine automatische und domänenübergreifende Änderungsausbreitungsanalyse vor der Umsetzung einer Änderungsanfrage die Vorhersage der Änderungsaufwände und den Entscheidungsfindungsprozess zu deren Umsetzung unterstützen. Eine Möglichkeit zur automatischen Änderungsausbreitungsanalyse ist ein modell-, sowie szenariobasierter Ansatz zur Wartbarkeitsabschätzung, der Systeme aus mehreren Domänen berücksichtigt. Jedoch konzentrieren sich bestehende modellbasierte und szenariobasierte Ansätze meist auf die Änderungsausbreitung in einer Domäne und vernachlässigen Änderungsaufwände der Elemente aus Domänen, die in einer gegenseitigen Abhängigkeitsbeziehung zur betrachteten Domäne stehen. Dies führt zu einer unzureichenden Abschätzung der Änderungsauswirkungen. Die vorliegende Dissertation stellt eine generische Methode für eine automatische und domänenübergreifende Änderungsausbreitungsanalyse vor. Durch die Instanziierung der generischen Methode in verschiedenen Domänen kann ein vollständiger Ansatz zur automatischen Änderungsausbreitungsanalyse in der jeweiligen Domäne erstellt werden. Somit hat die generische Methode zum Ziel, den Entwicklungsprozess einer modellbasierten Änderungsausbreitungsanalyse durch die Wiederverwendung von bestehenden Konzepten zu verbessern. Die generische Methode basiert auf dem Karlsruhe Architectural Maintainability Prediction (KAMP) Ansatz zur Änderungsausbreitungsanalyse in Informationssystemen. Weitere Beiträge dieser Dissertation können wie folgt zusammengefasst werden: i) Software-Systeme sind integrale Bestandteile der Geschäftsprozesse moderner Unternehmen. Daher beeinflussen sich Software-Systeme und Geschäftsprozesse gegenseitig während der Evolution. Angesichts komplexer gegenseitiger Beeinflussung bietet der Ansatz als eine Instanz der generischen Methode und eine Erweiterung des KAMP-Ansatzes eine automatische Änderungsausbreitungsanalyse in den sich gegenseitig beeinflussenden Domänen der Informationssysteme und der Geschäftsprozesse. ii) Basierend auf Metamodellen zur Darstellung von mechanischen und elektrischen Teilen, als auch der Steuerungssoftware im Standard IEC 61131-3 für speicherprogrammierbare Steuerungen wurde ein weiterer Ansatz (ebenfalls als eine Instanziierung der generischen Methode) für die Domänen der automatisierten Produktionssysteme entwickelt. Mit dem Ansatz ist es möglich Änderungen über Systemelemente aus mehreren Sub-Domänen von automatisierten Produktionssystemen zu verfolgen, um eine umfassende Liste von Wartbarkeitsaufwänden zu erstellen. iii) Die Änderungsauslöser können sich entweder auf Architekturmodellebene oder auf Anforderungsebene befinden. Basierend auf Modellen zur Erfassung von Anforderungen und Entwurfsentscheidungen in der Domäne der Informationssysteme, Geschäftsprozesse, sowie automatisierten Produktionssysteme wurden die bestehenden Instanzen der generischen Methode zur Berücksichtigung von Anforderungsänderungen erweitert. Somit ergänzt dieser Beitrag die bisherigen Beiträge bezüglich der domänen-spezifischen Änderungsausbreitungsanalysen. iv) Die Änderungsausbreitung in den Instanzen der Methode wird durch Änderungsausbreitungsregeln betrachtet. Hierzu wurde eine domänenspezifische Sprache zum Beschreiben der häufig benutzten Änderungsausbreitungsregeln zur besseren Lesbarkeit der Regeln sowie zur Vermeidung von technischem Code vorgestellt. v) Weiter wurde ein mehrdimensionales Kategorisierungsschema für die Änderungsauslöser in Geschäftsprozessen basierend auf den Ergebnissen einer umfassenden Literaturrecherche vorgestellt. Die Beiträge dieser Dissertation zur automatischen Änderungsausbreitungsanalyse wurden anhand von Fallstudien in der jeweiligen Domäne evaluiert. Für jede Fallstudie wurde die Genauigkeit der Ergebnisse des jeweiligen Ansatzes im Vergleich zu manuell erstellten Ergebnissen angegeben. Zudem wurde die Aufwandsersparnis durch eine automatische Änderungsausbreitungsanalyse anhand des Vergleichs zweier Metriken gezeigt: i) Die erste Metrik repräsentiert die Rate der Anzahl der tatsächlich zu ändernden Modellelemente zur Anzahl der gesamten Modellelemente. ii) Die zweite Metrik repräsentiert die Rate der Anzahl der vom Ansatz vorgeschlagenen Modellelemente zur Anzahl der gesamten Modellelemente. Für die Validierung des Ansatzes zur automatischen Änderungsausbreitungsanalyse in den Domänen der Informationssysteme und der Geschäftsprozesse wurde basierend auf den Ergebnissen der systematischen Literaturrecherche zur Ermittlung der Änderungsauslöser in Geschäftsprozessen repräsentative Änderungsauslöserklassen identifiziert. Diese repräsentativen Änderungsauslöserklassen wurden jeweils auf die Community-Fallstudien "Common Component Modeling Example (CoCoME)" und "modular Rice University Bidding System (mRUBiS)" angewendet. Für die externe Validität der Methode wurde die Domäne der automatisierten Produktionssysteme betrachtet. Hierzu wurde die Instanz der Methode zur automatischen Änderungsausbreitungsanalyse in der Domäne der automatisierten Produktionssysteme auf die Community-Fallstudie "extended Pick and Place Unit (xPPU)" angewendet. Die betrachtete Anlage beinhaltet die elektrischen und mechanischen Bauteile sowie die Steuerungssoftware im Standard IEC 61131-3 für speicherprogrammierbare Steuerungen

    Eine agentenbasierte Architektur für Programmierung mit gesprochener Sprache

    Get PDF
    Sprachgesteuerte Computersysteme werden heutzutage von Millionen von Nutzern verwendet; Chatbots, virtuelle Assistenten, wie Siri oder Google Assistant, und Smarthomes sind längst fester Bestandteil des Alltags vieler Menschen. Zwar erscheinen derartige Systeme inzwischen intelligent; tatsächlich reagieren sie aber nur auf einzelne Befehle, die zudem bestimmte Formulierungen erfordern. Die Nutzer sind außerdem auf vorgefertigte Funktionalitäten beschränkt; neue Befehle können nur von Entwicklern einprogrammiert und vom Hersteller zur Verfügung gestellt werden. In Zukunft werden Nutzer erwarten, intelligente Systeme nach ihren Bedürfnissen anzupassen, das heißt programmieren zu können. Das in dieser Arbeit beschriebene System ProNat ermöglicht Endnutzer-Programmierung mit gesprochener Sprache. Es befähigt Laien dazu, einfache Programme für unterschiedliche Zielsysteme zu beschreiben und deren Funktionalität zu erweitern. ProNat basiert auf PARSE, einer eigens entworfenen agentenbasierten Architektur für tiefes Sprachverständnis. Das System ermöglicht die Verwendung alltäglicher Sprache zur Beschreibung von Handlungsanweisungen. Diese werden von ProNat als Programm für ein Zielsystem interpretiert, das eine Anwendungsschnittstelle zur Endnutzer-Programmierung anbietet. Bisherige Ansätze zur Programmierung mit natürlicher Sprache ermöglichen nur die Erzeugung kurzer Programme anhand textueller Beschreibungen. Da die meisten Systeme monolithisch entworfen wurden, können sie zudem nur mit großem Aufwand adaptiert werden und sind überwiegend auf die Anwendung einer Technik (z. B. maschinelles Lernen) sowie auf eine Anwendungsdomäne festgelegt (z. B. Tabellenkalkulation). Ansätze, die gesprochene Sprache verarbeiten, können hingegen bisher nur einzelne Befehle erfassen. Um die Restriktionen bisheriger Ansätze aufzuheben, wird eine neuartige Architektur entworfen. Die Kernkomponenten der Architektur PARSE bilden unabhängige Agenten, die je einen bestimmten Aspekt der natürlichen Sprache analysieren. Die Kapselung in unabhängige Agenten ermöglicht es, je Teilaspekt zum Verständnis der Sprache eine andere Technik zu verwenden. Die Agenten werden nebenläufig ausgeführt. Dadurch können sie von Analyseergebnissen anderer Agenten profitieren; unterschiedliche Sprachanalysen können sich so gegenseitig unterstützen. Beispielsweise hilft es, sprachliche Referenzen wie Anaphern aufzulösen, um den Kontext des Gesagten zu verstehen; manche Referenzen können wiederum nur mithilfe des Kontextes aufgelöst werden. Ihr Analyseergebnisse hinterlegen die Agenten in einer geteilten Datenstruktur, einem Graphen. Die Architektur stellt sicher, dass keine Wettlaufsituationen eintreten und nur gültige Änderungen am Graphen durchgeführt werden. Die Agenten werden so lange wiederholt ausgeführt, bis keine oder nur noch zyklische Änderungen eintreten. Neben den Agenten gibt PARSE die Verwendung von Fließbändern zur Vor- und Nachverarbeitung vor. Zudem können externe Ressourcen, wie Wissensdatenbanken oder Kontextmodellierungen, angeschlossen werden. Das System ProNat entsteht, indem konkrete Agenten und Fließbandstufen für die Rahmenarchitektur PARSE bereitgestellt werden. Zusätzlich werden Informationen über die Anwendungsdomäne (das heißt die Anwendungsschnittstelle des Zielsystems und gegebenenfalls eine Modellierung der Systemumgebung) in Form von Ontologien als externe Ressource angebunden. Eine gesprochene Äußerung wird von ProNat vorverarbeitet, indem zunächst das Audiosignal in eine textuelle Wortsequenz überführt wird. Anschließend erfolgt eine grundlegende syntaktische Analyse, bevor ein initialer Graph als Analysegrundlage für die Agenten erzeugt wird. Die Interpretation des Gesagten als Programm obliegt den Agenten. Es wurden sechzehn Agenten entwickelt, die sich in drei Kategorien unterteilen lassen: Erstens, Agenten, die allgemeine Sprachverständnis-Analysen durchführen, wie die Disambiguierung von Wortbedeutungen, die Auflösung von sprachlichen Referenzen oder die Erkennung von Gesprächsthemen. Zweitens, Agenten, die das Gesagte auf programmatische Strukturen, wie Anwendungsschnittstellenaufrufe oder Kontrollstrukturen, untersuchen; hierzu zählt auch ein Agent, der aus verbalisierten Lehrsequenzen Methodendefinitionen synthetisiert. Da die Agenten unabhängig voneinander agieren, kann zur Lösung der jeweiligen Problemstellung eine beliebige Technik eingesetzt werden. Die Agenten zur Erkennung von Kontrollstrukturen verwenden beispielsweise Heuristiken, die auf syntaktischen Strukturen basieren, um ihre Analysen durchzuführen. Andere Agenten, wie die Agenten zur Disambiguierung von Wortbedeutungen oder zur Bestimmung der Gesprächsthemen, verwenden Wikipedia, Wordnet oder ähnliche Quellen und inferieren anhand dieser Informationen. Zuletzt verwenden einige Agenten, wie beispielsweise der Agent zur Erkennung von Lehrsequenzen, maschinelles Lernen. Die Interpretation einer gesprochenen Äußerung erfolgt dementsprechend mittels einer Kombination von sowohl regel- als auch statistik- und wissensbasierten Techniken. Dank der strikten Trennung der Agenten können diese einzeln (und zumeist unabhängig voneinander) evaluiert werden. Hierzu wurden parallel zur Entwicklung der Agenten fortwährend mithilfe von Nutzerstudien realistische Eingabebeispiele gesammelt. Für jeden Agenten kann somit überprüft werden, ob er einen zufriedenstellenden Beitrag zur Interpretation des Gesagten beiträgt. Das gemeinschaftliche Analyseergebnis der Agenten wird in der Nachverarbeitung sukzessive in ein konkretes Programm übersetzt: Zunächst wird ein abstrakter Syntaxbaum generiert, der anschließend in Quelltext zur Steuerung eines Zielsystems überführt wird. Die Fähigkeit des Systems ProNat, aus gesprochenen Äußerungen Quelltext zu generieren, wurde anhand von drei unabhängigen Untersuchungen evaluiert. Als Datengrundlage dienen alle in den Nutzerstudien gesammelten natürlichsprachlichen Beschreibungen. Zunächst wurden für eine Online-Studie UML-Aktivitätsdiagramme aus gesprochenen Äußerungen generiert und 120 Probanden zur Bewertung vorgelegt: Der überwiegende Teil der Aktivitätsdiagramme (69%) wurde von der Mehrheit der Probanden als vollständig korrekt eingestuft, ein vielversprechendes Ergebnis, da die gesprochenen Äußerungen die Synthese von bis zu 24 Anweisungen (bzw. Aktivitäten) sowie Kontrollstrukturen erfordern. In einer zweiten Untersuchung wurde Java-Quelltext, bestehend aus Aufrufen einer Anwendungsschnittstelle zur Steuerung eines humanoiden Roboters, synthetisiert und mit einer Musterlösung verglichen: ProNat konnte Aufrufe meist korrekt erzeugen (F1: 0,746); auch die Synthese von Kontrollstrukturen gelingt in 71% der Fälle korrekt. Zuletzt wurde untersucht, wie gut ProNat anhand von natürlichsprachlichen Beschreibungen neue Funktionen erlernen kann: Verbalisierte Lehrsequenzen werden mit einer Genauigkeit von 85% in Äußerungen erkannt. Aus diesen leitet ProNat Methodendefinitionen ab; dabei gelingt es in über 90% der Fälle, einen sprechenden Methodennamen zu erzeugen. Auch der Aufruf der neu erlernten Funktion (durch natürlichsprachliche Anweisungen) gelingt mit einer Genauigkeit von 85%. Zusammengenommen zeigen die Untersuchungen, dass ProNat grundsätzlich in der Lage ist, Programme aus gesprochenen Äußerungen zu synthetisieren; außerdem können neue Funktionen anhand natürlichsprachlicher Beschreibungen erlernt werden
    corecore