프로젝트 관리 필요성
소프트웨어 개발 프로젝트가 실패하는 이유
- 부족한 소프트웨어 마인드
- 소프트웨어 공학기술의 활용 미흡
- 부족한 프로젝트 관리 기술
프로젝트 관리의 정의
개발자 또는 개발 팀이 프로젝트 목표를 효율적이고 효과적으로 달성하는데
필요한 내적 환경 요소들을 준비하고 유지하는 활동
프로젝트 관리 단계
1단계 : 계획 수립
소프트웨어 개발 목적, 필요 자원, 정보의 흐름, 소요 인력 등을 정의한다.
2단계 : 자원 획득
계획 단계에서 예측한 다양한 장비 및 시설 확보, 팀 구성 등과 같은 일을 수행하여
실제로 프로젝트가 수행될 여건을 마련한다.
3단계 : 실행
프로젝트 수행 계획서에서 정의한 일정에 따라 소프트웨어 개발 활동을 수행한다.
4단계 : 모니터링
프로젝트 관리 계획서에서 정의한 베이스라인에 근거해 개발활동에 대한 진척도를 관리하고 품질 모니터링한다.
프로젝트 관리의 실패 원인
1위 부정확한 요구사항
2위 사용자 환경 이해 부족
3위 프로젝트 관리 기술 부족
4위 부족한 자원
...
10위 개발자 기술 부족
프로젝트 관리 기법
▷ 일정 관리 기법
고려해야 할 요소
- 요구사항의 복잡도
- 개발자 규모 및 기술 수준
- 팀 구성 형태
- 개발 중 발생 가능한 리스크 정도
등등..
기본 입력 사항
어떤 프로세스 모델을 선정하였는가
어떤 베이스 라인을 정의할 것인가
프로세스 모델 : 폭포수 모델, 프로토타입 모델, 반복적 모델 등
베이스라인 : 어떤 변경이 발생하였을 때 모든 관련자의 합의를 거쳐 변경 사항을 결정한 다음
후속 작업을 수행하기 위한 출발점
베이스라인 관리
요구사항 베이스라인 : 요구사항을 수집하고 프로젝트 계획을 수립한 후에 정의하는 베이스라인
기능 베이스라인 : 요구사항 분석 단계 후에 설정하는 베이스라인
제품 베이스라인 : 소프트웨어 개발을 완료한 후에 정의하는 베이스라인
소프트웨어 개발 단계와 프로젝트 베이스라인

작업 분할도
프로젝트의 전체 목표를 중간의 세부 목표들로 쪼개어 나타낸 작업 목록이다.
프로젝트에서 수행해야 하는 모든 종류의 작업을 식별한다.
트리형태로 표현한다. 트리의 루트가 프로젝트의 전체 목표이다.
태스크(식별된 작업) : 추정 가능한 양의 작업, 독립적으로 이루어질 수 있을 때 까지 분할한다.
칸트 차트
프로젝트의 스케줄링, 예산 산정, 자원 계획을 수립하기 위해 사용하는 일정 표현 기법
바(Bar) 차트 형태로 표시하며 바의 길이에 비례해 소요 시간을 나타낸다.

퍼트 차트
프로젝트에서 수행되어야 하는 Task간의 의존성 관계를 표현하는 차트
원은 태스크를, 화살표는 태스크 간의 의존성을 표현한다.
임계 경로 : 각 경로상에 있는 태스크 수행 일수의 합이 가장 많은 경로
아래 퍼트차트에서 임계 경로의 작업 일수 합은 45일
? Latest Start Date(F) = 45 - (5+15+7) = 18

▷ 비용 관리 기법
COCOMO / COCOMO II
KDSI를 기반으로 비용 산정
개발 대상 소프트웨어에 대한 KDSI를 유사 소프트웨어를 비교 분석하고 산출 후에,
개발 소프트웨어 복잡도에 근거하여 개발 기간과 인원수를 산정한다.
PM : Person-Month (소요 인력)
TDEV : Total DEVelopment time (소요 일수) // 프로젝트를 종료하는데 소요되는 개월 수

