Der Fokus dieser Frage: Manche Software führt "zusätzliche Arbeit" aus, um die Wahrscheinlichkeit eines "schließlich erfolgreichen / zufriedenstellenden" Ergebnisses trotz eines oder mehrerer interner Fehler in der Software zu erhöhen, die eine längere Ausführungszeit erfordern, wenn diese Fehler auftreten. All dies geschieht ohne Wissen des Benutzers, wenn das Ergebnis erfolgreich war.
Definition komplexer Software:
- Enthält Code, der im Laufe seiner Lebensdauer von mehr als 10 Entwicklern geschrieben (beigesteuert) und nicht im selben Zeitrahmen geschrieben wurde
- Hängt von mehr als 10 externen Bibliotheken ab, die jeweils Vorbehalte enthalten
- Eine typische Softwareaufgabe (zum Erzeugen eines vom Benutzer gewünschten Ergebnisses) erfordert 10 oder mehr Eingabeparameter, von denen die meisten Standardwerte haben, die jedoch konfigurierbar sind, wenn der Benutzer die Steuerung benötigt.
- Vor allem Software, die im Verhältnis zur auszuführenden Aufgabe die entsprechende Komplexität aufweist, dh nicht unnötig kompliziert ist .
Bearbeitet: Was ist komplex? Bitte beachten Sie Es gibt einen großen Unterschied zwischen komplex und kompliziert . (direkte Verbindung)
Definition von Redundanz / Robustheit in dieser Frage :
(Robustheit basierend auf Kommentaren hinzugefügt)
- Wenn eine Softwaretask fehlgeschlagen ist, als der aktuelle Parametersatz verwendet wurde, versuchen Sie es mit anderen Parametern.
- Offensichtlich muss bekannt sein, dass diese "unterschiedlichen" Parameter einen unterschiedlichen Codepfad verwenden, was möglicherweise zu einem anderen (hoffentlich besseren) Ergebnis führt.
- Manchmal werden diese unterschiedlichen Codepfade basierend auf Beobachtungen der externen Bibliotheken ausgewählt.
- Wenn die tatsächlich ausgeführte Aufgabe geringfügig von der Spezifikation des Benutzers abweicht, erhält der Benutzer am Ende einen Bericht, in dem die Diskrepanz aufgeführt ist.
- Ebenso wie die über 10 konfigurierbaren Parameter können auch die Redundanz und das Berichtswesen konfiguriert werden.
Beispiel für eine solche Software:
- Datenbankmigration
- Geschäftsdatenbank
- Quellcodeverwaltungsdatenbank usw.
- Stapelkonvertierung zwischen einem Word-Dokument und einem OpenOffice-Dokument, PowerPoint und OpenOffice Draw usw.
- Automatische Übersetzung einer gesamten Website
- Automatische Analyse von Softwarepaketen wie Doxygen, bei denen die Analyse jedoch zuverlässiger sein muss (dh nicht nur ein Dokumentationswerkzeug)
- Netzwerkkommunikation, bei der Pakete verloren gehen und eine Reihe von Wiederholungsversuchen erwartet werden
Diese Frage wurde ursprünglich inspiriert von Wie gehen Sie mit absichtlich schlechtem Code um?
aber jetzt konzentriert sich auf nur eine der Ursachen von Software-Bloat. Diese Frage befasst sich nicht mit anderen Ursachen für das Aufblähen von Software, z. B. dem Hinzufügen neuer Funktionen.
Möglicherweise verwandt: