agile software development

14

Click here to load reader

Upload: thatchaphol-saranurak

Post on 28-Oct-2014

25 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Agile Software Development

Agile Software Development: case of small team and small project

เกริ่��นแม้�บทความ้นี้�จะเขียนี้ขี��นี้เพื่��อเสนี้อว�ธีการพื่�ฒนี้าซอฟต์ แวร ขีนี้าดเล็#ก

แบบ Agile แต์%ผม้ต์�องขีอออกต์�วก%อนี้ว%าขี�อเสนี้อส%วนี้ใหญ่%นี้��นี้เก�ดจากจากส�งเคราะห ขี�อม้+ล็ท�ศึ�กษาม้าจากแหล็%งต์%างๆ ผม้ย�งไม้%ได�ทดล็องว�ธีการเหล็%านี้�ด�วยต์�วเอง ด�งนี้��นี้ความ้ถู+กต์�องขีองขี�อเสนี้อเหล็%านี้�ย%อม้ถู+กจ1าก�ดด�วยความ้ค�ดความ้เขี�าใจไม้%ใช่%ประสบการณ์ ต์รง

อย%างไรก#ต์าม้ผม้เองได�ม้ประสบการณ์ การพื่�ฒนี้าซอฟต์ แวร ท�แบบไม้% Agile ม้าพื่อสม้ควรแล็ะประสบป5ญ่หาต์%างๆ ท�เก�ดจากความ้ไม้% Agile นี้� สาเหต์6ใหญ่%ท�ผม้เขียนี้บทความ้นี้�ขี��นี้ก#เพื่��อเป7นี้สร6ปแนี้วทางว�ธีการพื่�ฒนี้าซอฟต์ แวร ส1าหร�บต์�วเองในี้งานี้คร��งถู�ดๆ ไปเพื่��อไม้%ให�พื่บก�บป5ญ่หาเหล็%านี้��นี้อก ด�งนี้��นี้หากขี�อเสนี้อต์%างๆ ในี้บทความ้นี้�สาม้ารถูล็ดป5ญ่หาในี้การพื่�ฒนี้าซอฟต์ แวร ขีองผ+�อ%านี้ได�บ�างก#ถู�อว%าบทความ้นี้�ได�ประสบความ้ส1าเร#จเก�นี้จ6ดประสงค ขีองม้�นี้แล็�วคร�บ

ทำ�ควมริ่ �จั�ก Agility

การพื่�ฒนี้าซอฟต์ แวร แบบ Agile เป7นี้แนี้วค�ดเก�ดขี��นี้ไม้%นี้านี้นี้�นี้� �นี้ค�อป8 ค.ศึ. 20011 หล็�งจากนี้��นี้ก#ม้การให�ค1าอธี�บายผ%านี้เว#บไซต์ แล็ะหนี้�งส�อม้ากม้าย แต์%ความ้หม้ายขีอง Agility ท�ผม้ค�ดว%าเป7นี้การสร6ปความ้ท�ดแล็ะขีอยกม้าในี้ท�นี้�ค�อ

1 Jim Highsmith, “History: The Agile Manifesto,” http://agilemanifesto.org/history.html

1

Page 2: Agile Software Development

"The ability to move faster than those things that can harm your project…" 2

Agility ค�อความ้สาม้ารถูในี้การจ�ดการความ้เปล็�ยนี้แปล็งก%อนี้นี้�ความ้เปล็�ยนี้แปล็งนี้��นี้จะส%งผล็เสยต์%องานี้ขีองเรานี้��นี้เอง

เราสาม้ารถูส�งเกต์ได�ว%าความ้เปล็�ยนี้แปล็งในี้วงการพื่�ฒนี้าซอฟต์ แวร นี้��นี้เก�ดขี��นี้ในี้หล็ายระด�บพื่ร�อม้ๆ ก�นี้ ต์��งแต์%การเปล็�ยนี้แปล็งท�เก�ดขี��นี้จากต์�วเราเอง (แก�บ�9กโปรแกรม้) จากผ+�ใช่�/ล็+กค�า (เปล็�ยนี้ Requirement)

แล็ะจากโล็กภายนี้อก (เปล็�ยนี้ OS ภาษา เทคโนี้โล็ยใหม้%ๆ ท6กป8) ด�วยความ้ถู�แล็ะความ้หล็ากหล็ายขีองความ้เปล็�ยนี้แปล็งนี้�เองเป7นี้เหต์6ผล็หล็�กท�ท1าให�การท1างานี้แบบ Agile ม้ความ้จ1าเป7นี้ก�บคนี้ในี้วงการพื่�ฒนี้าซอฟต์ แวร ม้ากกว%าในี้วงการอ��นี้ๆ

