Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

dongdorodongdong

프로젝트 관리 본문

Software Engineering

프로젝트 관리

d5ngs 2019. 4. 15. 18:32

정의

  • 프로젝트를 계획대로 완료될 수 있도록 관리하는 것
  • 생명 주기의 전 과정에 걸쳐 진행
  • 최소 비용으로 사용자의 최대 만족

3P
  • 프로젝트 관리를 효과적으로 하기 위한 3대 요소

  • People (사람)
    "인적 자원"

  • Problem (문제)
    "문제 인식"

  • Process (프로세스)
    "작업 계획"


관리 대상
  1. 계획
  2. 개발팀
  3. 비용
  4. 일정
  5. 위험
  6. 형상
  7. 품질
  8. 고객 관리는X




1. 계획 관리
  • 정의
    - 프로젝트 수행 전 S/W 개발 범위, 자원, 비용, 일정 등을 예측하는 작업
    - 제한된 자원과 일정에 대한 최적의 방법을 찾고자 노력

  • 예측 대상
    - 범위
    - 비용
    - 성능
    - 유지보수, 위험성은 X

  • S/W 영역 결정 사항
    - 기능
    - 성능
    - 제한조건
    - 신뢰도
    - 위험성
    - 인터페이스
    "기존의 S/W와 새로운 S/W를 연결"

  • 소프트웨어 Scope(범위) 결정의 주요 요소
    - 소프트웨어 성능
    - 소프트웨어 제약조건
    - 소프트웨어 신뢰도



2. 개발팀 관리

  • 중앙 집중형
    "책임 프로그래머 팀"

    - 한 사람에 의하여 통제
    - 소규모 프로젝트에 적합
    - 책임 프로그래머 : 분석, 설계, 작업 지시 등 모든 기술적 판단
    - 보조 프로그래머 : 책임 프로그래머 업무 지원
    - 프로그래머 : 코딩, 검사, 디버깅, 문서 작성 등
    - 프로그램 사서 : 프로그램 리스트, 설계 문서, 검사 계획 등


  • 분산형
    "민주주의 식"

    - 링모양 구조
    - 모든 팀 구성원이 동등한 위치
    - 장기 프로젝트에 적합
    - 서로의 일을 검토하고 결과에 대해 같은 그룹의 일원으로 책임
    - 의사 교류 활성화
    - 다양한 의사 교류로 인해 의사 결정 시간이 늦어질 수 있음

  • 계층형
    "혼합형"

    - 중앙집중형 + 분산형
    - 초보 프로그래머를 작은 그룹으로 만들어 각 그룹을 고급 프로그래머가 관리하게 함



3. 비용 관리

  • 비용 결정 요소
    - 프로젝트 요소
    "제품의 복잡도, 시스템의 규모, 요구되는 신뢰도"
    - 자원 요소
    "인적, H/W, S/W 자원" *H/W 성능은 X
    - 생산성 요소
    "개발자 능력, 경험, 개발 기간"

  • 정확한 비용 예측 방법
    - 수행된 유사 프로젝트를 참고
    - 프로젝트를 세분화하여 예측
    - 경험적 예측 모델을 활용

  • 특징
    - 개발완료기간을 앞당기면 비용은 더 증가

  • 비용 예측 기법
    - LOC 기법
    "원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측"
    "자세한 내용은 아래에"

    - Effort Per Task 기법
    "필요한 노력을 생명주기 각 단계별로 산정"

    - 전문가 감정 기법
    "경험 많은 전문가에게 의뢰"

    - 델파이 기법
    "전문가 감정 기법의 주관성 때문에 의견들을 통합"

  • 비용 예측 모형
    - COCOMO
    "자세한 내용은 아래에"

    - Putnam
    "이 모형을 기초로 해서 SLIM이라는 자동화 추정 도구를 만듬"

    - Function-Point
    "입력, 출력, 질의, 파일, 인터페이스의 갯수로 S/W의 규모를 표현"
    "경험을 바탕으로 단순, 보통, 복잡한정도에 따라 가중치 부여"
    "프로젝트의 영향도와 가중치의 합을 이용하여 기능 점수를 계산"
    "원시코드의 구현에 이용되는 프로그래밍 언어에 종속적X"



