득이공간

[소프트웨어공학] 2장. 계획 본문

CS/소프트웨어공학

[소프트웨어공학] 2장. 계획

쟁득 2024. 2. 24. 14:26
해당 게시물은 김정욱 교수님의 '소프트웨어공학' 강의를 수강하며
학습한 내용을 개인적으로 정리한 글입니다.

📌 목차 - 2장. 계획

2-1. 계획
2-2. 문제 정의
2-3. 타당성 분석
2-4. 개발 비용 산정
2-5. 개발 비용 산정 기법
2-6. 일정 계획
2-7. 위험 분석


📌 2-1. 계획

* 계획
- 누가 무엇을 어느 기간동안 어떻게 개발해야 하는지 예측하는 작업

* 체계적이고 명확한 계획을 위한 6가지
- 문제 정의
- 타당성 분석
- 개발 비용 산정
- 개발 비용 산정 기법
- 일정 계획
- 위험 분석


📌 2-2. 문제 정의

* 문제 정의
- 무엇을 개발할 것인지 명확히 정의한다. 개발하고자 하는 영역의 배경 지식이 필요하다. 기존에 존재하는 유사 시스템을 사용해보고 분석한다.


📌 2-3. 타당성 분석

* 타당성 분석
- 경제적 타당성: 투자 효율성이 얼마나 높은지, 시장성은 얼마나 큰지 등을 검토한다. (경영자, 분석가)
- 기술적 타당성: 기술적인 어려움은 없는지 검토한다. (기능 구현 가능성, 하드웨어 성능, 개발자의 기술력)
- 법적 타당성: 사용하는 프로그램 등에 대해 소유권 등의 법적 문제는 없는지 검토한다.


📌 2-4. 개발 비용 산정

* 개발 비용 산정
- 어려운 점: 사람 중심이어서 개발 인력의 능력에 따라 품질의 차이가 크고 개발 프로세스가 다양해서 표준화나 자동화가 어렵다.
- 영향을 주는 요소
- 프로그래머 자질
- 소프트웨어 복잡도
- 소프트웨어 크기
- 가용시간
- 요구되는 신뢰도 수준
- 기술 수준


📌 2-5. 개발 비용 산정 기법

* 하향식 산정 기법
- 전문가 판단 기법: 조직 내 경험이 있는 2명 이상의 전문가에게 비용 산정
- 델파이 기법: 1명의 조정자와 다수의 전문가 의견을 종합해 비용 산정

 

* 상향식 산정 기법
- 원시 코드 라인 수(Line of Code, LOC) 기법: 원시 코드 라인 수의 비관치, 낙관치, 중간치를 측정 후 예측치를 구해 비용 산정. 예측 LOC = (낙관치 + 4 * 중간치 + 비관치) / 6
- 개발 단계별 노력(Effort per Task) 기법: 각 기능을 구현하는데 필요한 M/M을 소프트웨어 개발 생명주기의 각 단계에 적용해 단계별로 비용 산정. (Man Month, 프로젝트에 투입되는 월 인원)


* 수학식 산정 기법
- COCOMO(Constructive Cost Model) 기법:
- TDEV: 총 개발 기간 = 2.5 * PM^c
- PM = a * (KDSI)^b * EAF
- KDSI: 소프트웨어의 최종 원시 코드 라인 수
- EAF: 노력 조정 수치 (프로젝트의 특징 고려). ex.2.04
- a: 단순형(2.4), 중간형(3), 내장형(3.6)
- b: 단순형(1.05), 중간형(1.12), 내장형(1.2)
- c: 단순형(0.38), 중간형(0.35), 내장형(0.32)
- 단순형: 복잡도와 난이도가 비교적 높지 않다. (50KDSI 이하)
- 중간형: 운영체제, 데이터베이스 관리 프로그램 (300KDSI 이하)
- 내장형: 자동화 기기나 하드웨어와 밀접한 관련이 있는 내장형 소프트웨어 (300KDSI 이상)
- 기능 점수 산정 기법: 기능 수(함수의 입출력 수)를 고려해서 구현 기술, 구현 언어, 개발자의 능력에 상관없이 소프트웨어의 규모를 일관성있게 제공한다. 그러나 계획 단계인데 기능을 파악해야하는 단점이 있다.


📌 2-6. 일정 계획

* 일정 계획
- 작업 순서 결정, 소작업의 개발 기간, 순서, 필요한 자원 등의 일정을 계획한다.

* 종류
- 작업 분할 구조도(WBS): 프로젝트 작업을 세분화해서 각 구성 요소들을 계층 구조로 분류한다. (최화위 항목: 작업 패키지)
- 네트워크 차트(RERT/CPM): WBS의 작업 순서, 소요 기간 등을 네트워크 형태의 그래프로 표현한다.
- 1. CPM(Critical Path Model)
- 2. EF(Earliest Start Time)
- 3. EF(Earliest Finish Time)
- 4. LS(Latest Start Time)
- 5. LF(Latest Finish Time)
- 6. ST(Slack Time)
- 7. 임계 경로(Critical Path) 도출
- 간트 차트: 전체 일정을 한 눈에 볼 수 있는 바(bar) 형태로 나타낸다.


📌 2-7. 위험 분석

* 위험 분석
- 소프트웨어 개발에 방해가 되는 요소를 미리 예상하고, 이에 관해 적절한 대책을 수립하는 활동
1. 위험 요소 식별
2. 위험 분석: 위험 요소의 발생 확률과 영향도를 평가
3. 위험 계획 수립: 분석한 결과에 따라 위험 우선순위를 정하고 대책 마련