전문가 판단
다수의 전문가가 모여 소프트웨어의 요구사항을 기준으로 소프트웨어 크기를 예상
WBD의 규모 산정 절차
전문가 그룹을 선정하고, 이들에게 WBD 진행 방식을 설명하게 되고 이후 진행된다.
~~
파킨슨의 법칙
소프트웨어 개발 비용이나 인력 수는 소프트웨어의 복잡도 및 기능 수와 관련 있찌만,
최종적으로는 개발 조직에서 가용한 예산과 인력에 의해 결정된다고 주장한다.
결국 조직의 인력에 개발 일정이 맞춰져 진행된다는 의미이다.
기능 점수 산정법
소프트웨어 시스템이 제공하는 기능의 필요 정도와 이의 복잡도를 기준으로 평가하는 방법
▷ 위험 관리
요구사항의 빈번한 변경, 프로젝트 팀원의 부적절성
재작업, 의사소통 증가와 같은 문제를 유발하고 프로젝트 성과를 저하시키는 요인이다.

프로젝트 조직
▷ 프로젝트 구성원의 역할
- 프로젝트 관리자(PM) : 프로젝트 관리 활동과 중요 이슈 해결
- 프로젝트 리더(PL) : 설계,구현에 대한 무결성 검증 및 팀 간의 기술적 조율, 일정 조정 등의 역할 수행
- 프로젝트 팀장(TL) : 프로젝트를 다수의 팀으로 구성했을 때, 팀을 주도적으로 이끌면서 팀의 기술적 문제를 해결
- 프로그램 엔지니어(PE) : 소프트웨어 개발과 관련된 역할을 넓은 의미에서는 엔지니어, 좁은 의미에서는 개발자
- 형상 관리자(CM) : 개발 과정에서 베이스라인 산출물 관리와 변경요청 처리 담당
- 품질 관리자(QE) : 개발 산출물에 대한 오류 확인과 결함 검출을 위한 리뷰, 테스트 활동 등을 계획하고 추진
- 리어종 그룹 : 비즈니스 그룹과의 의사소통을 담당
▷ 프로젝트 팀 구조

