반응형

잡스형님이 직접 하는 것은 아니고 , 홍보용을 찍어둔 영상인듯 합니다.






4:40 정도에서 -phone용 application 을 ipad에서 어떻게 보여주는지 보여주는군요.
반응형


자동차의 외관이 스폰지 같은 소프트 스킨을 적용햇네요.

반응형



이건 또 뭠미~

 

스마트 폰 이라는 탈을 쓰고, 등장했군요.. 이걸 PC라고 해야 할지, NetBook 이라 해야 할지, NotePC라고 해야 할지…

 

SmartPhone Feature phone의 경계가 무너지더니, PC smart phone의 경계도 무너지려고 하는군요..

 

조만간 단말기 사다가 OS 깔아 쓰는 시대가 도래 할지도 모르겠군요..

 

 

 본문 발최 했습니다.

 

 

 --------------------------- 기사 내용 ----------------------------------

 

http://www.ebuzz.co.kr/content/buzz_view.html?uid=83355&portal=001_00001#ixzz0bycnegjX


'개발 Note > it 이야기' 카테고리의 다른 글

Smiling Vehicle Displays Human Emotions : DigInfo  (0) 2010.01.15
나 오늘부터 애플 안티 할래~~~ ㅠ_ㅠ  (0) 2010.01.15
세계의 변화 상상 속으로  (0) 2009.12.24
설계에 부담갖지말자  (0) 2009.12.06
__asm int 3;  (0) 2009.09.25
반응형
IT 세상.


구글  - chrome OS 개발 - PC / NetBook 등의 Interface를 모두 croud computing 환경으로 끌어오는 것이 목적.!!!
           chrome browser - 무료 browser 배표.
          android - mobile 기기의 base os로 자리잡음  --> 무선 network 기능강화
          통신 회사 인수 - 무선 기기의 사용을 저렴하게 사용할 수 있는 환경 구축.
          도서관 인수 - offline data를 online 화 하는 작업.
          무료 naviagtor 제공
          android 의 기반 croud에 접속...
          ==> 최종 목표..
                google net 구축
                         검색 엔진, google doc, data storage , UCC, news , 등등..
               지구상에 모든 데이타를 google net 에 검색 ,
               개인 사용자의 data도 단말기에 저장 하지 않고 croud 환경에 저장..
               지구상의 모든 data 변화는 google net에서 이뤄지도록 함.
               --> 지구 정복 !!!!


애플 - I-pod 개발 발표  -> mp3 시장 독점
         I-Phone 개발 발표 -> 휴대폰 시장 독점
         I-TV 개발 발표 -> TV 시장 독점
         I-Car 발표   -> 자동차 시장 독점
         I-Air 발표 -> 항공 시장 독점
             :
             :
        ==> 최종 목표
            지구상 제조회사는 애플만 남는 거대 독점 회사

엠에스


삼성




'개발 Note > it 이야기' 카테고리의 다른 글

나 오늘부터 애플 안티 할래~~~ ㅠ_ㅠ  (0) 2010.01.15
Windows XP smart-phone 등장  (0) 2010.01.08
설계에 부담갖지말자  (0) 2009.12.06
__asm int 3;  (0) 2009.09.25
MIT’s wearable ‘Sixth Sense’ device  (0) 2009.04.27
반응형

대부분의 개발자분은 현재,  진행하고 있는 업무에서 맡은바 코딩을 열심히 하고 있을것입니다.

딱히 "왜 하지?" "뭐부터 해야하지?" 이런 고민 없이 말이죠 ^^

 

이유는 아마도 이미 전체적인 기획과 개발 방향이 정해져있고 현재 개발하여 테스트를 진행하거나 버그등을 수정하거나 하는 약간의 플로우 수정을 기획자나 아니면 디자이너와 협의 해가면 진행하는 단계일것이라 그럴거에요.

 

하지만 지금하고 있는 과제나 프로젝트가 끝나고 나서 새로운 프로젝트를 시작하게 된다면, 

분명 아키텍쳐 설계 혹은 디자인을 하라는 요청을 받을 수 있을 것입니다. 

좀 막막하죠..

