Strategie(?) / Politik(?) - Frage

08/10/2007 - 21:20 von Lothar Geyer | Report spam
Ich weiß nicht recht wie ich das am Besten angehen soll. Deshalb mal
eine Frage zu Software-Design allgemein.

Es existiert ein umfangreiches Adressenpaket. Etwa 200 Klassen (<30 DLLs
samt Interfaces), etwa 350 Masken, 90 Module, >30 Reports. Trotz der
DLLs ist die .exe inzwischen 16 MB gross (wegen der MDIchild-Forms). Die
Datenbank hat etwa 150 Tabellen. Außer den Adressen werden da natürlich
noch andere Daten gespeichert wie z.B. Kundenauftràge.

Nun soll es ein weiteres Paket geben, das letztlich etwa in der gleichen
Größenordnung liegen wird. Und das mit dem ersten "integriert" arbeiten
soll. Es geht um die Verwaltung von Fertigungsauftràgen, Erstellen von
Arbeitspapieren, Rückmeldungen, Nachkalkulation und so einen Kram. Also
eigentlich was ganz anderes. Aber halt einige Schnittstellen.

Erstes Problem: das Programm.
Die Grundsatzfrage VB6 / .Net steht noch offen. Nehmen wir mal VB6 an.
(Mit .Net würden sich allerdings einige der Fragen selbst beantworten -
nur die nach dem Umstellungsaufwand nicht.)
Sollte ich eine zweite .exe beginnen? Dann wàre einiges doppelt zu
machen. Denn z.B. die Verwaltung von Kundenauftràgen mit allem Drum und
Dran müsste in beiden vorhanden sein (oder der Anwender muss mit zwei
Programmen arbeiten - nicht gerade sehr benutzerfreundlich). Auch
allgemeine Klassen (z.B. spezifische Statusbar) sind unterschiedlich
usw.usf.

Zweites Problem: die Datenbank.
Unterstützt werden Access und SQLserver.
Ich habe zwar vieles schön in Klassen gekapselt, aber im Detail steckt
der Hund. Z.B. prüft mein .Open, ob es sich auch um die richtige
Datenbank handelt (sind einige der Tabellen vorhanden?). Wenn ich eine
zweite Datenbank anfange, muss ich eine zweite Datenbank-Klasse
schreiben - Vererbung ist ja ein kleines Stiefkind von VB - auch bei der
Verwendung von Interfaces.

Ich will jetzt nicht alle Detail-Probleme aufschreiben, die mir wàhrend
der letzten 14 Tage aufgefallen sind. Ich brauch' bloss mal wieder
jemanden, der mich aus meinem gedanklichen Kreislauf rausholt.

Lothar Geyer
 

Lesen sie die antworten

#1 Peter Fleischer
08/10/2007 - 23:08 | Warnen spam
Lothar Geyer wrote:

Es existiert ein umfangreiches Adressenpaket. Etwa 200 Klassen (<30
DLLs samt Interfaces),



Hi Lothar,
hier meine MeinunG.

200 Klassen ist nichts besonderes.

etwa 350 Masken,



350 Masken ist sehr viel.

90 Module,



Ohn ezu wissen, was da drin ist, ist das bestimmt übertrieben viel.

>30 Reports.



Das ist sehr wenig.

Trotz
der DLLs ist die .exe inzwischen 16 MB gross (wegen der
MDIchild-Forms). Die Datenbank hat etwa 150 Tabellen.



150 Tabellen ist nicht besonders viel (freg mal einen SAP-Profi:-).

Außer den
Adressen werden da natürlich noch andere Daten gespeichert wie z.B.
Kundenauftràge.
Nun soll es ein weiteres Paket geben, das letztlich etwa in der
gleichen Größenordnung liegen wird. Und das mit dem ersten
"integriert" arbeiten soll.



"weiteres Pake" und "integriert" ist erst einmal ein Widerspruch, der zu
klàren wàre.

