728x90
반응형
SMALL

EVM (Earned Value Management)

EVM (Earned Value Management) 은 일명 '획득가치관리' 로서 어떤 정해진 작업에 대한 일정 및 원가를
수치적으로 관리할 수 있는 관리 기법중에 하나이다.
특히 일정관리 원가관리를 동시에 할 수 있도록 고안된 기법이다.
EVM의 3가지의 Value 에 의해서 표현이 되는데 다음과 같다.

 ① PV (Planned Value) 
       -  계획가치
       - BCWS (Budgeted Cost of Work Schedule)
       - 계획된 스케쥴에 의한 할당된 예산
       - 초기계획에서 일정에 따른 계획된 작업의 가치
          ▶ 즉 해야할 작업의 양을 나타낸다. 

  ② EV (Earned Value)
        - 획득가치
        - BCWP (Budgeted Cost of Work Performed)
        - 수행된 작업에 대한 원래 예산
          ▶ 즉 실제 완료된 작업의 양을 나타낸다.

  ③ AC (Actual Cost)
        - 실제비용
        - ACWP (Actual Cost of Work Performed)
        - 수행된 작업에 대한 실제 발생 비용
         ▶ 즉 실제 완료된 작업에 소요된 비용을 나타낸다.

예를 들면.. 10층 건물을 건축하는 작업에서 10일에 한층씩 공사를 완료하기로 하고, 한층 공사비를 1억으로
책정을 하고 계약을 맺었다. 그런데 실제 공사진행상황을 보니깐 10일이 지난 현재 공사는 90% 진행되었고
지금까지 공사비는 1억이 소요되었다라고 하면,
    PV = 1억     <- 원래 10일동안에 완료하기로 한 작업의 양은 한층 , 즉 금액으로 1억
    EV = 0.9억   <- 실제 10일동안에 완료한 작업의 양은 90% 진도율밖에 못나갔으므로 1억 x 0.9 = 0.9억
    AC = 1억     <- 90% 진도율 나가는데 투입된 실제 공사비이므로 1억.. 
                         (당연히 EV가 1억이 되는 시점에는 AC는 1억을 초과할 테니깐.. 결국 PV 1억보다 초과하
                          므로 예산을 초과한 결과를 보일 것이다.)

결국 납기일도 못맞췄고 공사비도 초과 발생한 셈이다.
이 수치를 통해서 앞으로 남은 아홉 층을 공사하는데에 완료예정일 및 소요비용을 예측할수 있으므로 완료예정일
을 납기일에 맞추기 위해 조치를 한다던가, 비용을 당초 예산에 맞추기 위해 어떤 방안을 강구한다던가 
하는 프로젝트 진행에 의사결정의 수단으로 활용할 수 있는게 EVM 이다.

EVM 차트


Burn Down Chart (소멸차트)

Burn Down Chart 는 남아 있는 일(work)의 양과 시간(time) 사이의 관계를 그래픽으로 표현한 2차원적인 차트이다.
Run chart (런차트)라고 불리며 일반적으로 Agile 에서 사용된다. 
Agile 관리의 핵심이 반복되는 짧은 주기의 작업이 핵심이기 때문에 그 작업단위의 진도 체크 (tracking daily progress)
이 Agile 프로젝트 관리에 있어서 중요할 수 밖에 없다. 그러한 진도체크의 수단으로 이 Burn Down Chart 를 많이
사용한다. Burn Down 의 의미가 소멸된다는 의미로서 해야할 작업. 즉 남아 있는 일의 양이 줄어드는 것을 차트로
표현 한 것이다. Burn Down Chart 를 보면 모든 작업이 완료되었을 때 모든 작업이 소진(Burn Down) 되어 0 으로
수렴하는 모양을 나타낸다. 

< 출처 : https://blog.naver.com/laster40/55492369 >

 

Burn Down Chart 8요소

 

  EVM  Burn Down Chart
개념 작업의 일정과 비용을 예측해 Risk를
사전에 조치 할 수 있는 관리 기법
업무 대비 시간을 차트기반으로 표현하고
남은 업무를 가시적으로 파악하고 관리하는
기법
용도 전통적 방법론에 주로 활용 에자일 (Agile) 프로젝트에 많이 사용됨
목적 전통적 프로젝트 진척 관리 애자일 (Agile) 프로젝트 진척 관리
범위 프로젝트 공정 전체 기준 실적/계획 진척
관리
Sprint 단위 공정 기준 실적/계획 진척 관리
지표 PV, EV, AC, SV, CV, SPI, CPI
BAC, EAC, VAC, TCPI
수행 기간, 남은 Task추정치
장점 수치화 된 지표를 제공
일정과 비용을 동시에 관리
상태 가시화를 통한 팀 공유 가능
단점 Actual Cost 산정의 어려움  계획작업의 변경 시 유연성 낮음



 

