Software-Intelligenzschicht zwischen Ihrem Code

Software Intelligence: Die fehlende Schicht zwischen Ihrem Code und Ihren Entscheidungen

Jede große Organisation nutzt Software, die sie nicht vollständig versteht. Das Finanzinstitut verarbeitet seit vierzig Jahren Transaktionen mit demselben COBOL-Kern. Der Hersteller, dessen Produktionsplanungssystem Logik über fünfzehn Versionen und drei Entwicklergenerationen hinweg angesammelt hat. Der Versicherer, dessen Policenverwaltungssystem Geschäftsregeln enthält, die nur im Verhalten des Codes selbst existieren. Diese Organisationen sind nicht unwissend, ihre Teams sind qualifiziert und erfahren. Doch die Software ist so gewachsen, dass sie das vollständige Verständnis jedes Einzelnen überholt hat, und die Dokumentation hat mit dem Code nicht mehr Schritt gehalten, lange bevor es jemandem auffiel.

Software-Intelligenz ist die Disziplin und die Technologie, die diese Lücke schließt. Sie ermöglicht die systematische Analyse von Softwaresystemen, ihrer Struktur, ihrer Abhängigkeiten, ihres Verhaltens, ihrer Qualität und ihrer Risiken und wandelt diese Analyse in handlungsrelevantes Wissen um, das von Entwicklerteams, Architekten und Entscheidungsträgern genutzt werden kann. Während herkömmliche Softwaretools beschreiben, was Code bei der Ausführung bewirkt, zeigt Software-Intelligenz, was der Code enthält, wie er organisiert ist, welche Verbindungen bestehen und welche Probleme bei Änderungen auftreten können. Sie ist der entscheidende Unterschied zwischen dem Betrieb eines Systems und dessen Verständnis.

Durchsuchen Sie jede Ihrer Datenstrukturen

SMART TS XL Es bildet jede Datenbeziehung ab, sodass Ihr Team Qualitätsfehler erkennt, bevor diese die Benutzer erreichen.

Erfahren Sie mehr

Was ist Softwareintelligenz?

Software Intelligence ist die systematische Analyse von Softwaresystemen, um strukturelle, verhaltensbezogene und qualitative Erkenntnisse zu gewinnen, die als Grundlage für Entwicklungsentscheidungen, Risikomanagement und strategische Planung dienen. Sie kombiniert statische Codeanalyse, Abhängigkeitsanalyse, Wirkungsanalyse und Visualisierung, um die interne Struktur eines Softwaresystems für Teams, Tools und organisatorische Prozesse verständlich zu machen, die auf präzisen Kenntnissen über den Systeminhalt basieren.

Der Begriff hat in verschiedenen Kontexten unterschiedliche Bedeutungen. In Business-Intelligence-Tools bezeichnet „Software Intelligence“ mitunter Analysen zur Kundennutzung von Softwareprodukten, zur Akzeptanzrate von Funktionen, zu Nutzerflüssen und Fehlerraten. Im Kontext von KI und maschinellem Lernen bezieht sich „intelligente Software“ auf Systeme, die ihr Verhalten autonom anpassen. Im Kontext der Unternehmens-IT und Softwareentwicklung, auf den sich dieser Artikel bezieht, bezeichnet Software Intelligence konkret die analytische Fähigkeit, die Entwicklungsteams ein tiefes, automatisiertes Verständnis ihrer Codebasen, Programme, Abhängigkeiten, Datenflüsse, Geschäftslogik und der Risiken von Änderungen ermöglicht.

Software Intelligence vs. Business Intelligence

Business Intelligence analysiert Geschäftsdaten, Transaktionen, Kunden, Umsätze und Betriebsabläufe, um Erkenntnisse über die Geschäftstätigkeit zu gewinnen. Software Intelligence analysiert Softwarecode, Programme, Module, Abhängigkeiten, Schemata und Arbeitsabläufe, um Erkenntnisse über den Inhalt und das Verhalten des Softwaresystems zu gewinnen.

