델파이 마이그레이션 요구 사항 Top 5 

 

Al Mannarino와 Mary Kelly는 고객사 수백곳에서 델파이 업그레이드 컨버전 작업을 도왔습니다.

Al과 Kelly가 꼽은 마이그레이션 때마다 나오는 요구 사항 Top5와 해당 팁을 5번부터 1번까지 알아봅니다. 

이 비디오의 주요 내용을 아래와 같이 한글로 번역하였습니다.


 

 

델파이 마이그레이션 요구 사항 Top 5 

 

Al Mannarino

Mary Kelly

5. Runtime 오류 해소

4. 미들웨어

3. 데이터베이스 이전

2. 유니코드

1. 써드파티 라이브러리

5. UI 현대화 (윈도우10 포함)

4. 미들웨어

3. FireDAC

2. 유니코드

1. 써드파티 라이브러리

 

 

 

 

[두 사람이 선정한 5위]

 

Al 선정 -  Runtime 오류 해소

마이그레이션 후, 경우에 따라 Runtime 오류가 발생할 수 있다. 이전 버전에 있던 폼의 프로퍼티가 새 버전에서 없어졌다거나, 윈도우에서 더이상 제공되지 않는 오래된 dll을 사용하는 경우에 런타임 오류가 발생한다. 이런 오류는 애플리케이션을 실행하기 전까지는 알 수 없다. 까다로운 경우는 오래된 써드 파티 라이브러리를 사용했는데 이 오래된 컴포넌트가 그리드의 ColumnCount 속성을 폼 디자이너에서 사용했다면 (제작 당시에는 델파이 폼디자이너에 있던 속성) 애플리케이션을 실행하면 “그리드에서 ColumnCount라는 프로퍼티를 찾을 수 없습니다”라는 오류가 발생한다. 소스 코드에서 ColumnCount라는 변수를 찾으려고 해도 소스 코드에서 찾을 수 없는데, 왜냐하면 ColumnCount는 소스 파일 (델파이라면 .pas)이 아니라, 폼 파일(델파이라면 .dfm)에 있기 때문이다.  따라서 dfm 파일을 열어서 ColumnCount를 찾아서 삭제 또는 수정해야 한다. 

 

 

Kelly 선정 - UI 현대화 (윈도우10 포함)

UX는 뜨거운 관심을 받고 있다. 사용자에게 최상의 UI나 UX를 제공하는 것이 매우 중요해졌다. 오래된 애플리케이션은 윈도우 10에서 작동된다고 해도 화면이나 사용 방식이 윈도우 10과 이질적이다. 개발자는 마이크로소프트에서 소개한 새로운 기능을 반영하거나, VCL 스타일을 적용하거나 모바일 환경에 맞게 변화시키고 싶어한다.  마이그레이션 후 사용자가 가장 먼저 만나는 것이 화면이다. 화면을 봤을 때 매력적이지 않다면, 아무리 많은 개선이 있었다고 해도 사용자에게 전달되지 않는다. 개발자는 사용자가 새 애플리케이션을 기쁘게 받아드리기를 바라기 때문에 시작적으로 매력적인 애플리케이션을 제공하고 싶어한다. 10.4에는 여러가지 VCL 스타일들이 들어 있다. 원하는 것을 선택하면 사용자에게 새로운 룩앤필을 적용할 수 있다. (Ball- 화면 변경은 사실 매우 큰 변경 작업이라서 5위보다 순위가 높을 것이라고 생각했었다. 하지만, RAD 스튜디오에서는 스타일을 이용하면 쉽게 반영할 수 있는 문제이므로 5위인 것이 이해된다)

 

 

 

[두 사람이 선정한 4위]

 

Al 선정 - 미들웨어

오래전 미들웨어는 COM기술을 기반으로 한 Midas가 사용되었다. 하지만 지금은 데이터스냅(DataSnap)과 RAD서버가 사용된다. Midas를 사용하여 구축된 멀티티어 애플리케이션은, 반제품인 데이터스냅이나 완제품인 RAD서버로 마이그레이션하여 COM에 대한 종속성을 없애야 한다. 그리고 전환 방법은 “Midas에서 데이터스냅으로 전환하기” 와 “데이터스냅에서 RAD서버로 전환하기” 기술 백서에 잘 설명되어 있으므로 잘 활용하기 바란다.

 

Kelly 선정 - 미들웨어

애플리케이션을 웹과 모바일로 확장하는 추세이다. RAD서버나 데이터스냅을 도입하게 되면 기존의 애플리케이션 기술과 사용자 기반을 웹과 모바일로 확장할 수 있으므로 요구가 많다고 생각한다.

 

 

 

[두 사람이 선정한 3위]

 

