[소프트웨어분석및설계🛠️] 2장 프로젝트 관리
출처 : 강의 교안, 시스템분석설계 with 애자일 (생능출판사, 최은만)
1. 프로젝트 관리의 개넘
✏️ SW 개발 프로젝트 실패 원인
- 부족한 소프트웨어 마인드
: 소프트웨어는 하드웨어와 다르게 물리적으로 존재하지 않으므로 언제든지 변경 가능하다?
- 업무 증가와 일정 지연 등의 이유로 공학 기법 적용을 미룸
- 부족한 프로젝트 관리 기술
: 소프트웨어 개발 기술의 고도화, 다양한 응용 도메인으로 프로젝트 수행 시 고려해야 할 요소가 기하급수적으로 증가
1.1 프로젝트 관리 (management)
1) 프로젝트 관리
- SW 개발 프로젝트는 최소의 비용으로 최고의 품질을 유지하는 SW를 성공적으로 개발하는 것이 목표
- SW 개발 프로젝트 관리를 어렵게 하는 요인
- 보이지 않는 소프트웨어
- 빠르게 변하는 기술
- 조직마다 다른 프로세스
1.2 프로젝트 관리 단계
1️⃣ 계획 수립
- 프로젝트 목표의 이해와 문서화
- 스케줄, 예산, 기타 자원 요구사항 등 개발
2️⃣ 자원 개발
- 공간, 컴퓨터 자원, 관련 자료 및 인적 자원의 확보
3️⃣ 실행
- 계획의 이행
4️⃣ 모니터링
- 프로젝트 진척도 체크
- 계획과의 편차를 해결하는 대책 강구
🌟 프로젝트 계획 수립
- 목표 설정 : 달성 목표와 수행되어야 할 기본 작업(WBS), 산출 결과물과 승인 조건, 가정과 제약 조건, 산출물과 점검 일정
- 일정 계획 (Scheduling) : 개발 프로세스를 이루는 소작업(activity)를 파악하고 순서와 일정을 정하는 작업
- 비용 추정 : 전체 소프트웨어 개발 비용 예측 (estimation)
- 정확한 비용 예측은 매우 어려움 ➡️ 비용의 예측은 어렵기 때문에 작업이 완료되기 위해 필요한 노동의 양인 노력(effort)의 값으로 추정
- 알려지지 않은 요소가 산재하고 원가 계산이 어려움
2. 프로젝트 관리 기법
2.1 일정 관리 기법
1) 일정 관리 기법
- 요구사항의 복잡도, 개발자 규모 및 기술 수준, 팀 구성 형태, 개발 중에 발생 가능한 리스크 정도 등을 고려하여 계획
- 기본 입력 사항
- 어떤 프로세스 모델을 선정하였는가?
- 어떤 베이스라인(baseline)을 정의할 것인가?
🌟 베이스라인
: 어떤 변경이 발생했을 때 모든 관련자의 합의를 거쳐 변경 사항을 결정한 다움 후속 작업을 수행하기 위한 출발점
2) 작업 분할도 (WBS : Work Breakdown Structure)
- 프로젝트의 전체 목표를 중간의 세부 목표들로 쪼개어 나타낸 작업 목록
- 프로젝트에서 수행해야 하는 모든 종류의 작업을 식별해서 트리(tree) 형태로 표현
- 식별된 작업(task) : 추정 가능한 양의 작업, 독립적으로 이루어질 수 있다고 판단될 때까지 분할
- 엑셀, MS Project 와 같은 도구를 사용하여 작성
- 문서화 작업, 프로젝트 리뷰와 같은 작업들도 반드시 태스크로 식별
- 일정계획은 WBS를 기초로 하여 정의
1️⃣ 작업 사이의 의존관계 파악
2️⃣ PERT를 이용한 여유 시간 계산
3️⃣ 소요 자원의 할당
(1) PERT/CPM 차트
- 불확실한 프로젝트의 일정, 비용 등을 합리적으로 계획하고 관리하는 기법
- PERT (Project Evaluation & Review Technique)
- 1958년에 개발
- 규모가 크고 복잡한 프로젝트를 보다 수월하게 계획할 수 있도록 설계된 프로젝트 관리 체계
- CPM (Critical Path Method)
- 프로젝트 전반에 관한 개요를 제공하며, 모든 것을 완료하는 데 필요한 총 시간을 산정
- CPM 네트워크를 작성하여 젠체 프로젝트에 소요되는 시간을 계산
- CPM 네트워크
- 작업을 나타내는 노드와 작업 사이의 선후 의존관계를 나타내는 간선으로 구성된 네트워크
- 네트워크의 박스에는 작업의 시작일과 완성일을 표시
- 가장 이른 시작일 (EST, Earlist Starting Time)과 가장 늦은 시작일(LST, Latest Starting Time)을 파악할 수 있음.
- CPM 네트워크에서 작업의 여유시간 = LST - EST
- 일부 노드는 이정표(milestone)로 지정할 수 있다.
- 임계 경로 (critical path) : 가장 소요기간이 긴 경로
(2) 간트 차트 (Gantt Chart)
- 프로젝트의 스케줄링, 예산 산정, 자원 계획을 수립하기 위해 사용하는 일정 표현 기법
- 바 (Bar) 차트 형태로 표시하며 바의 길이에 비례하여 소요 시간을 나타낸다.
- 예비 시간이나 계획 대비 진척도 관리에도 사용
- 소요자원의 할당을 통해 자원관리에도 사용
(3) 애자일 프로세스의 스케줄링
- 스토리카드를 주로 사용
cf) CPM 네트워크와 간트 차트는 전통적인 SW 개발 프로세스에서 사용
- 스토리카드의 내용 : 사용작스토리, 비즈니스 우선순위, 스토리 점수, 연관된 스토리 등
2.2 비용 관리 기법
1) 비용 관리 기법
- 소프트웨어 개발 비용의 정확한 예측이 어렵다.
- 노력(Effort) : 작업이 완료되기 위해 필요한 노동의 양
- 노력의 단위 : MM(man-month)
- 프로젝트에 투입되는 월-인원을 나타낸다.
- 프로젝트의 크기를 표현할 떄 주로 사용
- 생산성 : MM 당 생산 라인 수 (LOC/MM)
- COCOMO, 델파일 기법, Function Point
2) COCOMO (Constructive Cost Model)
- 규모(LOC)를 기반으로 하는 수학적 공식을 사용한다.
- 개발 소프트웨어의 유형이나 소프트웨어에 영향을 주는 요인을 고려하여 보정한다.
- 노력(E) = A × (Size)B × M
- A : 소프트웨어 유형에 좌우되는 상수
- Size : 개발될 소프트웨어의 원시 코드 라인수 (KLOC)
- B : 1 ~ 1.5 사이의 상수 값
- M : 보정 계수
- COCOMO 표준 산정 공식
프로젝트 유형 | 노력 | 기간 |
유기형 | PM = 2.4 × (KDSI)1.05 | TDEV = 2.5 × (PM)0.38 |
반결합형 | PM = 3.0 × (KDSI)1.12 | TDEV = 2.5 × (PM)0.35 |
임베디드형 | PM = 3.6 × (KDSI)1.20 | TDEV = 2.5 × (PM)0.32 |
- KDSI (Kilo Delivered Source Instructions)
- PM (Person-Month) = MM
- TDEV : 프로젝트를 종료하는 데 소요되는 개월 수
- 보정계수 M
- 프로젝트에 영향을 주는 다른 요소들을 고려하여 비용 승수(cost-driver)를 결정
- 각 승수의 값을 예측된 PM 값에 곱하여 계산
- 비용 승수 : 보통 0.9 ~ 1.5 사이의 값
3) 델파이 기법
- 델파이 기법
- 전문가들의 의견수립, 중재, 타협의 방식으로 반복적인 피드백을 통한 하향식 의견 도출 방법으로 문제를 해결하는 기법
- 1964년 미국에서 RAND 연구소에서 개발되어 IT분야, 연구개발분야, 교육분야, 군사분야 등에서 활용
- 노력 추정을 위한 델파이 기법 적옹
: 다수의 전문가가 모여 소프트웨어의 요구사항을 기준으로 소프트웨어의 크기를 예상
4) 기능점수 산정법
- 코드가 작성되지 않은 단계에서 정확한 LOC의 예측은 불가능 ➡️ LOC로 생산성이나 품질을 평가하기는 곤란하다.
- 기능점수 (FP, Function Points)
- 구현되는 언어에 관계없는 메트릭(Metric)
- 소프트웨어 시스템이 제공하는 기능의 필요 정도와 복잡도를 기준으로 평가하는 방식
- 국내에서는 2012년 이후 매년 소프트웨어산업협회에서 SW사업 대가 산정 가이드 제정 공표 ➡️ IFPUG에서 정의한 FP 모델을 기준
2.3 위험 관리
1) 위험(risk)
- 요구사항의 빈번한 변경, 프로젝트 팀원의 부적절성과 같이 재작업, 의사소통의 증가와 같은 문제를 유발하는 요인
- 프로젝트 성과를 저하시키는 요인
- 리스크를 사전에 식별하고 관리해야 한다.
2) 위험 평가
- 각 위험에 대한 피해 정도, 위험 해결 방법, 이에 대한 비용들을 결정하느 ㄴ것
- 손실 발생 확률
- 손실 발생 규모
- 위험 노출(exposure)
- 영향도에 따라 평가하고 우선순위를 매긴다.
- 정량적 방법 : 리스크 확률을 고려한 영향을 비용으로 환산
- 정성적 방법 : 주관적인 판단으로 평가 (발생확률에 대한 정보가 없을 때
3. 기능점수를 이용한 비용산정
3.1 기능 점수 개요
1) 과거의 소프트웨어 비용 산정
- LOC(Lines Of Codes)로 소프트웨어의 규모 파악
- 문제 : 사용한느 프로그래밍 언어마다 기능 구현을 위한 코드 라인 수가 달라진다.
2) 기능 점수(Function Point) 방법
- 소프트웨어의 기능과 복잡한 정도를 기준으로 규모 산정
- IFPUG 모델 : 2003년 국제표준 채택 (ISO/IEC 20926:2003)
- 현재 SW개발 프로젝트의 규모의 비용산정의 표준
- 소프트웨어 시스템의 구성요소를 2가지로 정의
- 처리 기능 (Transaction Function) : 외부입력, 외부출력, 외부질의
- 데이터 기능 (Data Function) : 내부 논리파일, 외부 인터페이스 파일
3.2 기능 점수 산정 절차
1) FP 산정 절차 : IFPUG CPM(ISO/IEC 20926)
✏️ FP 산정 유형 : 개발 프로젝트, 개선 프로젝트, 유지보수 프로젝트
2) 범위 및 경계 선정
- 기능 점수 산출 범위
- 시스템 전체 (System)
- 응용소프트웨어 전체 (Application)
- 응용소프트웨어 일부 (Subset of Application)
- 고려사항 : 소프트웨어 획득 방식
- 자체 개발 (In-House Development)
- 외주개발 (Outsourcing Part)
- 패키지 구매 (Package Purchase)
- 대상 시스템 범주 표현
: Use Case Diagram, ER Diagram
3) 데이터 기능점수 산정
- 데이터 기능의 유형
- ILF (내부 논리 파일, Internal Logic File) : 시스템의 내부에서 생성되고 변경, 보관되는 파일 또는 레코드 타입
- EIF (외부 인터페이스 파일, Exteranl Interface File) : 애플리케이션 사이에서 공유하는 파일로써 참조만 하는 데이터 파일
- ILF와 EIF를 식별하여 복잡도 가중치 결정
- DET (Data Element Type) : ILF와 EIF에 유지되는 필드 중 식별 가능하고 비반복적인 필드
- RET (Record Element Type) : ILF와 EIF 안에서 식별 가능한 데이터 요소의 하위 그룹
4) 처리 기능점수 산정
- 처리 기능 유형
- 외부 입력 (EI, External Input) : ILF에 자료를 생성, 변경, 삭제하는 것
- 외부 출력 (EO, External Output) : 시스템이 밖으로 방출하는 자료와 제어를 의미 (보고서나 메시지 등)
- 외부 질의 (EQ, External Query) : 단순한 사용자 질의
5) 예비 기능 점수 산정
- 모든 데이터 기능과 처리 기능엗 해단 복잡도가 산정되면, 예비기능 점수를 산정한다.
6) 조정 인자 값 산출
- 조정 인자 값 산출 과정 : 운영적, 환경적 특성을 지원하는 분석
- 14개의 조정 인자
- 데이터 통신
- 분산데이터 처리
- 성능
- 운영환경
- 트랜잭션 비율
- 온라인 데이터 입력
- 사용자 효율성
- 온라인 갱신
- 처리 복잡도
- 재사용성
- 설치 용이성
- 운영 용이성
- 다중 설치성
- 변경 용이성
- 영향도(Degree of Influence) 결정 : 각 인자에 대해 0(영향 없음) ~ 5(많음)까지 할당
- 14개의 시스템 특성에 대해 영향도가 결정되면 각 영향도의 합(TDI, Total Degree of Influence)을 구한 뒤에 조정 인자 값 VAF를 산정
- VAF = (TDI × 0.01) + 0.65
7) 최종 기능 점수 산출
: VAF 값을 예비 기능 점수에 곱해 최종 기능 점수를 구한다.
3.2 기능점수 간이법
1) 기능 점수 간이법
- 기능의 복잡도 판단이 어려울 경우 평균 복잡도를 사용해서 계산한다.
구분 | 정규법 | 간이법 |
선정 목적 | 상세하고 정확한 기능 점수 측정 | 개략적인 예측용 기능 점수 산정 |
측정 항목 | 데이터 기능과 처리 기능 | 데이터 기능과 처리 기능 |
복잡도 적용 | 기능별, 단위 파일별 복잡도 | 평균 복잡도 |
적용 시기 | 개발 수명주기 전체에서 가능하나, 상세 설계 이후 정확도가 높다. | 사업 준비 단계, 제안서 작성 단계 등에서 활용 가능하다. |
장점 | 측정 정확도가 높으며, 다양하게 활용 가능하다 | 신속한 측정이 가능하다. |
단점 | 사업 초기 단계에서 적용하기 어렵다. | 제한적 데이터 사용으로 정확성이 부족하다. |
- 간이법에 의한 기능 점수 산정 절차
✏️ 기능 점수와 품질 척도
- 생산성 (Productivity)
: 기능 점수당 개발 시간 = (프로젝트에 투여된 총 개발 시간) / (배포된 소프트웨어의 기능 점수)
- 신뢰성 (Reliability)
: 신뢰성 = (소프트웨어 고장의 횟수) / (총 기능 점수 값)