- 중앙집중형 팀 구조
프로젝트에서 수행해야할 작업 목록이 단순하거나 충분히 이해된 경우에 적합
유능한 프로젝트 리더가 필요
문제해결이 신속하게 이루어질 수 있고, 의사소통의 패턴이 매우 단순함
- 분산형 팀 구조
프로젝트의 주요 의사결정이 팀 구성원의 합의에 의해 이루어지는 민주주의적 팀 구성
문제가 복잡해 해결방안을 모색해야하는 경우에 적합
의사소통 패턴이 복잡해 대규모 구성원 프로젝트엔 적합하지 않을 수 있고, 장기간에 걸쳐 수행하는 프로젝트에 적용
- 하이브리드 팀 구조
중앙집중형 팀 구조와 분산형 팀 구조를 통합한 계층형 팀 구조
프로젝트 관리자 : 각 팀의 리더와 중요한 의사결정을 하기 위한 중앙집중형 구조
팀 내부의 운영 : 분산형 구조를 채택하여 의사소통
> 팀 구조 선정 전략
비용 절감 측면에서 효과적인가
팀 구성원의 이직이나 교체 발생 가능성이 있는가
신입에게 프로젝트 경험의 기회를 제공하는가
최신 기술 또는 특정 지식에 대해 공유, 전파 가능한가
▷ 전사적 운영 조직 // 전사적 - 회사 전반의
품질 관리팀
프로젝트 수행 과정에서 산출물에 대한 리뷰, 테스트 등과 같은 활동 지원
경험있는 중급 이상의 엔지니어들로 구성된다.
PMO (Project Management Office)
전사 차원에서 프로젝트 생성, 모니터링, 리스크 해결 등과 같은 업무를 수행하는 조직
종료, 진행중인, 계획된 프로젝트 등에 대한 포트폴리오를 관리하며 단위 프로젝트 관리자를 지원하고 통제
프로젝트 관리 계획서
▷ 계획서 작성 시 유의사항
- 문서의 목적 : 해당 문서가 어떤 목적으로 작성되며 어떤 내용을 포함하는지 설명
- 관련 문서 : 해당 문서와 관련된 공식적인 이전 베이스라인 산출물, 관련 표준 등
- 팀 구조 : 집중형 팀 구조, 분산형 팀 구조, 계층형 팀 구조 중 선정
- 품질 관리 적용 기법 : 리뷰, 테스트와 같은 품질 관리 활동 정의
프로젝트 지원 도구
▷ 프로젝트 관리 기능
- 계획 기능 : 팀 구성, WBS 생성, 태스크 할당, 마일스톤 정의
- 진도 관리 기능 : 태스크 수행 완료 및 진도 정보를 입력
- 협업 기능 : 협업 목표 설정, 협업 공간 생성, 상호 의사소통, 자료 공유
- 배포 기능 : 산출물 저장, 체크인/체크아웃, 검색 기능 제공
- 보고서 생성 기능 : 팀원을 위한 태스크 목록, 관리자를 위한 종합 보고서 제공
- 통합 기능 : 프로젝트 수행에 필요한 템플릿을 참조 모델로 제공
▷ PMO 도구
- 프로젝트 통합 관리 기능 : 프로젝트 진행의 적정성 검토 위한 feasibility(실행가능함) 분석이 제공된다.
- 프로젝트 범위 관리 기능 : 프로젝트에서 정의된 범위 대비 수행 결과를 비교,분석한다.
- 일정 및 진도 관리 기능 : 프로젝트 일정 계획의 조정 및 진도 관리한다.
- 산출물 품질 관리 기능 : 산출물별 적정성 및 산출물 간 일관성을 평가한다.
- 인적,물적 자원 관리 기능 : 자원과 프로젝트 투입 인력 현황과 투입 인력에 대한 적정성을 검토한다.
- 이슈 및 위험 관리 기능 : 전사 차원에서 이슈 및 위험 관리 체계 정의 및 공지
- 의사소통 관리 기능 : 의사소통 경로를 지원하고 회의록을 관리한다.- 성과 관리 기능 : 프로젝트에서 발생하는 성과를 관리, 활용하기 위한 계획 수립- 조직의 능력 관리 기능 : 프로젝트 관리,운영에 필요한 교육 훈련 실시
▷ 엔지니어링 도구
소프트웨어의 분석, 설계, 코딩, 테스트를 지원하는데 사용되는 도구
UML 기반의 객체지향 분석 및 설계 도구, 코딩 도구, 테스트 도구 등을 포함한다.
엔지니어의 실수를 줄이는 좋은 수단이고 협업을 지원한다.
요약정리)
> 성공적인 프로젝트 수행 위하 가장 중요한 요소?
> 프로젝트 관리 기법
- 일정 관리 : WBS, 간트차트, 퍼트차트
- 비용관리 : COCOMO, 기능 점수 등
- 위험/리스크 관리
> 프로젝트 조직 구성
중앙 집중형 구조 , 분산형 구조, 하이브리드 구조
> 프로젝트 지원 도구
- 프로젝트 관리 도구 : 프로젝트 직업 관리 및 진도 관리
- PMO 도구 : 전사차원의 프로젝트 상태 모니터링
- 엔지니어링 도구 : 분석, 설계, 코딩, 테스팅 도구
'전공 지식 정리 > 소프트웨어 공학' 카테고리의 다른 글
#8, #9 소프트웨어 공학 - 객체지향 분석, 모듈화 (0) | 2022.12.17 |
---|---|
#6, #7 소프트웨어 공학 - 소프트웨어 비용 산정, 요구사항 도출 (0) | 2022.12.12 |
프로젝트 관리 필요성
소프트웨어 개발 프로젝트가 실패하는 이유
- 부족한 소프트웨어 마인드
- 소프트웨어 공학기술의 활용 미흡
- 부족한 프로젝트 관리 기술
프로젝트 관리의 정의
개발자 또는 개발 팀이 프로젝트 목표를 효율적이고 효과적으로 달성하는데
필요한 내적 환경 요소들을 준비하고 유지하는 활동
프로젝트 관리 단계
1단계 : 계획 수립
소프트웨어 개발 목적, 필요 자원, 정보의 흐름, 소요 인력 등을 정의한다.
2단계 : 자원 획득
계획 단계에서 예측한 다양한 장비 및 시설 확보, 팀 구성 등과 같은 일을 수행하여
실제로 프로젝트가 수행될 여건을 마련한다.
3단계 : 실행
프로젝트 수행 계획서에서 정의한 일정에 따라 소프트웨어 개발 활동을 수행한다.
4단계 : 모니터링
프로젝트 관리 계획서에서 정의한 베이스라인에 근거해 개발활동에 대한 진척도를 관리하고 품질 모니터링한다.
프로젝트 관리의 실패 원인
1위 부정확한 요구사항
2위 사용자 환경 이해 부족
3위 프로젝트 관리 기술 부족
4위 부족한 자원
...
10위 개발자 기술 부족
프로젝트 관리 기법
▷ 일정 관리 기법
고려해야 할 요소
- 요구사항의 복잡도
- 개발자 규모 및 기술 수준
- 팀 구성 형태
- 개발 중 발생 가능한 리스크 정도
등등..
기본 입력 사항
어떤 프로세스 모델을 선정하였는가
어떤 베이스 라인을 정의할 것인가
프로세스 모델 : 폭포수 모델, 프로토타입 모델, 반복적 모델 등
베이스라인 : 어떤 변경이 발생하였을 때 모든 관련자의 합의를 거쳐 변경 사항을 결정한 다음
후속 작업을 수행하기 위한 출발점
베이스라인 관리
요구사항 베이스라인 : 요구사항을 수집하고 프로젝트 계획을 수립한 후에 정의하는 베이스라인
기능 베이스라인 : 요구사항 분석 단계 후에 설정하는 베이스라인
제품 베이스라인 : 소프트웨어 개발을 완료한 후에 정의하는 베이스라인
소프트웨어 개발 단계와 프로젝트 베이스라인

