27
1 소소소소소 소소 소소 소 소소 2 소 : 소소 소 소 소 소소소소소 소소소소소소

소프트웨어 공학 응용 및 실습

  • Upload
    edric

  • View
    70

  • Download
    5

Embed Size (px)

DESCRIPTION

소프트웨어 공학 응용 및 실습. 제 2 장 : 계획 이 형 원 강릉대학교 컴퓨터공학과. 학습 내용. 문제의 정의 타당성 조사 일정 계획 예산 계획 조직 계획 위험 분석 계획서 작성. 계획 : 작업들. 계획의 부재  일정 지연 , 경비 초과 , 품질 저하 , 유지보수 비용 증가  프로젝트의 실패 작업 1) 문제를 이해하고 정의 2) 타당성 조사 3) 필요한 소작업을 정의하고 순서를 결정 4) 일정 예측 5) 비용 예측 6) 위험 분석 7) 계획서 작성. - PowerPoint PPT Presentation

Citation preview

Page 1: 소프트웨어 공학 응용 및 실습

11

소프트웨어 공학 응용 및 실습소프트웨어 공학 응용 및 실습

제 2 장 : 계획

이 형 원강릉대학교 컴퓨터공학과

Page 2: 소프트웨어 공학 응용 및 실습

학습 내용학습 내용

문제의 정의타당성 조사일정 계획예산 계획조직 계획위험 분석계획서 작성

Page 3: 소프트웨어 공학 응용 및 실습

계획 : 작업들 계획 : 작업들

계획의 부재 일정 지연 , 경비 초과 , 품질 저하 , 유지보수 비용 증가 프로젝트의 실패

작업 1) 문제를 이해하고 정의2) 타당성 조사3) 필요한 소작업을 정의하고 순서를 결정 4) 일정 예측5) 비용 예측6) 위험 분석7) 계획서 작성

Page 4: 소프트웨어 공학 응용 및 실습

계획 : 주의할 점계획 : 주의할 점계획은 변경되기 마련 : 계획 관리가 필요

• 중간 단계 (milestones) 에서 개발 과정과 중간 산출물 점검• 계획과 차이가 나는 부분을 식별• 차이의 원인 분석 및 조치

계획 및 계획 관리 시 기술적인 측면 고려 • 예 . 코드 재사용의 생산성 , 일정과 품질사이의 상관 관계

복잡한 득실 관계 고려 • 소프트웨어 구입시의 생산성 향상 정도• 최신형 기기 사용시의 개발 기간 단축 정도• 외주 개발 / 구입 / 자체 개발의 득실

Page 5: 소프트웨어 공학 응용 및 실습

문제의 정의문제의 정의

문제의 이해• 현 업무 / 시스템을 이해 : 사용자 면담 , 현장 관찰 , 실제 업무 수행

• 문제점 파악• 목표 설정 : 개발 과정 / 산출물 , 정량적 / 정성적

대책 수립• 제약 조건 파악 : 사용자 요구 / 개발 여건 / 기술적 능력 고려• 기능 및 우선순위 : 시스템의 규모 조정 가능성• 개발 모형 선택

Page 6: 소프트웨어 공학 응용 및 실습

문제의 정의 : 문제 정의서 문제의 정의 : 문제 정의서

문제의 기술시스템의 필요성시스템의 목표제약 조건시스템의 제공 기능 및 우선 순위사용자의 특징개발 , 운용 , 유지보수 환경개발 모형

Page 7: 소프트웨어 공학 응용 및 실습

타당성 조사타당성 조사

경제적 타당성• 투자 효율성• 시장성

기술적 타당성 ( 요구되는 기능 / 성능의 제공 가능성 )• 사례 및 실패 사례 연구• 모의 실험• 프로토타이핑

법적 타당성• 사용 도구들의 법적 권한• 시장 , 관행들에 대한 조사

Page 8: 소프트웨어 공학 응용 및 실습

일정 계획 : 작업 순서일정 계획 : 작업 순서