AbmessungenGeschäftsanalytikSoftware-Intelligenz
Was es analysiertGeschäftsdaten (Transaktionen, Ereignisse, Kennzahlen)Softwarestruktur (Code, Abhängigkeiten, Schemata)
Primäre AusgabeDashboards, Berichte, KPIsAbhängigkeitsdiagramme, Wirkungsanalysen, Code-Metriken
Wer benutzt es?Unternehmensanalysten, FührungskräfteSoftwareingenieure, Architekten, IT-Management
Die Schlüsselfrage beantwortetWas macht das Unternehmen?Was beinhaltet die Software und wie stellt sie die Verbindungen her?
Wenn es läuftKontinuierlich auf Live-GeschäftsdatenAuf Quellcode, auf Anfrage oder kontinuierlich
UnternehmenswertOperative TransparenzRisikomanagement und Änderungskontrolle im Ingenieurwesen

Software-Intelligenz vs. intelligente Software

Diese beiden Begriffe werden oft verwechselt, da sie ähnliche Begriffe verwenden. Softwareintelligenz ist eine Fähigkeit, die auf bestehende Software angewendet wird: die Fähigkeit, bereits vorhandene Inhalte zu analysieren und zu verstehen. Intelligente Software hingegen ist ein Merkmal neuer Software: Systeme, die KI, maschinelles Lernen oder Regelsysteme nutzen, um adaptiv Entscheidungen zu treffen.

Eine Software-Intelligenzplattform wie SMART TS XL Es analysiert Unternehmenssoftware, darunter ältere COBOL-Programme, moderne Java-Dienste und alles dazwischen, um strukturelles Wissen über diese Systeme zu generieren. Es macht diese Systeme nicht im Sinne von KI intelligent. Es macht sie lesbar: sichtbar, abfragbar und sicher veränderbar.

Die Komponenten einer Software-Intelligenzplattform

Eine vollständige Software-Intelligence-Plattform bietet Funktionen in fünf analytischen Dimensionen. Zusammen ermöglichen diese Dimensionen Unternehmensteams einen umfassenden Überblick über ihre Softwarelandschaft, den weder Dokumentation, Entwicklerwissen noch herkömmliche Überwachungsmethoden bieten können.

Statische Code-Analyse

Die statische Codeanalyse untersucht Quellcode, ohne ihn auszuführen, und identifiziert Qualitätsprobleme, Sicherheitslücken, Code-Smells und Strukturmuster. Im Gegensatz zur dynamischen Analyse, die ein laufendes System erfordert, arbeitet die statische Analyse direkt mit dem Quellcode. Dadurch kann sie Code analysieren, der auf Mainframe-Systemen läuft, Code in Sprachen ohne moderne Laufzeitumgebungen und Code in mehreren Sprachen gleichzeitig.

Im Kontext der Softwareintelligenz erzeugt die statische Codeanalyse drei Arten von Ausgaben: Codequalitätsmetriken (Komplexität, Duplikation, Wartbarkeitsindex), Sicherheitsbefunde (Schwachstellenmuster, unsichere Codierungspraktiken, offengelegte Zugangsdaten) und Strukturdaten (Funktionsdefinitionen, Variablendeklarationen, Modulgrenzen), die in die Abhängigkeitsabbildungs- und Wirkungsanalyseschichten eingespeist werden.

Abhängigkeitszuordnung

Die Abhängigkeitsanalyse bildet die Beziehungen zwischen allen Komponenten eines Softwaresystems ab: Welche Programme rufen welche anderen auf, welche Module importieren welche Bibliotheken, welche Funktionen greifen auf welche Datenbanktabellen zu, welche Datensätze fließen von welchen Programmen zu welchen Nutzern. Die Abhängigkeitskarte ist das Strukturmodell des Systems, der Graph, der es ermöglicht, die Frage zu beantworten: „Wenn ich dies ändere, was ist dann noch betroffen?“