ตริ่ง 1 เปริ่�ยบเทำ�ยบควมเปลี่��ยนแปลี่งในริ่ะดั�บต�งๆ ในแต�ลี่ะวงกริ่3

ควมเปลี่��ยนแปลี่ง

จักผู้ �ทำ�งน(ทำ�งนผู้�ดัพลี่ดั บ�!ก)

จักลี่ กค�/ผู้ �ใช้�(เปลี่��ยนฟี$เจัอริ่& / Requirement)

จักโลี่กภยนอก(ควมริ่ �ใหม� ทำ�กษะใหม�ๆ )

กริ่ก�อสริ่�ง X - -

กริ่ออกแบบกริ่ฟีฟี,ค

X X -

กริ่พ�ฒนซอฟีต&แวริ่&

X X X

2 Dan Rawsthorne, “rup_xp_scrum_pc_030326_ppt.pdf (application/pdf Object),” March 26, 2003, 20, http://www.netobjectives.com/files/events/download/rup_xp_scrum_pc_030326_ppt.pdf3 ในี้งานี้ก%อสร�างหล็�งจากท�ท1าการสร6ปแบบแปล็นี้ก�บล็+กค�าแล็�วเม้��อเร��ม้งานี้ก#ย%อม้ไม้%ม้การเปล็�ยนี้แบบกล็างค�นี้ แล็ะเทคโนี้โล็ยใหม้%ๆ ท�ใช่�การในี้งานี้ก%อสร�างก#เก�ดขี��นี้ไม้%บ%อยนี้�ก เช่%นี้เดยวก�บงานี้ออกแบบกราฟฟ<ค จากการสอบถูาม้คนี้ท1างานี้พื่บว%าส%วนี้ใหญ่%ใช่�โปรแกรม้ต์ระก+ล็ Adobe ม้านี้านี้ ความ้ร+ �ใหม้%ๆ ท�ต์�องปร�บต์�วจะปร�บไปต์าม้ร6 %นี้ขีองโปรแกรม้ท�ใช่�ซ��งก#เปล็�ยนี้ไปในี้แต์%ล็ะร6 %นี้ไม้%ม้ากแล็ะไม้%ถู�

2

Page 3: Agile Software Development

เข้�ส � Agility

ทม้ท�จะสาม้ารถูท1างานี้แบบ Agile จ1าเป7นี้ต์�องม้จ6ดม้6%งหม้ายท�จะท1างานี้ให�ส1าเร#จท�ต์รงก�นี้ก%อนี้4 นี้��นี้ค�อม้ความ้กล็�า ความ้กระต์�อร�อร�นี้ แล็ะเป<ดกว�างท�จะร�บความ้ค�ดใหม้%ๆ ม้�ฉะนี้��นี้ขี�อปฏิ�บ�ต์�ต์%างๆ จะกล็�บสร�างความ้ล็�ม้เหล็วม้ากขี��นี้

