코딩두의 포트폴리오

Chapter #3: 프로젝트 관리와 계획 본문

Software Engineering

Chapter #3: 프로젝트 관리와 계획

코딩두 2024. 10. 21. 20:45

프로젝트 관리 - 소프트웨어를 조직, 계획, 일정관리 하는 것

계획

계획의 부재 - 불확실성, 위험, 실패

SW 프로젝트 계획 수립 - sw 개발 과정, 일정, 비용, 조직, 생산 제품에 대해 사전에 계획

문제 이해/정의, 필요한 소작업 정의/순서 결정(계획서), 일정 예측, 비용 예측, 위험 분석

계획 수립의 결과 -> 소프트웨어 개발 계획서

사업관리자, 개발자, 사용자들에게 사업의 범위, 필요 비용, 필요 자원, 개발 일정, 위험 요소 등 정보 제공하는 산출문서

주의할 점

시스템에 대한 충분한 이해, 그러나 변경 여지도 ok

현실적, 구체적 계획

득실 관계 저울질

기술적 측면 고려

 

프로젝트 일정 계획 작업 과정

 

3.1 프로젝트 범위

SW 개발 프로젝트를 위한 계획은 대상 업무의 문제의 범위(Scope)를 정하는 것부터 시작

문제의 범위를 정의하기 위해 먼저 문제의 배경, 응용분야를 잘 이해

문제 정의

대책 수립 - 신규 시스템 목표 설정, 해결 방안 모색

시스템 정의 - 문제의 기술, 시스템의 필요성, 시스템의 목표, 제약 사항, 시스템의 제공 기능, 사용자 특징, 개발/운용/유지보수 환경

문제 범위 정하기

넓은 범위, 작은 범위

 

3.2 노력 추정

소프트웨어 개발 비용 예측

정확한 비용 예측 어려움, 과거의 데이터 필요, 단계적 비용 산정 방법도 사용

예산

인건비: MM로 계산

경비: 여비, 인쇄비, 재료비, 회의비, 공공요금

비용에 영향을 주는 요소

제품의 크기, 제품의 복잡도, 프로그래머의 자질, 요구되는 신뢰도 수준, 기술 수준, 남은 시간

프로젝트 비용 예측 방법

상향식(Bottom-up)

소요 기간 X 투입 인력 X 투입 인력 참여도 = 최종 인건 비용

하향식(Top-down)

프로그램의 규모를 예측, 과거 경험을 바탕으로 예측한 규모에 대한 소요 인력, 기간 추정

프로그램의 규모 - LOC, 기능 점수

 

기능 점수(function point) 방법

정확한 라인수 예측 불가능

5개 기능 - 입력(트랜잭션), 출력(화면 및 출력 양식), 질의, 파일, 응용 인터페이스 -> SW 규모 나타냄

각 기능에 가중값 <단순, 보통, 복잡>

기능 점수 1을 구현하기 위한 LOC

어셈블리 언어(324), C언어(150), Pascal(91), Ada(71), APL(32)

 

처리복잡도 14개 항목당 0~5점을 이용한 기능점수 산출

총 라인수 = FP* 원하는 언어의 1점 당 LOC

개발 노력 = 총라인수 / 생산성(LOC/MM)

기능 점수(function point) 방법

산정 기준의 큰 틀은 COCOMO 2의 초기 설계 모델을 따름

외부 입력

외부 출력

내부 논리 파일

외부 인터페이스 파일

외부 조회

 

3.3 일정 계획

일정 계획

개발 프로세스를 이루는 소작업(activity)을 파악하고 순서와 일정을 정하는 작업

- 개발 모형/프로세스 결정

- 소작업, 산출물, 이정표 설정

 

작업 순서

작업 분해(Work Breakdown Structure)

CPM(Critical Path Method) 네트워크 작성

최소 소요 기간을 구함

소요 MM, 기간 산정하고 CPM 수정

간트 차트로 그림

 

작업 분해(Decomposition)

프로젝트 완성에 필요한 소작업(activity)을 찾아냄

WBS(Work Breakdown Structure) -> 계층적 구조

 

Activity 네트워크

임계 경로(critical path), 임계작업(critical activity)

CPM 네트워크

장점

- 관리자의 일정 계획 수립에 도움

- 프로젝트 안에 포함된 작업 사이의 관계

- 병행 작업 계획

- 일정 시물레이션

- 일정 점검, 관리

관리에 대한 작업도 포함 가능
작업 시간을 정확히 예측할 필요

소프트웨어 도구 (MS-Project, MS-Works)

 

간트 차트

- 소작업별로 작업의 시작과 끝을 나타내 그래프

- 예비시간을 보여줌

- 계획 대비 진척도를 표시

- 개인별 일정표

 

에자일 계획

에자일 프로세스의 일정 계획

장점

- 높은 우선순위를 가진 사용 사례가 조기에 개발되어 설치

- 사용 사례 사이에 선행관계를 지킬 수 있음

- 각 열의 점수의 합은 개발 팀의 작업속도를 초과하지 않아야 함

 

3.4 조직 계획

조직의 구성

SW 개발 생산성에 큰 영향

작업의 특성, 팀 구성원 사이의 의사교류

 

프로젝트 구조

프로젝트별 조직, 기능별 조직, 매트릭스 조직

책임 프로그래머 팀

의사 결정권이 리더에게 집중

계층적 팀 구조

팀원 간의 역할 분배

 

특징 - 의사 결정 빠름, 소규모 프로젝트에 적합, 초보 프로그래머 훈련시키는 기회

단점 - 한 사람의 능력과 경험이 프로젝트의 성패 좌우, 보조 프로그래머 역할이 모호

 

에고레스 팀조직

민주주의 식 의사결정 - 서로 협동하여 수행하는 비이기적인 팀

의사 교환 경로

특징 - 작업 만족도 높음, 의사 교류 활성화, 장기 프로젝트에 적합

단점 - 책임이 명확하지 X, 대규모에 적합하지 X(의사 결정 지연 가능)

 

혼합형(계층적) 팀조직

집중형, 분산형의 단점을 보완

특징 - 초보자/경험자를 분리, 프로젝트 관리자와 고급 프로그래머에게 지휘권한 주어짐, 의사교환은 초보 엔지니어나 중간 관리층으로 분산

SW기능에 따라 계층적으로 분산

단점 - 기술인력이 관리를 담당, 의사 전달 경로가 김

 

위험 관리

목적 - 위험 발생 시 영향을 줄이는 것

Boehm이 제안한 위험 관리 - 위험 (파악, 분석, 우선순위 정하기, 해결, 모니터링)

 

위험 분석, 우선순위

위험 분석은 각 위험에 대한 피해 정도, 위험 해결 방법, 이에 대한 비용들을 결정하는 것

- 손실 발생 확률, 손실 발생 규모, 위험 노출

 

위험 해결과 모니터링

위험 해결은 위험 관리 계획에 명시된 위험을 줄이는 기법을 구현하고 실행하는 것

위험 관리 프로세스

 

도구

프로젝트 계획과 관리 도구

- 노력 추정을 위한 도구

- 일정 계획 관리 및 진도 관리 도구

- 문서 및 버전 관리 도구

'Software Engineering' 카테고리의 다른 글

Chapter #5: 모델링  (0) 2024.10.21
Chapter #4: 요구 분석  (1) 2024.10.21
Chapter #2: 프로세스와 방법론  (4) 2024.10.21
Chapter #1: SW 소개  (0) 2024.10.21