2022-10-09 소프트웨어공학_6

2022. 10. 9. 18:12학부 강의/소프트웨어공학

1. 프로젝트 계획서

 

프로젝트 계획서는 프로젝트 진행 과정의 주기적 통제하면서 프로젝트의 중심이 된다.

 

프로젝트 관리자는 프로젝트 계획서를 작성하기 위해서 아래에 나열된 작업을 수행한다.

 

  • 프로젝트 task를 파악
  • 각 task를 수행하기 위해 필요한 노력 예측
  • 인적 자원 및 기타 자원을 task에 할당
  • 일정 계획 수립

 

이후 프로젝트 참여자의 검토를 거쳐 합의 하에 채택한다.

 

당연히 프로젝트 계획서는 현실적으로 전체 프로젝트 진행상황 파악에 문제가 되진 않아야 한다.

 

또한 프로젝트 점검 및 통제는 주간, 월간 회의를 통해서 주기적으로 수행한다.

 

국제 표준으로서 IEEE-Std-1058 프로젝트 계획서 양식을 참고할 수 있다.

 


2. 프로젝트 팀 구성

 

프로젝트 참여자로는 프로젝트 팀장, 분석 및 설계자, 개발자, 품질 보증 담당자, 산출물 관리 담당자, 태스팅 담당자 등이 있다.

 

팀 구성은 프로젝트의 기간과 규모에 따라서 달라진다.

 


가. 팀장과 구성원의 2단계 구조

 

일반적으로 소규모 프로젝트가 가장 많이 취하고 있는 팀 구조.

 

 

문제는 프로젝트 성공과 실패가 팀장의 능력에 달려있다는 것이다.

 


나. 계층적 팀 구성

 

팀의 구성이 둘 이상의 단계로 나누어짐.

 

프로젝트가 크고 참여인원이 많을 때 주로 채택된다.

 

 

그룹원들은 그룹 리더들과 의사소통한다.

 

다시 그룹 리더들은 프로젝트 책임자와 의사소통을 한다.

 

이로서 의사소통 경로를 줄일 수 있다.

 


다. 민주적 팀 구성

 

모두가 리더이자 팀원이다.

 

중요한 의사 결정에 모두의 의견을 반영한다.

 

 

팀원들의 만족도가 높일 수 있다.

 

하지만 의견의 합의점을 찾는 것이 어려울 수 있다.

 


3. 스케줄링 & WBS

 

가. 스케줄링이란

 

프로젝트의 완성을 위해 수행되어야 할 작업을 나열한 후 연관 관계와 순서에 따라 기간 별로 나타내는 것이다.

 

프로젝트 중 수행되어야 할 작업을 보다 쉽게 파악하기 위해서 WBS를 사용한다.

 


나. WBS

 

Work Breakdown Structure의 약자로 한국어로 업무 분업 구조라 한다.

 

프로젝트를 하향식으로 세분화하여 프로젝트의 단위작업에 대해 파악한다.

 

프로젝트 전체 범위를 산출물(혹은 인출물) 중심으로 트리 구조를 작성한다.

 

아래로 내려갈수록 프로젝트의 작업을 구체적으로 정의한다.

 

작업 원가, 일정 산정이 가능한 WBS의 말단 노드를 작업 패키지(work package)라고 한다.

 

 

출처 : https://ko.wikipedia.org/wiki/업무_분업_구조

 


4. 프로젝트 산정

 

프로젝트의 규모, 공수, 비용 등을 정량적으로 예측하기 위해 사용할 수 있는 기법들에 대해 알아보자.

 

 


가. 델파이 기법

 

경험이 많은 전문가에게 자문을 구하는 방법.

 

전문가의 경험에 의존하는 산정 방식으로 전문가들의 의견이나 판단을 종합하여 예측한다.

 


나. LOC(Lines of code)

 

프로그램의 코드 라인의 수를 통해 산정한다.

 

모듈 분할 → 모듈 별 규모 추정 후 총 규모 계산 → 경험적 데이터를 이용한 추정

 

  1. 모듈 분할
    1. 전체 프로그램을 모듈 별로 분할
  2. 모듈 별 규모 추정 후 총 규모 계산
    1. EV=(Vopt +4Vm +Vpess)/6
    2. Vopt : 낙관적 규모 (optimistic estimate)
    3. Vm : 보통의 규모 (most likely estimate)
    4. Vpess : 비관적 규모 (pessimistic estimate)
  3. 경험적 데이터를 이용한 개발 노력 및 개발 비용 추정
    1. 개발 노력 추정 : 생산성(man-month)(한 명의 개발자의 한 달 작업량)
    2. LOC당 비용 추정 (a값은 경험적 데이터 이용) (코드 한 줄당 비용)

 


다. COCOMO

 

Constructive Cost Model.

 

Boehm 아저씨가 제시한 LOC 기반 경험을 통한 산정 방법.

 

경험적으로 추출된 상수와 추정된 LOC를 기반으로 개발 노력과 개발기간 산정.

 

  • 개발 노력 = a x (KLOC)b
  • 개발 기간 = c x (개발 노력)d

 

