SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
レビュー前	
  
 (抜粋)
Elementary	
                バカにされてる	
  
                 気分になる	

A presentation for elementary programmers of Agile



Agile Fundamental Skill Set




  Produced by Tsuyoshi Ushio
Agile Fundamental Skill Set

In this presentation, you will …	
•  learn about Agile technical skill set in 90 min.
•  Know about book recommendations.
•  Watch demonstration of TDD.

What will you do?	
•  Make some teams (4 people in each team)
•  Think about important agile skill set for you.
•  Write your ideas and share these.


Ranking	
           You should learn it now!
           You can learn it.
           Development Team should cover it.
Mission #1 Mandatory Skills (5min)
Discuss	
  with	
  Team	
  members	
  about	
  …	
  

                            受動態多用	
  
                            日本人っぽい	
  




 ・What	
  skills	
  are	
  needed	
  for	
  agile	
  programmers?	
  

                       Please	
  tell	
  me	
  your	
  opinions.	
  Discuss	
  and	
  write	
  down	
  and	
  share.
Agile Practice Overview
                                              Goal	
                                        Business	
  Value	
                                  国によっては	
  
                                     Customer	
  SaOsfacOon	
                                 敏感!	
                                       Market	
  CreaOon	
LeJ	
  Wing	
                                                                             Right	
  Wing	

      CollaboraOon	
  ,	
  
           Team	
                                                  Technical	
  PracOce	
  	

                 Scrum	
                                        Engineering	
  pracOce	
  (XP)	
  
          VisualizaOon	
                                         ConOnuous	
  IntegraOon	
  
         RetrospecOve	
                                           ConOnuous	
  Delivery	
  
               IteraOon	
                                    Automated	
  Build	
  /	
  Test	
  /	
  Deploy	
  
    Daily	
  Standup	
  MeeOng	
                                    Version	
  Control	
  
        Human	
  /	
  Mind	
                                       TDD	
  /	
  Refactoring	
  


                          Reference	
  this	
  blog	
  and	
  customize	
  it.	
  
                          hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html
Five Knowledge Areas
                             新規作成	
  
                             ページ例	




1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
1. Designing & Programming
                                                 新規作成	
  
                                                 ページ例	



           TDD	
  (Test	
  Driven	
  Development)	




         Refactoring	
               Good	
  Design	




Refactoring and Good Design support TDD
Test Driven Development
•      Test-driven development is a software development technique that
       uses really short development cycles to incrementally design your
       software.
                                                                 日本語元ネタ	
  
                                                                   ありの例	
        Test	
  Driven	
  Development	
                                                       NoOce	
  :	
  you	
  should	
  not	
  execute	
  add	
  funcOon	
  and	
  refactoring	
  on	
  the	
  same	
  Ome.	




     Write Test	
                         Fail	
                         Write Code	
                                            Success	

                        Refresh the Design	
                                                   Refactoring	




8
Refactoring
•      Refactoring is the art of safety improving the design of existing code.


                             Planed	
  Design	
                                                                             EvoluOonal	
  Design	

     AJer	
  the	
  design	
  ,	
  implement	
  it.	
                                            Small	
  design	
  ,Small	
  implementaOon,	
  small	
  refactoring.	



                                                                                                                                                                         design	




                Design	
                                Programming	
                                                                                                          Add	
  funcOon	
  
                                                                                                            Refactoring	
                                                                                                                                                                               Add	
  tests	


 Before	
                                                                                    AJer	
• If	
  the	
  soJware	
  design	
  changes,	
  the	
  design	
  is	
  ge]ng	
  worse.	
     • If	
  the	
  soJware	
  design	
  changes,	
  the	
  design	
  is	
  sOll	
  smart.	
  
• Cannot	
  embrace	
  change	
                                                              • Embrace	
  change	
  
• It	
  takes	
  too	
  much	
  Ome	
  for	
  analyze	
  and	
  design.	
                    • It	
  takes	
  small	
  amount	
  of	
  Ome	
  for	
  analyze	
  and	
  design.	
  


                                                                                                     Point	
  
                      日本語元ネタ	
                                                                       	
  	
  	
  	
  1.	
  Basic	
  skill	
  of	
  design	
  is	
  same.	
  
                      あり例。ダサイ	
                                                                      	
  	
  	
  	
  2.	
  Automate	
  Test	
  
                                                                                                     	
  	
  	
  	
  3.	
  Learn	
  about	
  Refactoring	
  catalog	
9
Good Design                            新規作成例	

•    Agile Programmer has an ability to think some good designs.


         TDD	
  /	
  Refactoring	

                                     Simple	
  Design	



                                                  Design	
  Principles	
  
          Clean	
  Programming	
                                                     /	
  PaAerns	



                                       Architecture	
10
Simple Design
If you keep it simple, you will get …                                                                                新規作成例	
    Easy to change, Less time, Easy to Understand it.
    We can t predict the future



                    Beck’s	
  4	
  rules	
  of	
  simple	
  design	


                                     Pass	
  all	
  tests	

                         Contains	
  no	
  duplicaOons	

           Express	
  the	
  intent	
  of	
  the	
  programmers	

     Minimizes	
  the	
  number	
  of	
  classes	
  and	
  methods	
                                                                                                     Extreme	
  Prgramming	
  Explained:	
  
                                                                                                     	
  	
  	
  Embrace	
  Change	
  –	
  Kent	
  Beck	
       hAp://theholyjava.wordpress.com/2011/02/14/clean-­‐code-­‐four-­‐simple-­‐design-­‐rules/	



