코딩딩/CS
소프트웨어 프로젝트 관리의 개요
전낙타
2023. 9. 16. 15:19
1. 학습 목표
- 소프트웨어 프로젝트 관리의 개요
- 소프트웨어 프로젝트 계획
- 소프트웨어 프로젝트 비용 추정
2. 학습 내용
소프트웨어 프로젝트 관리의 개요
프로젝트 관리의 개념
- 프로젝트 관리
- 소프트웨어 프로젝트를 조작하고 (organizing), 계획하며 (planning), 일정관리 (scheduling) 하는 것
- 주어진 기간 내에 최소한의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 전반적인 활동
소프트웨어 개발 계획을 세우고, 분석, 설계, 구현 등의 작업을 통제하는 것으로 소프트웨어 생명주기의 전 과정에 걸쳐 진행됨
- 소프트웨어 프로젝트를 성공적으로 수행하기 위해 알아야 할 것
- 수행할 작업의 범위
- 비용
- 이정표
- 수행업무
- 필요한 자원
- 추진 일정
프로젝트 관리 대상
- 프로젝트 관리대상
- 계획관리
- 프로젝트 계획
- 비용 산정
- 일정 계획
- 조직 계획
- 품질관리
- 품질 통제
- 품질 보증
- 위험관리
- 위험 식별
- 위험 분석 및 평가
- 위험 관리 계획
- 위험 감시 및 조치
- 계획관리
- 효과적인 프로젝트 관리를 위한 3P (3대 요소)
- Problem - 사용자 입장에서 문제를 분석하여 인식
- Process - 소프트웨어 개발에 필요한 전체적인 작업계획 Task Framework의 고려와 가장 연관됨
- People - 프로젝트 관리에서 가장 기본이 되는 인적자원
프로젝트 관리의 구성단계
- 프로젝트 시작
- 프로젝트 계획수립
- 프로젝트의 목적을 기술하고 이를 달성하기 위해 필요한 업무와 성취해야 할 일들을 결정함
- 프로젝트를 정의하고, 프로젝트 일정계획, 소요자원 예측, 위험평가, 프로젝트에 대한 승인을 얻어냄
- 프로젝트 가동
- 프로젝트가 수행될 환경을 구성하고 프로젝트에 참여할 인력을 교육시킴
- 프로젝트를 진행할 조직을 구성하고, 각 팀원을 선발
- 프로젝트 통제
- 계획 대비 프로젝트의 척도 (metric)를 점검하고, 변경사항을 승인하는 등의 작업을 수행함
- 프로젝트 전 기간동안 수행됨
- 프로젝트 종료
- 수행결과의 완전성을 점검하고, 프로젝트를 종료함
- 프로젝트 계획수립
프로젝트 계획수립이 끝나면 프로젝트 수행을 위해 조직 구성 및 팀원 선발을 진행, 프로젝트를 수행하며 생긴 문제를 해결하기 위해 프로젝트를 통제. 변경사항을 적용해가며 결과를 산출해낸다.
소프트웨어 프로젝트 계획
프로젝트 계획
프로젝트가 수행되기 전에 소프트웨어 개발영역 결정, 필요한 자원, 비용, 일정 등을 예측하는 작업
- 관리자가 자원, 비용, 일정 등을 합리적으로 예측할 수 있도록 프로젝트 틀을 제공함
- 프로젝트 계획 수립을 통해 소프트웨어 개발 과정에서 발생할 수 있는 여러가지 위험성을 최소화할 수 있음
- 계획에 따라 소프트웨어의 품직이 결정되기도 함
- 계획 단계에서 프로젝트 관리자의 임무는 매우 중요함
프로젝트 계획 단계의 작업 과정
소프트웨어가 개발되어 설치될때까지 어떤 일들이 누구에 의하여 언제 행해져야 하는지를 정하는것
계획을 구성하는 다섯가지 작업
- 소프트웨어 개발 영역 결정
- 필요한 작업 (activity)의 정의 및 순서 결정
- 일정 계획
- 비용 예측
- 시스템 정의서 및 프로젝트 계획서 작성
소프트웨어 개발영역(scope, 범위) 결정
소프트웨어 프로젝트 개발 계획의 첫 번째 업무로 개발될 소프트웨어의 영역을 결정하는 것
소프트웨어 개발 영역을 결정하는 주요 요소
- 소프트웨어 기능 - 개발될 소프트웨어가 처리해야 할 기능
- 소프트웨어 성능 - 처리될 데이터와 소프트웨어에 대한 성능
- 소프트웨어 제약조건 - 외부 하드웨어, 가용메모리, 다른 시스템들에 의해 소프트웨어에 가해진 제한사항
- 소프트웨어 인터페이스 - 2개 이상의 장치나 소프트웨어 사이에서 정보나 신호를 주고받을 때 그 사이를 연결하는 연결 장치나 소프트웨어
- 소프트웨어 신뢰도 - 주어진 시간동안 주어진 환경에서 소프트웨어가 고장나지 않고, 사용될 수 있는 확률
소프트웨어 개발에 필요한 자원 예측
- 인적자원
- 소프트웨어 프로젝트에 필요한 인원수 및 조직을 결정함
- 소프트웨어 개발 영역을 평가하고, 개발을 수행하는 데 필요한 기술들을 선택함으로써 인적 자원 예측이 시작됨
- 재사용 소프트웨어 자원
- 재사용을 원하는 소프트웨어의 컴포넌트(구성요소)를 결정함
- 환경자원
- 소프트웨어 개발에 필요한 하드웨어와 소프트웨어 환경을 의미한
- 하드웨어와 소프트웨어가 필요한 시기를 결정함
소프트웨어 프로젝트 비용 예측 방법
- 프로젝트 관리의 후반까지 프로젝트 예측을 가능한 연기함
- 비용은 프로젝트가 완성되어 가면서 좀 더 정확히 예측할 수 있지만 계속 비용 예측을 연기할 경우 프로젝트 진행에 차질이 생기므로 이 방법은 현실성이 부족함
- 이미 수행된 유사 프로젝트를 참고함
- 프로젝트를 상대적으로 잘게 분리하여 예측함
- 경험적 예측모델을 활용함
- 자동화 도구를 활용함
프로젝트 계획 수립 시 고려사항
- 프로젝트 복잡도
- 프로젝트 규모
- 구조적 불확실성의 정도
- 과거 정보의 가용성
- 위험성
소프트웨어 프로젝트 비용 추정
개념
프로젝트를 수행하는데 필요한 직 간접적인 비용을 예측하는 작업
- 소프트웨어 프로젝트 비용 추정은?
소프트웨어 공학 분야중에서 가장 오차 발생이 심한 작업임
소프트웨어 개발 단계에서 확인되지 않거나 고려하지 못한 요소들이 많기 때문에 정확한 비용을 예측하기는 어려워 다양한 측정 요소를 반영하여 측정함
프로젝트 비용 결정 요소
- 프로젝트 요소
어떤 소프트웨어를 개발할 것인가에 따라 비용이 달라질 수 있음
- 제품의 복잡도
- 소프트웨어의 종류에 따라 결정
- 시스템의 크기
- 소프트웨어의 규모에 따라 결정
- 요구되는 신뢰도
- 프로그램이 일정한 기간 내에 주어진 조건 하에서 필요한 기능을 수행하는 정도
- 제품의 복잡도
- 자원 요소
소프트웨어 개발에 필요한 각종 자원들이 투자 정도에 따라 비용이 달라질 수 있음
- 인적자원
- 관리자, 개발자의 능력 혹은 자질
- 하드웨어 자원
- 개발 장비나 워드프로세서, 프린터와 같은 보조 장비
- 소프트웨어 자원
- 언어 분석기, 문서화 도구, 요구 분석기 등과 같은 개발 지원 도구
- 인적자원
- 생산성 요소
- 개발자의 능력
- 전문분야에 대한 지식, 유사 분야에 대한 경험, 응용 분야에 대한 이해도, 책임감, 창의력 등
- 개발 기간
- 소프트웨어를 개발하는 기간
- 개발자의 능력