4. 일정 관리
  • 일정 관리 기법
    - WBS
    - PERT/CPM
    - Gantt Chart

  • Brooks의 법칙
    - 진행중인 프로젝트에 새로운 인력이 투입될 경우 작업 적응 기간과 부작용으로 인해 빠른 시간 내에 프로젝트 완료X, 프로젝트에 혼란

  • 일정 계획 순서
    1. 프로젝트 규모 측정
    2. 소단위 작업 분해
    3. 각 작업의 상호관계를 CPM 네트워크로 표현
    4. 간트차트로 표현



5. 위험 관리
  • 예상되는 각종 돌발 상황을 미리 예상하고 적절한 대책을 수립하는 활동

  • 절차
    1. 위험 식별
    2. 위험 분석 및 평가(위험표)
    3. 위험 관리 계획
    "대책을 문서화하는 작업"
    4. 위험 감시 및 조치
    "회피 : 최상의 전략으로 위험이 발생될 것을 예상하고 회피"
    "감시 : 위험 징후들에 대하여 계속적으로 인지"
    "관리 : 회피 전략이 실패할 경우에 관리, 대비책과 비상계획을 수립"

  • 위험표 포함 사항
    - 내용, 종류, 발생 확률, 영향력, 감시 및 조치
    - 발생 시간은 X

  • 위험 요소
    - 사용자 요구사항 변경
    - 인력 부족
    - 예산 부족

  • 위험 모니터링
    - 위험 요소 징후들에 대해 계속적으로 인지

  • 대표적 특성
    - 불확실성
    - 손실


6. 형상 관리
  • S/W 개발 단계의 각 과정에서 만들어지는 프로그램, 문서, 데이터 등을 확인, 기록, 보관하는 일련의 작업
  • 개발 과정의 변경 사항을 관리
  • 특징
    - 유지보수 단계에서 행해짐

  • 항목
    - 정의, 개발 단계의 문서 및 프로그램
    - 유지보수 단계의 변경 사항
    - 프로그램 내의 자료구조
    - 비용은 X


7. 품질 관리
  • 항목이나 제품이 설정된 요구사항이 일치하는지를 적절하게 확인하는 활동

  • 항목
    - 정확성(Correctness)
    "사용자의 요구 기능을 얼마나 충족하는지"

    - 신뢰성(Reliability, 가용성)
    "오류 없이 옳은 결과를 얻어낼 수 있는지"

    - 이식성 (Portability)
    "다른 H/W 환경에서 운용이 가능한지"
    "하나 이상의 H/W 환경에서 운용되기 위해 쉽게 수정될 수 있는 능력"

    - 상호운용성
    "다른 S/W와 정보를 교환할 수 있는지"

    - 유지보수성
    "수정에 대해 노력이 얼마나 최소화 되는지"

    - 효율성 (Efficiency)
    "기능을 수행할 때 자원이 얼마나 필요한지"
    "시간 경제성, 자원 경제성 등의 품질 기준"

    - 무결성
    "허가되지 않은 사용, 변경을 얼마나 제어할 수 있는지"

    - 사용 용이성
    "사용하기가 얼마나 쉬운지"

    - 유연성
    "수정을 얼마나 쉽게 할 수 있는지"

    - 시험 용이성
    "평가를 얼마나 쉽게 해주는지"

    - 재사용성
    "다른 응용 목적으로 사용 가능한지"

    - S/W 종속성, 중복성, 복잡성, 최적화는 X

    - 개발자 관점에서 간결성은 X

  • 품질관리 위원회
    - 품질보증
    "S/W가 이미 설정된 요구 사항과 일치하는가를 확인"
    "S/W의 요구 사항과 특성을 파악하여 품질 목표를 설정하고 정형 기술 검토를 통하여 품질 목표와 충족 여부를 점검하며, 개발 후에는 디버깅과 시험 과정을 거침"

    - FTR : Formal Technical Review (정형 기술 검토)
    "가장 일반적인 검토 방법"
    "검토중인 S/W가 해당 요구사항과 일치하는지를 검증"
    "의제 제한성 : 의제를 제한한다"
    "논쟁과 반박의 제한성 : 논쟁과 반박을 제한 한다"
    "검토의 집중성 : 제품의 검토에만 집중해야 한다"
    "참가 인원을 제한한다, 메모를 공유한다 등"


    - Walkthrough (검토 회의)
    "각 단계가 끝나면 검토 회의"
    "오류 검출에 초점, 해결책은 나중에"
    "발견된 오류는 문서화"

    - Inspections (검열)
    "검토 회의를 발전시킨 형태"
    "산출된 결과물의 품질을 평가하여 이를 개선시키는 데 사용"

  • 신뢰성(가용성) 측정
    - 고장 나지 않은 시스템의 운용 기간 / 전체 운용 기간




LOC 기법

  • 정의
    - Line Of Code
    "원시코드 라인 수"

    - PM
    "개발에 소요되는 기간을 1개월로 할 경우 필요한 인원 수"

  • 예시
    1. 두 명의 개발자가 5개월에 걸쳐 10,000 라인의 코드를 개발
    - PM = 10,000 / 5 * 2 = 1,000

    2. 10명의 개발자가 10개월에 참여, 하지만 7명은 10개월 동안 계속 참여하고 3명은 3개월 동안만 참여.
    - PM = 7*10 + 3*3

    3. LOC 기법을 통한 예측 라인수가 25,000일 때, 개발자가 5명이고 명당 평균 생산량이 월당 500일 때 기간은?
    - 25,000 / 5 * 500 = 10


COCOMO 모형
  • 정의
    - Boehm이 제안한 원시 프로그램 소스 코드의 규모에 의해 비용 예측

  • 특징
    - S/W의 종류에 따라 다르게 책정된다
    - 같은 규모의 프로그램이라도 성격에 따라 비용이 다르게 책정
    - S/W 개발비 견적에 널리 통용
    - 모든 시스템에 동일하게 적용할 수 없다.

  • 모형
    - Basic COCOMO (기본)
    "S/W의 크기, 개발 유형만 고려"
    - Intermediate COCOMO (중간)
    "S/W의 특성, PC의 특성, 개발자의 특성, 프로젝트의 특성을 고려"
    - Detailed COCOMO (진보)
    "중간형을 보완하여, 공정별로 보다 자세하게 노력을 산출하여 비용 산정"

  • 유형
    - Organic 프로젝트 (유기형)
    "5만 라인 이하 규모"

    - Semi-Detached 프로젝트 (반분리형)
    "30만 라인 이하 규모"

    - Embedded 프로젝트 (내장형)
    "30만 라인 이상 규모"




소단위 작업 분해


  • 프로젝트를 여러 개의 작은 소단위로 분해하여 계층 구조로 표현



PERT / CPM

  • 특징
    - Critical Path Method (임계 경로 기법)
    - 노드와 간선으로 구성된 네트워크
    - 효과적으로 사용하기 위해서는 필요한 시간을 정확히 예측해야 함
    - 지연을 방지하고 계획대로 진행되게 하기 위한 방법
    - 병행작업이 가능하도록 계획 가능
    - 통계적 모델을 적용
    - 간선은 작업 사이의 전후 의존 관계를 나타냄
    - 프로젝트를 위한 작업을 나열하고 필요한 소요 기간을 예측하는 데 사용
    - 정확한 예측은 불가능
    - 다른 일정계획안 시뮬레이션 가능
    - 최장경로 파악 가능

  • PERT
    - 프로젝트에 필요한 전체 작업의 상호 관계를 표시하는 네트워크
    - 원 노드에는 작업을, 간선에는 낙관치, 기대치, 비관치를 표시

  • CPM
    - 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용하는 기법
    - 원 노드에는 작업을, 간선에는 작업 사이의 전후 의존 관계를 나타냄



Gantt Chart

  • 특징
    - 각 작업들이 언제 시작하고 종료되는지에 대한 작업 일정을 막대 도표를 이용하여 표시
    - 작업 경로는 표시X