Software Engineering

소프트웨어 공학: 임베디드 소프트웨어 아키텍처 패턴

habana4 2024. 10. 3. 21:25
728x90
반응형

임베디드 소프트웨어 아키텍처에도 패턴이 적용될 수 있습니다.

이번 포스팅에서는 임베디드 소프트웨어 아키텍처에

적용될 수 있는 기본적인 패턴에 대해 알아 보겠습니다.

 

 

 

임베디드 소프트웨어 아키텍처 패턴 개요

아키텍처 패턴은 좋은 설계 관행에 대한 추상적이고 스타일화된 설명으로, 시스템 아키텍처의 구조와 적용 시점, 장점 및 단점을 이해하는 데 중요한 정보를 제공합니다. 이러한 패턴은 단순히 일반적인 디자인을 인스턴스화하는 것이 아니라, 특정 아키텍처를 이해하고 이를 기반으로 자신만의 구체적인 설계를 만들기 위한 출발점으로 사용되어야 합니다.

반응형

 

임베디드 소프트웨어와 인터랙티브 소프트웨어의 차이로 인해, 임베디드 시스템에서는 프로세스 중심의 아키텍처 패턴이 사용됩니다. 여기서는 세 가지 일반적으로 사용되는 실시간 아키텍처 패턴을 소개합니다.

 

1. 관찰 및 반응 패턴 (Observe and React Pattern)

이 패턴은 센서 세트를 지속적으로 모니터링하고 상태를 표시할 때 사용됩니다. 예를 들어, 전화에서 수신 호출이 감지되면 시스템은 이벤트를 처리하는 프로세스를 시작하여 그에 대응합니다.

2. 환경 제어 패턴 (Environmental Control Pattern)

이 패턴은 센서와 액추에이터를 포함하는 시스템에서 사용됩니다. 센서는 환경 정보를 제공하고, 액추에이터는 환경을 변경할 수 있습니다. 센서가 감지한 환경 변화에 따라 제어 신호가 액추에이터로 전송됩니다.

3. 프로세스 파이프라인 패턴 (Process Pipeline Pattern)

이 패턴은 데이터를 처리하기 전에 한 표현 형식에서 다른 형식으로 변환해야 할 때 사용됩니다. 이 변환은 일련의 처리 단계로 구현되며, 각 단계는 동시에 실행될 수 있습니다. 이를 통해 매우 빠른 데이터 처리가 가능합니다. 각 프로세스가 별도의 코어나 프로세서에서 실행될 수 있기 때문에 병렬 처리가 가능합니다.

 

이 세 가지 패턴은 개별적으로 사용될 수 있지만, 종종 한 시스템에서 여러 패턴이 결합되어 사용됩니다. 예를 들어, 환경 제어 패턴을 사용할 때 액추에이터가 관찰 및 반응 패턴을 통해 모니터링되는 경우가 흔합니다. 액추에이터가 고장났을 때 시스템은 경고 메시지를 표시하거나, 액추에이터를 종료하거나, 백업 시스템으로 전환할 수 있습니다.

 

이 패턴들은 임베디드 시스템 설계의 출발점으로 사용될 수 있으며, 구체적인 설계 시에는 프로세스 구조를 최적화하여 너무 많은 프로세스가 생기지 않도록 주의해야 합니다.

 

참고로 다음 글은 소프트웨어 공학 관점에서 임베디드 소프트웨어 모델링에 대해 정리 한 글입니다.

 

 

소프트웨어 공학: 임베디드 소프트웨어 모델링

소프트웨어 공학 관점에서는 임베디드 소프트웨어를 어떻게 볼 수 있을까요?임베디드 소프트웨어에는 몇가지 특징이 있기 때문에,이를 소프트웨어 공학점 관점에서는 고려해야 할 중요한 요소

habana4.tistory.com

 

 

임베디드 소프트웨어 아키텍처 패턴: 관찰 및 반응 패턴 (Observe and React Pattern)

모니터링 시스템은 임베디드 실시간 시스템의 중요한 유형입니다. 모니터링 시스템은 여러 센서를 통해 환경을 감시하고, 보통은 환경 상태를 표시합니다. 이 표시 방법은 내장된 화면, 특수 목적의 기기 디스플레이, 또는 원격 디스플레이일 수 있습니다. 시스템이 예외적인 이벤트나 센서 상태를 감지하면, 모니터링 시스템은 특정한 조치를 취합니다. 이는 종종 경보를 울려 작업자의 주의를 끌거나, 시스템 손상을 방지하기 위해 시스템을 종료하는 등의 예방 조치를 포함할 수 있습니다.

