6 verschiedene Arten von Software

Inspieriert von Joel Spolsky’s Five Worlds

Viele Unternehmen erstellen Software (in diesem Beitrag auch Computer Programm oder IT System genannt). Es ist jedoch wichtig zu wissen, um welche Art von Software es sich handelt.

Denn je nach dem unterscheidet sich auch der Ansatz mit welchem man an die Programmierung herangeht. Bei manchen spielt das Endgerät (Endgerät: zum Beispiel, Desktop, Smartphone, etc.) keine grosse Rolle, da es in manchen Fällen immer die selbe ist, wie zum Beispiel bei Embedded Software (mehr dazu im Beitrag). In manchen Fällen spielen die Endgeräte wiederum eine grosse Rolle, wie zum Beispiel bei paketierten IT Systemen.

Nicht nur bei den Endgeräten, also die Hardware auf dem das Programm läuft, ändern sich die Anforderungen je nach der zu entwickelnden Software. Andere Parameter wie Budget, zeitliche Umsetzung, Geschwindigkeitsanforderung und noch einige mehr ändern sich zudem auch.

Im Folgenden die unterschiedlichen Arten von IT Programmen:

1) Paketierte Software

Paketierte Software ist den meisten bekannt. Microsoft Windows oder Microsoft Office sind passende Beispiele.

Das Besondere bei dieser Form von Programmen ist, dass diese bereits fertig geliefert sind und nicht mehr für den Kunden spezifisch angepasst werden. Alle Anwender bekommen das Gleiche. Lediglich einige Einstellungen können verändert werden.

Die Herausfoderungen bei der Programmierung ist hier, dass diese Computer Programme auf unterschiedlichsten Rechnern mit unterschiedlichsten Konfigurationen installiert werden. Beispielsweise könnte das Programm unterschiedlich auf Intel Prozessoren reagieren, als es zum Beispiel auf AMD Prozessoren tun würde.

Dies macht es notwendig, das IT System durchgängig zu testen. Gleichzeitig ist es nicht so schlimm eine erste Version 1.0 herauszubringen, welche noch Fehler (im Computer Jargon “Bugs” genannt) enthalten. In der nächsten Version kann man dann die von den Nutzern und dem eigenen Team gefunden Fehler beheben.

Das beste Beispiel ist auch hierfür Microsoft Windows. Bei fast jedem Neustart des Programms werden neue Updates eingespielt. Dabei handelt es sich in den meisten Fällen um Fehlerbehebungen, welche die Nutzer oder das eigene Testteam gefunden haben. Nur zu einem geringen Umfang handelt es sich um neue Funktionen die eingespielt werden.

2) Open Source

Bei Open Source handelt es sich um Software, welche kostenfrei bereitgestellt wird. Dieses System wird von einer Gemeinschaft an Entwicklern betrieben und weiterentwickelt, welche hierfür üblicherweise keine Remuneration nehmen.

Ein gutes Beispiel hierfür ist PHP. Es gibt hier eine grosse Gemeinschaft, welche diese Programmierung kostenfrei bereitstellt. PHP kann wiederum genutzt werden, um Webapplikationen zu schreiben. Hierfür könnte ein PHP Entwickler wiederum ein Entgelt nehmen.

Die verschiedenen, bereits programmierten, Komponenten helfen dabei, Applikationen schneller zu entwickeln.

Die grosse Herausforderung bei solchen Systemen ist, dass die Programmierer die gemeinsam daran arbeiten, sehr weit verstreut auf der Welt sind. Dies führt dazu, dass diese Systeme, oder zumindest deren Komponenten, nicht immer so gut durchgedacht sind, wie das bei anderen Systemen der Fall ist, wo sich Programmierer direkt in einer Gruppe vor Ort absprechen.

3) Unternehmens-/ Berater-Software

Unternehmens- / Beratungs-Software fällt zum Teil auch in den Bereich paketierte IT Systeme.

Hierbei werden bereits paketierte Programme an Unternehmen angepasst. Die Berater oder die Beratungshäuser, die diese Anpassungen vornehmen, nehmen meistens mehrere Hundert Euro pro Stunde. Sicherlich auch deswegen, weil diese eine hohe Spezialisierung in ihrem Gebiet haben. Ein Beispiel hierfür wäre ein Beratungshaus, welches SAP in einer Grossbank implementiert. Wobei SAP eine zum Grossteil bereits fertig geschriebene Software ist.

4) Individual-/ Interne Software