이때 KLOC는 Kilo Lines of Code로 프로젝트 소스 코드의 라인 수를 천 단위로 산정한 것이다.

 

  • 기본형 : 5만 라인 이하의 비교적 작고 간단한 프로젝트.
  • 중간형 : 30만 라인 이하의 중간 정도의 크기와 복잡도를 갖는 프로젝트
  • 내장형 : 30만 라인 이상, 제한된 하드웨어와 소프트웨어, 운영조건을 갖고 개발해야 하는 경우

 


라. 기능점수 FP

 

Function Point.

 

시스템을 구현할 기술에 독립적이고, 사용자에 의해 식별되는 기능에 기반하여 전체 시스템 크기를 측정하는 척도

 

 

 


 

(1) 측정 유형의 결정

 

 


(2) 측정 범위와 애플리케이션 경계 식별

 

  • 측정 범위 : 기능점수를 측정하는 대상이 되는 범위. 하나 이상의 애플리케이션이 포함.
  • 애플리케이션 경계 : 측정 대상이 어플리케이션과 다른 어플리케이션 및 사용자와의 관계.

 


(3) 데이터 기능 측정

 

  • 내부 논리 파일(ILF, Internal Logical FIiles)
  • 외부 논리 파일(EIF, External Interface Files)

 

ILF와 ELF의 RET와 DET를 측정.

  • 레코드 요소 유형 (RET, Record Element Type) : ILF, ELF 내에 존재하는 것으로, 하나의 정보를 구성하는 데이터베이스의 테이블과 같은 관련 데이터의 그룹
  • 데이터 요소 유형 (DET, Data Element Type) : RET를 구성하는 개별 데이터. 더 이상 분리될 수 없는 최소 단위

 

미리 정의된 Metric을 이용해서 복잡도와 기여도 측정.

 

 


(4) 트랜잭션 기능 측정

 

트랜잭션 기능 : 애플리케이션 경계 외부의 사용자 또는 다른 애플리케이션과의 작업.

 

  • 외부 입력 (EI, External Input)
  • 외부 출력 (EO, External Output)
  • 외부 조회 (EQ, External Inquiry)

 

EI, EO 그리고 EQ에 대하여 FTR과 DET 측정.

 

  • 참조 파일 유형 (FTR, File Type Referenced) : 사용자가 요청한 기능을 처리하는데 필요한 ILF, EIF
  • 데이터 요소 유형 (DET, Data Element Type) : FTR를 구성하는 개별 데이터. 더 이상 분리될 수 없는 최소 단위

 

미리 정의된 Metric을 이용해서 복잡도와 기여도 측정.

 


(5) 미조정 기능점수 결정

 

미조정 기능점수 (UFP, Unadjusted Function Point) 결정

 

  • UFP = (ILF + ELF) + (EL + EO + EQ)

 


(6) 조정인자 결정

 

조정 인자 (VAF, Value Adjustment Factor) : 소프트웨어 산정에 영향을 주는 운영 환경 또는 성능 등 기능의 크기 외의 영향도 고려.

 

GSC(General System Characteristics) 14개 요인을 0 ~ 5 총 6등급으로 표시.

 

  • VAF = (TDI * 0.01) + 0.65

 

(TDI = Total Degree of infuence. 일반 시스템 특성의 총영향도 합.)

 


(7) 조정 기능점수 결정

 

조정기능점수(AFP, Adjusted Function Point) 산출

 

  • AFP = UFP * VAF

 


5. 일정 계획

 

WBS를 통해 파악된 단위 작업들을 산정된 기간이나 비용에 맞춰 계획하는 활동.

 

표현 방법

  1. 퍼트 차트 (PERT chart)
  2. 간트 차트 (Gantt chart)

 


가. 퍼트 차트 (PERT chart)

 

Program Ecaluation and Review Technique.

 

프로젝트를 구성하는 작업들 간에 관계 및 흐름을 시작적으로 표현.

 

용어 설명

 

작성 순서

  1. 좌에서 우로 이동하면서 ES, Du, EF, 단위작업을 입력한다.
  2. 우에서 좌로 이동하면 LF, Du, LS를 입력한다.
  3. FT를 구한다.

 

 


나. 간트 차트 (Gantt chart)

 

Henry L. Gantt가 제안.

 

일정, 예산 및 자원 계획 등을 목적으로 사용될 수 있는 프로젝트 일정 계획 기법이다.

 

막대 차트 또는 시간선 차트라고도 한다.

 

 

시간순으로 되어있는 캘린더에 프로젝트의 시작과 종료를 막대 형태로 표현한다.

 

차트를 오른쪽으로 읽으면 작업 시작과 종료를 분명히 알 수 있다.

 

현재 작업 상태, 지연 작업 현황, 향후 작업에 대해 파악 가능하다.

 

하지만 퍼트 차트와 달리 작업 간 의존성을 보여주진 않는다.

 

이미지 출처 : https://ko.wikipedia.org/wiki/%EA%B0%84%ED%8A%B8_%EC%B0%A8%ED%8A%B8#/media/%ED%8C%8C%EC%9D%BC:GanttChartAnatomy.png