Futuristische Softwareentwicklung

Futuristische Softwareentwicklung

Machine Learning (ML), sowie Künstliche Intelligenz (KI) werden immer mehr Bestandteil in der Softwareentwicklung. Die Hoffnung bei dieser Integration ist mithilfe von einer KI eigene Programme oder Texte automatisiert zu erstellen. Wir von BORNAK GmbH sind der Meinung, dass dieser Schritt naheliegend ist, aber auch problembehaftet ist. Im ersten Gedankengang erscheint es einfacher ein Programm über eine KI, die mit ML trainiert wurde, erstellen zu lassen. Jedoch müssen hier die Eigenschaften der Sprache eindeutig definiert sein, sowie die Sonderfälle und Ausnahmen ausgeschlossen werden.

Die Problematik selbstprogrammierender KI

In trivialen Projekten wird die KI mit Sicherheit schneller und mindestens genauso gut sein. Dennoch muss auch der KI gesagt werden, welche Datenfelder existieren, was die Semantik der Datenfelder bedeutet, wie sie heißen, und welche Genauigkeit vorliegen soll.
Hinsichtlich komplexer Software muss anfangs definiert werden, welche Erwartungen das Programm erfüllen soll. In Falle von Unverständnis würde der Mensch andere Mitarbeiter, Kollegen oder Externe mit einbeziehen, um eine Lösung für das Problem zu finden. Die KI wird versuchen eine eigene Lösung zu finden, die höchstwahrscheinlich fehlerhaft oder falsch ist.
Wir von Bornak.de sind der Meinung, dass ein weiter signifikanter Aspekt in Bezug auf selbstprogrammierende KI das Machine Learning ist. Eine KI muss trainiert werden, um den Ansprüchen des Auftraggebers gerecht zu werden. Bei Sprache ist dieser Vorgang machbarer, weil Textbeispiele hinzugezogen werden, die im nächsten Schritt von der KI gelernt werden und dann wiedergegeben werden kann. Bei Computerprogrammen gibt es bereits Github-Repositorys, um eine Grundlage für Machine Learning zu gewährleisten. Nachteilig an dieser Grundlage ist, dass nicht alle Github-Projekte den eigenen Anforderungen oder denen der Auftraggeber genügen.
Außerdem besteht das Risiko, dass eine KI schlechte Angewohnheiten adaptiert. Kein Code ist perfekt und beim Einlesen eines größeren Repositorys können schlechte Angewohnheiten im Stil und Struktur übernommen werden. Dieses Risiko kann eingeschränkt werden, wenn man die KI nicht nur mit den eigenen Projekten, sondern auch mit den Projekten des persönlichen Umfeldes trainiert.

Welche Assistenzsysteme gibt es bis jetzt?

Ein großer Bereich, der bereits mit KI abgedeckt wird, ist die Code-Completion. In diesem Fall wird in vielen IDEs vorgeschlagen, wie der weitergehende Programmcode aussehen kann. Für diese Assistenzsysteme gibt es bereits eine große Auswahl.

Tabnine

Beispielswiese lässt sich Tabnine als Plugin in IDEs hinzufügen und benutzt Textanalyse, um die weiteren Vorschläge anzeigen zu können. Dadurch werden auch größere Blocks angezeigt. Ein Problem dabei ist, dass der Code im Gegensatz zur automatischen Vervollständigung der DIE nicht die Imports übernimmt, sondern lediglich den Programmtext komplettiert. Tabnine basiert auf reiner Textanalyse und wird deshalb auch weiterhin funktionieren selbst wenn ein Klammerfehler den gesamten Code zum Erliegen gebracht hat. Hierbei sehen wir, dass in Bezug auf Tabnine das Verständnis für den restlichen Code fehlt.

Kite

Ein weiteres Assistenzsystem ist Kite. Kite findet seine Anwendung in der Sprache Python. Ähnlich wie Tabnine bietet Kite per KI generierte intelligent Snippets. Diese werden mit der eigenen Codebasis als Grundlage erstellt, aber lässt das bisherige Auto-Complete weiterhin unangetastet. Folglich hat Kite eine nahtlose Verbindung zwischen den gewohnten Funktionen und KI-Funktionen geschaffen. Kite fokussiert sich vor Allem auf den Ersatz der Copy/Paste Funktion mit Hilfe des Internets. Problematisch ist hierbei, dass das Kopieren von Code allein wegen Copyright negativ behaftet ist. Des Weiteren stellt eine Automatisierung dieses Vorganges innerhalb eines Unternehmens einen gewagten Schritt dar.

Auch Google hat in diesem Bereich bereits ein Feature präsentiert. Das Feature grenzt die Auswahl der Optionen für die Auto-Completion mithilfe von Machine Learning auf die wahrscheinlichsten Symbole ein, anstatt diese alphabetisch zu sortieren. Wir, von Bornak.de, sehen den Vorteil dieses Features in der Anwendung. Die KI präsentiert nicht die eigenen Vorschläge, sondern evaluiert die Wahrscheinlichkeiten. Das bedeutet, der Nutzer kann solange tippen, bis sein gewünschter Vorschlag erscheint. Wenn der Nutzer mit Dart programmiert, ist dieses Feature ein Tool, dass das Programmieren erheblich erleichtern kann.

Ein weiterer Bereich, in dem die selbstprogrammierende KI und immer mehr Werkzeuge genutzt werden, ist das Code Review. Das Code Review ist von hoher Relevanz, weil schon früh Fehler identifiziert und behoben werden sollen. Dadurch steigt nicht nur die Qualität, sondern auch die Wartbarkeit. Im klassischen Code Review überprüfen Softwareentwickler den programmierten Code von anderen. Bestenfalls geschieht dies im direkten Dialog, wodurch man signifikante Änderungen identifizieren, erklären oder Verbesserungsvorschläge unterbreiten oder einen erklärenden Kommentar hinzufügen kann. Im Gegensatz zu traditionellen Tools wie dem Erstellen von Pull-Request und dem damit einhergehenden direkten Zugriff auf die geänderten Codestellen, gibt es mittlerweile Tools die automatisch zur Fehlerfindung oder zum Auffinden potenziell schlechten Codes laufen. Über statistische Codeanalysen wird der Programmcode untersucht. Potenzielle Fehler und Warnungen werden gemeldet und können auch mit einem erklärenden Kommentar versehen werden.

Als letzter Kernaspekt der selbstprogrammierenden KI ist für uns das Nutzen der KI zum Generieren von Tests relevant. Ein großes Problem in diesem Bereich ist das Orakel-Problem, das besagt, dass wenn eine KI Tests für bestehenden Programmcode generiert, diese auf jeden Fall bestanden werden. Denn es wird lediglich der Programmcode getestet und nicht mehr die Funktionalität dahinter.

Zusammenfassung

Zusammenfassend gibt es bereits einige Implikationen für Künstliche Intelligenz und Machine Learning. In den meisten Fällen bietet die KI bereits eine gute Alternative für bessere Codequalität oder dem Vermeiden von Tippfehlern. Dennoch sind wir noch weit entfernt von einer nahtlosen Integration von KI vor Allem bei komplexen Softwareprojekten.

Facebook
Twitter
Email
Print

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert