모델을 기반으로 코드가 자동으로 만들어지는 (Auto-generation Code) 개발 방식
- 전통적인 C/C++과 같은 언어로 프로그램을 짜는 방법과 다름.
- 각 기능에 맞는 모델을 선택하여, 설계하고, 시뮬레이션을 통해 결과를 확인하면서, 예상과 다른 결과라면 모델을 다시 그려서 결과를 확인하는 과정을 반복 => 모든 과정은 PC에서 이루어지며, 실제 시스템에 연결하기전 예상 가능한 오류를 발견하고 수정하는 것이 매우 빠르게 진행된다!
- 시스템 개발의 모든 단계에서 시험과 검증을 연속적으로 수행하여 중복 구현 비용을 절감할 수 있음.
- 모델링과 시뮬레이션 단계에서 시스템 알고리즘에 대한 시험을 수행 가능함.
- 이미 설계된 기능 모델을 활용 할 수 있음.
- 구현(Implemenatation) 단계에 필요한 비용을 줄일 수 있음.
graph TD
A[시스템 요구사항] --> B[모델 설계]
B --> C[MIL 검증]
C -->|요구사항 추적| D[구조적 커버리지]
D --> E{SIL/PIL 검증<br/>MC/DC ≥95%?}
E -->|Yes| F[HIL 통합]
E -->|No| B
F --> G[배포]
G -->|결함 분석| H[요구사항 개정]
H --> A
style D fill:#f0f0f0,stroke-dasharray: 5 5
style E stroke:#ff0000,stroke-width:2px
- 자동차의 ECU 개발을 중심으로 모델 기반 설계라는 개념이 제창되었고, 많은 제어기가 MBD 기반의 SW 개발로 확장되고 있음.
- 자동차 기능 안전 국제 표준인 ISO26262의 Part 6 "소프트웨어 수준에서 제품 개발"은 MBD 분야의 검증을 언급하고 있음. 반면 MBD의 동적 검증은 코드나 모델 구분 없이 단위/통합 단계에서 요구사항 기반 인터페이스 검증을 수행하도록 권고하고 있음.
- MISRA, MAAB, dSPACE 등의 모델링 가이드라인(규칙)을 기준으로 가이드라인에 위배되는 항목을 검출하는 것
- 정적 검증은 모델의 가독성 및 유지 보수성을 향상시킴과 동시에 가이드라인을 적용하여 잠재된 결함을 발견함으로써 소프트웨어의 품질을 높이는 작업
- MBD 방식으로 개발된 모델에 대해서도 단위/통합 검증을 수행함. 수행 절차는 테스트 준비, 테스트 실행, 결과 확인의 절차를 통해 이루어지며 준비된 시험 자료를 모델에 입력하고 원하는 출력이 나오는지 확인함.
- 모형화 단계에서 모델의 동작을 확인함으로써 SW 수행 중 발생 가능한 오류를 미리 감지할 수 있다는 장점이 있음.
단계 | 검증 대상 | 환경 | 도구 |
---|---|---|---|
MIL | 순수 알고리즘 | PC 시뮬레이션 | Simulink |
SIL | 생성 코드 기능 | PC 네이티브 실행 | SIL Manager |
PIL | 프로세서 최적화 코드 | 타겟 MCU | Embedded Coder |
HIL | 전체 시스템 통합 | 실시간 시뮬레이터 | Speedgoat/NI PXI |