728x90
반응형
LIST
728x90
반응형
SMALL

에자일(Agile) 개발방법론의 종류에는 여러가지가 있지만 그중에서도 XP와 SCRUM이 제일 많이 통용된다
두 방법은 어떤 잛은 주기의 개발기간과 개발내용을 반복적으로 수행하는 측면에서는 동일하다.

XP (Extreme Programming) 의 등장배경과 정의

개발을 하기위해 사용자로부터 요구사항을 듣고 분석및 설계의 바탕이 되는 요구사항을 정의해야 하는데
실제 요구사항의 분석이 쉽지는 않다. 또한 사용자 입자에서도 자기가 원하는 요구사항을 명확하게
생각해내서 제시하는 것 또한 어려운 상황이다. 어리다 보니 불필요한 다량의 문서작업으로 인해 개발자의
의욕을 저하시키게 된다.
그래서 사용자의 요구사항을 한꺼번에 받는 방식이 아닌 반복형 모델의 개발주기를 극단적으로 짧게
함으로써 프로그래머가 설계,구현,시험 활동을 전체 SW개발기간에 걸쳐 조금씩 자주 실시하도록 하는 
개발방법이 XP (Extreme Programming)  이다. 

XP (Extreme Programming) 의 특징

  ① 짧은 개발주기 반복
  프로토타입이 일찍 자주 만들어짐
  개발계획이 프로젝트 진행동안 계속 변화됨


XP (Extreme Programming) 의 4원칙

원칙 설명 12가지 기본원리
의사소통
(Communication)
고객과 개발자와의 의사소통을 중요시 User Story 카드
Pair Programming
On site Customer
단순성
(Simplicity)
지금 해야할 일에 대해서 가장 효율적인 디자인이나 코딩을 하는 것이 좋다. Simple Design
Metaphore
피드백
(Feedback)
즉각적인 피드백을 통해 빠른 의사결정
그래서 XP는 항상 코드가 실행가능한 상태유지
On Site Customer
Small Release
Test
Refactoring
용기
(Courage)
 - XP는 개발자들이 자신감있게 변화를 수용 할 수 있도록 그 환경
   을 만들어 준다
- Spike, Small Relase등으로 고객요구사항에 대응하는 용기
Small Release

 

 

XP (Extreme Programming) 의 12가지 기본원리

기본원리 설명
Planning Game 개발계획 수립
 - 고객과 다양한 스토리카드를 통한 개발계획 작성
Small Release 짧은 배포주기
 - 매우 짧은 주기로 모듈 업데이트
Metaphore 문장형태로 시스템 아키텍쳐 기술
공통의 Naming System 개발
고객과 개발자간 의사소통 언어
Pair Programming 개발자 2명이 공동 작업을 한다.
Collective Ownership 공동소유
 - 시스템에 존재하는 코드는 언제 누구든지 수정 가능
Continuous Integration 지속적인 통합
 - 작업이 끝날때마다 지속적으로 통합되고 동시에 테스트 된다
Simple Design 단순설계
 - 현재의 비즈니스 가치에 집중
 - 내일을 고려하는 디자인은 최대한 배제한다.
 - Refactoring 을 통해 개선
Test  - 항상 단위 테스트를 작성한다.
 - TFD (Test First Development) : 테스트 수행 후 검증코드로 작성해  나감
 - 실제 코드를 작성하기 전에 먼저 테스트를 작성해 봄으로써 자신이 무엇을 
   해야하는지 스스로 깨우칠 수 있다.
Refactoring  - 기능변화 없이 중복제거, 단순화, 유연성 추가
 1.Method 정의 - 지나치게 긴 Method 를 분리
                      - 지나치게  긴 문장을 Method를 사용하여 단순화
 2.위치이동 - Method난 변수 위치를 적절한 Class로 이동
 3.캡슐화 - 멤버변수를 Get/Set 사용하여 캡슐화
 4.조건문 단순화 - 긴 조건문을 분할하거나 method 화 하여 단순화
 5.이름변경 - 이해하기 쉬운 이름으로 변경
 6.Indentation - 가독성이 있는 Indent로 재포맷