개발 프로세스를 이루는 소작업 (activity)들을 파악하고 그 순서와 일정을 정하는 작업1. 작업분해 : Work Breakdown Structure 작성2. 작업간의 상호 의존 관계 : CPM 네트워크 작성 3. CPM 네트워크의 각 작업 소요 시간을 정함4. CPM 네트워크로부터 최소 소요 기간을 구함5. 소요 MM, 기간 산정 : SW 규모 추정 방법 이용 6. CPM 네트워크와 비교 후 수정7. 확정된 일정을 간트 차트 (Gantt Chart) 로 그림8. 일정 예측 자료 저장

Page 9: 소프트웨어 공학 응용 및 실습

일정 계획 : 작업 분해일정 계획 : 작업 분해

Work Breakdown Structure(WBS)• 프로젝트 완성에 필요한 모든 일을 계층적 구조로 표현• 단말 노드들은 전체 프로젝트의 자원 예측의 기초 자료

컴파일러개발 프로젝트

분석 * 설계 테스트 사용자 지침서 작성

스캐너 파서 코드 생성기

* R1: 목표정의 R2: 제약사항 정의 R3: 사용자 면담 R4: 요구정리 R5:DFD 작성

Page 10: 소프트웨어 공학 응용 및 실습

일정 계획 : CPM 네트워크일정 계획 : CPM 네트워크

CPM 소작업 리스트

소작업 선행 작업 소요기간ABCDEFGHIJKL

--A-

B, DA, B

AD

C, FC, G

IJ

810151010520251515710

Page 11: 소프트웨어 공학 응용 및 실습

일정 계획 : CPM 네트워크 (계속 )일정 계획 : CPM 네트워크 (계속 )

임계 경로 (critical path)S-A-M1-C-M4-I-M6-K-M8-L-X 소요기간 55

S

M1

A

B

D

M3

M2

M5

C

F

G

E

M4

M7

H

I

J

M6

K

M8

L

X

8

15

10

15

5

20

10

25

15

15

7

10

Page 12: 소프트웨어 공학 응용 및 실습

일정 계획 : CPM 네트워크 (계속 )일정 계획 : CPM 네트워크 (계속 )장점

• 관리자의 일정 계획 수립에 도움• 작업 사이의 관계 및 최장 경로 파악• 병행 작업 계획 및 자원 할당• 다른 일정 계획안을 시뮬레이션• 프로젝트 일정 점검 , 관리

기술적 개발 작업 + 관리 작업작업 시간을 정확히 예측할 필요대규모 프로젝트의 경우 소프트웨어 도구 이용

• MS-Works, Mac Project II, ...

Page 13: 소프트웨어 공학 응용 및 실습

일정 계획 : 프로젝트 일정표일정 계획 : 프로젝트 일정표

간트 차트• CPM 네트워크로부터 생성• 소작업 별로 작업의 시작과 끝을 나타낸 그래프

작업 : 막대작업 할당 시간 : 막대의 길이

• 새 작업 발견 or 작업 시간 변경 : WBS CPM Gantt• 변형

예비 시간 (slack time) 표시 – 다음 작업에 영향을 주지 않고 연장 가능한 시간– 임계 경로 상의 작업들은 예비 시간이 없음

계획 대비 진척도를 표시개인별 일정표

Page 14: 소프트웨어 공학 응용 및 실습

예산 계획예산 계획소프트웨어 개발 비용 예측

• 정확한 비용 예측은 매우 어려움알려지지 않은 요소가 산재비용 예측의 변수

– 일반 엔지니어링 작업 : 원자재의 사용량– 소프트웨어 개발 : 소프트웨어 엔지니어의 수와 개발 기간

• 과거의 프로젝트 데이타가 필요예산

• 인건비 : MM( 인원 / 월 ) 을 기초• 간접비 : 여비 , 재료비 , 회의비 , 공공요금 , overhead• 기자재 비

Page 15: 소프트웨어 공학 응용 및 실습

예산 계획 : 영향을 주는 요소예산 계획 : 영향을 주는 요소

제품의 크기• 제품의 크기가 커짐에 따라 기하급수로 늘어남

제품의 복잡도• 응용 : 개발지원 : 시스템 = 1 : 3 : 9

프로그래머의 자질요구되는 신뢰도 수준기술 수준 ( 장비 , 도구 , 조직능력 , 관리 , 방법론 숙달 )남은 시간

• Putnam “ 프로젝트 비용은 남은 개발 기간의 4 제곱에 반비례”

