Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

C++빌더는 이 SAMD(Software As A Medical Device)를 해낸 믿음직한 친구이다.


Recommended Posts

이안 바커 (Ian Barker)"C++ Builder Is The Trusted Enabler For This SAMD" 을 번역했습니다. (원문 작성: 2023년 2월, 최종 번역: 2024년 1월)

spacer.png

오늘은 C++빌더 사례를 기업용 대형 애플리케이션 개발 사례 기고 경연 대회(Enterprise Article competition) 중에서 뽑아서 소개한다. 오늘은 C++ 앱 개발자인 Courant가 'SAMD(Software As A Medical Device, 의료기기용 소프트웨어)'를 개발하면서 경험한 일에 대한 것이다. Courant의 엔터프라이즈 앱 경험에 대한 이야기는 이전에는 들어본 적이 없는 내용이 많았기 때문에 꽤 흥미로웠다. 지금부터 Courant의 의료용 앱에 대한 아주 특별한 내용을 공개한다. 그 앱이 사람들의 입에 음식을 넣는데 어떻게 도움을 줄 수 있었는지, 음식을 먹을 수 없을 정도로 쇠약해진 사람들의 생활을 개선하는 데 어떻게 도움이 되는지이다. 먹는다는 것은 너무나 평범하고 필수적인 일이다. 모두가 당연하게 여긴다. 그래서 음식을 눈앞에 두고도 먹을 수 없는 사람들이 있다는 사실을 생각하지 않는 것 같다. 우리를 겸손하게 해주는 이야기이다.

목차


이 기업용 프로젝트는 어떻게 시작하게 됐는가?

대만의 한 생명공학 회사가 내 연구실로 개발 의뢰를 해왔다. 그 회사에서 만든 의료 보조 기기와 연결할 수 있는 소프트웨어 시스템을 개발해 달라는 내용이었다. 그 의료 보조 기기는 미국 FDA에서 저위험 1등급의 의료기기로 분류되어 최근 MedTech 산업에서 가장 핫한 제품이라 언급되는 의료용 소프트웨어 시스템이다. 의료용 소프트웨어 (Software As A Medical Device, SAMD). 다행히도, 대만에서는 이 보조 장치가 의료 기기로 취급되지 않았다. 그래서 ISO 13485의 설계 및 개발 관리 프로세스(Design and Development Control Process)나 IEC 62304의 의료용 소프트웨어 검증을 적용할 필요가 없었다. 덕분에 개발 부담이 크게 줄어들었다.

그래서 많은 법령과 규제들을 피할 수 있었는가?

spacer.png대만에서는 이 소프트웨어가 의료 기기 제품으로 취급되지 않기 때문에, 고객사는 개발에 많은 비용을 투자할 계획이 아니었다. 사실, 가장 적은 예산으로 가장 강력한 제품을 개발하는 것이 모든 고객들이 가장 우선하는 목표이기 마련이다. 그들은 우리가 (안드로이드와 아이폰에서 모두 실행 가능한) 크로스 플랫폼 모바일 앱을 개발하기를 원했다. 그 모바일 앱은 블루투스를 통해 그 회사의 제품에 연결하고, 거기에서 생성되는 신호를 수집하여, 클라우드 데이터베이스에 업로드 하는 기능이 필요했다. 마치 개인 건강 관리 시스템과도 같은 것이었다. 즉, 이 프로젝트에는 많은 기술이 필요했다. 휴대폰 앱 개발, 세미 웨어러블 장비(그 회사의 의료 보조 기기), 센서(보조 기기에 내장된 가속도계), 무선 통신(블루투스 모듈), 클라우드 플랫폼, 웹 등의 기술이 모두 관련된 프로젝트였다.

어떤 개발 기술을 사용했는가?

계획 상, 우리에게 필요한 개발팀 구성은 다음과 같았다. Java 또는 Kolin 프로그래머, Swift 프로그래머 (또는 React Native 또는 Flutter 프로그래머로 앞의 두 명을 대체), 백엔드 SQL DBA, AWS, GCP 또는 Azure 클라우드 플랫폼 아키텍트, 그리고 JQuery, Bootstrap, Node.js, React 또는 Vue.js 등에 익숙한 프론트 엔드 프로그래머....즉, 이 크로스 플랫폼 풀 스택 소프트웨어를 개발해 의료용 장비로 쓸 수 있도록 하기 위해 위와 같은 팀이 필요했다.  또한,디지털 신호 처리, 스펙트럼 분석, 진동 분석 또는 심지어 이부 신경학 분야의 노하우까지도 고려해야 했다. 그래야만 이 소프트웨어를 여러-기관 임상 실험에 신청할 수 있기 때문이었다. 그리고, 예산은 미국 달러로 7만불이 채 안 되었다. 그래서 나는 이 작업을 내가 직접 완료하기로 결정했다.

작업하는 데 필요했던 의료용 하드웨어는 무엇인가?

spacer.png이 의료보조기기 제품은 떨림 억제 숟가락이었다. 코드명은 “Eatsofree”로 자유로운 식사를 도와준다는 의미를 담고 있다. 본태성 진전증, 파킨슨병, 당뇨병, 뇌졸중을 앓고 있는 환자에게는 통제할 수 없는 손 떨림 증상이 있을 수 있다. 그로 인해 식사가 어려운 경우가 많다. 식사를 하려고 할 때 손이 주체할 수 없을 정도로 떨리고, 손에 숟가락을 쥐고 음식을 퍼 올린다 해도 그 음식을 입으로 정확하게 넣지 못할 수도 있다. 심지어 그 과정에서 손떨림으로 인해 음식을 흘린다고 상상해보자.

