Wie Machine Learning die Software-Entwicklung selbst verbessert

, 6 Min. Lesezeit

Ein Thema gehört sicher auch 2017 zum absoluten Trend: Machine Learning.

Die Idee dahinter ist an sich erstmal nichts Neues. Im Zeitalter der Digitalisierung bekommt Machine Learning allerdings eine ganz neue Breitenwirkung. Denn mit großen Datenmengen und hohem Automatisierungsgrad steigen auch die Anforderungen an deren intelligente Verknüpfung und Auswertung.

Zu den typischen Anwendungsbereichen gehören beispielsweise

  • Chatbots in Sales, Marketing und Service
  • Fahrerassistenzsysteme und Autonomes Fahren im Automotive-Sektor
  • Smart Manufacturing und Predictive Maintenance in der Fertigungsindustrie

Hohe Erwartungen an Machine Learning

Dass Machine Learning hoch im Kurs steht, zeigen die Aktivitäten der global agierenden IT-Konzerne. Ob Google, IBM oder Microsoft – sie alle haben Machine Learning zum festen Bestandteil ihrer Unternehmensstrategien gemacht. Passend dazu rekrutieren die Giganten ganze Kompetenz-Teams und akquirieren Machine-Learning- und AI-Startups.

Zu den Vorreiterbranchen zählen sicherlich IT, Automotive, Telekommunikation und Media. Traditionellere Industrien wie z.B. Chemie, Logistik/Verkehr oder Pharma stehen bereits in den Startlöchern.

Vor diesem Hintergrund stelle ich mir die Frage, ob Machine Learning auch für die Software-Entwicklung selbst echte Mehrwerte bieten kann?

Die Komplexität von Software-Systemen nimmt weiter zu

Softwarelösungen sind in den letzten 10 bis 15 Jahren deutlich komplexer geworden. Betrachtet man heutige Systeme, sind zum Teil tausende von Einzelkomponenten über APIs miteinander vernetzt. Selbst einfache Aufgaben „müssen“ häufig über verschiedene Schnittstellen gelöst werden. Das macht die Software-Entwicklung nicht unbedingt leichter.

Wie Machine Learning die Software-Entwicklung selbst verbessert

Weitere Infos: Million lines of code (information is beautiful)

Genau an dieser Stelle kann Machine Learning die Software-Entwicklung deutlich vereinfachen, z.B.

  • Automatische Fehlererkennung und -behebung: Mit einer State-of-the-art-Applikation können Fehlermuster im Code schnell identifiziert werden. Machine Learning geht einen Schritt weiter: Die Technologie erkennt nicht nur API-Regelverstöße (engl. Usage Constraints) bei der Benutzung der Standardbibliothek, sondern auch von allen anderen Bibliotheken – und das völlig automatisch. Darüber hinaus liefert das System gleich noch die passende Lösung für das jeweilige Problem mit.
  • Intelligente Programmier-Assistenten: Entwickler verbringen bis zu 50% ihrer Zeit mit dem Lesen von Dokumentationen und Quellcode. Machine Learning gestützte Programmier-Assistenten reduzieren diese Zeit um mehr als die Hälfte. Sie erkennen, an welcher Aufgabe ein Entwickler aktuell arbeitet und bieten in Echtzeit kontext-bezogene Unterstützung – z.B. passende Code-Beispiele, Nutzungsstatistiken oder Empfehlungen.
  • „Sauberer“ Code (engl. More Clean Code): Viele Unternehmen setzen bei der Software-Entwicklung auf Best-Practices, z.B. für das Benennen von Variablen oder die Struktur des Quellcodes. Die Qualitätssicherung erfolgt bisher überwiegend manuell. Das bedeutet: hoher Aufwand bei gleichzeitig hohen Kosten. Mit Machine Learning kann dieser Prozess voll automatisiert werden. Best-(Coding-)Practices werden erkannt und dokumentiert. Die Technologie überprüft kontinuierlich, ob Benennung und Struktur im firmenweiten Code-Repository den Qualitätsanforderungen entsprechen.
  • Automatisierte Refactorings und Migration: Gerade bei Upgrades einer Bibliothek, z.B. von Version 1.0 auf 2.0, sind häufig große Refactorings nötig. Auch an dieser Stelle kann Machine Learning die Prozesse deutlich vereinfachen. Die Technologie erlernt aus einer riesigen Menge an Beispiel-Codes typische Migrationsmuster und wendet diese als Refactoring auf den vorhandenen Code an. Die tatsächlichen Auswirkungen auf die gesamte Code-Basis lassen sich bereits im Vorfeld erkennen. Migrationen können so deutlich kosteneffizienter durchgeführt werden.