마치 아무것도 없는 프로젝트에 첫 소스파일을 만들고
main(){
 printf("hello");
}
라고 작성한 파일을 사람들에게 발표해야 하는 그런 느낌??

 

 

이를 좀더 쉽게 접근하기 위해서는 우리에게는 훌륭한 선배들이 만들어 놨던 프로세스들이 있습니다.

 저도 종종 이런 아키텍트 관련된 스터디를 진행해봤었는데요..

매우 깊게 들어가면 복잡하고 몇주 이상 실습 과정을 통해 익혀야 하는 그런 내용이기 때문에 고생했던 기억이 납니다.

 

그렇지만, 전문적인 아키텍트가 아니더라도 막막한 프로젝트를 처음부터 끝까지 완성하기 위한 기본적인 설계 프로세스를 알아둘 필요가 있어서 적어봅니다.


1.
요구사항 듣기, 혹은 보기 



먼저 기획자나 사장님? 이 뭘 하고 싶은지 잘 적어놓고나서 문장을 해석? 합니다. 

이때 중요한 것은 컨셉이나 기획을 하려는 분께 정중하게(?) 문서로 요구해보세요. 

말로 하는 것에는 분명 앞뒤가 맞지 않거나 빠진 부분들이 많기 때문에, 그럴듯 하게 들리지만 막상 내용을 살펴보면 이상한것들이 많이 있습니다. 그래서 얘기를 하는 분도 한번쯤은 글이나 PPT(말로 힘들때는 그림으로) 등으로 정리를 하는 것이 필요합니다.

멋진 기획서일 필요는 없고 하고자 하는 얘기가 잘 담겨 있으면 도움이 될겁니다.

 

만약 내가 기획과 개발을 동시에 해야 하는 사람이라면, 명확히 할것이 기획자로서 컨셉을 듣고 기획을 같이 해나가는 것이 중요하죠.

뭘 만들고 싶은지를 잘 들어보고 , 기획자로서 그 기획이 어떤 부분에서 시장에서 세일즈가 가능한지, 이 프로젝트에 들어가는 비용과 기대이득이 얼마인지.. (쿨럭..) 까지 정리할 수 있으면 좋겠지만...이부분은 기획자의 몫으로 남겨두고,

개발자로서 기획을 바라보는 입장으로 정리하자면,

고객이나 기획자가 장황한 표현으로 설명했다면,  여기서 소프트웨어의 플로우로 봤을때 핵심이 되는 것이 무엇인지 잘 살펴봐야 합니다.

(이래서 말보다는 문서로 받는게 중요한데요.)

 

고객: 요즘에 보면, 사람들이 아이디 패스워드도 안치고 바로 로그인도 되고 그래서 서비스를 쉽게 사용하고 그러던데, 그냥 쉽게 로그인 되도록 해주세요. 아참 카카오톡으로도 로그인도 되고 그러던데요.

 

요구사항 정리: 

 1. 로그인

   - 로그인 프로세스 간소화

   - 소셜 로그인 제공

   - access token 이용하여 token 유효기간동안 login 없이 사용

2. 로그인 UI Flow : 디자이너와 협의 필요

3. 기타 문의 사항

    - 시스템에 사용자 가입 필요성 유무 (소셜 로그인만 지원 할건지 서비스에 직접 개인정보를 입력하여 등록하는 기능이 필요한지)

    - 생체인식 기능 필요한지

    - access token 유효기간 얼마로 할지

 

로그인 같은 경우에는 너무나 잘 알고 있는 기능이라서 서버/클라이언트/ 컴포넌트 등을 그려서 usecase 순서도를 작성하지 않아도 이정도를 고민해볼 수 있겠죠?

 

아무튼 일단 고객에게 받은 요구사항을 분해해서 정리해 두는 것이 필요합니다.

 

 

2. 컨셉 아키텍쳐 잡기


컨셉 아키텍쳐를 먼저 잡아야 하는데요.

이 과정에서 대부분의 요구사항들은 이미 개발되어있는 시스템일 경우가 많습니다.

플랫폼, 프레임워크 같은 경우에는 잘 구현되어있는  Windows, linux, android, iOS 등에서 제공되는 유사한 기능들의 아키텍쳐를 찾아서 먼저 리뷰해봅니다.
그리고 단순한 User Interface인 경우에는 "windows에서는 어떻게 했지?" 라고 생각하게 됩니다
.

 

