Blog Home  Home RSS 2.0 Atom 1.0 CDF  
.NET (Compact) Framework - Software Life Cycle
Haggy's technischer BLog
 
 Sunday, February 17, 2008

Ein Geist geht um. So oder so ähnlich könnte man, wenn man betrachtet, was sich momentan in der Softwareentwicklung fast still schweigend bewegt.

Ich versuche Software möglichst modularisiert und entkoppelt zu entwickeln. Die Vorteile liegen für mich auf der Hand.

Gerade die Idee von Ralf Westphal     (s. seinen BLog  Software als System) wie man Softwareentwickeln sollte, zeigt Vorteile auf .

Wenn Teile einer Software (egal ob man sie nun Service ,Komponente, Klasse oder sonst wie bezeichnet) so modular und entkoppelt sind, dass man sie austauschen kann ist diese Software deutlich besser Testbar und ermöglicht es andere Komponenten gedanklich ausblenden zu können.

Die Idee der Softwarezelle ist neiner Meinung nach ein sehr guter Ausgangspunkt um einen verbesserten Softwareprozess zu entwickeln.
Dieses System beschreibt einen sehr organisierten und geplanten Softwareentwicklungszyklus welcher sich den Vorgehensweisen denen in der Industrie annähert.

Und genau das ist etwas wonach ich schon seit einiger Zeit strebe aber immer wieder feststelle, dass in bei vielen noch kein adäquates Bild von Softwareentwicklung besteht.
Die leider nur zu oft an den Tag gelegene Haltung zur Softwareentwicklung ist, dass man ja nur „CodeZeilen“ schreibt. Text also. Die Eigentliche Schwierigkeit der Softwareentwicklung wird selbst heute noch leider nur all zu oft in dem Schreiben der Syntax, also im Schreiben des Textes, fast dem sequentiellen Drücken der Tasten gesehen.

Wozu also der unnötige Aufwand?


Das finde ich immer recht verwunderlich, denn wer würde behaupten, dass das Problem bei dem Bau einer Kathedrale das Anrühren des Betons wäre? Oder das bei dem Gemälde in der Sixtinischen Kapelle die größte Leistung des Künstler darin liegen würde dass er in der Lage ist einen Pinsel zu verwenden?

Es ist viel mehr das Zusammenwirken vieler Faktoren,  das Gesamtbild und die Zusammenhänge darin, die die Schwierigkeit einer Software ausmachen.

Doch warum wird Gegenteiliges bei der Softwareentwicklung erwartet? Es ist meine Überzeugung, dass hinter jeder Haltung eine Motivation steckt und dass Prinzipiell jeder Mitarbeiter einer Firma  dazu beitragen möchte, dass die Firma Erfolg hat.
Wieso also gibt es hier so grundsätzlich verschiedene Überzeugungen (Zumeist zwiscehn Stakeholder und Softwareentwickler) wie Software entwickelt werden sollte?

Der Grund hierfür liegt meiner Meinung nach darin, dass große Teile des Personals in der IT Branche hineingewachsen sind. Sehr viele Projektleiter waren mal selbst Softwareentwickler. Was dazu führt, dass sie sich ja „eigentlich auskennen“ selbst “Männer/ Frauen vom Fach sind“.
Dies wiegt Führungspersonen verständlicherweise leicht in einem trügerischen Sicherheitsgefühl. Denn bei den meisten sind die letzten produktiven Codezeilen doch schon eine Weile her. Auch verbringen sie in der Regel keine 8-16  Std am Tag mit Softwareentwicklung. Können Sie somit auf dem gleichen Stand sein wie der Softwareentwickler ?

Ich behaupte: Nein !

Wenn man sich nun anschaut wie die Anforderungen an Software im Allgemeinen vor 10 oder 20 Jahren aussahen, hat das mit heutiger Softwareentwicklung nichts mehr zu tun.

Aus simplen EAV Consolen Anwendungen wurden Datenbank Windows Anwendungen, aus diesen wiederum  Verteile Applikationen welche Webservice anbinden und am besten im Internat auf Desktops, PocketPcs und in Outlook laufen sollen. Und dementsprechend beeinflussen die Anforderungen auch die Art wie Software entwickelt wird. Oder würden Sie ein Bau eines Hochhaus genauso angehen wie Sie ein Iglu bauen würden?

Sehr oft existiert auch ein Art „pseudo Wissen“, das daraus resultiert dass Motivierte Projektleiter versuchen noch Schritt zu halten und somit versuchen sich nebenbei Wissen anzueignen.

Es ist für mich aber ganz wichtig, dass nicht falsch zu verstehen, denn ein Kundenbetreuer muss meiner Meinung nach auch nicht wirklich wissen was SOA bedeutet, oder was nun WCF besser macht als „reine“ Webservices. Denn es gehört doch gar nicht zu seinem Aufgabenbereich. Es wäre in meinen Augen sogar sehr ineffizient wenn nun alle Chefs, Kundenbetreuer etc. anfängen würden zu erlenen wie man verteilte Applikationen entwickelt und jeden Tag Zeit in das erlernen neuer Techniken oder Softwareprodukten stecken würden. Denn der Bereich der Softwareentwickler ist so groß, dass sich schon die „VollzeitSoftwareentwickler“ spezialisieren müssen und das Leiten einer Firma ist auch nicht gerade Trivial.

