[지식창고]/소프트웨어공학

[소프트웨어공학] Chapter 5 - (1) . 프로젝트 관리

개발새발주발 2023. 4. 5. 21:37
728x90

프로젝트 계획 (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에 대해 알아보겠다 ~ !