Wie sollte ein Nicht-IT-Manager die langfristige Wartung und Entwicklung der wichtigsten Legacy-Software sicherstellen?

13

Wir sind ein kleines, sehr spezialisiertes Unternehmen für die Verwaltung von Sozialleistungen mit einer äußerst nützlichen und robusten Sammlung von Software, von denen einige in COBOL, die meisten jedoch in BASIC geschrieben sind. Zwei hauptberufliche Berater haben dieses System in mehr als 30 Jahren geschickt gewartet und verbessert. Unnötig zu erwähnen, dass sie bald in Rente gehen werden. (Eine von ihnen wollte schon seit einigen Jahren in Rente gehen, ist aber einem Fehler treu und bleibt so, obwohl ihr Mann darauf besteht, dass Golf Vorrang hat.)

Wir haben den Weg der Umstellung auf ein System beschritten, das von einer der drei Firmen des Landes entwickelt wurde, die die von uns verwendete Software anbieten. Wir sind jetzt der Meinung, dass diese Firma zwar theoretisch in der Lage ist, den Konvertierungsprozess abzuschließen, aber nicht über die Ressourcen verfügt, um dies rechtzeitig zu tun, und wir sind der Überzeugung, dass sie nicht in der Lage sein wird, die Art von Service anzubieten, die wir ausführen müssen unser Geschäft. (Es geht nichts über die Möglichkeit, eigene Prioritäten zu setzen und die Befugnis zu haben, die Ressourcen nach Belieben zuzuweisen.)

Hardware ist kein Problem - wir können sehr effektiv auf modernen Servern emulieren. Wenn COBOL und BASIC moderne Sprachen wären, wären wir bereit, das Risiko einzugehen, dass wir in Zukunft Ersatz für unsere derzeitigen Berater finden.

Es scheint, dass es ein Geschäftsmodell für ein IT-Support-Unternehmen geben sollte, das sich auf ältere Plattformen wie diese konzentriert und das Programmier- und Softwareentwicklungstalent bereitstellt, um ein System wie das unsrige zu unterstützen die Aufgabe, jüngere Programmierer davon zu überzeugen, dass sie eine produktive und lohnende Karriere haben können, zum Teil in einer alten, nicht sexy Sprache wie BASIC.

Kurz gesagt, wie können wir als Nicht-IT-Manager diesen Übergang am besten bewältigen?

user105977
quelle
6
Autsch! BASIC und COBOL?!? Ich würde ein Altersheim versuchen. Haben Sie daran gedacht, Ihre Software zu "modernisieren"?
BЈовић
2
Nur um hinzuzufügen: produktive, lohnende Karriere, teilweise in einer alten, nicht sexy Sprache wie BASIC. - BASIC und produktive, lohnende Karriere gehen nicht in einem Satz mit
BЈовић
3
Es gibt viele Auftragnehmer und Beratungsunternehmen, die Software aus Altsystemen migrieren. Cobol und Basic sind jedoch kein Vermächtnis, sondern prähistorisch. Obwohl es seltsam ist, ist es wahrscheinlich ziemlich einfach, jemanden einzustellen, da er wahrscheinlich auf Hipster-Hacker-Art cool ist.
NimChimpsky
3
Ich werde mit @ BЈовић in diesem Fall einverstanden sein. Sie sollten erwägen, Ihre Software zu modernisieren, anstatt zu versuchen, eine Lebenserhaltung für etwas so Altes wie BASIC und COBOL zu finden, zumindest im Interesse der Zukunftssicherheit. Im Moment finden Sie vielleicht einige Oldies oder Hipster-Kids, die für Sie kodieren können, aber im Laufe der Jahre und mit sich ändernden Paradigmen werden diese Talente zu gefährdeten Arten, die wiederum den langsamen und stetigen Untergang Ihres Systems verursachen. Die bloße Tatsache, dass Sie kaum Programmierer finden können, sollte eine rote Fahne sein, dass es Zeit für eine Änderung ist.
Maru
2
@ user105977 - Mein bester Rat wäre, das aktuelle System zu dokumentieren (sofern es nicht bereits dokumentiert ist), damit sich Ihre Berater wohl fühlen, wenn sie von einem Bus angefahren werden oder in den Ruhestand gehen. Jemand könnte nach ihnen kommen und das Projekt leiten. Sobald Sie die Dokumentation des Projekts (Spezifikationen, Projektanforderungen usw.) haben, sind Sie nicht in einer so schlechten Position. Ich bin mit den meisten Kommentaren zu diesen Sprachen nicht einverstanden, sie werden immer noch nachgefragt, und die Kenntnis dieser Sprachen ist viel Geld wert. Ein junger Entwickler sollte in der Lage sein, diese Sprachen schnell zu lernen.
Ramhound

Antworten:

11

