이 글은 충남대학교 김현수 교수님의 수업을 바탕으로 작성한 글입니다.
이번 시간에는 프로젝트를 어떻게 관리해야 할지에 대해 알아보자
1. 프로젝트 관리
정의 : 프로젝트를 계획하고 수행하는데 필요한 모든 작업을 관리하는 것
- 필요한 작업의 결정
- 인력 확보
- 직무 정의
- 일정 계획
- 작업 준비
- 비용 예측
- 지시, 감독
- 결정 검토 및 승인
- 팀원 사기 진작
- 다른 프로젝트 관리자와 협력
- 프로세스 개선
프로젝트 관리 활동
- 제안서 작성 => 프로젝트 계획 및 스케줄링 => 프로젝트 비용 계획 => 프로젝트 모니터링 및 검토 => 인력 선발 및 평가 => 보고서 작성 및 프레젠테이션
# 프로젝트 계획
1. 프로젝트 계획 수립
- 시간이 많이 걸리는 프로젝트 관리 활동
- 초기 개념에서 시스템 제공에 이르기까지 지속되는 활동
- 새로운 정보를 이용할 수 있을 때마다 계획을 정기적으로 수정
- 주요 소프트웨어 프로젝트 계획을 지원하기 위한 다양한 종류의 계획
# 프로젝트 개발 노력 추정
# 기능 점수 모델
- 논리적 설계를 기초로 사용자에게 제공되는 소프트웨어의 기능을 정량화하여 소프트웨어 규모 산정(SW 기능의 복잡도를 점수화)
- 데이터 관리 위주의 소프트웨어에 적합
- 조직에 관계없이 애플리케이션 복잡도 계산의 일관성 제공
- 프로그래밍 언어와 무관하게 객관적인 복잡도 산정이 가능
- 기능 점수 모델의 다섯 가지 소프트웨어 구성 요소
>> 트랜잭션기능(외부 입력, 외부 출력, 외부 질의), 데이터 기능(내부 논리 파일, 외부 인터페이스 파일)
1. 기능 점수 모델 : VAF 산정
- 14개의 기술적 분야에 대한 복잡도를 고려하여 0 ~ 5의 점수 부여
>>
- TCF 계산
>> TCP = 0.65 + [0.01 x 시그마(1~14)VAF]
>> TCP 값 범위 : 0.65 ~ 1.35
2. 기능 점수 모델 : AFP 산정
- AFP = UFP x TCF
>> AFP : 단지 크기에 대한 추정 값
- 노력 추정 = (w FP) / (y FP / 1MM) = z MM
>> FP/1MM : 개발 팀의 생산성(개발자 1인이 1개월에 개발할 수 있는 평균 FP)
3. 객체 점수 모델
- 객체지향 시스템을 개발할 때 객체를 기초로 한 추정 방법
# 프로젝트 일정 관리
1. 프로젝트 일정 관리 프로세스
- 활동 정의
- 활동 순서 정의
- 활동 자원 추정
- 활동 기간 추정
- 일정 계획 수립
- 일정 통제
2. 프로젝트에서의 활동
- 관리 측면에서 진행 상황을 판단할 수 있도록 가시적 산출물을 생산하도록 조직되어야 함
3. 일정 계획 수립
- 개발 프로세스를 이루는 활동을 파악하고 순서와 일정을 정하는 작업
- 산출물 생산에 소요되는 작업 결정
- 작업 예상 시간 결정
- 선행 작업 파악 : 작업의 종속 관계 파악
4. PERT/CPM 차트
- 세분화된 작업을 효율적으로 일정 관리 및 지원하기 위한 기법
- 관리에 대한 작업도 포함 가능
- 작업 시간을 정확하게 예측할 필요
-장/단점
>> 관리자의 일정 계획 수립에 도움
>> 프로젝트 안에 포함된 작업 사이의 관계 표현
>> 병행 작업 계획
>> 일정 시뮬레이션, 점검, 관리 가능
임계 경로를 구한다. 임계 경로는 Pert Chart에서 소요 기간이 가장 긴 경로를 말한다. 프로젝트를 완수하기 위해 필요한 최소시간을 나타낸다.
간트 차트 : 활동 별로 작업의 시작과 끝을 나타낸 그래프
- x 축 : 시간
- y 축 : 직압
- 마일스톤 : 마름모 표시
- 파란색 막대 : 여유 시간
- 계획 대비 진척도를 표시
- 개인별 일정표
애자일 일정 계획 : 스토리카드 단위의 일정 계획
- 사용자 스토리, 점수, 비즈니스 우선순위, 연관된 스토리 등을 기록
# 프로젝트 인적 자원 관리
1. 프로젝트에 이상적인 사람을 선정하지 못할 가능성이 있음
- 프로젝트 예산으로 인해
- 경험이 없는 인력이 제공
- 조직은 직원들의 역량이 개발되기를 원함
2. 관리자
- 특히 훈련된 인력이 부족시 제약 조건 내에서 일할 수 있는 능력을 갖춰야 함
3. 조직의 구성
- 결과물 및 소프트웨어 개발 생산성에 큰 영향
- 역할과 책임 배정
- 조직 관리
4. 조직 선택에 영향을 주는 요소
- 작업의 특성
- 팀 구성원의 의사 교류 횟수
5. 소프트웨어 개발 팀 구성
- 계층형 팀(초보자와 경험자 분리, 고급 프로그래머에게 지휘 권환, 의사 교환은 초보 엔지니어나 중간 관리층으로 분산)
>> 소프트웨어 구조가 계층적으로 잘 나누어진 경우에 적합
>> 대규모 프로젝트의 경우 여러 계층으로 구성
>> 기술 인력이 관리를 담당
>> 의사 전달 경로가 김
- 에고리스 팀(민주주의 방식 의사 결정, 서로 협동하여 수행, 자신의 일을 알아서 수행, 구성원이 동등한 책임과 권한)
>> 작업 만족도 높음
>> 의사 교류 활바
>> 복잡하고 이해되지 않는 문제가 많은 장기 프로젝트에 적합
>> 책임이 명확하지 않은 일이 발생
>> 대규모 프로젝트에 적합하지 않음(의사 결정 지연 가능)
- 책임 프로그래머 팀(작은 팀으로 구성, 책임 프로그래머가 통제, chief programmer team(프로그램 사서, 보조 프로그래머, 프로그래머)
>> 의사 결정이 빠름
>> 소규모 프로젝트에 적합
>> 초보 프로그래머를 훈련시키는 기회로 적합
>> 한 사람의 능력과 경험이 프로젝트의 성패 좌우
7. 효과적인 팀 규모 선택
- 최적의 팀 규모를 정해야함(인원이 2배라고 시간이 절반이 되진 않음)
- 서브시스템과 팀은 필요한 지식의 총량과 정보 교환이 감소하도록 크기가 정해져야함
- 프로젝트 반복의 경우, 인원 수는 일정하지 않을 수 있음
- 스케쥴이 늦을 경우 인력 보강 가능
# 프로젝트 위험 관리
- 프로젝트 위험은 일정 또는 리소스에 영향
- 재품 위험은 품질 또는 성능에 영향
- 비즈니스 위험은 개발 조직에 영향
이를 관리하는 프로세스도 있을까? 당연히 있다!
위험 관리 프로세스에는 위험 식별, 위험 분석, 위험 대처 계획 수립, 위험 모니터링이 있다!
- 위험 모니터링은 프로젝트 전반에 걸쳐 위험 모니터링 및 평가하는 것이다!
>> 위험 발생 가능성 여부를 정기적으로 평가
>> 위험의 영향이 변경되었는지 평가
- 각 주요 위험은 관리 진도 회의에서 논의되어야 한다
'CS > Software Engineering' 카테고리의 다른 글
[SE] 유스케이스 모델링 (5) | 2024.10.22 |
---|---|
[SE] 요구사항 정의 및 개발 (0) | 2024.10.21 |
[SE] 소프트웨어 프로세스 (2) | 2024.10.21 |
[SE] 소프트웨어 공학의 개요 (6) | 2024.10.21 |