dongdorodongdong
프로젝트 관리 본문
정의
- 프로젝트를 계획대로 완료될 수 있도록 관리하는 것
- 생명 주기의 전 과정에 걸쳐 진행
- 최소 비용으로 사용자의 최대 만족
3P
- 프로젝트 관리를 효과적으로 하기 위한 3대 요소
- People (사람)
"인적 자원" - Problem (문제)
"문제 인식" - Process (프로세스)
"작업 계획"
관리 대상
- 계획
- 개발팀
- 비용
- 일정
- 위험
- 형상
- 품질
- 고객 관리는X
1. 계획 관리
- 정의
- 프로젝트 수행 전 S/W 개발 범위, 자원, 비용, 일정 등을 예측하는 작업
- 제한된 자원과 일정에 대한 최적의 방법을 찾고자 노력 - 예측 대상
- 범위
- 비용
- 성능
- 유지보수, 위험성은 X - S/W 영역 결정 사항
- 기능
- 성능
- 제한조건
- 신뢰도
- 위험성
- 인터페이스
"기존의 S/W와 새로운 S/W를 연결" - 소프트웨어 Scope(범위) 결정의 주요 요소
- 소프트웨어 성능
- 소프트웨어 제약조건
- 소프트웨어 신뢰도
2. 개발팀 관리
- 중앙 집중형
"책임 프로그래머 팀"
- 한 사람에 의하여 통제
- 소규모 프로젝트에 적합
- 책임 프로그래머 : 분석, 설계, 작업 지시 등 모든 기술적 판단
- 보조 프로그래머 : 책임 프로그래머 업무 지원
- 프로그래머 : 코딩, 검사, 디버깅, 문서 작성 등
- 프로그램 사서 : 프로그램 리스트, 설계 문서, 검사 계획 등
- 분산형
"민주주의 식"
- 링모양 구조
- 모든 팀 구성원이 동등한 위치
- 장기 프로젝트에 적합
- 서로의 일을 검토하고 결과에 대해 같은 그룹의 일원으로 책임
- 의사 교류 활성화
- 다양한 의사 교류로 인해 의사 결정 시간이 늦어질 수 있음 - 계층형
"혼합형"
- 중앙집중형 + 분산형
- 초보 프로그래머를 작은 그룹으로 만들어 각 그룹을 고급 프로그래머가 관리하게 함
3. 비용 관리
- 비용 결정 요소
- 프로젝트 요소
"제품의 복잡도, 시스템의 규모, 요구되는 신뢰도"
- 자원 요소
"인적, H/W, S/W 자원" *H/W 성능은 X
- 생산성 요소
"개발자 능력, 경험, 개발 기간" - 정확한 비용 예측 방법
- 수행된 유사 프로젝트를 참고
- 프로젝트를 세분화하여 예측
- 경험적 예측 모델을 활용 - 특징
- 개발완료기간을 앞당기면 비용은 더 증가 - 비용 예측 기법
- LOC 기법
"원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측"
"자세한 내용은 아래에"
- Effort Per Task 기법
"필요한 노력을 생명주기 각 단계별로 산정"
- 전문가 감정 기법
"경험 많은 전문가에게 의뢰"
- 델파이 기법
"전문가 감정 기법의 주관성 때문에 의견들을 통합" - 비용 예측 모형
- COCOMO
"자세한 내용은 아래에"
- Putnam
"이 모형을 기초로 해서 SLIM이라는 자동화 추정 도구를 만듬"
- Function-Point
"입력, 출력, 질의, 파일, 인터페이스의 갯수로 S/W의 규모를 표현"
"경험을 바탕으로 단순, 보통, 복잡한정도에 따라 가중치 부여"
"프로젝트의 영향도와 가중치의 합을 이용하여 기능 점수를 계산"
"원시코드의 구현에 이용되는 프로그래밍 언어에 종속적X"
4. 일정 관리
- 일정 관리 기법
- WBS
- PERT/CPM
- Gantt Chart - Brooks의 법칙
- 진행중인 프로젝트에 새로운 인력이 투입될 경우 작업 적응 기간과 부작용으로 인해 빠른 시간 내에 프로젝트 완료X, 프로젝트에 혼란 - 일정 계획 순서
1. 프로젝트 규모 측정
2. 소단위 작업 분해
3. 각 작업의 상호관계를 CPM 네트워크로 표현
4. 간트차트로 표현
5. 위험 관리
- 예상되는 각종 돌발 상황을 미리 예상하고 적절한 대책을 수립하는 활동
- 절차
1. 위험 식별
2. 위험 분석 및 평가(위험표)
3. 위험 관리 계획
"대책을 문서화하는 작업"
4. 위험 감시 및 조치
"회피 : 최상의 전략으로 위험이 발생될 것을 예상하고 회피"
"감시 : 위험 징후들에 대하여 계속적으로 인지"
"관리 : 회피 전략이 실패할 경우에 관리, 대비책과 비상계획을 수립" - 위험표 포함 사항
- 내용, 종류, 발생 확률, 영향력, 감시 및 조치
- 발생 시간은 X - 위험 요소
- 사용자 요구사항 변경
- 인력 부족
- 예산 부족 - 위험 모니터링
- 위험 요소 징후들에 대해 계속적으로 인지 - 대표적 특성
- 불확실성
- 손실
6. 형상 관리
- S/W 개발 단계의 각 과정에서 만들어지는 프로그램, 문서, 데이터 등을 확인, 기록, 보관하는 일련의 작업
- 개발 과정의 변경 사항을 관리
- 특징
- 유지보수 단계에서 행해짐 - 항목
- 정의, 개발 단계의 문서 및 프로그램
- 유지보수 단계의 변경 사항
- 프로그램 내의 자료구조
- 비용은 X
7. 품질 관리
- 항목이나 제품이 설정된 요구사항이 일치하는지를 적절하게 확인하는 활동
- 항목
- 정확성(Correctness)
"사용자의 요구 기능을 얼마나 충족하는지"
- 신뢰성(Reliability, 가용성)
"오류 없이 옳은 결과를 얻어낼 수 있는지"
- 이식성 (Portability)
"다른 H/W 환경에서 운용이 가능한지"
"하나 이상의 H/W 환경에서 운용되기 위해 쉽게 수정될 수 있는 능력"
- 상호운용성
"다른 S/W와 정보를 교환할 수 있는지"
- 유지보수성
"수정에 대해 노력이 얼마나 최소화 되는지"
- 효율성 (Efficiency)
"기능을 수행할 때 자원이 얼마나 필요한지"
"시간 경제성, 자원 경제성 등의 품질 기준"
- 무결성
"허가되지 않은 사용, 변경을 얼마나 제어할 수 있는지"
- 사용 용이성
"사용하기가 얼마나 쉬운지"
- 유연성
"수정을 얼마나 쉽게 할 수 있는지"
- 시험 용이성
"평가를 얼마나 쉽게 해주는지"
- 재사용성
"다른 응용 목적으로 사용 가능한지"
- S/W 종속성, 중복성, 복잡성, 최적화는 X
- 개발자 관점에서 간결성은 X - 품질관리 위원회
- 품질보증
"S/W가 이미 설정된 요구 사항과 일치하는가를 확인"
"S/W의 요구 사항과 특성을 파악하여 품질 목표를 설정하고 정형 기술 검토를 통하여 품질 목표와 충족 여부를 점검하며, 개발 후에는 디버깅과 시험 과정을 거침"
- FTR : Formal Technical Review (정형 기술 검토)
"가장 일반적인 검토 방법"
"검토중인 S/W가 해당 요구사항과 일치하는지를 검증"
"의제 제한성 : 의제를 제한한다"
"논쟁과 반박의 제한성 : 논쟁과 반박을 제한 한다"
"검토의 집중성 : 제품의 검토에만 집중해야 한다"
"참가 인원을 제한한다, 메모를 공유한다 등"
- Walkthrough (검토 회의)
"각 단계가 끝나면 검토 회의"
"오류 검출에 초점, 해결책은 나중에"
"발견된 오류는 문서화"
- Inspections (검열)
"검토 회의를 발전시킨 형태"
"산출된 결과물의 품질을 평가하여 이를 개선시키는 데 사용" - 신뢰성(가용성) 측정
- 고장 나지 않은 시스템의 운용 기간 / 전체 운용 기간
LOC 기법
- 정의
- Line Of Code
"원시코드 라인 수"
- PM
"개발에 소요되는 기간을 1개월로 할 경우 필요한 인원 수" - 예시
1. 두 명의 개발자가 5개월에 걸쳐 10,000 라인의 코드를 개발
- PM = 10,000 / 5 * 2 = 1,000
2. 10명의 개발자가 10개월에 참여, 하지만 7명은 10개월 동안 계속 참여하고 3명은 3개월 동안만 참여.
- PM = 7*10 + 3*3
3. LOC 기법을 통한 예측 라인수가 25,000일 때, 개발자가 5명이고 명당 평균 생산량이 월당 500일 때 기간은?
- 25,000 / 5 * 500 = 10
COCOMO 모형
- 정의
- Boehm이 제안한 원시 프로그램 소스 코드의 규모에 의해 비용 예측 - 특징
- S/W의 종류에 따라 다르게 책정된다
- 같은 규모의 프로그램이라도 성격에 따라 비용이 다르게 책정
- S/W 개발비 견적에 널리 통용
- 모든 시스템에 동일하게 적용할 수 없다. - 모형
- Basic COCOMO (기본)
"S/W의 크기, 개발 유형만 고려"
- Intermediate COCOMO (중간)
"S/W의 특성, PC의 특성, 개발자의 특성, 프로젝트의 특성을 고려"
- Detailed COCOMO (진보)
"중간형을 보완하여, 공정별로 보다 자세하게 노력을 산출하여 비용 산정" - 유형
- Organic 프로젝트 (유기형)
"5만 라인 이하 규모"
- Semi-Detached 프로젝트 (반분리형)
"30만 라인 이하 규모"
- Embedded 프로젝트 (내장형)
"30만 라인 이상 규모"
소단위 작업 분해
- 프로젝트를 여러 개의 작은 소단위로 분해하여 계층 구조로 표현
PERT / CPM
- 특징
- Critical Path Method (임계 경로 기법)
- 노드와 간선으로 구성된 네트워크
- 효과적으로 사용하기 위해서는 필요한 시간을 정확히 예측해야 함
- 지연을 방지하고 계획대로 진행되게 하기 위한 방법
- 병행작업이 가능하도록 계획 가능
- 통계적 모델을 적용
- 간선은 작업 사이의 전후 의존 관계를 나타냄
- 프로젝트를 위한 작업을 나열하고 필요한 소요 기간을 예측하는 데 사용
- 정확한 예측은 불가능
- 다른 일정계획안 시뮬레이션 가능
- 최장경로 파악 가능 - PERT
- 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크
- 원 노드에는 작업을, 간선에는 낙관치, 기대치, 비관치를 표시 - CPM
- 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
- 원 노드에는 작업을, 간선에는 작업 사이의 전후 의존 관계를 나타냄
Gantt Chart
- 특징
- 각 작업들이 언제 시작하고 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시
- 작업 경로는 표시X
'Software Engineering' 카테고리의 다른 글
CASE (Computer Aided Software Engineering) (0) | 2019.04.15 |
---|---|
소프트웨어 재사용/재공학/역공항 (0) | 2019.04.15 |
객체지향 개발 방법론 (0) | 2019.04.15 |
소프트웨어 생명 주기 (0) | 2019.04.13 |
구조적 개발 방법론(5. 디버깅 / 6. 유지보수) (0) | 2019.04.13 |