Verwendung von neuen Technologien in Softwareprojekten: Teil 2

In einer kleinen Artikelserie möchte ich die Verwendung von neuen Technologien in Softwareprojekten etwas erläutern, hierbei soll es nicht darum gehen einfach ein Featureset der verfügbaren .Net Technologien zu geben sondern auf bestimmte Fragen einzugehen, die dabei helfen können die richtigen Technologien in Projekte einfließen zu lassen.

 

Im ersten Teil der Serie habe ich mich mit der Frage “Welche Techniken benötige ich?” beschäftigt. Im heutigen – zweiten – Teil der Serie geht es um die Frage:

Welche Techniken bringen mir einen Vorteil?

Gerade die Lösung von Problemen im Softwarebereich bietet den beteiligten Personen viel Platz um Ihre Kreativität auszuleben, es sind prinzipiell immer mehr als ein richtiger Weg verfügbar. Demnach liegt es im Auge des Betrachters den besten Weg zur Problemlösung zu finden und zu gehen.

Oft scheinen Problemstellungen einfach, doch entpuppen sich erst spät im Projekt als Hürden die mit den gewählten Technologien nicht, oder nur umständlich, zu nehmen sind.

Heutzutage werden jedem Entwickler sehr viele Technologien zur Hand gegeben, mit denen er alltägliche Probleme lösen kann. Einige Technologiebeispiele sind in Tabelle 1 aufgelistet.

Problemstellung Technologie
Anbindung an eine zentrale Datenbank ADO.Net
ADO.Net Entity Framework
Linq to SQL
Linq to …
nHibernate
Bereitstellung auf vorhandenen Clients ClickOnce
Windows Installer
SOA SOAP WebServices (classic .Net 2.0)
WCF Services
BizTalk (BTS)
SharePoint (MOSS & WSS)
Web 2.0 Anwendung Silverlight
ASP.Net Ajax
ASP.Net MVC (with Ajax, jQuery)
Ansprechende Windows Anwendung Windows Forms
Windows Presentation Foundation

Tabelle 1: kleine liste vorhandener Technologien

 

Wie man Tabelle 1 entnehmen kann gibt es viele unterschiedliche Technologien die eine Lösung in einem Teilbereich anbieten. Auf dem heutigen Stand der .Net Technologie kann man durchaus sagen, dass es in allen großen Kernbereichen der Softwareentwicklung eine Alternative gibt, die natürlich andere Stärken hat als das entsprechende Pendant.

Doch zurück zur Frage, bevor mit der Implementierung einer Anwendung begonnen wird, sollte man die vorhandenen Technologien gegenüberstellen und abwägen, welche Technologie in dem aktuell vorliegenden Projekt entscheidende Vorteile bietet. Hierbei sollte verschiedene Faktoren beachtet werden, die bei der Entscheidungsfindung helfen können.

  • Zeitersparnis
  • Finanzersparnis
  • Wiederverwendbarkeit
  • Erreichen neuer Märkte
  • Steigerung der Kundenzufriedenheit
  • Erhöhung der Qualität

Die meisten dieser Punkte sollte selbstdefinierend sein, im Kontext der Softwareentwicklung möchte ich allerdings kurz auf die Begriffe “Wiederverwendbarkeit”, “Erreichen neuer Märkte” und “Erhöhung der Qualität” eingehen

 

Wiederverwendbarkeit

Unter Umständen kann die Entscheidung für eine Technologie die Wiederverwendbarkeit von diversen Softwarekomponenten steigern. Das bedeutet, dass zukünftige Projekte von den bereits erlangten Technologiekenntnissen profitieren können, indem bereits implementierte Komponenten als Grundstein für neue Anwendungen verwendet werden können. Dadurch wird in zukünftigen Projekten ebenfalls der Faktor Zeit und der Faktor Kosten minimiert.

Beispiel:

