프로젝트 품질 관리의 삼각 제약 조건
철의 삼각형으로 알려졌다.
프로젝트를 관리는 범위, 비용, 시간 3 요소를 통해 품질이 결정된다.
3요소는 서로 떼려야 뗄 수 없는 관계에 있고 이 3 요소의 균형을 잘 맞추어야 한다.
- 범위가 증가하면 시간과 비용이 반드시 증가한다. (범위는 시간과 비용에 정비례)
- 비용을 줄여야 하면 시간을 늘리거나 범위를 줄여야 한다. (시간과 비용은 반비례, 범위와 비용은 비례)
- 시간을 줄여야 하면 비용을 늘리거나 범위를 줄여야 한다. (시간과 비용은 반비례, 범위와 비용은 비례)
이 세 가지 요소를 통해 4번째 요소인 품질이 결정된다.
품질을 높이기 위해서는 위 3 요소가 다 같이 증가해야 한다.
범위 요소
- 프로젝트 복잡성
- 완성품 수량
- 결과물의 품질 (최종적인 Quality와 다른 의미의 범위 요소의 관점인 듯)
- 강도(예: 앱이 지원할 수 있는 동시 사용자 수)
- 세부 사항 수준
- 기능 개수와 복잡성
시간 요소
- 전체 프로젝트 타임라인
- 프로젝트 수행 시간
- 내부 일정 및 조건
- 계획 및 전략에 배정된 시간
- 프로젝트 단계 수
5%의 프로젝트만이 원래 계획한 시간 내에 종료된다.
60% 이상의 프로젝트는 계획 기간보다 20% 정도 추가 시간이 소요된다.
(이걸 야근이나 주말 근무로 때우는 게 과연 올바른 관리인가?)
비용 요소
- 재정 예산
- 팀원 수
- 장비 및 시설
- 핵심 기회
개발 비용은 소프트웨어의 복잡도에 따라 기하급수적으로 증가한다.
대부분의 개발 비용의 60% 이상이 소프트웨어 유지보수에 사용된다.
품질 요소
- 대부분의 경우 개발 종료 후 운영하는 동안 에러가 발생하며 이런 경우 고객의 만족도 및 충성도에 영향을 미친다.
이러한 뒤늦은 에러 발견의 경우 제품 품질을 낮추는 결정적 요소로 작용한다. - 소프트웨어 제품에 대한 문서가 없거나 불완전하거나 또는 갱신되지 않는 것도 제품 품질에 영향을 미치는 요소 중 하나이다.
- 완성도 높은 프로그램을 제작하기 위해서는 실제 개발 기간의 50% 이상을 에러를 찾고 고치는 데 사용한다.
개인적인 의견
개발 범위 최소화
품질을 올리기 위해 복잡도를 높이는 선택은 개발 비용을 기하급수적으로 증가하게 만든다.
이는 곧 유지보수 비용의 기하급수적인 증가를 불러오기 때문에 복잡도를 낮추는 것이 중요하다.
이를 위해서는 품질의 범위를 제한하는 것이 중요하다.
커버할 수 있는 한도까지 장애 발생을 허용하고 개발에 유지보수 비용 60%인 부분에 대해 항상 고려하고 진행해야 한다. (그렇지 않으면 바로 레거시 발생이다.)
유지 보수(개발 버전 관리)의 빠른 사이클 운영
오픈 소스 기반의 프로젝트를 운영하면 끊임없이 버전이 올라간다.
버전 관리를 하지 않고 방치하는 프로젝트, 또는 특정 주기로 한꺼번에 버전을 올리려고 하는 프로젝트는 그 기술 부채 비용이 기하급수적으로 증가하여 이를 감당하지 못하고 레거시 프로젝트가 된다.
빠르게 통합 반영하고 빠르게 장애나 에러를 발견하고 빠르게 대처하는 형태의 운영을 하는 것이 좋다고 생각한다.
사이클이 느려질수록 기술 부채는 쌓이게 되어 감당하지 못하게 된다.
참고 자료
프로젝트 관리 삼각형이란 무엇이며 팀에 도움이 되는 점은?
https://asana.com/ko/resources/project-management-triangle
소프트웨어 품질의 이해
https://www.kocca.kr/knowledge/report/__icsFiles/afieldfile/2010/05/01/kc44_1215387_0.pdf
보안비용 아끼는 첫걸음?… SW 개발단계부터 내재화 필수
https://www.ddaily.co.kr/news/article/?no=171728
'Study > ETC' 카테고리의 다른 글
Windows Terminal 소개 (0) | 2023.03.31 |
---|---|
[책 리뷰] 프로그래머의 뇌 (0) | 2022.11.17 |
OpenAPI 문서 postman에서 사용하기 (0) | 2022.11.17 |
[책 리뷰] 리팩터링 2판 (0) | 2022.08.14 |
Chromium 기반 웹 브라우저 보안 업데이트 권고 (CVE-2022-1096) (0) | 2022.04.06 |
HTTP Live Streaming (HLS) 알아보기 (0) | 2022.03.11 |
Github markdown diagram 지원 소식 (0) | 2022.02.16 |
redis Data types (0) | 2021.06.04 |
redis commands (0) | 2021.06.04 |
BI Solution을 도입한다면 어떤 것을 써야 좋을까? (0) | 2020.09.14 |