미항공우주국이 밝힌 필수안전 코드 개발을 위한 열 가지 원칙

by SW공학센터 posted Mar 17, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

미항공우주국이 밝힌 필수안전 코드 개발을 위한 열 가지 원칙


NASA는 지난 수십 년 간 우주탐사를 위한 매우 중대한(mission-critical) SW개발 프로젝트를 수행해 왔는데, 그 간의 개발경험을 기반으로 2015년 1월 신뢰성 있는 소프트웨어 확보를 위한 코드가이드라인을 발표함. 이 가이드라인에서는 코드 품질을 유지하기 위한 엄격한 코딩 규칙과 소프트웨어품질의 균일화 및 인적 오류 최소화를 위한 C 코드 작성규칙을 설명하고 있음. 본 원고에서는 이 코드가이드라인이 명시하는 10가지 원칙과 그 근거를 간략히 제시함.


▶ 서론


2015년 1월, NASA는 신뢰성 있는 소프트웨어 확보를 위한 코드 가이드라인 <The Power of Ten?Rules for Developing Safety Critical Code>을 발표함(NASA/JPN연구소)


▶ 신뢰성 있는 소프트웨어 확보를 위한 10가지 원칙


원칙 1 : 모든 코드가 아주 단순한 제어 흐름(control flow) 구조를 갖도록 제한해야 함. 
원칙 2 : 모든 루프는 한정된 횟수(고정된 상한, fixed upper bound) 이내로 실행되어야 함. 
원칙 3 : 초기화 이후 함수 중간에 동적 메모리 할당(dynamic memory allocation)을 사용하지 말 것. 
원칙 4 : 모든 함수의 길이는 하나의 구문과 하나의 선언(정의)가 각각 한 줄로 표현되는 표준 레퍼런스 형식으로 작성.

원칙 5 : 함수 당 최소 두 개 이상의 assertion 구문이 있어야 함. 
원칙 6 : 데이터 객체는 반드시 가장 작은 수준의 범위(scope)에서 선언되어야 함. 
원칙 7 : 무효가 아닌(non-void) 함수의 반환 값은 각각의 호출 함수에 의해 체크되어야 함.

원칙 8 : 프리프로세서의 사용은 헤더 파일의 추가와 단순한 매크로 정의에만 국한되어야 함.

원칙 9 : 포인터의 사용은 최대한 제한되어야만 함.

원칙 10 : 반드시 모든 코드를, 개발 첫날부터, 컴파일러의 모든 경고 기능을 허용한 가장 민감한 상태에서 컴파일해야 하며, 모든 코드는 이러한 세팅에 기반 해 경고 없이 컴파일되어야만 함.


자세한 내용은 첨부파일 참고하세요.요기

=출처: NIPA 소프트웨어공학센터=