In großen Unternehmenssystemen, insbesondere solchen, die mehrere Sprachen und Plattformen umfassen, muss die Abhängigkeitsabbildung Beziehungen über Sprachgrenzen hinweg abbilden: Ein COBOL-Programm schreibt in eine DB2-Tabelle, die von einem Java-Dienst gelesen und anschließend von einer Python-Pipeline transformiert wird. Kein Tool zur Abhängigkeitsabbildung für eine einzelne Sprache kann diese sprachübergreifende Kette erfassen; nur eine Plattform, die alle Sprachen versteht und deren Modelle in einem einheitlichen Graphen verbinden kann, bietet vollständige Abdeckung.

Einflussanalyse

Die Wirkungsanalyse nutzt die Abhängigkeitsmatrix, um eine spezifische Frage zu einer geplanten Änderung zu beantworten: Welche Komponenten sind betroffen? Ausgehend von der geänderten Komponente und unter Durchlaufen des Abhängigkeitsgraphen listet die Wirkungsanalyse jedes Modul, jede Funktion, jedes Programm und jeden Datensatz auf, der direkt oder indirekt von dem geänderten Element abhängt. Der ermittelte Wirkungsbereich bildet die Grundlage für den Testplan, die Risikoklassifizierung der Änderung und die Evidenzbasis für die Änderungsberatung.

Ohne Folgenabschätzung wird der Umfang einer Änderung vom Entwickler, der sie geschrieben hat, geschätzt. Mit Folgenabschätzung wird der Umfang aus der tatsächlichen Codestruktur abgeleitet. In großen Systemen weichen diese beiden Schätzungen erheblich voneinander ab, und genau diese Differenz ist die Ursache für Produktionsvorfälle.

Unternehmensweite Suche über Code hinweg

Die unternehmensweite Suche im Kontext von Software Intelligence bedeutet die Fähigkeit, jedes Element des Softwaresystems – jede Funktion, jede Variable, jede Felddefinition, jede SQL-Anweisung, jeden Programmnamen – innerhalb von Sekunden im gesamten Quellcode zu finden, unabhängig von der verwendeten Programmiersprache. Während eine allgemeine IDE-Suche ein einzelnes Projekt in einer bestimmten Sprache abdeckt, durchsucht eine unternehmensweite Code-Suche das gesamte System gleichzeitig und über alle Programmiersprachen hinweg.

Die Unternehmenssuche revolutioniert die Arbeit mit großen, unbekannten Codebasen. Ein Entwickler, der einem Team beitritt, das 200 COBOL-Programme, 50 JCL-Jobstreams und eine Java-Serviceschicht betreut, findet die benötigten Informationen per Suchanfrage, anstatt tagelang manuell Code zu lesen. Ein Architekt, der eine Änderung des Datenbankschemas plant, findet innerhalb von Sekunden alle SQL-Anweisungen, die eine bestimmte Spalte in allen Programmen referenzieren, anstatt eine repositoryübergreifende Suche durchzuführen, die dynamisch erstellte Abfragen möglicherweise übersieht.

Code-Visualisierung

Die Codevisualisierung wandelt die durch statische Analyse und Abhängigkeitsanalyse erzeugten Strukturdaten in Diagramme um, die die Systemarchitektur, die Abhängigkeitsbeziehungen und die Komplexitätslandschaft visuell darstellen. Diagramme, deren manuelle Pflege Wochen dauern würde, werden automatisch aus dem Code generiert und bleiben so mit der Systementwicklung stets aktuell.

Visualisierungen dienen verschiedenen Zielgruppen auf unterschiedliche Weise: Entwickler verwenden Aufrufdiagramme und Datenflussdiagramme, um unbekannten Code zu verstehen; Architekten verwenden Komponentendiagramme und Abhängigkeitsdiagramme, um strukturelle Änderungen zu planen; Geschäftsverantwortliche verwenden vereinfachte Flussdiagramme, um den Systemumfang während der Planung oder der Überprüfung der Einhaltung von Vorschriften zu verstehen; und Betriebsteams verwenden Sequenzdiagramme, um Anforderungsflüsse bei der Diagnose von Leistungsproblemen nachzuverfolgen.

Software Intelligence in der Praxis: Anwendungsfälle in Unternehmen

Modernisierung von Altsystemen

