Proven by Intelligence
보이지 않는 안전을 인텔리전스로 증명하다.
기술 인사이트를 만나보세요.
안녕하세요. 🤗
임베디드 소프트웨어 검증 센터를 운영하고 있는 MDS인텔리전스 입니다.
혹시~? 앞의 이어지는 글을 확인하셨나요? 아래 컨텐츠를 확인해 보시고 오시면 이해가 쏙쏙! 👍
🔎 연재글 [SW검증센터] 무기체계 SW 획득을 위한 정적 시험(1)
방위사업청이 고시한 ‘무기체계 소프트웨어 개발 및 관리 매뉴얼(2022.12.22)’은 방위력 개선 사업으로 획득되는 소프트웨어의 체계적인 개발 및 관리를 위한 프로세스와 산출물 작성 표준 등을 규정하기 위한 목적을 가지고 있습니다.
이번 포스팅에서는 무기체계 소프트웨어 획득을 위하여 수행하는 소프트웨어 신뢰성 시험 활동의 “소프트웨어 정적(Static) 시험 - 코딩규칙 검증” 에 대해서 이야기해 보겠습니다.

코딩규칙 검증이란?

코딩 규칙이란 소프트웨어의 품질 및 신뢰성 향상을 위하여 프로그램 코딩 시 준수해야 할 규칙으로 코딩 규칙 검증은 구현된 프로그램이 이러한 규칙을 준수하여 코딩 되었는지 검증하는 활동이다.
사업(체계)의 특성에 가장 적합한 코딩 규칙 표준 준수를 원칙으로 하며, 조정이 필요한 항목은 사유를 제시하여 사업 관리회의를 통하여 확정합니다.
방위력 개선 사업으로 개발되는 소프트웨어를 대상으로 하며, 적용하는 언어는 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, .NET Framework Design Guideline(Microsoft) 가 있습니다.
단, 부품 국산화 등 표준 적용이 제한되는 사업의 경우는 ‘무기체계 소프트웨어 코딩규칙’의 제3장에 정의된 프로그램 작성 규칙을 적용할 수 있습니다.
무기체계 소프트웨어 획들을 위해서 연구개발 주관기관은 코딩규칙 적용 계획 수립, 코딩규칙을 준수하여 프로그램 작성, 코딩규칙 위반사항 점검 및 조치를 진행해야 합니다.
또한 프로그램 작성 시 다음과 같은 주석 및 명명 규칙을 제시하고 있어 구현 전에 잘 정립하여 작성해야 합니다.
1. 주석 규칙 (Comment Rule)
가. C 프로그램의 경우 “ /* ~ */ “, C++ 프로그램의 경우 “ /* ~ */ “ 또는 “ // ~ “를 사용한다. ( C 프로그램의 경우 컴파일러가 “ //~ “를 지원하면 사용할 수 있다. )
나. 주석 내에는 작성자, 날짜, 수정 이력, 기능 설명, 설계문서와 연계되는 정보 등의 필수 항목은 반드시 포함한다.
다. 주석 내에는 Nested Comment를 삽입해서는 안 된다.
라. 기타 주석 작성은 개발자 특성에 맞는 규칙을 사용하되 조직 차원에서의 통일된 지침을 수립하여 적용한다.
마. 소스코드 내 해당 내용을 자세하고 정확하게 설명할 수 있는 주석을 작성하고, 작성된 주석은 파일별 소스코드의 30% 이상으로 한다.
※ 계산 방법 : 주석문의 수 / 실행 문의 수
2. 명명 규칙 (Naming Rule)
가. 파일명
1) 함수/클래스일 경우, 파일명을 일치시키고 복수일 경우 파일명은 기능을 잘 설명해 줄 수 있는 명칭으로 한다.
2) 파일의 첫 글자는 대문자 또는 소문자로 통일하여 표기한다.
3) 파일을 잘 설명할 수 있는 이름으로 파일명을 작성한다.
나. 함수/클래스/메소드명
1) 기능을 잘 표현할 수 있는 명칭을 사용한다.
2) 함수 생성 시 “동사 + (명사)” 순으로 한다.
3) 클래스 생성 시 “ClassName” 형태로 조합하되 첫 단어의 글자는 대문자로 생성한다.
4) 클래스, 함수, 메소 지명을 작성할 경우, 실제 기능을 유추할 수 있는 단어를 조합하여 작성한다.
다. 변수명
1) Scope, Linkage를 구분할 수 있어야 하며, 각각 Internal, External을 구분하여 작성한다.
예) “Pointer 변수는 p, Global 변수는 g, Static 변수는 s, Count 변수는 n”으로 표기
2) 변수 명의 첫 글자는 반드시 문자를 사용하고 31자를 넘기지 않는다.
3) 변수명은 헝가리어, 카멜, 파스칼 표기법 또는 조직 내부 작성지침에 따라 사용한다.
라. 매크로 명
1) 매크로명은 전체를 대문자 또는 “_”를 사용한다.
2) 파일, 매크로명은 표준에 있는 예약어를 사용하지 않는다.
예)_변수명, scanf, printf 등
위와 같은 프로그램 작성 스타일에 대한 기본 규칙을 두고 각 언어별 알맞은 코딩규칙을 적용 및 준수하여 작성합니다.
그리고 자동화 분석 도구를 이용하여 각 사업(체계)에 알맞은 코딩규칙을 준수하였는지 확인하는 작업이 코딩규칙 검증입니다.
또한 사업 관리 회의를 통하여 사업(체계)에 특성에 따라 조정이 필요한 코딩규칙 항목은 사유를 제시하여 조정하도록 확정할 수 있습니다.
출처 : 방위사업청

MDS인텔리전스 SW검증센터는
이렇게 확정된 코딩규칙에 대한 테일러링(Tailoring) 된 룰에 맞게 를 셋을 제공하며, 거짓 경보(False Alarm)에 대하여 정탐/오탐에 대한 근거자료를 제공해 드리고 있습니다. 또한 관련 표준에 인증된 자동화 도구(Helix QAC, Codesonar)를 제공하고 있으니 많은 문의 바랍니다.
더 구체적인 검증 서비스에 대해서 궁금하시거나,
기타 문의사항은 sve@mdsit.co.kr로 문의 메일 부탁드립니다.

MDS 인텔리전스
임베디드 소프트웨어 고품질 및 신뢰성 확보를 위한, SW 검증센터
E. sve@mdsit.co.kr
