Würden Sie unter .Net komplett neu gestalten?

8

Eine sehr umfangreiche Anwendung begann als Access-basiertes System (zur Datenbankspeicherung). Formulare wurden in VB5 und / oder VB6 geschrieben. Als .Net zu einem festen Bestandteil der Entwicklergemeinde wurde, wurden bestimmte Module neu geschrieben. Dies scheint sehr umständlich und möglicherweise kostspielig zu sein, nur um es zu warten, da die beiden Technologien technologieübergreifend und zusätzliche Arbeit leisten, um die beiden Technologien zufrieden zu stellen. Natürlich verwendet die Anwendung eine Mischung aus ODBC OleDb und MySql.

Würden Sie denken, dass es kostengünstiger wäre, Zeit und Ressourcen für die vollständige Neuentwicklung der Anwendung unter .Net aufzuwenden? Wäre es nicht sinnvoll, .Net zu verwenden, um eine stabilere Anwendung zu entwickeln? Oder verfolgen Sie weiterhin Access-Fehler, fügen Sie neue Funktionen in .Net hinzu (wodurch möglicherweise neue Fehler zwischen .Net und Access entstehen oder nicht), und schreiben Sie alte Access-Module unter zeitlichen Einschränkungen, die ein ordnungsgemäßes Design und eine ordnungsgemäße Entwicklung verhindern, in .Net-Module um?

Update Die Anwendung verwendet OleDb und MySql - ich habe meine vorherige Anweisung korrigiert.

Um das Umschreiben weiter zu unterstützen: Ich habe seitdem herausgefunden, dass der vorhandene VBA / VB6-Code zu Beginn der "Portierung" nach .Net im Wesentlichen in das .Net-Äquivalent übersetzt wurde. Nach meinem Verständnis wurde nichts unternommen, um die Leistung zu verbessern oder neue Bibliotheken oder Technologien zu nutzen.

Meiner Meinung nach schafft dies eine sehr fragile und instabile Anwendung. Mit jedem neuen Update wird dies immer sichtbarer. Als Helpdesk-Techniker habe ich eine Zunahme der gemeldeten Probleme festgestellt. Die Kunden, die die Software verwenden, haben eine Zunahme der Probleme festgestellt und kommentieren diese.

IAbstract
quelle
4
Sie müssten Ihrem Chef (oder wer auch immer entscheiden wird) beweisen, dass es sich auszahlt. Wenn es schlimm genug ist, werden Sie wahrscheinlich den Goahead bekommen. Unterschätzen Sie die Umschreibungsaufgabe nicht - Sie werden viel mehr Zeit als erwartet damit verbringen, die Produktionsqualität zu verbessern.
1
Warum verwendet die Anwendung ODBC und MySql?
Kirk.burleson

Antworten:

16

Viele Leute raten davon ab, eine Anwendung von Grund auf neu zu schreiben, und manchmal stimme ich der Argumentation zu. Meistens empfinde ich das Umschreiben der App jedoch als die am wenigsten schmerzhafte Lösung, und alles, was in Access geschrieben ist, muss auf .NET - PERIOD portiert werden. Verstehen Sie mich nicht falsch, Access hat seinen Platz und kann einem Unternehmen eine Menge Funktionen bieten. Wenn es sich jedoch zu einer vollwertigen App entwickelt, auf die sich die Leute verlassen, ist Access gewachsen.

Es würde wahrscheinlich nicht viel Zeit in Anspruch nehmen, das vorhandene VBA in einer Eins-zu-Eins-Konvertierung nach .NET zu portieren. Dies ist jedoch möglicherweise keine gute Lösung, wenn der VBA zunächst nicht sehr gut ist. Ein Redesign / Rewrite dauert länger, ist aber auf lange Sicht viel einfacher zu warten.

Ich bin fast immer im Lager, es von Grund auf neu zu schreiben, wenn es um Access geht, und habe es kein einziges Mal bereut.

Walter
quelle
Jeder hier hat gute Antworten und hat mir eine Pause gegeben, um über ihren Standpunkt nachzudenken. Ihre Ansicht, @Walter, ist, wo ich bin. Ich halte den VB keineswegs für schlecht geschrieben. Aber es ist VB. Der Shop hat von Anfang an VB geschrieben. Ich bin der neue Typ mit VB.Net- und C # -Erfahrung. Mir wurde Spielraum gegeben, in C # zu schreiben. Natürlich habe ich Ideen und möchte sie umsetzen.
IAbstract
7
+ 1M für "alles, was in Access geschrieben wurde, muss nach .NET - PERIOD portiert werden". Zugang ist ein Spielzeug.
Steven A. Lowe
1
Ich kann Walters Antwort bestätigen. Ich habe persönlich in einem Projekt gearbeitet, um einen fehlerhaften C ++ - Webdienst in C # (.Net 2.0) und eine ASP.Net 1.1-Webanwendung in ASP.Net 2.0 mit AJAX für eine große australische Bank neu zu schreiben. Das Projekt war ein echter Erfolg und wir waren ein kleines, fokussiertes 5-köpfiges Team. Zwei Dinge, auf die ich hinweisen sollte. 1. Wir haben uns verpflichtet, Produktionsprobleme in der alten Version zu unterstützen, bis die neue Version fertig ist, aber keine neuen Funktionen hinzuzufügen. 2. Sofern nicht wirklich kritisch, wurden dem neu geschriebenen Code keine neuen Funktionen hinzugefügt, sondern nur eine funktionale Funktion durch Feature-Kopie mit
behobenen
1
Wenn alle anderen VB kennen, ist die Wahl von C # anstelle von VB.net eine schlechte Wahl. Nur weil es {} hat, heißt das nicht, dass es für jede Lösung das Ultimative ist. VB würde in diesem Fall viel besser passen.
Gbjbaanb
Und deshalb sollten Sie nicht in das "Lass uns umschreiben" springen - Pratik (oder seine Nachfolger) unterstützen jetzt ein altes ASP.NET 2.0 / Ajax / .NET Framework 2.0-Projekt und wünschen sich, dass sie es in etwas Modernem, vielleicht C +, umschreiben könnten +11 :-)
gbjbaanb
5

Ich stimme dem Refactoring-Ansatz zu. Es ist sehr wahrscheinlich, dass dies ein langsamer Prozess ist, der viele Monate dauern kann. Das Verschieben eines Features / Abschnitts zu einem Zeitpunkt hat jedoch folgende große Vorteile:

  1. Produktmerkmale bleiben erhalten.
  2. Die Fähigkeit, eine neue Version zu liefern, bleibt erhalten.
  3. Zeitdruck wird entfernt.

Viel Glück

Michael Shaw
quelle
Das Refactoring dauert mindestens ein Jahr und soll in den nächsten ein oder zwei Jahren fortgesetzt werden. Es scheint, dass Ressourcen: (1) besser verwendet werden könnten, um den aktuellen Status der Anwendung beizubehalten und Fehler zu beheben, und (2) die Anwendung so zu gestalten, dass sie vollständig .NET ist, und die aktuellen .NET-Funktionen in das neue Design zu migrieren. Mit einem guten .NET-Kern scheint die Anwendung flexibler, stabiler und toleranter gegenüber dem Hinzufügen neuer Funktionen zu sein.
IAbstract
Wenn man die Frage liest, hört es sich eher so an, als ob die Anwendung portiert wurde, eher als "Gefällt mir" als als "Refactoring", was Reorganisation, Änderung und Testen beinhalten würde.
Michael Shaw
2

Es wird im Allgemeinen davon abgeraten, eine Anwendung von Grund auf neu zu schreiben (was ein normaler Drang ist, den die meisten Programmierer mindestens einige Male in ihrem Leben verspürten), da Sie von einer App mit bekannten Funktionen (und auch bekannten Fehlern!) Ausgehen. zu einer App mit höchstwahrscheinlich weniger Funktionen und vor allem unbekannten Fehlern. Benutzer könnten frustriert sein usw.

Sie wären wahrscheinlich besser dran, wenn Sie Ihre App über einen bestimmten Zeitraum langsam umgestalten und damit ihre Architektur über einen längeren Zeitraum weiterentwickeln würden.

Jas
quelle
Benutzer sind bereits frustriert. Debuggen .Net ist viel freundlicher und schneller als das Debuggen von Access. Ein umfangreiches Framework, das auf einer Technologie basiert, die offen gesagt nicht für eine derart umfangreiche Nutzung und Funktionalität gedacht war, ist eine Katastrophe, die darauf wartet, passiert zu werden - insbesondere IMO, wenn Sie versuchen, eine neue Technologie zu integrieren. Die Integration von .Net in Access kann häufig bedeuten, dass Sie .Net aufgrund von Zugriffsbeschränkungen nicht in vollem Umfang nutzen.
Zusammenfassung
1