Die anspruchsvollste Anwendung von Softwareintelligenz ist die Modernisierung von Altsystemen, also die Migration von COBOL-, PL/I- oder RPG-Anwendungen von Mainframe-Umgebungen in moderne Cloud-native Architekturen. Die grundlegende Herausforderung liegt nicht in der Migrationstechnologie, sondern in der Wissenslücke. Altsysteme akkumulieren über Jahrzehnte undokumentierte Änderungen, implizite Abhängigkeiten, die durch gemeinsam genutzte Daten statt expliziter Schnittstellen entstehen, und Geschäftslogik, die sich ausschließlich im Verhalten des Codes manifestiert.

Software Intelligence schließt diese Lücke systematisch, bevor die Migrationsarbeiten beginnen. Das Programminventar identifiziert alle relevanten Komponenten. Die Abhängigkeitsanalyse zeigt deren Verbindungen auf. Die Folgenabschätzung verdeutlicht die Auswirkungen geplanter Änderungen. Die Extraktion der Geschäftslogik dokumentiert die tatsächliche Funktion jedes Programms und liefert die Spezifikation, anhand derer das migrierte System validiert werden muss. Ohne diese strukturelle Grundlage decken Migrationen ihre teuersten Überraschungen erst im Test- oder Produktivbetrieb auf, nicht in der Planungsphase.

Änderungsmanagement und Risikobewertung

In jeder größeren Softwareumgebung erfordert das Änderungsmanagement die Kenntnis des Umfangs geplanter Änderungen vor deren Genehmigung. Software Intelligence liefert die strukturellen Erkenntnisse, die Änderungsbeiräte benötigen, um Genehmigungsentscheidungen auf Basis der tatsächlichen Systemstruktur und nicht auf Schätzungen der Entwickler zu treffen.

Bevor eine Änderung genehmigt wird, identifiziert die Folgenabschätzung alle abhängigen Komponenten, die einer Validierung bedürfen. Die Komplexitätskennzahlen zeigen an, ob die geänderte Komponente unkompliziert oder risikoreich ist. Die Visualisierung der Abhängigkeiten veranschaulicht, wie die geänderte Komponente mit dem restlichen System verbunden ist. Zusammen ergeben diese Daten die evidenzbasierte Folgenabschätzung, die die informelle Diskussion „Was könnte dadurch kaputtgehen?“ ersetzt.

Technische Due Diligence

Bei der Bewertung von Softwaresystemen im Rahmen von Akquisitionen, Partnerschaften oder Compliance-Audits erfordert die technische Due Diligence eine objektive Beurteilung des Quellcodes: Qualität, Wartbarkeit, Sicherheitslage, technische Schulden und Komplexität. Software-Intelligence-Plattformen automatisieren diese Bewertung in großem Umfang und liefern innerhalb weniger Stunden Strukturanalysen, für die eine manuelle Prüfung Wochen benötigen würde.

Die technische Due-Diligence-Prüfung mittels Software Intelligence umfasst: die Verteilung von Codequalitätsmetriken im gesamten Quellcode, die Dichte und Schwere von Sicherheitslücken, den Anteil technischer Schulden und die geschätzten Kosten für deren Behebung, den Zustand von Abhängigkeiten einschließlich veralteter oder nicht mehr verwendeter Bibliotheken, Metriken zur architektonischen Kopplung und Kohäsion sowie den Anteil ungenutzten Codes. Diese Metriken lassen sich direkt in Risikoklassifizierungen und Kostenschätzungen für deren Behebung umsetzen und dienen als Grundlage für Geschäftsentscheidungen.

Entwickler-Onboarding und Wissenstransfer

Jede Organisation, die große Softwaresysteme betreibt, steht vor der ständigen Herausforderung des Wissenstransfers: Erfahrene Entwickler scheiden aus dem Unternehmen aus oder verlassen es, und neue Entwickler müssen Systeme verstehen, die ursprünglich nicht für Außenstehende konzipiert wurden. Software-Intelligence-Plattformen bieten die notwendige strukturelle Dokumentation und Suchfunktion, um diesen Transfer zu ermöglichen.

Ein neuer Entwickler, der an einem ihm unbekannten COBOL-Programm arbeitet, kann mithilfe der Unternehmenssuche alle Stellen finden, an denen ein bestimmtes Feld verwendet wird, die Abhängigkeitskarte nutzen, um zu verstehen, welche Programme mit dem zu modifizierenden Programm interagieren, und die Visualisierung verwenden, um die Position des Programms in der Gesamtarchitektur des Systems zu erkennen – all dies, ohne auf einen Kollegen zurückgreifen zu müssen, der dieses Wissen im Kopf hat. Wie im Kontext des Wissenstransfers von COBOL-Experten beschrieben , ist das implizite Wissen ausscheidender Entwickler oft das wichtigste und am wenigsten dokumentierte Gut im System.

Kontinuierliche Qualitätsüberwachung

Die kontinuierliche Anwendung von Softwareintelligenz, nicht nur bedarfsgesteuert vor einer bestimmten Änderung, ermöglicht ein proaktives Qualitätsmanagement: die Verfolgung der Entwicklung von Qualitätskennzahlen im Laufe der Zeit, das Erkennen, wann die Komplexität schneller wächst, als ein Team sie bewältigen kann, das Identifizieren von Dateien, die ein unverhältnismäßiges Änderungsrisiko bergen, und das Alarmieren, wenn neuer Code Sicherheitslücken einführt, bevor er in die Produktion gelangt.

In CI/CD-Pipelines sorgt kontinuierliche Softwareintelligenz für Qualitätskontrollen, die strukturelle Standards bereits während der Entwicklung durchsetzen: Eine neue Funktion, die die Schwelle der zyklomatischen Komplexität überschreitet, führt zu einem Build-Fehler; ein kritischer Befund in der statischen Analyse blockiert den Merge; eine Änderung, die eine zirkuläre Abhängigkeit in der Architektur erzeugt, löst eine Überprüfung aus. Dadurch verlagert sich die Qualitätssicherung von Audits nach der Veröffentlichung hin zu Feedback während der Entwicklung. So werden die Kosten für Qualitätsprobleme gesenkt, da diese erkannt werden, wenn ihre Behebung am kostengünstigsten ist.

Software Intelligence für verschiedene Zielgruppen

Der Wert von Softwareintelligenz ist nicht einheitlich für alle Rollen; verschiedene Zielgruppen ziehen unterschiedliche Arten von Nutzen aus der gleichen zugrunde liegenden Strukturanalyse.

Funktion / Rolle (Role) *HauptnutzenSchlüsselausgabe
SoftwareentwicklerUnbekannten Code verstehen, Abhängigkeiten nachverfolgenAufrufdiagramme, Querverweise, Codesuche
Software-ArchitektenPlanungsänderungen, Bewertung des strukturellen RisikosAbhängigkeitskarten, Wirkungsanalysen, Komplexitäts-Heatmaps
IT-ManagementÄnderungsgenehmigung, RisikoüberwachungWirkungsanalysen, Qualitätskennzahlen, Kennzahlen zur technischen Verschuldung
SicherheitsteamsSchwachstellenanalyse, ComplianceErgebnisse der statischen Sicherheitsanalyse, Daten zu Abhängigkeitsschwachstellen
GeschäftsanalystenSystemumfangsverständnis, Nachweis der KonformitätVereinfachte Diagramme, Prozessablaufdokumentation
Fusionen und Übernahmen sowie Due DiligenceBewertung der CodebasisqualitätQualitätskennzahlen, Verschuldungsgrad, Risikoklassifizierungsberichte

Wie SMART TS XL Liefert Software-Intelligenz

SMART TS XL ist die Software Intelligence®-Plattform von IN-COM, die speziell für Unternehmen entwickelt wurde, die Softwarelandschaften mit unterschiedlichen Sprachen, Plattformen und Technologiegenerationen betreiben. Während die meisten Softwareanalysetools nur in einer einzigen Sprache arbeiten, SMART TS XL Erstellt ein einheitliches Intelligenzmodell, das COBOL, JCL, Java, Python, .NET, RPG, PL/I, SQL und andere gleichzeitig abdeckt.

