소프트웨어 개발과 프로젝트 관리
펌웨어의 소스 코드에 정적 분석 도구를 사용할 때, 프로그램을 실행하지 않고 발견하기 쉬운 문제로 가장 적절한 것은?
- A사용자가 정말로 필요로 하는 기능이 요구사항 정의서에서 누락된 것
- B초기화되지 않은 변수를 참조하는 경로나, 배열의 범위 밖에 접근할 우려가 있는 부분
- C양산한 기판의 일부에서 납땜 불량으로 신호가 끊기는 것
정답과 해설 보기
정답: B. 초기화되지 않은 변수를 참조하는 경로나, 배열의 범위 밖에 접근할 우려가 있는 부분
정적 분석은 소스 코드를 실행하지 않고 구문이나 제어 흐름·데이터 흐름을 조사하여, 초기화되지 않은 변수의 참조, 배열의 범위 밖 접근, 널 포인터 참조의 우려, 코딩 규칙(임베디드 C 언어에서 쓰이는 MISRA C 등) 위반 등을 찾아냅니다. 테스트로는 지나가기 어려운 경로의 문제도 찾을 수 있는 반면 오탐도 있으므로, 결과는 사람이 확인합니다. 요구사항의 누락은 리뷰나 사용자와의 확인으로, 기판의 납땜 불량은 제조 시의 검사나 실기 시험으로 찾는 것이며, 소스 코드의 분석으로는 알 수 없습니다.