Entwicklerfirmen arbeiten bereits an innovativen Lösungen

Ein kurzes Markt-Screening zeigt, dass sich bereits einige Teams und Unternehmen mit Machine Learning, speziell für die Software-Entwicklung, beschäftigen:

1. Kite

Kite ist ein intelligenter Programmier-Assistent für die Programmiersprache Python. Die Software indexiert frei vorhandene Code-Beispiele im Internet und stellt diese anderen Entwicklern in ihren (Text-)Editoren zur Verfügung. Das kann z.B. in Form einer intelligenten Code-Vervollständigung sein – relevante Code-Vorschläge werden nach Häufigkeit sortiert und entsprechend angezeigt. Auch Code-Snippets stellt die Software kontextbasiert bereit. Darüber hinaus werden Dokumentationen aus verschiedenen Web-Quellen gesammelt und ebenfalls zur Verfügung gestellt.

Neben der Basic-Version (frei), wird eine Pro- sowie eine Enterprise-Edition (on-premise) angeboten.

Status: öffentlich verfügbar
Seit wann: April 2016
Lizenz: proprietär, kostenlose Variante verfügbar
Website: kite.com
Twitter: @kiteHQ
Sitz: San Francisco, USA

2. Ctrlflow Insights

Ctrlflow Insights by Codetrails ist eine Smart-Software-Suite speziell für Java-Programmierer. Die Gesamtlösung besteht aus drei Komponenten: einer automatischen Fehlererkennung auf der Basis von Machine Learning sowie zwei intelligente Programmier-Assistenten (kontextbasierende Code-Vervollständigung + übergreifende Code-Repository-Suchmaschine mit umfassenden Abfrage- und Aggregationsmöglichkeiten).

Für Ctrlflow Insights gibt es auch eine Open-Source-Integration in die Eclipse Entwicklungs-umgebung. Sie ist bereits seit 2012 fester Bestandteil der Eclipse IDE für Java-Entwickler. Für Enterprise-Kunden steht eine On-Premise-Lösung zur Verfügung.

Status: öffentlich verfügbar
Seit wann: Januar 2012
Lizenz: proprietär, Demo-Variante verfügbar
Website: https://ctrlflow.com/insights/enterprise/
Twitter: @ctrlflow
Sitz: Darmstadt, Deutschland

3. QuantifiedCode.com

QuantifiedCode.com ist eine Plattform für automatische Code-Reviews speziell für Python-Code. Besonders interessant ist die Crowd-Sourcing-Komponente von QuantifiedCode.com. Mit dieser können Entwickler ihre eigenen Code-Checker schreiben und mit der Python-Community teilen. Nutzer können ihr eigenes GitHub-Repository nicht nur bei QuantifiedCode.com anmelden, sondern auch kostenlos und vollautomatisch überprüfen lassen. Basis dieser Überprüfung sind alle bisher durch die Community geteilten Code-Checker.

Status: öffentlich verfügbar
Seit wann: April 2014
Lizenz: proprietär
Website: https://www.quantifiedcode.com
Twitter: @quantifiedCode
Sitz: München, Deutschland

4. Codota

„Dein intelligenter virtueller Programmierpartner (Your AI Pair Programmer)“, das ist der Anspruch von Codota.

