레거시 응용 프로그램을 어떻게 유지 하시겠습니까 [폐쇄

StackOverflow https://stackoverflow.com/questions/253796

  •  05-07-2019
  •  | 
  •  

문제

레거시 애플리케이션을 어떻게 유지 하시겠습니까?

  1. 단위 테스트에는 큰 방법이 없습니다

  2. 복제 된 논리가 많이 있습니다

  3. 우려의 분리가 없습니다
  4. 빠른 해킹과 하드 코딩 된 문자열이 많이 있습니다.
  5. 구식 및 잘못된 문서가 있습니다
  6. 요구 사항은 제대로 문서화되지 않습니다! 이로 인해 실제로 테스터, 개발자 및 과거의 고객간에 분쟁이 발생했습니다. 물론 느리게하지 않아야하는 비 기능적 요구 사항이 있습니다. 그러나 가장 일반적인 감각 시나리오와 가장 일반적인 비즈니스 워크 플로우를 넘어서서 수행해야 할 일에 대한 지침은 거의 없습니다.

???

도움이 되었습니까?

다른 팁

최대한 빨리 테스트를 작성하십시오. 바람직하게는 요구 사항에 대해 (존재하는 경우). 기능 테스트로 시작하십시오. 작은 덩어리에 리팩터. 코드를 터치 할 때마다 시작했을 때보 다 깨끗하고 더 잘 두십시오.

두가지.

  1. 기회가 있으므로 단위 테스트를 작성하십시오.
  2. 자신감이 충분한 단위 테스트가 충분하면 리팩토링을 시작하십시오.

당신이 이것을 달성하는 비율은 느릴 수 있습니다 .... 일반적으로, 당신은 그것을 고치지 말고 "그냥 유지"해야합니다.

그러나 "유지 관리 방법 학습"단계에서는 많은 단위 테스트를 작성할 수 있습니다.

그런 다음 버그가 발견되고 개선이 요청되면 더 많은 테스트를 추가 할 수 있습니다.

민첩하고 레거시에 적용됩니다.

나는 질문에 언급 된 모든 조건을 충족시키는 코드베이스에서보고 일하고 일하고있다 :-)

이 코드베이스를 유지하는 데 따른 접근법은 다음과 같습니다 아무것도 깨뜨리지 마십시오. FWIW, 코드 공장 그리고 최종 사용자는 행복합니다. 아무도 코드, 하드 코드 문자열 등의 복제가 있다는 개발자의 외침을 듣지 않을 것입니다. 우리는 가능한 모든 것을 고치고 새로운 버그를 소개하지 않기 위해 최대한주의를 기울이기 위해 시간을 훔칩니다.

나는 작은 최신 정보 세트를 만들겠다고 생각합니다.

거기에서 나는 Refactoring을 보았습니다. 복제 된 논리는 리팩토링 될 수있는 것으로 보이지만

  • 논리가 얼마나 많은 장소를 호출하고 있는지 깨닫고 큰 일이 될 수 있습니다.
  • 비슷해 보이는 두 가지 함수는 작은 차이, 즉 a + 대신 A-

저항하려는 가장 큰 충동은 "그냥 빌어 먹을 물건을 재건하라!"라고 생각합니다. 그리고 짐승을 탈신하기 위해 먼저 시스템의 개요를 얻습니다.

Sudo rm -rf /

그러나 더 진지하게, 나는 그것이 평가되어야한다고 생각합니다. 코드가 지속적으로 변경 요청 소스이고 변경이 어려운 경우 오래 전에 시스템을보다 현대적인 것으로 리팩터/리 엔지니어링 할 가치가 있는지 고려해야합니다. 물론 이것은 항상 실용적이지는 않기 때문에 레거시 부품을 유지 관리하는 팀의 몇몇 사람들 만 종종 끝납니다. 가능한 한 팀의 모든 사람들이 시스템의 모든 부분을 유지할 수 있어야합니다 ......

내가 중요한 것은 한 가지 더 중요한 것은 팀이 유지 보수/기능 요청을 수행하는 레거시 시스템에 사용하는 시간과 노력을 추적하는 것입니다. 이러한 메트릭은 레거시 시스템/구성 요소를 대체하려는 새로운 노력의 계획을 평가할 때 설득력이있을 수 있습니다.

나는 기본적으로 Paul C가 말한 모든 것에 동의합니다. 나는 TDD 사제가 아니지만, 당신이 레거시 코드베이스를 만질 때마다, 특히 친숙하지 않은 코드베이스를 만질 때마다, 당신은 다시 말하고 히포크라테스를 따르는 확실한 방법이 필요합니다. , 해를 입지 마십시오. 특히 테스트, 좋은 단위 및 회귀 테스트는 그 플레이를하는 유일한 방법입니다.

나는 사본을 선택하는 것이 좋습니다 역전 : 리버스 엔지니어링 소프트웨어의 비밀 그것이 익숙하지 않은 코드베이스라면. 이 책은 현재의 요구를 벗어난 깊이 (그리고 그 문제에 대해) 큰 깊이에 빠지지 만, 다른 사람의 코드와 안전하고 탁월한 일을하는 방법에 대해 많은 것을 가르쳐주었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top