본문 바로가기

23년 2학기 학교공부/소프트웨어공학

[SE] 프로젝트 관리

목차

    728x90
    반응형
    SMALL

    📁 프로젝트 관리

    프로젝트를 계획하고 수행하는데 필요한 모든 작업 관리

     

    - 필요한 작업의 결정

    - 프로젝트에 적합한 인력 확보

    - 직무 정의

    - 일정 계획

    - 작업 준비

    - 비용 예측

    - 지시, 감독

    - 기술적 리더

    - 다른사람이 내린 결정을 검토하고 승인

    - 팀원 사기 진작과 지원

    - 모니터링, 통제

    - 다른 프로젝트 관리자와 협력

    - 보고(reporting)

    - 프로세스 개선

     

     

    📁 프로젝트 관리 활동

    1. 제안서 작성

    2. 프로젝트 계획 및 스케줄링

    3. 프로젝트 비용 계획

    4. 프로젝트 모니터링 및 검토

    5. 인력 선발 및 평가

    6. 보고서 작성 및 프레젠테이션

     

     

    📁 프로젝트 계획

    프로젝트 계획 수립

     

    시간이 많이 걸리는 프로젝트 관리 활동이다.

    초기 개념에서 시스템 제공에 이르기까지 지속되는 활동이다.

    새로운 정보를 이용할 수 있을 때마다 계획을 정기적으로 수정해야한다.

    주요 소프트웨어 프로젝트 계획을 지원하기 위한 다양한 종류의 계획이 있다.

     

    🌱 프로젝트 계획 유형

     

     

    📁 프로젝트 개발 노력 추정

     

    프로젝트 개발 노력을 추정할 때 위 사항들을 고려해야한다.

     

     

    1. 기능점수(Functional Point) 모델

    논리적 설계를 기초로 사용자에게 제공되는 소프트웨어의 기능을 정량화하여 소프트웨어 규모를 산정한다.

    SW 기능의 복잡도를 점수화한다.

    데이터 관리 위주의 소프트웨어에 적합하다.

    조직에 관계없이 어플리케이션 복잡도 계산의 일관성을 제공한다.

    프로그래밍 언어와 무관하게 객관적인 복잡도 산정이 가능하다.

     

    기능 점수 산정 절차는 다음과 같다.

     

     

    🌱 UFP(Unadjusted Function Point) 산정 방법

     

    소프트웨어 구성요소는 아래 다섯가지이다.

    1. 외부입력(external input) : 시스템 외부에서 들어오는 데이터 및 제어 정보를 처리하는 기본 프로세스

    2. 외부출력(external output) : 시스템 밖으로 데이터나 제어 정보를 보내는 기본 프로세스

    3. 외부질의(external inquiry) : 데이터나 제어 정보의 조회를 통해 사용자에게 정보를 제공하는 프로세스

    4. 내부 논리 파일(internal logical file) : 시스템 영역 안에서 유지되고 사용자가 식별 가능한 논리적으로 연관된 자료 및 제어 정보 그룹

    5. 외부 인터페이스 파일(external interface file) : 시스템에서 참조되지만 다른 응용 시스템에서 유지되며 사용자가 식별 가능한 논리적으로 연관된 자료 및 제어 정보 그룹

     

    위 소프트웨어 구성요소 별 기능 점수에 가중치를 둔다.

     

    이때 Ci는 소프트웨어 요소 i의 개수, Wi는 소프트웨어 i의 가중치이다.

    최종적으로 UFP는 소프트웨어 요소의 개수와 소프트웨어 요소의 가중치를 곱한 값을 모든 소프트웨어 요소에 대해 더한 값으로 구한다.

     

     

    🌱 VAF(Value Adjustment Factor) 산정 방법

    14개의 기술적 분야에 대한 복잡도를 고려해서 0~5점의 점수를 부여한다. 이때 각 분야의 점수가 VAF가 된다.

     

    기술적 분야 14개
    데이터 통신, 분산 데이터, 성능 중요도, 과중한 하드웨어 사용, 높은 트랜잭션 비율, 온라인 데이터 입력, 온라인 업데이트, 복잡한 계산, 설치 용이성, 오퍼레이션 용이성, 이식성, 유지보수성, end-user의 효율, 재사용성

     

    위 점수들로 TCF(Total Complexity Factor)를 계산할 수 있다.

    14개 분야에 대한 VAF의 합은 0~70이므로 TCF의 범위는 0.65~1.35가 된다.

     

     

     

    🌱 AFP(Adjusted Function Point) 산정 방법

    위에서 구한 UFP와 TCF로 AFP를 구할 수 있다.

    AFP는 단지 크기에 대한 추정 값이다.

     

     

     

    최종적인 노력 추정은 아래와 같이 계산한다.

    FP/1MM은 개발 팀의 생산성을 말하며, 개발자 1인이 1개월에 개발할 수 있는 평균 FP를 뜻한다.

     

     

     

    2. 객체 점수 모델

    객체지향 시스템을 개발할 때 객체를 기초로 한 추정 방법을 말한다.

     

    1. 문제 도메인에 있는 클래스 개수 추정(Cc)

    - 요구 분석과 UML 모델링을 통해 추정

     

    2. 사용자 입력의 종류 분류 및 가중치 부여 (Wi)

    - UI 없음 : 2.0

    - 단순한 텍스트 : 2.25

    - 그래픽 UI : 2.5

    - 복잡한 UI : 3.0

     

    3. 최종 클래스 개수(TCc)

     

    4.

    MD : 클래스 하나를 개발하는데 소요되는 생산성 추정 값

     

    예제 : 프로젝트 초기 추정 클래스 개수 : 50, 복잡한 UI, 생산성 5MD

    TCc = 50 x 3.0 + 50 = 200

    노력(effort) 추정 : 200 x 5 = 1000MD, 1000/22 = 45.45MM

     

     

     

     

    📁 프로젝트 일정 관리

     

    프로젝트 일정 관리 프로세스

    1. 활동 정의 (activity definition)

    WBS (Work Breakdown Structure)에서 정의한 활동을 달성하기 위해 구체적인 활동 식별

     

    🌱 프로젝트에서의 활동 (Activity)
    관리 측면에서 진행 상황을 판단할 수 있도록 가시적 산출물을 생산하도록 조직되어야 함.

    🌱 Milestones (이정표)
    프로젝트 진행 과정에서 중요한 이벤트 또는 활동의 완료 시점


    🌱 Deliverables (산출물)
    고객에게 제공되는 프로젝트 결과물

     

     

    2. 활동 순서 정의(activity sequencing)

    활동 간의 논리적인 순서 관계를 정의

     

    3. 활동 자원 추정(activity resource estimating)

    개별 활동의 수행을 위해 필요한 자원을 추정

     

    4. 활동 기간 추정(activity duration estimating)

    개별 활동을 완료하기 위해 필요한 작업 기간을 추정

     

    5. 일정 계획 수립

    개별활동의 순서, 기간 및 필요한 자원 등을 분석하고 개발 프로세스를 이루는 활동을 파악하여 순서와 일정을 정하는 작업

    🌱 PERT/CPM 차트
    Program Evaluation and Review Technique/Critical Path Method
    세분화된 작업을 효율적으로 일정 관리하고 지원하기 위한 기법이다.
    관리에 대한 작업도 포함 가능하다.
    작업시간을 정확하게 예측할 필요가 있다.

    장점
    관리자의 일정 계획 수립에 도움이 된다.
    프로젝트 안에 포함된 작업 사이의 관계가 표현된다.
    병행 작업을 계획할 수 있다.
    일정 시뮬레이션이 가능해진다.
    일정 점검과 관리가 가능하다.

     

    절차는 다음과 같다.

    1. 산출물 생산에 소요되는 작업 결정

    2. 작업 예상 시간 결정

    3. 선행 작업 파악 : 작업의 종속 관계(선후 관계) 파악

    위를 바탕으로 PERT/CPM 차트를 그릴 수 있다.

    🌱 임계 경로(Critical Path) 구하기

    임계경로란 Pert Chart에서 소요 시간이 가장 긴 경로를 말한다. 프로젝트를 완수하기 위해 필요한 최소 시간(minimum time)을 나타낸다.

     

     

     

    🌱 간트(Cantt) 차트

    활동 별로 작업의 시작과 끝을 나타낸 그래프

     

    가로축은 시간, 세로축은 작업, 마름모 표시는 milestore, 파란색 막대는 여유시간을 뜻한다.

     

    계획 대비 진척도를 표시한다.

    개인별 일정표이다.

     

     

    🌱 애자일 일정 계획

    스토리카드 단위의 일정 계획을 말한다.

    사용자 스토리, 점수(유스케이스 개발에 소요되는 노력), 비즈니스 우선순위, 연관된 스토리 등을 기록한다.

     

     

    6. 일정 통제

    계획 대비 일정 차이를 모니터링하여 필요한 조치를 취함.

     

     

    📁 프로젝트 인적 자원 관리

    프로젝트에 이상적인 사람(ideal people)을 선정하지 못할 가능성이 있다.

    프로젝트 예산으로 인해 고임금 인격의 채용이 어려울 수 있고, 적절한 경험이 있는 인력이 제공되지 않을 수 있으며, 조직은 소프트웨어 프로젝트를 통해 직원들의 역량이 개발되기를 원한다.

     

    관리자는 특히 훈련된 인력이 부족할 때 위와 같은 제약조건 내에서 일할 수 있는 능력을 갖춰야한다.

     

    조직(팀)의 구성은 결과물 및 소프트웨어 개발 생산성에 큰 영향을 끼친다.

    역할과 책임 배정

    조직 관리

     

    조직 선택에 영향을 주는 요소는 작업의 특성과 팀 구성원의 의사 교류 횟수이다.

     

    소프트웨어 개발 팀 구성은

    계층형 팀

    에고리스(egoless) 팀

    책임 프로그래머 팀

     

     

    🌱 계층형 팀

    초보자와 경험자를 분리한다.

    프로젝트 관리자와 고급 프로그래머에게 지휘 권한이 주어진다.

    의사 교환은 초보 엔지니어나 중간 관리층으로 분산된다.

     

    장점

    - 소프트웨어의 구조가 계층적으로 잘 나누어진 경우에 적합하다.

    - 대규모 프로젝트의 경우 여러 계층으로 구성

     

    단점

    - 기술 인력이 관리를 담당

    - 의사 전달 경로가 김

     

     

    🌱 Egoless 팀

    민주주의 방식 의사 결정

    서로 협동하여 수행함

    자신의 일을 알아서 수행

    구성원이 동등한 책임과 권한

     

    장점

    - 작업 만족도 높음. 더 적극적으로 임하고 문제에 책임감을 느낌

    - 의사 교류 활발

    - 복잡하고 이해되지 않는 문제가 많은 장기 프로젝트에 적합

     

    단점

    - 책임이 명확하지 않은 일이 발생

    - 대규모 프로젝트에 적합하지 않음.

    - 의사 결정 지연 가능.

     

     

    🌱 책임 프로그래머 팀

    작은 팀으로 구성되고, 책임 프로그래머가 통제한다.

    외과 수술 팀 구성에 서 따온 Chief programmer team.

     

    책임 프로그래머 : 제품 설계, 주요 부분 코딩, 중요한 기술적 의사 결정, 작업 지시

    프로그램 사서 : 프로그램 리스트 관리, 설계 문서 및 테스트 계획 관리

    보조 프로그래머 : 기술적 문제에 대해 상의, 고객/품질 보증 그룹과 접촉, 부분적 분석/설계/구현 담당

    프로그래머 : 각 모듈을 프로그래밍, 테스팅, 디버깅

     

    장점

    의사 결정이 집중되어 있어 의사 결정이 빠름

    소규모 프로젝트에 적합

    초보 프로그래머를 훈련시키는 기회로 적합

     

    단점

    한 사람의 능력과 경험이 프로젝트의 성패 좌우

     

     

     

    효과적인 팀 규모를 선택하는 방법

    man/month와 같이 예상 개발 노력이 주어지면, 최적의 팀 규모를 정할 수 있다.

    팀 규모를 두 배로 늘린다ㅗㄱ 개발 시간이 절반으로 단축되지는 않는다.

    서브 시스템과 팀은 필요한 지식의 총량과 정보 교환이 감소하도록 크기가 정해져야한다.

    프로젝트 반복의 경우, 한 팀의 인원 수는 일정하지 않을 수 있다.

    스케줄보다 늦을 경우 그것을 따라잡기 위해 일반적으로 인력을 추가할 수 없다.

     

     

    팀에 필요한 기술

    – Architect

    – Project manager

    – Configuration management and build specialist

    – User interface specialist

    – Technology specialist

    – Hardware and third-party software specialist

    – User documentation specialist

    – Tester

     

     

     

    📁 프로젝트 위험 관리

    위험 관리란 위험을 식별하고 프로젝트에 미치는 영향을 최소화하기 위한 계획을 수립하는 것이다.

     

    위험이란 어떤 불리한 상황이 발생하는 것.

    - 프로젝트 위험(project risks)은 일정 또는 리소스에 영향을 미친다.

    - 제품 위험(product risks)은 개발중인 소프트웨어의 품질 또는 성능에 영향을 미친다.

    - 비즈니스 위험(business risks)은 소프트웨어를 개발하거나 조달하는 조직에 영향을 미친다.

     

     

    🌱 소프트웨어 위험

     

     

    🌱 위험 관리 프로세스

    1. 위험 식별(risk identification) : 프로젝트, 제품 및 비즈니스 위험 파악

    2. 위험 분석(risk analysis) : 각 위험의 발생가능성 및 심각성과 결과 평가

    3. 위험 대처 계획 수립(risk planning) : 위험의 영향을 회피하거나 최소화하기 위한 계획 작성

    - 회피 전략(avoidance strategies) : 위험이 발생할 확률을 줄인다.

    - 최소화 전략(minimisation strategies) : 프로젝트나 제품에 대한 위험의 영향을 줄인다.

    - 비상 계획(contingency plans) : 위험이 발생할 경우, 그러한 위험을 다루기 위한 비상계획

    4. 위험 모니터링(risk monitoring) : 프로젝트 전반에 걸쳐 위험 모니터링 및 평가

    식별된 각 위험을 발생 가능성이 낮아지는지 여부를 결정하기 위해 정기 적으로 평가하고, 위험의 영향이 변경되었는지 여부를 평가한다.

     

    각 주요 위험은 관리 진도 회의(management progress meeting)에서 논의되어야 한다

     

    728x90
    반응형
    LIST