만약 서비스를 개발해야 하는 경우라고 한다면, 

예를 들어 친구들과 스터디 모임을 할수 있는 서비스를 개발하고 싶다고 한다면,

유사한 서비스들이 많이 있겠죠? 카카오톡, 네이버 밴드, 그리고 네이버 까페 등등 많이 있을텐데, 이런 서비스들에서 유사한 부분들을 먼저 리뷰합니다.

이때가 설계의 처음 시작이죠.

여기까지 정리가 되면 간단한 architecture 컨셉을 여러 가지 툴( 저는 주로 Power point, figma 사용.)을 이용해서 머리 속에 있는 내용을 그림으로 그려봅니다
.

이 단계를 지나면, 이제 구체적으로 요구사항들이 뭔지를 검토해서, 컨셉으로 잡은 아키텍쳐에 대입을 해봅니다
.
요구사항이 명확하면 좋지만 대부분의 경우는 관심 있는 기능만 나열하는 경우가 많은데
,
이때도 의뢰한 사람이 준 요구사항 외에도 컨셉 안과 비슷한 시스템의 사용 케이스를 잘 살펴보면 개발에 필요한 추가 요
구 사항들(또는 Usecase)을 찾을 수 있습니다.

Usecase
들을 컨셉 아키텍쳐에 대입하면서 초기에 잡았던 아키텍쳐를 개선하고 또 도메인에 맞는 구조를 구상합니다
.


3.
설계 진행하기

 

설계라고 하면 막연하게 HLD,LLD 이런 용어들부터 해서 뭔가 거창하고 복잡해야 할 것처럼 보이는데, 실제로는 단순합니다.
설계목적은 컨셉 아키텍쳐를 실제로 구현하기 위한 시뮬레이션 단계라고 보시면 됩니다.

usercase에서 나타난 기능들을 어떻게 구분할 것인가, 또는 어떻게 모을 것인가, 모듈간의 관계는 어떻게 되는가 

이런것들을 코딩전에 미리 정리하는 단계인것이죠.

경험 많은 아키텍트들은 더 적은 시행착오를 거치면서 설계를 해 나갈 것이 겠지만, 그렇지 못하다면 어렵겠죠?

 

하지만 걱정하지 마세요.. !! 설계 없이 개발하는 것이 더 어렵습니다.

Usecase나 요구사항이 나왔다고 한다면, 하나 하나에 대해서 순서를 나열해봅니다.

 

위에서 로그인에 대한것 정리 한번 했죠? 

그걸 이어서 한다면... 

 

1. 사용자 -> 앱을 실행한다.

2. Logo 화면을 띄운다.

3. 일정 시간(500 ms) 이 지나면 Login 화면을 띄운다.

4. 로그인이 되어있다면 , Main 화면으로 넘어간다.

 

이렇게 작성할 수 있겠죠?

그런데 좀 이상하죠??. 작성할때 요령은 주체와 대상, 행위를 명확히 하는거에요.

쉽게 말해서 누가 누구에게 뭘 하라고 하는지 적는 거죠.

 

1. 사용자 -> 앱을 실행한다.

2. 앱 -> Logo 화면을 띄운다.

3. 앱-> 일정 시간(500 ms) 이 지나면 Login 화면을 띄운다.

4. 앱-> 로그인이 되어있다면 , Main 화면으로 넘어간다.

 

 

이것도 좀 이상해요.

좀더 다듬어 볼게요.

 

1. 사용자 -> 앱을 실행한다.

2. 앱 플로우 메니져 -> Logo UI : Logo 화면을 요청한다.

3. Logo UI-> Login Manager: 일정 시간(500 ms) 이 지나면 Login 화면을 띄운다.

4. Login Manager ->  앱 플로우 메니져: 로그인이 되어있다면 , Main 화면으로 넘어간다.

 

이정도 작성을 해보니까 대충 플로우가 그려지네요? 그렇죠?

여기서 잠깐 생각해볼게, 앱 플로우 메니져? 이게 어디서 나왔지? Logo UI는 ? 또 어디서 등장한거야? 분명 요구사항에는 없었잖아?

