Software-Lösung aus den 2000er Jahren, sollte ich versuchen, das Ganze zu patchen oder neu zu erstellen?

9

Ich wurde ausgesandt, um ein System zu besprechen, das ein bestimmtes Unternehmen derzeit verwendet, und was damit zu tun ist.

Das Unternehmen stellt verschiedene Kartonauslagen her. Dieses System wurde entwickelt, um Kunden, Bestellungen und Preise zu verfolgen. Seit der Erstellung des Systems ist viel passiert, und das System ist jetzt, wie der Manager es beschrieben hat, " gesperrt " und " problematisch ", was ich als "nicht dynamisch" und "instabil" übersetze.

Einige Infos zum System

  • Es wurde um das Jahr 2000 entwickelt
  • Ziemlich kleines System, 2-5 Benutzer, 6 Formulare, ~ 8 Tabellen mit durchschnittlichen Datenmengen
  • Auf frühem Visual Basic basierende Formulare, die mit dem Drag & Drop-Design erstellt wurden. Die Benutzeroberfläche ist im Grunde nur ein Fenster mit einem Menü und einigen Formularen
  • Verwendet die MSSQL-Datenbank (SQL2005-Server) zum Speichern von Daten und den ODBC-Treiber zum Abfragen. Daten wurden vor diesem System von Excel migriert und vor Excel von Hand und Papier verarbeitet, berechnet und geschrieben
  • Benutzer arbeiten in einer Microsoft XP-Umgebung (und höher).

Ihr Hauptproblem ist, dass sie die Preise nicht mehr korrekt anpassen und berechnen, keine neuen Kartontypen usw. hinzufügen können, weil sie die Daten auf dem Server nicht berühren können (oder besser gesagt nicht wissen, wie sie zu berühren sind).

Ich schlug 3 mögliche Lösungen vor

  1. Versuchen Sie, das aktuelle System zu patchen
  2. Erstellen Sie eine neue Schnittstelle (vorzugsweise ähnliche Umgebung, VB.net oder VB-basiert)
  3. Bringen Sie es zurück zu einer Excel-Lösung, da es sich um ein so kleines System handelt

Es gibt vielleicht mehr Optionen, aber diese sind diejenigen, an die ich denken könnte.

Meine Fragen sind

  • Was soll ich empfehlen und warum?
  • Was sind oder könnten die Vor- und Nachteile dieser Alternativen sein?
  • Gibt es andere (möglicherweise bessere) Alternativen?
ShadowScripter
quelle
3
Sie können erst entscheiden, wie stark das aktuelle System beschädigt ist, wenn Sie die Datenbankschemata dokumentiert haben.
@ ThorbjørnRavnAndersen Das stimmt. Ich habe nur einen Blick auf die Datenbank geworfen. Nach dem Alter zu urteilen, in dem es erstellt wurde, gehe ich davon aus, dass es wirklich sehr, sehr schrecklich gestaltet ist und Erste Hilfe benötigt ... oder eine Operation.
ShadowScripter
1
Wissen Sie, wer das ursprüngliche System geschrieben hat? War es eine interne Anstrengung oder wurde es vergeben?
maple_shaft
7
Tu das nicht. Teilen Sie dem Client mit, dass der Status der Datenbank für die Kosten der verschiedenen Optionen von entscheidender Bedeutung ist und unabhängig von der gewählten Option erfolgen sollte. Selbst für ein Umschreiben von Grund auf möchten sie höchstwahrscheinlich, dass ihre Daten portiert werden.
4
Entwickler möchten standardmäßig "von Grund auf neu schreiben" und nur bei Bedarf umgestalten. Ich würde lieber standardmäßig "schrittweise umgestalten" und nur bei Bedarf neu schreiben.
quant_dev

Antworten:

5

Etwas mit nur 6 Formen und dergleichen sollte auf einem moderneren Rahmen leicht wieder aufzubauen sein. Ich habe mit der Migration von VB6-Projekten gearbeitet, die ungefähr 200 Formulare zusammen mit Dutzenden von Klassen und Datenbanktabellen hatten. Es hört sich nicht so an, als würden Sie etwas so Unordentliches betrachten, aber das Aussehen kann täuschen.