11
                    OOP	
  (Object	
  Oriented	
  Programming)
Clean Programming
Poorly written code is hard to understand and hard to evolve,                                                                           新規作成例	
making code base more expensive to maintain.




                            Avoid	
  Generic	
  Names	
  Like	
  
                                 	
  tmp	
  and	
  retval	

             var euclidean_norm = function (v) {
             for (var i = 0; I < v.length; i += 1)
                    retval += v[i] + v[i];
              return Math.sqrt(retval);
             };	

                               The	
  Art	
  of	
  Readable	
  Code:DusOn	
  Boswell,	
  Trevor	
  Foucher	
  
                                                                                                                 The	
  Art	
  of	
  Readable	
  Code:	
  
                                                                                                                 DusOn	
  Boswell,	
  Trevor	
  Foucher	
  
     Instead	
  of	
  retval	
  you	
  should	
  use	
  sum_squares	
  
     Because	
  it	
  would	
  show	
  the	
  meaning	
  of	
  the	
  variable	
  
12
Estimating
Estimate user stories on the product backlog using relative estimate.

                                                                                                           恥ずかしい文法	
  
                                                                                                            ミス指摘の例	

                                      Planning	
  Poker	




                                                                                                             Agile	
  EsOmaOng	
  and	
  Planning	
  
                                                                                                             Mike	
  Corn	
  




 EsOmate	
  Size	
  =	
  	
  0,	
  1,	
  2,	
  3,	
  5,	
  8,	
  13,	
  20,	
  40	
  and	
  100.	
  	
  
 Fetch	
  a	
  user	
  story	
  which	
  seems	
  smallest	
  size	
  and	
  set	
  size	
  to	
  2.	
  
 Compare	
  user	
  stories	
  with	
  others	
  and	
  define	
  these	
  size.	
  
13
レビュー後	
  
 (抜粋)
Introduction of Agile programmer Skills



Agile Fundamental Skill Set




  Produced by Tsuyoshi Ushio
Agile Fundamental Skill Set

In this presentation, you will …	
•  learn about Agile technical skill set in 90 min.
•  Know about book recommendations.
•  Watch demonstration of TDD.

What will you do?	
•  Make some teams (4 people in each team)
•  Think about important agile skills and build your future skill set.
•  Write your ideas and share these.


Ranking	
           Everybody must have
           A Team should have
           A Team may have
Mission #1 Mandatory Skills (5min)
Discuss	
  with	
  Team	
  members	
  about	
  …	
  




 ・What	
  skills	
  do	
  you	
  need	
  as	
  an	
  agile	
  programmer?	
  

                   Please	
  share	
  your	
  team’s	
  opinions.	
  Discuss	
  and	
  write	
  down	
  and	
  share.
Agile Practice Overview
                                          Goal	
                                    Business	
  Value	
  
                                 Customer	
  SaOsfacOon	
  
                                   Market	
  CreaOon	



  CollaboraOon	
  ,	
  
       Team	
                                                  Technical	
  PracOce	
  	

             Scrum	
                                        Engineering	
  pracOce	
  (XP)	
  
      VisualizaOon	
                                         ConOnuous	
  IntegraOon	
  
     RetrospecOve	
                                           ConOnuous	
  Delivery	
  
           IteraOon	
                                    Automated	
  Build	
  /	
  Test	
  /	
  Deploy	
  
Daily	
  Standup	
  MeeOng	
                                    Version	
  Control	
  
    Human	
  /	
  Mind	
                                       TDD	
  /	
  Refactoring	
  


                      Reference	
  this	
  blog	
  and	
  customize	
  it.	
  
                      hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html
Five Knowledge Areas




1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
1. Designing & Programming



           TDD	
  (Test	
  Driven	
  Development)	




         Refactoring	
               Good	
  Design	




Refactoring and Good Design support TDD
Test Driven Development
•      Test-driven development is a software development technique that
       uses really short development cycles to incrementally design your
       software.


        Test	
  Driven	
  Development	
                                                       NoOce	
  :	
  you	
  should	
  not	
  execute	
  add	
  funcOon	
  and	
  refactoring	
  on	
  the	
  same	
  Ome.	




     Write Test	
                         Fail	
                         Write Code	
                                            Success	

                        Refresh the Design	
                                                   Refactoring	




21
Refactoring
•      Refactoring is the art of safety improving the design of existing code.


                             Planed	
  Design	
                                                                             EvoluOonal	
  Design	

     AJer	
  the	
  design	
  ,	
  implement	
  it.	
                                            Small	
  design	
  ,Small	
  implementaOon,	
  small	
  refactoring.	



                                                                                                                                                                         design	




                Design	
                                Programming	
                                                                                                          Add	
  funcOon	
  
                                                                                                            Refactoring	
                                                                                                                                                                               Add	
  tests	


 Before	
                                                                                    AJer	
• If	
  the	
  soJware	
  design	
  changes,	
  the	
  design	
  is	
  ge]ng	
  worse.	
     • If	
  the	
  soJware	
  design	
  changes,	
  the	
  design	
  is	
  sOll	
  smart.	
  
• Cannot	
  embrace	
  change	
                                                              • Embrace	
  change	
  
