원문 캡처 · ganssle.com
원문 캡처 · ganssle.com

잭 갠슬(Jack Ganssle)이 2002년 5월 《Embedded Systems Programming》에 기고한 글이다. 임베디드 프로젝트가 문제에 빠지는 이유를 10위부터 1위까지 나열하고, 각 항목에서 설계·개발·관리 과정의 위험을 설명한다.

갠슬이 꼽은 원인은 자원 부족, 성급한 코딩, C 언어의 오용, 부실한 과학적 분석, 정립되지 않은 개발 과정, 모호한 요구사항, 약한 관리자나 팀 리더, 불충분한 테스트, 낙관적인 코딩, 비현실적인 일정이다.

그는 특히 초기 분석을 건너뛰고 코딩을 시작하면 CPU 성능이나 메모리 용량처럼 나중에 바꾸기 어려운 설계 선택이 프로젝트를 위태롭게 할 수 있다고 말한다. 요구사항은 바뀔 수 있지만 변경의 시간·비용 영향을 평가하는 절차가 필요하며, 테스트 계획도 프로젝트 초기에 세워 개발과 함께 갱신해야 한다고 강조한다.

C 자체보다 검증 장치를 충분히 쓰지 않는 관행이 문제라고도 지적한다. 정적 분석기와 코드 검사, 포인터·범위 확인, 단언문과 예외 처리 등을 활용해 예상 밖의 상황을 다뤄야 한다는 설명이다. 일정은 기능별 소요 시간을 근거로 작성하고, 마감이 고정돼 있다면 기능 범위를 조정하라고 제안한다.

글은 필자의 견해를 담은 칼럼이며, 항목별 순위나 주장을 뒷받침하는 체계적인 비교 실험은 제시하지 않는다.