워프비전

워프비전 (http://www.warpvision.co.kr)은 2002년에 설립된 광학검사장비 전문기업입니다.

수원 영통구에 위치하였으며 워프비전은 반도체 및 디스플레이 필름등의 검사 장비를 스템코, 스테코, LG이노텍 등에 제공하고 있습니다.

 

델파이는 워프비전에서 설비를 제어하고 관리하는 소프트웨어 개발에 사용되었습니다. 

프로젝트 진행 (업그레이드 마이그레이션)

개요

- 카메라의 발전에 따른 이미지 해상도가 증가와, 윈도우 10 등 최신 운영체제 사용 증가를 수용하기 위한 업그레이드

 

당면과제

- 고해상도 이미지 처리 시 메모리 부족 문제 해소 (32-bit 운영체제 설계상, 메모리를 최대 4GB 까지로 사용이 제한됨) 

- 윈도우10 64-bit 운영체제 사용자 증가에 대응

- 중국, 일본 등 해외 고객사를 위한 현지 언어 지원

 

해결책

- 윈도우10 64-bit 전용 애플리케이션 구축 (32-bit 용 애플리케이션 병행 지원)

- 멀티-바이트 문자열 지원 등 애플리케이션 국제화

워프비전 - 마이그레이션 컨설팅

  • 프로젝트 기간 : 2019년 4월(1개월)
  • 지원 방법 : 마이그레이션 컨설팅
  • 델파이 버전 : 델파이 2007 32-bit > 델파이 XE7 32/64-bit
  • 업무 범위
    • 메인 프로그램 : 2개 프로젝트(약 100여개 소스코드)
    • 컴포넌트 : 자체제작 2개, 오픈소스 2개

 

마이그레이션 컨설팅

설비 소프트웨어 프로젝트의 경우 실질적인 소스코드의 양이 많지 않아 자체적으로 진행이 가능할 것으로 생각되지만,  마이그레이션은 생소한 작업이며, 기존 업무와 병행하며 진행하는 것은 현실적으로는 기간과 비용 측면에서 득보다 실이 많습니다.

또한 프로젝트 하나에서 델파이 버전 업그레이드와 64-bit 지원이라는 2가지 목적을 모두 달성해야 하므로 외부 전문가의 지원이 도움이 된다고  판단하여 데브기어의 마이그레이션 컨설팅 프로젝트를 선택해 주셨습니다.

 

참고로, 저는 데브기어를 통해 3가지 방식으로 마이그레이션 작업을 지원합니다. 하단의 참고 항목을 확인해주세요.

 

핵심 작업

  • 델파이 버전 업그레이드
  • 64-bit 지원 (32-bit와 병행 지원)
  • 자체 제작 컴포넌트 마이그레이션
  • 데이터 엑세스 컴포넌트 변경(FIBPlust > FireDAC)

 

작업절차

64-bit 지원이 실질적인 핵심과제입니다. 하지만, 64-bit를 지원하는 델파이 버전으로 업그레이드가 선행되어야 하므로 2단계로 나누어 순서대로 진행됩니다.

 

1 단계: 32-bit 애플리케이션 개발 환경 업그레이드 (델파이 2007 --> 델파이 XE7)

2단계: 델파이 XE7에서 64-bit 애플리케이션으로 확장 (32-bit 와 64-bit 모두 빌드 및 실행)

1단계에서 마이그레이션 작업을 대부분 처리하게 됩니다. 컴포넌트 전환 및 데이터 엑세스 컴포넌트 변경도 1차에서 완료됩니다.

2단계에서 XE7 32-bit로 1차 완성된 결과물로 64-bit도 병행 지원하도록 작업합니다.

 

컴포넌트 전환

이 프로젝트의 특이점은 대부분의 UI 컨트롤들을 자체제작해 사용했다는 것입니다. 하지만 대부분 기본 컨트롤을 기반으로 기능을 확장한 방식이었습니다. 따라서, 32-bit를 유지한 상태에서 델파이 2007에서 델파이 XE7로 마이그레이션 하는 과정에서 큰 이슈는 없었습니다.

 

그외 써드파티 컴포넌트들은 XE7을 지원하는 것들은 업그레이드 했고, 이벤트의 파라메터 데이터 타입이 변경되는 등의 작업정도로 진행했습니다.

그중 이슈는 오픈소스인 Toolbar2000의 경우 XE7을 지원하지 않았지만, 소스코드를 보유하고 있었기 때문에 소스코드를 컴파일 하며 문제가되는 부분을 직접 수정했습니다.(이후 64-bit 지원하도록 수정해 64-bit에서도 사용했습니다.)

 

데이터 엑세스 컴포넌트 변경

고객사는 Firebird를 DBMS로 사용했고, 데이터 엑세스 컴포넌트로 FIBPlus를 사용했지만, 델파이XE7에 내장된 효율적인 데이터 엑세스 컴포넌트인 FireDAC 사용을 원했습니다.

 

reFind(마이그레이션 자동화 도구)를 이용해 컴포넌트 및 속성, 메소드등을 자동전환 하는 패턴을 직접 만들어 일괄 변경했습니다.

 

이미지 라이브러리 교체

해당 프로젝트에서는 JPEG 라이브러리로 인텔사의 IJL을 사용했습니다.

하지만 IJL은 64-bit를 지원하지 않아 다른 JPEG 라이브러리가 필요했습니다.

델파이 내장 JPEG 라이브러리인 TJPEGImage를 시도해 봤지만, 저장 시 성능이 좋지 않아 JPEG 라이브러리 검토 후 libJPEG-Turbo로 교체했습니다.

 

64-bit 지원

대부분의 코드들은 64-bit에서도 정상 동작합니다.

하지만, 일부 데이터 타입의 경우 32-bit와 64-bit의 크기가 달라 문제가 생길 수 있습니다.

이번 프로젝트의 대표적인 문제는 다음과 같습니다.

  • 포인터로 사용하는 변수가 Integer(또는 LongInt)로 선언된 경우
  • 포인터로 사용하는 변수를 Integer(또는 LongInt)로 형변환 하는 경우
  • 윈도우(또는 소켓) 핸들을 Integer 또는 LongInt로 사용하는 경우

대응방법은

  • 포인터의 경우 데이터 타입을 Pointer 또는 NativeInt로 지정
    (NativeInt의 경우 32bit에서 4Byte, 64bit에서 8Byte로 사용 됨)
  • 윈도우의 핸들의 경우 THandle로 명시적으로 데이터 타입 지정
  • 소켓 핸들의 경우 TSocket으로 명시적으로 데이터 타입 지정

참고자료

 

기타 기능 추가

VCL 스타일 적용 : http://tech.devgear.co.kr/delphi_news/414834

다국어 지원 : http://tech.devgear.co.kr/delphi_news/408214

 

마지막으로, 

최근 사용자들은 윈도우10 등의 64-bit 운영체제를 많이 사용합니다.

32-bit 애플리케이션도 64-bit 운영체제에서 윈도우즈 호환성 모드를 통해 잘 작동합니다. 

하지만, 4GB 이상의 메모리를 사용해야 하거나 기타 메모리 이슈가 있다면, 64-bit 애플리케이션 개발을 검토하시기 바랍니다.

 

참고

데브기어의 마이그레이션 지원 서비스는 다음과 같이 3가지 플랜이 있습니다.

마이그레이션 무상 컨설팅

마이그레이션 체크리스트와 가이드 문서를 제공합니다. 작성 후 메일을 보내주시면 이메일과 방문을 통해 컨설팅을 지원합니다.

 

마이그레이션 워크샵(4일)

마이그레이션을 좀 더 효과적으로 직접 진행하고 싶다면, 워크샵 과정에 참석하세요. 마이그레이션 자동화 방안, 가이드 문서 작성 등을 배우고, 혼자 해결하기 어려운 부분을 멘토링을 통해 해결해 더 쉽고, 빠르게 마이그레이션 할 수 있습니다.

마이그레이션 컨설팅(유상)

마이그레이션 시의 위험요소 파악, 전환체계(자동화 방안, 마이그레이션 가이드 작성 등) 구축 등을 경험많은 마이그레이션 전문가를 통해 진행할 수 있습니다.

  • 별도로 요청해 주세요.. : ask@embarcadero.kr

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14387
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17932
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
1223 2020년 5월 GM 업데이트 - 여러분의 비즈니스에 길을 열어주세요! 관리자 2020.05.26 315
1222 델파이 안드로이드 개발을 위해 OpenJDK 채택 file 김원경 2020.05.25 887
1221 엠바카데로 오픈 소스 프로젝트 관리자 2020.05.25 699
1220 [10.4 시드니 신기능] 겟잇 패키지 매니저(GetIt Package Manager) 개선 험프리 2020.05.21 593
1219 [10.4 시드니 신기능] 컨트롤 개별 VCL 스타일 적용(Per-Control Style) 적용 험프리 2020.05.19 918
1218 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 22880
1217 [10.4] 커스텀 매니지드 레코드(Custom Managed Records) 험프리 2020.05.14 1108
1216 [고객 사례- 솔루션, 델파이] Beyond Compare - 데이터, 시스템 비교/병합/관리 프로그램 관리자 2020.05.14 741
1215 델파이, 25년의 혁신 - 버전 1부터 10.3까지 버전별 핵심 기능 [2] 관리자 2020.05.12 2565
1214 [고객 사례- 솔루션, 델파이] AlignMix - 시각화된 세일즈 관리 도구 관리자 2020.05.12 364
1213 [10.4 시드니 신기능] 다시 태어난 '코드 인사이트' [2] file 험프리 2020.05.08 1661
1212 [발표자료] 20200429 델파이 Push 메시지 전송 시스템 구현 방법 with 구글 Firebase [3] file 관리자 2020.05.04 1019
1211 헬스케어 분야에서의 델파이 - 코로나에 맞서며 file 김원경 2020.04.29 604
1210 [고객 사례- 의료, 델파이] COVID-19 격리 대상자 상태 관리 앱 관리자 2020.04.28 643
1209 이 달의 기술자료 - 2020년 05월 file 험프리 2020.04.24 349
1208 [사례 소개] 데브기어 마이그레이션 유상 컨설팅 사례 험프리 2020.04.22 529
1207 인터베이스와 FireDac에서 배열필드 사용하기 file 김원경 2020.04.16 406
1206 인터베이스, FireDAC 및 TEMSDataSetResource를 사용하여 RAD 서버에서 자동 증가 필드를 생성하는 방법 file 김원경 2020.04.16 409
1205 델파이용 벡터 컨테이너 file 김원경 2020.04.14 752
1204 [프로그래밍 애피타이저] 개발이 처음이거나 비 전공자 분들을 위한 가장 첫 번째 STEP! 관리자 2020.04.13 2448