0
If I sleep now I will have a dream, but if I study now I will make my dream com true … 
Time goes now 
Made in 2013.01 
SE...
2 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
3 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
4 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
5 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
6 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
7 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
8 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
9 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agreem...
10 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
11 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
12 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
13 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
14 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
15 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
16 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
17 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
18 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
19 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
20 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
21 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
22 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
23 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
24 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
25 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
26 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
27 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
28 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
29 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
30 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
31 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
32 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
33 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
34 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
35 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
36 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
37 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
38 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
39 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
40 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
41 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
42 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
43 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
44 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
45 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
46 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
47 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
48 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
49 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
50 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
51 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
52 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
53 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
54 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
55 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
56 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
57 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
58 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
59 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
60 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
61 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
62 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
63 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
64 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
65 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
66 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
67 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
68 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
69 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
70 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
71 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
72 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
73 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
74 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
75 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
76 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
77 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
78 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
79 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
80 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
81 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
82 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
83 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
84 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
85 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
86 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
87 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
88 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
89 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
90 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
91 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
92 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
93 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
94 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
95 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
96 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
97 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
98 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
99 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
100 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
101 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
102 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
103 
Time goes now 
What’s your point ? This presentation created by Youngki, Kim 
Do not modify arbitrarily without agree...
104 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
105 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
106 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
107 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
108 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
109 
Time goes now 
What’s your point ? 
This presentation created by Youngki, Kim 
Do not modify arbitrarily without agre...
Upcoming SlideShare
Loading in...5
×

애자일 S/W 개발

5,910

Published on

Published in: Technology
4 Comments
52 Likes
Statistics
Notes
No Downloads
Views
Total Views
5,910
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
423
Comments
4
Likes
52
Embeds 0
No embeds

No notes for slide

