C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[22176] PC 업무시스템의 태블릿 적용 개발 문제...
박지훈.임프 [cbuilder] 7183 읽음    2012-12-22 09:45
요즘 제가 기술적 아이디어를 집중시키고 있는 이슈는, PC와 태블릿간에 업무시스템을 연동시키는 문제입니다.
저는 델파이/C++빌더 개발자이고 PC 개발에만 관심이 있으므로 제가 생각하는 태블릿은 안드로이드나 아이패드가 아니고 윈도우8 태블릿인데요.

적어도 현시점에서는, 안드로이드, 아이패드와 PC기반 업무시스템을 연동시키는 것은 현실적으로 효율성도 낮고 무리가 너무 큽니다.
PC 시스템과 완전히 별개로 새로운 개발 프로젝트를 진행해야 하지요. 저는 PC 업무시스템을 최소한의 추가 투자로 태블릿에서도 운영하는 것을 목적으로 하기 때문에, 같은 이유로 윈도우RT 태블릿도 고려 대상에서 빠집니다.

물론 업무시스템을 사실 일반적인 사무 환경에서만 사용하는 기업들은 태블릿을 고려할 필요가 거의 없습니다.
하지만 제조기업, 의료시설, 서비스기업 등의 경우 제조 현장이나 진료 현장에서 태블릿을 PC처럼 활용할 수 있다면 업무 효율성을 많이 높일 수 있지요.

사실 작년까지 나온 윈도우 태블릿들은 1kg 내외로 장시간 들고 작업을 하기엔 너무 무겁고 배터리도 금방 닳았기 때문에 현실에 적용하기엔 무리가 많았는데요. 최근 몇달 사이에 나온 윈도우8 태블릿들은 600g 정도로 아이패드보다도 더 가벼우면서도 10시간까지 사용할 수 있는 넘들까지 나와 있어서 적용 가능성이 높아지고 있지요.

윈도우8 태블릿이라면 태블릿 형태를 갖췄을 뿐이지 사실상 일반 PC와 동일한데 개발 관점에서 뭐가 문제냐 할 수 있겠습니다만.
물론 물리적으로야 PC기반 업무시스템을 윈도우8 태블릿에서 실행시키는 것은 아무런 문제가 없습니다.
소프트웨어적으로 PC윈도우 환경과 동일하기 때문에, 그냥 설치해서 실행하면 그대로 돌아가죠.

문제는, PC기반 업무시스템들 중 다수가, 하나의 화면에 복잡한 컨트롤들이 빼곡히 들어차있는 구성이 많다는 겁니다.
아주 단순한 조회 화면이 아닌 이상 대부분이 그렇죠. 조회 화면이라도 검색 조건이 몇개 이상 넘어가면 복잡해지기 시작합니다.

그런데 이런 복잡한 구성의 화면을, 기껏해야 10인치대인 태블릿 화면 크기에 올리려면 이야기가 복잡해집니다.
게다가 사람 손으로 터치 기반으로 동작시키려면 기존 업무 시스템들의 화면들은 컨트롤의 크기도 너무 작고 갯수도 너무 많습니다.
PC 환경의 경우 디스플레이도 보통은 20인치를 넘어가는 대화면이고요. (태블릿과 4배 이상이죠)
또 손의 터치가 아닌 더 세밀한 포인팅이 되는 마우스를 주로 사용하므로 문제가 되지 않았던 것이죠.

그래서 업무시스템을 태블릿에서 실질적, 효율적으로 사용하려면 각 화면상의 크기와 배치를 새로 해야 할 것입니다.
즉 이것은 디바이스 자체의 특성의 차이로 인한 이슈입니다.

그런데 이건 거의 순수하게 레이아웃의 문제일 뿐, 기능의 문제가 아닙니다.
윈도우8 태블릿이라면 당연히 윈도우8 PC와 동일한 기능을 모두 구현할 수 있죠.
윈도우8 태블릿에선 iOS나 안드로이드 기반의 다른 모바일 디바이스들에서처럼 기능을 줄일 필요가 전혀 없습니다.

기능을 줄일 필요가 없으므로, 작아진 화면이라도 레이아웃만 성공적으로 배치한다면, PC용과 태블릿용의 두 화면 사이에 코드를 완벽하게 공유할 수 있는 것입니다. 델파이와 C++빌더의 관점에서 보면, 소스 파일 하나에 dfm 파일 두개를 연결하고, 특정 조건에 따라 두 dfm중 하나를 로드할 수 있게 만들면 됩니다.

실질적인 개발자의 관점에서 보자면, PC용으로 개발된 화면 dfm의 복사본을 수정하여 레이아웃만 태블릿용으로 조정하면 됩니다.
물론 하나의 pas(혹은 cpp) 파일에 dfm 두개를 연결하는 건 지원되지 않지요.