Ein meiner Meinung nach alltägliches Szenario ist die Entwicklung von RIA Web-Anwendungen, hierbei wird sich verstärkt auf Schlagwörter wie Usablilty gestützt und die Web-Anwendungen werden mittels JavaScript interaktiver gestaltet. Zwar wird in den meisten Projekten das JavaScript in separate Files ausgelagert, allerdings werden diese in neuen Projekten nur selten wiederverwendet. Hierbei würde es sich anbieten auf das JavaScript Framework jQuery zurückzugreifen und dementsprechende Plugins zu implementieren, diese Plugins können dann einfach in neuen Projekten wiederverwendet werden. Logischerweise sind Plugins für jQuery ebenfalls “nur” JavaScript Files, allerdings bringt jQuery bereits ein großes Gerüst mit, um welches sich der Entwickler im eigenen Code nicht mehr kümmern muss. Dadurch wird der eigene Code lesbarer, was meiner Meinung nach gerade bei JavaSript noch immer eine Hürde ist.

Erreichen neuer Märkte

Aufgrund der Fülle an Technologien ist es nur schwer möglich in allen Teilbereichen erfolgreich zu agieren, viele Firmen spezialisieren sich auf Teilbereiche der Softwareentwicklung um Ihren Kunden dort herausragende Leistungen zur Verfügung zu stellen. Durch die rapide ansteigende Anzahl an verfügbaren Softwaretechnologien, ergeben sich allerdings auch immer neue Märkte die mit wenig Aufwand von Softwareentwicklern erobert werden können. Gerade in Kombination mit vorhandenen Projekten, können Unternehmen Skills auf Grundlage von “neuen” oder “fremden” Technologien aufbauen und somit Ihren Stammkunden neue, alternative, einfachere Lösungen präsentieren.

Beispiel:

Bei unserem fiktiven Kunden TechiesLtd wurde eine Intranetlösung auf Basis von ASP.Net 2.0 realisiert, diese Anwendung ermöglicht es dem Kunden auf vorhandenen Servern nach Dokumenten zu suchen. Hierbei könnte allerdings auch der neue SearchServer von Microsoft zum Einsatz kommen, dieser kann mit einfachen Mitteln um Quellen erweitert werden um Verzeichnisse oder Devices zu indexieren und eine komfortable Suche nach Inhalten anzubieten.

Durch den Einsatz einer solch “neuen” und auch noch “fremden” Technologie kann sich unser fiktives Softwarehaus RealCodersInc von der Masse absetzen und gehört somit zu einem der wenigen Softwareanbietern, der individuelle Lösungen auf Basis des neuen SearchServers anbietet.

Erhöhung der Qualität

Mit Erhöhung der Qualität spreche ich in diesem Kontext von der Codequalität, diese wird von Verantwortungsträgern zwar gerne ignoriert, allerdings kann eine Ignoranz in diesem Bereich zu erheblichen Mehrkosten für Wartung oder Erweiterung führen. Jedes Problem lässt sich mit jeder Technologie irgendwie lösen, allerdings bietet eine andere Technologie eventuell schon eine Architektur an, auf deren Grundlage die geforderte Lösung im Nu erfüllt werden kann. Zudem wird durch diese alternative Technologie der Quellcode lesbarer und Wartungsfreundlicher, was auf lange Sicht auch kostenschonend ist.

An dieser Stelle muss ich allerdings erwähnen, dass sehr viel KnowHow in den Technologien vorhanden sein muss, um eine Entscheidung auf Grundlage dieses Argumentes zu treffen.

Als Beispiel kann man sich einfach ASP.Net im Vergleich zu ASP.Net MVC anschauen. ASP.Net MVC bringt eine komplette Architektur für CRUD-Anwendungen mit auf deren Grundlage einfache Webanwendungen schnell realisiert werden.

 

Durch die Validierung der Technologien gegen diese Merkmale, kann man klare Technologie-Vorteile oder Nachteile der einzelnen Komponenten aufdecken und demnach Entscheidungen für die zu verwendenden Technologien in Softwareprojekte treffen.

 

DotNetKicks-DE Image
Published Donnerstag, 4. Juni 2009 17:17 von ThorstenHans
Abgelegt unter: , ,

Kommentare

Keine Kommentare

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)