Transcript of "애자일 S/W 개발"

  1. 1. If I sleep now I will have a dream, but if I study now I will make my dream com true … Time goes now Made in 2013.01 SE Lab 김영기책임 애자일S/W 개발
  2. 2. 2 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일개발이란무엇인가?
  3. 3. 3 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 기존개발방법론 Build First Version Modify until client is satisfied Maintenance Maintenance Development Build and Fix Waterfall Iteration Model 기존개발방법론의문제 과도한초과근무 심각한품질문제 계속되는문제점과사투 납기지연
  4. 4. 4 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일헌장 http://agilemanifesto.org/
  5. 5. 5 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일방법론(1/2) ‘Agile’의의미 Marked by ready ability to move with quick easy grace Having a quick resourceful and adaptable character 기민한, 날쌘(Ref http://agile.egloos.com/4368289) Agile 방법론의등장배경 S/W 개발환경의변화 결과물의Time to market(적시배포)가중요해짐 개발생산성저하 기존방법론의한계 문서및절차위주의기존방법론 •변화에신속한대응이어려움 개발자의개발능력의차이불인정 Waterfall model의문제점 불명확하고, 변화하는사용자의요구사항 개발된모듈들의통합의어려움 Software 품질의하락 •충분한테스트가이루어지지않음
  6. 6. 6 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일방법론(2/2) Agile방법론의정의 특정한방법론을지칭하는것이아님Agile개발을가능하게해주는다양한방법론들을통칭함(Wikipedia) SW개발환경등주위변화를빠르게수용하고, 이에능동적으로대응하는여러방법론통칭 특징 더나은의사소통 지속적인변화관리 우선순위에따라중요한것먼저 대표적인Agile방법론 Agile Disciplined 인원규모 소규모 대규모 Criticality 낮음 높음 Dynamism 잦은요구사항변화 요구사항변화통제 개인성향 능동적 규범에잘따름 문화 혼란극복 질서유지 익스트림프로그래밍 (XP: eXtreme Programing) Agile방법론의대표주자로Agile방법론보급에큰영향을끼침 고객과함께2주정도의반복개발을하고, 테스트와우선개발을특징 -극단적인효율성추구(동료, 고객, 관리자와의의사소통을중시) 스크럼 (Scrum) 한달마다동작가능한제품을반복적인개발주기(Sprint)를중심 개발팀의짧은미팅(Stand-up Meeting)이프로젝트관리의중심 일의진행동안에는누구도팀을방해할수없음 FDD (Feature-DrivenDevelopment) 기능마다2주정도의반복개발을실시 다른Agile접근방법의장점을조합(UML 설계기법과의연관성이있음) 이해당사자에게정확하고, 의미있는진행정보를제공 ETC 이외에도다음과같은Agile 방법론들이있다. -CrystalFamily(규모에따라다른접근방법), Lean (불필요한요소제거) …
  7. 7. 7 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일의핵심
  8. 8. 8 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 매주가치전달하기 매주고객에게가치를전달하려면… 큰문제들을작은문제들로세분화하라 가장중요한것에먼저집중하라 소프트웨어가제대로동작하는지확인하라 피드백을구하라 필요하다면계획을바꾸어라 책임감을가져라 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 애자일에서가장우선시하는것은신속하고지속적으로가치있는소프트웨어를 고객에게전달함으로써고객만족을이루는일이다
  9. 9. 9 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일프로젝트계획 애자일로계획하기 현실적이고, 유연해야한다 정보의공개는기본 프로젝트범위, 비용, 출시날짜등에관한결정은사실을바탕으로 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  10. 10. 10 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 완료의의미 잔디깎기아르바이트 여러분의할머니가앞마당의잔디를정리하기위해이웃집소년을고용했다. 소년이다음과같은일을마쳤다면, 이소년은정말자신의일을다했다고생각할까? 개발결과를전달한다는것은… 코드를출시가능한상태로만들기위해해야할모든일을수행 •분석, 설계, 코딩, 테스트, UX와디자인모두를포함한다 출시되기에부족하다면, 아직완료되지않았다는뜻이다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 작동하는소프트웨어는프로젝트의진척을알수있는주된척도이다. 어떻게잔디를갈퀴질할것인지에대한계획서작성 우아한잔디무늬에대한디자인제시 섬세하면서포괄적인청소계획수립
  11. 11. 11 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement S/W 프로젝트에대한세가지진실 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 < 1. 프로젝트초기에모든요구사항을수집하기는불가능하다. 2. 수집한요구사항을무엇이든변하기마련이다. 3. 시간이나비용이허용하는것보다항상할일이더많다. 모든것을만족시키는단하나의방법론은없다상황과맥락에따른최선의선택을하자
  12. 12. 12 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일팀
  13. 13. 13 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Setting the Stage 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  14. 14. 14 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일팀 애자일팀은… 팀원각각의역할을미리정의하지않는다. 직위나역할에상관없이누구나프로젝트에필요한일을한다. 분석, 코딩, 설계, 테스트를지속적으로실행한다. 하나의팀(품질은팀모두의책임) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 전통적인방법 한단계씩완성하고 넘어가는시스템 애자일 분석과개발, 테스트활동이 끊임없이진행되는개발과정 VS VS
  15. 15. 15 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일팀 애자일팀의특징 같은공간에서일한다. 참여하는고객 프로젝트가진행동안“업무전문가들(Business people)”과“개발자” 는매일함께일해야한다. 자기조직화(Self-Organizing) 최고의아키텍처, 요구사항, 그리고설계는자기조직화된팀에서나온다. 책임감과자율성 의욕이가득한사람으로팀을구성하고, 그들에게필요한환경과지원을한후, 이들이업무를완성할것이라믿어야한다. 교차가능팀(Cross-functional Team) 팀구성원은다방면에걸쳐많이알고관심을 갖는사람(Generalist)가좋다. 특정기술에종속되지말아야한다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  16. 16. 16 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일팀 애자일팀에서의역할(Role) 애자일개발팀 애널리스트–사용자스토리작성, 세부사항분석, 태스크완료확인 개발자–소프트웨어작성, 추정치정하기, 기술적인결정내리기 테스터–개발스토리에대한테스트 프로젝트관리자–프로젝트진행확인, 걸림돌없애기 UX 디자이너 기타–DB Admin, System Admin, Technical Writer, Trainer … 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 고객 개발팀 애자일프로젝트에서역할이란구체적이지않으며누구나여러가지역할을수행할수있다고이해하는것이필요하다 무엇을개발할지 결정한다. 우선순위를정한다. 어떻게개발할지 결정한다.
  17. 17. 17 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일팀 애자일팀구성Tip 제너럴리스트를찾아라. 애매모호한상황을개의치않는사람을찾아라. 제멋대로행동하는사람이아닌, 팀플레이어를찾아라. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Technician Generalist Specialist Professional 깊이 너비 경험
  18. 18. 18 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱소개
  19. 19. 19 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 프로젝트실패 대부분의프로젝트는시작하기도전에실패한다. 적절한기대치를알지못해서… 껄끄러운질문을하지못해서… 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 이거누가운전하는건가요? 난멀미나는데... 아직도착안했어? 왼쪽, 오른쪽, 잠깐… 오른쪽.. 어디로가는거죠? 에어컨좀 틀어줘요! 너무시끄러워..
  20. 20. 20 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 프로젝트실패이유 대부분의프로젝트가실패하는이유는... 사람들이생각하는의미가다르게해석된다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 현명한선택을하기위해, 목표, 비전, 프로젝트의상태에대하여팀원과소통하기 이해관계자들이적절한결정을내릴수있도록필요한프로젝트정보제공하기
  21. 21. 21 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 껄끄러운질문은언제하는가? 이런질문은프로젝트초기에해야한다. 팀의프로젝트경험은얼마나되는가? 예산은얼마나배당되어있는가? 프로젝트는누가지휘하는가? 유사한프로젝트경험이있는가? … 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 필요하지만껄끄러운질문은이때해야한다.
  22. 22. 22 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱(Inception Deck) 인셉션덱 프로젝트성공률을높이기위한아이디어 프로젝트관련자들이함께모여.. 프로젝트에대한기대치를동일하게하기위해.. 서로적절한질문을통하여… 생각을공유한다 S/W 프로젝트시작전에꼭물어야하는10가지질문으로구성 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 인셉션(Inception)은어떤활동이나단체를시작, 설립하는단계라는사전적의미가있다. 인셉션을프로젝트초기단계에고객과개발팀이서로를알아가는과정을갖는일정기간(1~2주)이며, "인셉션덱(Inception Deck)"은이기간동안사용하는도구이다
  23. 23. 23 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트(Inception Deck) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  24. 24. 24 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트
  25. 25. 25 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL1 -우리가왜여기에모였는가? 프로젝트를진행하는이유를팀원들이이해하면… 더많은정보를충분히고려한보다나은결정 서로대립하는세력과Trade-off의균형유지 자율적으로생각하고판단하는능력으로혁신적인해결책모색 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  26. 26. 26 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL2 –엘리베이터피치만들기 좋은엘리베이터피치는… 프로젝트의핵심을분명히이해할수있다. 팀원으로하여금고객의입장에서생각하도록한다. 핵심을공략한다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  27. 27. 27 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL3 –제품상자디자인하기 제품광고를제작하면서아래와같은점을알수있다. 우리제품이고객에게끌릴만한점이무엇인지 •기능보다는혜택이무엇인지 이제품만의장점이무엇인지 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  28. 28. 28 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL4 –하지말아야할것정리하기 범위내–프로젝트를진행할때꼭해결해야할중요사항 반드시구체적이지않아도좋다. 범위외–다음릴리즈나이프로젝트에서해결할수없는것들 미해결–더고민한후결정해야할사항 나중에범위내, 혹은범위외의범주로옮겨져야한다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  29. 29. 29 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL5 –프로젝트관련자알아보기 어떤그룹의사람들이이프로젝트와관련있는지알았다면, 그들과대화를나누고, 각그룹마다연락가능한사람을만들자 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 단것이 도움이 된다.
  30. 30. 30 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL6 –해결책보여주기 해결책을이야기함으로써얻는이점들 어떤도구나기술을사용할지추측할수있다. 프로젝트의제약사항이나범위를시각화해볼수있다. 리스크에대해상의해볼수있다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  31. 31. 31 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL7 –야근거리가될만한것들파악하기 리스크(Risk)를미리파악하면좋은점 프로젝트를하는동안감수해야할문제점들을일찍파악 납득할수없는이야기에대한반론의기회를준다. 팀의결속력을강하게하고, 서로의경험을배울수있는기회가 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  32. 32. 32 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL8 –규모정하기 프로젝트가얼마나걸리는지예측해보는것으로, 정확하지않아도언제쯤소프트웨어가출시될지알아야한다. 작은단위로생각하기 작고다룰수있는크기로나누어야한다. (Iteration based) 규모에적당한기대치를세우기 현재상태의가능한정보를기반으로합리적인기간을예측하여 관련자에게알려주어야한다. 상황이변경되면계획은수정 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  33. 33. 33 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL9 –기회비용파악하기 프로젝트의제약을파악하고, 이에대한대책을생각하자 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 * They can’t all be ‘ON’ * No two can occupy the same level
  34. 34. 34 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 인셉션덱리스트 IL10 –우선순위파악하기 계획을세웠으면, 이를구현하기위해필요한것과비용을알아내야한다. 최고의팀구성 최종결정권자파악 비용에대한예측 모든정보의수집 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 고객 이프로젝트는언제끝나는건가요? 그리고비용은얼마나드는건가요?
  35. 35. 35 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 사용자스토리
  36. 36. 36 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 문서작성의문제점 소프트웨어개발시문서에의존하게되면.. 문서를좀더자세히작성하면문제가해결된다.(?) 나는그녀가돈을훔쳐갔다고말하지않았어요 나는그녀가돈을훔쳐갔다고말하지않았어요 나는그녀가돈을훔쳐갔다고말하지않았어요 나는그녀가돈을훔쳐갔다고말하지않았어요 나는그녀가돈을훔쳐갔다고말하지않았어요 나는그녀가돈을훔쳐갔다고말하지않았어요 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 변화를받아들이지못한다. 고객이원하는것이아닌적혀있는명세에따라개발한다. 실제20%만제대로된요구사항이다. 잘못된추측과가정이난무한다. 많은시간을낭비한다. 내가말한것이아님 내가말한것이그게아니라.. 다른사람이훔친것같은데. 빌려간건데... 돈이아닌다른것을훔친..
  37. 37. 37 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 사용자스토리(User Story) 사용자스토리 고객이소프트웨어에원하는기능을짧게표현해놓은것이다 작은인덱스카드에적는다. 필요한것만짧게… 자세히모르는세부사항은나중으로미룬다. 가장정확하고효과적으로정보를전달하는방법은직접대면하면서이야기하는것이다 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 개발시요구사항에관하여서로소통할수있도록해주는무엇이필요하다. 고객이원하는핵심사항이 적혀있고, 계획할때사용가능하면서도, 짧고, 무엇을하고자했는지알수있는그무엇이.. 좋은사용자스토리는 고객에게가치가있어야한다. 그리고스토리를완료하기위해필요한정보를포함해야한다. 가치= 돈을주고사고싶다
  38. 38. 38 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 좋은사용자스토리의요소 좋은사용자스토리는다음요소를갖추어야한다. (INVEST) 독립적이다. (Independent) 다른스토리에종속되지않아야한다. 협상가능해야한다. (Negotiable) 너무세세하게작성하지말아야한다. 가치가있어야한다. (Valuable) 추정가능해야한다.(Estimable) 적당한크기여야한다. (Sized right) 하나의이터레이션에서개발할수있어야한다. 테스트가능해야한다. (Testable) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 사용자스토리템플릿 스토리의세측면을반영 서술: 고객의요구사항을문서화하기보다는표현하기위한것 대화: 대화를통해세부사항을구체화 테스트: 스토리의완료여부를판단
  39. 39. 39 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 사용자스토리워크숍 User Story Workshop 개발팀과고객이함께모여, 개발하고자하는시스템에필요한사용자스토리를수집 Workshop Tip Step 1. 크고이것저것붙일수있는벽면이많은방을구하라 Step 2. 그림을많이그려라 Step 3. 스토리많이쓰기 Step 4. 그외모든것에대해브레인스토밍하라 Step 5. 리스트를깔끔하게정돈하자 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  40. 40. 40 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일추정
  41. 41. 41 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일추정 일반적인추정을할때의가정 대략적인추정치는그저추측일뿐이다. 대부분현실성이떨어지는, 낙관적인추측일뿐이다. 정확하게측정된추정치란있을수없다. 실제인셉션기간에정한추정치의400%까지달라지는게현실이다. 추정치가말해줄수있는사실은… “이주어진시간과비용으로프로젝트가가능한가?” 추정치가제공하는기능은다음과같다. 미래의계획을짤수있는정보를제공 추정치는추측일뿐이라는사실을상기 S/W 개발에는본래복잡성이있다는걸인지시켜준다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 소프트웨어의추정의주된목적은프로젝트의결과를예측하는것이아니다. 프로젝트의목표가통제가능할만큼충분히현실적인지알아보기위한것이다.
  42. 42. 42 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 상대적인추정 상대적인크기구하기 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 이걸먹는데 10초가걸린다면… 요만큼을먹어치우는데 걸리는시간은대략얼마? 쿠키2개 쿠키6개 쿠키8개+ 우유 IF쿠키2개= 10초 THEN 쿠키6개= 30초 AND쿠키8개+ 우유= 60초 상대적인크기를구하는간단한원리가애자일에서의추정과계획의기초가된다.
  43. 43. 43 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 사용자스토리점수 사용자스토리점수(Story Point) 절대적인측정단위는아니지만, 수치적인상대치로추정이가능 10점짜리사용자스토리는5점짜리보다두배의시간이걸린다. 해당업무의크기와복잡도에기초하여부가 모든Story를점수별참조스토리활용하여점수별로분류 사용자스토리점수추정시장점 상대적인추정이가능사람들은상대적인추정에더강함 작업기간이아닌크기에초점을맞춘다 기간은, 나중에한주기당완료상태를기반으로경험적으로산출 추정치들을합산할수있다. 물리적인시간을기준으로추정누가하느냐에따라변동이크다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  44. 44. 44 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 플래닝포커(Planning Poker) Planning Poker 추정 광대역델파이기법(Wideband Delphi)을바탕으로일정을추정하는반복적인접근방법 한사람추정치보다팀원전체의추정치가정확하다 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 ? $ # 1 4 5 3 3 3 토론… 1. 고객이스토리를읽는다. 2. 팀원들이추정치를정한다. 3. 팀원들이서로토론한다. 4. 팀원들이다시추정치를정한다. (의견이일치될때까지반복)
  45. 45. 45 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획기초사항 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 팀이얼마나빨리개발하는지알고… 스토리의상대적인 크기가정해지면... 출시일이언제쯤일지예상할수있다!!!
  46. 46. 46 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획
  47. 47. 47 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획 정적인계획의문제점 변화에대응이힘들다 팀원이바뀌고, 팀의능력이생각과다르고, 일정이줄어들고, 요구사항이끊임없이변경된다. 애자일에서계획은다음조건을만족해야한다. 고객에게중요한가치를전달 가시성이높고, 투명하고, 정직해야한다. 현실적으로실행가능해야한다. 필요하다면계획을조정하고, 변경할수있는유연함이필요하다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  48. 48. 48 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획 애자일로계획을세운다는것은… 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 팀이사용자스토리를얼마나신속하게잘동작하면서도출시가능한소프트웨어로 만들수있는지를측정해서언제쯤소프트웨어가완성될지추측하는작업에불과하다. 마스터 스토리 리스트 소프트웨어를 만드는 팀의업무속도 (Point 단위) 사용자스토리를출시가능한소프트웨어로만드는1~2주동안의기간 #이터레이션= 총작업량/ 팀의업무속도 예) #이터리에션= 100 Point / 매이터레이션마다10 Point = 10 이터레이션
  49. 49. 49 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 작업량을줄여야한다. 다시말해계획을 다시세워야한다. 애자일계획을세우는방식은스토리를측정하고, 우선순위를정해서마스터스토리를만들고, 팀의속도를추정한다음, 출시날짜를정하는순서로이루어진다.
  50. 50. 50 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획 범위에유연하라 사용자스토리는계속해서추가, 삭제될수있다. 계획을현실적으로유지하고, 팀이욕심을부리지않도록해야한다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  51. 51. 51 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획세우기(1/4) 1단계: 마스터스토리리스트작성하기 보통1~6개월정도의작업량을가진다 릴리즈정의 함께묶어전달했을때고객에게가치가있는스토리들을논리적 으로분류해놓은그룹이다. 출시할만한최소한의기능을모아놓은세트(Minimal Marketable Feature Set, MMF) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  52. 52. 52 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획세우기(2/4) 2단계: 크기정하기 애자일추정참조… 3단계: 우선순위정하기 항상중요한것을먼저개발해야한다. 고객이우선순위를정하지만, 개발자도고객에게추천가능 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  53. 53. 53 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일계획세우기(3/4) 4단계: 팀의업무속도측정하기 과거유사한소프트웨어개발경험에서.. 프로젝트초기의1~2개의이터레이션결과에서.. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 모든스토리가같은크기라면… -팀의업무속도= 완성된스토리/ 이터레이션 모든스토리의크기가같지않다면… -팀의업무속도= 완성된스토리포인트/ 이터레이션
  54. 54. 54 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 5단계: 날짜예상하기 애자일계획세우기(4/4) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 날짜에맞추어출시 기능세트별로출시 무슨일이있어도 출시일은지켜야돼!!! 일정이변경되어도 이기능들은 꼭넣어야돼 애자일계획을세우는방식은스토리를측정하고, 우선순위를정해서마스터스토리를만들고, 팀의속도를추정한다음, 출시날짜를정하는순서로이루어진다.
  55. 55. 55 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 이터레이션관리
  56. 56. 56 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 이터레이션관리 이터레이션관리 고려사항 모든내용을다적어놓을만한시간이없다 •빠르고정확하게, 필요한정보를제때에제공하는분석을해야한다 완료된기능은완벽히작동되어야한다 •잘설계하고, 꼼꼼히테스트해서, 완전히통합할수있는코드를갖도록해야한다 기능이다잘작동하는지확인하기위해기다릴수는없다 •프로젝트의시작부터시스템이건강하고, 문제가없는지살펴야한다 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 애자일프로젝트에서이터레이션을이용하여어떻게일을처리하는지를의미한다
  57. 57. 57 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일이터레이션 이터레이션 스토리를작동하는소프트웨어로개발하는1~2주간의기간 애자일프로젝트에서개발을완성하기위해필요한엔진역할 고객에게가치있는것을생산하는것이이터레이션의목적 •잘작동하고, 테스트된소프트웨어를생산해야한다 이터레이션중간에스토리를바꾸지않는다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  58. 58. 58 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 이터레이션실행예 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  59. 59. 59 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일커뮤니케이션
  60. 60. 60 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일커뮤니케이션계획 이터레이션에서해야하는4가지 스토리계획회의(SPM) 다음이터레이션에할작업준비하기 쇼케이스 지난이터레이션에서작업했던스토리에대한피드백받기 이터레이션계획회의(IPM) 다음이터레이션에서스토리들을어떻게작업할지계획세우기 미니회고(Mini Retrospective) 향상될부분이있는지지속적으로찾아보기 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Iteration (n) SPM IPM Daily Stand-up Meeting SPM : Story Planning Meeting IPM : Iteration Planning Meeting
  61. 61. 61 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일커뮤니케이션 스토리계획회의 Just in Time 으로다음이터레이션준비를검토 쇼케이스 업무성과를공개하고, 피드백을받는다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Iteration (n) IPM 이번이터레이션스토리데모하기 고객의피드백받기 Show the valuable things 쇼케이스 다음이터레이션계획하기 미니회고하기 Iteration (n) SPM Ready to work ? 해야할과제는다완성했는가? 다음이터레이션에서작업할스토리를개발할준비가되었는가?
  62. 62. 62 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일커뮤니케이션 다음이터레이션계획하기 다음이터레이션에서무엇을할지계획을세운다. 팀의속도를재검토하고, 다음에는또어떤스토리들이준비되어있는지확인 팀이얼마만큼의스토리를개발할수있다고약속 미니회고진행하기 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 회고의최우선지침우리가무엇을발견하든, 여기있는모든사람이 그당시에자신들이알고있던정보와기술, 능력, 당시에사용가능했던자원그리고주어진상황에 미루어, 그들이할수있는최선을다했다는것을 진정으로이해하고믿는다. -회고는마녀사냥이아니다. 우리가잘하고있는것은무엇인가? 우리가더향상시켜야하는것은무엇인가? Iteration (n) IPM 프로젝트가어떤상황인지파악하기 팀의속도재검토하기 어떤스토리를개발할지확정하기 Planning the next week 쇼케이스 다음이터레이션계획하기 미니회고하기 Iteration (n) IPM 프로젝트가어떤상황인지파악하기 팀의속도재검토하기 어떤스토리를개발할지확정하기 쇼케이스 다음이터레이션계획하기 미니회고하기
  63. 63. 63 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Daily Stand-up Meeting 일일스탠드업미팅 문제를풀기위한자리가아니다. 누구나참여가능하지만, 팀원만발언할수있다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Iteration (n) Daily Stand-up Meeting 팀원들과함께할활동구성하기 짧게하기(10분) 앉지말기 1. 어제무엇을했는가? 2. 오늘은무엇을할것인가? 3. 내작업속도를늦추거나방해하는요소가있는가?
  64. 64. 64 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 애자일커뮤니케이션 10 Levels of Intimacy in today’s communication 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  65. 65. 65 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 작업환경-시각적인작업환경조성하기
  66. 66. 66 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 진행상태보기(1/2) 릴리즈상황판 스토리보드(현재이터레이션의사용자스토리진행현황) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 완성된스토리 아직남아있는스토리 보아하니 거의절반정도 끝난것같군~
  67. 67. 67 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 진행상태보기(2/2) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 번다운차트 팀의속도–얼마나빠르게진행되고있는가? 언제쯤끝날것인가?
  68. 68. 68 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 프로젝트가원하는것… 인셉션덱의결과가모두볼수있도록되어있는가? 모두가과제를왜시작했는지, 무엇을원하는지알아야한다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  69. 69. 69 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 의도를보여주기 작업동의서와공유하는가치 공통된도메인언어(Metaphor) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 이것이바로 우리가일하는방식이다!!! Our Slang ? No, It is Jargon 밥을고슬고슬하게해서요, 그위에소금에절여서양념장에무친오이를썰어서넣어주세요. 그리고쓴맛을뺀도라지를양념장에무쳐서오이옆에넣어주시고요, 소고기를채썰어서양념해서볶은후함께올려주세요, 더불어고사리도볶은후올려주시고요, 그리고계란프라이를제일위에올려주세요. 마지막으로이모든것을그냥그릇이아닌불에달군돌솥에넣어주세요.. 돌솥비빔밥하나요!!!
  70. 70. 70 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 개발자책상… 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  71. 71. 71 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 단위시험
  72. 72. 72 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement S/W 테스팅의목적 품질향상을위하여결함을발견하는것이다 품질수준에대한확신과정보를얻는다. 명세를만족시키는지확인한다. 사용자및비즈니스요구사항충족확인 결함의예방을통한리스크감소 S/W 테스팅의제한성(Limits of testing) 모든입력값을테스트할수없다. 완벽한테스트는불가능하다. 테스트는결함이없음을보여주기위한것이아니다. S/W 테스팅의목적 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  73. 73. 73 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 테스팅범위(Big Picture) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 V-Model Different View System Engineering Requirements Design Construction Unit Testing Integration Testing System Testing (Software) System Testing (Final) Methods Combinations of methods in class Packages of classes OO: Include use-cases Function Module Module combination Integration tests System tests Unit tests
  74. 74. 74 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 테스팅타입 Block-, Gray, -& White-Box Testing 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Black box … requirements Actual output compared with required output White box Gray box … requirements & key design elements Input determined by... Result …design elements Confirmation of expected behavior As for black-and white box testing
  75. 75. 75 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 단위테스트 단위테스트는 각각이독립적으로테스트되어야한다. 최소한한번은모든컴포넌트가테스트되어야한다. 결함을쉽게골라낼수있어야한다. 테스트범위가작을수록, 결함을고치기가쉬워진다. Isolatable, Repeatable, Automatable, Easy to Write 단위테스트의효과 빠르게디버깅할수있다. 개발시간을단축시킨다. 더좋은설계를하도록유도한다. 회귀테스트를쉽게하도록한다. 미래의결함비용을줄인다. 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  76. 76. 76 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 테스트단위 Unit 독립적으로테스트할수있는소프트웨어의코드조각 Unit Test 단위테스트코드는다른코드부분을호출한다. 단위테스트는임의의가정에대한정확성을검증한다. 만약가정이사실이아닌것으로판명된다면, 단위테스트는실패 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 public class MyMath { public int Add(int i, int j) { return i + j; } } public void MyAddTest() { MyMath m = new MyMath(); Assert.AreEqual(m.Add(2, 3), 5); }
  77. 77. 77 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Unit Test Roadmap 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Unit test plan Products of prior testing Test results Code under test Identify largest trouble spots Requirements Detailed design Test set IEEE, 1986
  78. 78. 78 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 테스트환경 Driver 테스트입력을공급하거나테스트항목을호출하고테스트결과를보고하는프로그램. Stub 특정시스템컴포넌트의개발이완료되지않은상황에서도필요한시험을진행하기위해생성된더미컴포넌트 단위테스트환경구성 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Test cases Driver Test Results Module to Test Stub Stub Stub
  79. 79. 79 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement TDD Tools xUnit Test Framework for Specific Language JUnit, NUnit, CPPUnit, PyUnit, VBUnit, PearlUnit… 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  80. 80. 80 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 고급단위테스팅이슈 가상객체(Mock Objects) 무엇을, 얼마나테스트해야하나? 발견되는결함의수 추가된기능 테스트수행시간(Test Running Time Optimize) 코드커버리지(Code Coverage) 테스트구성관리 지속적인통합(Continuous Integration) 단일/ 분산개발(Local / Remote Development) 고급단위테스팅 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  81. 81. 81 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 리팩토링(Refactoring)
  82. 82. 82 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 리팩토링 리팩토링의정의 왜리팩토링을해야하는가? 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 리팩토링(Refactoring) n. : 현재존재하는코드를재구성하는잘다듬어진기법으로, S/W의외부적행동변화없이내부적구조를변경하는방법 리팩토링하기(Refactor) v. : 리팩토링을연속적으로적용하여소프트웨어를재구성하는것 소프트웨어디자인개선 코드를쉽게이해하게함 버그를쉽게찾을수있음 개발기간을단축
  83. 83. 83 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 리팩토링 언제리팩토링을해야하는가? ‘3’의원칙 새로운기능을추가할때 버그를수정해야할때 코드의이해하는데도움을줌 코드리뷰를수행할때: 새로운아이디어를보다쉽게적용 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 뜨거운라면을맨손으로먹겠다 다시한번… 새로운방법을찾았다 1. 어떤일을첫번째로한다면그냥그일을하라 2. 비슷한일을다시한다면내키지않아도, 같은일을중복하라 3. 어떤비슷한일을세번째로한다면리팩토링하라 수정할부분의코드를이해하는데도움을줌 새로운기능이쉽게추가될수있도록디자인을변경할수있게함
  84. 84. 84 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 코드의나쁜냄새(Bad Smells in Codes) 정의 잠재적인문제를가리키는프로그램코드의증상들 특성 코드디자인이취약한경우나타남(But Not Bug) 개발속도지연, 결함(Defect),시스템장애(Failure)발생원인 •예) 지나치게긴메소드, 중복된메소드나코드등 코드의나쁜냄새는리팩토링을시작해야함을알려줌 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 int func1() { …. } <Long Method> int func1() { … result = calc(a,b,c); … print_result(result); … } int result (int a, int b, int c) { … return result; } void print_result(int r) { … } •복잡한내용 •이해가어려움 •유지보수가어려움 •기능별재사용이어려움 •메소드가간략해짐 •이해가쉬워짐 •유지보수가쉬워짐 •기능별재사용가능 코드의나쁜냄새와리팩토링의예
  85. 85. 85 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 리팩토링과테스트 리팩토링과테스트 테스트는리팩토링에필수요소임 리팩토링후‘소프트웨어의외부적행동변화없음’을확인하는방 •테스트(주로단위테스트, 필요시패키지테스트) 리팩토링에사용될테스트의조건 자동화: 리팩토링작업중매우많이테스트수행테스트자동화 테스트수행직후결과(Pass/Fail)확인가능할것 •판단시간을줄임 테스트수행시점 리팩토링전: 결함없는코드임을확인 리팩토링중각단계마다(코드수정직후): •코드수정이기능에영향을주는지확인 리팩토링후 •리팩토링작업이기능에영향을주는지확인 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  86. 86. 86 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 리팩토링분류기법 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 이름 설명 대표기법 메소드정리(Composing Methods) •긴메소드를정리하는데필요한기법 •긴메소드에서작은메소드를추출하는방법 •메소드추출을위해변수를정리하는방법 •메소드의쉬운이해를위해코드를개선하는방법 Extract Method, Replace Temp withQuery, Split Temporary Variable 객체간기능이동 (Moving Features Between Objects) •객체간기능이동을통해‘책임’울명확하게지정 •객체간메소드를이동하는방법 •객체간필드를이동하는방법 •새로운객체를추출하고, 기능을정리하는방법 MoveMethod, Move Field 데이터조직화 (Organizing Data) •데이터를좀더쉽게다루기위한기법 •데이터필드의접근성제어방법 •다양한타입을객체로변경하는방법 •객체간의링크를단순화하는기법 SelfEncapsulate Field 조건형식간소화 (Simplifying Conditional Expressions) •조건형식을단순화하기위한기법 •조건형식을단순화하는방법 •컨트롤플래그를제거하는방법 •switch문을제거하는방법 Decompose Conditional 메소드호출간소화 (Making Method Calls Simpler) •인터페이스를직관적으로만드는기법 •메소드의이름변경및파라메터조정하는방법 •메소드를기능별로분리하는방법 Rename Method, Add Parameter 일반화다루기(Dealing with Generalization) •효율적인상속관계를만드는기법 •상속구조에서메소드의위치를이동하는방법 •새로운클래스생성&상속구조변경방법 •생성자의위치를이동하는방법 Pull Up Field, Pull Up Method, Push Down Field, Push Down Method
  87. 87. 87 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Coding Standard Coding Standard (Small View) 일치된coding style and practices clean code and “적절한” code를정의한다. 정신없는코드를제거한다. (ex. 너무많은arguments) 목표는누가그코드를보더라도쉽게이해할수있으며, 누가만든코드인지코드만으로판별을못하게한다. Standards evolve over time Coding 영역외에서도사용이된다. (Documents, E-mail) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  88. 88. 88 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 테스트주도개발(TDD)
  89. 89. 89 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 테스트주도개발(TDD) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Testing TDD Design Implement Test Design Implement Test
  90. 90. 90 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 테스트주도개발 Workflow 0. Read Requirement 1. Add a test 2. Run Test (Make it Fail) 3. Implementation 4. Run Test (Make it Work) 5. Refactoring (Make it Better) 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Need Simple code Bad smell? 통과 Simplicity Test Refactoring Code 실패하는 테스트코드 작성 테스트를 통과하는 코드작성 코드의 중복을 제거 N번 Refactoring The only tests relevant to TDD is Black-box Unit Testing
  91. 91. 91 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Writing Good Tests (1/2) Better Test Practices Tests must be Small Easy to understand They do not break when other parts of the code are changed One behavioral-assert per test Test must be Expressive Test code should communicate its intent It should not take more than 2 minutes for readers to understand what is going on. Tests must be Maintainable When a test breaks, what it contains should be easiest to fix Tests must execute Fast Slow running tests increase Build Viscosity Tests are Specifications, not Verifications Specify what should the code do to function correctly Tests are should talk the Domain Language 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  92. 92. 92 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Writing Good Tests (2/2) Better Test Practices (cont.) Tests must run at will Able to write and execute tests without worrying about how to execute them Test must be Isolated Very little set-up and minimum collaborators Tests must be Thorough Test all behavior, not methods Test must be Automated Write them such that methods on objects are invoked by code rather then by hand Tests must be Self-Verifiable Setup test expectation and compare outcome with expectations for verdicts Tests must be Repeatable The same conditions must yield same results 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  93. 93. 93 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 지속적인통합
  94. 94. 94 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 지속적인통합(Continuous Integration) 지속적인통합이란… 팀구성원들이작업한것을자주통합하는S/W 개발실천방법 지속적으로퀄리티컨트롤을적용하는프로세스를실행 소프트웨어의질적향상 소프트웨어배포시간의단축 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 개발자 개발자 개발자 변경사항Commit Polling Feedback 빌드스크립트 CI 서버 Code Repository 통합빌드머신 소스코드컴파일 DB 통합 테스트수행 소프트웨어배포
  95. 95. 95 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 지속적인통합(Continuous Integration) 지속적인통합의장점 S/W 위험요소감소 결함조기발견 S/W 상태측정이가능 불확실성감소 프로젝트가시성향상 빌드상태, 품질지표제공 반복적인프로세스감소 배포가능한S/W생성 팀원모두가최신의빌드결과를공유 개발팀의S/W 제품에대한자신감향상 CI는XP의Practices 중하나… 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 Check in Code Build Kicks Off Tests are Run Results Sent < 1 hour
  96. 96. 96 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 지속적인통합(Continuous Integration) S/W 위험요소들과자동화프로세스 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합 S/W 위험요소 자동화프로세스 CI자동화Tool ■배포가능한S/W부재 -빌드실패 -DB 동기화실패 -배포실패 -소스컴파일 -DB Script 테스트 -릴리즈 ■뒤늦은결함발견 -회귀테스트부재 -테스트적용범위부재 -테스트수행 -테스트적용범위측정 ■프로젝트가시성부재 -자동화된피드백부재 -S/W 시각화역량부재 -통합결과피드백 -각종다이어그램생성 -Dash board ■저품질S/W -코딩표준비준수코드 -설계지침비준수코드 -중복코드 -복잡한코드 -코딩표준준수여부검사 -설계지침준수여부검사 -중복코드검사 -코드복잡도검사
  97. 97. 97 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 지속적인통합(Continuous Integration) CI 수행지침 Maintain a Single Source Repository Automate the Build Make Your Build Self-Testing Everyone Commits To the Mainline Every Day Every Commit Should Build the Mainline on an Integration Machine Keep the Build Fast Test in a Clone of the Production Environment Make it Easy for Anyone to Get the Latest Executable Everyone can see what’s happening Automate Deployment 애자일의핵심 애자일팀 인셉션덱소개 인셉션덱리스트 사용자스토리 애자일추정 애자일계획 이터레이션관리 애자일커뮤니케이션 작업환경 단위시험 리팩토링 테스트주도개발 지속적인통합
  98. 98. 98 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Agile 방법론-eXtreme Programming & SCRUM
  99. 99. 99 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement XP Introduction 익스트림프로그래밍(http://www.extremeprogramming.org) 기본개념은여러가지효과가좋은실천방법(XP Rules)을극한으로실천하는것 전통적인소프트웨어개발방법론과는달리문서를강조하지않고변경을장려 모호하고빠르게변하는요구사항을가지고일을하는중소규모팀을위한경량화된방법론(Kent Beck) XP 특징 5명에서10명정도로구성된프로그래머가고객과함께한장소에서일한다. 개발은점진적으로이루어지고, 각단계마다산출물의기능을덧붙여나간다. 요구사항정의시에는사용자가새로운기능을스토리형태로구체적으로작성한다. 프로그래머는엄격한코딩규칙을준수하고, 짝(Pair)을이루어일하며, 단위테스트를실시한다. 요구사항, 아키텍처, 디자인은프로젝트중간에언제든지발생한다.
  100. 100. 100 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement XP Process and Rules 익스트림프로그래밍프로세스 개발프로세스는Iteration과Small Releases가특징 XP Practices는개인, 소규모팀, 조직에적용가능한것으로분류됨 Rules of XP (http://www.extremeprogramming.org/rules.html) 개인 소규모팀 조직 Planning Managing Designing Coding Testing User storiesare written. Release planningcreates the release schedule. Make frequent small releases. The project is divided into iterations. Iteration planningstarts each iteration Give the team a dedicated open work space. Set a sustainable pace. A stand up meetingstarts each day. The Project Velocityis measured. Move people around. Fix XPwhen it breaks. Simplicity. Choose a system metaphor. Use CRC cardsfor design sessions. Create spike solutions to reduce risk. No functionality is added early Refactorwhenever and wherever possible The customer is always available. Code must be written to agreed standards. Code the unit test first. All production code is pair programmed. Only one pair integrates code at a time. Integrate often. Set up a dedicated integration computer. Use collective ownership. All code must have unit tests. All code must pass all unit testsbefore it canbe released. When a bug is foundtests are created. Acceptance testsare run often and the scoreis published
  101. 101. 101 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement XP Values Communication Feedback Simplicity Courage Respect 잘되는가장 단순한방법으로한다 팀원간의상하관계나 중요도의차이는없다고생각한다. 프로그래밍과설계에있어서 개발자간의의사소통에노력한다 사업목적에대하여프로젝트팀과 고객의이해를도우며서로조율한다. 코드를작성하기전테스트케이스를, 가장간단한솔루션을선택할수있는, 빠르고즉각적인피드백을줄수있는, 코드를리팩토링할수있는.. 그런용기!!! 우리가 추구하는가치들
  102. 102. 102 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement XP Practices Practices 프로젝트를진행하면서지켜야하는규칙 고정된것이아니라팀원들의논의하에조정또는개선이가능하다. 아래의12가지Practices를개발동안에실천하는것이XP방법론의핵심 On-Site Customer (WholeTeam) 개발은whole team의지속적인의사소통으로이루어진다 팀원들은다른팀원들과최소의노력, 기다림으로의사소통및개발 The Planning Game 개발계획을대략적으로수립을먼저하고점진적으로개선한다 Small Releases 결과물(S/W)를매iteration마다release한다최종산출물에대한예측 Testing (TDD) “동작하는깨끗한코드(clean code that works)”를개발이목표 Simple Design 지속적인테스트와코드개선을S/W 디자인을simple하게유지 Pair Programming 모든코드는최소한한번의리뷰를거치게된다 Refactoring 동일한기능에대한디자인이지속적으로개선이되도록한다 Continuous Integration 매일여러번의통합과정을수행한다위험요소제거및비용절감 Collective Ownership 모든개발자들은어떤부분의코드라도접근하고수정을할수있어야한다 Coding Standard 목표는누가그코드를보더라도쉽게이해할수있으며, 누가만든코드인지코드만으로판별을못하게한다(일치된coding style) Metaphor 팀원들간의의사소통을위해서필요하다 이상적인모델과언어는Actual problem domain에있다 40-HourWeek 피로누적에따른project 위험을낮출수있다 인위적인요소를고려피로와스트레스는생산성을낮춘다
  103. 103. 103 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement SCRUM Introduction  Scrum의 정의 (http://www.scrumalliance.org)  반복적이며 점진적인 소규모 팀 중심의 개발 방법론  팀을 여러 가지 분열과 방해 요소로부터 보호  빠르고 반복적으로 실제 동작하는 Software 제공  요구사항에 변경에 빠르게 대처  소통을 향상하고 협동심을 극대화  SCRUM Elements SCRUM Team  프로젝트 팀을 의미하며 일반적으로 5~10명으로 구성된다 - Scrum Master : 방해 요소의 제거 - Product owner : 무엇이 언제, 어느 주기에 되어야 하는지를 결정 Product Backlog  Product의 현재 파악된 모든 requirement들의 리스트 - Product Owner에 의하여 관리되며, 필요 시 수정 가능 Sprint Backlog  이번 Sprint에서 개발을 할 예정이거나 하고 있는 우선 순위로 리스트 된 Product Backlog item들  현재 수행 중인 Sprint 기간 동안에는 변경되지 않음 Sprint  개발과 테스트가 진행되도록 지정된 기간 (2~4주) Daily Stand-up Meetings  스크럼 팀이 매일 진행하는 Stand-up 미팅 (15분 정도)  다른 팀도 참석 가능하나 발언은 오직 SCRUM 팀만 가능  팀원들의 개발 상황과 현황을 Tacking Burndown Chart  Sprint 기간 동안에 개발된 Sprint Backlog 비율을 표시하는 chart  개발 진행 속도와 추진 사항을 한 눈에 심플하게 볼 수 있음  지속적인 업데이트와 관리가 용이해야 함 Incremental Delivery  Sprint 과정의 결과물  테스트가 되었으며, 동작이 되는 실전 배치가 가능한 개발 결과 Progress 752 762 664 619 304 264 180 104 0 20 100 200 300 400 500 600 700 800 900 5/3/2002 5/5/2002 5/7/2002 5/9/2002 5/11/2002 5/13/2002 5/15/2002 5/17/2002 5/19/2002 5/21/2002 5/23/2002 5/25/2002 5/27/2002 5/29/2002 5/31/2002 Date Remaining Effort in Hours
  104. 104. 104 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement SCRUM Process
  105. 105. 105 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement 스크럼주요요소 제품책임자가참여. 제품책임자가최신제품 Backlog를가져온다. 팀전체가참여한다. 회의후스프린트계획을정리 팀전체가동의할계획인지확인 제품책임자가계획우선순위의 타당성확인 Sprint Planning Meeting 아이템의목적을정의 우선순위정리(내림차순정렬) (Business Need최우선) 추정치는팀에의해산정기록 스프린트에적당한아이템배분 상위아이템들의추정치정리 Product Backlog 팀전체가참여한다. 문제점과장애요인들을찾아낸다. Daily Scrum 매스프린트종료후데모를함 동작되는테스트된S/W 보여줌 이해당사자와제품책임자에게 피드백을받는다. Sprint Demo 이터레이션길이를4주이하로 고정한다. 항상제때에마친다. 팀이외부로부터방해받거나 통제되지않게한다. 팀은하기로약속한것들을 해낸다. Sprint 구체적인개선안들을도출 개선안들의실제적용 팀전원과제품책임자가참석 Sprint Retrospective
  106. 106. 106 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Scrum for Enterprise
  107. 107. 107 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Agile Adopting 선택적Agile 기법적용 Agile 기법의선택적적용 프로젝트/팀단위최적화 Start here … Extends … Pervades … XP Engineering practices Scrum Elements Lean Sprit Kanban Process Design XP Engineering practices Inner-Team communication Support
  108. 108. 108 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement Reference 도서 Web Site http://agilewarrior.wordpress.com/articles/ www.scrum.org http://www.extremeprogramming.org/
  109. 109. 109 Time goes now What’s your point ? This presentation created by Youngki, Kim Do not modify arbitrarily without agreement
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×