SE Lab.1 Dept. of Computer Science & Engineering Topics in Software Engineering 계 획
SE Lab.2 Dept. of Computer Science & Engineering 학습 내용 제 2 장 계획 2.1 소 개 2.2 문제의 이해와 시스템 정의 2.3 타당성 분석 2.4 일정 계획 2.5 예산 계획 2.6 조직 계획 2.7 위험 분석 2.8 개발계획서 작성
SE Lab.3 Dept. of Computer Science & Engineering 2.1 소 개 1) 계획의 부재 2) 소프트웨어 프로젝트 계획수립 3) 계획수립의 결과
SE Lab.4 Dept. of Computer Science & Engineering 계획의 부재 ㅇ 불확실성 ㅇ 일정의 차질, 경비의 초과, 저품질, 높은 유지보수 비용 ㅇ Risk ㅇ 프로젝트의 실패
SE Lab.5 Dept. of Computer Science & Engineering 소프트웨어 프로젝트 계획수립 정의 : " 소프트웨어 개발 과정과 일정, 비용, 조직 및 생산제품에 대하여 사전에 계획 " ① 문제를 이해하고 정의 ② 필요한 소작업을 정의하고 순서를 결정 ③ 일정예측 ④ 비용예측 ⑤ 위험분석 ⑥ 계획서 작성
SE Lab.6 Dept. of Computer Science & Engineering 계획수립의 결과 소프트웨어 개발 계획서 사업관리자, 개발자, 사용자들에게 사업의 범위, 필요 비용, 필요 자원, 개발 일정, 위험 요소 등에 대한 정보를 제공하는 산출문서 (deliverable).
SE Lab.7 Dept. of Computer Science & Engineering 2.2 문제의 이해와 시스템 정의 문제의 이해 : 대상 업무나 문제를 사용자가 이해하는 용어로 정확히 기술한 것 문제의 인식 - 문제 범위와 원인 파악 ↓ 기본요건 분석 - 문제를 둘러싼 조직, 제도, 시설, ↓ 인원, 기술에 관한 현황 파악 시스템 조사 및 정보수집 - 현재의 시스템 조사, 업무흐름 ↓ 정책 등을 파악 현 시스템의 이해 - 면담과 서류로 심층 분석 ↓ ( 고객상담, 현업의 분석, 작업의 체험 ) 신규 시스템 정의 - 목표 시스템의 정의
SE Lab.8 Dept. of Computer Science & Engineering 신규 시스템의 목표설정 ㅇ 기능과 우선순위 ㅇ 투자 효과를 분석 ㅇ 양적인 제품 목표
SE Lab.9 Dept. of Computer Science & Engineering 시스템 정의 ㅇ 문제의 기술 ㅇ 시스템의 필요성 ㅇ 시스템의 목표 ㅇ 제약 사항 ㅇ 시스템의 제공 기능 ㅇ 사용자의 특징 ㅇ 개발, 운용, 유지보수 환경
SE Lab.10 Dept. of Computer Science & Engineering 2.3 타당성 분석 ㅇ 경제적 타당성 - 투자 효율성 - 시장성 - 비용과 수익의 비교 ㅇ 기술적 타당성 ( 사용자 요구 기능 성능 vs. 제공 가능성 ) - 사례 연구 - 실패 사례 연구 - 모의 실험 - 프로토타이핑 ㅇ 법적 타당성 - 사용 도구들의 법적 권한 - 시장, 관행들에 대한 조사
SE Lab.11 Dept. of Computer Science & Engineering 2.4 일정 계획 ㅇ 개발 절차 계획 - 생명 주기 모형 - 산출물 정의 ( 문서화 계획 ) - 이정표 (milestone) 설정 ㅇ 순서 작업 분해 구조 (WBS) 작성 ↓ 작업 순서 결정 (CP/M 네트워크 )
SE Lab.12 Dept. of Computer Science & Engineering WBS 작성 WBS (Work Breakdown Structure) 작성 프로젝트 개 발 관 리 요구분석 설 계 구 현 - 목표정의 - 제약사항 정의 - 사용자 면담 - 요구정리 - 자료흐름도 작성 - 자료사전작성 - 소단위명세작성
SE Lab.13 Dept. of Computer Science & Engineering 작업순서 결정 ㅇ CP/M 소작업 리스트 소작업 선행작업 소요기간 A Start2 B A1 C B1 D A3 E D2 F A2 G F1 Completion E, C, G 총소요기간 12
SE Lab.14 Dept. of Computer Science & Engineering 작업순서 결정 ( 계속 ) ㅇ CP/M 네트워크 BC Start ADEEnd F G
SE Lab.15 Dept. of Computer Science & Engineering 작업순서 결정 ( 계속 ) ㅇ 최단 경로 선택 가능 경로소요기간 A-B-C 4 Critical Path =>A-D-E 7 A-F-G 5
SE Lab.16 Dept. of Computer Science & Engineering 일정표작성 일정표작성 Page 프로젝트 계획서 1 of 1 시스템 Date 창고 및 재고 관리 시스템 12/10 기호 |---| 일정계획 분석자확인 |===| 시행 담당자 소 작 업 R- 요구 정의 R.1 프로젝트 팀 구성 R.2 목표 및 제약 정의 R.3 창고 직원 면담 R.4 요구 정리 R.5 요구분석 검토회의 D- 분석 D.1 분석서 수정 D.2.1 화면 설계 D.2.2 출력설계 D.3 시스템설계 D.4 모듈설계 D.5 분석서 검토회의 I- 구현 I.1 프로그램 I.2 테스트계획 I.3 테스트 화일 구축 I.4 유닛 테스트 I.5 코딩 컴토회의 T- 테스트 T.1 통합테스트 T.2 시스템 테스트 T.3 시스템 설치 T.4 교육 T.5 인수테스트
SE Lab.17 Dept. of Computer Science & Engineering 2.5 예산 계획 1) 개발 비용 예측 2) 비용에 영향을 주는 요소 3) 비용 산출 방법 4) COCOMO(Constructive Cost Model) 모형 5) 과학기술처 산정기준
SE Lab.18 Dept. of Computer Science & Engineering 개발 비용 예측 ㅇ 정확한 비용 예측은 매우 어려움 - 알려지지 않은 요소가 산재 ㅇ 단계적 비용 산정 및 정산
SE Lab.19 Dept. of Computer Science & Engineering 비용에 영향을 주는 요소 ㅇ 제품의 크기 - 제품의 크기가 커짐에 따라 기하급수로 늘어남 ㅇ 제품의 복잡도 응용 S/W 개발지원 S/W 시스템 S/W 1 :3: 9 ㅇ 프로그래머의 자질 - 코딩 시간 (18:1), 디버깅 시간 (28:1) 의 능력차 - 프로그래밍 언어, 응용 친숙도
SE Lab.20 Dept. of Computer Science & Engineering 비용에 영향을 주는 요소 ( 계속 ) ㅇ 요구되는 신뢰도 수준 ㅇ 기술 수준 (Capability Maturity) - 개발 장비, 개발 도구, 조직 능력, 계획 능력, 관리 능력, 방법론 숙달 정도 ㅇ 남은 시간 - 최적의 기간보다 단축되거나 늘어나면 ⇒ 많은 노력이 필요 - Putnam " 프로젝트의 노력은 남은 개발기간에 4 제곱에 반비례 " - Brooks: Mythical Man-Month " 기간 단축을 위하여 인원을 더 투입하면 오히려 더 지연되는 현상 "
SE Lab.21 Dept. of Computer Science & Engineering 비용 산출 방법 ㅇ 하향식 (Top-down) - 과거의 경험을 바탕으로 개략적 계산 ① Man-month 를 예측 ② 총소요 예산 = Man-month * 평균 인건비 ③ LOC 도 과거의 경험으로 예측 예 : 10 man * 15 month = 150 MM 150 MM * 200 만원 = 3 억 500 LOC * 50 Module = 25KLOC
SE Lab.22 Dept. of Computer Science & Engineering 비용 산출 방법 ( 계속 ) Delphi 법 - 전문가의 의견 일치에 의한 산정 ① 시스템 정의서를 분석하여 전문가들이 독립 산정 ( 익명으로 제출 ) ② 조정자는 반응을 요약 배포 및 조정 ③ 과정을 반복하여 일치된 의견 추출
SE Lab.23 Dept. of Computer Science & Engineering 비용 산출 방법 ( 계속 ) 상향식 (Bottom-up) - LOC costing ① 구현될 기능을 파악 ② 각 기능들의 LOC 의 범위를 예측 (pessimistic, optimistic, and most likely values) ③ LOC 의 Expected number 와 derivation 을 계산 Expected=(l+4m+h)/6 std(LOC)=[(h-l)/6]**2,where l=low(optimistic) h=high(pessimistic) m=most likely
SE Lab.24 Dept. of Computer Science & Engineering 비용 산출 방법 ( 계속 ) Function l h m LOC Dev Module Module Module Module Total 12108
SE Lab.25 Dept. of Computer Science & Engineering 비용 산출 방법 ( 계속 ) ④ productivity data 로부터 ₩ /LOC 와 LOC/mm 을 구한다 ⑤ 개발비용과 인력소요를 계산 예. 12K / 5 천원 = 6 천만원 12K / 300(LOC/mm) = 40mm ⑥ 개발기간을 산정하기 위하여 software equation 을 사용 t = ( L3 / C3 K)
SE Lab.26 Dept. of Computer Science & Engineering COCOMO 모형 COCOMO(Constructive Cost Model) 모형 ㅇ B. Boehm 이 개발 ㅇ TRW 등 수많은 실제 프로젝트의 기록을 통계분석 - 2K-32K 정도의 소, 중형 프로젝트 ㅇ 표준산정공식 - 소프트웨어 유형에 따라 다른 공식 유형 MM( 노력 ) D( 기간 ) Organic 2.4*[LOC] *[MM]0.28 Semi-detached 3.0*[LOC] *[MM]0.35 Embeded 3.6*[LOC] *[MM]0.32
SE Lab.27 Dept. of Computer Science & Engineering COCOMO 모형 ( 계속 ) ㅇ 제약사항 - 설계에서 인수시험까지만 포함 - 문서화, 검토회 등 소요 비용도 포함 - Execution line 만 포함 - 프로그램 사서 비용은 포함, 운용 요원, 비서 등의 간접 지원자의 비용은 배제 - 소프트웨어 공학 원리가 전반적으로 적용 예 ) CAD system Expected LOC = E=3.0*(LOC)1.12 D= 2.5*E0.35 =3.0*(3.33)1.12 = 2.5*(152)0.35 =152 MM = 14.5 months 소요인원 =152/14.5 명 - 노력 승수로 결과를 보정
SE Lab.28 Dept. of Computer Science & Engineering 과학기술처 산정기준 ㅇ COCOMO 의 변형 ㅇ 산정 절차 ① LOC 예측 ② 보정표 (on-line/batch, language, 규모별, 유형별 ) 를 보고 총 LOC 를 계산 ③ 공정별 전문요원 생산 기준표에 의하여 기초소요 MM 를 계산 ④ 프로젝트 유형별 보정계수에 의하여 실질소요 MM 을 계산 ⑤ 기준노임 단가를 적용 직접인건비 계산 ⑥ 인건비 + 직접경비 ( 여비, 특수자료, 인쇄 등 ) + 제경비 ( 임원, 서무, 경리, 소모품, 비품 ) + 기술료 ( 조사연구, 기술훈련비 ) = 총 개발비
SE Lab.29 Dept. of Computer Science & Engineering 과학기술처 산정기준 ( 계속 ) 예 ) ① 10K, C language, 사무처리용 ② 10K * 1.3( 언어보정 ) * 1( 정보처리형태 ) = 13 KLOC ③ ( 총소요 mm/100K) * 0.13 = 26.6 MM ④ 26.6 * 0.6( 규모별보정 ) = MM * 1.0( 유형별보정 ) = ⑤ * 노임단가 = 직접인건비
SE Lab.30 Dept. of Computer Science & Engineering 2.6 조직 계획 1) 프로젝트의 구조 2) 프로그래밍 팀의 구성 ① 민주주의식 팀 ② 책임 프로그래머 (Chief) 팀 ③ 계층형 팀 구성
SE Lab.31 Dept. of Computer Science & Engineering 프로젝트의 구조 ㅇ 프로젝트별 조직 - 프로젝트 시작에서 개발 완료까지 전담 팀 ㅇ 기능별 조직 - 계획수립 분석팀 - 설계, 구현 팀 - 테스트 및 유지보수 팀 - Pipeline 식 공정 ㅇ 매트릭스 조직 - 요원들은 고유 관리 팀과 기능 조직에 동시에 관련 - 필요에 따라 요원을 차출 팀을 구성하고 끝나면 원래의 소속으로 복귀
SE Lab.32 Dept. of Computer Science & Engineering 민주주의식 팀 ㅇ 민주적인 의사결정으로 일을 수행 ㅇ 서로 협동하여 수행하려는 비이기적인 팀 ㅇ 의사전달 경로 ㅇ 자신이 있는 일을 알아서 수행 ㅇ 개인의 책임과 권한이 애매 모호할 수 있음
SE Lab.33 Dept. of Computer Science & Engineering 책임 프로그래머 (Chief) 팀 ㅇ 고도의 구조화 - 계층적 구조 - 책임 프로그래머가 리더 ㅇ 구성원 - 책임 프로그래머 : 제품설계, 주요부분의 코딩, 중요한 기술적 결정, 작업의 지시 - 프로그램 사서 (librarian) : 프로그램 리스트 관리, 설계 문서 및 테스트 계획 관리 - 보조 프로그래머 (back-up) : 기술적 문제에 대하여 상의 고객, 출판, 품질 보증 그룹과 접촉 부분적 분석, 설계, 구현 담당 - 프로그래머 : 실제 프로그램 ( 책임 프로그래머의 지시 )
SE Lab.34 Dept. of Computer Science & Engineering 계층형 팀 구성 ㅇ 기능에 따라 계층적으로 구성 ㅇ 고급 프로그래머가 시스템의 부분을 담당 ㅇ 의사전달 경로
SE Lab.35 Dept. of Computer Science & Engineering 2.7 위험 분석 ㅇ 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동 ㅇ 일반적인 위험 요소 위험 요소위험 관리 기법 인력 부족 - 유능한 인력모집, 팀 구성, 요원 배치, 교차 - 교육, 유능 인력 사전 확보 2. 비현실적 일정 - 더 자세한 비용, 일정 예측, 원가 분석, 및 예산 점증적 개발, 소프트웨어 재사용 요구를 줄임 3. 잘못된 기능의 - 사용자 회람, 프로토타이핑, 사용자 지침 소프트웨어 개발 서를 조기에 작성, 조직 분석, 직능 분석
SE Lab.36 Dept. of Computer Science & Engineering 2.7 위험 분석 ( 계속 ) 위험 요소위험 관리 기법 잘못된 인터페 - 프로토타이핑, 시나리오, 태스크 분 이스의 개발 석, 사용자 분류 ( 기능, 스타일, 업무 ) 5. 과포장 - 요구 삭감, 프로토타이핑, 비용 - 수익 분석, 원가 분석 6. 계속적인 - 최대 변경 상한선, 정보 은닉, 점증적 요구 변경 개발 ( 다음 버젼까지 변경을 연기 ) 7. 실시간 성능 - 시뮬레이션, 벤치마킹, 모델링, 의 빈약 프로토타이핑, 튜닝 8. 기술적 취약 - 기술 분석, 비용 - 수익 분석, 프로토타이핑 ; 점검
SE Lab.37 Dept. of Computer Science & Engineering 2.8 계획서 작성 1. 개 요 1.1 프로젝트 개요 1.2 프로잭트의 산출물 1.3 참고문헌 및 정의, 약어 2. 프로젝트 구성 2.1 프로세스 모형 2.2 관리 구성 2.3 프로젝트의 의무 3. 관리 계획 3.1 관리목표 및 우선순위 3.2 가정 및 제약조건 3.3 위험분석 3.4 점검 및 제어 절차 3.5 인력배치 계획 4. 기술 계획 4.1 방법론, 도구, 기법 4.2 소프트웨어 문서화 4.3 프로젝트 기술 지원 5. 일정, 자원 계획 5.1 소작업의 정의 및 관계 5.2 자원 소요 5.3 예산 자원 배치 5.4 일정 참고