부정적인 용어 "레거시 코드"의 기원은 무엇입니까


28

모두가 소프트웨어 개발에서 레거시 코드에 대해 이야기하고 있으며 지난 10 년 동안 코드베이스를 나쁜 것으로 묘사하는 데 사용되는 용어를 들었습니다.

프로그래머들에게 그러한 강력한 의미가있는이 용어는 어디에서 유래 했는가?

이 용어를 개척 한 소프트웨어 개발에 관한 책이 반드시 있어야합니다. "레거시 코드"라는 용어의 원점을 찾고 싶습니다.


13
20 년 전 레거시 코드에 대한 다음과 같은 정의를 들었으며 그 이후로 기억하고 있습니다. 레거시 코드는 현재 프로덕션 환경에있는 코드입니다. 그것은 내 관점에 여러 번 도움이되었습니다.
Michael Durrant

10
"레거시 코드"는 부정적인 용어입니까? 누가 그렇게 말합니까? 어쨌든 "레거시"라는 단어는 프로그래밍에만 국한된 것이 아니며이 맥락에서 특히 중요하지도 않습니다.
Robert Harvey

5
Michael Feathers ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/… )는 아마도이 용어를 발명 한 사람은 아니지만 흥미로운 정의를 만들었습니다. 그는 레거시 코드를 "테스트없는 코드"라고했습니다. 그리고 그것은 실제로 부정적인 속성입니다.
Doc Brown

11
많은 코드를 작성하십시오. 확인 해봐. 점심 먹어. 돌아와 레거시 코드로 가득 찬 전체 화면이 있습니다! 이제 해당 코드를 이해하고 향후 모든 변경 사항이 해당 코드의 컨텍스트에서 올바르게 작동하는지 확인해야합니다. 레거시 코드는 기존 코드 와 동일 합니다 .
Eric Lippert

4
여기서 "레거시"는 원래 개발자가 더 이상 존재하지 않으며 코드 및 문서 아티팩트 만 남음을 의미합니다. 어떤 식 으로든 연령이나 질을 의미하지는 않습니다.
SK-logic

답변:


39

레거시 코드는 코드에 특별히 적용되는 레거시 시스템 의 문구를 기반으로합니다 . Wikipedia에 따르면 아마도 1970 년대로 거슬러 올라 갔으며 1980 년대에 일반적으로 사용되었습니다. 1990 년대의 기술 폭발로 시작되었습니다.

이것은 구글의 ngram 뷰어에서 볼 수 있습니다 : 레거시 시스템, 레거시 코드

레거시 시스템 및 코드

더 자세히 살펴보면 1970 년대 에 '레거시 시스템'이라는 용어의 문서화 된 사용법을 찾을 수 있습니다 .

구글이 가지고있는 '레거시 시스템'의 가장 초기 사례는 1978 년 육군 수치 해석 및 컴퓨터 컨퍼런스의 절차 에 관한 책에있다 .

... 명확하게 정의 된 문제에 대한 잘 짜여진 문서화 된 솔루션은 레거시 시스템 운영을 이해하고 기존 시스템을 자신있게 변경해야한다는 것입니다.

Clout : Womanpower and Politics grin 1976 의 기술 산업 외부에서 사용되는 '레거시 시스템'의 예도 있습니다 .

... 또한, 그녀는 강력한 은행 및 통화위원회에서 레거시 시스템을 통하지 않고 스스로 구축 한 권력의 위치에서 3 위 민주당으로 자리를 잡았습니다.

그 사용을 보여주는 이러한 예를 넘어 순수한 소프트웨어 세계를 넘어서서, 그 용어가 정확히 어디에서 유래했는지에 대한 세부 사항은 아마도 시간의 흐름으로 사라질 것입니다. 군사 및 정치적 언급을 감안할 때, 그것은 주로 (그들과 유래했을 수 있습니다 군사 및 전문 용어 마이그레이션 ( "그것은 그 'KLUGE'전쟁 중에 프로젝트 캠브리지에서 실행되는 많은 군사 전자의 동문을 통해 MIT에 온 (많은 것에있는 것으로 보인다 TMRC를 수용 한 MIT의 유서 깊은 빌딩 20 ... " ))


이것은 좋은 대답입니다. 원점을 찾을 수 있는지 조사하기 위해 계속 연구 할 것입니다. 그러나 원산지가 손실되었거나 문서화되지 않았을 가능성이 큽니다.
stevebot

1
@ stevebot 나는 코드가 아닌 '레거시 시스템'의 경로를 따르는 것이 좋습니다 ...이 용어는 레거시 코드보다 먼저 사용 된 것으로 보이며 동일한 의미를 갖습니다.

6
'1979 년의 탄소-탄소 결합 형성에 관한 책'의 텍스트는 '프로젝트 관리의 새로운 관행'이라는 책에서 발췌 한 것이며 2002 년 (1998 년에 처음 출판 된) 내용입니다. 스캔 중에 혼동 된 것 같습니다.
피트 Kirkham

1
이것이 부정적인 용어의 원천이 아닌 것 같습니다.
JeffO

@JeffO No, MichaelT는 어디에서 왔는지 결정적이지 않습니다. 이것은 연구와 노력을 보여주는 좋은 대답입니다.
stevebot 2016 년

5