Es geht um die Verwaltung von
Fertigungsauftràgen, Erstellen von Arbeitspapieren, Rückmeldungen,
Nachkalkulation und so einen Kram. Also eigentlich was ganz anderes.



Was ist "was ganz anderes"?

Aber halt einige Schnittstellen.
Erstes Problem: das Programm.
Die Grundsatzfrage VB6 / .Net steht noch offen.



Warum nicht VB3 ? :-)

Nehmen wir mal VB6 an.



Warum nicht VB.NET?

(Mit .Net würden sich allerdings einige der Fragen selbst beantworten
- nur die nach dem Umstellungsaufwand nicht.)



Warum Umstellung? Warum nicht Koexistenz, da ja ein "weiteres Paket"?

Sollte ich eine zweite .exe beginnen?



Eine exe kann eine andere exe aufrufen/starten. Wo siehts du da Probleme,
wenn es mehrere Exe-Dateien gibt?

Dann wàre einiges doppelt zu
machen.



Was muss an einem "weiteren Paket" doppelt gemacht werden?

Denn z.B. die Verwaltung von Kundenauftràgen mit allem Drum
und Dran müsste in beiden vorhanden sein (oder der Anwender muss mit
zwei Programmen arbeiten - nicht gerade sehr benutzerfreundlich).



Für einen Orgablauf sollte auch nur eine Oberflàche genutzt werden. Das
schließt aber nicht aus, dass ein neuer Kunde mit einer anderem Oberflàche
(resp. exe) verwaltet wird als die Kundenauftràge selbst. Logische
Datenschnittstelle ist die Datenbank, die von beiden Exe'n unabhàngig
genutzt wird.

Auch
allgemeine Klassen (z.B. spezifische Statusbar) sind unterschiedlich
usw.usf.



Eine StausBar ist das kleinste Problem. Viel wichtiger sind in einer
Orglösung einheitliche Strategien, wie beispielsweise Oberflàchen für
Datensuche und -auswahl. Die Umsetzung einer festgelgten Startegie ist aber
in modernen Umgebungen mit reaktiv wenig Aufwand möglich.

Zweites Problem: die Datenbank.
Unterstützt werden Access und SQLserver.



Access ist die Lösung für ein Einplatzsystem, SQL Server eigent sich auch
für Mehrplatzssysteme. Ich vermute mal, dass es sich beim Umfang der UI um
ein vorwiegend als Mehrplatzssystem eingesetztes System handelt. Damit
erübrigt sich der Einsatz von Access.

Ich habe zwar vieles schön in Klassen gekapselt, aber im Detail steckt
der Hund. Z.B. prüft mein .Open, ob es sich auch um die richtige
Datenbank handelt (sind einige der Tabellen vorhanden?).



So etwas mach man aber besser im Konstruktor (INitialize) der
Datenzugriffschicht. Beim Open ist das viel zu spàt, es sei, du gehst davon
aus, dass Open im Konstruktor ausgeführt wird.

Wenn ich eine
zweite Datenbank anfange, muss ich eine zweite Datenbank-Klasse
schreiben - Vererbung ist ja ein kleines Stiefkind von VB - auch bei
der Verwendung von Interfaces.



VB.NET bietet da viel mehr Möglichkeiten, wobei "zweite Datenbankklasse" und
Vererbung erst einmal nichts miteinander zu tun haben.

Ich will jetzt nicht alle Detail-Probleme aufschreiben, die mir
wàhrend der letzten 14 Tage aufgefallen sind. Ich brauch' bloss mal
wieder jemanden, der mich aus meinem gedanklichen Kreislauf rausholt.



Mein Rat: Schnell auf VB.NET umsteigen. Den erhöhten Lernuafwand, machst du
in Zukunft mit höherer Produktivitàt wieder wett.

Viele Grüße

Peter

Ähnliche fragen