Eine große Herausforderung, die ich bei einem Umschreiben dieser Größenordnung erlebt habe, besteht darin, zwei Codebasen gleichzeitig zu verwalten. Wenn Sie einen Fehler im Legacy-System beheben, müssen Sie sicherstellen, dass die Funktionalität im neuen System ordnungsgemäß funktioniert, und umgekehrt. Durch das Aktualisieren von jeweils einem Modul werden die Wartungsprobleme minimiert.

Eine vollständige Regressionstestsuite, die sowohl auf dem Legacy- als auch auf dem Ersatzsystem ausgeführt wird, wäre ebenfalls hilfreich.

Larry Coleman
quelle
Dies ist genau die Herausforderung ... alles, was in der Access-Basis behoben ist, muss auf Kompatibilität mit der .Net-Basis getestet werden - und umgekehrt.
Zusammenfassung
Der andere Nachteil des Neuschreibens von Grund auf ist, dass die Benutzer nichts erhalten, bis Sie fertig sind. Zumindest wenn jeweils ein Modul ausgetauscht wird, haben sie die Möglichkeit, bald einige Verbesserungen zu sehen.
Larry Coleman
0

Ich stimme Jas zu, schreibe Apps nicht nur um zu schreiben. Sie müssen möglicherweise nie getestet oder verbessert werden. Warum also Zeit verschwenden? Wenn Sie jedoch der Meinung sind, dass sich das Fachwissen Ihrer neuen Entwickler von Access to .NET wegbewegt, müssen Sie möglicherweise migrieren, bevor es zu spät ist. Das scheint unwahrscheinlich, aber eine mögliche Überlegung.

Obwohl es aus entwicklungspolitischer Sicht möglicherweise nicht rentabel ist, wie wirken sich unterschiedliche Anwendungen auf die Benutzer aus? Benötigt es mehr Benutzerschulung? Machen sie mehr Fehler? Erhöht es die Anzahl der Supportanrufe, weil sie etwas nicht finden können?

JeffO
quelle
Die größte Änderung beim Refactoring einzelner Module besteht darin, wie die Formulare für das Front-End aussehen und im Back-End zu MySql wechseln. Es gibt einige kleinere funktionale Änderungen, an die sich Benutzer gewöhnen müssen. Aber zum größten Teil gibt es eine Umschulung, unabhängig von der Anzahl der Änderungen, neuen Funktionen usw. Wir haben häufig Abstürze in Access (Formulare, Daten usw.), die einen Neustart des Programms erzwingen, obwohl der .Net-Teil noch vorhanden ist ein gewisses Maß an Reaktionsfähigkeit.
IAbstract
0

"Würden Sie denken, dass es kostengünstiger wäre, Zeit und Ressourcen für die vollständige Neuentwicklung der Anwendung unter .Net aufzuwenden?"

Dies ist keine Frage, die hier beantwortet werden kann.

Von der Spitze der Anforderungspyramide: Jemand hat eine Entscheidung getroffen, die er hoffentlich mit einem Geschäftsplan rechtfertigen kann. In diesem Geschäftsplan sollte angegeben werden, wie viele Stunden + zusätzliche Kosten für die Konvertierung der Anwendung erforderlich sind, und in demselben Geschäftsplan werden die Vorteile auch in Geld angegeben.

Das ist der Weg, es zu tun. Wenn es keinen Geschäftsplan dafür gibt. Anschließend müssen Sie zunächst an einem Geschäftsplan arbeiten, der auf einige Anwendungsfälle auf hoher Ebene zurückgeführt werden kann, um die Auswirkungsanalyse durchzuführen und den Start des Projekts zu überprüfen.

Wenn der ursprüngliche Treiber des Geschäftsziels, das zur Änderung führt, nicht einmal auf Geld basiert, ist diese Person wahrscheinlich diejenige, die für alles bezahlt, also muss es getan werden.

Wenn es keinen Geschäftsplan gibt, aber "es ist einfach erledigt", versuchen Sie, einen zu erstellen und ihn dem oberen Management vorzulegen. Berücksichtigen Sie Anwendungsfälle auf hoher Ebene, Kosten, Stunden für Neugestaltung, Erstellung, zusätzliche Betriebskosten, neue Schulungen für Administratoren und Endbenutzer, Projektmanagement und potenzielle Risiken.

IMHO ist dies keine technische Frage.

Edelwasser
quelle