범위를 올바르게 지정 하면 다시 쓰기가 매우 성공적 일 수 있습니다 . 이 프로젝트가 "BIG"(TM) 프로젝트의 임계 값을 충족하는지는 잘 모르겠지만보다 성공적인 몇 가지 재 작성에 대해 설명하겠습니다.
프로젝트 1
내가 근무 회사는 당신이라는 것을에서 소매 선반에 표시되는 레이블을 생성하는 데 사용 선반 스트립 인쇄 시스템했다 플라 노 그램을 . 플래 노 그램은 산업 표준 소프트웨어로 생성되었으며 툴은 대상 상점의 템플리트를 사용하여 선반 스트립을 작성하기 위해 해당 문서를 읽습니다. 템플릿 소프트웨어는 여러 클래스와 3 개의 DLL을 포괄하는 중첩 된 유한 상태 머신의 혼란이었습니다. 페그 보드를 위해 특허 출원중인 접근 방식을 구현할 때가되었지만 현재 코드가 우리가 원하는 것을 지원할 수 없다는 것이 분명했습니다.
솔루션 : 우리는 단지 재 작성을 템플릿 엔진에만 적용했습니다. 우리는 적절한 OO 설계를 사용하여 현재 요구 사항을 처리하고 새로운 페그 보드 요구 사항을 해결했습니다. 재 작성 시간은 1 개월입니다. 전체 툴 체인을 전체적으로 재 작성하면 1 년이 넘게 걸렸지 만 그렇게 할 필요는 없었습니다.
프로젝트 2
우리 팀이 처음부터 구축 한 웹 응용 프로그램은 원래 디자인을 능가하기 시작했습니다. 우리의 고객은 또한 사용자들에게 더 나은 사이트를 제공 할 수있는 새로운 요구 사항을 갖추 었으며, "웹 2.0"에 더 적합 할 것입니다. 기존 디자인을 현재 가지고있는 프레임 워크에 적용 할 수 있었지만 유지 관리는 악몽이었습니다. 우리는 응용 프로그램을 자세히 알고 있었고, 어떤 부분을 가져와야하고 어떤 부분이 새 버전의 일부로 사라질지 알고있었습니다.
해결 방법 : 우리 팀은 완료하는 데 3 개월이 걸렸습니다. 최종 제품은 최종 사용자에게 더 빠르고 확장 가능하며 더 즐거웠습니다. 우리는 고객의 기대를 뛰어 넘었습니다. 즉, 기존 시스템에서보다 즉각적인 버그 수정 및 반창고 패치를 수행하고 나머지 절반은 새로운 시스템에서 작업 할 수 있도록 팀을 분할해야했습니다. 우리는 광범위한 테스트를 실시했으며 프로세스 초기에 통합했습니다. 이것이 잘 된 이유는 우리 가이 응용 프로그램과 고객을 친밀하게 알고 있기 때문입니다.
프로젝트 3
여기에 실패를 포함시켜야합니다. 우리는 재난 / 위기 상황에서 사용하기 위해 정보 관리 도구가 필요한 고객을 지원하고있었습니다. 우리는 원래 개발자가 Swing을 완전히 이해하지 않고 작성한 Java Swing 응용 프로그램을 상속했습니다. 즉, Swing을 다루고 UI를 올바르게 관리하기위한 Sun의 권장 사항을 따르지 않았기 때문에 무한한 이벤트 루프 및 기타 이상하고 추적하기 어려운 문제가 발생합니다. 결과적으로 버그, 사용자 인터페이스 문제 등으로 가득 차있었습니다. 이것은 매우 복잡한 응용 프로그램이었습니다. 우리의 정신을 보존하기 위해, 우리는 잘못 작성된 Swing 앱을 잘 작성된 Swing 앱으로 다시 작성하려고 시도했습니다.
솔루션 : 우리는 약 3 개월 후에 3 개월 동안 재 작성을 완료했습니다. 응용 프로그램은 UI와 처리 할 수있는 데이터 양에서 더 잘 수행되었습니다. 2004 년 쓰나미가 발생했습니다. 그들이 추적해야 할 사람들의 수는 엄청나게 많았 기 때문에 Swing이 실제로 필요한 것에 대해 잘못된 기술 이라는 것을 보여주었습니다 . 우리는 성능 조정을 따라 잡을 수 없었고, 결국 그들은 사내에서 보유한 Oracle 팀이 만든 함께 묶인 웹 앱을 선호하여 툴을 포기했습니다. 물론 우리가 당시에 알고 있던 지식을 바탕으로 우리가 한 일을 정당화 할 수 있었지만, 재 작성은 충분히 공격적이지 않았으며 추적해야 할 수 있는 사람들의 수에 대한 요구 사항도 고객에게 알리지 못했습니다. 낮은.
결론
다시 쓰기는 때로는 필요, 당신은 제대로 계획하는 경우에 그들은 성공적으로 완료 할 수 있습니다. 전체 판매 재 작성보다 시스템의 일부에 대해 대상 재 작성을 통해 더 많은 것을 얻을 수 있습니다. 마지막으로, 프로젝트 실패의 원인은 반드시 재 작성 자체가 아닙니다. 우리는 결코 천박 할 수는 없지만 최악의 시나리오를 생각해 낼 수 있습니다. 제가 생각할 수있는 최악의 시나리오를 두 배로 지원하도록 시스템을 설계하는 법을 배웠습니다. 위기 관리 시스템의 경우에는 충분하지 않습니다. 실제 수치는 최악의 시나리오 시나리오의 20 배입니다. 그러나 이것이 우리가 생각할 수있는 최악의 시나리오는 아니 었습니다.
- 다시 쓰기 위해 다시 쓰기는 친구가 아닙니다. 당신은 보지 못하는 복잡성이 항상 많으며, 당신이 보는 추악한 것들이 고객을위한 훈련 도구라는 것을 알게 될 것입니다. 항상 현재 진행 상황을 정기적으로 고객에게 보여 주어 최악의 범죄를 포착 할 수 있도록하십시오.
- 대상 재 작성은 코드 기반의 최악의 범죄를 처리하는 데 유용합니다. 범위를 제한하고 대부분의 문제를 해결할 수 있으면 완전히 다시 쓰지 마십시오.