레거시 코드베이스는 일반적으로 POS 시스템이 아니라 코드베이스 나 시스템에 더 이상 새로운 개발에 사용되지 않는 시스템을 말합니다. 예를 들어, 우리 팀은 현재 레거시 코드로 간주되는 몇 가지 .net 1.1 및 2.0 응용 프로그램을 지원합니다. 수정이 필요한 시간이 오면 최신 프레임 워크 및 표준을 사용하도록 다시 작성되거나 업데이트됩니다. 그때까지는 계속 작동해야하지만 개선 사항이나 코드 수정이 구현되지 않은 레거시 응용 프로그램으로 관리합니다.

VB6 및 Classic ASP로 작성된 시스템을 전혀 지원하지 않는 레거시 시스템도 있습니다. 이러한 시스템을 지원하거나 수정할 수있는 용량이나 지침은 없지만 시스템이 계속 실행되고 개선이 필요하지 않으면 업데이트되지 않을 것입니다. 이러한 시스템에는 특별한 문제가 없습니다. 90 년대 중반부터 후반까지 앱처럼 보이는 것 외에는해야 할 일을 제외하고는 큰 문제가 없습니다.

따라서 레거시가 POS가 이전 표준이나 최신 표준이 아닌 언어로 작성된 시스템을 의미하는 것은 아닙니다. 일부 레거시 시스템은 관리 코드와 베테랑 웹 코더에 대한 15 년 이상의 경험을 제공 할 수있는 개발 방법론이 부족했기 때문에 POS로 적합합니다.


레거시 시스템이 반드시 POS 시스템 인 것은 아니라는 데 전적으로 동의합니다. 문구의 기원이 무엇인지 궁금합니다.
stevebot 2016 년

3
@stevebot 용어의 원점을 찾으려면 내포를 전제로하지 말고 요청해야합니다.
CVn

2
@stevebot-유산은 당신이 지나갈 때 남겨 두는 것입니다. 디스크립터가 수많은 다른 필드에 채택 된 방식으로 채택되었다고 가정합니다.
SoylentGray

1
@ MichaelKjörling 당신은 부정적인 의미로 사용되는 레거시 코드를 들어 본 적이 없다고 말하고 있습니까? 이것은 내 의미가 아니라 다른 사람들의 모임, 서적, 직업에서 다시 한 번 들었다. 나는 레거시 부정적인 용어가 되어서는 안된다는 것에 전적으로 동의한다 .
stevebot 2016 년

@stevebot-레거시 코드는 오래된 시스템으로 대체하거나 인터페이스하는 상황에서만 사용되므로 '부정적'인 것 같습니다. 10 년 전에 구축되었지만 여전히 유용하고 관련이 있으며 버그가 거의없는 프로그램은 여전히 ​​'레거시 소프트웨어'이지만 모든 사람이이를 '소프트웨어'라고 부릅니다. 코드베이스도 마찬가지입니다.
Robotnik 2016 년

3

"레거시 코드"는 사람들이 마케팅을 통해 코드가 오래되었지만 (아마도 잘 작동 할 수 있음) 최신의 가장 큰 (그리고 아마도 버그가 많은) 소프트웨어 언어 및 기술로 업데이트하도록 압력을 가하는 데 사용되는 용어입니다. "레거시 시스템"과 밀접하게 연결되어 있습니다.이 시스템은 제대로 작동하지만 현재 "정치적으로 올바른"항목 (예 : OpenVMS, IBM 시스템)을 준수하지 않는 이전 하드웨어 및 운영 체제를 나타냅니다.


6
이것이 사실 일 수도 있지만, 이 답변에서 제기 된 주장을 뒷받침하는 특정 참고 문헌을 인용하기 위해 답변을 편집 하는 것이 좋습니다 . 인용 할만한 언급이 있습니까?
CVn

2

레거시 코드 라는 용어 는 comp.sys.amiga 에서 Glenn Everhart가 사용한 1989 년 이상입니다 .

(... 그런데, 그래, 내가 도 C에서 가끔 프로그램을 ...하지만 난 쉽게 변환 할 찾을 레거시 코드를 ... / O가 언어를 변경 승)

Google 도서에서 이전에 확인할 수있는 것이 없습니다.


Eric Lippert이 지적했듯이 코드를 작성한 직후에 레거시 코드를 얻었습니다. MichaelT가 보여준 곡선과 그 결과는 IT의 주류 상승이 전 세계의 많은 사람들을 포함하여 엄청난 양의 코드를 생성하기 시작한 시간대를 시각화합니다. 잠시 후 "오래된"시스템을 새로운 시스템으로 교체해야 할 필요성이 생겨났습니다. 이것이 광범위한 용어가 된 이유와시기입니다.
JensG 2016 년

1
타당한 이유가 있다면 구식 코드는 지속적으로 교체되고있었습니다. 필자는 1970 년에 PL / 1로 작성된 메인 프레임 청구 시스템에서 작업했습니다. 메인 프레임 어셈블리 언어로 작성된 시스템 (대부분 기존 수동 시스템의 자동화)을 대체했습니다. PL / 1 시스템은 약 35 년 동안 사용한 후에 교체되었습니다 (이전에 교체 시도가 실패한 경우). 아마도 현재 현대 기술은 훨씬 일찍 폐기 될 것입니다 (유산 시스템을 얼마나 많이 다시 작성해야하는지 무시 함).
킥 스타트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.