Es mag den Anschein haben, dass "es ein Geschäftsmodell für ein IT-Support-Unternehmen geben sollte, das sich auf ältere Plattformen wie diese konzentriert", aber ich persönlich denke, dass dies nur Wunschdenken von Ihrer Seite ist, da es die Herausforderungen "lösen" würde, denen Sie sich in einem Unternehmen gegenübersehen fiel sturzflug.

In alten Umgebungen stecken zu bleiben, ist nicht der richtige Weg. Und ich für meinen Teil würde das Leben eines Unternehmens nicht darauf wetten, festzuhalten, indem ich eine Firma finde, die bereit wäre, das zu tun, was Sie anscheinend nicht können.

Also keine Antwort auf die eigentliche Frage, die Sie gestellt haben, sondern aufrichtige Ratschläge, wie Sie vorankommen und gleichzeitig die Risiken einer Migration auf ein Minimum beschränken können.

Lesen Sie "So überleben Sie eine grundsätzliche Umschreibung, ohne Ihren Verstand zu verlieren"

Machen Sie nicht den Fehler eines langen Migrationsprojekts, das lange Zeit keine wirklichen Ergebnisse liefert. Lesen Sie "So überleben Sie eine grundsätzliche Umschreibung, ohne Ihren Verstand zu verlieren"

Ich kann nicht genug betonen, wie der Rat in diesem Artikel mir geholfen hat, ähnliche Probleme anzugehen / anzugehen, nachdem ich mich verbrannt habe, solche Projekte auf die "alte" Weise zu machen.

Richten Sie automatisierte Tests ein

Wenn Sie es noch nicht installiert haben (warum auch immer nicht?), Lassen Sie Ihre aktuellen Programmierer ein automatisiertes Test-Harness für Ihre Anwendungen erstellen.

Die automatisierte Testsuite sollte alle Funktionsbereiche Ihrer Anwendungen abdecken. Es sollte die aktuellen Arbeitsspezifikationen in "when_X_then_Y" -Regeln der einzelnen Testfälle dokumentieren. Dies hilft sowohl dabei, Änderungen in Ihrem aktuellen Code daran zu hindern, vorhandene Funktionen zu beschädigen, als auch die Migration in eine neue Umgebung zu unterstützen.

Da es sich um COBOL und BASIC handelt, sollte sich die Testsuite wahrscheinlich auf der Ebene von Integrationstests befinden: Abarbeiten eines "festen" Satzes von Eingabedateien / Datenbanken und Überprüfen der Ausgabedateien / geänderten Datenbankinhalte bestimmter Programme (COBOL) und / oder anwendungen. Für die BASIC-Teile Ihrer Software kann dies bedeuten, dass Sie Befehlszeilenparameter hinzufügen, um bestimmte Funktionen ohne (G) UI-Eingriffe auszuführen, oder ein (G) UI-basiertes automatisiertes Testtool erwerben.

Isolieren Sie Berechnungen und andere Algorithmen

Selbst Cobol unterstützt die Vorstellung von Unterprogrammen, die von einem Hauptprogramm aus aufgerufen werden können. Isolieren Sie alle Importberechnungen und andere Algorithmen in separaten Programmen oder Modulen. Ziel ist es, eine Bibliothek von Programmen / Modulen / was auch immer zu erstellen, die die Grunzarbeit isoliert von allem, was Input sammelt und Output erzeugt.

Passen Sie das Testkabel an, um es sowohl in Ihren alten Anwendungen als auch isoliert zu testen. Dadurch wird sichergestellt, dass die Arbeit, die Sie am "alten" Code ausführen, um die Migration in eine neuere Umgebung zu erleichtern, so wenig Fehler wie möglich verursacht.

Starten Sie eine neue Reihe von Anwendungen in einer "aktuellen" Umgebung

Konvertieren Sie Ihren aktuellen Code nicht. Das Konvertieren einer Sprache in eine andere bedeutet, die Einschränkungen der alten Umgebung der neuen aufzuerlegen. Das Ergebnis ist oft weniger als wünschenswert (lesen Sie: Das Ergebnis wird schrecklich sein und ein Schmerz, den es zu erhalten gilt). Wandern. Nehmen Sie sich die Zeit, um Ihre Anwendungen in der neuen Umgebung so einzurichten, dass sie als Best Practice für diese Umgebung gelten.

Holen Sie sich dazu neue Programmierer, die sich in der von Ihnen gewählten Umgebung auskennen. Machen Sie es vom ersten Tag an zur Priorität, alle wichtigen Berechnungen und Algorithmen in separaten Klassen und / oder Paketen zu isolieren und hinter Schnittstellen zu verstecken. Verwenden Sie die Abhängigkeitsinjektion (die billigste Art der DIY-Abhängigkeitsinjektion), um Ihrer neuen Anwendung mitzuteilen, welche Klassen instanziiert / für die Berechnungen verwendet werden sollen.

