Ich war an einem Projekt beteiligt, bei dem das gesamte System in Oracle Forms geschrieben wurde, jedoch ohne Dokumentation. Die Technologie hätte leicht Perl sein können. Hier ist der Angriffsplan für die Migration des Systems auf Oracle ADF (könnte aber genauso gut jede andere Plattform sein):
- Erstellen Sie eine Reihe von Codekategorien für Geschäftsanforderungen (Funktionen, Fehler, Validierung, Benutzeroberfläche usw.).
- Erstellen Sie eine Reihe von Kategorien für die Bildschirme (gruppieren Sie sie nach ähnlichen Funktionen).
- Erstellen Sie eine Liste aller Bildschirme für die gesamte Anwendung und führen Sie sie in einer Tabelle auf.
- Weisen Sie jedem Bildschirm eine Codekategorie und einen Codetyp zu (z. B. Geschäftsregel, Systemanforderung, technisch).
- Reverse Engineering des Codes zum Extrahieren der Geschäftsanforderungen und Erstellen einer einsatzigen Beschreibung jeder Anforderung.
Zu diesem Zeitpunkt haben Sie die Geschäftsregeln für die Anwendung dokumentiert . Dies allein ist Gold für jeden, der als nächstes das System warten muss. Darüber hinaus können Sie sehen, welche Teile des Systems dupliziert wurden. (In meinem Fall haben wir festgestellt, dass über 60% der Codebasis dupliziert wurden.)
Von hier aus können Sie die Geschäftsanforderungen mit dem Management sortieren. Dies kann beispielsweise das Erstellen von User Stories beinhalten. Dies wird auch doppelte Funktionen auf hoher Ebene aufzeigen und Möglichkeiten bieten, das System während der Migration sowohl zu vereinfachen als auch zu verbessern. Ich habe einen Screenshot der Tabelle beigefügt, um einen Weg zur Verfolgung und Dokumentation der Anforderungen aufzuzeigen.
Möglicherweise müssen Sie Ihren Perl auffrischen. ;-);

Sobald Sie das Projekt rückentwickelt haben, können Sie eine Reihe von Tools einsetzen, die Sie beim Lebenszyklus der Softwareentwicklung unterstützen. (Wir verwenden JIRA , aber es gibt viele andere Software-Suiten, die funktionieren würden.) Möglicherweise müssen Sie einige Kämpfe führen, aber sobald Sie die Anforderungen erfüllt haben, möchten Sie in die folgenden Umgebungen wechseln:
- Erstellen Sie eine Dokumentationsumgebung (z. B. ein Wiki).
- Erstellen Sie eine Entwicklungsumgebung (DEV). Webserver, Datenbankserver, Quell-Repository usw.
- Erstellen Sie eine Testumgebung (TEST), die die Entwicklung widerspiegelt.
- Erstellen Sie eine Vorproduktionsumgebung (PREPROD), die die Produktion genau widerspiegelt und als Failover für das Produktionssystem fungieren kann.
- Erstellen Sie eine Produktionsumgebung (PROD).
Überlegen Sie, ob Sie einen Community-orientierten Dienst verwenden möchten, um die Anforderungen der Endbenutzerdokumentation zu erfüllen. Ein ausgezeichnetes Softwarepaket ähnlich der StackExchange-Suite ist OSQA . Lassen Sie die Benutzer das Hilfesystem erstellen (es ist eine ziemlich clevere Strategie).
Der SDLC wird:
- Entwickler nehmen Anwendungsänderungen in DEV vor und testen sie (mithilfe eines Repositorys ).
- Systemtools stellen regelmäßig reguläre Builds in TEST bereit.
- Sobald die Tester mit der Anwendung zufrieden sind, wird die Anwendung in PREPROD bereitgestellt. Dadurch kann auch der Bereitstellungsprozess getestet werden. Weitere Tests finden in PREPROD statt.
- Sobald die Tester mit PREPROD zufrieden sind, wird die Anwendung schließlich in PROD gerollt.
Ich finde, dass dies ein hoch organisierter Ansatz ist, der mit verschiedenen Entwicklungsmethoden gut funktioniert. Der erste Durchgang, den ich hier beschrieben habe, sollte als "breiter Pinselstrich" betrachtet werden - Sie möchten an dieser Stelle nicht zu detailliert (festgefahren) mit technischen Details werden. (Die Anforderungen an die Benutzeroberfläche werden beispielsweise von jedem Bildschirm erfasst. Solange die Bildschirme aufgelistet sind, müssen Sie nicht jedes einzelne Eingabefeld durchlaufen, sondern nur einen Link zu einem Screenshot oder einer Arbeits-URL erstellen.)
Um den Quellcode zu überprüfen, haben wir schließlich eine Reihe von Webseiten automatisch generiert (eine Webseite pro funktionalem "Bildschirm"). Dies funktionierte gut, da der PL / SQL-Code in separate Dateien aufgeteilt und automatisch mit Syntaxhervorhebung in HTML konvertiert werden konnte. Mit Perl funktioniert dies möglicherweise nicht so gut für Sie. Die Idee ist jedoch, dass Sie Ankerlinks innerhalb der Tabelle erstellen können, die auf den Codeabschnitt verweisen, der die Geschäftsanforderungen erzwingt. (Abgesehen davon würde dies auch mehreren Entwicklern ermöglichen, die Systemanforderungen parallel rückzuentwickeln, da jeder Entwickler gleichzeitig verschiedene Bildschirme bearbeiten kann.)
Ein Beispiel für einen Quellcode-Ausschnitt (das + ist ein Ankerlink):

Sie können empfehlen, ein paar Perl-Gurus zu engagieren, um bei der Analyseaufgabe zu helfen.
Ich denke nicht, dass es sehr produktiv ist, darauf hinzuweisen, dass andere Leute "beschissene Arbeit" machen; Vielmehr sollten Sie versuchen, das Produkt zu verbessern und den Menschen die Möglichkeit zu geben, bei diesem Ziel zu helfen (und vielleicht zu lernen, wie sie ihre Fähigkeiten in diesem Prozess verbessern können). Das heißt, Sie wissen nicht, was die anderen Entwickler wissen, und Sie waren auch nicht dort, als sie das System entwickelten. Dieser Ansatz macht den gesamten Prozess offen und gut sichtbar, wobei jeder einen Beitrag leisten kann.
Manager werden sich selbst davon überzeugen, wer wirklich hilfreich ist und wer sich verbessern möchte.