CodeSOD: 연례 보고서
마이클은 구형 인텔리전트 쿼리 코드를 해독하는 것을 포함하여 메인프레임 보고서를 현대화하는 임무를 맡았습니다. 프로젝트의 목표는 새 시스템으로 기존 시스템의 정확한 동작을 복제하는 것이었고, 테스트는 결과 비교를 기반으로 진행되었습니다. 보고서 하나를 변환한 후 결과가 원본과 일치하지 않았습니다. 마이클은 "Annual"이라는 제목의 보고서에서 사용되는 TODAYS-365라는 변수의 불일치를 발견했습니다. 업그레이드된 보고서는 1년치 데이터를 올바르게 가져왔지만, 원본 코드에는 다음과 같은 이상한 줄이 포함되어 있었습니다. SUBTRACT TODAYS-DATE MINUS 426 GIVING TODAYS-365. 이 계산은 원본 보고서가 실제로는 지난 1년치 데이터에 약 2개월을 더한 데이터를 캡처했음을 의미합니다. 보고 요구 사항의 변경, 아마도 회계 연도와 관련하여 이러한 오해의 소지가 있는 변수 이름과 계산을 초래했으며, 이는 수년 동안 눈에 띄지 않았던 것으로 추측됩니다. 수정은 간단했지만 근본적인 문제는 시간이 지남에 따라 명확하지 않고 오해의 소지가 있는 코드의 축적이었습니다. 이는 레거시 시스템의 실제 과제가 프로그래밍 언어 자체가 아니라 축적된, 종종 문서화되지 않은 "크러프트(kruft)"의 계층임을 강조합니다.