Ich müsste den Code, die Datenbank und die Geschäftsanforderungen analysieren, um zu sagen, ob das Umschreiben oder Umgestalten der vorhandenen Codebasis am besten wäre. Angesichts dessen, was Sie gesagt haben, würde ich mich zu einem Umschreiben neigen. Es kann jedoch versteckte Schwierigkeiten geben, die Sie derzeit nicht sehen.

jfrankcarr
quelle
Aufgrund seiner geringen Größe stimme ich zu. Auf den ersten Blick scheint es auch nicht zu komplex zu sein. Nach den Antworten zu urteilen, erscheint ein Umschreiben am angemessensten. Ich werde genauer hinschauen, bevor ich eine endgültige Entscheidung treffe. Danke für den Hinweis! :)
ShadowScripter
@ShadowScripter Ich würde mir ansehen, wie ich es in einer besseren Sprache als VB schreibe, während du dabei bist. Schauen Sie sich das Open Source Lazarus Projekt an.
Spencer Rathbun
5

Ich habe die meisten Antworten bisher etwas anders beraten.

Versuchen Sie, das aktuelle System zu patchen

Ich würde zumindest das aktuelle System gut genug lernen, um dem Kunden zu erklären, wie man es benutzt. Ich würde mir diese Zeit nehmen, um die Fehler in ihrem aktuellen System zu erklären, negative Wörter zu vermeiden und ihnen einfach zu sagen, was es nicht kann, selbst wenn alle bekannten Fehler behoben wurden.

Erstellen Sie eine neue Schnittstelle (vorzugsweise ähnliche Umgebung, VB.net oder VB-basiert)

Nachdem Sie alles gelernt haben, können Sie mit ihrem aktuellen Setup. Stellen Sie ihnen Optionen zur Verfügung. Wenn Sie ihre Bedenken mit ihrem aktuellen System ausräumen können, ist mit ihrem aktuellen System wirklich nichts falsch. Das einzige Problem ist natürlich, dass die Unterstützung für Visual Basic 6 in 5 Jahren möglicherweise nicht mehr besteht.

Ein weiteres Problem ist die Art und Weise, wie mit der Datenbank kommuniziert wird. Microsoft entfernt langsam einige der älteren Kommunikationsmethoden mit seinen Datenbankprodukten (Access, MSSQL), sodass die Art und Weise, wie Sie mit diesen Produkten interagieren, bestimmt, ob die Lösung in Zukunft unter Windows 9 und Windows 10 verwendet werden kann.

Diese Antwort hängt vollständig von der Tatsache ab, dass sie die Quelle für die Anwendung selbst haben. Wenn sie nicht über die Quelle verfügen, ist es schwierig, ihre Bedenken auszuräumen, die aktuellen Hauptfehler zu beheben oder sie sogar zu einem Tool zu machen, das sie tatsächlich verwenden können.

Ich glaube nicht, dass mit einer Visual Basic 6-Anwendung etwas "falsch" ist, abgesehen von der Tatsache, dass die Unterstützung für zukünftige Versionen unbekannt ist. Selbst heute mit Windows 7- und 64-Bit-Betriebssystemen wird die Unterstützung immer schwieriger. Dies ist ein Hauptgrund dafür, dass ein Umschreiben in eine moderne Sprache mit angemessener 64-Bit-Unterstützung eine gute Idee sein könnte.

Wenn sie zu diesem Zeitpunkt nicht über die Quelle verfügen, ist ein Umschreiben wirklich ihre einzige Lösung.

Ramhound
quelle
Könnten Sie einen Verweis auf " Microsoft is slowly getting rid of some of the older ways to communicate..." zitieren ? Würde gerne mehr darüber lesen.
ShadowScripter
@ShadowScripter - Beispielsweise wird der Microsoft.Jet.OLEDB.4.0-Anbieter für den Zugriff auf ältere Access-Datenbankdateien nicht unterstützt, wenn der Prozess kein 32-Bit-Prozess ist. WinRT kann auch die Art und Weise ändern, wie wir eine Verbindung zu diesen Microsoft-Produkten herstellen. Ich vergesse, wo ich über eine zukünftige Änderung gelesen habe. Mein Verständnis ist, dass Microsoft nach MSSQL 2012 nur eine bestimmte Art der Verbindung unterstützt. Dies natürlich im Zusammenhang mit den in Windows und seinen Entwicklungsangeboten eingebauten Anbietern
Ramhound
1