이 숟가락이 파킨슨병 환자를 어떻게 돕는가?

'Eatsofree' 숟가락은 마이크로 프로세서, 초소형 모터, 가속도계, 블루투스 무선 송신기로 구성되어 있다. 스마트 워치나 스마트 밴드 등 다른 웨어러블 디바이스와 유사한 첨단 기술 숟가락이다. 수전증을 가진 환자가 'Eatsofree 숟가락'으로 음식을 먹을 때, 숟가락이 손의 제어할 수 없는 떨림을 감지하면, 내장된 모터를 구동하여 물리적 힘으로 숟가락의 움직임을 제어해 음식을 덜 흘리고, 환자의 입에 수월하게 넣을 수 있도록 하는 것이다. 디지털 카메라의 광학식 손떨림 보정 기능과 비슷하지만 훨씬 더 오래 지속된다. 구글에서는 이미 Liftware라는 완성도 높은 제품을 출시했다.

spacer.png우리의 고객은 또 다른 혁신 기술을 사용하여, 동일한 임상적 미충족 수요를 해결하려 했고, 이를 특허 출원했다. 우리의 도전 과제는 휴대폰 앱(안드로이드와 iOS 플랫폼 모두)을 작성하여 Eatsofree를 연결하고 샘플링 속도 90Hz로 데이터를 수신하여 후처리 과정을 거친 후 클라우드 데이터베이스에 업로드 하는 것이었다. 즉 다음과 같은 숫자 연산을 완료해야 하는 것이다: 1. 푸리에 변환, 2.스펙트럼 분석, 3.노이즈 감소, 4.푸리에 역변환, 5.시간 영역 신호 처리, 6.몇 밀리초(millisecond) 만에 이중 적분/미분 연산. 우리는 네이티브 코드만이 이러한 효율성과 처리량을 가질 수 있다고 생각했다. 그래서 React Native와 Flutter 솔루션은 고려하지 않았다.

이 기업용 프로젝트에 C++ 빌더를 선택한 이유는 무엇인가?

글쎄, 나는 대학 때 터보 C를 배웠다. 이후 정위 방사선 수술의 치료 계획에 신경망 머신러닝을 활용한 석사 논문, 그리고 방사선 수술에서 선량계 젤의 철 이온 확산 현상을 연구한 박사 논문을 모두 터보 C, 볼랜드 C++, OWL, VCL, BDE, MIDAS, CORBA, SOAP 웹 서비스로 완성했다. C++빌더는 절대 나를 실망시키지 않는 도구다. 그래서 나는 RAD 스튜디오 11의 C++ 빌더를 사용해 Eatsorfree 앱을 개발했다. 한 번 작성하면 어디에서나 실행할 수 있다. Eatsofree는 FireDAC과 DataSnap을 사용하여, 로컬 SQLite와 원격 Azure SQL 서버에 데이터를 저장할 수 있다. Atozed의 IntraWeb을 통해 크로스 플랫폼 풀 스택 의료 소프트웨어를 성공적으로 완성했다. 엠바카데로에게 고마움을 전한다.

이 기업용 소프트웨어 경험에 대한 당신의 최종 의견은 무엇인가?

spacer.png나의 프로그래밍 경험은 그리 길지 않다. 그리고 경력의 반 정도가 프로그래밍이었다. 이런 상황에, 하나의 프로그래밍 언어와 하나의 개발 도구를 가지고, 휴대폰 크로스 플랫폼 앱, 백엔드 데이터베이스, 클라우드 애플리케이션, 프론트엔드 웹 페이지에 이르는 모든 엔터프라이즈 소프트웨어를 완성한다는 것은 거의 블가능한 임무였다. 오늘날에는 개발 기술이 너무나 복잡하다. 그리고, 인터넷에는 너무나 많은 프레임워크들과 개발 도구들이 있다. 

spacer.pngRAD 스튜디오를 사용하면, 최단 시간에 최저 비용으로 임무를 완수할 수 있다. 특히 제품을 개발하는 과정에서 급하게 많은 당면 과제들을 해결해야 하는 경우에 더욱 유용하다. 만약 여러분의 프로젝트가 내 프로젝트와 특징이 비슷하다면 즉: 고객의 요구사항이 명확하지 않아서 스펙이 매주마다 변경될 수 있고, 그리고 더 어려운 점으로는 고객이 심지어 제한된 시간과 CPU 리소스를 가지고 복잡한 알고리즘, 수학 또는 물리학 정리를 구현해야 한다는 당명 과제를 어떻게 해결하면 좋은지 전혀 명확하게 설명하지 못하는 경우다. 그렇다면, 엠바카데로의 RAD 스튜디오의 C++빌더를 사용하기를 추천한다. 왜냐하면 신속한 PoC 프로토타이핑, 검증, 유효성 검사를 하기에 가장 좋은 솔루션이기 때문이다.

이 글은 기업용 대형 애플리케이션에 대한 기고 경연 대회(Enterprise Article challenge)에 제출된 것이다. 만약 여러분도 델파이, C++빌더 또는 RAD 스튜디오를 사용하여 만든 훌륭한 엔터프라이즈 제품과 프로젝트에 대해 이야기하고 싶은 성공 사례가 있다면 연락을 주기 바란다.

한국 개발자는 데브기어의 델파이 사례 기고 행사에 참여하세요!

이 댓글 링크
다른 사이트에 공유하기

  • 4주 후...

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.