Quel est un bon exemple d'une idée ou d'une technique de développement logiciel qui a échoué?

9

Plus précisément, voici quelques exemples où les idées des masses étaient tout simplement erronées. Pourquoi les gens se sont-ils accrochés aux idées en premier lieu? Et pourquoi les idées ont-elles été rejetées? Ou peut-être que les idées sont toujours bien vivantes et si oui pourquoi?

Par exemple, je pourrais décrire CORBA (et d'autres technologies similaires) comme quelque chose qui a tenté de résoudre le problème de la communication entre les composants du logiciel. Beaucoup ont jugé nécessaire de définir des contrats entre les différentes composantes. En fin de compte, HTTP + JSON a résolu le problème pour les masses et d'autres mécanismes RPC tels que Thrift et Proto-bufs sont apparus.

Evan
la source
1
regardez EXXXXXXXXXXXXXXXXXTREEEEEEEEEEEEEMEE Programmation ...
crasic
Il n'y a pas d '"idées des masses", juste des idées qui deviennent populaires, et je ne pense pas qu'une idée sur la façon de faire quelque chose qui est utilisé assez longtemps pour devenir populaire puisse être "juste fausse", comme il est évident doit résoudre certains problèmes ou il serait immédiatement abandonné par tous ceux qui l'essaient.
Michael Borgwardt
2
CORBA n'est pas un échec .. il est toujours utilisé
oenone
@oenone, c'est un échec dans le sens où il n'a pas tenu sa promesse initiale de résoudre les problèmes d'interopérabilité en général, et c'est maintenant une technologie de niche.
Péter Török
HTTP JSON a résolu les problèmes avec les WebServices mais pas vraiment avec l'autre domaine des logiciels!
sarat

Réponses:

11

Fondamentalement, tout comme dans le monde en dehors des ordinateurs, les idées et les technologies se disputent l'attention, les effets de levier, etc. Certains gagnent, certains perdent; et certains peuvent sembler être The Winner pendant un certain temps, puis disparaître dans l'obscurité avec l'avènement de The Next Big Thing. Cela peut ou non avoir quelque chose à voir avec ce qui était en fait le mieux. Témoin VHS vs Betamax, ou la guerre plus récente entre les différents formats de DVD.

CORBA était énorme, maladroit et difficile à utiliser, mais c'était le meilleur que certaines personnes pouvaient inventer à l'époque (notez qu'il a été conçu avant que le World Wide Web - et HTTP, Java, XML, ... - deviennent largement connus). Et c'était aussi un exemple classique de conception par comité , où ils fourrent chaque idée pour satisfaire tout le monde, ce qui la rend inutilement gonflée (du moins vue par les yeux d'aujourd'hui). Sans parler de son prix qui, avec l'avènement des logiciels libres, est rapidement devenu prohibitif.

En fin de compte, HTTP + JSON a résolu le problème pour les masses

Au moins pour quelqu'un qui n'a pas vu quelques "solutions finales" similaires monter et finalement tomber ... Il est bon de garder à l'esprit qu'il y avait un sentiment similaire à propos de CORBA en son temps ;-)

Je pense qu'il est approprié de citer The Rise and Fall of CORBA :

L'histoire de CORBA est celle que l'industrie informatique a vue à plusieurs reprises, et il semble probable que les efforts actuels des middlewares, en particulier les services Web, reproduiront une histoire similaire. [...]

Dans l'ensemble, le processus d'adoption de la technologie d'OMG doit être considéré comme la raison principale du déclin de CORBA. Le processus encourage la conception par comité et les manœuvres politiques au point où il est difficile d'atteindre la médiocrité technique, sans parler de l'excellence technique. De plus, l'ajout d'éléments disjoints entraîne une érosion progressive de la vision architecturale. [...]

Un processus démocratique comme celui de l'OMG est particulièrement mal adapté à la création de bons logiciels. Malgré les problèmes de procédure connus, l'industrie préfère toutefois s'appuyer sur de grands consortiums pour produire des technologies. Les services Web, la solution miracle actuelle du middleware, utilisent un processus similaire à celui des OMG et, selon de nombreux comptes, souffrent également de luttes intestines, de fragmentation, de manque de cohérence architecturale, de conception par comité et de ballonnement de fonctionnalités. Il semble inévitable que les services Web édictent une histoire assez similaire à celle de CORBA.


Maintenant, sous un angle différent: en lisant votre terme «idées des masses», j'ai pensé à des choses très différentes de CORBA ou d'autres normes; ce sont généralement l'idée d'une personne ou d'un petit groupe. J'ai pensé à des pratiques / points de vue notoires tels que "codage de cow-boy", "coder et prier", "cela fonctionne sur ma machine", etc. le développeur commence instinctivement à écrire du code. Et ils ont tort, car ils ne s'adaptent ni dans l'espace ni dans le temps - on ne peut pas créer de grands programmes maintenables et extensibles de cette façon. Pourtant, je pense que malheureusement, c'est toujours la norme plutôt que l'exception pour les gens qui essaient de travailler de cette façon dans les magasins professionnels du monde entier.

L'autre extrême de ceci est les idées de nombreux gestionnaires et théoriciens de la "bonne approche" pour le développement SW, se manifestant dans les grandes méthodologies M comme CMM, RUP, Waterfall etc. L'idée derrière tout cela est que tout ce dont vous avez besoin est le bon processus, et il commencera à produire automatiquement des logiciels de qualité de manière déterministe, quels que soient les développeurs. Notez que le même jeu peut également être joué en utilisant des méthodes Agiles - c'est juste un changement d'étiquettes. Tout gestionnaire qui estime que la sélection (et le maintien) des bons membres pour son équipe de développement est moins important que le processus de développement, est voué à l'échec, quel que soit ce processus. Cependant, cette croyance en Process semble toujours prévaloir - peut-être est-elle encore enseignée dans les écoles de gestion?

Péter Török
la source
Lecture à travers ce lien: cher dieu, CORBA a dû être horrible si les EJB V1 l'ont supplanté parce qu'ils étaient plus simples ...
Michael Borgwardt
Le produit que Michi Henning a continué à développer corrige de nombreuses lacunes de CORBA.
Blrfl
13

Le modèle en cascade est un exemple fréquent de personnes qui ont mal tourné. Il s'agit d'un schéma du modèle de cascade stéréotypé, qui apparaît également dans l'article de Winston Royce «Gestion du développement de grands systèmes logiciels» .

Modèle de cascade de Winston Royce

Cette image est suivie de ce texte:

Je crois en ce concept, mais l'implémentation décrite ci-dessus est risquée et invite à l'échec ... La phase de test qui se produit à la fin du cycle de développement est le premier événement pour lequel le timing, le stockage, les entrées / sorties, les transferts, etc., sont des expériences par opposition à analysées. Ces phénomènes ne sont pas précisément analysables. Ce ne sont pas les solutions aux équations différentielles partielles standard de la physique mathématique par exemple. Pourtant, si ces phénomènes ne parviennent pas à satisfaire les différentes contraintes externes, alors invariable une refonte majeure est nécessaire. Un simple correctif octal ou la répétition d'un code isolé ne résoudra pas ce genre de difficultés. Les modifications de conception requises sont susceptibles d'être si perturbantes que les exigences logicielles sur lesquelles la conception est basée et qui fournit la justification de tout sont violées. Soit les exigences doivent être modifiées, soit une modification substantielle de la conception est requise. En effet, le processus de développement est revenu à l'origine et on peut s'attendre à un dépassement de 100% du calendrier et / ou des coûts.

Plus loin dans l'article, Royce présente des modèles de processus alternatifs qui impliquent une itération entre la phase actuelle et la phase précédente et un cycle entre les exigences-analyse-conception et un autre cycle entre conception-code-test. Il identifie également un certain nombre de documents et pendant quelles phases ils doivent être achevés, et préconise l'implication des clients et de multiples cascades au sein de chaque phase pour inclure l'analyse, les tests et l'utilisation de tous les artefacts impliqués. En réalité, ce que Royce discute pourrait être considéré comme une première approche des méthodes agiles - toujours très axé sur les plans, mais une base pour le mouvement agile.

Pourquoi les gens se sont accrochés à la toute première cascade, je ne sais pas. Je suppose qu'ils aiment prendre des risques et inviter à l'échec.

Thomas Owens
la source
6
Les gens se sont accrochés à la première méthode de la cascade, car cela serait étonnamment similaire à la façon dont serait un projet de génie civil comme la construction d'un gratte-ciel de 40 étages. Lors de la construction d'un gratte-ciel, les exigences et les contraintes sont trop douloureusement claires pour être manquées et rien de majeur ne changera à mi-chemin. L'analyse et la conception (architecture) doivent être complètes et approfondies ne laissant aucune place à l'interprétation. Le bâtiment doit être construit selon les spécifications et enfin les inspecteurs doivent entrer et qualifier le produit fini. Les logiciels ne sont presque jamais aussi clairs, c'est pourquoi le modèle Waterfall est un échec.
maple_shaft
2
@maple_shaft Je trouve cela intéressant, puisque Winston Royce a été la première personne à discuter de l'utilisation de ce modèle sur un projet logiciel et à créer le diagramme qui est familier à tout le monde aujourd'hui, mais les gens n'ont pas continué à lire pour voir pourquoi il a dit que cela ne devrait pas être utilisé sur un projet logiciel. Si la personne qui a écrit l'idée en premier dit qu'elle est mauvaise et indique non seulement pourquoi, mais comment la faire correctement, pourquoi les gens choisiraient-ils de s'y accrocher de toute façon? Je me demande si cela a à voir avec les premiers ingénieurs en logiciels issus de mathématiques et de génie électrique. En EE, cette approche fonctionne-t-elle?
Thomas Owens
1
Le modèle en cascade n'est pas entièrement faux: il identifie correctement les phases générales du développement d'un projet logiciel et les commande logiquement. Ce qu'il ne reconnaît pas, c'est le fait qu'un projet logiciel peut être écrit de manière itérative et modulaire, et en tant que tel, les étapes décrites par le modèle en cascade peuvent être effectuées dans différentes configurations pour des itérations individuelles et / ou des composants de l'ensemble du système.
tdammers
3
@Thomas Owens, "Si la personne qui a écrit l'idée en premier dit que c'est une mauvaise idée et déclare non seulement pourquoi, mais comment la faire correctement, pourquoi les gens choisiraient-ils de s'y accrocher de toute façon?" Adam Smith, le père du capitalisme moderne, a écrit son manifeste sur le marché libre et pur, mais plus tard dans son livre, il parle de la dangerosité du concept de sociétés et de la façon dont elles renversent les gouvernements pour influencer les marchés en leur faveur. Les gens ignorent commodément les parties d'un concept qu'ils ne comprennent pas ou vont à l'encontre de leurs notions préconçues de ce qui est correct.
maple_shaft
2
"Pourquoi les gens se sont accrochés à la toute première cascade, je ne sais pas. Je suppose qu'ils aiment prendre des risques et inviter à l'échec." À mon humble avis, c'est exactement le contraire. Les gens en général aiment sentir qu'ils contrôlent la situation, et les diagrammes de processus et les méthodologies élaborées leur donnent ce sentiment de sécurité. Étant donné que ces processus et ces graphiques les ont déjà aidés dans de nombreux autres domaines, ils supposent (à tort dans ce cas) que cela fonctionnera de la même manière dans le développement SW ...
Péter Török
4

Génération automatique de code à partir d'un niveau d'abstraction supérieur ou programmation automatique .

L'article Wikipédia manque quelque peu d'informations historiques, mais c'est un rêve pour les gestionnaires depuis que les programmeurs sont devenus plus chers que les ordinateurs.

Après le développement de langages de niveau supérieur comme Fortran et Cobol, est venu le développement de langages pour des domaines spéciaux comme la rédaction de rapports. Easytrieve et SAS en sont quelques exemples.

Au cours des années 1980, les outils CASE faisaient fureur. CASE signifie génie logiciel assisté par ordinateur. On pensait que l'application rigoureuse des principes d'ingénierie accélérerait le développement de logiciels. La principale raison pour laquelle ces outils n'ont pas réussi, outre les dépenses, était le niveau élevé de standardisation des données requis pour que les outils fonctionnent efficacement.

Internet a pris de l'importance dans les années 1990. Les types de programmation qu'Internet a facilité ont explosé. Les programmeurs devaient manipuler des illustrations, des cartes, des photographies et d'autres images, ainsi qu'une animation simple, à un rythme jamais vu auparavant, avec peu de méthodes bien connues. Le nombre de technologies pour produire ces objets s'est multiplié. Les rêves de programmation automatique se sont estompés.

L'externalisation de la programmation vers des emplacements moins chers est l'une des rares méthodes qui restent pour réduire les coûts de programmation. Les problèmes d'externalisation comprennent les problèmes de communication et les problèmes de spécification.

Gilbert Le Blanc
la source
1
En outre, SQL et Visual Basic, tous deux annoncés pour permettre aux non-programmeurs d'écrire des programmes.
Sean McMillan
2

Méthodes formelles

Il était une fois, il a été proposé que le logiciel puisse être prouvé correct. (L'idée étant que les tests ne peuvent pas montrer qu'il n'y a pas d'erreurs, mais les preuves pourraient le faire.) Malheureusement, la conception d'une preuve pour un programme présente des inconvénients majeurs:

  • C'est plus difficile et plus long que d'écrire le programme.
  • Il doit couvrir l'ensemble du programme, ce qui signifie que vous avez besoin de preuves pour n'importe quelle bibliothèque, système d'exploitation, etc.
  • Cela ne prouve pas l'absence de bogues, car ces bogues peuvent être causés par accident.

Ce concept était très populaire dans les années 70.

Lien: http://en.wikipedia.org/wiki/Formal_methods http://c2.com/cgi/wiki?ProofOfCorrectness http://c2.com/cgi/wiki?PractitionersRejectFormalMethods

Sean McMillan
la source
3
Les méthodes formelles ne se limitent pas aux preuves. Cela va des prouveurs de théorèmes fortement mathématiques et d'utilisation que vous mentionnez aux méthodes plus légères qui impliquent la modélisation en utilisant UML et OCL et en créant une spécification formelle en Z. Oui, l'introduction de n'importe quel niveau de méthodes formelles ajoute du temps et des coûts, mais si vous construisez un logiciel qui pourrait tuer ou blesser des personnes (allant d'un stimulateur cardiaque à un avion en passant par un missile), consacrer le temps et les efforts supplémentaires à vérifier et à valider autant que possible pourrait faire la différence entre la vie et la mort.
Thomas Owens
@Thomas: Un bon point. Et les méthodes formelles ont une certaine adoption dans les projets où la mort est en jeu. Mais ils n'étaient certainement pas la solution miracle pour les logiciels sans bogues.
Sean McMillan
Absolument. Ils ont leur place dans les logiciels de mission et de vie, à des degrés divers selon le système. Après tout, il n'y a pas de balles d'argent.
Thomas Owens