프로젝트 관리[Software Engeering]

프로젝트
- 프로젝트란 유일한 제품이나 서비스를 만들기 위해 일정한 기간을 정해 놓고 수행하는 작업을 의미함
- 일상적인 업무와 다르게 다음 특징이 있음
- 한시성: 시간이 정해져 있음
- 유일성: 기간이 끝나면 유일한 인도물을 만들어 내야 함
- 참여자의 일시성: 프로젝트에 참여하는 인력은 프로젝트가 종료되면 다른곳으로 배치됨
- 한정된 자원: 프로젝트에 사용되는 자원은 한정되어 있음
프로젝트 관리
- 프로젝트 진행시에는 예상을 벗어난 문제들이 발생할 수 있음
- 따라서 프로젝트를 완성하기 위해서는 철저한 프로젝트 관리가 필요함
- 프로젝트 관리 지식체계(Project Management Body Of Knowledge)는 프로젝트와 관련된 작업 표준을 의미함
PMBOK
- PMBOK에서는 프로젝트의 프로세스를 시작, 기획, 실행, 통제, 종료의 5가지로 나눔
시작 그룹: 프로젝트 또는 프로젝트를 구성하는 단계를 정의하고 승인
기획 그룹: 프로젝트의 목표를 설정하고, 목표 달성을 위한 활동 계획, 예산, 인력, 자원등의 계획을 수립 실행 그룹: 프로젝트 계획 실행으로 계획을 세운 대로 실제 프로젝트를 수행
통제 그룹: 계획 대비 목표의 진척 상황을 감시하고 성과를 측정
종료 그룹: 프로젝트가 사용자의 모든 요구사항을 반영했는지 확인하고 프로젝트를 마무리 짓는 프로세스들로 구성
프로젝트 관리의 9가지 관점

- 프로젝트 통합 관리: 프로젝트의 여러 요소를 적절히 통합하기 위한 프로세스로 구성됨
- 프로젝트 범위 관리: 프로젝트를 성공적으로 완료하는데 필요한 모든 작업을 프로젝트에 포함하기 위해 요구되는 프로세스로 구성됨
- 프로젝트 일정 관리: 프로젝트를 주어진 기간안에 끝내기 위해 요구되는 프로세스들로 구성됨
- 프로젝트 비용 관리: 주어진 예산 내에서 프로젝트를 완료하기 위해 요구되는 프로세스들로 구성됨
- 프로젝트 품질 관리: 사용자의 품질 요구를 만족하기 위해 요구되는 프로세스들로 구성됨
- 프로젝트 인적 자원 관리: 프로젝트 참여 인력을 어떻게 관리해야 프로젝트를 성공시킬 수 있는가에 대한 내용
- 프로젝트 의사소통 관리: 이해관계자들 간의 메시지 전송과 관리를 담당하는 프로세스
- 프로젝트 위험 관리: 프로젝트의 위험을 식별, 분석 대응하기 위해 요구되는 프로세스들로 구성됨
- 프로젝트 조달 관리: 조직 외부에서 물품과 서비스를 조달하기 위해 요구되는 프로세스들로 구성됨
형상 관리
변경 관리
- 소프트웨어 개발 전체 단계에서 발생하는 변경은 많은 부분에 영향을 끼침
- 문서화된 산출물 뿐만 아니라 데이터베이스, 코드, 테스트에도 영향을 끼치며, 변경되는 과정을 관리하지 못하면 엄청난 혼란을 불러올 수 있음
- 변경의 요인은 업무 환경의 변화와 기술 환경의 변화가 있음
버전 관리
- 소프트웨어에서 버전은 개발단계나 순서를 번호로 표시하는 것을 의미함
- 개발이 1차로 완료되면 알파, 베타 테스트를 거친후 기능이 확정되어 개발이 완료되면 버전 1.0으로 출시함
- 기능이 개선될때마다 1.1, 1.2, 2.0 등으로 버전을 올려나감
개발된 제품의 기능이 크게 변화하면 2.0처럼 주 번호를 변경하면, 오류를 수정하는 정도로 변화가 크지 않으면 1.1, 1.2 처럼 부 번호를 바꿈
- 버전 관리를 통해 각 버전의 정보를 데이터베이스화해 과거의 릴리스된 파일을 가지고 작업할 수 있도록 해줌
형상 관리
- 형상 관리는 개발 중 발생하는 모든 산출물이 변경되면서 변하가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 기법
- 형상 관리를 통해 언제라도 가장 안정적인 버전의 소프트웨어를 유지할 수 있도록, 제품이 변경되어가는 상태에 대한 가시성을 확보해줌
- 형상 관리를 통해 생산성과 안정성을 높여 소프트웨어 품질을 높이고 유지보수를 용이하게 해줌
- 형상관리 수행 절차는 다음과 같음

형상 식별: 형상 관리를 위해 어떤 산출물을 형상 관리의 대상으로 할 것인가?
형상 통제: 변경하고자 하는 요구를 실제 소프트웨어 개발에 반영할 것인가?
형상 상태 보고: 베이스라인으로 설정된 형상 항목의 구조, 변경 상태를 기록하고, 관련된 사람들에게 보고하는 것
유지보수
- 소프트웨어에도 하드웨어처럼 유지보수의 개념이 필요함
- 소프트웨어 유지보수에는 수정 유지보수, 적응 유지보수, 기능 보강 유지보수, 예방 유지보수가 있음
수정 유지보수: 사용중 발생한 오류를 수정하는 유지보수
적응 유지보수: 운영체제 등의 환경 변화에 맞추어 코드를 수정해주는 유지보수
기능 보강 유지보수: 기능 추가 요구에 대응하기 위해 시행하는 유지보수
예방 유지보수: 예상되는 오류를 수정하기 위한 유지보수