2022. 11. 27. 04:25ㆍOthers/SE
프로젝트 관리(Project Management)
소프트웨어 프로젝트를 조직하고(organizing), 계획하고(planning), 일정관리(scheduling) 하는 작업
프로젝트 관리의 목적 : 작업 수행에 필요한 여러 가지 자원, 인력, 비용, 재료, 기술 등을 가장 효과적으로 사용하여 프로젝트의 목표 달성
관리의 어려움 : 소프트웨어 프로덕트는 만질 수 없고 눈에 보이지 않음, 프로덕트가 매우 Flexible하여 변경이 쉽고, 진화하며, 에러를 내재함
프로젝트 관리 활동
- 계획
- 조직
- 모니터링
- 조정
프로젝트 시작
목표를 세우고 가치와 리스크를 이해, 프로젝트를 시작할 것인가의 결정 요인
프로젝트가 제공할 가치: 프로젝트에 의하여 창출되는 직/간접 가치. 프로젝트 결과물의 지속성
프로젝트와 관련된 리스크: 자원 가용성, 타이밍, 기술적 어려움과 불확정성
가치를 평가하는 방법
1) 투자 회수 기간
2) ROI(Return on Investment): 총비용에 대한 연간 평균 이익률
3) 순수 현재 가치
4) 평가표
5) SWOT: 강점(Strengths), 약점(Weaknesses), 기회요인(Opportunities), 위험(Threats)을 파악하여 타당성 이해
프로젝트 일정 계획
프로젝트 범위
소프트웨어 개발 프로젝트를 위한 계획은 대상 업무나 문제의 범위(Scope)를 정하는 것으로 부터 시작
일정 계획(Scheduling)
일정 계획 : 개발 프로세스를 이루는 소작업(activity)를 파악하고 순서와 일정을 정하는 작업
개발 모형 결정
소작업, 산출물, 이정표 설정
작업 순서
- 작업분해(Work Breakdown Structure, WBS)
- Critical Path Method(CPM) 네트워크 작성
- 최소 소요 기간을 구함
- 소요 MM, 기간 산정하여 CPM 수정
- 간트 차트 활용
CPM 네트워크
방향성 그래프(directed graph)
노드(node)는 소작업을 표시한다.
원형 노드: 소작업의 이름과 소요 기간을 기재한다.
박스 노드: 프로젝트 중간 점검(milestone)을 의미하며, 예상 종료일을 기재한다.
에지(edge)는 작업 사이의 선후 관계를 표시한다.
CPM 네트워크를 사용하여, 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요기간을 예측하는데 사용
장점
- 관리자의 일정 계획 수립에 도움
- 프로젝트 안에 포함된 작업 사이의 관계
- 병행 작업 계획
- 일정 시뮬레이션
- 일정 점검, 관리
* 임계 경로 (critical path)
프로젝트를 마치는데 있어서 가장 기간을 많이 차지하는 경로
임계 경로 내의 작업이 늦어지면 프로젝트 전체 일정이 늦어진다.
관리자는 임계 경로의 작업에 많은 신경을 써야 한다.
애자일 프로세스의 일정 계획
장점
- 높은 우선순위를 가진 사용 사례를 조기에 개발
- 사용 사례 사이에 선행관계를 지킬 수 있다.
- 각 열의 점수의 합은 개발 팀의 작업속도를 초과 하지 않아야 한다.
비용예측 기법
노력(Effort), 자원(Resource), 기간(Duration)의 관계
M(Manpower): 인력의 투입 비율의 총합
D = E/M
e.g.) 80시간의 노력, 2명 100% 투입, D= 80시간/(2명*40시간)=1주
80시간의 노력, 1명 50% 투입, D= 80시간/(1명*20시간)=4주
비용 예측의 중요한 변수는 투입되는 엔지니어의 인원수와 작업 기간
비용 예측 기법
- 전문가 판단
- PERT(Program Evaluation and Review Technique)
- 알고리즘식 방법: 프로젝트의 추정 가능한 특징을 함수로 정의
PERT
하나의 작업에 대해 세 가지 관점의 추정치 계산
- 낙관적(Optimistic)일 때 소요 예측 기간
- 보통(Most Likely) 일 때 소요 예측 기간
- 비관적(Pessimistic) 일 때 소요 예측 기간
Putnam Model
B = 1/ T4 * (size / C)3 = K / T4
- B: Total person months
- T: required development time in years
- size: estimated LOC
- C: Technical constant
프로젝트의 노력(Effort)은 남은 개발 기간의 4제곱에 반비례
COCOMO 모델의 개요 (COnstructive COst MOdel)
소스코드의 크기를 기반으로 개발비용, 개발기간 및 개발인원을 추정
인적 속성, 프로젝트 속성, 제품 속성, 하드웨어 속성에 따른 15가지의 특성치에 따라 결과값이 조정됨 (Intermediate, Detailed 모델의 경우)
개발 단계별로 분석 가능한 모델로 평가
개발 및 유지보수를 위한 비용 견적에 유용하여 널리 통용됨
3가지 모드
Organic mode (비교적 낮은 복잡도의 프로젝트)
Semidetached mode (중간 정도 복잡도의 프로젝트)
Embedded mode (비교적 높은 복잡도의 프로젝트)
3가지 모델
Basic COCOMO: LOC를 기반으로 함, 프로젝트 초기에 적용
Intermediate COCOMO: LOC, 가중치 계수를 이용, 요구사항 명세가 작성된 후 적용
Detailed COCOMO: 모듈, 서브 시스템별로 세분화하여 계산, 설계 작업 완료 후 적용
COCOMO II의 개요
재사용의 강화나 컴포넌트를 이용한 조립개발과 같은 당시 새로운 개발환경을 반영함
object point, function point, LOC 등의 값을 기반으로 COCOMO와 같은 방식으로, 경험으로 도출된 상수들을 사용하여 개발노력을 도출함
1단계. 프로토타입 만드는 단계: Application Composition Model/Early Prototyping Model
- 화면이나 출력 등 사용자 인터페이스, 3 세대 언어 컴포넌트 개수를 세어 응용 점수(application points)를 계산. 이를 바탕으로 노력을 추정
- 작은 팀이 몇 주의 기간 동안 개발하는 경우에 사용하며, GUI builder나 컴포넌트들을 이용하여 조립개발을 하는 경우 사용
2단계. 초기 설계 단계: Early Design Model
- 비교적 개발의 초기 단계에서 주로 사용
- 실제 개발할 소프트웨어의 크기, 운영환경의 특성, 프로젝트에 참여할 관련자, 수행할 프로세스의 세부사항 등에 대한 정보가 부족할 때 사용
3단계. 구조 설계 이후 단계: Post-Architecture Model
- 가장 세부적인 COCOMO II 모델
- 소프트웨어 생명주기가 확립된 후에 사용
- 소프트웨어를 개발하고 유지 보수하는 동안 사용
Object Point = ∑ (객체 인스턴스의 수 * 객체 인스턴스의 복잡도 가중치)
Function Point
- 기능 점수는 총 기능 점수(Gross Function Point)와 처리 복잡도 보정 계수(Processing Complexity Adjustment)를 곱한 값
- FP = GFP ⅹ PCA
직능별 조직
서로 다른 부서가 한 프로젝트의 다른 단계에 들어와 작업을 수행
팀원은 한 부서에 소속, 프로젝트의 협력은 부서별로
프로젝트별 조직
직능별 개발자들이 프로젝트에 배정
의사 전달 경로가 짧으며 인력, 진도 등 프로젝트 관리가 수월
매트릭스 조직
직능별 조직의 관리자가 프로젝트 책임을 맡고 직능별 조직 부서에 소속된 개발자가 프로젝트에 참여
애자일 조직
서로 밀접하게 협력하는 5~9명의 팀
결과와 이슈에 대한 오너쉽을 공유