항공우주 분야 SW 코드 작성 10 계명 – Feat. NASA

간혹 항공우주 관련 SW 개발자로 일을 시작하는 개발자로부터 ‘SW 개발할때 미리 알아야 하는 내용이 있나요?’ 와 같은 질문을 자주 듣습니다.
다른 분야에 비해서 항공우주는 높은 수준의 SW 품질을 요구합니다. 작은 실수 하나 때문에 엄청나게 큰 재산상 피해와 개발 지연이 될 수 있기 때문입니다.
체계가 잘 갖춰진 SW 기업들은 내부적으로 사용하는 ‘코딩 규칙(Coding Convention)’을 가지고 있습니다.

상호 코드 리뷰를 진행할때 리뷰를 위한 기준이 마련되어 있어야 하는데 그 기준이 바로 코딩 규칙이 됩니다.

NASA에서 발표한 신뢰할 수 있는 임베디드 SW 개발 10가지 원칙을 소개하자면 다음과 같습니다. – 원문 링크

1. 모든 코드 극도로 간단한 제어 흐름으로 구성한다.
2. 모든 loop은 반드시 고정 upper-bound를 가져야만 한다.
3. 초기화 이후 동적 메모리 할당을 사용하지 않는다.
4. 함수의 길이는 60라인 이내여야 한다.
5. 함수당 평균 최소 2개 assertion의 밀도 가지기
6. data 객체는 최소한의 scope으로 선언해야만 한다.
7. non-void 함수의 반환 값은 반드시 각 호출 함수에서 검사해야만 한다. (파라미터는 함수 내부에서 검사)
8. preprocessor는 헤더 파일에 두고 간단한 macro 정의로 되어 있어야 한다.
9. pointer의 사용을 제한한다.
10. 모든 code는 개발 처음부터 컴파일이 되어야하고 어떤 컴파일 warning도 없도록 유지해야 한다.

 

몇 가지는 임베디드 환경에 특수하게 적용되지만 대부분은 임베디드 분야가 아니더라도 SW개발 전반에 적용되는 원칙입니다.

[개발] 항공우주 분야 SW 코드 작성 10 계명 – Feat. NASA