• It	
  takes	
  too	
  much	
  Ome	
  for	
  analyze	
  and	
  design.	
                    • It	
  takes	
  small	
  amount	
  of	
  Ome	
  for	
  analyze	
  and	
  design.	
  


                                                                                                     Point	
  
                                                                                                     	
  	
  	
  	
  1.	
  Basic	
  skill	
  of	
  design	
  is	
  same.	
  
                                                                                                     	
  	
  	
  	
  2.	
  Automate	
  Test	
  
                                                                                                     	
  	
  	
  	
  3.	
  Learn	
  about	
  Refactoring	
  catalog	
22
Good Design
•    Agile Programmer has an ability to think some good designs.


         TDD	
  /	
  Refactoring	

                                     Simple	
  Design	



                                                  Design	
  Principles	
  
          Clean	
  Programming	
                                                     /	
  PaAerns	



                                       Architecture	
23
Simple Design
If you keep it simple, you will get …
    Easy to change, Less time, Easy to Understand it.
    We can t predict the future



                      XP	
  Simplicity	
  Rules	


                        Run	
  all	
  the	
  tests.	

     Express	
  every	
  idea	
  that	
  we	
  need	
  to	
  express	

          Say	
  everything	
  Once	
  And	
  Only	
  Once	

                  Has	
  no	
  superfluous	
  parts	
                                                                              Extreme	
  Prgramming	
  Explained:	
  
                                                                              	
  	
  	
  Embrace	
  Change	
  –	
  Kent	
  Beck	
                                   hAp://c2.com/xp/XpSimplicityRules.html	



24
              OOP	
  (Object	
  Oriented	
  Programming)
Clean Programming
Poorly written code is hard to understand and hard to evolve,
making code base more expensive to maintain.




                            Avoid	
  Generic	
  Names	
  Like	
  
                                 	
  tmp	
  and	
  retval	

             var euclidean_norm = function (v) {
             for (var i = 0; I < v.length; i += 1)
                    retval += v[i] + v[i];
              return Math.sqrt(retval);
             };	

                               The	
  Art	
  of	
  Readable	
  Code:DusOn	
  Boswell,	
  Trevor	
  Foucher	
  
                                                                                                                 The	
  Art	
  of	
  Readable	
  Code:	
  
                                                                                                                 DusOn	
  Boswell,	
  Trevor	
  Foucher	
  
     Instead	
  of	
  retval	
  you	
  should	
  use	
  sum_squares	
  
     Because	
  it	
  would	
  show	
  the	
  meaning	
  of	
  the	
  variable	
  
25
Estimating
Estimate user stories on the product backlog using relative estimation.




                                      Planning	
  Poker	




                                                                                                           Agile	
  EsOmaOng	
  and	
  Planning	
  
                                                                                                           Mike	
  Corn	
  




 EsOmate	
  Size	
  =	
  	
  0,	
  1,	
  2,	
  3,	
  5,	
  8,	
  13,	
  20,	
  40	
  and	
  100.	
  	
  
 Fetch	
  a	
  user	
  story	
  which	
  seems	
  smallest	
  size	
  and	
  set	
  size	
  to	
  2.	
  
 Compare	
  user	
  stories	
  with	
  others	
  and	
  define	
  these	
  size.	
  
26
日本語元ネタ	
  
 (抜粋)
テスト駆動開発
•    プログラムに必要な各機能について、最初にテストを書き、そのテストが
     動作する最低限の実装を行った後、コードを洗練させるという短い工程を
     繰り返す開発方法

     テスト駆動開発イメージ	
                              注:機能追加と、リファクタリングを同時に行わないことがポイントです	




 テストコード作成	
      テスト失敗	
             コーディング	
         テスト成功	

            設計改善を定期的に	
              実施する	
                           設計改善

                          (リファクタリング)	




28
リファクタリング
•     外部から見た時の振る舞いを保ちつつ、理解や修正が簡単になるように、
      ソフトウェアの内部構造を変化させること

                先行型設計	
                                進化型設計	

     最初にじっくり設計を考え、その後プログラミングする	
    少し設計、少し機能追加、リファクタリングを繰り返す	



                                                                         少し設計	




         設計	
         プログラミング	
                                             少し機能追加	
  
                                         リファクタリング	
                                                                            少しテスト追加	

 Before	
                          AJer	
     • ソフトウェアの変更によって設計が崩れる	
       • ソフトウェアの変更後も設計が崩れない	
  
     • 想像しなかった変更に弱い	
              • 変化が前提であり、変更に強い	
  
     • 分析/設計に時間がかかる	
              • 分析/設計はシンプルに実施するので時間が	
  
                                   	
  かからない	
  

                                      導入のPoint	
  
                                      	
  	
  	
  	
  1.	
  必要な基本リテラシは先行型設計と同じ	
  
                                      	
  	
  	
  	
  2.	
  自動テストがあること	
  
                                      	
  	
  	
  	
  3.	
  	
  リファクタリングのイメージを知る事	
29

Weitere ähnliche Inhalte

Was ist angesagt?

Android Studio vs Eclipse: What are the main differences?
Android Studio vs Eclipse: What are the main differences?Android Studio vs Eclipse: What are the main differences?
Android Studio vs Eclipse: What are the main differences?avocarrot
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsDominik Dary
 
Automated UI Testing for Web and Native Apps on iOS and Android
Automated UI Testing for  Web and Native Apps on iOS and AndroidAutomated UI Testing for  Web and Native Apps on iOS and Android
Automated UI Testing for Web and Native Apps on iOS and AndroidOperation Mobile
 
Agile Testing at eBay
Agile Testing at eBayAgile Testing at eBay
Agile Testing at eBayDominik Dary
 
MOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous DeliveryMOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous Deliveryanistar sung
 