Codota bietet ähnliche Funktionen wie Kite, wurde allerdings speziell für Java statt für Python entwickelt. Die Lösung analysiert öffentliche Code-Repositories wie GitHub oder Bitbucket. Und extrahiert darüber hinaus auch Code-Beispiele aus Diskussionen auf Stack Overflow. Die zum Entwickler-Kontext passenden Code-Beispiele werden in einem separaten Applikationsfenster dargestellt. Von dort aus können diese mit ein paar Klicks direkt in den eigenen Quellcode übernommen werden.

Status: öffentlich verfügbar
Seit wann: 2013
Lizenz: proprietär, kostenlose Variante verfügbar
Website: https://www.codota.com
Twitter: @Codota_
Sitz: Darmstadt, Deutschland

5. Acellere Gamma

Acellere Gamma ist nach eigenen Angaben eine „AI powered Software Analytics Platform“. Die Lösung verfügt über ein Management-Dashboard. Mit diesem können verschiedene Code-Metriken visualisiert werden, z.B. die Anzahl von Codezeilen (engl. Lines Of Code) oder die Verbindung zwischen Objekten (engl. Coupling Between Objects). Darüber hinaus bietet die Software Unterstützung bei typischen Design-Herausforderungen, z.B. um „God Classes“ oder „Feature Envy“ zu vermeiden. Lösungsvorschläge werden automatisch errechnet und vorgeschlagen.

Leider konnte ich dem Angebot nicht genau entnehmen, wie in diesem Bereich Machine- Learning-Technologie zum Einsatz kommt.

Status: öffentlich verfügbar (Q3/2017)
Seit wann: 2017
Lizenz: proprietär
Website: http://www.acellere.com
Twitter: @acellere_
Sitz: Frankfurt, Deutschland

6. Source{d}

Die Vision von Source{d}: In Zukunft ermöglichen neuronale Netze, dass Software-Programme ihren Code selbst schreiben. Um diese Vision in die Tat umzusetzen, entwickelt Source{d} eine universelle Code-Repräsentation. Dort werden alle Beziehungen zwischen den einzelnen Code-Elementen, Code-Regeln etc. einer API modelliert. Auf dieser Grundlage entsteht dann ein intelligenter Programmier-Assistent, der nach und nach immer größere Teile des Softwaresystems selbständig implementiert.

Eine spannende Vision. Es bleibt allerdings abzuwarten, wie schnell Source{d} tatsächlich in der Lage ist, diese Wirklichkeit werden zu lassen.

Status: nicht öffentlich verfügbar
Seit wann: March 2015
Lizenz: proprietär, einen Bibliotheken sind Open Source
Website: http://sourced.tech
Twitter: @srcd_
Sitz: Madrid, Spanien

Anmerkung zum Markt-Screening:
Die o.a. Übersicht ist ein Auszug und erhebt keinen Anspruch auf Vollständigkeit.

Machine Learning wird die Zukunft prägen

Eines lässt sich sicher jetzt schon sagen: Machine Learning hat eine große Zukunft vor sich. Der Siegeszug wird allerdings stark davon abhängen, welche Mehrwerte die Technologie für Unternehmen und deren Wertschöpfungsketten ganz konkret bietet. Und wie gut sich diese auch wirtschaftlich abbilden lassen.

Für mein persönliches Verständnis kann Machine Learning die Software-Entwicklung selbst maßgeblich voranbringen. Echte Mehrwerte sind eindeutig vorhanden.

Ich denke, Software-Entwickler und Machine-Learning-Experten müssen noch weiter zusammenrücken. Zum einen, um die jeweiligen Herausforderungen des anderen besser zu verstehen. Zum anderen, um wirklich herausragende, marktfähige Lösungen zu entwickeln.

Über Links, Empfehlungen und Ergänzungen zu diesem Artikel bin ich jederzeit dankbar.

Bildquelle Titel: nd3000/Shutterstock.com