의외로, 이 문제에 대해 기술적으로 간단한 해결책이 있습니다. 델파이와 C++빌더에서 지원하는 폼 상속이죠.
VFI, Visual Form Inheritance인데요. 일반적인 클래스의 상속에서 한발 더 나가서 화면과 코드를 통째로 상속받는 거죠.
이런 VFI, 폼 상속을 이용하면 이미 PC용으로 개발한 화면을 태블릿용으로 레이아웃과 크기 등을 변경할 수 있습니다.
두 폼은 코드를 완전히 공유할 수 있는데다 특정 디바이스를 위한 조건적인 코드를 추가할 수도 있죠.

PC-태블릿 사이에서 화면의 코드를 공유하는 방식으로서 이 폼 상속은 기술적으로는 완벽한데요.
수천개 이상인 업무 시스템의 화면을, 개별 화면마다 일일이 PC 버전의 레이아웃을 태블릿 기준의 레이아웃으로 변경하는 건 엄청난 노가다가 될 거라는 거죠.

물론 코드라도 공유가 되니까, 일단 일이 절반이나 줄어드는 거고요.
게다가 레이아웃만 변경하면 되는 일이므로, 사실 여기에 구하기도 힘든 델파이/C++빌더 개발자를 투입해야 할 필요가 없습니다.
심지어는 폼 디자인 방법의 기초 정도만 알려주고 초급 디자이너를 붙여도 되지요. ㅎㅎ

그런데 업무시스템 프레임워크 개발자로서, 화면 개발자가 최대한의 생산성과 기술적 완성도를 내는 것을 목표로 하는 제 입장에서는,
이런 폼 상속 방식은 어쨌든 이론적으로 MM이 50% 가량 증가해야 하는 문제라 맘에 안드네요.
그래서 더 복잡하더라도 개발자 생산성을 더 높일 수 있는 방법을 고민하고 있습니다.

아이패드나 안드로이드 태블릿과 달리 윈도우8 태블릿의 가장 큰 장점이 기존의 PC시스템을 최소한의 투자로 돌릴 수 있다는 건데요.
공수가 전체의 절반이나 추가된다면 그런 장점이 많이 희석되는 거죠.


물론 PC 시스템을 태블릿용으로 돌리기 위한 추가 작업들은 화면 단위에 대한 고려 외에도 다른 이슈들도 많이 있습니다.
하지만 업무시스템의 프레임워크란 것은 적어도 수백개, 많게는 1만개 이상의 업무 화면들을 호스팅하는 일종의 플랫폼이기 때문에,
아무래도 화면 단위의 작업 효율성이 전체 프로젝트의 생산성을 절대적으로 좌우하게 되죠.

다른 생각 가능한 이슈들의 예를 들자면, MDI의 문제가 먼저 떠오르네요.
현재 국내의 업무시스템들은 MDI 방식을 압도적으로 많이 사용하고 있는데요.
태블릿형태의 디바이스에서 MDI 차일드 방식으로 업무화면들을 띄우는 것은 사용 편의성을 크게 떨어뜨릴 가능성이 크죠.
그래서 MDI가 아닌 태블릿에 적절한 새로운 형태로 바꿔야 할 것 같고요.

어쨌든..
최근 여러해 동안 제가 주로 해온 잡이 주로 업무시스템 프레임워크 개발이라, 이런 문제로 고민중에 있습니다.
어느 정도 방향성이 결정되면 실제로 윈도우 태블릿을 구입해서 테스트도 해봐야겠고요..
김태선 [cppbuilder]   2012-12-22 13:13 X
과도기에는 PC용 화면을 적당히 재배치해서 문제를 해결해 나가는 방식이 가능할순 있어도
PC와는 상당히 다른 태블릿의 사용자 조작 방식의 편의성을 생각한다면
태블릿용 컨트롤로 화면을 다시 만드는게 유일한 대안 같습니다.

dfm을 이중으로 쓰고 코드는 하나로 쓰는 기법은 제가 강좌란에 소개한바 있지만
그런건 이런 주제에는 별로 쓸모가 있어 보이지 않고,

최선의 방법은
UI와 내부 구현을 최대한 분리하고
PC용 화면과
태블릿용 화면을 별개로 만드는 쪽으로 가는게 오히려 쉽고 비용도 적게 먹힐 것으로 보입니다.

PC용 UI와 태블릿용 UI, 그리고 내부구현으로 나누고
UI와 내부구현을 원만하게 맺어주는 계층 클래스를 몇개 만드시면 될 것으로 보입니다.

저라면 이렇게 작업하겠습니다.
어차피 프로그래밍이야 만드는 사람 마음이니 자기가 마음에 드는 방식을 써야 하겠지만.
김태선 [cppbuilder]   2012-12-22 13:20 X
델파이 하나로 안드로이드 IOS 윈도 리눅스 프로그램을 모두 만들수 있다는건
아주 매력적인 제안입니다.

