Archive for May, 2008

Visualisierung von Softwarearchitekturen mit Doxygen

Sunday, May 18th, 2008

Hallo,

in diesem posting geht es zwar um UML aber ich war erstaunt wie viele Kommentar sich auf Doxgyen als Werkzeug zu Visualisierung von Softwarearchitekturen bezogen.

Ich selbst habe mit Doxygen ebenfalls schon sehr gute Erfahrungen beim Verstehen fremden codes gemacht. Doxygen analysiert den code mit einem Minimum an Konfiguration, geht dabei “best effort” vor und produziert bei entsprechender Konfiguration eine Reihe hilfreicher Artefakte:

  • Collaboration graph: zeigt welche Klassen von einer Klasse benutzt werden, z.B. als member
  • Inheritance graph: zeigt von welchen Klassen eine gegebene Klasse abgeleitet ist aber auch welche Klassen von der gegebenen Klasse abgeleitet sind
  • Static call hierarchy graph: zeigt (rekursiv) an, welche Methoden in einer bestimmten Methode gerufen werden
  • References/referenced by: zeigt an welche anderen Methoden eine Methode benutzt und wo eine Methode benutzt wird (cross reference Dokumentation)
  • Include graph: illustriert die Schachtelung von include-Anweisungen in C/C++
  • Verlinkter source code: Doxygen erzeugt formatierten source code mit syntax highlighting. Methoden und Datentypen sind verlinkt so dass man mit einem Mausklick zu der Methode oder Definition des Datentyps springen kann.

Beim reverse engineering mit einem UML tool wird in der Regel nur das repository selbst erzeugt und ggf. ein großes Diagramm mit allen importierten Elementen, was nicht viel bringt. Graphen wie etwa die statische Aufrufhierchie einer Methode erzeugen diese tools überhaupt nicht.

Hier ist ein Beispiel, entnommen von der Doxygen-Dokumentation des Tahoe-Projektes.

In diesem Artikel ging es primär um die Reengineering-Fähigkeiten von Doxygen, der Fokus dieses tools ist aber eigentlich die Aufbereitung bon inline-Dokumentation die von den Autoren der Software erstellt wurde.

Highly recommended!

Viele Grüsse,
Andreas

Technorati Tags: ,

C# Compiler Kauderwelsch

Tuesday, May 13th, 2008

Hallo,

ich hatte mich ja kürzlich über die Qualität des Microsoft C#-compilers positiv geäußert.

Leider habe ich nun auch etwas schlechtere Erfahrungen gemacht. Folgender code

using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
           List aList = new List();
           foreach (string str in aList)
           {
                Console.WriteLine(str);
           }
 
           string str = "Hallo";
    }
}
}

erzeugt folgende Fehlermeldung:


Fehler 1 Eine lokale Variable mit dem Namen "str" kann in diesem Bereich nicht deklariert werden, weil dadurch "str" eine andere Bedeutung erhalten würde, was bereits im Bereich "untergeordnet" in anderer Bedeutung verwendet wird. c:\Temp\ConsoleApplication1\Program.cs 18 20 ConsoleApplication1

Alles klar?

Man könnte nun annehmen, dass der C#-Compiler anders als ein ANSI-konformer C++ Compiler den scope der ersten Deklaration von str nicht auf die foreach-Schleife beschränkt. Dann müsste man aber bei der Zuweisung an str nach der foreach-Schleife einfach die Deklaration weglassen können, was aber nicht der Fall ist.

Fehler 1 Der Name "str" ist im aktuellen Kontext nicht vorhanden. c:\Temp\ConsoleApplication1\Program.cs 18 13 ConsoleApplication1

Dieser Forumsbeitrag legt nahe, dass dieses Verhalten Absicht ist, die Dokumentation auf der MSDN website beschreibt aber einen wesentlich nachvollziehbareren Fall. Meiner Meinung nach ist das ein klarer Compiler-bug.

Liebe Leser, was meinen Sie dazu?

Viele Grüsse,
Andreas

Technorati Tags: ,

Freiberufler oder Angestellter – Betrachtung der Kosten

Sunday, May 11th, 2008

Hallo,

in diesem posting möchte ich gerne eine Gegenüberstellung der Kosten eines angestellten und eines freiberuflichen Softwareentwicklers machen.