Dies ist ohnehin eine gute Möglichkeit, Dinge zu tun, und in Ihrem Fall können Sie diese wichtigen Teile fallweise migrieren. Außerdem werden die Schwierigkeiten beim Aufrufen von Basis- und / oder Cobol-Programmen vor den aufrufenden Funktionen in der neuen Umgebung verborgen.

Gehen Sie nicht weiter als bis zur Einrichtung der Anwendungen und vielleicht bis zur Einrichtung der wichtigsten Ein- / Ausgabefunktion, die eine Berechnung aus Ihrer COBOL / BASIC- "Bibliothek" verwendet.

Integrieren Sie Ihre COBOL / BASIC "Bibliothek"

Finden Sie heraus, wie Sie Ihre COBOL / BASIC-Bibliothek in Ihrer neuen Umgebung aufrufen können. Dies kann das Einrichten von Parameterdateien oder Datenbanktabellen sowie das Ausführen eines COBOL / BASIC-Programms umfassen, das die zuvor eingerichtete COBOL / BASIC-Bibliothek umschließt. Wenn Sie Glück haben, können Sie mit Ihrer BASIC-Version möglicherweise DLLs erstellen, die direkt aufgerufen werden können.

Implementieren Sie die Klasse in Ihrer neuen Umgebung, die die COBOL / BASIC- "Bibliothek" aufruft, und testen Sie sie mit denselben Tests, die sich im Testgeschirr der alten Umgebung befinden, jetzt jedoch in Form von Komponententests in der neuen Umgebung .

Ja, dies bedeutet, die Tests zu "duplizieren", aber es ist ein Sicherheitsnetz, auf das Sie nicht verzichten möchten. Schon allein deshalb, weil diese Komponententests später als Tests dienen, um die Implementierung Ihrer Berechnungen und Algorithmen zu überprüfen, wenn sie in Ihre neue Umgebung migriert werden.

Aber noch einmal: Gehen Sie nicht weiter, als die Einheitentests für die Berechnung (en) hinzuzufügen, die von der Einzelnen verwendet werden, die aus dem vorherigen Schritt am wichtigsten ist.

Erarbeiten Sie die neuen Anwendungen in Iterationen

Entwickeln Sie die neuen Anwendungen, indem Sie die vorherigen beiden Schritte für alle Funktionen in Ihren alten Anwendungen wiederholen. Fügen Sie immer wieder die Komponententests hinzu, mit denen die Berechnungen im Testkabel Ihrer neuen Anwendung überprüft werden. Verwenden Sie die Integrationstestsuite, um zu überprüfen, ob die migrierten Funktionen mit Ihren alten Anwendungen identisch sind.

Migrieren Sie die Kernbibliothek in Iterationen

Und schließlich migrieren Sie die Berechnungen und Algorithmen in Ihrer COBOL / BASIC- "Bibliothek" und implementieren Sie sie erneut in Ihrer neuen Umgebung. Wiederholen Sie dies iterativ, indem Sie die (Einheiten-) Tests verwenden, um Ihre geistige Gesundheit zu erhalten.

Marjan Venema
quelle
1
Obwohl Ihre Antwort für sich gesehen gut ist, konzentriert sie sich leider nicht wirklich auf die Frage. Der Fragesteller ist ein Nicht-IT-Manager, der wahrscheinlich keine Ahnung hat, was Sie mit den meisten Ihrer Texte meinen. Er braucht Beratung, um jemanden zu finden, der dies tut.
Philipp
1
@Philipp: Gut gesehen, obwohl ich gesagt habe, dass ich seine eigentliche Frage nicht beantwortet habe. Ich bin sicher, OP weiß, wie man mit Google umgeht, und meine Antwort enthält genügend Suchbegriffe, um mit der Recherche zu beginnen - oder noch besser -, und zwar von den aktuellen Programmierern. Sie können jedoch Ihre eigene Antwort für OP hinzufügen, wenn Sie der Meinung sind, dass dies getan werden muss. Zum Teufel, könnte sogar positiv bewertet werden, wenn Sie ...
Marjan Venema
Er wird einen IT-Berater für Unternehmen für den Übergangsprozess benötigen, der zuvor an solchen Prozessen mitgewirkt hat. Der Berater sollte nicht die Arbeit erledigen, sondern die Leute finden, die die Arbeit erledigen, sie beaufsichtigen und sicherstellen, dass das Programm das tut, was für das Geschäft erforderlich ist. Ja das ist teuer Eine eigene Software zu haben, ist immer so.
MSalters
@MarjanVenema (Ich weiß nicht genau, was ich erwartet habe, als ich diese Frage gepostet habe, aber eine Sache, die ich nicht erwartet habe, war, dass fast jeder Kommentar nachdenklich und nützlich ist - viele denken an alle.) wie man überlebt "Post von Milstein und der Spolsky-Post, auf die er geantwortet hat, und nicht einmal Milstein mag die Idee, Code umzuschreiben. Nach unseren bisherigen Erfahrungen stimmen die Kommentare von Spolsky zu den Gefahren der Datenmigration und dem Wert des Arbeitscodes. Ich mache mir auf jeden Fall Sorgen, dass ich dem Wunschdenken erliegen könnte, aber ich möchte wirklich Ramhounds Recht denken.
user105977
1
@ user105977: Ich verstehe. Ja, ein Umschreiben ist riskant, aber nicht immer vermeidbar und manchmal der beste Weg, trotz des Risikos. Für mich ist es ein Geschäftsrisiko, das größer ist als das Risiko eines Umschreibens und das mit der Zeit zunimmt, wenn der Pool verfügbarer Entwickler wächst, wenn ich mich auf alte Systeme verlasse, die noch nicht genau verfügbar sind abnehmend. Aber ich bin nicht in Ihrer Position und kann ihr relatives Risiko nicht einschätzen.
Marjan Venema
2