이럴수 있겠죠?

 

설계 과정에서 여러분이 추가한 것입니다.

없는 것들을 하나 하나 만들어 나가는 것이 설계를 하고 있는 것입니다요.

 

앱 플로우 메니져는 제 생각에는 어플리케이션의 사용자 플로우를 따라가면서 처리하기 위해서 필요할 것 같았습니다.

요구사항에서 나왔던, 로그인 , 소셜 로그인, 그리고 로그인 이후에 메인으로 진입.. 그외에 메인에서는 얼마나 많은 UI 플로우들이 생길까요? 이런 생각들을 하면 어디선가 플로우를 컨트롤 하면 좋겠다고 생각하고 추가 한 것입니다.

그리고 Logo UI는 사실 없는것이 성능에 좋지만, 일다는 추가해봤습니다.

어플리케이션 초기화 를 위해서 필요할 때가 종종 있었기 때문이죠.

로그인 메니져는 당연히 필요해보이죠?

 

 

이렇게 프로그램이 돌아가는 순서를 작성하고 어느 정도를 고민하면 기본적인 모듈(module)의 모양과 모듈간의 관계, 플로우, 생명주기(life cycle)이 나옵니다.

이를 이제 설계 툴을 이용해서 그려보면 됩니다.
이때도 여러 가지 툴을 쓸 수 있지만, 저는 주로 UML을 사용하는데요.
생각을 다 하고 나서 UML로 그리는 것이 아니라 UML 툴을 가지고 생각을 한다 라고 생각해야 합니다.

또 모든 diagram을 다 그려야 한다는 강박관념은 버려야 합니다. 자기 S/W를 잘 표현할 수 있는 것으로 몇 가지만 그려보면 됩니다.
(물론 많은 Diagram을 그린다면, 그만큼 S/W 디자인을 바라보는 view가 많아지기 때문에 훨씬 명확한 구현 및 개발 방법이 나오게 됩니다.)

저는 주로 Class diagram과 sequence diagram을 많이 사용합니다.

설계 시 주의할 점은 우선 설계는 자기 s/w를 개발 할 때 계획하고 시뮬레이션 하기 위한 용도라는 것에 명심해야 합니다.
가끔 보면, 모듈 설계를 하다가 갑자기 UML 문법이나 사용법이 잘 기억나지 않아 어떨 때 보면 S/W를 설계하다 말고 UML을 공부하게 될 때가 있습니다.
물론 자기 모듈 설계 범위 내에서 방해가 안 된다면 공부를 해도 좋지만, 우리에 목적은 UML이 아니라 S/W 설계가 목적입니다.
때문에 UML 문법에 너무 치중할 필요는 없습니다.
생각 안 나더라도 비슷한 모양으로 그려놓고 설명을 좀 정확히 하고, 넘어가서 S/W 설계를 한 단계 마치는 것이 중요합니다.

여러 사람이 같이 개발하는 경우라면 정확한 표현이 중요하겠지만, 지금 단계에서는 설계 코드가 API 레벨까지 정확하게 나오기를 기대하기는 힘듭니다.

일단 컨셉 안을 가지고 class diagram이나 sequence diagram을 그려서 어느 정도 기본 아키택쳐가 만들어지면,
다음 단계로 넘어갑니다
.

3. 3
가지 방향에서 설계리뷰 및 보완.

 

첫 번째, Domain과 내가 설계한 모듈을 연결해보는 것.
두 번째, 내 모듈이 사용하는 resource들을 나열해보고 이를 처리하는 방법에 대해서 정리하는 것.
세 번째, 모듈에 접근하는 방법에 대해서 나열하는 것.(인터페이스, API, method)

 