Unternehmen haben in manchen Fällen so ausgefallene Wünsche oder Anforderungen, dass Applikationen nur für diese geschrieben werden.

Ein Beispiel hierfür wäre eine spezielle Applikation für ein Unternehmen welches Motoren herstellt und deren Geräuschpegel auf den kleinsten Dezibel herausfinden muss. Hierfür lassen sich höchstwahrscheinlich keine paketierten Systeme oder Open Source Module finden.

Der grosse Vorteil bei der Entwicklung von solchen Systemen ist, dass man Annahmen darüber machen kann, welche Hardware genutzt wird, sowie auch die generelle technische Umgebung.

Man weiss zum Beispiel, dass im Unternehmen eine bestimmte Version des Internet Explorers genutzt wird und nur eine bestimmte Anzahl von unterschiedlichen Rechner-Systemen. Dementsprechend kann man gezielt für diese Umgebung entwickeln.

5) Embedded

Bei Embedded Software handelt es sich um Technik, welche in einer speziellen Hardware eingespielt wird und später nicht mehr verändert wird.

Bei der Entwicklung muss man extremst aufpassen, denn die Lösung welche schlussendlich in die Hardware eingespielt wird, darf keine Fehler mehr enthalten. Denn man kann meistens keine Updates darauf einspielen. Ein Beispiel wäre hierfür eine Software welche in ein Auto implementiert wird. Hier kann man dann keine Änderungen mehr vornehmen, sobald es verkauft ist. Im schlimmsten Fall können Programmierfehler zu Rückrufaktionen von diesen Autos führen.

Bei paketierten Systemen ist das wiederum nicht so schlimm, da, wie bereits erwähnt, einfach eine weitere Version, mit den Fehlerbehebungen, an die Kunden, entweder unentgeltlich oder gegen Bezahlung, weitergegeben wird.

6) Cloud-basiert

Cloud-basierte Lösungen werden immer wichtiger im Unternehmensbereich. Früher mussten IT Systeme noch aufwändig intern von IT Abteilungen gewartet werden. Heute läuft alles im Hintergrund ab und wird von den Cloud-Lösungsanbietern gewartet.

Bei solcher Software, kann der Anbieter, wie bei paketierten Systemen auch darauf setzen, dass Version 1.0 nicht perfekt sein muss. Er kann noch viel schneller neue Versionen einspielen und relativ zeitgleich auf Kundenfeedback eingehen.

Bei der Programmierung dieser Systeme müssen besonders auf Bereiche, wie Sicherheit, Offline-Nutzung und weitere ein Fokus gegeben werden.

Fazit

Wenn man verstanden hat, dass es unterschiedliche IT Systeme gibt und diese unterschiedliche Anforderungen haben, dann wird man den Prozess der Entwicklung auch anders angehen. Ein Cloud-basierter Anbieter kann viel entspannter auf die erste Version der Lösung schauen und diese veröffentlichen, als dies zum Beispiel ein Embedded System Anbieter tun könnte.

Wer auf kleine Preise setzen will, sollte paketierte Software programmieren, da sich die Entwicklungskosten leichter auf eine Vielzahl von Nutzern verteilen lässt.

Wer Grossunternehmen anspricht, kann sich auf Unternehmenssoftware spezialisieren, welche auf die speziellen Bedürfnisse des Kunden angepasst werden. Eine SAP Implementierung kann Beispielsweise mehrere Millionen Euro kosten.

Anbieter welche schnell auf Kundenwünsche reagieren wollen und können, sollten auf Cloud-Lösungen setzen, welche sich schnell abändern lassen.

Es lassen sich noch viele weitere Schlüsse ziehen, sobald man weiss, welche Art von Software man anbieten will.

Gleichzeitig sollte man auch erwähnen das sich die IT Landschaft extrem schnell verändert. Grossunternehmen setzen vermehrt auf eine Cloud-Strategie und daher vermischen sich die Arten der IT Systeme in der Zukunft immer mehr.

Welche Erfahrungen haben Sie gemacht?

Bilder: Flickr.com/ Dineen/ Cote/ Farr/ Rodriguez/ Bruce


Der Autor: Sascha Thattil arbeitet bei YUHIRO und hilft Unternehmern und Unternehmen beim einfachen Aufbau von Programmier-Teams in Indien. YUHIRO ist ein deutsch-indisches Unternehmen welches IT Firmen, Agenturen und IT Abteilungen Softwareentwickler bereitstellt.

Schreibe einen Kommentar