Wieso entsteht nun aber überhaupt die Situation, dass die großen und kleinen „Chefs“ anfangen sich halbwisse anzueignen und wieso passt die Art Softwareentwicklung nicht mehr zu der Art wie man Software vor 20 Jahren entwickelt hat?

Im Endeffekt würde ich sagen „Features“. Kunden erwarten mehr. Windows bietet immer mehr Funktionalität und auch wenn viele bei Vista die Nase rümpfen: „Den Glass Effekt oder die Zoomable GUI oder die Ribbons in unserer Anwendung zu bekommen wäre schon der Hammer…“.

Durch steigende Informationsmengen steigt auch der Wert der Informationen und damit auch die Notwendigkeit diese Effizient und Zeitnah auswerten zu können. Wir sind es gewohnt fast 24h am Tag online gehen zu können und diese Erwartungshaltung gilt auch auf für die Software die wir erstellen.
Haben wir ein nun ein Tool mit den wichtigsten Informationen, die wir uns vorstellen können aber dieses Tool sagt „starten Sie mich bitte nur zwischen 9 und 17 uhr“  würden uns doch ein komisches Gefühl überkommen.

Diese gesteigerten Erwartungshaltungen führen auch zu neuen Anforderungen in der Software . Auf einmal soll eine alte Win32 Exe auch übers Internet laufen ?  Webservice, Webseite ? , Vielleicht noch in Outlook integriert, damit man dort direkt seine Aufgaben bearbeiten kann und achja alles soll am besten gestern Fertig sein… Bei einer nicht geplanten und 5 oder 10 Jahren alten Anwendung vermutlich nicht mehr effizient machbar.

Die Entwicklung in der Softwareentwicklung geht eindeutig in die Richtung

-          Mehr Anforderungen

-          Größere Anwendungen => Komplexere Software

-          Häufig  variierende Anforderungen => Flexibler

-          Größere Informationsmengen schneller und intelligenter abfragen

Auf dem VS2008 Release Event wurde es in der Keynote gesagt „…Softwareentwicklung verändert sich notwendigerweise …„genau JETZT“.

Bei dieser Weiterentwicklung fehlen aber alle die nicht mehr aktiv bei der Softwareentwicklung sind, woraus ein implizit unterschiedliches Verständnis von Software existiert.

Doch was hat dies zur Folge?  Ich sage  folgende Punkte sind Basisanforderungen, die man an eine Softwareentwicklung stellen sollte:

1.       Vertrauen. Denn nur dann kann man effizient arbeiten. Wenn der Consultant der Kontakt zum Kunden hat, zu 100% seinen Mitarbeiter Vertrauen kann, dass diese Wissen wen man wofür fragen muss, welche Technologien es zu evaluieren gibt, dann kann sich der Leiter auf seine Arbeit konzentrieren und man kann sich auf eine definierte Schnittstelle einigen die dafür sorgt dass aus Kundenwünschen, Anwendungen entstehen.

2.       Planung geplante Software kann die Flexibilität steigern und auch die Komplexität für andere Entwicklern  deutlich verringern.

3.       Architekt Gerade bei größeren Anwendungen halte ich es inzwischen für notwendig, dass es eine Zentrale Stelle für Planungen in der Softwarearchitektur gibt. Die Person an dieser Stelle sollte bei jeder neuen Anforderung der primäre Ansprechpartner sein. Der Architekt kann dann entsprechend des Themen Bereiches die betroffenen Entwickler hinzu ziehen,

4.       Spezialisierung Chefs und Kunden Betreuer sollten sich auf ihr jeweiliges Gebiet spezialisieren und von einander profitieren. Eine Mischung ist für beide Position Ineffizent. Es muss lediglich ein gemeinsamer Kommuninkationsweg gefunden werden

5.       Konstruktive Kritik Jedes Teil des Teams sollte offensiv und konstruktiv Kritik suchen und geben um so Schwachstellen in der Planung und Umsetzung von Softwareprojekten zu finden.

 
In diesem Sinn geht eine Veränderung fast Geisterhaft um. Die Änderung von intuitiver Softwareentwicklung zu einer geplanten. Doch gerade die Entscheidungsträger die solche Strukturen formen müssen sind in den meisten Fällen nicht auf dem technischen und „erahnen“ höchstens die Vorteile.
 Es gab nie (und wird es wohl auch nie geben)  eine Schlagzeile die sagt: „Ab morgen geplante Software!“

Kein Wachrütteln, kein Alarmton, Kein Kampfschrei,…. deswegen wird wohl in den meisten Fällen der Leidensdruck entscheidend sein ab wann nun Software geplant und nach Standards entwickelt wird.

Schlimmer noch es gibt nicht einmal „Die Lösung  wie man Software entwicklen sollte wodurch nicht nur jeder selbst in der Verantwortung zu lernen ist sondern selbst auch in der Verantwortung ist herauszufinden ob es etwas zu lernen gibt.

2/17/2008 8:28:05 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [0]    | .NET Allgemein | Software Life Cycle  | 
Copyright © 2010 Haggy. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme: