Ein Legacy-Code-Audit, das sein Geld wert ist
Ein Legacy-Code-Audit muss Module abbilden, toten Code messen, Geschäftsrisiken ordnen und jede Migrationsphase mit einem Preis versehen.

Ein Legacy-Code-Audit ist sein Geld nur wert, wenn ein anderes kompetentes Team damit arbeiten kann, ohne ein zweites Discovery-Projekt zu kaufen. Es muss erklären, was vorhanden ist, was noch läuft, welche Geschäftsprozesse ausfallen können und was jede sinnvolle Änderungseinheit kostet. Endet das Dokument bei Architekturdiagrammen, Codequalitätswerten und der Empfehlung zur Modernisierung, haben Sie ein Verkaufsdokument gekauft.
Ich habe Audits geprüft, die wegen ihres Umfangs teuer aussahen. Die brauchbaren waren meist schwerer zu erstellen und leichter zu lesen. Jede Aussage führte zu Code, Laufzeitnachweisen, einem Gespräch mit Verantwortlichen oder einer ausdrücklich genannten Annahme zurück. Jede vorgeschlagene Phase hatte eine Grenze, einen Abnahmetest, Abhängigkeiten und einen Preis. Diese Nachvollziehbarkeit zieht die Trennlinie.
Das Audit muss die Systemgrenze vor der Bewertung festlegen
Ein glaubwürdiges Audit nennt zuerst genau, was untersucht wurde und was nicht. Altsysteme passen selten in ein einziges Repository. Eine COBOL-Anwendung kann von JCL, Scheduler-Definitionen, Copybooks, DB2-Objekten, Dateiübertragungen und einer von der Finanzabteilung gepflegten Excel-Arbeitsmappe abhängen. Eine Desktop-Anwendung greift vielleicht direkt auf eine gemeinsame Datenbank zu, während ein nächtliches Skript Datensätze korrigiert, die sich über die Oberfläche nicht reparieren lassen. Wer solche Ränder auslässt, macht alle späteren Schlüsse unzuverlässig.
Das Umfangsregister sollte Repositorys, Branches, bereitgestellte Versionen, Build-Dateien, Datenbankschemas, Jobdefinitionen, Schnittstellen, Konfigurationsspeicher, Berichte und Betriebsanweisungen aufführen. Für jedes Element sollte der Prüfer die Evidenzquelle und die Version oder den Beobachtungszeitpunkt festhalten. Ein Repository-Name ohne Commit-ID belegt nicht, was analysiert wurde. Ein aus der Entwicklungsumgebung exportiertes Datenbankschema beweist nicht, was die Produktion nutzt.
Das Audit braucht auch eine Ausschlussliste. Vielleicht lässt sich ein Anbieterpaket nicht prüfen, Produktionsprotokolle reichen nur sieben Tage zurück oder das Team kann den alten Compiler nicht starten. Das sind keine Fußnoten. Sie begrenzen die möglichen Aussagen. Jeder Ausschluss sollte seine Folge nennen, etwa: "Die Erreichbarkeit der Batch-Verarbeitung bleibt unklar, weil kein Scheduler-Verlauf verfügbar war."
Verlangen Sie eine Abdeckungstabelle mit vier Spalten: Asset, untersuchte Evidenz, Vertrauensgrad und Lücke. Der Vertrauensgrad muss die Qualität der Belege wiedergeben, nicht das Gefühl des Prüfers. Code zusammen mit Build-Ausgabe und Produktionstraces verdient mehr Vertrauen als ein Interview allein. Zieht der Bericht starke Schlüsse, ohne Grenze und Lücken offenzulegen, lässt sich die Analyse nicht reproduzieren und der Preis kaum rechtfertigen.
Eine Modulkarte muss Verhalten, Daten und Verantwortung zeigen
Eine brauchbare Modulkarte ist ein mit Abhängigkeitsbelegen verbundenes Inventar, keine Seite mit bunten Kästen. Ein Ingenieur muss ein Modul auswählen und vier Fragen beantworten können: Wer ruft es auf, was ruft es auf, welche Daten liest oder ändert es und welcher Geschäftsprozess hängt davon ab? Die Karte kann ein Graph, eine Tabelle oder beides sein. Wichtiger als das Format sind stabile Kennungen und nachvollziehbare Kanten.
Jeder Knoten sollte mindestens Repository-Pfad, Sprache, Deployable oder Job, Einstiegspunkte, berührte persistente Daten, externe Schnittstellen, Ausführungszeitplan oder Trigger und bekannte Verantwortliche enthalten. Jede Kante sollte erklären, warum der Prüfer die Abhängigkeit annimmt. Statische Aufrufauflösung, Importanalyse, SQL-Parsing, Scheduler-Konfiguration, Nachrichtenmetadaten und beobachteter Verkehr sind verschiedene Belegarten. Wer sie ohne Kennzeichnung vermischt, versteckt Unsicherheit.
Die Analyse von Legacy-Abhängigkeiten ist unordentlich. Dynamische Aufrufe, generierte Namen, Reflection, gemeinsame Tabellen, temporäre Dateien und Steuerdatensätze können einen einfachen Parser aushebeln. Der Bericht sollte ungelöste Kanten bewahren, statt sie still zu löschen. Ein Knoten mit dem Vermerk "Ziel wird zur Laufzeit berechnet" ist nützlich, ein sauberes Diagramm ohne den Aufruf gefährlich. Zyklen müssen sichtbar bleiben, weil sie oft die Reihenfolge der Extraktion bestimmen.
Die Karte braucht außerdem eine Geschäftssicht. "Programm ARUPD07 ruft Unterprogramm DATECNV auf" hilft einem Ingenieur. "Der Abschluss der Zahlungseingangszuordnung hängt von ARUPD07 und dem Bankdateiimport ab" hilft bei der sicheren Reihenfolge. Beide Sichten gehören in dasselbe Modell, verbunden durch Evidenz. Muss nach der Lieferung ein Workshop diese Beziehung neu herstellen, ist das Ergebnis unvollständig.
Fordern Sie die zugrunde liegenden Daten an, nicht nur gerenderte Diagramme. Eine einfache Kantendatei reicht für eine prüfbare Arbeit:
source_id,target_id,edge_type,evidence,confidence,business_process
ARUPD07,DATECNV,static_call,src/ar/ARUPD07.cbl:418,high,cash_application
NIGHTLY_AR,ARUPD07,schedule,ops/sched/nightly.jcl:77,high,cash_application
ARUPD07,BANK_RATE,dynamic_call,production_trace:sample_042,medium,cash_application
Ein Team kann diese Datei vergleichen, abfragen und in ein beliebiges Graphwerkzeug laden. Ein Screenshot in einer PDF trägt weder Planung noch spätere Prüfung.
Toter Code ist eine gemessene Aussage, keine Scannerquote
Das Audit muss zwischen unerreichbarem, nicht beobachtetem, ruhendem Code und ungenutzten Datenstrukturen unterscheiden, weil daraus unterschiedliche Entscheidungen folgen. Teams vermischen diese Kategorien häufig und löschen dann etwas, das nur zum Jahresende läuft. Statische Erreichbarkeit kann zeigen, dass kein bekannter Einstiegspunkt eine Prozedur erreicht. Eine Laufzeitbeobachtung zeigt nur, dass die Prozedur im Beobachtungsfenster nicht lief. Diese Aussagen sind nicht gleich.
Ein Register für toten Code sollte Einheit, Methode, Beobachtungsfenster, abgedeckte Geschäftszyklen, Gegenbelege, Vertrauensgrad und empfohlene Maßnahme nennen. Eine Zeilenzahl allein ist schwach. Zehntausend generierte Zeilen lassen sich womöglich sicher neu erzeugen, während zwanzig Zeilen einer Steuerausnahme ein hohes Geschäftsrisiko tragen. Messen Sie nach logischer Einheit und Verhalten, bevor Sie daraus einen Prozentsatz bilden.
Der Prüfer sollte, soweit die Plattform es erlaubt, mehrere Evidenzarten nutzen: Build-Referenzen, statische Erreichbarkeit, Scheduler-Verlauf, Produktionstraces, Datenbankzugriffsaufzeichnungen, Feature Flags und Gespräche mit Betreibern. Keine Quelle ist allein vollständig. Jobverläufe können manuell gestartete Wiederherstellungsarbeiten verpassen. Produktionstraces können Quartalsendpfade auslassen. Interviews bewahren manchmal Folklore, lange nachdem eine Funktion stillgelegt wurde. Stimmen unabhängige Quellen überein, steigt die Sicherheit. Widersprüche gehören in den Bericht.
Ein belastbarer Eintrag könnte lauten: "Modul CLAIMS_REPRINT hat keine statischen Aufrufer, keinen Scheduler-Eintrag und wurde über zwei normale Abrechnungszyklen nicht ausgeführt. Laut Betrieb startet der Support es nach Druckerfehlern manuell. Einstufung: ruhender Wiederherstellungspfad, nicht tot. Maßnahme: behalten, bis der Ersatz dieses Verfahren enthält." Dieser Absatz ist nützlicher als ein Dashboard mit angeblich 18 Prozent totem Code.
Verlangen Sie für jede Kennzahl Zähler und Nenner. Bedeutet "ungenutzt" Zeilen, Funktionen, Programme, Tabellen, Masken oder Batch-Schritte? Wurden Kommentare und generierte Quellen ausgeschlossen? Erfasste der Scan bedingte Kompilierung und dynamisch aufgelöste Aufrufe? Kann das Audit diese Fragen nicht beantworten, behandeln Sie die Quote als Untersuchungshinweis, nicht als Grundlage für Umfang oder Einsparung.
Risiken müssen auf Geschäftsprozesse und Fehlerbilder zeigen
Eine priorisierte Risikoliste ist nur dann brauchbar, wenn jeder Eintrag eine technische Bedingung mit einem Geschäftsereignis, einem Fehlerbild und beobachtbarer Auswirkung verbindet. "Hohe Kopplung" ist noch kein Risiko. "Der Rechnungslauf und der Kreditlimitdienst aktualisieren dieselbe Salden-Tabelle mit verschiedenen Regeln; ein Teilfehler kann Aufträge trotz veraltetem Saldo freigeben" ist ein Risiko, das die Leitung bewerten kann.
Jeder Eintrag sollte betroffenen Geschäftsprozess, auslösendes Ereignis, technische Ursache, Fehlerverhalten, Erkennungsmethode, vorhandene Kontrolle, wahrscheinliches Ausmaß, Evidenz und Behebungsoption enthalten. Die Einstufung muss zeigen, wie Wahrscheinlichkeit und Auswirkung bestimmt wurden. Exakt wirkende Zahlen machen subjektive Eingaben nicht objektiv. Einfache Skalen mit schriftlichen Definitionen sind oft besser als Dezimalwerte.
Lassen Sie Wartbarkeitsbefunde nicht über Produktionsverhalten rangieren, nur weil statische Analyse sie leicht zählt. Eine Prozedur mit 4.000 Zeilen kann unangenehm, aber stabil, gut abgegrenzt und selten geändert sein. Eine ordentliche Abgleichroutine mit 200 Zeilen kann still Datensätze verlieren, wenn eine Datei doppelt eintrifft. Stufen Sie den zweiten Fall höher ein, wenn die Evidenz das trägt. Geschäftliche Exposition, Änderungshäufigkeit, Wiederherstellbarkeit und Erkennungsverzug zählen mehr als ästhetische Verstöße.
Risiken brauchen Verantwortliche. Verantwortlich ist meist die Person, die das Geschäftsrisiko beheben oder akzeptieren kann, nicht zwingend der Entwickler mit Modulwissen. Kann niemand ein Risiko übernehmen, weil der Prozess keinen klaren Eigentümer hat, erfassen Sie diese Governance-Lücke, statt "IT" einzutragen.
Ich nutze bei der Prüfung einen direkten Test: Erkennt die Person, die den Prozess ausführt, den beschriebenen Fehler? Können Debitorenbuchhaltung, Lagerbetrieb oder Compliance den Eintrag nicht mit einem eigenen Ereignis verbinden, hat der Prüfer wahrscheinlich Codegerüche statt Betriebsrisiken priorisiert.
Laufzeitbelege müssen den entscheidenden Kalender abdecken
Ein Produktionstrace ist nur brauchbar, wenn sein Beobachtungsfenster zum Geschäftskalender passt. Dreißig normale Tage können Tausende Webanfragen enthalten und trotzdem Quartalsberichte, jährliche Verlängerungen, saisonale Preise oder einen seltenen Wiederherstellungsjob verpassen. Das Audit muss ausweisen, welche Zyklen belegt sind und welche nicht.
Beginnen Sie mit einem Prozesskalender: tägliche, wöchentliche, Monatsend-, Quartalsend-, jährliche, ereignisgesteuerte und reine Wiederherstellungsarbeit. Ordnen Sie dann die Ausführungsevidenz zu. So verdrängt ein Online-Pfad mit hohem Volumen kein seltenes Batch-Verhalten. Der Kalender sollte aus Scheduler-Konfiguration, Betriebsanweisungen, Transaktionsaufzeichnungen und Interviews stammen, nicht allein aus Erinnerung.
Datenschutz und Betriebsgrenzen gehören zur Methode. Der Prüfer muss womöglich mit Anfrageformen, Hashes, Mengen, Stichproben oder geschwärzten Protokollen statt mit rohen Produktionsdaten arbeiten. Der Bericht muss erklären, wie sensible Felder behandelt wurden und welche Genauigkeit verloren ging. Zugangsdaten oder personenbezogene Daten haben in einem Ergebnis nichts zu suchen, nur um Tracing zu belegen.
Das Ergebnis sollte genug Rohstruktur zeigen, um Schlüsse zu testen: Trace-IDs, Zeitstempel, Einstiegspunkte, Exit-Status, aufgerufene Komponenten, berührte Tabellen oder Dateien und die Zuordnung zu einem Geschäftsprozess. Aggregate müssen mit den Beobachtungen darunter verbunden bleiben. Sonst kann ein Prüfer einen Pfad "heiß" oder "ungenutzt" nennen, ohne den Grund zu zeigen.
Fehlende Telemetrie rechtfertigt nicht die Behauptung, Code sei tot. Sie ändert die Empfehlung. Der Phasenplan kann Instrumentierung, ein längeres Beobachtungsfenster oder einen kontrollierten Replay vor einer Löschung vorsehen. Unsicherheit ist in alten Systemen normal. Sie zu verstecken nicht.
Der Phasenplan braucht Grenzen, Nachweise und Preise
Eine Phase ist nur kaufbar, wenn Umfang, Abhängigkeiten, Abnahmebelege und Preis ausdrücklich genannt sind. Bezeichnungen wie "Grundlage, Transformation, Optimierung" verraten nicht, was nach der Rechnung anders ist. Eine gute Phase nennt den Geschäftsausschnitt oder die technische Naht, die geänderten Assets, stabil gehaltene Schnittstellen und den nötigen Abnahmenachweis.
Jede Phase sollte fünf Punkte nennen:
- Enthaltene Module, Daten, Schnittstellen und Geschäftsprozesse.
- Voraussetzungen und Entscheidungen des Kunden.
- Ergebnisse und die Umgebung, in der sie laufen.
- Abnahmetests einschließlich Verhaltensparität und Betriebsprüfungen.
- Festpreis oder begrenzte Preisspanne mit verändernden Annahmen.
Preise ohne Annahmen sind Lockmittel. Annahmen können den Zugriff auf Build-Werkzeuge, repräsentativen Verkehr, den Zustand der Datenbankdefinitionen, Lizenzgrenzen oder die Verantwortung des Kunden für die Benutzerabnahme betreffen. Jede Annahme sollte auf einen bepreisten Änderungsmechanismus zeigen. Erzeugt eine fehlende Schnittstellendefinition zusätzliche Arbeit, muss der Bericht die Neuabgrenzung oder Preisänderung erklären, statt allgemein mehr Abrechnung vorzubehalten.
Die Reihenfolge braucht eine Begründung. Teams starten oft mit einem kleinen isolierten Modul, weil es sicher wirkt. Das kann Syntaxkonvertierung belegen, lehrt aber nichts über die schwierigen Abhängigkeiten. Eine bessere erste Phase überquert oft eine repräsentative Naht, testet Datenpfad, Build-Pipeline, Bereitstellungsmodell und Paritätsmethode und begrenzt dabei die geschäftliche Exposition. Das Audit muss erklären, warum Phase eins die größte Planungsunsicherheit reduziert.
Wenn die Evidenz mehrere Wege trägt, gehören Alternativen in den Plan. Das Team könnte zuerst einen Preisdienst extrahieren oder vor der Extraktion den Vertrag der gemeinsamen Datenbank stabilisieren. Zeigen Sie Kosten, Abhängigkeiten und Risikotausch. Eine einzige vorgeschriebene Roadmap kann die Vorliebe des Prüfers als technische Notwendigkeit tarnen.
Schätzungen müssen aus der Evidenz rekonstruierbar sein
Eine vertrauenswürdige Schätzung lässt ein anderes erfahrenes Team nachvollziehen, wie aus Umfang ein Preis wurde. Lohnkosten oder Marge müssen nicht offenliegen, wohl aber Einheiten, Komplexitätstreiber, Ausschlüsse, Reserven und Annahmen. Sonst ist die Zahl eine Verhandlungseinladung statt eines Planungsinstruments.
Das Schätzmodell sollte mit Modul- und Risikoregister verbunden sein. Enthält eine Phase zwölf Programme, drei Batch-Jobs, zwei externe Schnittstellen und eine gemeinsame Tabelle, muss sie genau diese Kennungen referenzieren. Komplexitätsaufschläge sollen die Bedingung nennen: dynamische Aufrufe, fehlende Build-Automation, undokumentierte Dateiformate, Datenkonvertierung oder fehlende Testumgebung. "Legacy-Komplexitätsfaktor" ist zu vage.
Spannen sind bei lückenhafter Evidenz vernünftig, der Bericht muss aber sagen, was sie schließt. Nimmt der untere Preis einen reproduzierbaren Build an und der obere dessen Rekonstruktion, kann ein eintägiger Build-Test die Unsicherheit in ein festes Angebot verwandeln. Das ist nützliche Discovery. Eine breite Spanne ohne Entscheidungsregel verlagert das Schätzrisiko nur auf den Käufer.
Fordern Sie ein prüfbares Phasenblatt:
Phase: cash application slice
Scope IDs: NIGHTLY_AR, ARUPD07, DATECNV, BANK_RATE
Base work: behavior capture, target implementation, data adapter, deployment
Risk allowances: dynamic call resolution; incomplete printer-recovery trace
Customer inputs: redacted traffic set; operations reviewer
Acceptance: replay parity; close totals match; recovery procedure demonstrated
Price: [amount or bounded range]
Range closes when: build and recovery-path tests complete
Die Schätzmethode kann variieren. Die Kette vom entdeckten Asset über die Arbeitseinheit zum Preis darf es nicht. Will der Prüfer diese Kette wegen eines proprietären Verfahrens nicht zeigen, können Sie nicht erkennen, ob der Preis Ihr System oder ein Vertriebsziel abbildet.
Ein echtes Audit hinterlässt anfechtbare Evidenz
Das Endpaket sollte bearbeitbare Register und maschinenlesbare Exporte neben dem Bericht enthalten. Ihre Ingenieure müssen alle ruhenden Module mit hohem Vertrauensgrad filtern, ein Risiko bis zu den betroffenen Tabellen verfolgen oder sehen können, welche Phase eine Schnittstelle besitzt. Kontrolliert der Prüfer das einzige funktionierende Modell, haben Sie Verständnis gemietet statt gekauft.
Fordern Sie Evidenzkennungen im gesamten Bericht. Eine Modulkante kann eine Quellposition oder einen Trace nennen. Ein Risiko kann Modulkanten, vom Kunden gelieferte Vorfälle und ein Interview referenzieren. Eine Phase kann auf reduzierte Risiken und geänderte Assets zeigen. Diese Kette macht die Prüfung konkret. Ingenieure können eine Kante oder Annahme bestreiten, statt über die Schlussfolgerung eines Beraters zu streiten.
Das Paket braucht auch Reproduktionshinweise: Werkzeuge und Versionen, Analysebefehle oder Einstellungen, Branch- und Commit-IDs, Trace-Fenster, Filter, Parsergrenzen und manuelle Korrekturen. Perfekte Automatisierung ist nicht das Ziel. Generierte Evidenz und menschliches Urteil müssen unterscheidbar und prüfbar sein.
Setzen Sie einen Termin an, in dem der Prüfer aus den gelieferten Artefakten antworten muss. Wählen Sie einen Umsatzpfad, einen Batch-Pfad, ein angeblich totes Modul und eine teure Phase. Verfolgen Sie jeden Punkt rückwärts. Reißt die Spur ab, erfassen Sie das fehlende Artefakt vor der Abnahme. Das zeigt mehr als eine weitere Präsentation.
Auch die Eigentumsrechte nach Lieferung zählen. Der Vertrag sollte festlegen, dass der Kunde die speziell erstellten Register, Schemas, Diagramme und Skripte sowie nutzbare Exporte aus proprietären Analyseumgebungen erhält. Werkzeuglizenzen können die Übertragung begrenzen, aber Ihr Systemmodell darf nicht verschwinden, wenn ein Zugang abläuft.
Verkaufsdokumente verraten sich vor dem letzten Pitch
Ein Verkaufsdokument beginnt mit einem feststehenden Ziel und sammelt gerade genug Belege zu seiner Rechtfertigung. Ein echtes Audit lässt zu, dass Evidenz die Empfehlung ändert, einschließlich der Möglichkeit, einen Systemteil zu belassen. Angebot und erste Evidenzprüfung zeigen meist, was Sie kaufen.
Achten Sie auf diese Zeichen:
- Die Ergebnisse versprechen Erkenntnisse und Empfehlungen, definieren aber weder Felder noch Evidenzquellen.
- Der Auditpreis ist niedrig, weil die Kosten über eine angenommene Umsetzung hereingeholt werden.
- Risikowerte stammen aus einem allgemeinen Scanner und haben keinen Geschäftsprozessbezug.
- Die Roadmap nutzt breite Stufen ohne Abnahmetests oder Phasenpreise.
- Der Anbieter zeigt sein Modell, liefert aber die Datensätze darunter nicht aus.
Lehnen Sie auch als Genauigkeit verkleidetes Theater ab. Ein Reifegrad von 2,7, eine rote Heatmap oder ein exakter Modernisierungsprozentsatz kann analytisch wirken und willkürliche Gewichtungen verbergen. Fragen Sie, welche Entscheidung sich bei einem anderen Wert ändert. Gibt es keine Antwort, schmückt der Wert nur den Pitch.
Unabhängigkeit ist nicht Neutralität. Ein Umsetzungsunternehmen kann ein gutes Audit erstellen, wenn es Evidenz und Empfehlung trennt, Alternativen bepreist und Artefakte übergibt. Eine Beratung ohne Lieferfähigkeit kann trotzdem einen vagen Bericht schreiben. Bewerten Sie Arbeitsergebnis und kommerzielle Anreize, nicht die Firmenbezeichnung.
Nehmen Sie vor der Unterschrift Abnahmekriterien in die Leistungsbeschreibung auf. Benennen Sie Register, Mindestfelder, Exportformate, Traceability-Verknüpfungen, Prüfverfahren und Korrekturfrist. Akzeptieren Sie "umfassender Bericht" nicht als Ergebnis. Umfassend ist ein Adjektiv, ein Modulregister mit definierten Spalten ist prüfbar.
Das Audit muss die erste Lieferentscheidung ermöglichen
Das Audit ist fertig, wenn die Leitung eine begrenzte erste Phase wählen, ihr reduziertes Risiko verstehen, betroffene Systeme und Personen sehen und einen evidenzgebundenen Preis freigeben kann. Ein dicker Bericht, der mit "weitere Discovery durchführen" endet, hat diese Schwelle nicht überschritten. Unbekanntes bleibt, doch jeder Punkt braucht einen Verantwortlichen, einen Lösungsweg und die betroffene Entscheidung.
Nutzen Sie einen abschließenden Entscheidungsdatensatz mit gewählter Phase, verworfenen Alternativen, Evidenzverweisen, offenen Annahmen, Abnahmetests, Preis und Abbruchbedingungen. Ein Abbruchgrund kann ein nicht reproduzierbarer Build, der Modulkarte widersprechender Verkehr oder eine vom externen Anbieter kontrollierte Schnittstelle sein. Solche Bedingungen schützen Käufer und Lieferteam davor, eine Schätzung trotz geänderter Grundlage weiterzutragen.
Ist ein Rewrite das Ziel, gehört die Paritätsmethode in diese Entscheidung. CodeHero liest die vollständige Codebasis und prüft das erhaltene Verhalten gegen aufgezeichneten Produktionsverkehr. Derselbe Kaufstandard gilt für jeden Anbieter: Er muss definieren, welches Verhalten er vergleicht, welcher Verkehr es repräsentiert, wie Abweichungen eingestuft werden und wer sie abnimmt. "Funktional gleichwertig" ohne Harness und Entscheidungsverfahren ist nur ein weiteres Adjektiv.
Bezahlen Sie ein Audit, wenn es Unsicherheit in nachvollziehbare Entscheidungen verwandelt. Lehnen Sie es ab, wenn es Unsicherheit in Folien verwandelt. Geben Sie die Artefakte einem Ingenieur, der keinen Workshop besucht hat, und fragen Sie nach Umfang, Evidenz, Risiko, Abnahmetest und Preis von Phase eins. Sind diese Antworten vorhanden und verknüpft, hat das Audit seine Aufgabe erfüllt.
FAQ
Was sollte ein Legacy-Code-Audit kosten?
Der Preis sollte aus untersuchten Assets, Evidenzlücken, Umgebungen und verlangten Ergebnissen folgen. Lehnen Sie eine Pauschale ohne Umfangseinheiten und Annahmen ab; Sie müssen sehen, wie Repositorys, Schnittstellen, Laufzeittracing und Prozessinterviews in die Arbeit eingehen.
Wie lange sollte ein Audit eines Altsystems dauern?
Die Dauer hängt von Zugang, Umfang, reproduzierbaren Builds, Laufzeitbelegen und dem nötigen Geschäftskalender ab. Verlangen Sie Meilensteine nach Artefaktfortschritt und lassen Sie ausgelassene Zyklen ausdrücklich nennen.
Kann statische Analyse jeden toten Code finden?
Nein. Sie kann unerreichbare Pfade innerhalb ihres Modells finden, doch dynamische Aufrufe, Scheduler-Einträge, manuelle Recovery-Jobs und seltene Geschäftszyklen können außerhalb liegen. Kombinieren Sie statische, Laufzeit- und Betriebsbelege vor jeder Löschung.
Was gehört in eine Modulkarte für Legacy-Anwendungen?
Sie sollte Module, Einstiegspunkte, Aufrufe, Datenzugriffe, Schnittstellen, Trigger, Deployables, Verantwortliche und Geschäftsprozesse enthalten. Jede Kante braucht Evidenzart und Vertrauensgrad, und der Käufer muss die Grunddaten statt nur eines Diagramms erhalten.
Soll die Auditfirma auch den Rewrite ausführen?
Das ist möglich, wenn das Audit seine Evidenz überträgt, Alternativen bepreist und nicht unabhängig von den Befunden einen Rewrite voraussetzt. Trennen Sie Auditabnahme und Umsetzungsverkauf, damit schwache Artefakte nicht wegen des Folgeauftrags durchgehen.
Wie priorisiert man Risiken in Legacy-Code?
Verbinden Sie jede technische Bedingung mit Geschäftsereignis, Fehlerbild, Erkennung, vorhandener Kontrolle und Ausmaß. Bewerten Sie Geschäftsexposition, Wiederherstellbarkeit, Änderungshäufigkeit und Evidenzqualität statt Codequalitätswerte als Betriebsrisiko zu behandeln.
Welche Belege zeigen, dass Code ungenutzt ist?
Eine einzelne Quelle reicht nicht immer. Starke Evidenz verbindet statische Erreichbarkeit, Build-Referenzen, Scheduler-Verlauf, Produktionstraces, Datenzugriffe, Feature-Konfiguration und Betriebswissen über die relevanten Zyklen.
Was muss jede Modernisierungsphase bepreisen?
Bepreisen Sie benannte Module, Schnittstellen, Datenarbeit, Verhaltenserfassung, Implementierung, Bereitstellung und Abnahmetests. Zeigen Sie Annahmen, Ausschlüsse, Risikoreserven, Kundenzulieferungen und die Preisregel bei falschen Annahmen.
Wie prüft ein Käufer ein Audit vor der Abnahme?
Wählen Sie repräsentative Online-, Batch-, ruhende und risikoreiche Pfade und verfolgen Sie jeden Schluss bis zu den gelieferten Belegen. Prüfen Sie, ob ein anderer Ingenieur Umfang und Schätzung ohne Workshop-Erinnerung oder Privatwerkzeug des Prüfers rekonstruieren kann.
Was zeigt am klarsten ein Verkaufsdokument?
Seine Empfehlungen sind konkret, während Evidenz und Ergebnisse vage bleiben. Kann der Anbieter das Ziel nennen, aber keine bearbeitbaren Register, nachvollziehbaren Risiken, Abnahmetests und Phasenpreise liefern, stand der Verkauf vor der Analyse.