แล็ะต์%อไปนี้�ค�อขี�อเสนี้อต์%างๆ ซ��งออกแบบม้าส1าหร�บทม้พื่�ฒนี้าซอฟต์ แวร งานี้ซเนี้ยร โปรเจค (เป7นี้ซอฟต์ แวร ขีนี้าดเล็#ก ทม้ไม้%เก�นี้ 4 คนี้ ระยะเวล็างานี้ไม้%เก�นี้ 1 ป8) อย%างไรก#ต์าม้ ผม้เช่��อว%าขี�อเสนี้อเหล็%านี้�สาม้ารถูประย6กต์ ใช่�ในี้สถูานี้การณ์ อ��นี้ๆ ได�

Release ถี่��เดั1อนลี่ะคริ่�2งการพื่�ฒนี้าซอฟต์ แวร ให�สาม้ารถูออกเวอร ช่��นี้ท�ใช่�งานี้ได�ต์��งแต์%เนี้��นี้ๆ

ม้ประโยช่นี้ ในี้หล็ายๆ ด�านี้

1. แก�ป5ญ่หาการ Integration แล็ะ Deployment ได�ต์��งแต์%ป5ญ่หาย�งเล็#ก เพื่ราะการ release แต์%ล็ะรอบเป7นี้การต์รวจสอบป5ญ่หาด�งกล็%าว แล็ะท1าให�เก�ดความ้ม้��นี้ใจได�ว%าถู�าส6ดท�ายม้ป5ญ่หาด�านี้การ Integration หร�อ Deployment เราย�งสาม้ารถูนี้1าเอางานี้เวอร ช่��นี้ก%อนี้ม้าใช่�ได�

2. ประส�ทธี�ภาพื่ด�านี้เวล็า การออกเวอร ช่��นี้ในี้แต์%ล็ะเวอร ช่��นี้นี้��นี้เราจะบ�งค�บให�เราค�ด

ท1าแต์%ส��งท�ส1าค�ญ่ท�ส6ดในี้เวล็าท�เหล็�อ

4 สาม้ารถูศึ�กษาว�ธีการสร�างแนี้วค�ดเพื่��อเร��ม้ต์�นี้ Agile ได�จาก Venkat Subramaniam and Andy Hunt, Practices of an Agile Developer: Working in the Real World (Pragmatic Bookshelf, 2006), 11

3

Page 4: Agile Software Development

การแบ%งเวอร ช่��นี้ย%อยๆ ท1าให�เราม้องเห#นี้เป?าหม้ายท�อย+%ไม้%ไกล็ แล็ะเก�ดแรงผล็�กด�นี้ในี้การท1างานี้ท�ม้องเห#นี้เป?าหม้ายใกล็�ๆ

3. ประเม้�นี้ผล็งานี้ได�บ%อย เพื่ราะแต์%ล็ะรอบท� release ความ้ร+ �ความ้เขี�าใจในี้เก�ยวก�บโปรเจคเราจะเพื่��ม้ขี��นี้ม้ากกว%าก%อนี้เร��ม้งานี้ท�ย�งไม้%เห#นี้ภาพื่อย+%ม้าก เราสาม้ารถูนี้1าความ้เขี�าใจต์รงนี้�ไปใช่�ในี้การออกแบบรายล็ะเอยดหร�อเพื่��ม้/ล็ดความ้ส1าค�ญ่ในี้ประเด#นี้ต์%างๆ (เช่%นี้ การเพื่��ม้ประส�ทธี�ภาพื่การจ�ดการหนี้%วยความ้จ1าแล็ะล็ดความ้เร#ว)

ความ้ม้��นี้ใจว%างานี้จะไม้%เสยในี้ต์อนี้ส6ดท�ายในี้ต์อนี้ Deployment

แล็ะการเห#นี้งานี้ค%อยๆ ก�าวหนี้�าขี��นี้ท6กๆ เด�อนี้จะท1าให�เราท1างานี้อย%างม้ความ้สนี้6กม้ากขี��นี้

ส��งท�ควรท1าเพื่��อให�สาม้ารถู release ได�อย%างสะดวกม้ากขี��นี้ค�อการท1า automation installer เพื่��อให�ทดสอบการ deployment ได�อย%างรวดเร#ว

Design แค�ภพริ่วมเพ1�ออ�นก�นเองการออกแบบส��งท�ไม้%ท1าไม้%ได� เพื่ราะการพื่�จารณ์าเปรยบเทยบขี�อดขี�อ

เสยขีองโครงสร�างขีองระบบแล็ะความ้ส�ม้พื่�นี้ธี ระหว%างส%วนี้ย%อยขีองระบบนี้��นี้ จะท1าให�เราเก�ดความ้เขี�าใจในี้งานี้ขีองเราม้ากขี��นี้

แต์%ถู�าเราออกแบบไปถู�งรายล็ะเอยด Method, data type,

parameters หร�อล็1าด�บการท1างานี้ต์%างๆ ท�แนี้%ช่�ด เราจะพื่บว%าส��งท�ออกแบบไว�ย�งดไม้%พื่อเม้��อเขียนี้โค�ดจร�งไปถู�งส%วนี้ท�ออกแบบไว� เพื่ราะเม้��อได�เขียนี้โค�ดเราจะม้ความ้เขี�าใจในี้งานี้ม้ากขี��นี้ม้าก โดยเฉพื่าะในี้งานี้ท�ใช่�

4

Page 5: Agile Software Development

เทคโนี้โล็ยท�ย�งไม้%ค6�นี้เคยม้าก%อนี้ เราจ�งไม้%ควรเสยเวล็าออกแบบอย%างล็ะเอยดหร�อท1าเอกสารท�เป7นี้ทางการไปกว%าเขียนี้คร%าวๆ ล็งกระดาษหร�อไวท บอร ดต์��งแต์%เร��ม้ต์�นี้งานี้

การออกแบบท�ควรม้ล็�กษณ์ะด�งนี้�

1. ก1าหนี้ดเพื่ยงท�ศึทางในี้การพื่�ฒนี้า เช่%นี้ พื่�จารณ์า Class ท�นี้%าจะม้แล็ะระบ6ช่��อ หนี้�าท� แล็ะความ้ส�ม้พื่�นี้ธี ก�บ Class อ��นี้ในี้งานี้ต์%างๆ 5

2. Reversibility นี้��นี้ค�อสาม้ารถูแก�ปร�บเปล็�ยนี้ส%วนี้ต์%างๆ ในี้ภายหล็�งได�โดยกระทบต์%อระบบอ��นี้ๆ เพื่ยงเล็#กนี้�อย

3. Simple นี้��นี้ค�อไม้%ท1างานี้อะไรเก�นี้จากส��งท�จ1าเป7นี้ เพื่��อใช่�เวล็าอย%างม้ประส�ทธี�ภาพื่

เข้�ยน Test

นี้�กพื่�ฒนี้าซอฟต์ แวร จ1านี้วนี้ม้ากปฏิ�เสธีการเขียนี้ Test ด�วยเหต์6ผล็ต์%างๆ แต์%ท�จร�งแล็�วการ Test ไม้%ว%าจะเขียนี้ก%อนี้หร�อหล็�งการโปรแกรม้ นี้��นี้ม้ผล็ต์%อความ้ส1าเร#จในี้หล็ายๆ ด�านี้ ได�แก%

1. เพื่��ม้ค6ณ์ภาพื่ Code

ช่%วยล็ดบ�9กในี้โปรแกรม้ เป7นี้ผล็โดยต์รง เราสาม้ารถู refactor code ได�โดยไม้%เสยเวล็าต์รวจ

สอบบ�9กเอง แก�บ�9กได�เร#วขี��นี้ เพื่ราะม้ Test คอยบอกอาการ

2. เพื่��ม้ค6ณ์ภาพื่ Design

ถู�าเราเขียนี้ Design ก%อนี้ Test เม้��อพื่บว%า method

ใด Test ล็1าบากแสดงว%า method นี้��นี้ซ�บซ�อนี้เก�นี้ไป

5 ว�ธีการออกแบบนี้�เรยกว%า CRC Design Method

5

Page 6: Agile Software Development

ถู�าเราเขียนี้ Test ก%อนี้ Design6 เราม้�กจะ Design ได�งานี้ท�ไม้%ซ�บซ�อนี้เก�นี้การใช่�งานี้จร�ง (เหม้�อนี้ท�การออกแบบโดยเร��ม้ด�วยออฟเจคม้�กจะเป7นี้)

3. เพื่��ม้ค6ณ์ภาพื่ Document เพื่ราะ Test ท�ดจะส��อถู�งการท1างานี้ขีอง method นี้��นี้อย%างครอบคล็6ม้เราสาม้ารถูเอา ขี�อม้+ล็ Test ไปท1าเอกสารได�ด

เคร��องม้�อในี้การเขียนี้ Test ในี้ม้อย+%ในี้เก�อบท6กภาษาให�เล็�อกใช่� เคร��องม้�อหล็�กท�ใช่� Test ได�แก% Unit Test ใช่� Test ส%วนี้ท�ไม้%ม้ side-

effect หร�อไม้%เก�ยวขี�องก�บส%วนี้อ��นี้ๆ แล็ะเขียนี้ Mock เพื่��อ Test ส%วนี้ท�จ1าเป7นี้ต์�องต์�ดต์%อก�บส%วนี้อ��นี้ๆ

20%

80%

ส�วนส�ดัข้องเวลี่ทำ��ใช้�โดัยเฉลี่��ย ข้องโปริ่เจัคทำ��วไป(ทำ��ไม�เข้�ยน Test)

New codeMaintenance & Debugging

7

การเขียนี้ Test ท1าให�เราทราบป5ญ่หาแล็ะเขี�าไปแก�ได�เร#วขี��นี้ม้าก ต์��งแต์%ต์อนี้เขียนี้ Test เสร#จแล็ะหร�อต์อนี้ refactor ในี้ภายหล็�ง แล็ะย�งเก�ดผล็พื่ล็อยได�ท�ค1าค�ญ่ท��งในี้ด�านี้ design แล็ะ documentation

6 นี้��นี้ค�อเทคนี้�ค TDD หร�อ Test-Driven Development นี้��นี้เอง7 Kate Rhodes, “Testing 101,” November 8, 2007, 26, http://www.masukomi.org/talks/unit_testing_talk_2/index.xul?data=slide_data.txt#page26

6

Page 7: Agile Software Development

เข้�ยน Code ให�เอไปใช้�ต�อง�ยโปรแกรม้แต์%ล็ะส%วนี้ท�เราเขียนี้หนี้��งคร��ง จะถู+กอ%านี้ต์%อหล็ายต์%อหล็าย

คร��ง โดยเฉพื่าะเวล็าท1างานี้เป7นี้ทม้ การล็งท6นี้ให�เวล็าก�บการ Coding ให�สะอาดแล็ะสวยงาม้หนี้��งคร��งจ�งค6�ม้ค%าเม้��อเทยบก�บผล็ท�สาม้ารถูเพื่��ม้ประส�ทธี�ภาพื่ในี้การ maintain code ได�เป7นี้อย%างด ซ��งหล็�กการเขียนี้ Code โดยย%อม้ด�งนี้�

1. อ%านี้ง%าย code ให�เขี�าใจว%าโปรแกรม้ส%วนี้นี้� ท1าอะไร ได�เองโดย“ ”

ไม้%ต์�องอ%านี้ comment

comment ให�เขี�าใจว%าโปรแกรม้ส%วนี้นี้� ม้เพื่��ออะไร“ ” (ในี้หล็ายๆ แพื่ล็ต์ฟอร ม้เราสาม้ารถูท1า documentation จาก comment ได�อ�ต์�โนี้ม้�ต์� เช่%นี้ .NET ใช่% nDoc Java ใช่� Javadoc)

ใช่� enum

ไม้% quick hack ให�โปรแกรม้ท1างานี้ได�โดย +1 -1 โดยผ+�อ%านี้ไม้%สาม้ารถูเขี�าใจได�

ไม้%พื่ยายาม้เขียนี้ให�ด+ฉล็าดหร�อเนี้�นี้ด�านี้ประส�ทธี�ภาพื่เก�นี้ไปจนี้อ%านี้ได�ยาก

2. Test ง%าย แยกส%วนี้ท�เป7นี้ query(ส%วนี้ท�ให�สถูานี้ะขีองออปเจค)

ออกจาก command(ส%วนี้ท�เปล็�ยนี้แปล็งสถูานี้ะขีองออปเจค) แล็ะ query จะต์�องไม้%ม้ side-effect ก�บส%วนี้อ��นี้ ท1าให� Test ง%าย

7

Page 8: Agile Software Development

เขียนี้ Class ท�เล็#กไม้%ซ�บซ�อนี้หร�อร�บหนี้�าท�หล็ายอย%าง method แต์%ล็ะ method ควรท1างานี้แค%อย%างเดยวในี้ระด�บขีอง abstraction นี้��นี้ๆ

3. Debug ง%าย Handle หร�อ propagate exception ให�ครอบคล็6ม้

(ไม้%ท1าการ catch ว%างเปล็%าท��งไว�) ใส% error message ท�เป7นี้ประโยช่นี้ เอาไว�ในี้

exception เพื่��อทราบสาเหต์6ขีองป5ญ่หาอย%างรวดเร#ว เราอาจแยกประเภทขีอง error message เพื่��อให�ทราบ

ว�ธีร�บม้�อก�บป5ญ่หาท�เก�ดขี��นี้ ได�แก%i. Program defects ผ+�พื่�ฒนี้าต์�องกล็�บไปแก�

โปรแกรม้เท%านี้��นี้ii. Environment problems ผ+�ด+แล็ระบบ

สาม้ารถูแก�ไขีได�iii. User Error ไม้%ต์�องแก�ไขีใดๆ ผ+�ใช่�เพื่ยงใส%ค%าใหม้%

ในี้ร+ปแบบท�ถู+กต์�องขี�อปฏิ�บ�ต์�เหล็%าจะช่%วยเพื่��ม้ประส�ทธี�ภาพื่ในี้การ maintain โปรแกรม้

แล็ะท1าให�ไม้%เก�ดปรากฏิการณ์ ท�ท6กคนี้ค6�นี้เคย นี้��นี้ค�อ แก�ย�งไงก#ได� อย%า“

เขี�าไปแต์ะ class/method นี้��นี้”

ตมทำ�นควมเปลี่��ยนแปลี่งดั�วยกริ่ส1�อสริ่ในี้การพื่�ฒนี้าซอฟต์ แวร แบบท�ไม้% Agile ใช่�ล็งท6นี้ในี้การท1า

documentation ท�สม้บ+รณ์ ต์��งแต์%ต์�นี้เพื่��อใช่�เป7นี้เคร��องม้�อส��อสารในี้การท1างานี้ให�ต์รงก�นี้ในี้ทม้ แต์%เราจะเห#นี้ได�ว%าการออกแผนี้งานี้ท�ล็ะเอยดเก�นี้ไปต์��งแต์%แรกม้โอกาสส+งท�จะพื่บว%าควรเปล็�ยนี้แผนี้เพื่��อค6ณ์ภาพื่ท�ดขี��นี้หร�อ

8

Page 9: Agile Software Development

แผนี้ใช่�ไม้%ได� จ�งพื่�ฒนี้าซอฟต์ แวร แบบ Agile จ�งหล็กเล็�ยงการท1า documentation ท�ในี้อนี้าคต์จะไม้%ได�ใช่�

ผล็ท�ต์าม้ม้าค�อเราจ1าเป7นี้ต์�องม้เทคนี้�คการส��อสารแบบอ��นี้ๆ ท�สาม้ารถูสร�างความ้เขี�าใจให�ต์รงก�นี้ได�เก�ยวก�บแผนี้งานี้แล็ะรายล็ะเอยดขีองงานี้ได�เหม้�อนี้เอกสาร ขีณ์ะท�ม้ความ้ย�ดหย6%นี้สาม้ารถูเปล็�ยนี้แปล็งได�ต์ล็อดเวล็า แล็ะม้ประส�ทธี�ภาพื่ส+ง

เทคนี้�คในี้การส��อสารแบบ Agile เช่%นี้

Stand up meeting ค�อการประช่6ม้ท�ก1าหนี้ดให�เจอหนี้�าก�นี้เป7นี้ประจ1า เช่%นี้ อาท�ต์ย ล็ะ 2 คร��ง โดยในี้ท�ประช่6ม้ท6กคนี้จะต์�องย�นี้เพื่��อเป7นี้กล็ว�ธีให�ท6กคนี้ใช่�เวล็าพื่+ดค6ยอย%างม้ประส�ทธี�ภาพื่ โดยส��งท�ท6กคนี้ต์�องพื่+ดค�อการต์อบค1าถูาม้ 3 ขี�อค�อI. ก%อนี้เขี�าประช่6ม้ได�ท1าอะไรไปบ�างII. จะท1าอะไรให�บ�างก%อนี้ประช่6ม้คร��งต์%อไปIII. การท�ท1าม้าม้ป5ญ่หาอะไรเก�ดขี��นี้บ�าง เวล็าในี้การประช่6ม้ไม้%เก�นี้ควรคนี้ล็ะ 3 นี้าท อย%างไรก#ต์าม้สาม้ารถูนี้�ดค6ยเพื่��ม้เต์�ม้เพื่��อขี�อความ้ช่%วยเหล็�อหร�อรายล็ะเอยดหล็�ง stand up meeting ได�

Project Management Software โดยในี้ท�นี้�จะขีอแนี้ะนี้1า PivotalTrakcer8 เพื่ราะเป7นี้เคร��องม้�อท�ออกแบบม้าเม้��อการพื่�ฒนี้าซอฟต์ แวร แบบ Agile ม้ขี�อดต์%างๆ ด�งนี้�I. สนี้�บสนี้6นี้การ Design ให�เป7นี้ส�ดส%วนี้แล็ะเล็#กด�วยการ

แบ%งงานี้เป7นี้ user story

8 www.pivotaltracker.com

9

Page 10: Agile Software Development

II. สนี้�บสนี้6นี้ให�ให�ความ้ส1าค�ญ่ก�บงานี้ท�เก�ดประโยช่นี้ จร�งต์%อผ+�ใช่� ด�วยการไม้%ให�แต์�ม้การท1างานี้ก�บงานี้ท�ไม้%เก�ดประโยช่นี้ ต์%อผ+�ใช่� หร�องานี้แก�บ�9กขีองต์�วเอง

III. สนี้�บสนี้6นี้การ review code

IV. สาม้ารถูประเม้�นี้ความ้เร#วในี้การท1างานี้แล็ะช่%วยแสดงแนี้วโนี้�ม้ท�จะท1างานี้เสร#จท1าก1าหนี้ดการ

ริ่ ป 1 ต�วอย�งกริ่ใช้�งนบน PivotalTracker

Mailing list เพื่��อใช่�ส%งประเด#นี้ขี�อม้+ล็ต์%างๆ เพื่��อให�สร�างความ้เขี�าใจแล็ะใช่�เป7นี้พื่��นี้ท�แช่ร ความ้ร+ � เช่%นี้ ส%ง CRC Design

แบบใหม้%ๆ ท�เขียนี้ใส%กระดาษแล็�วสแกนี้เขี�าม้า ส%งค1าอธี�บายหร�อล็�งค ว�ธีการแก�ป5ญ่หาท�คนี้ในี้ทม้ต์�องการ

Message ในี้ version control เป7นี้ส��งท�ควรท1าอย+%แล็�วเราใช่� Stand up meeting เพื่��อส��อสารเร��องความ้ค�บหนี้�าขีองงานี้

แล็ะคนี้ในี้ทม้ในี้ป5จจ6บ�นี้ ใช่� PivotalTracker เพื่��อส��อสารภาพื่รวม้ขีองความ้ค�บหนี้�าต์��งแต์%อดต์จนี้ถู�งอนี้าคต์ แล็ะใช่� mailing list เพื่��อส��อสารแนี้วค�ดความ้ร+ �ความ้เขี�าใจเก�ยวก�บงานี้ท�ค%อยๆ ว�ว�ฒนี้าการต์าม้การท1างานี้ขีองเราไป

10

Page 11: Agile Software Development

11

Page 12: Agile Software Development

สริ่5ปผม้หว�งว%าบทความ้นี้�จะช่%วยท1าให�การพื่�ฒนี้าซอฟต์ แวร ขีองทม้ขีนี้าด

เล็#กท�พื่�ฒนี้าซอฟต์ แวร ขีนี้าดเล็#กม้ประส�ทธี�ภาพื่ท�ดขี��นี้หล็�งจากนี้1าเอาขี�อเสนี้อต์%างๆ ไปปฏิ�บ�ต์� แล็ะหว�งว%าจะช่%วยกระต์6�นี้ความ้สนี้ใจเก�ยวก�บการพื่�ฒนี้าซอฟต์ แวร แบบ Agile ให�ก�บท6กๆ คนี้ด�วย

เทคนี้�คการพื่�ฒนี้าซอฟต์ แวร แบบ Agile นี้��นี้ย�งม้อย+%อกม้าก9 ท�ไม้%ได�กล็%าวถู�งในี้บทความ้นี้� เช่%นี้ เทคนี้�คสร�างบรรยากาศึการท1างานี้ให�เหม้าะก�บการท1างานี้แบบ Agile, เทคนี้�คการต์าม้ให�ท�นี้เทคโนี้โล็ยท�เปล็�ยนี้แปล็งอย%างรวดเร#ว, ว�ธีการร�บม้�อการก�บการท1าจร�งก�บล็+กค�าท�ม้�กเปล็�ยนี้แปล็ง requirement หร�อการต์รวจสอบโปรแกรม้แบบ pair

programming เป7นี้ต์�นี้ เราสาม้ารถูค�ดเล็�อกเอาว�ธีการต์%างๆ เหล็%านี้�ม้าประย6กต์ ใช่�ต์าม้สภาพื่แวดล็�อม้ท�ต์%างก�นี้ (ขีนี้าดทม้ ขีนี้าดโปรเจค ล็�กษณ์ะองค กร) ได�อย%างเหม้าะสม้ในี้ร+ปแบบท�ต์%างๆ ก�นี้ได�10

ธี�ช่พื่ล็ ษรานี้6ร�กษ 9 ส�งหาคม้ 2552

9 ศึ�กษาเพื่��ม้เต์�ม้ได�ท� Venkat Subramaniam and Andy Hunt, Practices of an Agile Developer10 ศึ�กษาเพื่��ม้เต์�ม้ได�ท� Dan Rawsthorne, “Comparing/Combining RUP, XP and Scrum – mixing the Process Cocktail.”

12