「レガシーコード」というネガティブ用語の由来は何ですか


28

誰もがソフトウェア開発のレガシーコードについて語っていますが、過去10年間に、コードベースを悪いものとして表現するために使用される用語を聞いたことがあります。

プログラマにも同様に強力な意味合いを持つこの用語はどこから生まれたのでしょうか?

この用語を開拓したソフトウェア開発に関する本が必ずあるはずです。「レガシーコード」という用語の起源を特定したいと思います。


13
20年前に以下のレガシーコードの定義を聞いたことがありますが、それを思い出しました。レガシーコードは、現在生産されているコードです。私の見解を何度も助けてくれました。
マイケルデュラント14年

10
「レガシーコード」は否定的な用語ですか?誰が言うの?とにかく、「レガシー」という言葉はプログラミングに固有のものではなく、この文脈では特に重要ではありません。
ロバートハーヴェイ14年

5
Michael Feathers(amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…)はおそらくその用語の発明者ではありませんが、興味深い定義を作成しました。彼はレガシーコードを「テストなしのコード」と呼びました。そして、それは確かに否定的な属性です。
ドックブラウン14年

11
たくさんのコードを書きます。チェックイン。昼食を取りに行く。戻って来い。レガシーコードでいっぱいの画面全体があります!そのコードを理解し、将来のすべての変更がそのコードのコンテキストで正しく機能することを確認する必要があります。レガシーコードは既存のコードと同じです
エリックリッパー14年

4
ここでの「レガシー」とは、元の開発者がもういないことを意味し、コードとドキュメントのアーティファクトのみが残っています。年齢や品質を指すものではありません。
SKロジック14年

回答:


39

レガシーコードは、特にコードに適用されるレガシーシステムのフレーズに基づいています。ウィキペディアによると、おそらく1970年代に遡り、1980年代に一般的に使用されていました。それは1990年代の技術爆発で始まりました。

これは、Googleのngramビューアで確認できます:レガシーシステム、レガシーコード

レガシーシステムとコード

これをさらに掘り下げると、1970年代の「レガシーシステム」という用語の使用が文書化されています。

グーグルが持っている「レガシーシステム」の最初の例は、1978年からの軍隊数値解析とコンピューター会議の議事録に関する本にあります。

...明確に定義された問題に対する十分に構成され、文書化されたソリューションは、レガシーシステムの動作を理解し、既存のシステムを自信を持って変更する必要があることです。

Cloutのテクノロジー業界以外で使用されている「レガシーシステム」の例もあります:Womanpower and Politics grin 1976:

...さらに、彼女は強力な銀行および通貨委員会の第3位の民主党員としての地位を保持しています。彼女は、レガシーシステムを介さずに自分で築いた権力の地位を築いています。

これらの例は、その使用が純粋なソフトウェアの世界を超えて広がっていることを示しており、用語の正確な起源の詳細はおそらく時間の経過とともに失われます。軍事的および政治的な言及を考えると、それは彼らと一緒に始まった可能性があります(主に軍隊とその専門用語の移住「 TMRCを収容したMITの由緒ある建物20 ...」))


これは素晴らしい答えです。私は起源を見つけることができるかどうかを確認するために研究を続けますが、おそらく起源が失われたかおそらく文書化されていないことは正しいでしょう。
スティーブボット14年

1
@stevebotコードではなく「レガシーシステム」のパスをたどることをお勧めします。この用語はレガシーコードよりも前のものであり、同じ本質的な意味を持っています。

6
「1979年からの炭素-炭素結合形成に関する本」のテキストは、「プロジェクト管理の新しい実践」と呼ばれる本からのもので、2002年(最初に発行された1998年)のものです。スキャンで混乱したように見えます。
ピートKirkham

1
これが否定的な用語の源であるとは思わない。
ジェフ14年

@JeffOいいえ、MichaelTがそれがどこから来たのか決定的なものではないと言及しているように これは非常に良い答えですが、研究と努力を示しています。
スティーブボット14年

5

レガシーコードベースは通常、POSシステムではなく、コードベースに存在するシステムまたは新しい開発に使用されなくなったシステムを指します。たとえば、私のチームは現在、レガシーコードと見なされているいくつかの.net 1.1および2.0アプリケーションをサポートしています。変更が必要な場合は、最新のフレームワークと標準を使用するように変更または更新されます。それまでは、機能し続ける必要があるレガシーアプリケーションとしてそれらを管理しますが、拡張機能やコード修正は実装されていません。