이름 관찰 및 반응 패턴
설명 Observe and React 패턴은 동일한 유형의 센서 집합에서 입력 값을 수집하고 분석하는 과정을 포함합니다. 수집된 센서 값들은 다양한 방식으로 디스플레이되며, 값이 비정상적인 상태를 나타낼 경우, 운영자가 이를 인지할 수 있도록 주의를 끌기 위한 동작이 실행됩니다. 경우에 따라 비정상적인 값에 대한 대응 조치를 자동으로 수행하기도 합니다.
자극 시스템에 연결된 센서로부터의 값.
응답 디스플레이 출력, 경보 트리거, 반응 시스템에 신호 전송.
프로세스 관찰자(Observer), 분석(Analysis), 디스플레이(Display), 경보(Alarm), 반응(Reactor).
사용 분야 모니터링 시스템, 경보 시스템.

 

관찰 및 반응 패턴(Observe and React Pattern)은 센서로부터 수집된 데이터를 실시간으로 모니터링하고 비정상적인 조건이 발생할 경우 신속하게 대응하는 시스템에서 널리 사용됩니다. 이 패턴에서는 센서 값을 관찰하고, 특정 값이 감지되면 시스템이 어떤 방식으로든 반응합니다. 모니터링 시스템은 각 센서 유형별로 여러 관찰 및 반응 패턴의 인스턴스로 구성될 수 있습니다. 시스템 요구 사항에 따라 프로세스를 결합하여 설계를 최적화할 수 있습니다. 예를 들어, 모든 센서 유형의 정보를 표시하는 단일 디스플레이 프로세스를 사용할 수 있습니다. (그림 20.7 참조)

그림 20.7 관찰 및 반응 프로세스 구조

 

다음은 이 패턴의 사용 예시로 사무실 건물에 설치될 수 있는 도난 경보 시스템 설계를 생각해볼 수 있습니다:

  • 이 상업용 건물의 도난 경보 시스템은 여러 유형의 센서를 사용합니다. 여기에는 각 방의 움직임을 감지하는 동작 감지기, 복도 문이 열리는 것을 감지하는 문 센서, 그리고 1층 창문이 열렸을 때 이를 감지할 수 있는 창문 센서가 포함됩니다.
  • 센서가 침입자의 존재를 감지하면, 시스템은 자동으로 지역 경찰에 연락을 취하고, 음성 합성기를 통해 알람 위치를 보고합니다. 감지된 센서가 있는 방의 불을 켜고, 경고음을 울립니다.
  • 이 센서 시스템은 기본적으로 전원으로 작동되지만, 배터리 백업이 장착되어 있습니다. 전력 손실은 별도의 전력 회로 모니터를 통해 감지되며, 전압 강하가 감지되면 시스템은 침입자가 전원을 차단한 것으로 간주하고 경보를 울립니다.

그림 20.8 도난 경보 시스템에 대한 프로세스 구조

 

도난 경보 시스템에 대한 가능성 있는 프로세스 아키텍처는 그림 20.8에서 볼 수 있습니다. 이 다이어그램에서 화살표는 한 프로세스에서 다른 프로세스로 보내지는 신호를 나타냅니다. 이 시스템은 엄격한 시간 요구 사항이 없는 ‘소프트’ 실시간 시스템입니다. 센서들은 고속 이벤트를 감지할 필요가 없으므로, 상대적으로 적은 빈도로 폴링됩니다. 

 

임베디드 소프트웨어에서의 자극과 응답은 시스템 설계의 출발점으로 사용됩니다. 이 설계에서는 관찰 및 반응 패턴이 사용됩니다. 각 센서 유형에 대한 관찰자 프로세스와 각 반응 유형에 대한 반응자 프로세스가 있으며, 모든 센서의 데이터를 확인하는 단일 분석 프로세스가 있습니다. 패턴의 디스플레이 프로세스는 단일 디스플레이 프로세스로 결합됩니다.

 

임베디드 소프트웨어 아키텍처 패턴: 환경 제어 패턴 (Environmental Control Pattern)

