2010-07-23 4 views
3

대상 상태 : VB6 코드를 C#으로 이식하고 관련된 모든 가능한 프로세스로 전체 프로젝트를 수행합니다.Bestpractice는 도메인 지식이없는 VB6 코드를 리버스 엔지니어링하기 위해 접근합니다.

도메인에 대한 지식이 없으면 어떻게 될까요?

VB6로 작성된 레거시 코드 (최대 100.000 - 300.000 줄의 코드와 최대 14,000 줄의 코드를 포함하는 vb6 파일에 메모)가 거의 있습니다.

+0

내가 당신의 고통을 느낀다, 우리는 여전히 비슷한 크기의 프로젝트와 C#을 우리의 전환에 노력하고 있습니다. – ChaosPandion

+2

사실 내가 잠시 후에 대답 한 질문은 정확한 속임수입니다. http://stackoverflow.com/questions/2101950/how-to-migrate-ugly-and-undocumented-vb6-code-to-net/2101983#2101983 – ChaosPandion

+0

DDD의 접근법이 얼마나 멀리 이해할 수 있는지 스스로에게 묻습니다. 코드의 영역을 도메인 객체로 추상화하여 도메인 ... – Rookian

답변

6

면책 조항 : 나는 위대한 마이그레이션

우리는 생활 .NET (주로 C 번호)에 큰 VB6/ASP가/COM 응용 프로그램을 다시 작성을 위해 일을하고 우리는 소프트웨어 분석을 개발하고 도구를 리엔지니어링하는 것은 우리가 그것을 할 수 있도록. 이 도구는 근본적으로 VB6/ASP/COM 컴파일러와 .NET 코드를 작성하는 디 컴파일러와 같습니다. 물론 VB6 플랫폼은 .NET과 매우 다르므로 직접 컴파일/디 컴파일은 바람직하지 않거나 실행 가능하지 않으므로이 도구에는 VB6-C# 비 호환성을 다루는 다양한 코드 리엔지니어링 알고리즘을 구현하는 "분석기"가 있습니다. 또한 마이 그 레이션 팀이 .NET 코드 파일 설정, 코드 재구성 및 .NET 클래스로 COM API 및 ActiveX 컨트롤을 대체하는 것과 같은 작업을 수행 할 수 있도록 프로그래밍 가능한 "작성자"가 있습니다 또는 원한다.

코드를 컴파일하고 분석 한 결과로 우리의 도구는 업그레이드되는 전체 VB6/ASP/COM 시스템의 모델을 생성합니다. 이 모델은 시스템의 내부 구조에 대한 매우 상세한 보고서를 생성하는 데 사용할 수 있습니다. 이 모델을 사용하면 코드를 리버스 엔지니어링 할 수 있습니다. 질문 할 올바른 질문을 알고 좋은 도메인을 이해해야합니다.

일단 빌드 완료 .NET을 사용하면 어셈블리를 작동시키는 다양한 분석 및 코드 검토 도구를 사용할 수 있습니다. Visual Studio의 일부 버전에는 이러한 도구가 있으며 FxCop, NDepends와 같은 오픈 소스 도구가 있습니다. 또한 사용했던 몇 가지 환상적인 동적 분석 도구 (EQUATEC Tracer)가 있습니다.

최종적으로 마이그레이션 팀이 알려지지 않은 시스템을 확인하기가 매우 어려워 질 것입니다. 동일한 플랫폼에 있어도 응용 프로그램을 실행하는 방법을 모르는 경우 올바른 응용 프로그램을 증명할 수 없으며 예상되는 입력을 설정/입력하고 예상되는 출력을 찾고 확인하는 방법을 모릅니다. 우리는 일반적으로 이것을 고객에게 맡깁니다!

우리는 고객을 위해 검증을 수행하는 경우 시스템의 새 버전을 확인하기 위해 병행 테스트에 크게 의존합니다. 기존 애플리케이션을 실행하는 방법을 알고 있다고 가정 할 때 동일한 세트의 입력과 사용은 동일한 행동을 나타내야하며 동일한 결과를 가져야한다. 단위 테스트 서클에서이 승인 테스트를 들었습니다.

나는 또한 VB6/COM 코드가 시스템의 데이터 구조와 논리에 대한 완전하고 상세한 공식적이며 생산 테스트 된 기술이며이 정보를 테스트를 거쳐 검증 된 재검토 된 체계적인 변형. 우리는 1977 년부터 컴파일러를 개발해 왔으며이 VB6/ASP 컴파일러에서 생성 된 .NET 코드가 원래 VB6의 의미를 유지하는지 확인하기 위해 매우 열심히 노력했습니다. 매번 100 %는 아니지만 항상 가까워지고 있습니다. 그럼 다시 한번 손으로 일을하는 것은 첫 번째 시도에서 100 % 올바른 코드를 보장하지 않습니다 ...

+1

그것은 광고일지도 모릅니다. 그러나 좋은 질문이며 그 질문과 관련이 있습니다. +1 –

+0

+1, 스콧이 말한 것! :) – Rob

1

mark 님의 답변은 대단한 마이그레이션이 우수합니다. 경쟁 업체의 자동 도구가 있다는 것을 알고 있어야하며, 이는 매우 좋은 평판을 얻습니다.