Quelle est l'origine du terme négatif «code hérité»

28

Tout le monde parle du code hérité dans le développement de logiciels et j'ai entendu le terme utilisé au cours des dix dernières années pour décrire n'importe quelle base de code comme étant mauvaise.

D'où vient ce terme, qui a des connotations si puissantes pour les programmeurs?

Je suis sûr qu'il doit y avoir un livre sur le développement de logiciels qui a lancé ce terme. Je serais ravi de localiser l'origine du terme "code hérité".

stevebot
la source
13
J'ai entendu la définition suivante du code hérité il y a 20 ans et je m'en souviens depuis: le code hérité est le code que vous avez actuellement en production. Cela a aidé mon point de vue à plusieurs reprises.
Michael Durrant
10
"Code hérité" est un terme négatif? Qui dit ça? Quoi qu'il en soit, le mot «hérité» n'est pas spécifique à la programmation, ni particulièrement significatif dans ce contexte.
Robert Harvey
5
Michael Feathers ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/… ) n'est probablement pas l'inventeur de ce terme, mais il a fait une définition intéressante: il a appelé le code hérité "code sans tests". Et c'est en effet un attribut négatif.
Doc Brown
11
Écrivez un tas de code. Enregistrez-vous. Allez déjeuner. Reviens. Il y a tout un écran plein de code hérité! Vous devez maintenant comprendre ce code et vous assurer que toutes les modifications futures fonctionnent correctement dans le contexte de ce code. Le code hérité est le même que le code existant .
Eric Lippert
4
"Legacy" signifie simplement que les développeurs originaux ne sont plus là, et que seuls le code et les artefacts de documentation sont laissés. Il ne fait aucunement référence à un âge ou à une qualité.
SK-logic

Réponses:

39

Le code hérité est basé sur l'expression d'un système hérité qui s'applique spécifiquement au code. Selon Wikipedia, il remonte probablement aux années 1970 et était couramment utilisé dans les années 1980. Il a décollé avec l'explosion technologique des années 1990.

Cela peut être vu avec la visionneuse ngram de Google: système hérité, code hérité

système et code hérités

En approfondissant cela, vous pouvez trouver des utilisations documentées du terme `` système hérité '' dans les années 1970 .

Le premier exemple de «système hérité» de Google se trouve dans un livre sur les actes de la Conférence d' analyse numérique et d'ordinateurs de l'armée de 1978:

... une solution bien structurée et documentée à un problème clairement défini est que le fonctionnement du système existant doit être compris et changer le système existant en toute confiance.

Il existe également un exemple de «système hérité» utilisé en dehors de l'industrie technologique dans Clout: Womanpower and Politics grin 1976:

... en outre, elle occupe le siège de démocrate de troisième rang au sein du puissant Comité bancaire et monétaire - des positions de pouvoir qu'elle a bâties par elle-même, et non via l'ancien système.

Au-delà de ces exemples qui montrent que son utilisation s'est étendue au-delà du monde purement logiciel, les spécificités de l'origine exacte du terme sont probablement perdues au fil du temps. Compte tenu de l'armée et des références politiques, il peut provenir avec eux (principalement les militaires et la migration de jargon ( « Il semble probable que « Kluge » est venu au MIT par les anciens des nombreux projets électroniques militaires exécutés à Cambridge pendant la guerre (beaucoup dans Le vénérable bâtiment 20 du MIT, qui abritait TMRC ... " ))


la source
C'est une excellente réponse. Je vais continuer mes recherches pour voir si je peux trouver une origine, mais vous avez probablement raison que l'origine a été perdue ou peut-être pas documentée.
stevebot
1
@stevebot Je suggérerais de suivre le chemin du «système hérité» plutôt que du code ... ce terme semble avoir précédé le code hérité et a la même signification essentielle.
6
Le texte de votre «livre sur la formation des liaisons carbone-carbone de 1979» est tiré d'un livre intitulé «Nouvelles pratiques en gestion de projet» et date de 2002 (publié pour la première fois en 1998). Il semble que quelque chose se soit confondu lors de la numérisation.
Pete Kirkham
1
Il ne semble pas que ce soit la source du terme négatif.
JeffO
@JeffO Non, car MichaelT mentionne que son origine n'est pas concluante. C'est une sacrément bonne réponse qui montre la recherche et l'effort.
stevebot
5

La base de code héritée ne fait généralement pas référence à un système POS, mais plutôt à tout système existant dans une base de code ou un système qui n'est plus utilisé pour de nouveaux développements. Par exemple, mon équipe prend actuellement en charge quelques applications .net 1.1 et 2.0 qui sont considérées comme du code hérité. S'il arrive un moment où une modification est nécessaire, ils seront soit réécrits soit mis à jour pour utiliser les derniers cadres et normes. Jusque-là, nous les gérons en tant qu'applications héritées qui doivent continuer à fonctionner mais aucune amélioration ou correction de code n'est implémentée.

