Jede umfangreiche Software wird nicht von Anfang an vollständig konzipiert, sondern von Entwicklern verbessert, bearbeitet, in Einheiten getestet, repariert, Codeüberprüfungen gelöst und Probleme werden wiederholt gelöst, bis die Online-Anforderungen erfüllt sind Repository.
Das Wissen über die Steuerung des gesamten Prozesses wird als Software Engineering bezeichnet.
Software-Engineering ist kein unabhängiger Prozess, sondern besteht aus der Kommunikation zwischen Entwicklern, Code-Reviewern, Bug-Reportern, Software-Architekten und verschiedenen Entwicklungstools (wie Compilern, Unit-Tests, Konnektoren, statischen Analysatoren).
Kürzlich hat Google sein eigenes DIDACT (Dynamic Integrated Developer ACTivity, dynamische integrierte Entwickleraktivität) -Framework angekündigt, das KI-Technologie zur Verbesserung der Softwareentwicklung nutzt und den Zwischenstatus der Softwareentwicklung als Trainingsdaten nutzt, um Entwickler beim Schreiben zu unterstützen , Ändern Sie Code und erfahren Sie mehr über Softwareentwicklung in Echtzeit.
DIDACT ist ein Multitasking-Modell, das auf Entwicklungsaktivitäten wie Bearbeiten, Debuggen, Korrigieren und Codeüberprüfung trainiert ist.
Die Forscher haben intern drei DIDACT-Tools entwickelt und bereitgestellt: Annotation-Parsing und Build-Reparatur und Hinweisvorhersage: Jedes Tool wird in einer anderen Phase des Entwicklungsworkflows integriert.
Seit Jahrzehnten speichert die Software-Engineering-Toolchain von Google jeden Code-bezogenen Vorgang als Interaktionsprotokoll zwischen dem Tool und dem Entwickler.
Im Prinzip können Benutzer diese Datensätze verwenden, um den wichtigsten Änderungsprozess im Softwareentwicklungsprozess im Detail nachzuvollziehen, d. h. wie die Codebasis von Google gebildet wurde, einschließlich aller Codebearbeitungen, Kompilierungen, Kommentare, Variablenumbenennungen usw. .
Das Entwicklungsteam von Google speichert den Code in einem Monorepo (Mono-Repository), einem Code-Repository, das alle Tools und Systeme enthält.
Softwareentwickler experimentieren oft mit Codeänderungen in einem lokalen Copy-on-Write-Arbeitsbereich, der von Clients in the Cloud (CitC)-Systemen verwaltet wird.
Wenn ein Entwickler bereit ist, eine Reihe von Codeänderungen zusammenzufassen, um eine bestimmte Aufgabe zu erfüllen (z. B. das Beheben eines Fehlers), muss eine Änderungsliste (CL) im Codeüberprüfungssystem Critique von Google erstellt werden.
Wie bei herkömmlichen Code-Review-Systemen kommunizieren Entwickler mit Peer-Reviewern über Funktionalität und Stil und bearbeiten dann CL, um Probleme zu beheben, die bei Review-Kommentaren aufgeworfen werden.
Schließlich erklärte der Prüfer den Code „LGTM!“ und fügte den CL in die Codebasis ein.
Natürlich müssen Entwickler neben Gesprächen mit Codeprüfern auch eine große Anzahl von „Dialogen“ mit anderen Software-Engineering-Tools führen, darunter Compiler, Test-Frameworks, Linker, statische Analysatoren, Fuzz-Testtools usw. .
Darstellung des komplexen Netzwerks von Aktivitäten bei der Softwareentwicklung: Entwickleraktivitäten, Interaktionen mit Codeprüfern und Aufrufe von Tools wie Compilern.
DIDACT nutzt die Interaktion zwischen Ingenieuren und Tools, um Modelle für maschinelles Lernen zu stärken und die Teilnahme von Google-Entwicklern zu unterstützen, indem es Entwickleraktionen bei der Durchführung von Softwareentwicklungsaufgaben vorschlägt oder optimiert. Softwareentwicklungsprozess.
Zu diesem Zweck definierten die Forscher eine Reihe von Aufgaben in Bezug auf einzelne Entwickleraktivitäten: Beheben defekter Builds, Vorhersage von Code-Review-Kommentaren, Verarbeiten von Code-Review-Kommentaren, Umbenennen von Variablen, Bearbeiten von Dateien usw.
Dann definieren Sie ein gemeinsames Formular für jede Aktivität: Rufen Sie einen bestimmten Status (Codedatei), eine Absicht (eine für eine Aktivität spezifische Annotation, z. B. eine Annotation zur Codeüberprüfung oder einen Compilerfehler) ab und generieren Sie eine Aktion (zur Verarbeitung verwendete Aktionen). Aufgaben).
Action ist wie eine Mini-Programmiersprache, die um neu hinzugefügte Aktivitäten erweitert werden kann, darunter Bearbeiten, Hinzufügen von Kommentaren, Umbenennen von Variablen, Markieren von Codefehlern usw. Diese Sprache kann auch DevScript genannt werden.
Die Eingabeaufforderungen des DIDACT-Modells sind Aufgaben, Codeausschnitte und Kommentare im Zusammenhang mit der Aufgabe, und die Ausgabe sind Entwicklungsaktionen wie Bearbeitungen oder Kommentare
State-Intent-Action (State-Intent-Action) Definitionsformular Da DevScript in der Lage ist, verschiedene Aufgaben auf vielseitige Weise zu erfassen, und was noch wichtiger ist, kann es komplexe Aktionen prägnant ausdrücken, ohne dass der gesamte Status (Originalcode) nach dem Auftreten der Aktion ausgegeben werden muss, wodurch das Modell effektiver und interpretierbarer wird.
Zum Beispiel kann das Umbenennen mehrere Stellen in der Codedatei ändern, aber das Modell muss nur einen Umbenennungsvorgang vorhersagen.
DIDACT eignet sich sehr gut für persönliche Hilfsaufgaben. Das folgende Beispiel zeigt beispielsweise die Codebereinigungsarbeit von DIDACT nach Abschluss der Funktion, indem zunächst die letzten Kommentare des Codeprüfers eingegeben werden (beschriftet). (Mensch im Bild) und prognostizieren Sie dann die Operationen, die zur Lösung des in der Anmerkung angesprochenen Problems erforderlich sind (dargestellt mit diff).
... Die multimodale Natur von Python hat auch zu einigen neuen Verhaltensweisen geführt, die sich bei der Skalierung ergeben. Eine dieser Funktionen ist die Erweiterung des Verlaufs, die über Eingabeaufforderungen aktiviert werden kann, um zu erfahren, was der Entwickler in letzter Zeit getan hat.
Demonstration der verlaufsverstärkten Codevervollständigung
Die Aufgabe zur verlaufsverstärkten Codevervollständigung kann diese Fähigkeit demonstrieren Bewegen Sie den Cursor in das Dokument (2). Basierend auf dem Bearbeitungsverlauf des Entwicklers und der Cursorposition ist das Modell in der Lage, den Docstring-Eintrag für den neuen Parameter genau vorherzusagen und den dritten Schritt abzuschließen.
Bei der schwierigeren Aufgabe der geschichtsgestützten Bearbeitungsvorhersage ist das Modell in der Lage, den Ort der nächsten Bearbeitung auf historisch konsistente Weise auszuwählen.
Demonstration der Bearbeitungsvorhersage über mehrere verkettete Iterationen
Wenn der Entwickler das Funktionsargument (1) entfernt, kann das Modell Dokumentzeichen für die entfernte Argumentzeichenfolge (2) historisch korrekt vorhersagen und wird aktualisiert (ohne dass der menschliche Entwickler den Cursor manuell dort platzieren muss) und die Anweisung in Funktion (3) wird syntaktisch (und möglicherweise auch semantisch) korrekt aktualisiert.
Mit der Historie kann das Modell eindeutig entscheiden, wie der „Code-Bearbeitungsprozess“ korrekt fortgesetzt wird, während das Modell ohne Historie keine Möglichkeit hat zu wissen, dass die fehlenden Funktionsparameter beabsichtigt waren (da der Entwickler an einer längeren Version gearbeitet hat). Bearbeitungsvorgang zum Entfernen des Parameters) oder eine unerwartete Situation (das Modell sollte den Parameter erneut hinzufügen, um das Problem zu beheben).
Darüber hinaus kann das Modell auch weitere Aufgaben erledigen, z. B. von einer leeren Datei ausgehen und vom Modell verlangen, die nächsten Bearbeitungsvorgänge kontinuierlich vorherzusagen, bis eine vollständige Codedatei geschrieben ist.
Das Beste daran ist, dass dieses Modell Schritt für Schritt beim Schreiben von Code hilft, was für Entwickler selbstverständlich ist:
Erstellen Sie zunächst einen vollständigen Job mit Importen, Flags und einem grundlegenden Hauptfunktions-Framework Fügen Sie schrittweise neue Funktionen hinzu, z. B. das Lesen und Schreiben von Ergebnissen aus Dateien und die Möglichkeit, bestimmte Zeilen basierend auf vom Benutzer bereitgestellten regulären Ausdrücken zu filtern.
FazitDIDACT wandelt den Softwareentwicklungsprozess von Google in Trainingsdemos für Entwicklerassistenten für maschinelles Lernen um und verwendet diese Demodaten, um Modelle zu trainieren, Code Schritt für Schritt zu erstellen und mit Tools und Codeprüfern zu interagieren.
DIDACT-Methoden ergänzen die großartigen Errungenschaften groß angelegter Sprachmodelle von Google und anderen Unternehmen, um die Arbeitsbelastung zu reduzieren, die Produktivität zu steigern und die Qualität der Arbeit von Softwareentwicklern zu verbessern.
Das obige ist der detaillierte Inhalt vonGoogle stellt sein eigenes „AI+ Software Engineering'-Framework DIDACT vor: Tausende Entwickler haben es intern getestet und alle sagen, dass es nach der Verwendung äußerst produktiv ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!