본문 바로가기

기술 용어 검색

'소프트웨어 공학의 진실과 오류' 세미나 #1

'소프트웨어공학의 진실과 오류' 중에서

폭주하는 프로젝트의 원인 : 잘못된 계획과 추정

추정

- 프로젝트 폭주하는 가장 흔한 원인 두 가지중 하나는 형편없는 추정때문이다.
- 추정은 보통 부적절한 시기에 부적절한 사람들에 의해서 수행된다. 대부분의 소프트웨어 추정은 마케팅이나 경영진에서 결정된다. 이것이 바로 부적절한 추정의 시작이다.
- 추정은 프로젝트가 진행되면서 거의 조정되지 않는다.
- 추정 목표 자체의 오류이므로 목표 불충족시에도 영향을 받을 필요는 없다. - 하지만 현실은 다르다.

추정이 어려운 이유는 무엇인가 ?
- 단순해 보이는 문제도 그 솔류션은 훨씬 복잡할 수 있기 때문이다.

오류

- 오류는 뭉치는 경향이 있다.
- 소프트웨어 오류 제거에 단 하나의 최상의 방법은 없다.
- 오류는 항상 남아 있다. 심각한 오류를 제거하나 최소화하는 것이 목표가 돼야 한다.
- 누락된 요구사항은 가장 수정하기 힘든 오류다.
- 오류의 비중중 가장 큰 것은 로직의 누락(30%) > 수정중 발생된 회귀 오류(8.5%)
- 요구사항을 설계로 옮겨갈 때 솔류션 프로세스의 복잡성 때문에 '파생 요구사항'이 급증한다. -> 50배까지 늘어날 수도 있다. (파생/잠재 요구사항)

소프트웨어의 '무엇' 을 기술하는 것이 '요구사항'이다. 그 '무엇'을 어떻게 풀지라는 것이 '설계'이다.

- 요구사항의 명시적(explicit)요구사항으로부터 파생(derived)/잠재적(implicit)요구사항 발생 최소 50배 이상 발생할 수 있다.

소프트웨어 개발은 변경이 언제든 가능하므로 변경할 수 있는 움직이는 목표를 맞추는 것이다.
=> 이것의 유일한 해결 방법은 처음 산정했던 프로젝트 예산, 기간, 인력 추정치의 변경을 통해서 맞춰 나가야 한다.


유지보수 중요성. 

60/60 법칙 :

소프트웨어 비용의 60%는 유지보수에 사용에 사용해야 한다. 유지보수 비용의 60%는 개선에 사용해야 한다. 개선이라는 부분이 유지 보수에 포함되므로 유지 보수가 중요하다. (오류 정정 17%, 나머지 개선 또는 추가)

왜 소프트웨어 유지 보수에 그렇게도 많은 시간이 소모되는가?
- 초기 단계에 문제의 솔류션에서 파생될 모든 가능성을 결정하는 것은 거의 불가능하기 때문이다.

유지 보수에서 가장 중요한 것은 " 기존 제품을 이해하는 것 " - 이것이 왜 어려운가 ? 1) 읽기의 힘든 점(읽기 능력의 부재, 잘못된 코딩) 2) 여러가지 접근 방법 가능 3) 파생되는 문제 고려 해야 하기 때문이다.

유지 보수는 또 다른 해결책이다.