Il existe également quelques systèmes hérités que nous ne prenons pas en charge du tout qui ont été écrits en VB6 et Classic ASP. Nous n'avons aucune capacité ni directive pour prendre en charge ou modifier ces systèmes, mais tant qu'ils continueront de fonctionner et n'auront pas besoin d'améliorations, ils ne seront probablement pas mis à jour. Il n'y a rien de particulièrement mauvais avec aucun de ces systèmes. Ils effectuent leur travail comme ils sont censés le faire et à part ressembler à une application du milieu à la fin des années 90, ils n'ont pas de problèmes majeurs.

Par conséquent, l'héritage ne signifie pas que le PDV est simplement un système créé dans une technologie ou un langage antérieur qui n'est pas conforme aux normes actuelles. Certains systèmes hérités se qualifient comme POS principalement parce qu'ils n'avaient pas les méthodologies de développement qui existent à ce jour qui permettent le code managé et les 15+ années d'expérience des codeurs Web vétérans.

SoylentGray
la source
Je suis tout à fait d'accord pour dire que les systèmes hérités ne sont pas nécessairement des systèmes POS. Je me demande quelle est l'origine de la phrase.
stevebot
3
@stevebot Si vous voulez trouver l'origine du terme, vous devez le demander sans présupposer de connotation.
un CVn le
2
@stevebot - Un héritage est tout ce que vous laissez derrière vous lorsque vous le transmettez. Je présume que le descripteur vient d'être adopté de cette façon qu'il a été adopté dans d'innombrables autres domaines.
SoylentGray
1
@ MichaelKjörling me dites-vous que vous n'avez jamais entendu de code hérité utilisé dans un sens négatif ?? Ce n'est pas ma connotation, mais celle d'autres personnes que j'ai entendues maintes et maintes fois dans les rencontres, les livres et les emplois. Comme je l'ai dit, je suis entièrement d' accord pour dire que l'héritage ne devrait pas être un terme négatif.
stevebot
@stevebot - le code hérité ne semble que «négatif», car il n'est utilisé que dans le contexte du remplacement ou de l'interface avec un système plus ancien (et ses difficultés). Un programme qui a été construit il y a plus de dix ans mais qui est toujours utile / pertinent et qui comporte peu de bogues est toujours un «logiciel hérité», mais tout le monde l'appelle simplement «logiciel». Il en va de même pour les bases de code.
Robotnik
3

"Code hérité" est un terme utilisé par les professionnels du marketing pour faire pression sur ceux dont le code est ancien (mais qui fonctionne probablement bien) pour qu'il se mette à jour vers les derniers langages et techniques logiciels les plus récents (et probablement les plus buggés). Il est étroitement lié au "système hérité", qui fait référence à d'anciens matériels et systèmes d'exploitation qui fonctionnent bien mais ne sont pas conformes à ce qui est désormais "politiquement correct" (par exemple OpenVMS, système IBM).

JohnM
la source
6
Bien que cela puisse être vrai, il serait préférable que vous modifiiez la réponse pour citer des références spécifiques à l'appui des affirmations formulées dans cette réponse. Y a-t-il de telles références que vous pouvez citer?
un CVn du
2

Le terme code hérité date d'au moins 1989 tel qu'utilisé par Glenn Everhart dans comp.sys.amiga :

(... par le chemin oui, je fais parfois programmer en C aussi ... mais je trouve qu'il est plus facile de convertir le code existant w / o changer la langue ...)

Je n'ai rien trouvé de vérifiable plus tôt dans Google Livres.

Hugo
la source
Comme l'a souligné Eric Lippert, la minute après avoir écrit un morceau de code, vous avez obtenu le code hérité. Les courbes montrées par MichaelT et votre constatation ne font que visualiser le laps de temps, où l'essor général de l'informatique a commencé à produire d'immenses quantités de code, impliquant de nombreuses personnes partout dans le monde. Un peu plus tard, la nécessité de remplacer les "anciens" systèmes par des systèmes plus récents a également été soulevée - et c'est pourquoi et quand il est devenu un terme répandu.
JensG
1
L'ancien code était constamment remplacé, s'il y avait une bonne raison de le faire. J'avais l'habitude de travailler sur un système de facturation mainframe écrit (en PL / 1) en 1970. Il a remplacé un système écrit en langage d'assemblage mainframe (qui en soi était en grande partie une automatisation d'un système manuel existant). Le système PL / 1 a finalement été remplacé après environ 35 ans d'utilisation (quelques tentatives infructueuses de le remplacer avant cela). Il est possible que les technologies modernes soient mises au rebut bien plus tôt (et sans tenir compte de l'ampleur de la réécriture du système patrimonial).
Kickstart