작업 분할도
프로젝트의 전체 목표를 중간의 세부 목표들로 쪼개어 나타낸 작업 목록이다.
프로젝트에서 수행해야 하는 모든 종류의 작업을 식별한다.
트리형태로 표현한다. 트리의 루트가 프로젝트의 전체 목표이다.
태스크(식별된 작업) : 추정 가능한 양의 작업, 독립적으로 이루어질 수 있을 때 까지 분할한다.
칸트 차트
프로젝트의 스케줄링, 예산 산정, 자원 계획을 수립하기 위해 사용하는 일정 표현 기법
바(Bar) 차트 형태로 표시하며 바의 길이에 비례해 소요 시간을 나타낸다.

퍼트 차트
프로젝트에서 수행되어야 하는 Task간의 의존성 관계를 표현하는 차트
원은 태스크를, 화살표는 태스크 간의 의존성을 표현한다.
임계 경로 : 각 경로상에 있는 태스크 수행 일수의 합이 가장 많은 경로
아래 퍼트차트에서 임계 경로의 작업 일수 합은 45일
? Latest Start Date(F) = 45 - (5+15+7) = 18

▷ 비용 관리 기법
COCOMO / COCOMO II
KDSI를 기반으로 비용 산정
개발 대상 소프트웨어에 대한 KDSI를 유사 소프트웨어를 비교 분석하고 산출 후에,
개발 소프트웨어 복잡도에 근거하여 개발 기간과 인원수를 산정한다.
PM : Person-Month (소요 인력)
TDEV : Total DEVelopment time (소요 일수) // 프로젝트를 종료하는데 소요되는 개월 수

