L'objectif de cette question: certains logiciels effectuent un "travail supplémentaire" afin d'augmenter les chances d'un résultat "finalement réussi / satisfaisant", malgré une ou plusieurs erreurs internes dans le logiciel, ce qui nécessite un temps d'exécution plus long lorsque ces erreurs se produisent. Tout cela se produit à l'insu de l'utilisateur si le résultat est positif.
Définition d'un logiciel complexe:
- Contient du code écrit par (contribué de) plus de 10 développeurs au cours de sa durée de vie, et non écrit dans le même laps de temps
- Dépend de plus de 10 bibliothèques externes, chacune avec des mises en garde
- Une tâche logicielle type (pour générer un résultat souhaité par l'utilisateur) nécessite 10 paramètres d'entrée ou plus, la plupart d'entre eux ayant des valeurs par défaut mais configurables si l'utilisateur a besoin de contrôle.
- Plus important encore, un logiciel qui a la complexité appropriée par rapport à la tâche exécutée, c'est-à-dire qui n'est pas inutilement compliqué .
Édité: Qu'est-ce qui est complexe? Veuillez consulter Il existe une grande différence entre Complexe et Compliqué . (lien direct)
Définition de la redondance / robustesse dans cette question :
(Robustesse ajoutée sur la base des commentaires)
- Si une tâche logicielle a échoué lorsque l'ensemble de paramètres actuel a été utilisé, essayez différents paramètres.
- De toute évidence, il doit exister une connaissance interne du fait que ces paramètres "différents" utilisent un chemin de code différent, ce qui peut entraîner un résultat différent (espérons-le meilleur).
- Parfois, ces différents chemins de code sont choisis en fonction des observations des bibliothèques externes.
- À la fin, si la tâche réelle exécutée est légèrement différente de la spécification de l'utilisateur, l'utilisateur recevra un rapport détaillant l'écart.
- Enfin, comme les paramètres configurables à plus de 10, la redondance et la génération de rapports sont également configurables.
Exemple d'un tel logiciel:
- Migration de la base de données
- Base de données d'entreprise
- Base de données de contrôle des sources, etc.
- Conversion par lots entre un document Word et un document OpenOffice, PowerPoint et OpenOffice Draw, etc.
- Traduction automatique d'un site Web entier
- Analyse automatique de progiciels, tels que Doxygen, mais où l'analyse doit être plus fiable (c'est-à-dire pas seulement un outil de documentation)
- Communication réseau, où les paquets peuvent être perdus et un certain nombre de tentatives sont attendues
Cette question était à l'origine inspirée de Comment gérez-vous le code intentionnellement mauvais?
mais se concentre désormais sur une seule des causes du ballonnement logiciel. Cette question ne traite pas d'autres causes de ballonnement logiciel, telles que l'ajout de nouvelles fonctionnalités.
Peut-être lié: