Altruistic Programmer's Blog (KR)

이타주의 프로그래머의 블로그

소프트웨어 공학의 사실과 오해 4 – 복잡성, 요구사항

without comments

http://www.yes24.com/24/goods/1418676

복잡성

여러분이 이 책을 읽고 아무것도 기억하지 못하더라도 이것만은 기억하기 바란다. 문제의 복잡성이 25% 증가하면 소프트웨어 솔루션의 복잡성은 100% 증가한다. 이 문제를 극복하기 위한 어떤 해결책도 없다는 것 또한 기억하기 바란다. 소프트웨어 솔루션은 복잡한데, 그게 그 녀석의 타고난 본성이다.

p.118

절망적인 얘기 같지만 한 가지 분야로서 존재하려면 복잡성은 필수인 것 같다. 복잡하지 않으면 답이 바로 나오고, 답이 이미 나왔다면 이렇게 많은 사람들이 연구하고, 매번 새로운 솔루션을 개발할 필요는 없지 않을까.

누락된 요구사항

누락된 요구사항은 가장 수정하기 힘든 오류다. – 중략 – 요구사항이 없으면 명세서(specification)에도 나타나지 않을 테고, 명세서로부터 나오는 검토나 검사(inspection)에서도 확인되지 않을 것이고, 요구사항을 만족하는지 검증하기 위한 테스트 케이스도 작성되지 않을 것이다. 따라서 요구사항 누락은 가장 기본적인 오류 제거 방법에서 발견되지 않는다.

p.139, 141

책을 읽기 전에는 한 번도 생각해 본적이 없던 문제다. 테스트 커버리지가 100%가 되어도 누락된 요구사항은 테스트가 안되니 말이다. -_-;; 아래는 저자가 근무하던 우주 항공사의 오류 데이터를 분석한 결과다.

제거하기 어려운 오류 중 가장 눈에 띄는 것은 내가 누락된 코딩 로직 오류라 부르던 것이었다. 이는 제거하기 어려운 오류 카테고리 중 가장 두드러진 것으로 30%를 차지했다. 그 다음으로 중요한 카테고리는 회귀 오류(regression error)로 8.5%를 차지해 30%보다 훨씬 적었다. 제거하기 어려운 소프트웨어 오류 중 세 번째 카테고리는 소프트웨어 오류가 아니라 문서화 오류(8%)라는 것이 흥미롭다.

p.143

여기서 “제거하기 어려운 오류”라는 것은 모든 테스트 과정을 거쳐서 출시된 제품에 여전히 남아있는 오류를 의미한다.

Leave a Reply