전문가 판단
다수의 전문가가 모여 소프트웨어의 요구사항을 기준으로 소프트웨어 크기를 예상
WBD의 규모 산정 절차
전문가 그룹을 선정하고, 이들에게 WBD 진행 방식을 설명하게 되고 이후 진행된다.
~~
파킨슨의 법칙
소프트웨어 개발 비용이나 인력 수는 소프트웨어의 복잡도 및 기능 수와 관련 있찌만,
최종적으로는 개발 조직에서 가용한 예산과 인력에 의해 결정된다고 주장한다.
결국 조직의 인력에 개발 일정이 맞춰져 진행된다는 의미이다.
기능 점수 산정법
소프트웨어 시스템이 제공하는 기능의 필요 정도와 이의 복잡도를 기준으로 평가하는 방법
▷ 위험 관리
요구사항의 빈번한 변경, 프로젝트 팀원의 부적절성
재작업, 의사소통 증가와 같은 문제를 유발하고 프로젝트 성과를 저하시키는 요인이다.

프로젝트 조직
▷ 프로젝트 구성원의 역할
- 프로젝트 관리자(PM) : 프로젝트 관리 활동과 중요 이슈 해결
- 프로젝트 리더(PL) : 설계,구현에 대한 무결성 검증 및 팀 간의 기술적 조율, 일정 조정 등의 역할 수행
- 프로젝트 팀장(TL) : 프로젝트를 다수의 팀으로 구성했을 때, 팀을 주도적으로 이끌면서 팀의 기술적 문제를 해결
- 프로그램 엔지니어(PE) : 소프트웨어 개발과 관련된 역할을 넓은 의미에서는 엔지니어, 좁은 의미에서는 개발자
- 형상 관리자(CM) : 개발 과정에서 베이스라인 산출물 관리와 변경요청 처리 담당
- 품질 관리자(QE) : 개발 산출물에 대한 오류 확인과 결함 검출을 위한 리뷰, 테스트 활동 등을 계획하고 추진
- 리어종 그룹 : 비즈니스 그룹과의 의사소통을 담당
▷ 프로젝트 팀 구조

