11 research outputs found

    Rocks Coding, Not Development--A Human-Centric, Experimental Evaluation of LLM-Supported SE Tasks

    Full text link
    Recently, large language models (LLM) based generative AI has been gaining momentum for their impressive high-quality performances in multiple domains, particularly after the release of the ChatGPT. Many believe that they have the potential to perform general-purpose problem-solving in software development and replace human software developers. Nevertheless, there are in a lack of serious investigation into the capability of these LLM techniques in fulfilling software development tasks. In a controlled 2 x 2 between-subject experiment with 109 participants, we examined whether and to what degree working with ChatGPT was helpful in the coding task and typical software development task and how people work with ChatGPT. We found that while ChatGPT performed well in solving simple coding problems, its performance in supporting typical software development tasks was not that good. We also observed the interactions between participants and ChatGPT and found the relations between the interactions and the outcomes. Our study thus provides first-hand insights into using ChatGPT to fulfill software engineering tasks with real-world developers and motivates the need for novel interaction mechanisms that help developers effectively work with large language models to achieve desired outcomes.Comment: The paper has been accepted by FS

    Detection of Control Structures in Spoken Utterances

    Get PDF

    Detection of Control Structures in Spoken Utterances

    Get PDF

    Eine Architektur für Programmsynthese aus natürlicher Sprache

    Get PDF
    Die Arbeit entwirft ein domänenunabhängiges Vorgehen, das aus natürlichsprachlichen englischen Texten Programme ableitet. Eingabetexte werden mit computerlinguistischen Analysen bearbeitet und schließlich auf Quelltext abgebildet. Um die Analysen von der anzusteuernden API zu entkoppeln, wird diese als Modell in den Analyseprozess eingespeist. Eine Fallstudie zur Programmierung von 3D-Animationen und eine zur Heimautomation zeigen die Leistungsfähigkeit und Flexibilität des Verfahrens

    Eine Architektur für Programmsynthese aus natürlicher Sprache

    Get PDF
    Diese Arbeit beschreibt, wie man natürlichsprachliche Schnittstellen für die Programmierung von Software-Anwendungen erstellen kann. Hierbei wird insbesondere betrachtet, wie die Textanalyse vom konkreten Einsatzszenario, d.h. der angesteuerten Software, entkoppelt und somit wiederverwendbar gemacht werden kann. Zur Evaluation werden zwei Fallstudien vorgestellt: Die befehlsgesteuerte Heimautomatisierung mit openHAB und die Erzeugung von 3D-Animationen aus englischen Drehbüchern mit Alice

    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

    Eine agentenbasierte Architektur für Programmierung mit gesprochener Sprache

    Get PDF
    The system described in this work, called ProNat, makes end-user programming with spoken language possible. It enables non-experts to describe programs for different target systems and to extend their functionality using everyday language. ProNat is based on PARSE, a specially designed agent-based framework architecture. In three independent studies, ProNat has proven to be principally capable of synthesizing programs from spoken utterances
    corecore