A journey with Target Platforms
A journey with Target PlatformsA journey with Target Platforms
A journey with Target PlatformsMickael Istria
 
Best Practices in Mobile Game Testing
Best Practices in Mobile Game TestingBest Practices in Mobile Game Testing
Best Practices in Mobile Game TestingBitbar
 
Introduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing ToolsIntroduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing Toolsi_am_craig
 
Introduction to Android Studio
Introduction to Android StudioIntroduction to Android Studio
Introduction to Android StudioMichael Pan
 
利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試Jeremy Kao
 
Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?Bitbar
 
How to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App TestingHow to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App TestingBitbar
 
Exercising and Scaling Up Mobile DevOps in the Enterprise
Exercising and Scaling Up Mobile DevOps in the EnterpriseExercising and Scaling Up Mobile DevOps in the Enterprise
Exercising and Scaling Up Mobile DevOps in the EnterpriseBitbar
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedElizabeth Quinn-Woods
 
Android Automation Using Robotium
Android Automation Using RobotiumAndroid Automation Using Robotium
Android Automation Using RobotiumMindfire Solutions
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentationBitbar
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybookChen Feldman
 

Was ist angesagt? (19)

Android Studio vs Eclipse: What are the main differences?
Android Studio vs Eclipse: What are the main differences?Android Studio vs Eclipse: What are the main differences?
Android Studio vs Eclipse: What are the main differences?
 
Implementing Test Automation in Agile Projects
Implementing Test Automation in Agile ProjectsImplementing Test Automation in Agile Projects
Implementing Test Automation in Agile Projects
 
Automated UI Testing for Web and Native Apps on iOS and Android
Automated UI Testing for  Web and Native Apps on iOS and AndroidAutomated UI Testing for  Web and Native Apps on iOS and Android
Automated UI Testing for Web and Native Apps on iOS and Android
 
Agile Testing at eBay
Agile Testing at eBayAgile Testing at eBay
Agile Testing at eBay
 
MOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous DeliveryMOPCON 2015 - Tips of Mobile Continuous Delivery
MOPCON 2015 - Tips of Mobile Continuous Delivery
 
A journey with Target Platforms
A journey with Target PlatformsA journey with Target Platforms
A journey with Target Platforms
 
Best Practices in Mobile Game Testing
Best Practices in Mobile Game TestingBest Practices in Mobile Game Testing
Best Practices in Mobile Game Testing
 
Introduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing ToolsIntroduction to Mobile-UI Automated Testing Tools
Introduction to Mobile-UI Automated Testing Tools
 
Introduction to Android Studio
Introduction to Android StudioIntroduction to Android Studio
Introduction to Android Studio
 
利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試
 
Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?Do You Enjoy Espresso in Android App Testing?
Do You Enjoy Espresso in Android App Testing?
 
How to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App TestingHow to Leverage Appium in Your Mobile App Testing
How to Leverage Appium in Your Mobile App Testing
 
Exercising and Scaling Up Mobile DevOps in the Enterprise
Exercising and Scaling Up Mobile DevOps in the EnterpriseExercising and Scaling Up Mobile DevOps in the Enterprise
Exercising and Scaling Up Mobile DevOps in the Enterprise
 
Rft courseware
Rft coursewareRft courseware
Rft courseware
 
Coding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever ChangedCoding With JRebel - Java Forever Changed
Coding With JRebel - Java Forever Changed
 
Android Automation Using Robotium
Android Automation Using RobotiumAndroid Automation Using Robotium
Android Automation Using Robotium
 
Fight back android fragmentation
Fight back android fragmentationFight back android fragmentation
Fight back android fragmentation
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybook
 
BCS Selenium Workshop
BCS Selenium WorkshopBCS Selenium Workshop
BCS Selenium Workshop
 

Andere mochten auch

Sleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep BetterSleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep BetterScott Britton
 
The power of digital assessment
The power of digital assessmentThe power of digital assessment
The power of digital assessmentJay Ashcroft
 
What Happens at School Stays on YouTube
What Happens at School Stays on YouTubeWhat Happens at School Stays on YouTube
What Happens at School Stays on YouTubePaul Brown
 
The Creative Classroom
The Creative ClassroomThe Creative Classroom
The Creative ClassroomJohn Spencer
 
OnLab Japan introduction to Lean Analytics
OnLab Japan introduction to Lean AnalyticsOnLab Japan introduction to Lean Analytics
OnLab Japan introduction to Lean AnalyticsLean Analytics
 
Debot android debugging library
Debot android debugging libraryDebot android debugging library
Debot android debugging libraryTomoaki Imai
 
Build Less Patterns AgileRoots 2014
Build Less Patterns AgileRoots 2014Build Less Patterns AgileRoots 2014
Build Less Patterns AgileRoots 2014Tsuyoshi Ushio
 
DevOps Practices: Configuration as Code
DevOps Practices:Configuration as CodeDevOps Practices:Configuration as Code
DevOps Practices: Configuration as CodeDoug Seven
 
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixConfiguration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixJustin Ryan
 

Andere mochten auch (10)

Sleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep BetterSleep Hacks: How to Sleep Better
Sleep Hacks: How to Sleep Better
 
The power of digital assessment
The power of digital assessmentThe power of digital assessment
The power of digital assessment
 
What Happens at School Stays on YouTube
What Happens at School Stays on YouTubeWhat Happens at School Stays on YouTube
What Happens at School Stays on YouTube
 