Al 선정 - 데이터베이스 전환

마이그레이션 시 데이터베이스 마이그레이션은 항상 수반된다. BDE를 사용하는 애플리케이션이 아직도 얼마나 많은지 알고 놀랐다. BDE는 델파이 3,4,5 시절의 엔진이고 당시의 파라독스나 dBAse를 연결할 때 사용되었다. BDE는 지원이 중단된지 15년이 넘었고, 그동안 계속해서 BDE에서 벗어날 것을 권장해왔는데도 불구하고 (각자 나름의 이유가 있었겠지만) 여전히 BDE가 많이 사용되고 있다. BDE는 사용하지 말아야 한다. 왜냐하면 15년 전에 중단되었을 뿐만 아니라, 유니코드와 64bit를 지원하지 못하기 때문이다. BDE는 훨씬 새로운 고성능 컴포넌트인 파이어닥(FireDAC)으로 전환해야 한다. reFind라는 유틸리티를 사용하면 매우 쉽게 자동 전환할 수 있다. reFind는 실행하면 시간 낭비할 필요없이 BDE 구문을 찾아서 FireDAC으로 전환한다. 

 

Kelly 선정 - FireDAC으로 이전

나도 역시 여전히 BDE 사용자가 많아서 놀랐다.  마이그레이션 시에는 반드시 BDE를 제거해야 한다. 특히 윈도우10에서 BDE는 완전히 멸종된 기술이라서 항상 문제가 될 것이다. reFind를 사용하면 쉽게 FireDAC으로 전환할 수 있다. 게다가 파라독스 같은 오래된 DB에서 테이블을 열어서 필터링을 하던 방식을 벗어나야 한다. SQL구문을 활용해 DB를 다루고, 데이터 액세스 방식과 내용에서 보다 효율적인 데이터베이스를 사용하기 바란다. 요즘 데이터 보안이 강조되고, 파일과 데이터 액세스 암호화에 대한 관심이 매우 높다.  FireDAC으로 전환하면 SQL서버, 인터베이스, 오라클 등 견고한 데이터베이스를 사용할 수 있고 이런 DB의 수준 높은 기능을 사용할 수 있게 된다. (Ball - BDE 이외에도 DBExpress와 ADO도 여전히 사용되지만 역시 보안 등의 측면에서 FireDAC으로 전환할 것을 권장한다)

 

 

 

[두 사람이 선정한 2위]

 

Al 선정 - 유니코드

유니코드는 흥미로운 주제이다. 개발자들은 유니코드 반영이 매우 어려울 것이라고 생각하지만 실제로는 그렇게 어렵지는 않다. 가장 먼저 해야할 질문은 “유니코드가 꼭 필요한 애플리케이션인가 아니면 영어버전으로만 계속 사용해도 충분한가”이다. 만약 영어버전만 사용한다면 String 이나 Unicode String을 사용하지 않고, Ansi string을 사용하면 된다. 하지만 유니코드로 가고 싶다면 Unicode Statistics라는 도구를 사용하라. 이 도구는 유니코드 전환 복잡도를 측정하고, 전환 시 변환되어야 하는 코드를 알려준다.  

String을 많이 사용했다고 걱정하는데 오해이다. 전혀 손댈 필요가 없는 경우도 많다. 이것은 string을 어떻게 사용했는가에 따라 달라지는 것이지 코드의 모든 string이 변환되어야 하는 것은 아니다.  컴파일러는 똑똑해서 유니코드 변환이 필요한 곳을 알려준다. 경험 상 유니코드 전환은 생각보다 훨씬 쉽다. 일단 유니코드로 전환하고 나면 영어권 이외로 진출할 수 있다. 컴파일을 하면 컴파일러가 ansi string과 string 타입이 맞지 않는다는 오류를 표시하므로 쉽게 파악할 수 있다. 컴파일러는 타입 캐스팅을 할 수 있지만 확신이 들지 않아서 에러를 표시하는 것이므로 컴파일러가 원하는 타입으로 변환하는 것이 가장 쉬운 방법이다.

 

 

 

Kelly 선정 - 유니코드

유니코드 반영은 작업이 크고 가장 어렵다. 예를 들어 C++을 업그레이드 하려다보면 C++03 표준에서 C++17 표준으로 크게 넘어가는 경우가 많다. 이때 언어 표준에서 그동안 어떤 변화가 있었는지를 알아야하고,단순히 에러만 해소하도록 고쳐나가는 것이 좋을 지 아니면 코드 일부를 아예 다시 작성하여 유니코드 반영 뿐만 아니라 C++의 새 기술을 적용하여 향상할 수 있도록 하는 것이 좋은지를 고민하게 된다.

 

