Blog Home  Home RSS 2.0 Atom 1.0 CDF  
.NET (Compact) Framework - Softwarequalität
Haggy's technischer BLog
 
 Thursday, June 05, 2008
Durch einen Tipp von Neno Loje wurde ich auf den StyleCop Aufmerksam s. http://code.msdn.microsoft.com/sourceanalysis/

Dieses Tool analysiert Code auf der Source ebene und kann somit prüfen ob der geschriebene Code sich in einer gültigen Sturktur (z.bsp. Coding Konventionen) befindet.


Nochmal danke an Neno für den guten Tipp !
6/5/2008 7:51:19 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]    | .NET Allgemein | .NET Framework 3.0 | C# | Free Tools | Releases | Softwarequalität | Thir Party Tools  | 
 Sunday, May 25, 2008
In meinen Applikationen gibt es ab und an Manager, welche sich Referenzen auf Instanzen die sie selbst erzeugt hatten, merken sollen.

Diese Manager sollen aber die erzeugten Instanzen nicht unnötig am Leben halten. Deswegen verwende ich hierzu die System.WeakReference Klasse.
Das sieht dann so aus:

List<WeakReference> formRefs  =....
...

Form myForm = new Form();
WeakReference myRef = new WeakRefrence(myForm);
formRefs.add(myRef);

beim abrufen kann man nun prüfen ob die Instanz noch am leben ist und zwar so in der art

if(myRef.IsAlive && myRef.Target != null)
{
    Form myOldForm = myRef.Target as Form;
 
    if(myOldForm != null)
    {
        ....
    }
}



Allerdings hat mich das ständige casten schnell genervt und so habe ich eine generische Implementierung drauf gesetzt.

Mir dieser Klasse kann man sich eine WeakReference nun so erzeugen

WeakReference<Form> weakRef = new WeakReference<Form>(myForm);
und spart sich nun das ganze casten.

if(weakRef.IsAlive && weakRef.Target != null)
{
    Form myOldForm = weakRef.Target;

    //Sicherheitsprüfung, um auszuschließen dass der GC soeben asynchron das obejkt weggeworfen hat
    if(myOldForm != null)
    {
    }
}

Die Klasse gibts im Anhang

WeakReference.cs (2,2 KB)

Feedback welcome !
5/25/2008 9:52:24 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [4]    | .NET Allgemein | BE Components | C# | Free Tools | Softwarequalität | Tutorials  | 
 Sunday, November 18, 2007
Letzten Dienstag und Mittwoch fand in Baden-Baden die Prioconference (s. www.PrioConference.de) mit dem Thema Softwarequalität statt.

Ich hatte das Glück dort anwesend und somit auch die Vorträge hören zu können.

Interessant ist die Idee der PrioConference. Es geht dort nicht um die reine Verwendung einer Technologie,  wie es zumeist bei anderen Konferenzen der Fall ist. Sondern viel mehr um generelle Themen, welche meinem Gefühl nach beider Alltäglichen Softwareentwicklung zu oft zu kurz kommen.

So findet man Themen wie „Useability Engineering“ , „Von der Idee bis zur Implementierung“ ,“Production Debugging“ oder sogar „Soft Skills“ im Vortragsplan.

Abgerundet wurde das Programm durch Erfahrungsberichte zu Softwarequalität, wie man diese erreicht und hält, von Firmen / Entwicklerteams  wie Vanatec, sharpDevelop usw….

Viele der Sessions wären auch für Entwickler  geeignet gewesen ohne C# oder .NET zu kennen. Das begründet sich in  der Art  der Vorträge, welche sich mehr auf generische Sachverhalte bezogen die auf nahezu alle Entwicklungsumgebunden übertragbar waren.

Trotz des eher Theoretischen Inhalts waren, meinem Gefühl nach, die meisten Themen auf das tägliche Arbeiten übertragbar.  So konnte man einige Impulse und Anregungen für Optimierungen des täglichen Arbeitens mitnehmen.

Insgesamt drängten sich mit in den Tagen nach der Konferenz jedoch einige Frage auf, deren Beantwortung mir nicht leicht fällt.

Je mehr man sich mit Softwarequalität beschäftigt umso mehr kommt man meiner Meinung nach zu dem Schluss, dass Softwarequalität direkte Auswirkungen auf Stabilität, Flexibilität und fotlaufende Entwicklungsdauer für Erweiterungen und Bugfixes hat.

Insofern müsste doch bei jedem Softwareentwickler einer „großen“ Software  doch die Softwarequalität eine besonders große Priorität haben.   Gerade weil uns das .NET Framework immer größere Möglichkeiten bietet (z.bsp. WF & WPF)  werden sich doch die angebotene Software immer weniger durch extra Funktionalität als viel mehr durch Stabilität, Erweiterbarkeit und Usability unterscheiden.

Wann dann die eigene Struktur der Software nicht mehr tragfähig oder Flexibel genug ist ist bleibt die Frage wie man sich von anderen konkurierenden  Produkten  abheben kann.

Ist dann die eigene Anwendung noch Buggy so wird man wohl nicht lange bestehen können.

Im krassen gegensatz dazu steht aber meine Erfahrungen aus dem Internet. So werde ich viel häufiger gefragt wie man X,Y in der .NET Syntax implementieren kann als „Was wären denn logische Strukturen für meine Anwendung“. Schaut man sich die Webcasts beim MSDN Webcast Finder an so findet man hundere Webcasts zu verschiedensten Klassen & Namespaces im .NET Framework aber kaum etwas über Softwarearchitektur oder nur wenig zu Unittests.

MSDN Solve bietet wenigstens ein paar Webcasts zu Software Patterns aber auch das ist wohl eher nur ein Tropfen auf den heißen Stein.

 

Ich frage mich wieso ist das so ? Ist Softwarequalität eine theoretisch tolle und notwendige Sache ,die aber in der Praxis auf Grund Knapper Budgetpläne immer gekürzt wird?  Auch wenn das Bedeutet dass Nachfolgende Entwicklungen immer teurer werden, da die Software nicht stabil oder die Struktur zu inflexibel ist ? z.Bsp. habe ich bis jetzt nur sehr selten von jemanden gehört, der Konsequent Refactoring Pausen durchgezogen hat

 

Wie sind eure Erfahrungen und Meinungen zu dem Thema?

11/18/2007 8:19:28 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]    | .NET Allgemein | Konferenzen | Softwarequalität | Sonstiges & Offtopic  | 
Copyright © 2010 Haggy. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme: