무기체계와 컴퓨터/컴퓨터와 무기체계 소프트웨어

무기체계 소프트웨어 신뢰성 시험평가

xdots 2023. 9. 29. 16:26

1. 무기체계 SW 신뢰성 시험

무기체계 소프트웨어는 신뢰성 시험이라는 이름으로 소프트웨어 테스팅이 이루어 지고 있다. 적용 대상은 무기체계 연구개발, 핵심기술, 부품국산화 등으로 대상언어는 C, C++만을 대상으로 한다. 정적시험과 동적험으로 구분하여 진행되고, 정적시험은 코딩규칙, 취약점 점검, 코드 메트릭을 시험하고, 동적시험은 커버리지와 국제표준 준수가 있다.

  • 정적시험 기준

무기체계 소프트웨어 정적 시험 기준

1. 무기체계 소프트웨어 코딩 규칙 준수무기체계 소프트웨어 신뢰성 시험평가 무기체계 소프트웨어 신뢰성 시험평가1. 무기체계 SW 신뢰성 시험 무기체계 소프트웨어는 신뢰성 시험이라는 이름

dase.tistory.com

무기체계소프트웨어 신뢰성 시험

과거에 제정되어 유지되고 있어 시험 방법과 메트릭에 대한 연구가 필요해 보인다. 예를 들면 CC인정인 순환 복잡도의 경우 기억으로는 2005년 소프트웨어 신뢰성 표준 개선 때 빠진 메트릭 이거나, 요즘 AI(machine learning)를 위한 python 언어로 만들어진 소프트웨어에 대한 테스팅 방법은 고려가 필요해 보인다.

2. 코드 실행률

  • (코드 실행률, Code Coverage) 동적 시험 수준을 결정하는 기준으로서 전체 소프트웨어 소스 코드에서 시험된 코드를 백분률(%)로 나타낸 것
  • (문장 실행률, Statement Coverage) 코드 실행률의 가장 기본적인 수준에 해당되는 것으로 시험대상 소프트웨어 소스 코드내의 문장 중 동적 시험간 적어도 한 번 이상 시험된 문장의 비율(%)
  • (분기 실행률, Branch Coverage) 시험대상 소프트웨어 소스 코드내의 분기문 중 동적 시험간 참(True), 거짓(False)이 적어도 한 번 이상 시험된 비율(%)
  • (MC/DC, Modified Condition/Decision Coverage) 가장 높은 수준의 코드 실행률로써 시험대상 소프트웨어 소스 코드내 분기문에 있는 모든 조건식 중 개별 조건식의 독립적인 변화가 분기문의 참, 거짓에 영향을 미치는 모든 조합에 대해 동적 시험간 적어도 한 번 이상 시험된 비율(%)을 의미, 통상은 Path Coverage라고 한다.

3. 경로 테스팅

  • Tom McCabe에 의해 개발된 기법으로 프로그램의 제어구조(Control Structure)를 플로우 그래프(Flow Graph)로 표현하고, 순환복잡도(Cyclomatic Complexity)를 통해 독립적인 경로의 수를 찾아 테스트 케이스를 추출하는 기법
  • 2테스트 케이스 추출 단계
    1. 테스팅 할 대상의 플로우 그래프를 그린다.
    2. 순환복잡도를 계산한다.
    3. 독립적인 경로들을 정의한다.
    4. 정의된 각 경로의 테스트 케이스를 작성한다.

4. 순환복잡도(Cyclomatic Complexity) 계산

    CC = R+1,   CC = E - N + 2 ,   CC = P + 1  

  • CC(Cyclomatic Complexity): 순환복잡도
  • R(Region): 노드와 가장자리 노드로 둘러싸인 영역과 그래프 밖 영역의 수
  • E(Edge): 화살표의 수
  • N(Node): 노드의 수
  • P(Predicate): 분기 노드의 수

5. Software Coding Guide

1. Coding Rules/Standards (Correcting programmers’ misunderstands and mistakes)

  • Guidelines for the use of the C language in critical systems - MISRA
  • CERT C Secure Coding Standard - SEI
  • Code Complete 2nd Edition – Steve McConnell
  • ISO/IEC 9899:1999 – C languageü

2. Coding Styles / Conventions (Improving code readability & maintenance)

  • Coding Conventions for the Java Programming Language – Oracle(Sun)
  • Google C++ Style Guide - google
  • .NET Coding Style Guidelines - Brad Abrams
  • Apache Developer’s C Language Style Guide - apache
  • SW 개발보안 지침 (KISA)

3. Software Coding Rule Guide(SCR-G)

  • 적용 대상 : 방위력개선사업으로 개발되는 소프트웨어
  • 적용 언어 : C, C++, C#, JAVA
  • 코딩 규칙: MISRA-C(2012), MISRA-C++(2008), JSF++(Joint Strike Fighter Air Vehicle C++), Code conventions for the Java Programming Language(Oracle), C# Coding conventions (Microsoft)

'무기체계와 컴퓨터 > 컴퓨터와 무기체계 소프트웨어' 카테고리의 다른 글

무기체계 소프트웨어  (0) 2023.10.17
멀웨어 Malware  (0) 2023.10.03
슈퍼컴퓨터 고성능컴퓨터 HPC  (0) 2023.09.28
BIOS와 UEFI  (0) 2023.09.28
소프트웨어 업데이트 OTA  (0) 2023.09.27