(Kelly - docwiki는 유니코드 전환 시 제공되는 컴파일러의 에러 코드에 대한 설명과 해소법이 제공되므로 활용하면 좋다)

 

 

 

 

[두 사람이 선정한 1위]

 

Al 선정 - 써드파티 컴포넌트

마이그레이션 준비 시 가장 먼저 해야할 질문은 “사용한 써드파티 컴포넌트가 무엇인가?” 이다. 써드파티 라이브러리와 플러그인 역시 모두 다시 컴파일되어야 하기 때문이다. 소스코드가 있다면 더 쉽다. 소스를 가져와서 다시 빌드하면 된다. 소스코드가 없는 것들은 현재 개발툴에서 작동하는 버전을 사용해야한다. RAD스튜디오(델파이, C++빌더) 개발툴 안에 있는 겟잇 패키지 매니저에서는 써드파티가 250여가지가 제공된다. 여기에서 검색을 하면 해당 개발툴에서 작동이 보장된 버전을 바로 찾아서 설치할 수  있다. 인터넷에서 각 써드파티 마다 새 버전을 검색하고 찾은 것이 현재 개발툴에서 작동되는지를 일일이 확인 하는 수고를 덜 수 있으므로 겟잇 패키지 매니저를 잘 활용하기 바란다. JEDI, 터보파워 등 오픈 소스 써드파티 뿐만 아니라 TMS, Woll2Woll 등 상업용 써드파티의 평가판이 제공된다. 

 

 

Kelly 선정 - 써드파티 컴포넌트

마이그레이션 전에 가장 먼저해야 할 작업은 사용하고 있는 써드파티 컴포넌트를 확인하는 것이다. 소스 코드가 있으면 다시 컴파일을 하고 소스 코드가 없는 것들은 업그레이드된 버전을 찾아야 한다. 만약 두 경우가 아니면 곤란할 수 있는데, 이때는 고생해서 억지로 끼워맞추기 보다는 오히려 TMS, DevExpress, JEDI 등으로 옮기는 것이 더 쉽고, 결과적으로 더 애플리케이션이 더 향상된다.

 

 

 

 
번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 7243
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 7080
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 9460
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 14496
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 16250
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 12043
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 31083
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 166958
1281 [10.4 시드니][업데이트 1] 델파이 코드 인사이트 새로운 기능 관리자 2020.09.10 305
1280 C++ 빌더 BDE를 FireDAC으로 마이그레이션 자동화 도구 [1] file 험프리 2020.09.10 280
» 델파이 마이그레이션 요구 사항 Top 5 (영문 비디오를 한글 문서로 번역) 관리자 2020.09.05 298
1278 [10.4 시드니][업데이트 1] What's NEW! 신기능 자세히 보기 [2] 관리자 2020.09.03 834
1277 스레드 사용시 로긴오류 나마 2020.09.03 253
1276 /n 소프트웨어 – IPWorks WebSockets 관리자 2020.09.01 310
1275 AtoZed – IntraWeb 15 Personal 관리자 2020.09.01 264
1274 윈소프트(Winsoft) – 스탠다드 컴포넌트 패키지 (100+가지) 관리자 2020.09.01 339
1273 Steema – TeeGrid (VCL/FMX용) 관리자 2020.09.01 275
1272 JomiTech – TwineCompile (C++빌더용) 관리자 2020.09.01 224
1271 데브아트 – SecureBridge 관리자 2020.09.01 244
1270 [REST API] REST 기반 파일 업로드와 다운로드 구현하기 험프리 2020.08.31 53972
1269 Fire Power X - RAD스튜디오 10.4 버전에 최적화된 파이어몽키용 컴포넌트 스위트 관리자 2020.08.28 240
1268 DelphiParser: Conversion Component Suite - 델파이 코드를 최신으로 현대화하는 마이그레이션 도구 관리자 2020.08.28 286
1267 InstallAware - VCL 애플리케이션을 윈도우용 설치 파일로 생성 file 관리자 2020.08.28 241
1266 [개발환경] 델파이, RAD스튜디오 에서 Git과 Github를 사용해야하는 이유와 꼭 필요한 만큼 사용법 관리자 2020.08.27 687
1265 TMS Aurelius - ORM 프레임워크 관리자 2020.08.27 312
1264 이 달의 기술자료 - 2020년 09월 file 험프리 2020.08.27 184
1263 델파이/C++빌더에 TTcpClient, TTcpServer, TUdpSocket 등록하기 [1] file 험프리 2020.08.26 302
1262 [고객 사례- 델파이, 예술, 창작] 아트젠, 컴퓨터로 완성하는 미술 작품 관리자 2020.08.25 284