3.1 프로젝트 시작
프로젝트 관리(Management)
- 작업 수행에 필요한 여러 가지 자원, 인력, 비용, 재료, 기술 등을 가장 효과적으로 사용하여 프로젝트의 목표를 달성하는 것
- 관리의 어려움
- 개발 대상이 눈에 보이지 X
- SW 분야 기술 발전 매우 빠름
- SW 분야는 조직마다 프로세스가 다름
- 관리 활동의 요소
- 계획
- 조직
- 모니터링
- 조정
- 결정 요인
- 프로젝트가 제공할 가치
- 프로젝트와 관련된 리스크
- 가치 평가 방법
- 투자 회수 기간
- ROI
- 순수 현재 가치
- 평가표
- SWOT(Strength, weakness, opportunity, threat)
계획
- 계획의 부재
- 불확실성
- 일정의 차질, 경비의 초과
- Risk
- 프로젝트 실패
- 프로젝트 계획 수립(계획서)
- 문제를 이해하고 정의
- 소작업 정의하고 순서 결정
- 일정 예측, 비용 예측
- 위험 분석
- 주의할 점
- 시스템에 대한 충분한 이해
- 현실적, 구체적 계획
- 득실 관계 저울질
문제 정의
- 대상 업무나 문제를 사용자가 이해하는 용어로 기술
- 타당성 조사
- 경제적 타당성
- 투자 효율성, 시장성, 비용과 수익 비교
- 기술적 타당성
- 사례 연구, 실패 사례 연구, 모의 실험
- 법적 타당성
- 사용 도구들의 법적 권한
- 경제적 타당성
예측
- 인력자원의 예측
- 가장 중요한 개발 자원
- 전형적인 프로젝트 인력 참여 모형
- 하드웨어 자원의 예측
- 개발용 시스템
- 개발상에 필요한 컴퓨터와 주변 기기
- 목표 시스템
- 자동화 시스템의 한 구성요소
- 개발상의 하드웨어 도구
- 수치제어 SW
- 내장용 SW
- 개발용 시스템
- 소프트웨어 자원의 예측
- 코드중심의 SW 도구
- 문서 편집기, 컴파일러, 개발환경
- 방법론 중심의 SW 도구
- 소프트웨어 공학(CASE)
- 프로젝트 관리 지원 도구
- 기타 지원도구
- DB 지원도구
- 코드 생성기
- 코드중심의 SW 도구
3.2 프로젝트 계획과 스케줄링
프로젝트 범위 정하기
- 넓은 범위
- 작은 범위
WBS
- 개발 팀이 프로젝트 목표를 달성하고 결과물 산출하기 위하여 수행작업을 계층적으로 표현
스케줄링
- WBS를 기초로 하여 일정 정의
- 작업 사이 의존 관계 파악, CPM 방법을 이용한 여유시간 계산, 소요 자원의 할당
CPM 네트워크
- 관리자 일정 계획 수립에 도움
- 병행 작업 계획
- 일정 점검, 관리
- 소프트웨어 도구
- MS- Works
자원 할당과 간트차트
일정계획(Scheduling)
- 개발 모형 결정
- 소작업, 산출물, 이정표 설정
- 작업 순서
- 작업 분해(WBS)
- CPM 네트워크 작성
- 최소 소요 기간
- 소요 MM, 기간 산정하여 CPM 수정
- 간트 차트로 그림
- 작업순서 결정 및 소요기간 예측
- 고려사항
- 개발과정 중 규칙적인 기간마다 이정표 세우기
- 병렬로 발생하는 업무간의 상호 관계 정의
- 분석 및 설계와 테스팅 단계에 집중(40:20:40)
- 유지보수단계 필요
- 자동화 도구 이용
3.3 비용 예측 기법
예산계획
- 정확한 비용 예측은 어려움
- 과거의 데이터 필요
- 단계적 비용 산정 방법 사용
- 인건비 : MM(인원/월)을 기초
- 경비 : 여비, 재료비, 인쇄비…
- 비용에 영향을 주는 요소
- 제품의 크기
- 제품의 복잡도
- 응용 : 개발지원 : 시스템 = 1 : 3 : 9
- 프로그래머의 자질
- 기술수준
- 남은시간
- Putnam : 프로젝트 노력은 남은 개발 기간의 4제곱에 반비례
소프트웨어의 측정
- 측정 목적
- 생산품의 품질 제시
- 생산품을 생산한 사람의 생산성 평가
- 예측을 위한 기준치 형성
- 크기 중심의 측도
- 인력(Man-Month)
- 총 투자비용
- 프로그램의 크기(KLOC, LOC)
- 문서의 양
- 과거 자료를 기초로 생산성 및 품질 측도 산출
- 생산성 = 프로그램 크기/ 인력
- 품질 = 에러 수/ 프로그램 수
- 한 라인 작성 비용 = 총투자비용/ 프로그램 크기
기능중심의 측도
- 기능점수(function points)
- 정확한 라인 수는 예측 불가능
- 각 기능에 가중 값
- 기능 점수 1을 구현하기 위한 LOC(어셈블리 언어(324), C언어(150), pascal(91), Ada(71))
- 총 라인수 = FP * 원하는 언어의 1점 당 LOC
- 개발 노력 = 총 라인수 / 생산성(LOC/MM)
- FP(기능점수) = GFP(총 기능 점수) X PCA(복잡도 보정 계수)
소프트웨어의 측도의 예측, 분할기법의 측도 예측
- 역사자료 수집 시 고려사항
- 정확하게 기록된 프로젝트로부터 수집
- 가능한 많은 프로젝트에서 수집
- 일관성 있는 측정에 의한 수집
- 분할기법에 의한 예측
- 베타분포에 의한 가중된 평균치 계산
- 평균치 = (하한치 + 4*중간치 + 하한치)/6
- 최하위 기능으로부터 최상위 기능까지 합산하여 최종 측도 산출
- 예시
- 각 단계 별 과거 인력(PM) 당 비용 수집, 각 단계별 비용 및 총 비용 계산
- 베타분포에 의한 가중된 평균치 계산
COCOMO-81
- 규모를 기반으로 하는 수학적 공식 사용
- 노력 = A * (Size)^B * M
- 단점
- 프로젝트 초기 단계에서 Size 값 예측이 어려움
- 기본 예측 모델에서 B, M 값에 영향을 주는 요소들이 주관적
COCOMO 방법
- Boehm이 개발
- 표준 산정 공식
- Organic 유형
- PM = 2.4 * (KDSI) ** 1.05 , TDEV = 2.5 * (PM) **0.38
- Semidatched 유형
- PM = 3.0 * (KDSI) ** 1.12, TDEV = 2.5 * (PM) **0.35
- Embedded 유형
- PM = 3.6 * (KDSI) ** 1.20, TDEV = 2.5 * (PM) **0.32
- Organic 유형
- 예시
국내 기능 점수 산정 가이드
- 정보통신연구진흥원의 소프트웨어 공학에서 산정 기준을 제시
- COCOMO II 초기 설계 모델을 따름
- 외부 입력
- 외부 출력
- 내부 논리 파일
- 외부 인터페이스 파일
- 외부 조회
3.4 프로젝트 팀 조직
- 조직의 구성
- SW 개발 생산성에 큰 영향
- 작업의 특성과 팀 구성원 사이의 의사교류
- 프로젝트 팀 조직 정의
- 역할과 책임이 어디?
- 어떤 통로로 정보가 전달, 결정?
- 팀 역할 나누기
- 프로젝트 관리자, 시스템 운영자, 시스템 분석가, 시스템 개발자 , QA 관리자
직능별 조직
- 서로 다른 부서가 한 프로젝트의 다른 단계에 들어와 작업 수행
프로젝트별 조직
- 직능별 개발자들이 프로젝트에 배정
- 의사 전달 경로가 짧으며 인력, 진도 등 프로젝트 관리가 수월
매트릭스 조직
- 직능별 조직의 관리자가 프로젝트 책임을 맡고 직능별 조직 부서에 소속된 개발자가 프로젝트에 참여(강한, 약한 매트릭스)
애자일 조직
- 서로 밀접하게 협력하는 5~9명의 팀
- 결과와 이슈에 대한 오너쉽 공유
3.5 실행과 모니터링
- 프로젝트 실행
- 작업 시작 미팅
- 작업 결과 수집
- 프로젝트 모니터링
- 어닝 밸류 분석
3.6 리스크 관리
- 리스크 관리의 목적
- 위험이 발생되었을 때의 영향을 줄이는 것
- 리스크 찾는 방법
- 회의
- 문서 분석
- 리스크 분할 구조, 체크리스트
- 유추
리스크 평가
- 영향도에 따라 평가하고 우선순위 매김
- 정성적 방법
- 확률을 모를 때
리스크 관리
- 위험 요소를 해소하기 위한 방법을 강구하고 프로젝트 실행하는 동안 이를 적용
- 방법
- 계획 변경
- 책임을 다른 기관에 맡김
- 프로토타이핑
- 유능한 인재 등용
- 3자 협업
계획서 작성
- 프로젝트 개요
- 프로젝트 명, 목표, 책임자 비용, 일정 기술
- 시스템 개략 명세서
- SW 개발 대상 시스템의 개략적 기능, 문제점 기술
- 개발 자원
- 프로젝트 수행에 필요한 인적 물적 자원에 대해 기술
- 개발 일정
- 시스템 개발을 위한 세부적인 일정 계획 수립
프로젝트 개요의 내용
- 프로젝트 명, 목표, 책임 사용자, 프로젝트 범위, 기간, 예산
시스템 개략 명세서의 내용
- 업무 개요, 관련 조직 및 기능, 현 시스템의 문제점, 새로운 요구사항, 성능 요구사항, 제약사항