MISRA 준수를 달성하려면 정확한 절차와 적절한 도구를 일관되게 사용하는 것이 필수적입니다. 프로세스 및 도구 체크리스트는 이러한 과정에서 발생할 수 있는 누락을 방지하고, 각 단계가 올바르게 진행되고 있는지를 평가하는 데 중요한 역할을 합니다.
프로그램 언어 사용에 대한 교육 (Staff have been trained in the use of the programming language with embedded system)
임베디드 시스템에 특화된 프로그래밍 언어(C/C++)에 대한 충분한 교육을 통해, 개발자가 MISRA 규칙을 이해하고 적용할 수 있도록 합니다. 특히 임베디드 환경에서 발생하는 하드웨어 제약에 대한 이해가 필요합니다. (관련섹션: 2.3 Training, 7.1 Staff Competence)
MISRA 규칙에 대한 교육 (Staff have been trained in the use of the guidelines)
MISRA 규칙에 대한 심층적인 교육을 통해, 개발자들이 각 규칙의 목적과 필요성을 이해하게 합니다. 규칙 준수의 중요성과 규칙 위반 시 발생할 수 있는 위험성을 정확히 인지할 수 있도록 교육해야 합니다. (관련 섹션: 7.1 Staff Competence)
스타일 가이드 준수 절차 (These is a process for enforcing a style guide)
코드 스타일 가이드를 정의하고, 개발자들이 일관된 방식으로 코드를 작성할 수 있도록 스타일 가이드를 준수하는 절차를 마련합니다. 특히 가독성 향상 및 유지보수를 쉽게 하기 위해 코드의 일관성을 유지하는 것이 중요합니다. (관련 섹션: 2.4 The Style Guide)
코드 메트릭스 준수 절차 (These is a process for enforcing code metrics)
코드 복잡성, 크기 등 소프트웨어 품질 메트릭스를 관리하는 절차를 설정합니다. 메트릭스를 통해 복잡도를 관리하고, 코드의 유지보수성을 높이는 것이 목표입니다. (관련 섹션: 2.5 Metrics)
컴파일러 결함 처리 절차 (There is a process for dealing with deficiencies in the compiler's implementation)
컴파일러의 결함이나 한계를 처리하는 절차를 마련하여, 발생할 수 있는 오류를 미리 방지합니다. 컴파일러의 오류로 인해 발생하는 문제를 빠르게 수정하고 대처하는 것이 중요합니다. (관련 섹션: 2.6.3 Tool Validation)
정적 분석 도구 결함 처리 절차 (There is a process for dealing with deficiencies in the analysis tool's implementation)
정적 분석 도구에서 발생하는 오류나 경고를 처리하는 절차를 정의합니다. 정적 분석 도구가 잘못된 경고나 오류를 발생시킬 수 있으므로, 이를 정확하게 판별하는 과정이 필요합니다. (관련 섹션: 2.6.3 Tool Validation)
사용할 프로그래밍 언어 버전 선택 (A choice has been made between possible versions of the programming language)
프로젝트에서 사용할 프로그래밍 언어(C/C++)의 버전을 선택하고, 이를 기준으로 개발을 진행합니다. 프로젝트에 맞는 적절한 언어 버전을 선택하고, 이에 맞춘 도구 설정이 필요합니다. (관련 섹션: 2.6.4 Understanding and Configuring the Compiler)
컴파일러 설정 (The translator has been configured to accept the correct version of the programming language)
컴파일러가 프로젝트에서 사용하는 프로그래밍 언어 버전에 맞게 설정되었는지 확인합니다. 잘못된 컴파일러 설정은 규칙 위반으로 이어질 수 있으므로, 올바른 설정이 중요합니다. (관련 섹션: 2.6.4 Understanding and Configuring the Compiler)
진단 정보 생성 (The translator has been configured to generate an appropriate level of diagnostic information)
컴파일러가 경고 및 오류 메시지를 생성하여, 코드의 문제를 쉽게 발견할 수 있도록 설정합니다. 충분한 진단 정보를 통해 규칙 위반 가능성을 사전에 감지하는 것이 중요합니다. (관련 섹션: 2.6.4 Understanding and Configuring the Compiler)
타겟 머신 설정 (The translator has been configured appropriately for the target machine)
소프트웨어가 실행될 타겟 시스템에 맞춰 컴파일러가 적절히 설정되었는지 확인합니다. 각 타겟 시스템의 하드웨어 특성에 맞춘 설정이 필수적입니다. (관련 섹션: 2.6.4 Understanding and Configuring the Compiler)
최적화 수준 설정 (The translator’s optimization level has been configured appropriately)
컴파일러의 최적화 설정을 적절히 선택하여, 성능과 안전성 간의 균형을 유지합니다. 과도한 최적화는 예기치 않은 동작을 초래할 수 있으며, 적절한 수준을 유지하는 것이 중요합니다. (관련 섹션: 2.6.4 Understanding and Configuring the Compiler)
정적 분석 도구 설정 (The analysis tools have been configured to accept the correct version of the programming language)
정적 분석 도구가 프로젝트에서 사용하는 언어 버전을 제대로 지원하고 있는지 확인합니다. 올바르게 설정된 정적 분석 도구는 규칙 위반 여부를 정확히 검사할 수 있습니다. (관련 섹션: 2.6.5 Understanding and Configuring the Static Analysis Tool)
언어 확장 처리 (The analysis process can deal with any language extensions that have been used)
언어 확장을 사용하는 경우, 정적 분석 도구가 이를 올바르게 처리하도록 설정합니다. 임베디드 시스템에서는 언어 확장이 많이 사용되므로, 이를 정확히 처리할 수 있는 도구 설정이 필요합니다. (관련 섹션: 2.6.5 Understanding and Configuring the Static Analysis Tool)
분석 도구의 구현에 맞게 설정 (The analysis tools have been configured for the implementation, for example to be aware of the sizes of the integer types)
프로젝트의 구현 특성에 맞춰 분석 도구를 설정하여, 분석 결과가 정확하도록 보장합니다. 도구 설정이 잘못되면 규칙 준수 여부를 정확히 확인할 수 없으므로, 프로젝트 요구사항에 맞춘 설정이 필수적입니다. (관련 섹션: 2.6.5 Understanding and Configuring the Static Analysis Tool)
충분한 자원 확보 (There is a process for ensuring that the program has sufficient resources, such as processing time and stack space)
프로그램이 실행될 환경에서 충분한 메모리와 처리 자원을 확보하여, 안정적인 실행이 가능하도록 합니다. 시스템 자원이 부족하면 프로그램이 비정상적으로 동작할 수 있습니다. (관련 섹션: 2.6.6 Run-time Behaviour)
런타임 오류 방지 및 검증 (There is a process for demonstrating and recording the absence of run-time errors, for example in module designs)
프로그램 실행 중 발생할 수 있는 런타임 오류(메모리 초과, 오버플로우 등)를 사전에 방지하고, 이를 기록하여 관리합니다. 런타임 오류는 시스템 안전성을 크게 위협하므로, 사전 검증 및 테스트가 필수적입니다. (관련 섹션: 2.6.6 Run-time Behaviour)
Guideline Enforcement Plan 작성 (There is a GEP showing how compliance with each guideline is to be checked)
MISRA 규칙 준수를 보장하기 위한 "Guideline Enforcement Plan(GEP)"을 작성하고, 각 규칙이 어떻게 준수될 지 명확히 정의합니다. 각 규칙에 대해 어떤 도구가 사용될지, 어떻게 검증될지를 명확히 정의해야 합니다. (관련 섹션: 3.3 The Guideline Enforcement Plan)
컴파일러 메시지 분석 및 해결 절차 (There is a process for investigating and resolving any diagnostic messages produced by the translator)
컴파일러가 생성한 경고나 오류 메시지를 분석하고 해결하는 절차를 마련합니다. 경고 메시지를 무시하지 않고, 모든 문제를 정확히 분석하고 해결하는 것이 중요합니다. (관련 섹션: 3.4 Investigating Messages)
정적 분석 도구 메시지 분석 및 해결 절차 (There is a process for investigating and resolving any diagnostic messages produced by the analysis tools)
정적 분석 도구에서 발생한 메시지를 분석하고, 규칙 준수 여부를 평가합니다. 불필요한 경고를 무시하거나, 실제로 중요한 문제를 놓치지 않도록 주의해야 합니다. (관련 섹션: 3.4 Investigating Messages)
결정 불가능성 관리 (There is a process to manage undecidability issues)
MISRA 규칙 중 일부는 결정 불가능할 수 있으므로, 수동 검토나 추가적인 검토 절차가 필요합니다. 결정 불가능한 규칙을 처리하는 방법을 정의하고, 신중하게 검토해야 합니다. (관련 섹션: 3.5 Decidability)
Deviation 기록 및 승인 절차 (There is a deviation process for recording and approving deviations)
규칙을 준수하지 못하는 상황에서, deviation을 기록하고 승인하는 절차를 정의합니다. Deviation 발생 시 이를 정당화하고, 소프트웨어의 안전성에 미치는 영향을 평가해야 합니다. (관련 섹션: 4.2 Deviation Records, 4.3 Deviation Permits)
Guideline Re-categorization Plan 작성 (There is a GRP showing how each guideline is to be enforced)
프로젝트 특성에 맞게 규칙을 재분류하여, 중요한 규칙을 더 엄격하게 적용하거나, 덜 중요한 규칙을 완화할 수 있습니다. 프로젝트 특성에 맞춰 규칙의 중요성을 조정하고, 이를 문서화해야 합니다. (관련 섹션: 5.1 Re-categorization)
Guideline Compliance Summary 작성 (There is a GCS showing the level of compliance which is being claimed)
프로젝트가 완료된 후 각 규칙에 대한 최종 준수 상태를 기록한 "지침 준수 요약(GCS)"을 작성합니다. 규칙 준수, 편차 발생 여부, 미적용 규칙 등을 명확히 기록해야 합니다. (관련 섹션: 7.3 The Guideline Compliance Summary)
마치며...
MISRA 준수를 위한 프로세스 및 도구 체크리스트는 소프트웨어 개발 과정에서 규칙 준수를 보장하기 위한 필수적인 절차를 정의합니다. 각 항목은 MISRA 규칙 준수를 효과적으로 관리하고 추적하는 데 중요한 역할을 하며, 이를 통해 소프트웨어의 안전성과 신뢰성을 확보할 수 있습니다. 이 체크리스트를 통해 각 항목을 철저히 관리하고, 모든 단계에서 발생할 수 있는 오류나 누락을 방지하는 것이 중요합니다.
'Software Engineering > MISRA-C' 카테고리의 다른 글
MISRA C:2020 Compliance - 편차 기록(Deviation Record)의 목적과 필요성 (0) | 2024.08.25 |
---|---|
MISRA Compliance 2020: 어떻게 MISRA를 준수할 수 있을까? (MISRA 준수 방법) (0) | 2024.08.25 |
MISRA-C:2023 개요 (소프트웨어 코딩룰 준수) (0) | 2024.08.24 |