- 중앙집중형 팀 구조
프로젝트에서 수행해야할 작업 목록이 단순하거나 충분히 이해된 경우에 적합
유능한 프로젝트 리더가 필요
문제해결이 신속하게 이루어질 수 있고, 의사소통의 패턴이 매우 단순함
- 분산형 팀 구조
프로젝트의 주요 의사결정이 팀 구성원의 합의에 의해 이루어지는 민주주의적 팀 구성
문제가 복잡해 해결방안을 모색해야하는 경우에 적합
의사소통 패턴이 복잡해 대규모 구성원 프로젝트엔 적합하지 않을 수 있고, 장기간에 걸쳐 수행하는 프로젝트에 적용
- 하이브리드 팀 구조
중앙집중형 팀 구조와 분산형 팀 구조를 통합한 계층형 팀 구조
프로젝트 관리자 : 각 팀의 리더와 중요한 의사결정을 하기 위한 중앙집중형 구조
팀 내부의 운영 : 분산형 구조를 채택하여 의사소통
> 팀 구조 선정 전략
비용 절감 측면에서 효과적인가
팀 구성원의 이직이나 교체 발생 가능성이 있는가
신입에게 프로젝트 경험의 기회를 제공하는가
최신 기술 또는 특정 지식에 대해 공유, 전파 가능한가
▷ 전사적 운영 조직 // 전사적 - 회사 전반의
품질 관리팀
프로젝트 수행 과정에서 산출물에 대한 리뷰, 테스트 등과 같은 활동 지원
경험있는 중급 이상의 엔지니어들로 구성된다.
PMO (Project Management Office)
전사 차원에서 프로젝트 생성, 모니터링, 리스크 해결 등과 같은 업무를 수행하는 조직
종료, 진행중인, 계획된 프로젝트 등에 대한 포트폴리오를 관리하며 단위 프로젝트 관리자를 지원하고 통제
프로젝트 관리 계획서
▷ 계획서 작성 시 유의사항
- 문서의 목적 : 해당 문서가 어떤 목적으로 작성되며 어떤 내용을 포함하는지 설명
- 관련 문서 : 해당 문서와 관련된 공식적인 이전 베이스라인 산출물, 관련 표준 등
- 팀 구조 : 집중형 팀 구조, 분산형 팀 구조, 계층형 팀 구조 중 선정
- 품질 관리 적용 기법 : 리뷰, 테스트와 같은 품질 관리 활동 정의
프로젝트 지원 도구
▷ 프로젝트 관리 기능
- 계획 기능 : 팀 구성, WBS 생성, 태스크 할당, 마일스톤 정의
- 진도 관리 기능 : 태스크 수행 완료 및 진도 정보를 입력
- 협업 기능 : 협업 목표 설정, 협업 공간 생성, 상호 의사소통, 자료 공유
- 배포 기능 : 산출물 저장, 체크인/체크아웃, 검색 기능 제공
- 보고서 생성 기능 : 팀원을 위한 태스크 목록, 관리자를 위한 종합 보고서 제공
- 통합 기능 : 프로젝트 수행에 필요한 템플릿을 참조 모델로 제공
▷ PMO 도구
- 프로젝트 통합 관리 기능 : 프로젝트 진행의 적정성 검토 위한 feasibility(실행가능함) 분석이 제공된다.
- 프로젝트 범위 관리 기능 : 프로젝트에서 정의된 범위 대비 수행 결과를 비교,분석한다.
- 일정 및 진도 관리 기능 : 프로젝트 일정 계획의 조정 및 진도 관리한다.
- 산출물 품질 관리 기능 : 산출물별 적정성 및 산출물 간 일관성을 평가한다.
- 인적,물적 자원 관리 기능 : 자원과 프로젝트 투입 인력 현황과 투입 인력에 대한 적정성을 검토한다.
- 이슈 및 위험 관리 기능 : 전사 차원에서 이슈 및 위험 관리 체계 정의 및 공지
- 의사소통 관리 기능 : 의사소통 경로를 지원하고 회의록을 관리한다.- 성과 관리 기능 : 프로젝트에서 발생하는 성과를 관리, 활용하기 위한 계획 수립- 조직의 능력 관리 기능 : 프로젝트 관리,운영에 필요한 교육 훈련 실시
▷ 엔지니어링 도구
소프트웨어의 분석, 설계, 코딩, 테스트를 지원하는데 사용되는 도구
UML 기반의 객체지향 분석 및 설계 도구, 코딩 도구, 테스트 도구 등을 포함한다.
엔지니어의 실수를 줄이는 좋은 수단이고 협업을 지원한다.
요약정리)
> 성공적인 프로젝트 수행 위하 가장 중요한 요소?
> 프로젝트 관리 기법
- 일정 관리 : WBS, 간트차트, 퍼트차트
- 비용관리 : COCOMO, 기능 점수 등
- 위험/리스크 관리
> 프로젝트 조직 구성
중앙 집중형 구조 , 분산형 구조, 하이브리드 구조
> 프로젝트 지원 도구
- 프로젝트 관리 도구 : 프로젝트 직업 관리 및 진도 관리
- PMO 도구 : 전사차원의 프로젝트 상태 모니터링
- 엔지니어링 도구 : 분석, 설계, 코딩, 테스팅 도구
'전공 지식 정리 > 소프트웨어 공학' 카테고리의 다른 글
#8, #9 소프트웨어 공학 - 객체지향 분석, 모듈화 (0) | 2022.12.17 |
---|---|
#6, #7 소프트웨어 공학 - 소프트웨어 비용 산정, 요구사항 도출 (0) | 2022.12.12 |