다음은 동적으로 유형이 지정된 언어와 함께 제공되는 리팩토링 도구의 산업적 사용에 대한 사례 연구입니다.
곡물 엘리베이터 및 관련 상품 거래 활동을 지원하기 위해 카길에서 매우 큰 스몰 토크 애플리케이션이 개발되었습니다. Smalltalk 클라이언트 응용 프로그램에는 385 개의 창이 있으며 5,000 개가 넘는 클래스가 있습니다. 이 응용 프로그램에서 약 2,000 개의 클래스가 초기 (1993 년경) 데이터 액세스 프레임 워크와 상호 작용했습니다. 프레임 워크는 객체 속성을 데이터 테이블 열에 동적으로 매핑했습니다.
분석 결과 동적 조회는 클라이언트 실행 시간의 40 %를 소비했지만 불필요하다는 것을 보여주었습니다.
비즈니스 클래스가 명시 적으로 코딩 된 메소드에서 열 속성에 오브젝트 속성을 제공해야하는 새로운 데이터 계층 인터페이스가 개발되었습니다. 테스트 결과이 인터페이스가 훨씬 빠릅니다. 문제는 데이터 계층의 2,100 비즈니스 클래스 사용자를 변경하는 방법이었습니다.
개발중인 대규모 응용 프로그램은 인터페이스 변환을 구성하고 테스트하는 동안 코드를 고정 할 수 없습니다. 주요 개발 스트림에서 코드 저장소의 병렬 브랜치에서 변환을 구성하고 테스트해야했습니다. 변환이 완전히 테스트되면 단일 작업으로 기본 코드 스트림에 적용되었습니다.
17,100 개의 변경 사항에서 35 개 미만의 버그가 발견되었습니다. 모든 버그는 3 주 동안 빠르게 해결되었습니다.
변경 사항을 수동으로 수행 한 경우 변환 규칙을 개발하는 데 235 시간이 걸리는 데 비해 8,500 시간이 걸린 것으로 추정됩니다.
다시 쓰기 규칙을 사용하여 작업이 예상 시간의 3 % 안에 완료되었습니다. 이것은 36 배 향상되었습니다.