첫 번째는 Integration에 대한 설계를 예기 하는 것입니다.
이는 언제 내 모듈이 초기화 되고, 언제 사용되며, 언제 종료되는지 lifecycle을 예측하고 구현 전에 미리 설계레벨에서 고려될 수 있기 때문입니다.
또, Domain의 특성에 따라 Multiple instance로 가야 하는지,Thread 형태로 가야 하는지, COM 으로 구성해야 하는지 등등에 대한 모듈 관리 방법에 대해 고민도 해 볼 수 있기 때문에 매우 중요합니다.
두 번째, 자기 모듈내의 동작 프로세스기 때문에 사실 어떻게 구현할지에 대한 고민을 좀더 구체적으로 해볼 수 있는 단계입니다.
세 번째, 단계에서는 모듈을 사용하기 위한,모듈에서 제공하는 interface를 고민하는 것입니다.
이때, 다른 모듈에서 현재 모듈에 대한 접근은 Interface class를 새로 만들어서 접근하도록 할 것인가, Public API로 output을 줄 것인가 등등, 추가적인 고민들을 설계에 포함할 수 있는 단계이다
.

4. Test
계획 수립.

 

저도 사실 Test 계획은 저도 잘 수립하지 않는데, 자동화 test를 위해서는 상당히 중요한 이슈이다.
하지만 저도 이 과정을 잘 지키지 않는 편이기 때문에 다른 사람에게 꼭 하라고 예기하진 못하겠습니다.
어찌되었건 언급은 하고 넘어가자면,
여러 개발자들이 자기 모듈 test를 위해 다음과 같은 방법을 사용하더군요.

내가 개발한 모듈이 3개의 class로 나뉜다고 하면, 각 class들 내부에  RunTest() 라는 function을 만들고 여기에 testcase를 작성하는 방법을 사용합니다.(이렇게 테스트가 가능한 모듈에 한해서 겠지만..)
그래서 , 자신이 만든 class들의 RunTest()를 한번씩 호출해주도록 하는 Test를 위한 프로그램을 하나 만들어서 이 프로그램을 돌려서 개발자 level의 자동화 테스트를 진행 하더군요

.


설계를 우선적으로 해서 전체 S/W의 구조를 잡고 개발을 진행하는 습관은 매우 중요한 것이며 여러분들의 지적 자산이 될 것입니다.코딩을 시작하기 전에 내가 뭘 하고자 하는지를 미리 목표를 세워 가고자 하는 개발의 지표가 될 것입니다.소프트웨어 설계도 경험이 쌓이면 자연히 늘게 되니 처음에는 잘 안되고 어렵더라도 이런 설계에도 시간을 투자해보도록 하세요.

 

 

 

'개발 Note > it 이야기' 카테고리의 다른 글

Windows XP smart-phone 등장  (0) 2010.01.08
세계의 변화 상상 속으로  (0) 2009.12.24
__asm int 3;  (0) 2009.09.25
MIT’s wearable ‘Sixth Sense’ device  (0) 2009.04.27
[C++ 리플렉션] MFC의 CRuntimeClass  (19) 2009.04.21
반응형

유용한 디버깅 기술 하나

 

__asm int 3;

 

Visual C에서  코드래벨에서 break point를 거는 코드입니다.

DLL에서 디버깅시 loading이 되기 전이면 tool에서 break point를 잡기가 까다롭습니다.

 

이럴때 break point를 원하는 코드에 "__asm int 3;" 이렇게 입력을 해놓으면,

실행시 이 시점에서 break point가 걸리게됩니다.

 

이와 비슷하게 Intel에서 정의해놓은 exception용 interrupt 코드들이 있어 추가합니다.

출처는 당근 MSDN이구요.

 

Intel-Defined Exceptions and Interrupts

Code Definition
00 Divide error
01 Debug exception (single-step and hardware debugging)
02 NMI interrupt
03 Breakpoint
04 INTO detected overflow
05 BOUND range exceeded
06 Invalid opcode
07 Coprocessor device not available
08 Double fault
0A Invalid Task State Segment (TSS)
0B Segment not present
0C Stack fault
0D General protection fault (GPF)
0E Page fault

 

반응형

불확실한 것 투성이인 S/W 개발을 정량화 하여 언제 완료 된다고 감히 말한다는 것은 참으로 어려운 일이다.
더군다나 본인이 직접 개발을 하는 상황이 아니라 여러 팀원들과 진행하면서 "다른 사람이 이일을 얼마만에 해 낼 것이다" 라고 추정하기란 더더욱 어렵다.

프로젝트 미팅을 들어가면 항상 이런 패턴이다.

프로덕트 기획자: 우리 이러한 제품을 만들어야 하는데요. 개발실에서는 어떻게 생각하시나요.
             ( 프리젠테이션을 멋지게 보여준다.)
