Qt 세이프 렌더러 활용한 소프트웨어 안정성 확보

구교현 2024. 4. 12. 16:58
음성재생 설정
번역beta Translated by kaka i
글자크기 설정 파란원을 좌우로 움직이시면 글자크기가 변경 됩니다.

이 글자크기로 변경됩니다.

(예시) 가장 빠른 뉴스가 있고 다양한 정보, 쌍방향 소통이 숨쉬는 다음뉴스를 만나보세요. 다음뉴스는 국내외 주요이슈와 실시간 속보, 문화생활 및 다양한 분야의 뉴스를 입체적으로 전달하고 있습니다.

현대 소프트웨어 개발 업계에서 안전성은 점점 더 중요한 이슈로 부각되고 있다. 특히 자율 주행 자동차, 의료 장비, 산업 자동화와 같이 안전이 생명과 직결된 분야에서는 기능 안전(Functional Safety)이 핵심 요소로 대두되고 있다.

기능 안전의 목적은 허용할 수 없는 위험이나 건강에 대한 손상을 방지하는 것이며, 주로 자동차, 의료, 자동화 등 다양한 수직 산업에 적용된다. 자동차 산업을 예로 들면, 일부 오작동으로 인해 UI(사용자 인터페이스)에 안전과 무관한 정보가 렌더링되지 않더라도 디지털 디스플레이에는 안전과 관련된 중요 정보가 반드시 렌더링이 되어야 한다.

이처럼 기능 안전은 소프트웨어 개발에서 더 이상 무시할 수 없는 요소이므로 관련 요구 사항을 충족시키고 안전한 소프트웨어를 개발하기에 효과적인 도구와 프레임워크를 선택해야 한다. 이에 기능 안전의 중요성과 함께 Qt 세이프 렌더러(Qt Safe Renderer)를 통해 구현하는 방법에 대해 소개한다.

Qt Safe Renderer의 역할과 중요성

Qt Safe Renderer는 Qt 프레임워크의 중요한 구성 요소 중 하나로, 안전한 GUI(그래픽 유저 인터페이스) 구현에 필수다. 이 도구는 ISO 26262 및 IEC 61508과 같은 인증 표준을 준수하여 관련 요구 사항을 충족시킨다. 또한 안전 인증 과정을 단순화하여 개발 프로세스를 효율적으로 만든다는 장점이 있다.

Qt Safe Renderer의 기능과 이점

Qt Safe Renderer는 기능 안전 애플리케이션 개발 작업에 Qt를 활용하고자 하는 개발자를 위한 솔루션을 제공한다. 이를 통해 애플리케이션 UI에서 안전에 중요한 그래픽을 렌더링하고, 안전과 무관한 부분에 오류가 발생하더라도 경고 표시기와 같이 안전에 중요한 UI 요소를 렌더링할 수 있다.

설치에는 사전 인증된 애플리케이션 바이너리인 '런타임 컴포넌트'가 포함되어 있는데, 이는 임베디드 디바이스에서 안전에 연관된 UI(Safety-critical UI)를 렌더링한다. 또한, 안전과 관련이 없는 시스템 기능을 담당하는 비안전UI (non-safety UI)와 결합된 아키텍처로 배포되도록 설계되었다.

Qt와 Qt Safe Renderer를 결합한 시스템의 소프트웨어 아키텍처는 하나의 CPU를 사실상 두 개로 나누어 사용하므로 운영 체제와 필요한 인증 수준에 따라 운영 체제 내에서 작업을 수행한다. 만약 불가능할 경우, 하이퍼바이저를 추가하여 각 부분의 소프트웨어를 격리할 수 있다. 즉, 어떤 경우에도 작은 부분만 기능 안전 인증을 받고 나머지 소프트웨어는 표준 관행과 기존 방법론을 통해 구축하는 것을 목표로 한다.

Qt Safe Renderer 시스탬 아키텍처(제공:Qt그룹)

Qt Safe Renderer는 인증된 런타임 구성 요소와 개발 도구를 제공하여 아래 그림과 같이 일반 UI와 연동한다.

Qt Safe Renderer 개요(제공:Qt그룹)

인증된 Qt Safe Renderer 런타임은 디바이스에서 실행되는 Qt Safe Renderer 애플리케이션 바이너리로, 안전에 중요한 기능과 안전하지 않은 기능을 위한 별도의 프로세스가 있는 시스템에 통합되도록 설계되었다. 또한, 관련 기능을 자체 프로세스에서 실행되는 독립적인 하위 시스템으로 분할하여 안전에 중요한 정보의 그래픽 렌더링을 보장한다.

Qt Safe renderer의 그래픽 구조(제공:Qt그룹)

제공된 안전 레이아웃(Safe layout) 데이터를 기반으로 기기 화면에서 필수 안전 UI 를 렌더링하며, 안전에 중요한 모든 요소는 비트맵으로 렌더링한다. 안전 관련 UI 요소가 포함된 그래픽은 최상위 레이어이므로 다른 그래픽과 관계없이 항상 표시된다.

Qt Safe Renderer에 적절한 형식의 레이아웃 데이터를 생성하는 Qt 세이프 레이아웃 툴(Qt Safe Layout Tool)이 포함되어 있다. 이 툴은 안전에 중요한 UI 요소의 비트맵을 ARGB32 형식으로 저장하는 레이아웃 데이터를 생성하며, 생성된 데이터에는 UI 요소를 렌더링하는 데 필요한 모든 정보가 포함된다. 레이아웃 데이터에 포함된 검사합(checksum)과 비교하여 데이터의 유효성을 검사하여 어플리케이션이 실행될 때 그래픽 리소스를 안전하게 불러온다.

이외에도 Qt Safe Renderer 1.2 이상부터는 UI 요소에 애니메이션을 적용할 수 있어서 개발자가 필수 안전 UI에서도 동적이고 보기 좋은 UI를 쉽게 구현할 수 있게 되었다.

Qt Safe Renderer의 시스템 요구 사항

Qt Safe Renderer를 사용하려면 기기 시스템이 안전 기능과 비안전 기능 사이의 파티션 지원, 안전 관련 그래픽 출력 독립 렌더링, 안전 및 비안전 그래픽 출력 동시 렌더링과 같은 요구 사항을 충족해야 한다.

Qt Safe Renderer는 안전한 UI를 빠르게 구현하고, 안전성을 고려한 소프트웨어를 신속하게 개발할 수 있어 기능 안전을 달성하는 데 매우 효과적이다. 실제로 다양한 분야에서 이미 적용되고 있다. 자동차 제조업체는 자율 주행 시스템의 안전한 UI 를 개발하기 위해 를 활용하고 있고, 의료기기 제조사도 UI 개발에 적극적으로 활용하고 있다. 이러한 사례는 Qt Safe Renderer가 얼마나 효과적인지 입증하고 있다. 또한 정적 분석과 같은 기능을 통해 개발자가 소프트웨어의 안전성을 지속적으로 검토하고 개선할 수 있다.

구교현 기자 kyo@etnews.com

Copyright © 전자신문. 무단전재 및 재배포 금지.

이 기사에 대해 어떻게 생각하시나요?