임베디드 소프트웨어의 가장 널리 사용되는 분야 중 하나는 제어 시스템입니다. 이러한 시스템에서는 소프트웨어가 장비의 환경으로부터 자극을 받아 장비의 동작을 제어합니다. 환경 제어 패턴은 환경에서 수집된 정보를 실시간으로 분석하고 제어 신호를 통해 시스템의 상태를 변경하는 다양한 제어 시스템에서 자주 사용됩니다.

이름 환경 제어 패턴
설명 Environmental Control 패턴은 시스템 환경에서 데이터를 수집하는 센서들의 정보를 분석합니다. 이와 함께, 시스템에 연결된 액추에이터의 상태에 대한 추가 정보를 수집할 수도 있습니다. 센서와 액추에이터로부터 수집된 데이터를 바탕으로, 제어 신호가 액추에이터로 전송되며, 이를 통해 시스템의 환경이 변화됩니다. 또한, 센서 값과 액추에이터 상태에 대한 정보가 디스플레이될 수 있습니다.
자극 시스템에 연결된 센서의 값과 액추에이터의 상태
응답 액추에이터로의 제어 신호 전송, 정보 디스플레이
프로세스 모니터링(Monitor), 제어(Control), 디스플레이(Display), 액추에이터 드라이버(Actuator Driver), 액추에이터 모니터(Actuator Monitor)
사용 분야 제어 시스템

 

제어 시스템은 "환경 제어 패턴(Environmental Control pattern)"을 활용할 수 있습니다. 이 패턴은 센서와 액추에이터(Actuator) 프로세스를 포함하는 일반적인 제어 패턴으로, 그림 20.10에 프로세스 아키텍처가 나와 있습니다. 이 패턴의 변형으로 디스플레이 프로세스를 생략한 형태가 있는데, 이는 사용자 개입이 필요하지 않거나 제어 속도가 너무 빨라 디스플레이가 의미가 없을 때 사용됩니다.

그림 20.10 환경 제어 프로세스 구조

 

이 패턴은 제어해야 하는 각 액추에이터 또는 액추에이터 유형에 대해 인스턴스화하여 제어 시스템 설계의 기초가 될 수 있습니다. 이후 설계를 최적화하여 프로세스 수를 줄일 수 있습니다. 예를 들어, 액추에이터 모니터링 프로세스와 액추에이터 제어 프로세스를 결합하거나, 여러 액추에이터를 위한 단일 모니터링 및 제어 프로세스를 사용할 수 있습니다. 최적화는 주로 시간 요구 사항에 따라 결정됩니다. 예를 들어, 센서를 더 자주 모니터링해야 할 경우, 제어 신호를 보낼 빈도보다 더 자주 확인해야 하므로 모니터링과 제어 프로세스를 결합하기 어려울 수 있습니다. 또한, 액추에이터 제어 프로세스와 액추에이터 모니터링 프로세스 간의 직접적인 피드백이 있을 수도 있습니다. 이를 통해 액추에이터 제어 프로세스에서 세밀한 제어 결정을 내릴 수 있습니다.

그림 20.11 자동차 제동 시스템의 제어 아키텍처

 

그림 20.11에서는 이 패턴이 자동차 제동 시스템 제어기에 어떻게 사용되는지 보여줍니다. 설계의 출발점은 시스템 내 각 액추에이터 유형과 패턴을 연관짓는 것입니다. 이 예에서는 네 개의 액추에이터가 있으며, 각각 한 바퀴의 브레이크를 제어합니다. 개별 센서 프로세스는 모든 바퀴의 센서를 모니터링하는 단일 바퀴 모니터링 프로세스로 통합됩니다. 이 프로세스는 각 바퀴의 상태를 모니터링하여 바퀴가 회전하고 있는지, 잠겼는지를 확인합니다. 또 다른 프로세스는 운전자가 브레이크 페달에 가하는 압력을 모니터링합니다.

 

이 시스템은 안티스키드 기능을 포함하고 있습니다. 만약 센서가 브레이크가 적용되었을 때 바퀴가 잠겼다고 감지하면, 이는 도로와 타이어 간의 마찰이 충분하지 않다는 의미이며, 즉 자동차가 미끄러지고 있다는 것을 나타냅니다. 만약 바퀴가 잠겼다면, 운전자는 해당 바퀴를 조작할 수 없게 됩니다. 이를 방지하기 위해 시스템은 해당 바퀴의 브레이크에 대해 빠른 온/오프 신호를 연속적으로 보내어 바퀴가 회전할 수 있도록 하여 제어를 되찾을 수 있게 합니다.

 

