4 research outputs found

    Evaluation of Markov Models for Architecture Conformance Checking

    Get PDF
    Conformance between architecture and implementation is a key aspect of architecture-centric development. However, the architecture as documented and the architecture as implemented tend to diverge from each other over time. Thus, conformance checks should be run periodically on the system in order to detect and correct differences. Despite having a structural conformance analysis, assessing whether the main scenarios describing the architectural behavior are faithfully implemented in the code is still challenging. Checking conformance to architectural scenarios is usually a time-consuming and error-prone activity. In this article, we describe ArchLearner, a tool to assist architects to bridge the gap between architecture and its implementation. The architecture is specified with Use-Case Maps (UCMs), a notation for modeling both high-level structure and behavior. ArchLearner uses Markov Models to detect code deviations with respect to predetermined UCMs, based on the analysis of system execution traces for those UCMs. The results from two case-studies have shown that ArchLearner is practical and reduces conformance checking efforts.Fil: Rodríguez, Guillermo Horacio. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Tandil. Instituto Superior de Ingeniería del Software. Universidad Nacional del Centro de la Provincia de Buenos Aires. Instituto Superior de Ingeniería del Software; ArgentinaFil: Armentano, Marcelo Gabriel. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Tandil. Instituto Superior de Ingeniería del Software. Universidad Nacional del Centro de la Provincia de Buenos Aires. Instituto Superior de Ingeniería del Software; ArgentinaFil: Soria, Alvaro. Consejo Nacional de Investigaciones Científicas y Técnicas. Centro Científico Tecnológico Conicet - Tandil. Instituto Superior de Ingeniería del Software. Universidad Nacional del Centro de la Provincia de Buenos Aires. Instituto Superior de Ingeniería del Software; ArgentinaFil: Corengia, Emilio. Universidad Nacional del Centro de la Provincia de Buenos Aires. Facultad de Ciencias Exactas; Argentin

    Verknüpfung von Text- und Modellentitäten von Softwarearchitektur-Modellen mithilfe von Wortvektoren

    Get PDF
    Die Verknüpfung von Entitäten von Softwarearchitektur-Dokumentationen und -Modellen bietet Möglichkeiten, die Qualität eines Software-Entwicklungsprozesses zu verbessern. Zu diesen Möglichkeiten zählen beispielsweise die Analyse der Konsistenz und das Übertragen von Änderungen zwischen den Artefakten Dokumentation und Modell. Um solche Verknüpfungen automatisiert berechnen zu können, bedarf es Methoden der linguistischen Datenverarbeitung. In der vorliegenden Arbeit wird ein Verfahren präsentiert, welches dieses Problem mithilfe von Wortvektoren angeht. Diese werden für vielfältige Aufgaben der linguistischen Datenverarbeitung genutzt und übertreffen dabei häufig herkömmlicheVerfahren. In dieser Arbeit werden sie dazu verwendet, Ähnlichkeiten zwischen Entitäten zu berechnen. Dabei wird zwischen Nominalphrasen und Verbphrasen unterschieden, wobei Erstere mit nicht-relationalen und Letztere mit relationalen Architekturmodellentitäten verknüpft werden können. Dazu wird mithilfe des PARSE-Rahmenwerks ein Graph aufgebaut, der den Dokumentationstext repräsentiert und eine Klassifikation von Phrasen und Wörtern enthält. Anhand dieses Graphen und einer Repräsentation des Architekturmodells kann das in dieser Arbeit entwickelte Verfahren Verknüpfungen berechnen und an den Graphen annotieren. Es wurden verschiedene Parametrisierungen des Verfahrens evaluiert, wobei allgemein festgehalten werden kann, dass das Referenzverfahren, ein String-Ähnlichkeitsvergleich mithilfe der Levenshtein-Distanz, im F1-Maß überboten werden kann. Für Nominalphrasen wurde ein durchschnittlicher Vorsprung von 13.6 Prozentpunkten des Wortvektor-Verfahrens gegenüber dem Levenshtein-Verfahren gemessen

    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