프로젝트 계획 (Project Planning)
프로젝트 계획의 주요 목표 : 복잡한 기술 프로젝트를 제어, 추적 및 모니터링하기 위한 실용적인 전략을 수립하는 것
- 프로젝트가 시작되기 전 소프트웨어 팀은 다음과 같은 것들을 평가해야함
- 수행할 작업의 양
- 필요한 자원
- 시작부터 끝까지 소요될 시간
Task Set
- Establish project scope - 프로젝트 범위 정하기
- Determine feasibility - 타당성 검토
- Analyze risks - 리스크(위험성) 분석
- Risk 분석은 항상 고려되어야한다!
- Define required resources - 필요한 자원 정하기
- 필요한 인력 자원을 결정하라
- 재사용가능한 소프트웨어를 정의하라
- 환경 자원을 정의하라
- Estimate cost and effort - 비용과 노력 추정
- Decompose한 뒤 문제 분석 ( 큰 문제를 쪼개어 작게 만들어 해결하고 다시 합친다.)
- LOC, function points, process tasks or software equation 등 2개 이상의 측정치를 사용하여 개발하라 (이전에 수행했던 프로젝트에서의 통계를 기반으로 추정)
- 프로젝트를 위해 수ㄹ비된 예측치 조율
- Develop a porject schedule
- 스케쥴에서는 디테일이 중요 !
- 의미있는 작업 집합을 설정한다.
- 작업 네트워크를 정의한다.
- 일정 차트를 개발하는데 스케줄링 도구를 사용한다.
- 일정 추적 매커니즘을 정의한다.
- 스케쥴에서는 디테일이 중요 !
추정(Estimation)
추정에 따라 프로젝트의 비용, 일정 등이 결정 → 프로젝트의 실행 가능성을 높일 수 있다!
1. 소프트웨어 엔지니어링 작업에 필요한 자원, 비용 및 일정을 추정하는 것이 필요!
- 경험
- 좋은 과거 정보(측정치)에 대한 접근
- qualitative 정보만 있는 상황에서 quantative 예측에 대한 용기가 필요
2. 추정 과정은 내재적인 위험이 있으며 이러한 위험은 불확실성을 초래한다.
추정을 위한 첫번째 단추, Scope (상상하는 단계)
scope개요
- Customer가 진정으로 원하는 것을 이해
- 비즈니스 문맥을 이해
- 프로젝트 경계를 이해
- customer가 할 수 있는 동기부여를 고려
- 변경이 일어날 확률에 대한 이해
Scope란?, Scope의 개념
1. 소프트웨어 Scope
- 최종 사용자에게 제공될 기능과 특징
- 입력 및 출력되는 데이터
- 소프트웨어를 사용함으로써 사용자에게 제공되는 '콘텐츠'
- 시스템을 제한하는 성능,제약, 인터페이스 및 신뢰성
→ 소프트웨어가 제공하는 기능과 특징, 데이터 및 콘텐츠, 시스템의 제약 조건 등을 정의할 수 있다.
2. scope 를 정의하는데 사용되는 2가지 기술
(1) 모든 이해 관계자들과 의사 소통을 한 후 소프트웨어 범위에 대한 설명서를 작성하는 것
(2) 최종 사용자가 작성한 use-case 집합을 이용하여 범위를 정의하는 것
→ 소프트웨어의 범위를 명확하게 정의하고, 개발 과정에서 해당 범위를 지키기 위해 노력할 수 있다.
→ usecase?
: 최종 사용자의 요청에 대한 시스템의 동작 방식을 기술
: 최종 사용자가 시스템과 상호작용하는 방식에 대한 일종의 스토리를 제시
지난 포스팅에 작성하였던 safehome의 use-case Diagram이다 !
Resources
planning 단계에서 매니저는 리소스에 대해서 판단, 결정을 해야함 !
Project Estimation(추정)
- 프로젝트는 scope를 이해하는 것이 중요하다
- 설명(decomposition)이 필요하다 → 즉, 프로젝트 범위를 구체화하는 것이 필요하다.
- 과거 metrix는 매우 유용하다 !
- 최소 2개 이상의 기술이 사용되어야한다.
- 불확실성은 프로세스에 내재되어있다 → 즉, 프로젝트를 실행하는 과정에서 불확실성은 필연적으로 발생할 수 밖에 없다 ~
추정 요령
1. Delay until late, 가급적 미루어라 : 프로젝트의 일부 작업을 미루고, 이전 작업이 완료된 후에 작업 일정을 더욱 정확하게 파악하는 방법
2. historical data (과거의 유사한 프로젝트 경험) : 이전 프로젝트에서의 유사한 작업의 경험을 기반으로 일정과 노력을 추정하는 방법
3. 방법론에 입각하라
- 추정을 할 때 task를 잘게 쪼개고 effort를 추정
- 크기(LOC,FP) 추정
4. Empirical models : 수학 모델 → 이 모델의 변수값만 적절히 넣으면 유사한 값이 나온다, 이전 프로젝트에서 수집한 데이터를 기반으로 일정과 노력을 추정하는 방법
5. 자동화된 tools → 소프트웨어 도구를 사용하여 일정과 노력을 추정하는 방법
conventional Methods : LOC or FP Approach
- 프로젝트를 추정하기 위해 이전의 비슷한 프로젝트에서 얻은 경험적 데이터를 사용하는 방법
- 정보 도메인 값의 추정치를 사용하여 LOC 또는 FP를 계산하는 방법
추정 방식
1. LOC-BASED estimation (CAD/SW)
나는 아쉽게도 우매한 대학생이기에 교수님의 강의자료만 보면 잘 이해가 가지 않는다. 그래서 강의를 기반으로 해주신 설명을 덧붙여보겠다.
평균 생산성(Average productivity) - 한사람이 한달동안 몇줄의 소스 코드를 만들 수 있는가 ?
평균 임금 (Average labor rate) - 한 사람이 한달동안 받는 돈
→ 이 둘을 곱하면 코드 한 라인당 평균적으로 소요되는 액수(Average cost rate) = $13 / LOC
: 이 프로젝트를 위한 code줄 수는 33,200
→ 프로젝트 비용 = 코드 줄 수(33,200) x 비용(cost) = $431,600
→ 측정된 노력 = 33,200 / 620 = 54 PM
2. Function Point-Based Estimation
Function Point 기반의 추정 방법
*5개의 value가 있다. 가중치는 일의 난이도로 결정한다.
*최악의 경우, 최선의 경우, 중간 경우를 추정하고 가중치 결정해서 곱하고 더해준다.
평균 생산성 - 6.5 FP/pm
평균 임금 - $8,000 / pm
이 둘을 곱해서 나온 '평균 비용율' : $1,230 / FP
추정을 수행할 프로젝트의 FP 수를 산출 : '전체적인 요구사항의 수'를 측정하여 '전체 FP 수'를 계산하고 이를 기반으로 FP 수를 측정한다.
→ FP estimated = 375
예상 프로젝트 비용 : 평균 비용율 x FP extimated = $461,250
예상 노력 = FPestimated / 평균 생산성 = 58PM
→ 이 방법은 이전의 프로젝트 데이터를 사용하여 생산성과 노동비를 추정하고, 이를 기반으로 프로젝트 규모를 산출하여 예상 프로젝트 비용과 노력을 계산하는 방법
3. Process-Based Estimation
프로젝트의 각 단계에서 필요한 일의 양을 산정하고, 이를 기반으로 노력과 비용을 계산
* 설명을 듣고 잘 모르겠어서 따로 찾아보았다. 강의자료를 벗어난 내용이니 참고만 하시길
1. 프로젝트 계획 : 프로젝트의 전반적인 목표와 범위를 정의하고, 이에 따른 작업 목록을 작성 한다.
2. 작업 분석 : 각 작업에 필요한 일의 양과 작업을 완료하는 데 필요한 시간을 산정함
3. 리소스 할당 : 작업을 수행하기 위해 필요한 리소스 (인력, 기술, 장비 등)를 할당한다.
4. 노력 및 비용 산정 : 각 작업에 필요한 노력과 비용을 계산한다. 이를 위해 인력비, 재료비, 기계비 등을 고려한다.
Process-Based Estimation은 프로젝트 관리에 필요한 노력과 비용을 정확하게 예측하는데 도움이 된다.
3개의 Estimation에 대해 알아보았다. 아마 머리가 복작복작할 것이다. 그래서 우리의 친절한 강의자료는 친히 요약을 해주었다 ~
요약도를 보고 다시 정리를 해보자
- s / w Estimation 요약
*measure하는 기준은 loc/fp -> history data list를 통해 계산
4. Software Equation
우선 이 방법에 대해 알아보기 전 Empirical Estimation Models에 대해 알아보자
- A dynamic multi-variable model
E = 노력(person-month, 1 사람이 한달간)
t = project duration in months
B = special skill factor(ex. 0.39)
P = productivity parameter (ex. 임베디드 시스템 2000, 텔레커뮤니케이션 SW 10,000 , 비즈니스 시스템 28,000)
- 난이도에 관한 값: 난이도가 높을수록 낮아지고 난이도가 낮을수록 높아짐
- Simplified model
example 까지 야무지게 ~
이번 장에서는 Estimate, 추정이에 대해 알아보았다
다음 장에서는 Scheduling에 대해 알아보겠다 ~ !
'[지식창고] > 소프트웨어공학' 카테고리의 다른 글
[소프트웨어공학] Chapter 6. 요구사항 개념 (0) | 2023.04.19 |
---|---|
[소프트웨어공학] Chapter2-2. 소프트웨어 공학 개요(2) (0) | 2023.04.17 |
[소프트웨어 공학] Chapter 4. 프로젝트 관리 개념(2) - 프로젝트 측정 (0) | 2023.04.03 |
[소프트웨어공학] Chapter 4. 프로젝트 관리 개념(1) - 4P (0) | 2023.03.29 |
[소프트웨어공학] Chapter2. 소프트웨어 공학 개요(1) (0) | 2023.03.27 |