I. 들어가며
전장 소프트웨어 시스템 개발에서 있어서, 신규 차종이라고 하더라도 기존의 제어 시스템 및 로직을 수정하거나, 많은 경우 Carry over 전략에 따라 시스템의 일부 엘리먼트(시스템 컴포넌트, 소프트웨어 컴포넌트, 하드웨어 컴포넌트 등)를 재 사용하는 경우가 많이 있습니다.
이러한 상황임에도, OEM 및 Customer의 요청에 의해 Automotive SPICEⓇ, ISO 26262, ISO/SAE 21434 등을 적용할 때 기존제품에 대한 영향도 분석 및 재사용에 대한 전략이 명확하지 않아, 많은 개발업체들이 신규 개발(Newly development)로 가정하고 관련 산출물에 대한 증거를 제시하려고 함으로써, 아래와 같은 어려움이 발생하고 있습니다.
- 개발 및 검증 범위 확대
- 불필요한 엔지니어링 활동 (기존에 했던 작업을 중복해야 하는 활동)의 증가
이러한 부분을 줄여 나가는 것은 개발의 효율성을 향상시키고, 개발 공수를 감소시킬 수 있기 때문에 이번 기사에는 영향도 분석에 따른 재사용 전략에 대해 살펴보고자 합니다.
단, 여기서 재사용 전략을 적용할 수 있는 기준은 적어도 Series production으로 이전에 적용된 엘리먼트들에 해당됩니다.
II. 영향도 분석(Impact Analysis) 정의
엔지니어링 분야에서는 기술의 발전 및 변화에 따라 “변경(Change)”이라는 부분은 필수적인 부분이며, 항상 일어날 수밖에 현상입니다. 영향도 분석은 1996년도 “Software maintenance”라는 저서에서 change impact analysis라는 용어로 알려지면서, 아래와 같이 크게 3가지 측면에서 정리하고 있습니다.
- Traceability impact analysis: 요구사항-설계-테스트 케이스 간의 일관성 및 추적성 확보 관점
- Dependency impact analysis: 개별 항목 간의 의존관계 (예, 요구사항 내의 기능의 의존성, 설계 항목 간의 의존성)의 분석을 통해 일관성 확보 관점
- Experimental impact analysis: 이전 경험 및 전문가적 판단에 의한 관점
이러한 관점의 활동을 통해, 변경으로 인해 발생할 수 있는 부가적인 영향을 없애거나 최소화하기 위해서는 반드시 영향도 분석이라는 활동이 수행되어야 합니다.
III. ISO 26262
기능안전에서는 영향도 분석은 신규 개발이 아닌 경우 아이템 레벨 및 엘리먼트(이하 구성요소) 레벨에서 영향도 분석을 요구하고 있습니다. 본 기사에는 차량의 아이템 레벨이 아닌, 시스템을 구성하는 엘리먼트(구성요소) 레벨에 대해 기술하며, 아래와 같이 분류할 수 있습니다.
먼저 아래 그림과 같이 시스템 레벨에서 개발하는 제품의 범위 내에서 “영향도 분석”을 통해 신규 개발, 수정 개발, 재 사용 개발되는 시스템 구성요소들을 도출합니다.
1) 신규 개발의 경우
ISO 26262의 영역(Part 4, Part5, Part6, Part7, Part8, Part9)에서 해당되는 영역을 적용하면 됩니다.
2) 수정 개발의 경우
공식적인 변경 절차(Change request management)를 통해 발생할 수 있는 다양한 영향을 분석하고, 관련 변경과 관련되는 기능안전 엔지니어링 활동을 수행하고, 변경 적합성 평가를 통해 개발을 종료합니다
3) 재 사용의 경우
만약 수정 없이 재사용하는 기존의 기능안전이 적용된 구성요소이면, 엔지니어링 결과물을 그대로 사용할 수 있습니다. 만약 이전에 기능안전을 적용하지 않고, 재 사용되는 ①소프트웨어 컴포넌트인 경우 Part 8의 12절 “Qualification of software component”를 적용하고, ②하드웨어 컴포넌트 인 경우 Part 8의 13절 “Evaluation of hardware elements”를 적용합니다. 마지막으로 ③Part 8의 14절의 “Proven in use argument”는 시스템 또는 시스템 구성요소, 하드웨어 컴포넌트 레벨에서 과거에 양산에 적용된 동일 제품에 대해, ASIL 등급에 따라 관찰 수량, 관찰 기간, 고장율 데이터 등을 활용한 통계적 분석을 통해 목표 값 만족할 때 적용이 가능합니다.
특히, 재사용하는 소프트웨어 컴포넌트에서 “Qualification of software component”를 적용하는 경우 아래와 같은 많은 이점을 가지고 있습니다.
- SW Component qualification을 꼭 외부의 인증업체 등을 활용하지 않고 자체로 가능함
- SW Component qualification을 수행한 담당자에게 명시된 자격을 요구하지 않음.
- 복잡하지 않은 방법으로 해당 활동의 수행이 가능함
자세한 내용은 Part 8의 12절에 기술되어 있지만 간단하게 요약을 하면, 아래와 같이 정리할 수 있습니다.
- 목표하는 ASIL 등급을 포함하여, 컴포넌트의 사양을 정의하고 명세합니다.
- 사양에서 정의한 모든 테스트 명세와 일관성 및 테스트 결과의 추적성을 확보해야 합니다.
- 정상 및 고장모드에서의 테스트결과가 이상이 없고, 문제가 없어야 합니다.
- ASIL 등급에 따른 Unit verification의 Structural coverage (ex. ASIL D: MC/DC) 만족해야 합니다.
- 이러한 활동은 Part 8의 9절 Verification 요구사항을 준수해야 합니다.
물론 상용 라이브러리 (예, commercial off-the-shelf (COTS) software)의 경우도 동일한 방법으로 적용이 가능하며, 만약, 해당 제품의 모듈화 및 구조화가 잘 되어 있다면, 재 사용 전략을 적극적으로 적용하고 개발 및 검증 활동을 하는 것이 더 효율적입니다.
그리고, 하드웨어 컴포넌트의 경우도 기존의 “PPAP 자료” 및 “하드웨어 엘리먼트 평가 결과”(인수 테스트 결과 포함)들을 지속적으로 데이터화 하여 재사용하는 것이 바람직합니다.
Ⅳ.Automotive SPICEⓇ
A-SPICE 모델을 적용하여 심사를 받는 경우에는, 이전에 개발된 소프트웨어 컴포넌트의 경우(단. 기존에 개발되어 적어도 한번 이상 양산에 적용된 컴포넌트) 재 사용 전략을 적용하면 개발의 효율성을 가져올 수 있습니다.
이러한 경우, 아래와 같은 전략이 필요합니다.
- 요구사항 관점에서는 적어도 해당 컴포넌트에 대한 요구사항(기능 및 비기능)을 포함하고 있어야 하며, 만약 요구사항의 확인이 불가능한 경우는 역 공학(Reverse engineering) 등을 통해 제품의 요구사항에 부합하는지 확인해야 합니다.
- 아키텍처 관점에서는 기존 소프트웨어 컴포넌트(예. 재사용 Legacy SW 및 COTS 등)을 Black box로 설계를 하더라도, 신규로 개발하는 소프트웨어 컴포넌트와의 인터페이스(예, 컴포넌트 레벨에서의 외부 인터페이스)는 식별되고 명세 되어야 합니다.
- 테스트 관점에서는 요구사항 검증을 위한 검증 기준이 수립되어야 하고, 해당 검증 기준에 따른 테스트 명세와 테스트 결과가 존재해야 합니다.
- 통합 관점에서는 아키텍처의 레벨에서 정의된 기존 소프트웨어 컴포넌트의 외부 인터페이스와의 정합성이 보장되고 검증된 결과가 있어야 합니다.
즉, 이전에 체계적인 프로세스에 따라 개발된 작업 산출물들이 존재한다면 재 사용을 하면 되지만, 만약 그러한 작업 산출물들이 존재하지 않는다면, 해당 컴포넌트들을 랙박스로 취급하여 위에서 기술한 전략을 적용하면 됩니다.
단 재사용 전략이 사용되는 경우 반드시 수정없이 사용되어야 하고, 만약 개발 과정에서 추가적인 수정이 필요한 경우, 공식적인 변경 절차를 통해 영향을 분석하고 해당 변경 후, 평가기준에 따라 검증을 해야 합니다.
그 외 A-SPICE REU.2 Reuse Program Management 프로세스를 통해 재 사용에 대한 요구사항을 기술하고 있지만, REU.2는 개별 제품에 적용하기 위한, 조직차원에서 해당되는 도메인별로 재사용 컴포넌트에 대한 사용 전략을 수립하고, 평가하는 프로세스를 요구하고 있습니다.
Ⅴ. Cybersecurity
사이버보안 해당 컴포넌트를 재 사용하는 경우는 ISO/SAE 21434 Phare 6의 6.4.4의 Reuse 요구사항에 따라, 영향도 분석(ISO/SAE 21434는 Reuse Analysis라는 용어로 사용하고 있음)을 통해 재 사용을 결정해야 합니다.
위 그림과 같이
1) 재사용의 경우
- 기존 컴포넌트가 새롭게 적용되는 환경에서, 사이버보안 요구사항 및 사이버보안 목표를 만족하는지 평가해야 합니다.
- 재사용하는 컴포넌트의 기존 설계 문서가 다른 컴포넌트와 통합을 위한 인터페이스를 충분히 보장하도록 기술되어야 있어야 함
2) 수정 사용의 경우
- 변경 관리 프로세스에 따른 수정 내용 및 운영환경에 대한 영향을 분석합니다.
- 사이버보안 주장(Claim) 및 사이버보안 달성을 위한 이전 가정사항에 대한 영향이 있는지 식별합니다
- 수정으로 인해 영향 받는 작업산출물(컴포넌트 포함) 및 누락된 작업산출물을 식별해야 합니다.
- 위의 분석 및 식별된 항목들을 개발하고, 사이버보안 요구사항을 만족하는지 평가해야 합니다.
지금까지 위 내용들은 차량 전장 소프트웨어 시스템에서 많이 요구되는 프로세스 모델 및 요구사항을 기준으로 영향도 분석 및 재사용에 대한 전략을 기술하였습니다.
VI. 결론적으로
현업에서 재 사용 및 수정 개발이 많이 발생하고 있음에도 불구하고, 신규개발로 가정하고 개발하는 사례들이 많은 것이 사실입니다. 하지만 이러한 영향도 분석과 재사용 전략을 잘 수립하여 적용하면, 개발 범위를 확대하지 않고 중복되는 개발활동 및 추가적인 비용(공수)을 줄일 수 있을 것으로 판단됩니다. 물론 이러한 방법을 확대하기 위해서는 개발 제품에 대한 모듈화 및 재 사용이 가능한 구조화된 아키텍처를 설계하는 것이 전제가 되어야 합니다.
[Reference]
- ISO/IEC/IEE 24765(2017) Systems and software engineering — Vocabulary
- S. Arnold; S.A. Bohner (1993), Impact analysis-Towards a framework for comparison
- Automotive SPICE® Process Reference Model & Process Assessment Model Version 3.1
- Automotive SPICE® Guidelines 1st edition, September 2017
- ISO 26262(Second edition), Road Vehicle-Functional Safety-Part 6: Product development at the software level
- ISO 26262(Second edition), Road Vehicle-Functional Safety-Part 8: Supporting processes.
- ISO/SAE 21434 Road vehicles — Cybersecurity engineering (2021-08)