The Creative Classroom
The Creative ClassroomThe Creative Classroom
The Creative Classroom
 
OnLab Japan introduction to Lean Analytics
OnLab Japan introduction to Lean AnalyticsOnLab Japan introduction to Lean Analytics
OnLab Japan introduction to Lean Analytics
 
Debot android debugging library
Debot android debugging libraryDebot android debugging library
Debot android debugging library
 
Build Less Patterns AgileRoots 2014
Build Less Patterns AgileRoots 2014Build Less Patterns AgileRoots 2014
Build Less Patterns AgileRoots 2014
 
DevOps Practices: Configuration as Code
DevOps Practices:Configuration as CodeDevOps Practices:Configuration as Code
DevOps Practices: Configuration as Code
 
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixConfiguration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
 
8 Tips for an Awesome Powerpoint Presentation
8 Tips for an Awesome Powerpoint Presentation8 Tips for an Awesome Powerpoint Presentation
8 Tips for an Awesome Powerpoint Presentation
 

Ähnlich wie プレゼンビフォアアフタ

Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAudrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAgile Lietuva
 
Agile Fundamental Skill Set
Agile Fundamental Skill SetAgile Fundamental Skill Set
Agile Fundamental Skill SetTsuyoshi Ushio
 
Ravit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in AgileRavit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in AgileAgileSparks
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme ProgrammingNaresh Jain
 
Amy.stapleton
Amy.stapletonAmy.stapleton
Amy.stapletonNASAPMC
 
Organizational agility
Organizational agilityOrganizational agility
Organizational agilitytoriat123
 
Agile developers create their own identity by Ajay Danait
Agile developers create their own identity by Ajay DanaitAgile developers create their own identity by Ajay Danait
Agile developers create their own identity by Ajay DanaitXebia IT Architects
 
Agile Introduction
Agile IntroductionAgile Introduction
Agile IntroductionAdrian Smith
 
Agile Anti-Patterns. Yes your agile projects can and will fail too.
Agile Anti-Patterns. Yes your agile projects can and will fail too.Agile Anti-Patterns. Yes your agile projects can and will fail too.
Agile Anti-Patterns. Yes your agile projects can and will fail too.Sander Hoogendoorn
 
Endava Career Days Jan 2012 - Analysis And Architecture in Endava - How do w...
Endava Career Days Jan 2012  - Analysis And Architecture in Endava - How do w...Endava Career Days Jan 2012  - Analysis And Architecture in Endava - How do w...
Endava Career Days Jan 2012 - Analysis And Architecture in Endava - How do w...Endava
 
Endava Career Days Jan 2012 Analysis and Architecture in Endava
Endava Career Days Jan 2012 Analysis and Architecture in EndavaEndava Career Days Jan 2012 Analysis and Architecture in Endava
Endava Career Days Jan 2012 Analysis and Architecture in EndavaFlorin Cardasim
 
Lanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMLanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMDebora Di Piano
 
Practices of an agile developer
Practices of an agile developerPractices of an agile developer
Practices of an agile developerDUONG Trong Tan
 
Lean & agile 101 for Astute Entrepreneurs
Lean & agile 101 for Astute EntrepreneursLean & agile 101 for Astute Entrepreneurs
Lean & agile 101 for Astute EntrepreneursClaudio Perrone
 
Estimation Agile Projects
Estimation Agile ProjectsEstimation Agile Projects
Estimation Agile ProjectsRam Srivastava
 
Nailing It Down: Detailed Design to Preserve the UX Vision
Nailing It Down: Detailed Design to Preserve the UX VisionNailing It Down: Detailed Design to Preserve the UX Vision
Nailing It Down: Detailed Design to Preserve the UX Visionjsokohl
 

Ähnlich wie プレゼンビフォアアフタ (20)

Audrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme ProgrammingAudrys Kažukauskas - Introduction into Extreme Programming
Audrys Kažukauskas - Introduction into Extreme Programming
 
The Agile PMP v2
The Agile PMP v2The Agile PMP v2
The Agile PMP v2
 
Agile Fundamental Skill Set
Agile Fundamental Skill SetAgile Fundamental Skill Set
Agile Fundamental Skill Set
 
Ravit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in AgileRavit Danino HP - Roles and Collaboration in Agile
Ravit Danino HP - Roles and Collaboration in Agile
 
Introduction to Extreme Programming
Introduction to Extreme ProgrammingIntroduction to Extreme Programming
Introduction to Extreme Programming
 
Amy.stapleton
Amy.stapletonAmy.stapleton
Amy.stapleton
 
Organizational agility
Organizational agilityOrganizational agility
Organizational agility
 
Agile developers create their own identity by Ajay Danait
Agile developers create their own identity by Ajay DanaitAgile developers create their own identity by Ajay Danait
Agile developers create their own identity by Ajay Danait
 
Agile meets waterfall
Agile meets waterfallAgile meets waterfall
Agile meets waterfall
 
Agile Introduction
Agile IntroductionAgile Introduction
Agile Introduction
 
Agile Anti-Patterns. Yes your agile projects can and will fail too.
Agile Anti-Patterns. Yes your agile projects can and will fail too.Agile Anti-Patterns. Yes your agile projects can and will fail too.
Agile Anti-Patterns. Yes your agile projects can and will fail too.
 
Endava Career Days Jan 2012 - Analysis And Architecture in Endava - How do w...
Endava Career Days Jan 2012  - Analysis And Architecture in Endava - How do w...Endava Career Days Jan 2012  - Analysis And Architecture in Endava - How do w...
Endava Career Days Jan 2012 - Analysis And Architecture in Endava - How do w...
 