Page 16: 소프트웨어 공학 응용 및 실습

예산 계획 : 기법예산 계획 : 기법

Parkinson’s law: 쓸 돈이 있으면 다 쓰게 됨• 장점 : 충분한 여유 비용과 시간이 있는 경우• 단점 : 무리한 진행 , 비용 낭비 , 나쁜 습관

Price-to-Win: 고객이 지불한 비용 그대로 적용• 장점 : 비용 예측 기법이 없거나 신뢰성이 없는 경우• 단점 : 권위적

유추 산정 : 유사 프로젝트의 실제 비용을 기반• 장점 : 실제 경험을 이용• 단점 : 유사성의 판단 기준

Page 17: 소프트웨어 공학 응용 및 실습

예산 계획 : 기법 ( 계속 )예산 계획 : 기법 ( 계속 )

상향식 산정 : 각 요소의 비용을 산정한 후 합산• 장점 : 책임자가 직접 예측 ( 책임감 , 구체정보 ), 오차가 적음 ( 다수 )

• 단점 : WBS 의 효율성에 영향을 받음알고리즘 / 실험적 모델링 : 과거 정보를 바탕으로 특정 SW 척도 ( 주로 규모 ) 와 비용간 관계에 대한 공식을 제공• 장점 : 신뢰성• 단점 : 모델이 개발된 환경과 상이한 환경

Page 18: 소프트웨어 공학 응용 및 실습

예산 계획 : COCOMO예산 계획 : COCOMO

절차 (intermediate model 기준 )1. 규모 산정 (LOC, FP)2. MM(PM) 산출 Organic 유형 MM = 3.2*(KDSI)**1.05 TDEV=2.5*(PM)**0.38 Se

midetached 유형 MM = 3.0*(KDSI)**1.12 TDEV=2.5*(PM)**0.35 Embedded 유형 MM = 2.8*(KDSI)**1.20 TDEV=2.5*(PM)**0.32

3. MM 를 노력 승수로 보정 : MM = MM * 15 cost driver4. 총인건비 = MM * 한 사람당 평균 인건비5. 총 개발 기간 산출 : 시스템 성격에 관계없이 비슷

난이도가 높을수록 신중한 계획 및 실천6. 평균 투입 인원 : MM/TDEV7. 단계별 MM 와 TDEV 산출 : 비율에 대한 표 제공

Page 19: 소프트웨어 공학 응용 및 실습

예산 계획 : COCOMO( 계속 )예산 계획 : COCOMO( 계속 )

예• CAD 시스템 예상 규모 : 33360 LOC

PM = 3.0*(KDSI)**1.12 = 3.0*(3.33)**1.12 = 152MM

TDEV = 2.5*(PM)**0.35 = 2.5*(152)**0.35 = 14.5 M

• 보정주의

• macro estimation• 많은 가정과 제약 조건• 독립 변수는 오직 원시 코드의 규모

Page 20: 소프트웨어 공학 응용 및 실습

예산 계획 : 기능점수 방법예산 계획 : 기능점수 방법

기능 점수 (function points)• 정확한 LOC 는 예측 불가능• 논리적 규모를 측정

입력 , 출력 , 질의 , 화일 , 인터페이스의 개수초기 예측 신뢰성이 높음

• 비즈니스 자료 처리 분야절차

1. 복합 가중 값을 이용한 FP 산출 ( 표 2.5)2. FP = FP*[0.65+0.01*14 complexity adjustment values]3. LOC = FP * 원하는 언어의 FP 1 점 당 LOC

어셈블리 언어 (324), C(150), Pascal(91), Ada(71), Smalltalk(21)

4. 개발 노력 (MM) = LOC / 생산성 (LOC/MM)

Page 21: 소프트웨어 공학 응용 및 실습

조직 계획조직 계획

조직의 구성• 소프트웨어 개발 생산성에 큰 영향 : 역할 분담 및 협력• 팀 구성에 영향을 주는 요소

프로젝트의 기간 : 장기 프로젝트일수록 개개인의 만족도가 중요

작업의 복잡도 및 규모에 팀 인원을 맞춤소프트웨어의 특성 : 모듈들의 결합도가 높으면 적은 팀원