また、VB6およびClassic ASPで作成されたいくつかのレガシーシステムもサポートしていません。これらのシステムをサポートまたは変更するための能力や指示はありませんが、システムが実行を継続し、拡張の必要がない限り、更新される可能性はありません。これらのシステムのいずれにも特に問題はありません。90年代半ばから後半にかけてアプリのように見えることを除けば、彼らは本来の方法で仕事を行い、大きな問題はありません。

したがって、レガシーとは、POSが、現在の標準に達していない以前のテクノロジーまたは言語で作成されたシステムを意味するものではありません。一部のレガシーシステムは、マネージドコードとベテランWebコーダーの15年以上の経験を可能にする、今日存在する開発方法論に欠けているため、ほとんどがPOSとして認定されます。


レガシシステムは必ずしもPOSシステムではないことに完全に同意します。フレーズの由来は何だろうと思っています。
スティーブボット14年

3
@stevebot用語の起源を見つけたい場合、意味を前提とせずにそれを尋ねるべきです。
CVn 14年

2
@stevebot-レガシーとは、引き継ぐときに残すものです。記述子は、他の無数の分野に採用されていた方法から採用されたと推測します。
SoylentGray 14年

1
@MichaelKjörlingは、ネガティブな意味で使用されるレガシーコードを聞いたことがありませんか?それは私の含蓄はありませんが、私はオフ会で再び時間と時間を聞いた他の人のことを、書籍やjobs.Like私は、言った完全にその遺産が同意しなければならない負の用語ではありません。
スティーブボット14年

@stevebot-従来のコードは「ネガティブ」にしか見えません。なぜなら、古いシステムとのやり取りやそれとのやり取りのコンテキストでのみ使用されるからです(そしてその難しさ)。10年以上前に作成されたが、依然として有用/関連性があり、バグの少ないプログラムは、依然として「レガシーソフトウェア」ですが、誰もが単に「ソフトウェア」と呼んでいます。コードベースについても同様です。
Robotnik 14年

3

「レガシーコード」とは、マーケティング担当者が、コードが古い(ただしおそらく正常に動作する)人に、最新の(そしておそらくバグが多い)ソフトウェア言語と技術に更新するよう圧力をかけるために使用する用語です。「レガシーシステム」と密接にリンクしています。「レガシーシステム」とは、正常に機能するが、現在は「政治的に正しい」もの(たとえば、OpenVMS、IBMシステム)に準拠しない古いハードウェアとオペレーティングシステムを指します。


6
これは真実かもしれませんが、答えを編集して、この答えでなされた主張を裏付ける特定の参照を引用する方が良いでしょう。あなたが引用できるような参照はありますか?
CVn 14年

2

レガシーコードという用語は、comp.sys.amigaで Glenn Everhartが使用した少なくとも1989年のものです。

(...ちなみに、はい、私時々Cでもプログラムします...しかし、言語を変更せずにレガシーコードを変換する方が簡単だと思います...)

Googleブックスでは、以前に検証可能なものは何も見つかりませんでした。


Eric Lippertが指摘したように、コードを書いてからまもなく、レガシーコードが手に入りました。MichaelTとあなたの調査結果が示す曲線は、ITの主流が膨大な量のコードを生成し始め、世界中の多くの人々が関与し始めた時間枠を視覚化しているだけです。少し後に、「古い」システムを新しいシステムに置き換える必要性も提起されました。それが、広まった用語になった理由です。
JensG 14年

1
正当な理由があれば、古いコードは絶えず置き換えられていました。私は1970年に(PL / 1で)書かれたメインフレーム課金システムで働いていました。メインフレームアセンブリ言語で書かれたシステム(それ自体は既存の手動システムの自動化でした)を置き換えました。PL / 1システムは、約35年間の使用後に最終的に交換されました(それ以前に交換しようとして失敗したカップル)。おそらく現代の技術は、はるか以前に廃棄されている可能性があります(これに伴う遺産システムの書き直しを無視して)。
キックスタート14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.