1. 프로젝트 관리 (Management)
1.1. 목적
자원, 인력, 비용, 기술 등을 가장 효과적으로 사용하여 프로젝트의 목표를 달성
1.2. 관리의 어려움
| 어려움 | 이유 |
|---|---|
| 개발 대상이 눈에 보이지 않음 | 개발 진행상황 판단이 어려움 |
| 소프트웨어 기술 발전이 매우 빠름 | 다양한 문제 예측 및 대처가 어려움 |
| 조직마다 프로세스가 다름 | SW 개발 역사가 짧아 표준 지식·경험 부족 |
1.3. 관리 활동의 4가지 요소
계획 → 조직 → 모니터링 → 조정
- 핵심: 모니터링과 조정
- 관리 프로세스:
프로젝트 시작 → 프로젝트 계획 → 실행과 모니터링 → 종료
2. 프로젝트 시작
2.1. 가치 평가 방법 (5가지)
| 방법 | 설명 |
|---|---|
| 투자 회수 기간 | 투자된 금액을 회수하는 데 걸리는 시간 |
| ROI (Return of Investment) | 총비용에 대한 연간 평균 이익률 |
| 순수 현재 가치 | 현재 투자금과 미래 수익금을 현재 가치로 비교 |
| 평가표 | 금액 이외의 기술, 품질, 인력 등을 점수화 |
| SWOT | 강점(Strength), 약점(Weakness), 기회(Opportunity), 위험(Threat) 분석 |
2.2. 프로젝트 리스크
- 자원 현재/예상 사용량과 가용성, 우선순위 및 중요도
- 정해진 일정 내 완료 여부
- 기술적 어려움
2.3. 타당성 분석
프로젝트를 공식적으로 인정하기 위한 문서
- SOW (Statement of Works) — 프로젝트가 성취해야 할 일
- 비즈니스 목표(가치) — 프로젝트의 결과물
- 예산 — 비용과 수익의 요약
- 프로젝트 일정 — 대략적인 일정
- 프로젝트 리스크 — 위험 요소
- 대안 — 구축, 구매 등의 방법
- 평가 — 프로젝트
3. 프로젝트 계획과 스케줄링
3.1. 초기 계획의 3단계
- 범위 관리: 요구 분석 → 범위 설정 → WBS 작성
- 시간 관리: 활동 정리 → 활동 의존 순서 → 리소스 추정 → 소요 시간 추정 → 스케줄 생성
- 비용 관리: 비용 추정 → 예산 결정
3.2. 프로젝트 범위 문서 내용
- 프로젝트 목표 및 요구
- 가정 및 제약조건
- 산출물과 점검 일정
3.3. WBS
- 작업 분할도 (WBS; Work Breakdown Structure)
- 개발 팀이 프로젝트 목표를 달성하고 결과물을 산출하기 위해 수행해야 할 작업을 계층적으로 분할한 것
- 프로젝트 스케줄링 작업의 입력으로 사용
3.4. 스케줄링 작업 순서
- 작업 사이의 의존 관계 파악
- CPM 방법을 이용한 여유 시간 계산
- 소요 자원의 할당
3.5. CPM (Critical Path Method) 네트워크
-
WBS의 작업 순서·소요 기간 등을 네트워크 형태의 그래프로 표현
- 노드: 작업
- 간선: 선후 의존 관계
-
임계 경로 (Critical Path)
- 소요 기간이 가장 긴 경로
- 이 경로 상의 어떤 작업이라도 늦춰지면 전체 일정 지연
-
여유 시간 (Slack Time)
- 여유 시간 = 가장 늦게 시작할 수 있는 시간 - 가능한 빨리 시작할 수 있는 시간
-
예시
- 임계 경로 S-A-C-I-K-L-X (55일)
- 작업 E의 여유 시간 = (55-(10+15)) - 15 = 15일
3.6. 간트 차트 (Gantt Chart)
- 프로젝트 일정 관리를 위한 바(bar) 형태의 도구
4. 비용 예측 기법
4.1. 노력·자원·기간의 관계
| 용어 | 설명 |
|---|---|
| 노력(Effort) | 작업 완료에 필요한 노동의 양 (단위: MM/Man-Month) |
| Manpower | 투입되는 인력의 총합 |
| Duration | Effort / Manpower |
- 예: 16MM / 4M = 4개월 소요
- 3명이 1개월 작업 = 3MM
- SW 개발 비용의 대부분 = 인력 비용 → 비용 예측의 핵심 변수: 엔지니어 수 + 작업 기간
4.2. LOC (Line of Code) 기법
노력(M/M) = LOC / (1인당 월 평균 생산 코드 라인 수)
개발 기간 = M/M / 참여 인원
- 예시
- LOC=50,000, 참여 10명, 월 평균 500라인
- → 노력 = 50,000/500 = 100M/M → 기간 = 100/10 = 10개월
4.3. 비용 예측 기법 분류
| 분류 | 방법 | 특징 |
|---|---|---|
| 하향식 | 전문가 판단(Expert Judgment) | 경험 기반, 편견 가능성 |
| 하향식 | 델파이(Delphi) 기법 | 조정자가 여러 전문가 의견 종합 |
| 상향식 | COCOMO 초기 모델 | LOC 기반 수학적 공식 |
| 상향식 | COCOMO II | 단계별 3가지 모델 |
| 상향식 | 기능 점수(FP) | 사용자 관점의 기능 기준 |
4.4. COCOMO-81
SW 규모(LOC)를 기반으로 SW 종류에 따른 비용 산정에 수학적 공식 사용
-
- A: 소프트웨어 유형 상수
- Size: 라인 수 또는 기능 점수 (단위: KDSI, 1 KDSI = 1,000 LOC)
- B: 1 ~ 1.5
- M: 노력 보정 지수 (EAF, Effort Adjustment Factor) = 각 비용 승수값의 곱
| 프로젝트 유형 | 공식 | 설명 |
|---|---|---|
| 기본형 (Organic) | PM = 2.4 × (KDSI)^1.05 | 소규모 팀, 잘 알려진 응용 시스템 |
| 반결합형 (Semi-detached) | PM = 3.0 × (KDSI)^1.12 | 트랜잭션 처리, OS, DB 관리 시스템 |
| 내장형 (Embedded) | PM = 3.6 × (KDSI)^1.20 | HW 포함 실시간 시스템 (미사일, 신호기) |
-
비용 크기 순: 내장형 > 반결합형 > 유기형
-
COCOMO-81 단점
- B, M 값에 영향을 주는 요소들이 주관적
- 초기 단계에서 Size(LOC) 예측이 어려움
- → COCOMO II에서 개선
4.5. COCOMO II
프로젝트 진행 단계별 3가지 모델
| 모델 | 적용 단계 | 방법 |
|---|---|---|
| 응용 합성 모델 (Application Composition) | 초기 계획 ~ 프로토타입 | 화면/보고서/3세대 언어 컴포넌트 수로 응용 점수(Object Point) 계산 |
| 초기 설계 모델 (Early Design) | 요구분석 완료 후 초기 설계 | 기능점수(FP) 방법으로 예측값 산출 |
| 구조 설계 이후 모델 (Post-Architecture) | 상세 설계 완료 후 본격 개발 | FP 기반 LOC 추정으로 소프트웨어 규모 산정 |
- 응용 합성 모델 추정 과정
- 화면, 보고서, 3세대 언어 컴포넌트 숫자 파악
- 화면과 보고서의 복잡도 수준 결정
- 복잡도 가중치 결정
- 객체 점수(Object Point) 계산 = 개수 × 가중치
- 재사용률을 반영해 NOP(New Object Point) 계산
- 객체 점수 생산성(PROD) 결정
- 최종 노력 계산
4.6. 기능 점수
- 기능 점수 (Function Points, FP)
- 사용자 관점에서 소프트웨어 기능을 기준으로 측정하는 정량적 산정 방식
FP = GFP × PCA
총 라인 수 = FP × 원하는 언어의 1점 당 LOC
개발 노력 = 총 라인 수 / 생산성(LOC/MM)
(1) 언어별 기능 점수 1점 당 LOC
| 언어 | LOC |
|---|---|
| 어셈블리 | 324 |
| C | 150 |
| Pascal | 91 |
| Ada | 71 |
| APL | 32 |
(2) 5가지 기능 유형
| 기능 | 유형 | 설명 |
|---|---|---|
| 데이터 기능 | 내부 논리 파일 (ILF) | 사용자 등록/수정/삭제/조회를 위한 데이터 집합 (예: DB 테이블) |
| 데이터 기능 | 외부 인터페이스 파일 (EIF) | 타 시스템에서 유지되는 참조 파일 (예: 연동 테이블) |
| 트랜잭션 기능 | 외부 입력 (EI) | DB에 데이터 등록/수정/삭제 (예: 등록, 수정, 삭제 화면) |
| 트랜잭션 기능 | 외부 출력 (EO) | 계산 로직을 거쳐 출력 (예: 통계 리포트, 그래프) |
| 트랜잭션 기능 | 외부 조회 (EQ) | 로직 없이 DB 데이터를 그대로 표시 (예: 목록 조회) |
(3) GFP (총 기능 점수) 계산
GFP = Σ (Count_i × Complexity_i) [i = 1 ~ 5]
- 각 기능 분야의 복잡도: 단순(낮음) / 중간(보통) / 복잡(높음)
(4) PCA (처리 복잡도 보정계수)
PCA = 0.65 + 0.01 × Σ PC [PC: 14개 특성 각각 0~5점]
- 14가지 처리 복잡도 특성 (일부)
- 신뢰도 높은 백업과 복구 요구 여부
- 분산 처리 기능 여부
- 성능의 중요성
- 입력, 출력, 파일, 질의의 복잡성
- 재사용 설계 여부
- 다중 사이트 설치 여부
- 변경과 사용 용이성
(5) 정통법 vs 간이법
| 구분 | 특징 |
|---|---|
| 정통법 | 각 기능의 유형별 복잡도를 직접 판단하여 정확한 FP 산정 |
| 간이법 | 복잡도 판단 어려울 때 적용 — 기능 유형별 평균 복잡도 사용 |
| 유형 | 간이법 평균 복잡도 가중치 |
|---|---|
| ILF | 7.5 |
| EIF | 5.4 |
| EI | 4.0 |
| EO | 5.2 |
| EQ | 3.9 |
5. 프로젝트 팀
5.1. 팀 역할
- 프로젝트 관리자, 시스템 운영자, 시스템 분석가, 시스템 개발자, DB 엔지니어, QA 관리자, 기술 지원, 하드웨어 엔지니어, 웹 개발자·디자이너
5.2. 프로젝트 팀 조직 유형
(1) 직능별 조직 (Functional)
- 서로 다른 부서가 한 프로젝트의 다른 단계에 참여
- 팀원은 한 부서에 소속, 협력은 부서별로
- 장점: 인력 효율적 운영, 전문 지식 공유·축적
- 단점: 수평적 소통이 어려움 → 부서 협력 체계 확립 필요
(2) 프로젝트별 조직 (Project-based)
- 직능별 개발자들이 프로젝트에 배정
- 장점: 의사 전달 경로가 짧고 프로젝트 관리 수월
- 단점: 기술적 불확실성, 전문가 활용이 비효율적
(3) 매트릭스 조직 (Matrix)
- 직능별 조직 + 프로젝트 조직 혼합
- 강한 매트릭스: 프로젝트 관리자가 책임, 팀원은 프로젝트에 더 개입
- 약한 매트릭스: 직능별 책임자가 프로젝트 책임
(4) 애자일 조직 (Agile)
- 5~9명의 팀이 밀접하게 협력
- 개인보다 팀이 더 중요
- 결과와 이슈에 대한 오너십 공유
- 스크럼 팀: 스크럼 마스터(프로젝트 관리) + 프로덕트 오너(백로그 우선순위 결정) + 개발 팀
6. 실행과 모니터링
6.1. 프로젝트 실행
- 작업 시작 미팅
- 작업 결과 수집
6.2. 프로젝트 모니터링
현황(일정, 비용, 진척도)을 파악하고 차이를 분석하여 필요한 조치를 취하기 위함
(1) 어닝 밸류 분석 (Earned Value Analysis)
일정과 비용을 통합하여 모니터링하는 방법
| 지표 | 의미 |
|---|---|
| PV (Planned Value, 계획 가치) | 계획서 상에 현 시점까지 소요 예정이었던 예상 비용 |
| EV (Earned Value, 어닝 밸류) | 현재 실제 달성 내용까지의 계획서 상 예상 비용 |
| AC (Actual Cost, 실제 비용) | 현재 실제 달성 내용까지 실제 사용한 비용 |
(2) 번다운 / 번업 차트
| 차트 | 설명 |
|---|---|
| 번다운(Burn Down) | 애자일 프로젝트에서 남은 작업량을 시각적으로 표현 |
| 번업(Burn Up) | 완료한 작업량을 시각적으로 표현 |
7. 리스크 관리
- 리스크 관리의 목적
- 위험이 발생되었을 때의 영향을 줄이는 것
7.1. 리스크 관리 프로세스
리스크 관리 표준 → 리스크 파악 → 리스크 평가 → 리스크 관리 계획
↓ ↓
리스크 등록 ←→ 리스크 모니터링
7.2. 리스크 파악
-
리스크 파악 방법
- 회의
- 문서 분석
- 리스크 분할 구조, 체크리스트
- 유추
-
SW 관련 리스크 요소 (Boehm 제시)
- 인력 부족
- 비현실적 일정 및 예산
- 잘못된 기능과 특징 개발
- 잘못된 인터페이스 개발
- 과포장
- 계속적인 요구 변경
- 외부에 보일만한 컴포넌트의 빈약
- 실시간 성능의 빈약
- 녹슨 컴퓨터 분야의 기술
7.3. 리스크 평가 (정성적 방법)
- 확률을 모를 때 사용
- 리스크 매트릭스: 리스크 발생 가능성(행) × 경제적/환경적/사회적 결과(열)로 우선순위(L/M/H/E) 결정
- 우선순위 결정 기준: 확률 × 영향도
7.4. 리스크 관리
- 리스크 관리 방법
- 리스크를 피하기 위해 계획을 변경
- 책임을 다른 기관에 맡김
- 프로토타이핑
- 유능한 인재를 등용
- 3자와 협업
8. 프로젝트 계획서 목차
| 섹션 | 내용 |
|---|---|
| 1. 개요 | 프로젝트 개요, 산출물, 정의·약어 |
| 2. 자원 및 일정 예측 | 인력, 비용, 일정 |
| 3. 조직 구성 및 인력 배치 | 조직 구성, 직무 기술 |
| 4. WBS | - |
| 5. 기술관리 방법 | 변경 관리, 위험 관리, 비용·진도 관리, 문제점 해결 |
| 6. 표준 및 개발 절차 | 개발 방법론 |
| 7. 검토 회의 | 일정, 진행 방법, 후속 조치 |
| 8. 개발 환경 | - |
| 9. 성능 시험 | - |
| 10. 문서화 | - |
| 11. 유지보수 | - |
| 12. 설치·인수 | - |
| 13. 참고문헌 | - |