• 개발 조직 구조프로젝트별 조직 : 프로젝트 시작에서 개발 완료까지 전담 팀기능별 조직 : 분석팀 , 설계 구현 팀 , 테스트 및 유지보수 팀매트릭스 조직

– 요원들은 고유 관리 팀과 기능 조직에 동시에 관련– 필요에 따라 요원을 차출 팀을 구성하고 끝나면 원래의 소속으로 복귀

Page 22: 소프트웨어 공학 응용 및 실습

조직 계획 : 중앙 집중식 팀 구성조직 계획 : 중앙 집중식 팀 구성의사 결정권이 리더에게 집중되는 계층적 팀 구조책임 프로그래머 팀 (chief programmer team)

• 외과 수술 팀 구성에서 유래• 책임 프로그래머 : 제품 설계 , 주요 부분 코딩 , 중요한 기술적 결정 , 작업의 지시

• 프로그램 사서 : 프로그램 리스트나 설계 문서 등 관리• 보조 프로그래머 : 기술적 문제에 대하여 상의 , 사용자 /품질 보증 담당자와 접촉 , 부분적 분석 / 설계 / 구현을 담당

• 프로그래머 : 책임 프로그래머의 지시로 프로그래밍

Page 23: 소프트웨어 공학 응용 및 실습

조직 계획 : 중앙집중식 팀구성 (계속 )조직 계획 : 중앙집중식 팀구성 (계속 )

특징• 의사 결정이 집중되고 빠름• 소규모 프로젝트에 적합• 경험 많은 한 프로그래머와 여러 초보 프로그래머• 초보 프로그래머를 훈련시키는 기회로 적합

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

책임프로그래머

프로그램 사서 프로그래머 보조 프로그래머

백업

Page 24: 소프트웨어 공학 응용 및 실습

조직 계획 : 분산형 팀 구성조직 계획 : 분산형 팀 구성민주주의식 의사결정

• 서로 협동하여 수행하는 비이기적인 팀 (Egoless team)• 자신이 있는 일을 알아서 수행• 구성원이 동등한 책임과 권한

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

단점• 의사 교환 경로 수가 많음• 책임이 명확하지 않은 일이 발생• 대규모에 적합하지 않음 ( 의사 소통 비용 및 의사 결정 지연 )

Page 25: 소프트웨어 공학 응용 및 실습

조직 계획 : 혼합형 팀 구성조직 계획 : 혼합형 팀 구성

특징• 집중형 , 분산형의 단점을 보완• 초보자와 경험자를 분리• 지휘권한 : 프로젝트 관리자와 고급 프로그래머• 의사교환 : 초보 엔지니어나 중간 관리층으로 분산• 소프트웨어 구조가 계층적으로잘 나누어지는 경우 적합

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

프로젝트 리더

고급 프로그래머

초보 프로그래머

Page 26: 소프트웨어 공학 응용 및 실습

위험 분석위험 분석

위험 요소를 인식하고 그 영향을 분석하여 관리위험 요소의 예와 해결 방안

• 요구 분석의 잦은 변경 프로토타이핑 , 점증적 개발 방법 , 최대 변경 상한선• 인력 부족 또는 부적절한 인원 배치 인력의 적극적 유치 , 교차 교육 • 일정 지연의 위험 작업간 의존도를 낮춤

CPM 네트워크에서 outgoing arcs 가 많은 노드를 세분화 CPM 네트워크에서 incoming arcs 가 많은 노드를

세분화

Page 27: 소프트웨어 공학 응용 및 실습

계획서 작성계획서 작성

1 개 요1.1 프로젝트 개요1.2 프로젝트의 산출물1.3 정의 , 약어

2 자원 및 일정 예측2.1 자원

가 . 인력나 . 비용

2.2 일정3 조직 구성 및 인력 배치

3.1 조직 구성3.2 직무 기술

4 WBS5 기술관리 방법

5.1 변경 관리

5.2 위험 관리5.3 비용 및 진도 관리5.4 문제점 해결 방안

6 표준 및 개발 절차7 검토 회의

7.1 검토회 일정7.2 검토회 진행 방법7.3 검토회 후속 조치

8 개발 환경9 성능 시험 방법10 문서화11 유지보수12 설치 , 인수13 참고문헌 및 부록