Software Werte
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Welche Qualitäten möchte man in produzierter Software haben:
- Benutzerfreundlichkeit
- Zuverlässigkeit (Fehlerfreiheit)
- Erweiterbarkeit
- Kostengünstigkeit
- Lesbarkeit
- Modularität
- Speichereffizienz
- Performance
- Portabilität
- Wartbarkeit
- Wiederverwendbarkeit
- "Time-To-Market"
- ...
Und wie bestimmt man den optimalen Mix?
Haben moechte man alle der zum jeweiligen Projekt passenden Qualitäten. Welche das nun sind, nun, das kann man mit "den optimalen Mix bestimmen" zusammenfassen, da die Abwägung zwischen diesen Punkten nie ein Spiel mit absoluten Zahlen ist, sondern erfahrungsgemaess immer das Finden eines Kompromisses darstellt.
Beim Bestimmen des "Mischungsverhältnisses" hilft z.B. Erfahrung, das Wissen um das vorgesehene Einsatzumfeld, schneller und engagierter Feedback aus Tester/Kunden/Anwenderkreisen.
Wer mag damit anfangen, in's Detail zu gehen?
Wiederverwendbarkeit als zentraler Wert | |
Ich postuliere, dass der zentrale Wert in der SoftwareEntwicklung die Wiederverwendbarkeit ist. Aus der Wiederverwendbarkeit lassen sich alle anderen Werte (oder SoftwareQualitätsmerkmale) ableiten. Dieses Statement schiene mir nicht notwendig, wenn es nicht eine starke gegenteilige Mehrheitsmeinung zu geben schiene. Diese drückt sich einerseits durch entsprechende Statements (wie "reuse is dead" oder WardsWiki:ReuseHasFailed) aus, zeigt sich aber andererseits in vielen Marktentwicklungen, welche die Wiederverwendung von Software erschweren (z. B. vielfache Entstehung neuer Programmiersprachen statt evolutionärer Weiterentwicklung der vorhandenen).
Ein schwerwiegender Einwand gegen Wiederverwendbarkeit scheint zu sein, dass hier ein Aufwand entsteht, der sich nicht unmittelbar einen Nutzen im aktuellen Projekt erzeugt. Wiederverwendbarkeit zu forcieren ist ja nichts anderes als eine Optimierung struktureller Merkmale. Und Optimierung hat einen schlechten Ruf (siehe SoftwareOptimierung). Andererseits kann die Wiederverwendung mittel- und langfristig Kosten und Entwicklungszeiten reduzieren und Marktchancen verbessern.
Interpretiert man die obigen SoftwareWerte im Bezug auf die Wiederverwendbarkeit, dann ergibt sich:
- Benutzerfreundlichkeit als Merkmal der Verwendbarkeit auf oberster Ebene. Nur verwendbare Software ist auch wiederverwendbar.
- Zuverlässigkeit ist ein Resultat der langfristigen und vielfältigen Nutzung (Wiederverwendung) von Softwaremodulen. Neuentwicklung ist immer fehleranfälliger.
- Erweiterbarkeit ist ein Bestandteil der Wiederverwendung. Ohne Erweiterbarkeit ist der Anwendungsbereich von Softwaremodulen beschränkt.
- Kostengünstigkeit ergibt sich durch Wiederverwendung: Softwaremodule, die nicht entwickelt oder adaptiert werden müssen, verursachen nur geringe (Wartungs-)Kosten.
- Lesbarkeit ist eine Grundvorausetzung für eine langfristige Wartung und Wiederverwendung.
- Modularität ist eine Grundvorausetzung für eine sinnvolle Wiederverwendung. Wiederverwendung funktioniert am besten nach dem Baukastenprinzip, monolytische Objekthierarchien oder Systeme reduzieren den Anwendungsbereich.
- Speichereffizienz und Performance als Optimierungsziele für sich sind fragwürdig. Wenn man aber eine langfristige Wiederverwendung von Softwaremodulen anstrebt, dann kann sich auch die Optimierung lohnen.
- Portabilität ist Teil der Wiederverwendbarkeit über verschiedene Plattformen hinweg.
- Wartbarkeit ist eine Vorraussetzung für die langfristige Wiederverwendung.
- Verbessertes "Time-To-Market" ist eine Folge einer langfristigen Wiederverwendungs-Strategie.
So scheint mir, dass sich alle wesentlichen SoftwareWerte unter dem Dach der Wiederverwendbarkeit integrieren lassen. Zur Umsetzung benötigt man so etwas wie eine "Philosophie der Wiederverwendung" (ein Minimum an theoretischem Überbau) und einen "Stil der Wiederverwendung" (eine Sammung praxisbewährter Stilempfehlungen) sowie die Motivation dafür.
Zu diesem Thema "Philosophie der Wiederverwendung" habe ich einen Artikel geschrieben: TheMythicalManMinute
SoftwareWerte sind eng mit der SoftwareKultur verbunden.
Siehe auch WardsWiki:WhatMakesSoftwareFlexible
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 3. März 2005 14:11 (diff))