소프트웨어 신뢰성/보안성 시험 절차(1)

2023. 10. 16. 16:47무기 체계 소프트웨어/Validation

1. 적용 사업

  • 무기체계 연구개발사업
  • 핵심기술(시험개발), 핵심SW(시험개발)
  • 신개념기술시범사업(ACTD)
  • 부품국산화(핵심부품)

2. 적용 대상 언어

  • C
  • C++
  • Java
  • C#

3. 적용 대상 소프트웨어

>> 기개발, 상용 소프트웨어는 수정을 한 경우는 해당 함수에 대하여 신뢰성시험을 수행

 

4. 방침

  • 소프트웨어 신뢰성 시험은 정적시험(코딩규칙 검증, 취약점 점검, 소스코드 메트릭 점검)과 동적시험(코드실행률 점검)으로 구분하여 수행한다.
  • 소프트웨어 신뢰성 및 보안성 시험은 소프트웨어 형상항목(CSCI : Computer Software Configuration Item) 단위로 실시하는 것을 원칙으로 한다.
  • 시험도구는 매뉴얼의 소프트웨어 신뢰성/보안성 시험 기준을 지원하는 도구인지 확인하되, 확인 제한 시에는 소프트웨어 검토회의(소프트웨어 신뢰성 시험계획)를 통해 결정한다.
  • 하드웨어의 제한 사항으로 인하여 실제 하드웨어(Target)에서 동적시험이 불가한 경우에는 개발주관기관은 객관적으로 타당한 사유를 제시하고 사업관리회의에서 동적시험방안을 결정하여 적용한다.

- 시험 결과를 소프트웨어통합시험결과서 (STR)에 반영한다.

 

5.용어 설명

- 소프트웨어 신뢰성 보안성 시험과 관련된 용어에 대한 설명은 다음과 같다

  • "소프트웨어 신뢰성 시험"이란 소프트웨어가 동작할 수 있는 다양한 경우의 수를 확인함으로써 소프트웨어가 일으킬 수 있는 결함을 식별하는 시험을 말하며 정적시험 및 동적시험으로 구분한다.
  • "소프트웨어 신뢰성 시험 및 보안성 시험 확인"이란 소프트웨어의 정적, 동적 신뢰성 시험과 전장관리정보체계 소프트웨어의 보안 취약점 제거를 위한 보안성 시험이 기술적인 정확성과 적절성을 가지고 정해진 요구사항을 충족하는 지를 결정하기 위해 검증을 통해 수집된 자료와 사실에 대해 검토 및 확인하는 과정을 말한다.
  • "소프트웨어 정적(Static) 시험"이란 소프트웨어를 실행하지 않은 상태에서 잠재적인 결함을 검출하는 시험을 말하며, 코딩 규칙(Coding Rule) 검증 시험, 취약점 점검 시험소스코드 메트릭(Code Metrics) 점검을 의미한다.
  • "소프트웨어 동적(Dynamic) 시험"이란 소프트웨어를 실제 하드웨어(Target)에 탑재한 상태에서 소프트웨어통합시험절차서에 기술된 시험절차에 따라 요구사항기반으로 소프트웨어 코드 실행률(Coverage)을 점검하는 것을 말한다.
  • "소프트웨어 보안성 시험"이란 해킹 등 사이버공격의 원인인 보안약점을 개발단계에서 사전에 제거하기 위해 행자부 [소프트웨어 개발보안 가이드]를 적용하여 개발하였는지 확인하는 시험을 말하며 전장관리정보체계를 대상으로 수행한다.
  • "소프트웨어 신뢰성 및 보안성 시험도구(Testing Tool)"란 소프트웨어 신뢰성 및 보안성 시험을 수행하기 위해 사용되는 자동화 도구를 말하며, 시험도구는 관련표준에서 인증된 제품을 사용하여야 한다. -> <LDBA, DT+, SPARROW>
  • "코딩 규칙"이란 소프트웨어 구현에 적용하는 소스 코드 작성 규칙으로서 "무기체계 소프트웨어 코딩 규칙"을 따른다.
  • "취약점 점검"이란 소프트웨어 소스 코드가 CWE(Common Weakness Enumeration)목록에 정의된 취약점을 포함하고 있는지 점검하는 활동을 말한다.
    <CWE 658 - C/ CWE 659 - C++/ CWE 660 - Java>
  • "소스코드 메트릭"이란 소프트웨어의 복잡도 감소, 유지보수 용이성 증대 등 소프트웨어 품질 향상을 위한 소스코드의 품질 측정지표를 말한다.
  • "거짓경보(False Alarm)"란 시험도구를 이용하여 결함 검출한 내용이 실제 오류가 아닌 결함을 오류로 검출하는 것을 말하며, 시험도구는 결함으로 탐지하였지만 기능 구현을 위해서 반드시 사용해야 하는 것은 거짓경보에 포함할 수 있다.
  • "코드 실행률(Code Coverage)"이란 동적 시험 수준을 결정하는 기준으로서 전체 소프트웨어 소스 코드에서 시험된 코드를 백분율(%)로 나타낸 것이며, 시험 수준에 따라 문장(Statement) 실행률, 분기(Branch) 실행률, MC/DC(Modified Condition/Decision)로 구분된다.

       A.  "문장(Statement) 실행률"이란 코드 실행률의 가장 기본적인 수준에 해당 되는 것으로 시험대상 소프트웨어 소스 코드내의 문장 중 동적 시험간 적어도 한 번 이상 시험된 문장의 비율(%)을 의미한다.

       B. "분기(Branch) 실행률"이란 시험대상 소프트웨어 소스 코드내의 분기문 중 동적 시험간 참(True), 거짓(False)이 적어도 한 번 이상 시험된 비율(%)을 의미한다.

       C.  "MC/DC(Modified Condition/Decision Coverage)"이란 가장 높은 수준의 코드 실행률로써 시험대상 소프트웨어 소스 코드 내 분기문에 있는 모든 조건식 중 개별 조건식의 독립적인 변화가 분기문의 참, 거짓에 영향을 미치는 모든 조합에 대해 동적 시험간 적어도 한 번 이상 시험된 비율(%)을 의미한다.