Endava Career Days Jan 2012 Analysis and Architecture in Endava
Endava Career Days Jan 2012 Analysis and Architecture in EndavaEndava Career Days Jan 2012 Analysis and Architecture in Endava
Endava Career Days Jan 2012 Analysis and Architecture in Endava
 
Agile
AgileAgile
Agile
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
 
Lanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALMLanzamiento Visual Studio 2012 - Modern ALM
Lanzamiento Visual Studio 2012 - Modern ALM
 
Practices of an agile developer
Practices of an agile developerPractices of an agile developer
Practices of an agile developer
 
Lean & agile 101 for Astute Entrepreneurs
Lean & agile 101 for Astute EntrepreneursLean & agile 101 for Astute Entrepreneurs
Lean & agile 101 for Astute Entrepreneurs
 
Estimation Agile Projects
Estimation Agile ProjectsEstimation Agile Projects
Estimation Agile Projects
 
Nailing It Down: Detailed Design to Preserve the UX Vision
Nailing It Down: Detailed Design to Preserve the UX VisionNailing It Down: Detailed Design to Preserve the UX Vision
Nailing It Down: Detailed Design to Preserve the UX Vision
 

Mehr von Tsuyoshi Ushio

ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話Tsuyoshi Ushio
 
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話Tsuyoshi Ushio
 
Serverless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャServerless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャTsuyoshi Ushio
 
"サーバーレス"を超越する。なぜ?から理解する Durable Functions
"サーバーレス"を超越する。なぜ?から理解する Durable Functions"サーバーレス"を超越する。なぜ?から理解する Durable Functions
"サーバーレス"を超越する。なぜ?から理解する Durable FunctionsTsuyoshi Ushio
 
三年後のエンジニアがもっているとお得な資質
三年後のエンジニアがもっているとお得な資質三年後のエンジニアがもっているとお得な資質
三年後のエンジニアがもっているとお得な資質Tsuyoshi Ushio
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルTsuyoshi Ushio
 
Visual Studio Team Services を使った Serverless のための継続的デリバリ
Visual Studio Team Services を使った Serverless のための継続的デリバリVisual Studio Team Services を使った Serverless のための継続的デリバリ
Visual Studio Team Services を使った Serverless のための継続的デリバリTsuyoshi Ushio
 
Container microservices
Container microservicesContainer microservices
Container microservicesTsuyoshi Ushio
 
Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real WorldRakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real WorldTsuyoshi Ushio
 
技術と度胸のミニワークショップ InfoQで英語学習
技術と度胸のミニワークショップ InfoQで英語学習技術と度胸のミニワークショップ InfoQで英語学習
技術と度胸のミニワークショップ InfoQで英語学習Tsuyoshi Ushio
 
A New Business Model of Custom Software Development For Agile Software Develo...
A New Business Model of Custom Software Development For Agile Software Develo...A New Business Model of Custom Software Development For Agile Software Develo...
A New Business Model of Custom Software Development For Agile Software Develo...Tsuyoshi Ushio
 
ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法Tsuyoshi Ushio
 
Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)Tsuyoshi Ushio
 
How to be an agile programmer.
How to be an agile programmer.How to be an agile programmer.
How to be an agile programmer.Tsuyoshi Ushio
 
アジャイルツアー大阪
アジャイルツアー大阪アジャイルツアー大阪
アジャイルツアー大阪Tsuyoshi Ushio
 
Java festa2011(改訂中)
Java festa2011(改訂中)Java festa2011(改訂中)
Java festa2011(改訂中)Tsuyoshi Ushio
 
英語勉強法の法則
英語勉強法の法則英語勉強法の法則
英語勉強法の法則Tsuyoshi Ushio
 

Mehr von Tsuyoshi Ushio (20)

ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話
 
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
 
Serverless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャServerless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャ
 
"サーバーレス"を超越する。なぜ?から理解する Durable Functions
"サーバーレス"を超越する。なぜ?から理解する Durable Functions"サーバーレス"を超越する。なぜ?から理解する Durable Functions
"サーバーレス"を超越する。なぜ?から理解する Durable Functions
 
三年後のエンジニアがもっているとお得な資質
三年後のエンジニアがもっているとお得な資質三年後のエンジニアがもっているとお得な資質
三年後のエンジニアがもっているとお得な資質
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキル
 
Visual Studio Team Services を使った Serverless のための継続的デリバリ
Visual Studio Team Services を使った Serverless のための継続的デリバリVisual Studio Team Services を使った Serverless のための継続的デリバリ
Visual Studio Team Services を使った Serverless のための継続的デリバリ
 
Agile overview
Agile overviewAgile overview
Agile overview
 
Container microservices
Container microservicesContainer microservices
Container microservices
 
Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real WorldRakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real World
 
技術と度胸のミニワークショップ InfoQで英語学習
技術と度胸のミニワークショップ InfoQで英語学習技術と度胸のミニワークショップ InfoQで英語学習
技術と度胸のミニワークショップ InfoQで英語学習
 
英語のリズム
英語のリズム英語のリズム
英語のリズム
 
A New Business Model of Custom Software Development For Agile Software Develo...
A New Business Model of Custom Software Development For Agile Software Develo...A New Business Model of Custom Software Development For Agile Software Develo...
A New Business Model of Custom Software Development For Agile Software Develo...
 
ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法
 
Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)
 