Die statische Codeanalyse liefert Qualitätsmetriken, Sicherheitsergebnisse und Strukturdaten für jede Komponente der Umgebung. Die Abhängigkeitsabbildung erstellt den sprachübergreifenden Abhängigkeitsgraphen, der die Verbindungen zwischen allen Komponenten darstellt. Die Auswirkungsanalyse ermöglicht die Abfrage dieses Graphen: Jede vorgeschlagene Änderung listet alle betroffenen Komponenten auf. Die JCL-Erweiterung löst die Mainframe-Jobsteuerungssprache auf, einschließlich der symbolischen Parameterersetzung in katalogisierten Prozeduren, um die tatsächlichen Programme und Datensätze jedes Batch-Jobs anzuzeigen. Die unternehmensweite Suchfunktion macht das einheitliche Modell auffindbar: Jedes Element der Softwarelandschaft kann in Sekundenschnelle sprachübergreifend durchsucht werden. Die Codevisualisierung wandelt das Abhängigkeitsmodell in navigierbare Diagramme um, die die Systemstruktur für jedes Publikum verständlich machen.

Die Plattform ist für Umgebungen konzipiert, in denen der Softwarebestand ein Ausmaß und eine Komplexität erreicht hat, die das vollständige Verständnis einzelner Personen übersteigen, und in denen der Nutzen einer systematischen, automatisierten und stets aktuellen Strukturanalyse am größten ist. Sie eignet sich für Organisationen, die die Modernisierung bestehender Systeme planen, Veränderungen in komplexen Systemen managen, technische Due-Diligence-Prüfungen durchführen oder die Wissensinfrastruktur für Entwickler aufbauen, die eine schnelle und sichere Entwicklung ermöglicht. SMART TS XL stellt die Software-Intelligenzschicht bereit, die dies ermöglicht.

Warum Software Intelligence für die Unternehmens-IT unerlässlich ist

Die Menge an Software, die in Unternehmen eingesetzt wird, hat ein Ausmaß erreicht, in dem informelle Ansätze für deren Verwaltung, Dokumentation, Entwicklerwissen und manuelle Code-Reviews strukturell unzureichend sind. Die Dokumentation ist oft unvollständig und veraltet. Das Entwicklerwissen ist verteilt, inkonsistent und bleibt bei den jeweiligen Personen. Manuelle Code-Reviews sind zu langsam und zu stark von der Vorkenntnis des Prüfers über das System abhängig.

Softwareintelligenz ist die systematische Antwort auf diese strukturelle Unzulänglichkeit. Sie ersetzt nicht das Wissen der Entwickler, sondern erweitert und bewahrt es und stellt es jedem Teammitglied zur Verfügung, anstatt es auf Einzelpersonen zu konzentrieren. Sie ersetzt nicht die Dokumentation, sondern generiert direkt aus dem Code eine strukturelle Dokumentation, die mit der Weiterentwicklung des Codes stets aktuell bleibt. Sie ersetzt nicht die Code-Review, sondern bietet die automatisierte Analyse, die den Reviewern den notwendigen strukturellen Kontext für eine präzise Bewertung von Änderungen liefert.

Organisationen, die in Software-Intelligenz-Infrastruktur investieren, erzielen einen kumulativen Vorteil: Jede Änderung basiert auf einem präzisen Strukturmodell und nicht auf Schätzungen und Annahmen. Jede Migration wird mit umfassenden Informationen geplant und nicht stückweise erarbeitet. Neue Entwickler werden anhand einer übersichtlichen und durchsuchbaren Systemdarstellung eingearbeitet und nicht anhand jahrelang angesammelten Erfahrungswissens. Die Qualität der Entwicklungsentscheidungen verbessert sich, da die zugrunde liegenden Informationen besser werden. Das ist der Nutzen von Software-Intelligenz, und deshalb betrachten Organisationen mit komplexen Softwarelandschaften sie als Infrastruktur und nicht nur als Werkzeug.