PE Notes · SW
Lehman 소프트웨어 변화 법칙
E-type 시스템이 멈추면 쓸모가 사라진다는 Lehman 여덟 법칙을 잡고, 복잡도·품질 저하를 예방 유지보수·리팩토링으로 막는 길을 정리합니다.
세상은 명세가 아닙니다. 법령이 바뀌고, 카드사가 메시지를 바꾸고, 사용자가 어제와 다른 일을 합니다. 그 세계에 붙어 있는 프로그램은 가만두면 어긋납니다. 은 그 어긋남을 여덟 줄로 적습니다. 대상은 증명으로 끝나는 숙제가 아니라, 실제 문제를 푸는 입니다.
여덟 줄이 말하는 진화
Meir M. Lehman이 1970년대부터 1990년대까지, 대형 운영체제 같은 장기 운영 소프트웨어를 보고 쌓은 경험 법칙입니다. S-type은 형식 명세가 닫혀 있고, P-type은 근사 해를 찾습니다. E-type은 현실에 묻혀 있어 요구가 시스템 밖에서 계속 들어옵니다.
는 첫 줄입니다. 바꾸지 않으면 현장에서 점차 맞지 않습니다. 는 그 다음입니다. 고치기만 하고 구조를 정리하지 않으면 무질서처럼 얽힙니다. 자기 조절은 성장률·결함 수가 장기에는 한쪽으로 폭주하기보다 일정한 분포를 보인다는 관찰입니다. 조직 안정성은 평균 활동량이 수명 동안 크게 안 뛴다는 말입니다. 사람을 급히 넣어도 속도가 비례하지 않습니다.
변화 보존은 한 릴리스의 증분이 대체로 비슷하다는 제약입니다. 한 번에 너무 많이 넣으면 익숙함이 깨지고 품질이 먼저 갑니다. 기능 성장은 사용자 만족을 지키려면 콘텐츠가 수명 동안 늘어야 한다는 압력입니다. 는 적응과 손질이 없으면 “예전만 못하다”는 인식이 쌓인다는 경고입니다. 진화 피드백은 개발만의 루프가 아닙니다. 사용자·운영·경영이 같이 밀어 다음 형태를 만듭니다.
| 법칙 | 한 줄 | 손을 안 대면 |
|---|---|---|
| 지속 변화 | 현실에 맞춰 계속 고친다 | 현장과 어긋난다 |
| 복잡도 증가 | 정리하지 않으면 얽힌다 | 변경 비용이 는다 |
| 자기 조절 | 측정치는 장기 패턴을 그린다 | 한 방의 폭주를 계획에 넣기 어렵다 |
| 조직 안정성 | 유효 활동량은 대체로 일정하다 | 증원이 일정 단축을 보장하지 않는다 |
| 변화 보존 | 릴리스 증분을 과하게 키우지 않는다 | 익숙함과 품질이 같이 깨진다 |
| 기능 성장 | 쓰임이 남으려면 기능이 는다 | 완전 유지보수가 멈춘다 |
| 품질 저하 | 유지·적응이 없으면 체감이 떨어진다 | 부채 이자가 붙는다 |
| 진화 피드백 | 여러 층의 신호가 형태를 바꾼다 | 팀 내부 지표만 보게 된다 |
역공학이 지금 구조를 읽고, 유지보수가 그 위에 손질을 올립니다. 이 법칙은 왜 손질이 멈추면 안 되는지를 설명합니다.
유지보수와 부채
의 네 칸이 법칙과 만납니다. 적응·수정은 지속 변화에, 는 복잡도·품질 저하에, 완전 유지보수는 기능 성장에 붙습니다. 리팩토링과 모듈화는 복잡도 증가를 의도적으로 꺾는 일입니다. 글이 원금과 이자를 원장에 올리면, 여기는 그 이자가 왜 자연히 느는지를 법칙으로 말합니다.
실천은 거창하지 않습니다. 형상 관리로 변화를 남기고, 릴리스 범위를 증분으로 자르고, 자동화 시험과 정적 분석으로 품질 저하를 일찍 봅니다. 피드백은 장애·사용·운영 지표가 다음 백로그로 들어올 때 닫힙니다. 대형 공공·금융 코어가 십 년을 가면, 전면 재작성과 점진 정리의 갈림이 바로 이 여덟 줄 위에 있습니다.