Machen wir folgende Annahmen:

  • Arbeitsstunden pro Jahr bei 40-Stunden-Woche und 6 Wochen Urlaub: 1638
  • Honorar der Freiberuflers: 80 EUR/Stunde von denen der Vermittler 15 EUR behält.
  • Jährliches Bruttogehalt des Angestellten: 80.000 EUR

Damit kostet der Freiberufler den Auftraggeber 131.040 EUR.

Beim Angestellten ist die Rechnung komplizierter. Rechnen wir die Lohnnebenkosten (Arbeitgeberanteil zu Renten-, Arbeitslosen- und Krankenversicherung, ggf. betriebliche Altersversorgung) der Einfachheit halber mit 20%. Dann liegen die Kosten des Angestellten bei 96.000 EUR.

Rechnen wir weiter mit einer vergleichsweise bescheidenen Fortbildung von 5 Tagen in denen der Angestellte einen Kurs besucht. Es entstehen Gebühren in Höhe von 2000 EUR , der Angestellte kostet jetzt also 98,000 EUR.

Für die Fortbildung ziehen wir 40 Stunden ab ebenso nehmen wir (konservativ) an dass der Angestellte im Jahr eine Woche krank ist. D.h. wir ziehen die 80 Stunden von den Kosten des Freiberuflers ab der damit nur noch 1558 Stunden arbeitet und daher “nur noch” 124.640 EUR kostet.

Die Rechnung sieht also so aus:

Kosten Freiberufler: 101.270 EUR
Kosten Vermittler: 23.370 EUR
Kosten Angesteller: 96.000 EUR

Und wir kommen zu dem auf den ersten Blick verblüffenden Schluss, dass der Freiberufler in etwa das Gleiche erhält wie der Auftraggeber für einen angestellten Mitarbeiter mit vergleichbarer Qualifikation zahlen müsste. Dafür kann der Freiberufler völlig flexibel eingesetzt werden, d.h. insbesondere ohne Abfindungen oder das Risiko einen Prozesses beim Arbeitsgericht wieder “abgestoßen” werden. Außerdem goutiert die Börse eine solche Verlagerung von Lohnkosten und Arbeitsstellen hin zu Projektkosten in der Regel mit steigenden Kursen.

Ich würde mir auch wünschen, dass die Auftraggeber etwas mehr hinterfragen ob die erheblichen Zahlungen an die Vermittler für die gesamte Dauer des Einsatzes wirklich gerechtfertigt sind. Es wird zwar wenn immer möglich versucht die Honorare zu reduzieren, aber ich habe noch von keinem Auftraggeber mitbekommen, dass er versucht auf die Marge Einfluss zu nehmen – obwohl dies durchaus in seinem Interesse wäre.

Nicht betrachtet in diesem posting sind Gesichtspunkte wie z.B:

  • Das Know How des Freiberuflers passt sehr genau, er erledigt die gleiche Arbeit schneller als ein Angestellter der sich erst einarbeiten muss
  • Überstunden des Angestellten sind mit dem Gehalt abgegolten und fallen regelmäßig an (der Abgestellte wird nominell billiger)
  • Viele Freiberufler fakturieren so viel wie möglich, d.h. Fortbildung, Krankheit und Verwaltungsarbeit wird in die “Freizeit verlagert” (der Freiberufler wird teurer)

usw.

Viele Grüsse,
Andreas

Technorati Tags: ,

Microsoft 70-536 .NET Framework – Application Development Foundation bestanden

Thursday, May 8th, 2008

Hallo,

am 06.05.08 habe ich den Test 70-536 bestanden, den ersten Schritt auf dem Weg zu angestrebten Zertifizierung als Microsoft Certified Professional Developer.

Wie erwartet war der Test recht schwer, da viele Fragen eine detaillierte Kenntnis verschiedener APIs (d.h. z.B. Methodennamen und Position von Parametern) voraussetzten – Informationen die normalerweise die IDE bereitstellt.

Trotzdem hilft dieser Test einen gewissen Überblick über Bereiche des .NET Frameworks zu gewinnen, mit denen man sich normalerweise nicht beschäftigen würde, z.B. verschiedene kryptographische Anwendungen.

Viele Grüsse,
Andreas

Technorati Tags: , ,