How to be an agile programmer.
How to be an agile programmer.How to be an agile programmer.
How to be an agile programmer.
 
Ultimate agilisttokyo
Ultimate agilisttokyoUltimate agilisttokyo
Ultimate agilisttokyo
 
アジャイルツアー大阪
アジャイルツアー大阪アジャイルツアー大阪
アジャイルツアー大阪
 
Java festa2011(改訂中)
Java festa2011(改訂中)Java festa2011(改訂中)
Java festa2011(改訂中)
 
英語勉強法の法則
英語勉強法の法則英語勉強法の法則
英語勉強法の法則
 

プレゼンビフォアアフタ

  • 2. Elementary バカにされてる   気分になる A presentation for elementary programmers of Agile Agile Fundamental Skill Set Produced by Tsuyoshi Ushio
  • 3. Agile Fundamental Skill Set In this presentation, you will … •  learn about Agile technical skill set in 90 min. •  Know about book recommendations. •  Watch demonstration of TDD. What will you do? •  Make some teams (4 people in each team) •  Think about important agile skill set for you. •  Write your ideas and share these. Ranking You should learn it now! You can learn it. Development Team should cover it.
  • 4. Mission #1 Mandatory Skills (5min) Discuss  with  Team  members  about  …   受動態多用   日本人っぽい   ・What  skills  are  needed  for  agile  programmers?   Please  tell  me  your  opinions.  Discuss  and  write  down  and  share.
  • 5. Agile Practice Overview Goal Business  Value   国によっては   Customer  SaOsfacOon   敏感! Market  CreaOon LeJ  Wing Right  Wing CollaboraOon  ,   Team   Technical  PracOce   Scrum   Engineering  pracOce  (XP)   VisualizaOon   ConOnuous  IntegraOon   RetrospecOve   ConOnuous  Delivery   IteraOon   Automated  Build  /  Test  /  Deploy   Daily  Standup  MeeOng   Version  Control   Human  /  Mind   TDD  /  Refactoring   Reference  this  blog  and  customize  it.   hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html
  • 6. Five Knowledge Areas 新規作成   ページ例 1. Designing & Programming 2. Testing 3. Team and behaviors 4. Structuring Work 5. Environment
  • 7. 1. Designing & Programming 新規作成   ページ例 TDD  (Test  Driven  Development) Refactoring Good  Design Refactoring and Good Design support TDD
  • 8. Test Driven Development •  Test-driven development is a software development technique that uses really short development cycles to incrementally design your software. 日本語元ネタ   ありの例 Test  Driven  Development NoOce  :  you  should  not  execute  add  funcOon  and  refactoring  on  the  same  Ome. Write Test Fail Write Code Success Refresh the Design Refactoring 8
  • 9. Refactoring •  Refactoring is the art of safety improving the design of existing code. Planed  Design EvoluOonal  Design AJer  the  design  ,  implement  it. Small  design  ,Small  implementaOon,  small  refactoring. design Design Programming Add  funcOon   Refactoring Add  tests Before AJer • If  the  soJware  design  changes,  the  design  is  ge]ng  worse.   • If  the  soJware  design  changes,  the  design  is  sOll  smart.   • Cannot  embrace  change   • Embrace  change   • It  takes  too  much  Ome  for  analyze  and  design.   • It  takes  small  amount  of  Ome  for  analyze  and  design.   Point   日本語元ネタ          1.  Basic  skill  of  design  is  same.   あり例。ダサイ        2.  Automate  Test          3.  Learn  about  Refactoring  catalog 9
  • 10. Good Design 新規作成例 •  Agile Programmer has an ability to think some good designs. TDD  /  Refactoring Simple  Design Design  Principles   Clean  Programming /  PaAerns Architecture 10
  • 11. Simple Design If you keep it simple, you will get … 新規作成例 Easy to change, Less time, Easy to Understand it. We can t predict the future Beck’s  4  rules  of  simple  design Pass  all  tests Contains  no  duplicaOons Express  the  intent  of  the  programmers Minimizes  the  number  of  classes  and  methods Extreme  Prgramming  Explained:        Embrace  Change  –  Kent  Beck hAp://theholyjava.wordpress.com/2011/02/14/clean-­‐code-­‐four-­‐simple-­‐design-­‐rules/ 11 OOP  (Object  Oriented  Programming)
  • 12. Clean Programming Poorly written code is hard to understand and hard to evolve, 新規作成例 making code base more expensive to maintain. Avoid  Generic  Names  Like    tmp  and  retval var euclidean_norm = function (v) { for (var i = 0; I < v.length; i += 1) retval += v[i] + v[i]; return Math.sqrt(retval); }; The  Art  of  Readable  Code:DusOn  Boswell,  Trevor  Foucher   The  Art  of  Readable  Code:   DusOn  Boswell,  Trevor  Foucher   Instead  of  retval  you  should  use  sum_squares   Because  it  would  show  the  meaning  of  the  variable   12
  • 13. Estimating Estimate user stories on the product backlog using relative estimate. 恥ずかしい文法   ミス指摘の例 Planning  Poker Agile  EsOmaOng  and  Planning   Mike  Corn   EsOmate  Size  =    0,  1,  2,  3,  5,  8,  13,  20,  40  and  100.     Fetch  a  user  story  which  seems  smallest  size  and  set  size  to  2.   Compare  user  stories  with  others  and  define  these  size.   13
  • 15. Introduction of Agile programmer Skills Agile Fundamental Skill Set Produced by Tsuyoshi Ushio
  • 16. Agile Fundamental Skill Set In this presentation, you will … •  learn about Agile technical skill set in 90 min. •  Know about book recommendations. •  Watch demonstration of TDD. What will you do? •  Make some teams (4 people in each team) •  Think about important agile skills and build your future skill set. •  Write your ideas and share these. Ranking Everybody must have A Team should have A Team may have
  • 17. Mission #1 Mandatory Skills (5min) Discuss  with  Team  members  about  …   ・What  skills  do  you  need  as  an  agile  programmer?   Please  share  your  team’s  opinions.  Discuss  and  write  down  and  share.
  • 18. Agile Practice Overview Goal Business  Value   Customer  SaOsfacOon   Market  CreaOon CollaboraOon  ,   Team   Technical  PracOce   Scrum   Engineering  pracOce  (XP)   VisualizaOon   ConOnuous  IntegraOon   RetrospecOve   ConOnuous  Delivery   IteraOon   Automated  Build  /  Test  /  Deploy   Daily  Standup  MeeOng   Version  Control   Human  /  Mind   TDD  /  Refactoring   Reference  this  blog  and  customize  it.   hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html
  • 19. Five Knowledge Areas 1. Designing & Programming 2. Testing 3. Team and behaviors 4. Structuring Work 5. Environment
  • 20. 1. Designing & Programming TDD  (Test  Driven  Development) Refactoring Good  Design Refactoring and Good Design support TDD
  • 21. Test Driven Development •  Test-driven development is a software development technique that uses really short development cycles to incrementally design your software. Test  Driven  Development NoOce  :  you  should  not  execute  add  funcOon  and  refactoring  on  the  same  Ome. Write Test Fail Write Code Success Refresh the Design Refactoring 21
  • 22. Refactoring •  Refactoring is the art of safety improving the design of existing code. Planed  Design EvoluOonal  Design AJer  the  design  ,  implement  it. Small  design  ,Small  implementaOon,  small  refactoring. design Design Programming Add  funcOon   Refactoring Add  tests Before AJer • If  the  soJware  design  changes,  the  design  is  ge]ng  worse.   • If  the  soJware  design  changes,  the  design  is  sOll  smart.   • Cannot  embrace  change   • Embrace  change   • It  takes  too  much  Ome  for  analyze  and  design.   • It  takes  small  amount  of  Ome  for  analyze  and  design.   Point          1.  Basic  skill  of  design  is  same.          2.  Automate  Test          3.  Learn  about  Refactoring  catalog 22
  • 23. Good Design •  Agile Programmer has an ability to think some good designs. TDD  /  Refactoring Simple  Design Design  Principles   Clean  Programming /  PaAerns Architecture 23
  • 24. Simple Design If you keep it simple, you will get … Easy to change, Less time, Easy to Understand it. We can t predict the future XP  Simplicity  Rules Run  all  the  tests. Express  every  idea  that  we  need  to  express Say  everything  Once  And  Only  Once Has  no  superfluous  parts Extreme  Prgramming  Explained:        Embrace  Change  –  Kent  Beck hAp://c2.com/xp/XpSimplicityRules.html 24 OOP  (Object  Oriented  Programming)
  • 25. Clean Programming Poorly written code is hard to understand and hard to evolve, making code base more expensive to maintain. Avoid  Generic  Names  Like    tmp  and  retval var euclidean_norm = function (v) { for (var i = 0; I < v.length; i += 1) retval += v[i] + v[i]; return Math.sqrt(retval); }; The  Art  of  Readable  Code:DusOn  Boswell,  Trevor  Foucher   The  Art  of  Readable  Code:   DusOn  Boswell,  Trevor  Foucher   Instead  of  retval  you  should  use  sum_squares   Because  it  would  show  the  meaning  of  the  variable   25
  • 26. Estimating Estimate user stories on the product backlog using relative estimation. Planning  Poker Agile  EsOmaOng  and  Planning   Mike  Corn   EsOmate  Size  =    0,  1,  2,  3,  5,  8,  13,  20,  40  and  100.     Fetch  a  user  story  which  seems  smallest  size  and  set  size  to  2.   Compare  user  stories  with  others  and  define  these  size.   26
  • 28. テスト駆動開発 •  プログラムに必要な各機能について、最初にテストを書き、そのテストが 動作する最低限の実装を行った後、コードを洗練させるという短い工程を 繰り返す開発方法 テスト駆動開発イメージ 注:機能追加と、リファクタリングを同時に行わないことがポイントです テストコード作成 テスト失敗 コーディング テスト成功 設計改善を定期的に 実施する 設計改善
 (リファクタリング) 28
  • 29. リファクタリング •  外部から見た時の振る舞いを保ちつつ、理解や修正が簡単になるように、 ソフトウェアの内部構造を変化させること 先行型設計 進化型設計 最初にじっくり設計を考え、その後プログラミングする 少し設計、少し機能追加、リファクタリングを繰り返す 少し設計 設計 プログラミング 少し機能追加   リファクタリング 少しテスト追加 Before AJer • ソフトウェアの変更によって設計が崩れる   • ソフトウェアの変更後も設計が崩れない   • 想像しなかった変更に弱い   • 変化が前提であり、変更に強い   • 分析/設計に時間がかかる   • 分析/設計はシンプルに実施するので時間が    かからない   導入のPoint          1.  必要な基本リテラシは先行型設計と同じ          2.  自動テストがあること          3.    リファクタリングのイメージを知る事 29