임베디드 소프트웨어 아키텍처 패턴: 프로세스 파이프라인 패턴 (Process Pipeline Pattern)

많은 실시간 시스템은 환경으로부터 데이터를 수집한 후, 이를 원래의 표현에서 시스템이 더 쉽게 분석하고 처리할 수 있는 디지털 표현으로 변환하는 작업을 수행합니다. 또한, 시스템은 디지털 데이터를 아날로그 데이터로 변환하여 환경에 다시 전달하기도 합니다. 이 패턴은 빠르게 처리해야 하는 데이터를 여러 단계로 나눠 병렬 처리하는 시스템에서 자주 사용됩니다.

이름 프로세스 파이프라인 패턴
설명 Process Pipeline 패턴은 일련의 프로세스를 통해 데이터가 순차적으로 이동하는 방식으로 설정됩니다. 각 프로세스는 동기화된 버퍼에 의해 연결되며, 이를 통해 데이터 생산자(Producer)와 소비자(Consumer) 프로세스가 서로 다른 속도로 실행될 수 있도록 합니다. 이 파이프라인의 마지막 단계는 디스플레이, 데이터 저장 또는 액추에이터로 종료될 수 있습니다.
자극 환경이나 다른 프로세스로부터 입력되는 값
응답 환경으로의 출력 값 또는 공유 버퍼로의 출력
프로세스 데이터 생산자(Producer), 버퍼(Buffer), 데이터 소비자(Consumer)
사용 분야 데이터 수집 시스템, 멀티미디어 시스템

 

이러한 시스템에서 처리되는 데이터는 매우 빠르게 처리되어야 합니다. 그렇지 않으면 수신된 데이터가 손실되거나, 중요한 정보가 빠져나가면서 출력 신호가 끊길 수 있습니다. **프로세스 파이프라인 패턴(Process Pipeline pattern)**은 필요한 데이터 처리를 일련의 별도 변환 단계로 나누어 빠른 처리가 가능하게 만듭니다. 각 변환은 독립적인 프로세스에 의해 수행됩니다. 이 아키텍처는 다중 프로세서 또는 멀티코어 프로세서를 사용하는 시스템에 매우 효율적입니다. 파이프라인의 각 프로세스는 별도의 프로세서나 코어에 할당되어 병렬로 처리 단계를 수행할 수 있기 때문입니다.

그림 20.13 프로세스 파이프라인 패턴 구조

 

그림 20.13은 이 패턴의 프로세스 아키텍처를 보여줍니다. 각 프로세스는 데이터를 생성하거나 소비할 수 있으며, 이는 "동기화된 버퍼(synchronized buffers)"에 의해 연결됩니다. 이를 통해 생산자 프로세스와 소비자 프로세스가 다른 속도로 작동하더라도 데이터 손실 없이 운영할 수 있습니다.

 

프로세스 파이프라인을 사용할 수 있는 시스템의 예로는 고속 데이터 수집 시스템을 들 수 있습니다. 데이터 수집 시스템은 센서로부터 데이터를 수집하여 이를 후속 처리 및 분석을 위해 저장하는 시스템입니다. 이러한 시스템은 센서가 환경으로부터 많은 데이터를 수집하고, 이를 실시간으로 처리할 필요가 없거나 불가능한 상황에서 사용됩니다. 데이터를 수집하여 나중에 분석하는 것이 목적입니다. 데이터 수집 시스템은 종종 과학 실험이나 화학 반응과 같은 매우 빠른 물리적 프로세스를 모니터링하는 프로세스 제어 시스템에 사용됩니다. 이러한 시스템에서 센서는 매우 빠르게 데이터를 생성할 수 있으며, 데이터 수집 시스템은 센서 값이 변하기 전에 데이터를 수집해야 합니다.

그림 20.14 원자로 제어 소프트웨어 모델

 

그림 20.14원자로 제어 소프트웨어에 속할 수 있는 데이터 수집 시스템의 단순화된 모델을 보여줍니다. 이 시스템은 원자로에서 중성자 플럭스(neutron flux), 즉 중성자의 밀도를 모니터링하는 센서로부터 데이터를 수집합니다. 센서 데이터는 버퍼에 저장되며, 이후에 이를 추출하여 처리합니다. 평균 플럭스 수준은 작업자 화면에 표시되고, 이후 분석을 위해 저장됩니다.

728x90
반응형