주40시간 주40시간
On-Site Customer 고객상주
 - 프로젝트팀에 고객이 상주하여 즉각적인 의사소통과 피드백
 - 품질향상의 필수요소
Coding Standard 코드표준을 통한 효과적인 의사소통
 - 자신의 코드에 개발자의 이름, 연락처
 - 주석



SCRUM 

정의 짧은 개발주기에 반복적, 점진적 방법으로 개발  
역할 Scrum Team  - 일정 우선순위에 대한 권한 가짐
 - Product Backlog 에서 Sprint 기간만큼 가져와서 Spring Backlog로
   삼는다.
 - 4~5명 개발자
  Product Owner
(제품책임자/스폰서)
 - Product Backlog 관리
  Scrum Master Owner와 Team간의 의사소통
프로세스 회의 Sprint Planning Meeting 스프린트가 시작할 때 열림다.
회의는 하루종일
모두 참석
Daily Scrum Meeting 15 분 동안 서서
Spring Review Meeting
(with 고객)
 - 한달간의 스프린트를 마쳤을 때 잠재적
   으로 출시가능한 소프트웨어를 고객에
   게 Review 받는다.
 - 가능한한 비공식적
Sprint Retrospective Meeting
(with 팀)
Master와 팀원은 다음 단계에서 개선해야 할 사항 검토
즉흥적인 데모요청을 거부하고 기능구현항목의 동결을 보장받는 대신, 
납기내에 Sprint 목표달성


XP와 SCRUM 비교

  XP SCRUM
형태  - 엔지니어링 방법 초점
 - 프로그램 실천법에 집중
 - Framework는 미포함 (X)
 - 개발 프로세스를 위한 Framework
 - 관리및 조직적 실천법에 집중
 - 특정 엔지니어링 방법 미포함
개발주기 1~2 주 4~6주
변경사항수용 Refactoring을 통한 변경사항 수용
즉 요구사항 변경 발생 인정
Refactoring을 통한 변경사항 수용
즉 요구사항 변경 발생 인정
우선순위 결정 Customer Team
공통점 Agile 방법론으로 짧은 개발주기로 반복 개발




728x90
반응형
LIST
728x90
반응형
SMALL

에자일(Agile) 개발 방법론의 탄생 배경

보통 소프트웨어를 개발하는 과정을 보면 우선 사용자로부터 요구사항수집을 해서 분석을 하고
설계를 하고 개발하고 테스트를 해서 최종 Release 하는 방식으로 전통적인 방식이다.
일명 '폭포수(Waterfall)' 방식이라고 하는데  가장 많이 사용되는 개발방법이다.
이 전통적인 폭포수 개발 기법이 지닌 단점은 지나치게 계획과 절차에 의존한다는 것이다. 각 단계별로 
완료가 되어야 다음 단계로 넘어갈 수 있다. 물론 각 단계에 걸쳐 제어의 증가가 가능하지만, 이미 계획과
절차가 고정되어 있기 때문에 중간에 기능이나 프로세스의 변경사항이 발생하면 이를 반영하기가 어려운
개발방법론중에 하나다 . 즉 프로젝트가 이미 진행 중인 상황에서 프로젝트 범위가 변경될 때 유연성이 극히 떨어진다
또한 빈틈없는 계획과 단계별 엄격한 심사(Gate Review)를 중시하다 보면 당연히 시간과 비용의 낭비가 증가하게 된다.
하나의 오류가 발생하면 이를 해결하기 위해 이전 단계로 거슬러 올라가서 다시 내려와야 하기 때문에 납기일 준수가
쉽지 않게 된다.  소프트웨어 개발 업계에서 관행화된 납기일 지연과 반복되는 야근, 그리고 이에 따른 스트레스로 개발자들의 번아웃(Burn-out)이 빈번하게 발생하는 것도 이와 무관치 않다.
애자일 방식은 이런 단점을 개선할 수 있다는 기대를 받으며 1990년대에 처음 등장하였다.
대표적으로 Microsoft사의 익스플로러 개발에 적용을 해서 성공한 걸로 이름이 알려지기 시작했다. 
Microsoft사는 그 다시 웹브라우저 시장을 장악하고 있던 넷스케이프를 이기기 위해 Internet Explorer 개발
프로젝트를 가동했는데 이때 Agile 방식을 적용했다. 즉 전체 요구사항의 30% 정도 개발된 알파 버전을 공개했고
그 이후 feedback 을 수용해서 50% 정도 개발된 버전을 공개하였다.. 이런 식으로 feedback과 공개를 반복해가면서
프로젝트를 진행해.. 결국 대성공을 거두었다.

<폭포수 (Waterfall) 모델 >


에자일 (Agile) 의 정의

Agile 이란 단어의 뜻은 '민첩한' 이라는 뜻이다. 먼가 개발을 민첩하게 한다는 뜻이겠지요..
Agile 방법론이란 짧은 단위로 개발계획을 세워서 개발을 진행해서 Relase 한 후 고객의 Feedback을
받아서 바로 다음 개발계획에 적용나가는 Cycle을 반복함으로써 고객의 요구사항 변화에 신속하고
유연하게 대처할 수 있는 개발 방법론이다.
전통적인 폭포수(Waterfall) 모델은 개발이 다 끝나야 고객에게 시제품을 보여 줄수 있기 때문에
고객의 요구사항 변경에 대응을 바로 못하지만, 에자일(Agile)은 개발단위를 짧게 (보통 1~2주) 잡음
으로써 고객은 바로 시제품을 보고 feedback을 줄 수 있어서 변경사항을 반영하기가 수월하다. 
예를 들면.. 요리사가 레시피를 보고 그대로 요리를 한 후 손님에게 가져다 주는 방식이 폭포수모델
이라고 한다면, 에자일모델은 요리사가 요리를 하면서 중간중간 맛을 보면서 요리를 하는 방식이라고
할수있다.. (적절한 비유인가요?? ㅋㅋ)

< 에자일 (Agil) 모델 >


에자일(Agile)의 선언

  ① 프로세스/도구보다는  -> 개인과의 소통을 더 중요시
  ② 문서 보다는              -> 동작하는 S/W을 더 중요시
  ③ 계약/협상 보다는       -> 고객과의 협력을 더 중요시 
  ④ 계약준수 보다는        -> 변화에 대응을 더 중요시


에자일(Agile) 개발방법론의 특징

 ① Predictive 하기 보다는 Adaptive 한 방법론  (변화에 반응하는 것이 계획을 준수하는 것보다 우선함)  
 ② 프로세스 중심이 아닌 사람중심의 방법론  (개인간의 의사소통이 프로세스나 도구보다 우선함)
 ③ 동작하는 소프트웨어가 포괄적인 문서보다 우선함.
 ④ 고객과의 협력이 계약협상보다 우선함.


에자일(Agile) 개발방법론의 종류

종류 설명
XP (Exterem Programming) 4가지 가치와 12가지 실천항목. 
테스트강조,  1~3주 Iteration
User Stories, Spike, Test, Iteration
SCRUM 프로젝트를 Sprint 단위로 분리
팀은 매일 Scrum 미팅으로 계획수립 (15분)
DSDM Dynamic Systems Development Method
기능모델 , 설계와구현, 수행 3단계 사이클
영국만 사용
FDD Feature Driven Development
짧은 iteration (2주)
5단계 프로세스 반복


에자일(Agile) 개발방법론의 단점

에자일 방법론은 현재 대세로 자리 잡고 있는 개발방법론에는 틀림이 없다.
하지만 필드에서는 인식이 그렇게 좋은 편은 아니다.. '무한수정방법론' 이라고도 불리울 정도로
    자칫 고객의 요구사항을 계속 반영하다보면은 계속 수정을 할수밖에 없는 상황에 내몰리게 된다
    PM (Projecct Manager)가 적당한 선에서 요구사항을 짤를껀 짤라줘야 하는 , 즉 PM의 역할에 따라
    일의 양이 달라질 수 있다.
계획대로 짧은 주기의 작업이 완료될려면 팀원의 능력이 그 만큼 따라주어야 한다. 
    팀내 팀원들의 능력이 같이 않기 때문에 한 팀원의 performance  에 따라 전체 개발기간이 좌우
    될 수있다.. A 팀원의 능력이 1.5 이고 B팀원의 능력이 0.5  이면 전체 능력은 0.5에 맞춰질 수
    있기 때문이다  따라서 팀내의 역량이 부족하다 싶을때에는 매뉴얼화와 그것을 지속적으로 가르쳐줄 수
    있는 시스템이 우선되어야 한다. 그래서 충분히 역량을 발휘하기 좋은 시점이 올때 에자일방식 진행을
    시도하는것이 좋다. 

 

728x90
반응형
LIST

+ Recent posts