Es hört sich so an, als wäre diese Anwendung der "Kern" Ihres Unternehmens. In Fällen, in denen ein System oder ein Prozess das ist, was Ihr Unternehmen ist, ist dies ein Fall, in dem Sie Ihre eigene benutzerdefinierte Lösung haben.

Du hast darauf angespielt. Leider ist dies angesichts der langen Zeit, die Sie seit der Aktualisierung Ihrer Technologien vergangen sind, ein äußerst schwieriges Unterfangen.

Ich würde eine von zwei Routen empfehlen.

  1. Stellen Sie eine IT-Gruppe aus Entwicklern / Projektmanagern / QE / Operations zusammen und bauen Sie Ihr System schrittweise aus, wie in der eher technischen Antwort oben angegeben. Dies wird jedoch außerordentlich teuer sein.
  2. Suchen Sie nach einem qualifizierten Berater für kundenspezifische Entwickler, anstatt nach einem Standardanbieter. Diese Gruppe kümmert sich um alle Ressourcen, um Ihr neues System aufzubauen, und Sie können es dann mit weniger Personal als Option 1 nach Hause bringen, um fortzufahren. Diese Option birgt unterschiedliche Risiken. Die Auswahl eines guten Anbieters kann jedoch für Nicht-Techniker sehr schwierig sein. Sie können auch ein sehr hohes Risiko mit Kostenüberschreitungen usw. darstellen. Um diese Route zu verringern, erstellen Sie mit Ihrem vorhandenen Personal einen sehr detaillierten Satz von Anforderungen (aus Sicht des Nutzers) für Ihr Gebot. Dann fordern Sie auch Festpreisangebote an.

Viel Glück, Sie haben etwa 20 Jahre Erbe zu überwinden. Es wird nicht billig, einfach oder sauber sein.

Bill Leeper
quelle
1
Zu Ihrer Information: 20 Jahre in der Software-Welt entsprechen 2 oder 3 menschlichen Generationen. Es ist eine sehr sehr lange Zeit. Aus technologischer Sicht sind BASIC und COBOL alt genug, um in ein Museum gebracht zu werden ...
Radu Murzea
Eigentlich programmiere ich seit 20 Jahren und COBOL geht meiner Erfahrung weit voraus.
Bill Leeper
-2

Suchen Sie nicht nach einer Firma, die Ihre Legacy-Software wartet, oder nach einer Firma, die Ihre Legacy-Software neu schreibt, sondern nach einer Firma, die einen kontinuierlichen Service für das Verwaltungssystem bietet. Auslagern der Probleme bei der Entscheidung, ob die Software neu geschrieben werden soll, welcher Zeitplan festgelegt werden soll, welche Sprache (n) oder welche Tools verwendet werden sollen.

Ja, die offensichtlichen Kosten dieses Ansatzes könnten die offensichtlichen Kosten für die Einstellung neuer Programmierer übersteigen. Nach Ihrer eigenen Einschätzung sind Sie jedoch kein IT-Manager und es ist leicht vorhersehbar, in welchen Szenarien Sie Entscheidungen treffen, die Ihr Unternehmen letztendlich mehr kosten als die offensichtliche Kosten für das Outsourcing.

High Performance Mark
quelle
1
Der zweite Absatz besagt, dass sie bereits das getan haben, was Sie vorschlagen: Sie haben alle drei Firmen identifiziert, die Software für die Leistungsverwaltung anbieten. Keiner von ihnen qualifizierte sich.
MSalters
Ich schlug nicht vor, eine Firma zu finden, die Software anbietet, sondern einen kontinuierlichen Service für das Verwaltungssystem .
High Performance Mark