Wie gehen Sie weiter zu entwickeln, large (Langzeit -) software-Systeme mit älteren und neuen code?[geschlossen]

StackOverflow https://stackoverflow.com/questions/679949

  •  22-08-2019
  •  | 
  •  

Frage

Ich arbeite auf einer großen code-Basis mit einer großen installierten Basis von Benutzern.Der code wurde ursprünglich in vb6 geschrieben mit ein paar c++ - COM-Modulen für low-level-Arbeit.

Es ist völlig unmöglich zu umschreiben, den gesamten code, der bereits in vb6 geschrieben und wird von unseren Kunden jeden Tag, aber wir sind auch weiterhin auf Verbesserungen und Anpassungen an der software (große und kleine).

Meine Lösung bisher ist, schreiben die meisten von den neuen code in c# (winforms und wpf) und dann die Verwendung von COM interop to call the Module aus vb6.

Hat jemand da draußen Erfahrung mit Langzeit software-suites wie dieses (10+ Jahre), dass kann nicht gestoppt werden, für eine komplette Neuentwicklung, müssen aber immer neuen Entwicklung zur gleichen Zeit.Auch in gemischten Systemen wie diesem, was ist der beste Weg zum Anschluss der Module?Ich bin mit COM, aber wir haben als IPC mit separaten Prozessen sowie.

War es hilfreich?

Lösung

Es ist schwer zu geben, eine einzige allumfassende Antwort, aber die high-level-Ansatz ist klar.Zumindest ist dies der Ansatz, den ich verwendet habe.Priorisieren Sie Ihre Ziele und versuchen Sie dann, zu identifizieren, die Kosten für das erreichen dieser Ziele.Ihre Kosten werden im wesentlichen einkochen, 'developer ' Zeit'.

Erstens, Sie wollen, was auch immer funktioniert, um weiter arbeiten zu können.Wenn Sie etwas haben, das funktioniert, und es gibt keinen guten Grund, Sie neu zu schreiben, halten Sie es.

Wenn einige Ihrer bestehenden code muss aktualisiert werden, seine Arbeit zu machen, dann sind Sie bei Wartung Kosten.An dieser Stelle müssen Sie feststellen, ob ein rewrite verbessern Wartungskosten genug sein, um es Wert.Vergessen Sie nicht, zu subtrahieren, testen und Debuggen von neuen bugs wird es da neue bugs.Nicht entlassen, Arbeit code, nur weil es alt ist.

Wenn der vorhandene code ist ausreichend modular ist, können Sie in der Regel chip Weg ein Stück zu einer Zeit.Schreiben Sie die hohen Wartungs-Komponenten zuerst.

Wenn Sie die neue Entwicklung in C#, dann sollten Sie in Ordnung sein zu arbeiten mit COM-Komponenten, bis Sie genug Rechtfertigung, um Sie zu ersetzen.

Andere Tipps

Ich denke, Sie haben einen guten plan.Dies wird schließlich bewegen sich die meisten der code in C#, wobei von Vorteil ist die bessere toolset.

Hat der VB6-code umfassen, die COM-Objekte?

Sie erwähnten, dass der code "kann nicht gestoppt werden, für einen kompletten rewrite".Aber Sie haben nicht zu stoppen.Eins nach dem anderen, können Sie ersetzen jedes Stück von VB6-Funktionen mit den entsprechenden C# - code.Diese würde ermöglichen Sie zu machen eine änderung zu einer Zeit (vorzugsweise mit automatisierten tests, um zu beweisen, dass Sie noch nicht gebrochen, nichts).

Re-write, dem Bedarf entsprechend, wenn es ist ein motivierender Faktor.

Eine alte Windows-Projekt an dem ich gearbeitet habe, hatte eine Regel-engine, die in C geschrieben war so arbeiten wir gerade verlassen es als eine black-box, DLL.

Wir Bauten eine neue front-end-und der Kundenstamm war beeindruckt von der einfach zu verwenden, neue, moderne Aussehen der Anwendung.Nichts in das innere hatte sich wirklich verändert.

Der Datenbank-Zugriff-Schicht wurde mithilfe von SQL Server DBLIB und wurde nicht wieder wrtten, bis wir die aktualisierten SQL Server.

Wir haben mehrere Systeme dieser Art.Der beunruhigende Teil ist die lifecycle-support-status von VB6.Es ist ein Risiko (jedoch klein), dass Sie nicht in der Lage zu Holen Sie sich Hilfe von Microsoft mit einem showstopper Problem mit z.B.eine Zukunft, server upgrade, und nicht die Fähigkeit besitzen, es selbst zu reparieren (sagen wir, durch Inkompatibilitäten zwischen den VB6-DLL und die gepatchten server O/S).Dies ist ein Risiko, Ihr management von Interesse sein könnten-aber dann, wenn Sie nicht haben jede support-Vereinbarungen nun, vielleicht sind Sie bequem?

Wir sind eigentlich auf der Suche zu umschreiben und durch die Neugestaltung ein paar mehr kritische diejenigen.Wir haben versucht, inkrementelle Entwicklung, und es kann funktionieren, aber für eine (sagen wir) interessant, den Betrieb und die Wartung situation.Würde ich dringend empfehlen, Instrumentierung alles (alte und neue-code) mit viel konfigurierbare Protokollierung, wenn Sie nicht schon, zu helfen, mit fault isolation.

COM-klingt wie eine vernünftige Schnittstelle zwischen älteren und neuen.Es sei denn, Sie haben sehr einfache Interaktionen zwischen den Komponenten kann ich nicht wirklich sehen, warum Sie möchten, bewegen zurück, um eine grundlegende IPC-Mechanismus.COM hat seinen Komplexitäten, aber es bietet auch viele nützliche Abstraktionen für z.B.Daten eingeben und Versionierung, dass Sie würde haben, neu zu erfinden und zu pflegen...

Ich denke, Sie müssen sich auf Ihr upgrade-Pfade für Ihre Kunden.Die Tatsache ist, dass an einem gewissen Punkt, wenn Sie 16-Kern-CPUs, die Sie gehen zu wollen, Parallelität, um die Dinge zu beschleunigen.So haben Sie einen business case zu bewegen, Weg form VB6 und gegenüber WCF.WCF verfügt über eingebaute Parallelität und Synchronisation Unterstützung.Es kann verwendet werden für lokalen in-proc-Kommunikation sowie cross-Prozess-und Kreuz-Maschine-Kommunikation.Es hat auch den Vorteil, dass Sie zu tun mehr AOP-Stil Programmierung.

Ich bin derzeit mehrere Entwickler arbeiten an einem umfangreichen legacy-system, das fing an als eine Kombination von C und C++ mit Win32-und, später, MFC-mit ein paar Brocken der Montage unter die back-end-C-code.Wir haben vor kurzem sprang von VC++ 6 zu Visual Studio 2005 (und haben seit dem Upgrade auf 2008) für die neueste version des Projekts, an dem wir arbeiten.Da die IDE/compiler-upgrade haben wir Aufräumen einige der Aussehen und fühlen, und zusätzlich managed C++ mit WinForms und jetzt C# mit WCF.

Während die Grundlagen des Systems, einschließlich der back-end, fast definitiv bleiben in C (zumindest in absehbarer Zukunft), etwas neues im front-end wird den meisten wahrscheinlich in C#/WCF.Wenn wir die Zeit haben und/oder müssen, wollen wir starten den Ersatz älterer Teile der front-end mit gleichwertigen C#/WCF-code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top