Das Umschreiben der Schnittstelle ist eine hervorragende Option, da das System relativ klein ist. Vorteile sind -

  1. Verbesserte Stabilität (vorausgesetzt, Sie machen es gut!)
  2. Verbesserte Wartbarkeit
  3. Moderne Schnittstelle

Der Hauptnachteil ist, dass es wahrscheinlich immer noch ein gutes Stück mehr kostet als das Hacken des vorhandenen Codes.

Craig Schwarze
quelle
Das Umschreiben der Benutzeroberfläche war auch das, worauf ich mich neigte. Und um ehrlich zu sein, ich bin mir nicht sicher, wo ich mit der alten Benutzeroberfläche beginnen würde, nach heutigen Maßstäben zu urteilen, es ist einfach so ... schlecht.
ShadowScripter
1

Ich würde auch dazu neigen, neu zu schreiben, aber Sie müssen 100% sicher sein, dass Sie die aktuelle Funktionalität vollständig verstehen sowie alle Funktionen, die defekt, fehlend oder unzureichend sind. Die beiden letzteren sind wichtig, wie Sie bereits erwähnt haben, um die Preise anzupassen und zu berechnen. Verstehen Sie die Konsequenzen des Hinzufügens dieser Funktion vollständig?

Ich habe einmal an einer angeblichen "Website" gearbeitet, aber tatsächlich ein benutzerdefiniertes Access-basiertes CRM-Tool aus den späten 1990er Jahren übernommen und in die moderne, webbasierte Welt gebracht. Der ursprüngliche Entwickler war schon lange nicht mehr da, die Datenbank wurde unzählige Male geändert, die Originaldokumentation war daher veraltet und niemand verstand wirklich, wie das System funktionierte. Aber sie wussten einfach, wie man es benutzt. Wahrscheinlich 80% des Budgets für dieses Projekt flossen in drei Dinge:

  • Anforderungen sammeln
  • das aktuelle System verstehen
  • Entwicklung eines aussagekräftigen Datenbankschemas für die beabsichtigte Verwendung der Software

Das Projekt war finanziell kein Erfolg!

ZweiBlumen
quelle
Ich höre, was Sie sagen: Bevor ich eine endgültige Entscheidung treffen kann, muss ich mir der aktuellen Mängel, Funktionen und des Zwecks voll bewusst sein. Es ist nicht so, dass ich All-In gehen möchte, mit lodernden und schreienden Waffen All right, let's do this. LEEEEEEEROOOOOOOY...! : P
ShadowScripter
0

Eine andere Option könnte ein Kompromiss zwischen dem Umschreiben des Ganzen und dem Hacken der vorhandenen App sein.

Geben Sie ihnen die neuen Funktionen in einer neuen Anwendung, die von Grund auf neu erstellt wurde.

Dies könnte möglicherweise einfacher sein und nicht so viel kosten wie ein vollständiges Umschreiben.

Sobald dies geschehen ist und sie froh sind, Daten hinzufügen / aktualisieren zu können, wird der Doot Ro geöffnet. Eine zweite Phase könnte die vorhandene Funktionalität in der neuen App ersetzen.

Dies könnte ein schmackhafterer Ansatz sein.

ozz
quelle
1
Ich nehme an, das ist eine gute Idee, aber wenn Phase zwei nie passiert, erhalten sie eine alte separate Anwendung, die von der anderen neuen Anwendung abhängig ist. Sie haben zwei Anwendungen und verdoppeln den Ärger.
ShadowScripter
0

Umschreibungen neigen oft dazu, kein Budget mehr zu haben ... Schlecht.

Ein modernes Skelett für die Anwendung zu haben, könnte jedoch eine gute Investition sein, insbesondere wenn niemand weiß, wie ein altes System funktioniert, und wenn Dinge kaputt gehen, sobald Sie anfangen, sie zu berühren.

Außerdem ist VB6 schlecht für die Unterstützung. Wenn Sie in 10 Jahren Spezialisten finden müssen, ist das ziemlich problematisch.

Codierer
quelle