저는 델파이를 잘 쓰긴 하지만, 이런데 그다지 관심을 두지 않고 기술 흐름만 살피는 정도인데,
그냥 안드로이드는 자바로
iOS는 오브렉티브 C로
윈도는 C++빌더/델파이로
서버는 C#, java, php 같은 이미 잘 구축되어 있는 개발 환경을 익혀
개발하는게 훨씬 낫다는 것을 체험적으로 알고 있기 때문입니다.

태블릿 어플은 태블릿 다운 모습을 나타내야 하기 때문에
역시 그에 맞는 최적의 방법을 선택하는게 나을 것 같습니다.
박지훈.임프 [cbuilder]   2012-12-22 15:35 X
말씀하신 측면은 기술적으로 맞기는 한데요. 화면 갯수가 몇백개 수준을 넘어서서 몇천개 이상의 수준으로 늘어나면 그로 인해 늘어나는 개발 공수가 엄청나게 되기 때문에 고민중인 거랍니다. 사실상 시스템을 2벌로 개발해야 되니 공수도 두배가 되겠지요.

또 안드로이드나 iOS는 동일 기능을 구현하는 데 있어 델파이나 C++빌더보다 생산성이 더 떨어지기 때문에, 수천본 단위의 업무 개발에는 불리하다고 보고 있습니다. 델파이/C++빌더로 두벌의 시스템을 개발하는 데에 공수가 총 2배가 든다면 한벌을 안드로이드로 개발한다면 공수가 세배 이상 들어갈 것 같네요.

다만, 동일 폼이나 혹은 폼이 두개 이상이라도 디바이스에 따라 별도의 컨트롤을 호출하는 것은 그다지 어려운 일은 아닐 것 같습니다.
컴포넌트와 패키지를 추상화시켜버리고 배포할 패키지를 디바이스에 따라 다르게 배포하면 되겠고, 의외로 그닥 어렵지 않습니다.

강좌에 올리신 글은 아주 좋은 팁인데, 제가 원하는 목적에는 좀 안맞을 것 같습니다.
두번째 폼을 폼디자이너에서 불러와서 작업할 수 없다는 단점이 있어서요.
또 같은 파일 이름의 바이너리를 두 벌로 만들어야 하거나 하는 복잡한 문제가 생길 수 있겠습니다.

업무개발 프레임워크 작업은, 프레임워크 자체는 패키지 개발 성격인데 각 화면의 개발은 전형적이 SI 개발이기 때문에, 폼 디자이너를 직접 사용할 수 없다면 생산성에 큰 차질이 생기지요. 아시다시피 화면 단위의 SI 개발은 기술보다는 단순 작업이 대부분인 만큼 생산성이 아주 중요하고, 또 화면 개발자들에게 복잡한 기술이나 테크닉을 기대할 수 없거든요.

그래서... 대안으로서 델파이/C++빌더 IDE에 플러그인을 만들어서 하나의 유닛에 여러 폼들을 스위칭하면서 인식하도록 하는 방법도 고민중이고, 다른 방법도 고민하고 있습니다.

어쨌든 좋은 의견 감사합니다. ^^
깔쌈보이 [handsome]   2012-12-24 07:45 X
제가 임프님이 말씀하신 만큼의 수량은 아니더라도 엄청나게 많은 본수의 ERP화면을 비교적 저해상도의 테블릿PC에서 볼 수 있도록 작업을 해본 경험이 있습니다.

그런데, 아무리 화면을 재배치 하더라도, 마우스/키보드 중심의 UI를 터치 중심의 UI로 바꾸는 건 답이 안 나오더라구요...
실컷 고생해서 화면 재배치 작업을 완료했더니... 기껏 한다는 소리가...
"이거 많이 불편해요~" 같은...
그래서 몇몇 중요 화면을 테블릿PC에서 사용하는게 더 편하도록 만들었었네요... --;
김태선 [cppbuilder]   2012-12-24 10:39 X
이중폼에서 두번째 폼은 더머 프로젝트를 만들어 수정하면 됩니다.
제 강좌글에 이미 나와 있는 내용입니다.

전 화면에 천여개가 넘는 컨트롤이 배치된 프로그램을
강좌에 쓴 방법으로 간편하게 작은 화면에 재배치했습니다.
물론 코드는 단 한줄도 수정을 안했습니다.

그러면서 큰 화면용 작은 화면용 폼만을 둔 체 하나의 프로젝트로 하나의 코드로 잘 유지했더랬죠.
변경시는 주로 큰화면용에서 본래의 작업을 하고,
작은 화면은 폼만 수정하고 프로퍼티 핸들러등 몇가지 처리를 해주고 다시 컴파일일만 하면 작은 화면용을 얻었을 수 있었습니다.

+ -

관련 글 리스트
22176 PC 업무시스템의 태블릿 적용 개발 문제... 박지훈.임프 7183 2012/12/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.