개발자들 : <속으로>허걱~ 완전 상상의 나래를 펼치셨네.
개발자들 끼리 의견 분분~
개발자 중 한사람: 그거 음 이렇게 하면 되지 않을까요?
                    (솰라 솰라~~ 구현에 대해서 자신이 생각하는 방향을 열씸히 예기 한다.)
다른 개발자: 음 그런데 지금 구조에서는 잘 안될것 같은데 새로 뭔가 만들거나, 지금껄 많이 엎고 작업 다시 하는 것도 생각해봐야 겠네요.

그리고 한참동안 개발자들은 나름대로의 상상속에 빠져서 자기가 생각하는 구현 방법, 문제점 등등을 즉시 예기하기 시작한다. ㅎ
이미 설계는 시작되었다~~~!!!!
이 와중 찬물을 끼언는 소리~~~~

프로젝트 리더: 그럼 언제까지 돼?
개발자들 : ...


참으로 언제까지 된다는 예기를 하기가 점점 힘들어지는 것이 개발자의 입장이다..!!!
경험이 쌓이면 쌓일 수록 쉬워야 되는 것인데도 불구하고 점점 요구되는 S/W의 스팩도 높아지고, 복잡도도 높아지고 있어서 결정하기가 점점 어려워지게 된다.

이런 업무 범위 추정과 계획은 프로젝트의 성공과 상품화 전략을 위해서 매우 중요한 부분이다.

에자일에서는 이러한 업무의 process를 나누는 단위를 "스토리","이터레이션" 이라는 이름으로 사용하고있다.

스토리는 업무의 조각에 해당하는 것이고, 이터레이션은 수행기간을 단위화 한 것이다.

프로젝트의 초기 셋업에서 가장 중요한 것은 개발 일정 산출일 것이다.
하지만 개발일정이라는 것은 각 모듈의 개발 기간과 투입 리소스를 산출해야 하는데 이를 정확히 산출해 내서 계획을 새운다는 것은 사실상 리스크를 더 갖게 만든다.
이유는 개발 기간을 산출하는 사람이 개발자라 할지라도 개발 기간중 어떻한 일이 발생할 것인 지도 모르는 상황에서 이건 언제 끝나고 이건 언제 끝난다 라고 답하는 것은 힘들기 때문이다.
또 만약 개발자가 개발해본 경험이 없는 모듈이라고 한다면 사실 개발 기간을 정리 하는 것도 무리일 수가 있다.

그럼에도 불구하고 프로젝트가 움직 이기 위해서는 개발팀은 개발기간을 산출 해야 한다.

이런 확실하지 않은 개발 기간 산출을 "추정"이라 하고 이를 얼마나 효과적으로 가능한한 현실 적으로 정리 하는 가를 "추정의 기술" 이라 하겠다.
(마치 "싸움의 기술" 같은 느낌?ㅎ )

우선 프로젝트의 기간을 추정하는 작업은
가장 먼저 프로젝트의 규모를 추정하는 작업에서 시작된다.
만약 이전에 이미 팀의 프로젝트 진행 속도를 알고 있다면, 추정하기가 편해진다.
스토리 단위로 개발을 진행 한 경험이 있다고 한다면, 팀의 속도가 더욱더 분명해진다.

이로 인해 개발전에 프로젝트 전체의 추정치가 나오게 되고, 실제 개발에 들어가게 되면, 이 추정치를 바탕으로 실제 개발 범위와의 오차를 조절해야 한다.

예를 들면 , 이러한 것이다.

자동 운전 시스템을 개발하고자 할때 Story를 다음과 같이 정했다고 하자.
운전 시스템 모듈 100점
도로 주행 모듈 150점
주행 경로 모듈 50점

이렇게 총 300점의 개발 프로젝트 라고 초기에 추정했다고 하자. 그래서 이전에 개발팀의 속도로 보아 100 점을 4회의 이터레이션에 처리했다면 약 12회의 이터레이션에 해결할 수 있는 프로젝트 라고 생각 할 것이다.(1회에 25점의 스토리를 처리했다.)

