Archive for October, 2008

Interessantes UML Statement

Monday, October 27th, 2008

Hallo,

ein nicht namentlich bekannter Softwareentwickler (vielleicht Kishore Kumar?) hat einige lesenwerte Artikel zum Thema UML auf seinem blog veröffentlicht. Die Artikel sind nicht nur sehr liebevoll geschrieben, mit vielen Bildern und Zitaten, sondern scheinen mir auch sehr profund und nachvollziehbar.

Einige seiner Aussagen lauten:

  • Die UML ist ein wertvolles Mittel um Softwaresysteme zu beschreiben
  • Die MDA ist vom Konzept her Unsinn, weil man die eigentliche Kodierung immer brauchen wird. Ein Modell kann lediglich einen Routenplan ersetzen aber gehen (= kodieren) muss man immer noch selbst.
  • Es ist wichtig, dass Diagramme optisch gut gestaltet sind, da man sie sonst kaum versteht. Um dies zu erreichen ist ein geeignetes UML-tool eine wichtige Voraussetzung.
  • Ein gegebenes Diagramm sollte nur einen einzigen Aspekt beschreiben.
  • UML Diagramme sollten den Regeln der UML Spezifikation genügen, diese zu lernen ist jedoch nicht leicht.
  • Um gut modellieren zu können braucht man also Erfahrung und Ausdauer beim lernen.

In diesem Artikel spricht er einen Effekt an, den ich selbst sehr gut bestätigen kann. Unabhängig von dem dauerhaften Wert der Modelle schafft allein der Akt des Modellierens ein besseres Verständnis des Systems. Man denkt eigentlich automatische tiefer und weiter als wenn man zu früh mit dem Kodieren anfängt.

Viele Grüße,
Andreas

Technorati Tags: ,

ClickOnce-Installation und der Fehler “Datei…wurde seit ihrer ersten Veröffentlichung geändert” Fehler

Monday, October 20th, 2008

Hallo,

bei einer ClickOnce-Installation einer Microsoft .NET Software kann bei der Erstellung des setup-Programmes in Visual Studio eine Option gewählt werden, die bewirkt dass vorausgesetzte Software (”redistributable prerequisites” – wie etwas das .NET framework selbst) automatisch als Teil der Installation geladen und installiert werden.

Dabei kann angegeben werden, ob die Komponenten von der Website des Hersteller oder von einer anderen Quelle geladen werden sollen.

Erforderliche Komponenten für ClickOnce Installation Dialog in Visual Studio

Im ersteren Fall kann folgendes Fehlerszenario entstehen:

Der Entwickler hat eines der vorausgesetzten Softwarepakete (z.B. das deutsche language pack vstor_lp_de_30.exe für die VSTO 3.0 runtime) lokal installiert. Beim Erstellen des setup-Programmes wird dieses Paket nicht integriert, wohl aber Information über die verwendete Version.

Nun wird die Installation auf einem beliebigen anderen Rechner gestartet. Der installer sieht dass auf der Website des Komponentenherstellers (also Microsoft für obiges Beispiel) eine andere Version der Komponente verfügbar ist. Genau dann wird diese Fehlermeldung generiert:

Error: Die Datei “C:\DOKUME~1\awa\LOKALE~1\Temp\VSD6.tmp\VSTOR30\vstor_lp_de_30.exe” wurde seit ihrer ersten Veröffentlichung geändert.

Die lokal auf dem Entwicklungsrechner mit Visual Studio 2008 SP1 installierte Version war vom 27.12.2007 während die Version auf der Microsoft Website vom 12.08.2008 war.

Dieses Verhalten ist ziemlich problematisch, kann doch ein update auf der Website des Komponentenherstellers grundsätzlich zu einem beliebigen Zeitpunkt erfolgen. Danach müssten alle ClickOnce-setups, die die aktualisierte Komponente benötigen, aktualisiert werden.

Es wäre sinnvoll, zumindest kleinere Abhängigkeiten direkt in das setup zu integrieren. Leider kann das Verhalten nicht für einzelne Abhängigkeiten individuell eingestellt werden, so dass in diesem Fall auch die .NET runtime in das setup integriert werden müsste, was nicht wirklich attraktiv ist.

Falls prerequisites ausgeschlossen werden bricht die Installation ohne konkrete Fehlermeldung ab, wenn die prerquisites nicht vorhanden sind bzw. nicht in der richtigen Version vorhanden sind.

Insgesamt würde ich empfehlen ausser den .NET runtimes alle erforderlichen prerequistes dem setup mit der Option “Erforderliche Komponenten vom demselben Speicherort wie die Anwendung herunterladen” hinzuzufügen. Die Installationsanleitung muss dann einen deutlichen Hinweis auf die erforderliche .NET runtime bzw. weitere nicht eingeschlossene prerequistes beinhalten.

Vielen Dank an Joe Wirtley für den Hinweis auf die root cause.

Viele Grüße,
Andreas

Technorati Tags: ,