소프트웨어공학 Lecture #15: 프로젝트관리와계획 최은만저 6 차개정판
학습목표 l 프로젝트범위 l 노력추정 l 일정계획 l 프로젝트조직 l 위험관리 l 프로젝트관리도구 2
프로젝트관리 (Management) l 프로젝트관리란? 소프트웨어프로젝트를 l 조직하고 (organizing) l 계획하고 (planning) l 일정관리 (Scheduling) 하는것이다. 3
계 획 l 계획의부재 불확실성 일정의차질, 경비의초과, 저품질, 높은유지보수비용 Risk 프로젝트의실패 l 소프트웨어프로젝트계획수립 소프트웨어개발과정과일정, 비용, 조직, 생산제품에대하여사전에계획 문제를이해하고정의 필요한소작업을정의하고순서를결정 일정예측 비용예측 위험분석 => 계획서 4
계 획 l 계획수립의결과 -> 소프트웨어개발계획서 l 사업관리자, 개발자, 사용자들에게사업의범위, 필요비용, 필요자원, 개발일정, 위험요소등에대한정보를제공하는산출문서 (deliverable) l 주의할점 l 시스템에대한충분한이해, 그러나변경의여지도있음 l 현실적, 구체적계획 l 득실관계저울질 l 기술적인측면고려 5
프로젝트일정계획작업과정 l 일정계획을위한과정 6
3.1 프로젝트범위 l 소프트웨어개발프로젝트를위한계획은대상업무나문제의범위 (Scope) 를정하는것으로부터시작 l 문제의범위를정의하기위하여먼저문제의배경과응용분야를잘 이해 l 사용자와면담 l 현장관찰 l 실제업무수행 l 문제정의 7
문제정의 l 대책수립 l 신규시스템의목표설정 기능과우선순위 ( 투자효과를분석 ) l 해결방안모색 ( 사용자요구, 개발여건, 기술적능력고려 ) l 시스템정의 l 문제의기술 l 시스템의필요성 l 시스템의목표 l 제약사항 l 시스템의제공기능 l 사용자의특징 l 개발, 운용, 유지보수환경 8
문제범위정하기 l 수강신청시스템 l 넓은범위 l 작은범위 9
3.2 노력추정 l 소프트웨어개발비용예측 l 예산 l 정확한비용예측은매우어려움 알려지지않은요소가산재 원가의계산이어려움 l 과거의데이타가필요 l 단계적비용산정방법도사용 l 인건비 : MM( 인원 / 월 ) 을기초 l 경비 : 여비, 인쇄비, 재료비, 회의비, 공공요금 l 간접경비 : overhead 10
비용에영향을주는요소 l 제품의크기 l 제품의크기가커짐에따라기하급수로늘어남 l 제품의복잡도 l 응용 : 개발지원 : 시스템 = 1 : 3 : 9 l 프로그래머의자질 l 코딩, 디버깅의능력차 l 프로그래밍언어, 응용친숙도 l 요구되는신뢰도수준 l 기술수준 ( 개발장비, 도구, 조직능력, 관리, 방법론숙달 ) l 남은시간 l Putnam 프로젝트의노력은남은개발기간의 4 제곱에반비례 11
프로젝트비용을예측하는방법 l 상향식 l 소요기간을구하고여기에투입되어야할인력과투입인력의참여도를곱하여최종인건비용을계산 l 소작업에대한노력을일일이예측 l 하향식 l 프로그램의규모를예측하고과거경험을바탕으로예측한규모에대한소요인력과기간을추정 l 프로그램의규모 LOC 기능점수 12
COCOMO 방법 l Boehm 이개발 l TRW 의 2K-32K 정도의많은프로젝트의기록을통계분석 l 표준산정공식 l 예 노력 (MM) 기간 (D) 유기형 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 l CAD 시스템 l 보정 예상규모 : 33360 LOC PM = 3.0*(KDSI)**1.12 = 3.0*(33.3)**1.12 = 152MM TDEV = 2.5*(PM)**0.35 = 2.5*(152)**0.35 = 14.5 M N=E/D = 152/14.5 ~ 11 명 13
COCOMO 에의한비용예측 14
COCOMO-81 방법 모델내용기타 기본 COCOMO (Basic COCOMO) 중간급COCOMO (Intermediate COCOMO) 고급 COCOMO (Advanced COCOMO = Detail COCOMO) 추정된 LOC 를프로그램크기의함수로표현해서소프트웨어개발노력 ( 그리고비용 ) 을계산. 프로그램크기의함수와제품, 하드웨어, 인적요소, 프로젝트속성들의주관적인평가를포함하는 비용유도자 (cost driver) 의집합으로소프트웨어개발노력을계산한다 소프트웨어공학과정의각단계 ( 분석, 설계등 ) 에비용유도자 (cost driver) 의영향에관한평가를중간급모형의모든특성을통합시킨것. S/W 크기와개발모드 15 개의비용요소를가미하여곱한가중치계수이용 시스템을모듈, 서브시스템으로세분화한후 Intermediate 와동일 15
중간 COCOMO 방법 비용드라이버 비율 낮음 보통 높음 매우높음 극히매우높음 제품특성 RELY 매우낮음 0.75 0.88 1 1.15 1.4 DATA 0.94 1 1.08 1.16 CPLX 0.7 0.85 1 1.15 1.3 1.65 H/W TIME 1 1.11 1.3 1.66 STOR 1 1.06 1.21 1.56 VIRT 0.87 1 1.15 1.3 TURN 0.87 1 1.07 1.15 개인특성 ACAP 1.46 1.19 1 0.86 0.71 AEXP 1.29 1.13 1 0.91 0.82 PCAP 1.42 1.17 1 0.86 0.7 VEXP 1.21 1.1 1 0.9 LEXP 1.14 1.07 1 0.95 PROJEC MODP 1.24 1.1 1 0.91 0.82 T TOOL 1.24 1.1 1 0.91 0.83 특성 SCED 1.23 1.08 1 1.04 1.1 16
중간 COCOMO 방법 l 모든노력승수를곱한다. l 예 : E=EAF * 2.4(32) 1.05 = EAF * 91 man-months l 단점 l 소프트웨어제품을하나의개체로보고승수들을전체적으로적용시킴 l 실제대부분의대형시스템은서로상이한서브시스템으로구성되며이중일부분은 Organic Mode 이고다른부분은 Embedded Mode인경우도있다. 17
COCOMO II l 1995 년에발표 l 소프트웨어개발프로젝트가진행된정도에따라세가지다른모델을제시 l 1 단계 : 프로토타입만드는단계 화면이나출력등사용자인터페이스, 3 세대언어컴포넌트개수를세어응용점수 (application points) 를계산 이를바탕으로노력을추정 l 2 단계 : 초기설계단계 자세한구조와기능을탐구 l 3 단계 : 구조설계이후단계 시스템에대한자세한이해 18
COCOMO II 세가지단계 비교대상 단계 1: 응용합성 단계 2: 단계 3: ( 프로토타이핑 ) 초기설계 설계이후 크기 응용포인트 기능포인트 (FP) 와언어종 류 재사용 모델에포함됨 LOC를다른변수의함수로 사용 요구변경 모델에포함됨 변경비율이비용승수로반 영됨 FP 와언어 LOC LOC 를다른변수의함수로사용 변경비율이비용승수로반영됨 유지보수 응용포인트 연평균 변경 비율 (ACT) ACT, 이해력, 친밀성의함수 ACT, 이해력, 친밀성의함수 노력예측공식 (E=bS C ) 에서 C 의값 1.0 선행작업, 적응도, 초기설계, 위험제거, 팀결집력, SEI 프로세스성숙도에따라 0.91~1.23 선행작업, 적응도, 초기설계, 위험제거, 팀결집력, SEI 프로세스성숙도에따라 0.91~1.23 19
COCOMO II 세가지단계 비교대상 단계 1: 응용합성 단계 2: 단계 3: ( 프로토타이핑 ) 초기설계 설계이후 프로덕트비용승수 없음 복잡도, 재사용요구도 신뢰도, 데이터베이스규모, 문서화요구정도, 재사용요구도, 제품복잡도 플랫폼비용승수 인력비용승수 없음 플랫폼난이도 실행시간제약, 기억공간 제약, 가상기계 없음 개인능력과경험 분석능력, 응용경험, 프로그래머능력, 프로그래머경험, 언어및도구사용경험, 연속성 프로젝트비용승수 없음 개발기간, 개발환경에대한요구 소프트웨어도구사용, 개발기간, 여러사이트개발요구 20
기능점수방법 l 기능점수 (function points) l 정확한라인수는예측불가능 l 입력, 출력, 질의, 화일, 인터페이스의개수로소프트웨어의규모를나타 냄 l 각기능에가중값 ( 표 2.6) l 기능점수 1 을구현하기위한 LOC 어셈블리언어 (324), C 언어 (150), Pascal(91), Ada(71), APL(32) l 복합가중값을이용한기능점수산출 ( 표 2.7) l 총라인수 = FP * 원하는언어의 1 점당 LOC l 개발노력 = 총라인수 / 생산성 (LOC/MM) 21
기능점수기본개념 l 기능점수는총기능점수 (Gross Function Point) 와처리복잡도보정계수 (Processing Complexity Adjustment) 를곱한것이다. FP = GFP ⅹ PCA l 기능점수는구현되는언어에관계없는메트릭이다. l 기능점수방법은모든항목에일률적인가중치가적용되므로문제가있을수있다. 22
기능점수구하는방법 1. 다섯가지기능분야에해당되는개수를파악 2. 다섯각기능에대한복잡도 ( 단순, 중간, 복잡 ) 를결정 3. 각기능분야의개수와복잡도가중치를곱하여총기능점수 (GFP) 를구한다. 4. 14 개의질문을이용하여각처리복잡도의정도에따라 0 에서 5 까지할당한다. 5. 처리복잡도보정계수 (PCA) 를다음식을이용하여구한다. 6. 다음식에넣어기능점수를구한다. 23
기능점수를이용한노력추정 l 파악된기능 l 사용자입력 = 10 개, 사용자출력 = 5 개, 사용자질의 = 8 개, 자료파일 = 30 개, 외부인터페이스 = 4 개, 복잡도는모두단순 l 처리복잡도 l 신뢰도높은백업, 사용친근성은매우높이요구되며나머지는보통 l 생산성 l 60 FP/week l 해답 l [ 표 3.5] 에대입하여 GFP 를구한다. GFP = 10 Í 3 + 5 Í 4 + 8 Í 3 + 30 Í 7 + 4 Í 5 = 304 FP l 처리복잡도보정계수구하면 PCA = 0.65 + 0.01(12 Í 3 + 2 Í 3) = 1.11 l FP 를보정 FP = GFP Í PCA = 304 Í 1.11 = 337.44 FP l 추정노력 (E) = FP / 생산성 = 337.44 / 60 = 5.624 persons-week 24
국내기능점수산정가이드 l 정보통신연구진흥원의소프트웨어공학에서산정기준을제시 [ 소프트웨어공학센터, 2010] l 산정기준의큰틀은 COCOMOII 의초기설계모델을따른다. l 외부입력 (External Input) l 외부출력 (External Output) l 내부논리파일 (Internal Logical File) l 외부인터페이스파일 (External Interface File) l 외부조회 (External Query) 25
3.3 일정계획 (Scheduling) l 일정계획 개발프로세스를이루는소작업 (activity) 를파악하고순서와일정을정하는작업 l 개발모형결정 l 소작업, 산출물, 이정표설정 l 작업순서 l 작업분해 (Work Breakdown Structure) l CPM 네트워크작성 l 최소소요기간을구함 l 소요 MM, 기간산정하여 CPM 수정 l 간트차트로그림 26
작업분해 (Decomposition) l 작업분해프로젝트완성에필요한 activity를찾아냄 l Work Breakdown Structure l 계층적구조 27
작업순서결정및소요시간예측 소작업선행작업소요기간 ( 일 ) A B C D E F G H I J K L - - A - B, D A, B A D C, F G, E I K 8 15 15 10 10 5 20 25 15 15 7 10 28
Activity 네트워크 29
임계경로 가능경로소요기간 ( 일 ) S-A-M1-C-M4-I-M6-K-M8-L-X S-A-M3-F-M4-I-M6-K-M8-L-X S-A-M1-G-M7-J-X S-B-M3-F-M4-I-M6-K-M8-L-X S-B-M2-E-M7-J-X S-D-M2-E-M7-J-X S-D-M5-H-X 55* 45 43 52 40 35 35 30
CPM 네트워크 l 장점 l 관리자의일정계획수립에도움 l 프로젝트안에포함된작업사이의관계 l 병행작업계획 l 일정시뮬레이션 l 일정점검, 관리 l 관리에대한작업도포함가능 l 작업시간을정확히예측할필요 l 소프트웨어도구 l MS-Project, MS-Works 등 31
간트차트 l 간트차트 l 소작업별로작업의시작과끝을나타낸그래프 l 예비시간을보여줌 l 계획대비진척도를표시 l 개인별일정표 32
프로젝트일정표 4/7 11/7 18/7 25/7 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9 Start T4 T1 T2 M1 T7 T3 M5 T8 M3 M2 T6 T5 T9 M4 M7 T10 M6 T11 M8 T12 Finish 33
Staff Allocation 4/7 11/7 18/7 25/ 1/8 8/8 15/8 22/8 29/8 5/9 12/9 19/9 Fred Jane Anne Jim Mary T4 T1 T2 T3 T7 T8 T6 T5 T9 T10 T11 T12 34
애자일계획 l 애자일프로세스의일정계획 l 장점 l 높은우선순위를가진사용사례가조기에개발되어설치된다는확신 l 사용사례사이에선행관계를지킬수있다. l 각열의점수의합은개발팀의작업속도를초과하지않아야한다. 35
3.4 조직계획 l 조직의구성 l 소프트웨어개발생산성에큰영향 l 작업의특성과팀구성원사이의의사교류 l 프로젝트의구조 l 프로젝트별조직 프로젝트시작에서개발완료까지전담팀 l 기능별조직 계획수립분석팀, 설계구현팀, 테스트및유지보수팀 Pipeline 식공정 l 매트릭스조직 요원들은고유관리팀과기능조직에동시에관련 필요에따라요원을차출팀을구성하고끝나면원래의소속으로복귀 36
책임프로그래머팀 l 의사결정권이리더에게집중 l 계층적팀구조 (chief programmer team) l 팀원역할 l 외과수술팀구성에서따옴 l 책임프로그래머 : 제품설계, 주요부분코딩, 중요한기술적결정, 작업의지시 l 프로그램사서 : 프로그램리스트관리, 설계문서및테스트계획관리 l 보조프로그래머 : 기술적문제에대하여상의, 고객 / 출판 / 품질보증그룹과접촉, 부분적분석 / 설계 / 구현을담당 l 프로그래머 : 각모듈의프로그래밍 37
책임프로그래머팀 l 특징 l 단점 l 의사결정이빠름 l 소규모프로젝트에적합 l 초보프로그래머를훈련시키는기회로적합 l 한사람의능력과경험이프로젝트의성패좌우 l 보조프로그래머의역할이모호 책임프로그래머 백업 프로그램사서프로그래머보조프로그래머 38
에고레스팀조직 l 민주주의식의사결정 l 서로협동하여수행하는비이기적인팀 (Ego-less) l 자신이있는일을알아서수행 l 구성원이동등한책임과권한 l 의사교환경로 l 특징 l 작업만족도높음 l 의사교류활성화 l 장기프로젝트에적합 l 단점 l 책임이명확하지않은일이발생 l 대규모에적합하지않음 ( 의사결정지연가능 ) 39
혼합형팀조직 l 집중형, 분산형의단점을보완 l 특징 l 초보자와경험자를분리 l 프로젝트관리자와고급프로그래머에게지휘권한이주어짐 l 의사교환은초보엔지니어나중간관리층으로분산 l 소프트웨어기능에따라계층적으로분산 l 단점 l 기술인력이관리를담당 l 의사전달경로가김 40
3.5 위험관리 l 위험관리의목적은위험이발생되었을때의영향을줄이는것이다. l Boehm 이제안한위험관리 [Boehm, 1991] l 위험파악 l 위험분석 l 위험우선순위정하기 l 위험해결 l 위험모니터링 41
위험파악 (1) 위험요소 위험관리기법 1. 인력부족 - 유능한인력모집, 팀구성, 요원배치, 교차-교육, 유능인력사전확보 2. 비현실적일정 - 더자세한비용, 일정예측, 원가분석, 및예산 점증적개발, 소프트웨어재사용요구를 줄임 3. 잘못된기능의 - 사용자회람, 프로토타이핑, 사용자지침 소프트웨어개발서를조기에작성, 조직분석, 직능분석 4. 잘못된인터페 - 프로토타이핑, 시나리오, 태스크분석, 이스의개발 사용자분류 ( 기능, 스타일, 업무 ) 5. 과포장 ( 필요 - 요구삭감, 프로토타이핑, 비용-수익 지않을좋은 분석, 원가분석 기능을추가 ) 42
위험파악 (2) 위험요소 위험관리기법 6. 계속적인 - 최대변경상한선, 정보은닉, 점증적 요구변경 개발 ( 다음버젼까지변경을연기 ) 7. 외부모양의 - 벤치마킹 ; 검사 ; 대조확인 ; 성숙도분석 빈약 8. 외부기능의 - 대조확인 ; 사전검증 ; 설계경연 ; 팀작업 빈약 9. 실시간성능 - 시뮬레이션, 벤치마킹, 모델링, 의빈약 프로토타이핑, 튜닝 10. 기술적취약 - 기술분석, 비용-수익분석, 프로토타이핑 ; 점검 43
위험분석과우선순위정하기 l 위험분석은각위험에대한피해정도, 위험해결방법, 이에대한비용들을결정하는것이다. l 손실발생확률 l 손실발생규모 l 위험노출 (exposure) 44
위험해결과모니터링 l 위험해결은위험관리계획에명시된위험을줄이는기법을구현하고실행하는것이다. 위험관리프로세스 45
3.6 계획서작성 1 개요 1.1 프로젝트개요 1.2 프로젝트의산출물 1.3 정의, 약어 2 자원및일정예측 2.1 자원가. 인력나. 비용 2.2 일정 3 조직구성및인력배치 3.1 조직구성 3.2 직무기술 46
계획서작성 4 WBS 5 기술관리방법 5.1 변경관리 5.2 위험관리 5.3 비용및진도관리 5.4 문제점해결방안 6 표준및개발절차 6.1 개발방법론 7 검토회의 7.1 검토회일정 7.2 검토회진행방법 7.3 검토회후속조치 47
계획서작성 8 개발환경 9 성능시험방법 10 문서화 11 유지보수 12 설치, 인수 13 참고문헌및부록 48
도구 l 프로젝트계획과관리도구 l 노력추정을위한도구 l 일정계획및진도관리도구 l 문서및버전관리도구 49
Questions?