그런데 막상 개발을 시작하고 보니, 1회 이터레이션에 10점 정도의 스토리 밖에 처리가 되지 않았다 라고 한다면, 우리는 15점을 처리 못하고 남겨 놨다는 것을 알게된다. 때문에 우리 개발기간은 1.5배 길어질 것이라는 것을 예상 할 수 있다.

그렇다면 초기 추정치가 쓸모 없는 것이 되는가?
그렇지 않다! 그렇게 되도록 둬서는 안된다.
무슨 의미인가 하면 우리는 흔히 개발 spec을 산출할때 기간을 중심에 두는 경우가 많다.
이건 몇일 걸리고 이건 몇일 걸리고, 이런 식으로 말이죠.
이렇게 생각해서 스토리에 점수를 줬다고 한다면, 많은 부분이 다시 수정되어야 한다.
그러면 스토리 점수는 무엇이어야 하는가?
일의 크기로 생각해야 한다. 일의 범위는 모듈의 개수,class의 수, 코드량, 난이도, 등등을 생각해서 점수를 줬다면
전체적인 일의 크기가 정해지게 된다. 일의 크기가 얼마인가와 이를 해결하는데 얼마가 걸리는 것인지는 다르다.

일의 크기를 단위로 나누게 되면, 각 스토리 간의 난이도 비교가 된다.
즉 10의 점수를 갖는 스토리는 5의 점수를 갖는 스토리보다 배는 어렵다는 것이다.
또 10의 점수를 갖는 스토리는 20의 점수를 갖는 스토리보다 반은 쉽고 간결하다는 것이 된다.

이는 10의 점수를 갖는 스토리가 얼마가 걸리는가 하는 문제와는 별개라는 것을 다시한번 강조하고 싶다.

이전 프로젝트에서는 25의 점수가 1 이터레이션이 걸렸지만 , 이번 프로젝트에서는 10의 점수가 1이터레이션이 걸릴 수도 있다는 것이다.
(대부분 반대의 경우가 많다. 이유는 프로젝트 경험이 쌓일 수록 개발 속도는 빨라지기 때문에 지난번 프로젝트에서는 20점이 1 이터레이션이었지만 이번에는 30점을 1이터레이션 내에 끝낼 수 있을 것이다.)

또 점수를 측정함에 있어서도 개발자의 질이 향상되면 그만큼 점수도 유동적으로 변하게 된다.




추정치의 값은 이런 값을 사용해라.

1,2,3,5, 그리고 8 
1,2,4, 그리고 8  큰 단위의 작업에 대한 추정을 할때 , 이 값을 사용하게 되면 보다 큰 불확실성에 대한 대처가 쉽다.

숫자의 간격이 있게되면, 장점은 이렇하다, 3보다는 크고 4보다는 작은 약 3.5 정도 되는 것 같은 스토리의 경우에, 3이라고 작성하면 된다.
이렇게 함으로 해서 복잡해지는 스토리 점수를 막을 수 있다.
실제 우리 업무가 3이라고 작성했지만 3.5가 될 소지가 매우 크기 때문이다.

'0'이라는 값을 추정치에 포함하겠다라고 하면 어떤 일을 0으로 정할 것인지를 고민해야 한다.
(실제로 0을 포함 시키면 프로젝트 추정에 많은 도움이 될 수 있다.)

0이라는 값은, 작업은 필요하지만 매우 간단하여 프로젝트 수행에 영향을 미치지 않는 것을 의미한다.
(또는 자동으로 해결되는것 - 이런 경우는 매우 적지요)

0이라는 값을 사용함에 있어서 먼저 팀원들의 인식을 확실히 해야 한다.
0 이라고 해서 일이 없는 것이 아니기 때문에, 0점짜리 스토리를 한꺼번에( 13x0해서 한 이터레이션 안에서 ) 처리 할 수는 없다.
0은 공짜 점심처럼 한 이터레이션 안에 처리 할 수 있는 작은 업무이지만, 공짜 점심은 개수 재한이 있다는 것을 인식 시킬 필요가 있습니다.
만약 이렇게 많은 0점짜리 스토리를 한번에 처리하고 싶다면, 이들을 묶어서 1점 이상 되는 이터레이션으로 묶어야 합니다.


+ Recent posts