พิมพ์หน้านี้
|
ในการพัฒนาซอฟต์แวร์แบบ Agile นั้นยึดลูกค้าและผลงานเป็นหลัก รูปข้างล่างแสดงองค์ประกอบสำคัญซึ่งสามารถแบ่ง 3 ส่วนได้แก่
โดยมีลูกค้าเป็นผู้ให้ความต้องการของซอฟต์แวร์ (รวมทั้งขอเปลี่ยนความต้องการด้วย) ทั้งนี้ Agile มีความคิดว่า โดยธรรมชาติแล้วความต้องการของลูกค้าไม่มีทางสมบูรณ์และสามารถเปลี่ยนแปลงได้อยู่ตลอดเวลา พวกเราในฐานะทีมพัฒนามีหน้าที่ผลิตซอฟต์แวร์ให้ตรงตามความต้องการของลูกค้ามากที่สุด ตรงตามกรอบเวลามากที่สุด และอยู่ในกรอบงบประมาณที่ประเมินไว้ (เรื่อง ความต้องการ เวลา งบประมาณ นี้เป็นเรื่องถกเถียงกันมากเรื่องหนึ่ง ไว้มีโอกาสจะขอแสดงความคิดเห็นครับ)
Infrastructure และ Toolsโครงสร้างพื้นฐานและเครื่องมือเป็นองค์ประกอบที่ช่วยให้นักพัฒนาสามารถทำงานได้ง่ายขึ้นสะดวก เริ่มจาก Development tools อย่างเช่น Open development platform อย่าง eclipse, library รวมถึง framework ต่างๆที่จะทำให้การเขียน code ง่าย สั้นและมีหลักการมากขึ้น ลูกค้าอาจมีส่วนร่วมในการนำเครื่องมือเหล่านี้มาใช้เพื่อช่วยให้งานพัฒนาและตรวจสอบระบบงานมีคุณภาพมากยิ่งขึ้น สำหรับ Project Life Cycle Tool อย่างเช่น Maven เป็นเครื่องมือช่วยในการบริหารวงจรชีวิตของการพัฒนาซอฟต์แวร์ตั้งแต่ สร้าง คอมไพล์ สร้างเอกสาร ติดตั้ง และนำไปใช้ ส่วน โดยมี Source Control tool อย่าง Subversion เป็น repositoryที่ให้ทีมพัฒนาสามารถรวบรวมและจัดเก็บ source code ของแต่ละคน และมี Build Control tool อย่างเช่น Cruise Control เป็นเครื่องมือช่วยในการ integrate source code ทั้งหมดเข้าด้วยกัน ทำการทดสอบทั้งระบบ และออกผลิตภัณฑ์ตามช่วงเวลาที่ต้องการ สำหรับ Track Issue Control อย่างเช่น trac เป็นเครื่องมือที่ใช้ช่วยในการบริหารรายการความต้องการ แผนงานพัฒนา รวมถึงรายงานข้อผิดพลาด ให้ทีมพัฒนาร่วมกันทำงาน เป็นเสมือนกระดานอิเล็กทรอนิกส์ในการแชร์ความรู้ต่างๆโครงการกัน ซึ่งลูกค้าสามารถร่วมเข้าแชร์ความรู้หรือตรวจสอบแผนงาน ความก้าวหน้าโครงการจากเครื่องมือนี้ Project Managementการบริหารจัดการโครงการเป็นวิธีการที่ใช้ในการจัดการและควบคุมกระบวนทำงานของทีมงานของโครงการให้สามารถพัฒนาซอฟต์แวร์ให้ทันตามกำหนดเวลา ในงบประมาณที่เหมาะสม และมีคุณภาพที่ยอมรับได้ ประกอบด้วย Team Setting ซึ่งเป็นการจัดทีมงานอย่างเหมาะสม เทคนิคการ Project Planning เพื่อให้ทีมงานรับทราบแนวทางและระยะเวลาในการส่งมอบงาน โดยลูกค้ามีส่วนร่วมในการกำหนดและจัดลำดับความสำคัญของงานที่ตนเองต้องการเพื่อให้ได้ผลงานที่ได้ประโยชน์สูงสุด Teem Meeting เป็นกระบวนการปรับปรุงวิธีการติดต่อสื่อสารภายในทีมงาน เพื่อให้ทีมงานทุกคนยังอยู่ในทิศทางที่ถูกต้อง ไม่ออกนอกทางจนเกินไป ลูกค้าเองควรมีส่วนร่วมในการตรวจสอบสถานะหรือให้ข้อมูลเพิ่มเติมในการปรับแต่งทิศทางการทำงาน XP Practices เป็นการรวบรวมเทคนิคต่างๆที่ใช้ในการแก้ไขปัญหาในสถานะการณ์ต่างๆที่เกิดขึ้นในกระบวนการพัฒนาซอฟต์แวร์ ส่วน Feedback Learning เป็นการวัดผลและนำมาปรับแต่งกระบวนการบริหารจัดการโครงการให้เหมาะสมและทันสมัยเสมอ Development Processกระบวนพัฒนาเริ่มจาก Requirement Gathering เป็นการเก็บรวบรวมความต้องการของลูกค้าเพื่อเป็นข้อมูลในการวิเคราะห์ เพื่อสร้าง Use-Case Stories และ GUI Prototype ซึ่งจะช่วยให้ลูกค้ามองเห็นภาพของระบบที่จะพัฒนาได้ง่ายขึ้น Layer Pattern Design เป็นแนวทางการออกแบบโดยแบ่งเป็นชั้นๆ แต่ละชั้นมี Interface ในการกำหนดวิธีการติดต่อระหว่างงชั้นเพื่อแยกให้แต่ละชั้นมีความเป็นอิสระจากกันให้มากที่สุด Test-Driven Development เป็นกระบวนการในการพัฒนาโดยเน้นที่การทำ Test เพื่อให้ได้ code ที่ตรงความต้องการมากที่สุด ลดการเขียน code ที่ไม่จำเป็น รวมถึงการได้ระบบทดสอบเพื่อให้ระบบสามารถทดสอบได้ตลอดเวลาเมื่อมีการเปลี่ยนแปลง ลูกค้าทำ User Acceptant Test (เรียกย่อว่า UAT) โดย ลูกค้าต้องเป็นคนกำหนดและทดสอบ UATเองเพื่อกำหนดความชัดเจนวิธีการตรวจสอบคุณภาพระบบ สุดท้าย (แต่ไม่ท้ายสุด) คือ Product Release เป็นการทำการ build ระบบที่ผ่านการทดสอบเพื่อส่งมอบให้ลูกค้าต่อไป ผลจากการทำงานครบรอบหากยังมีข้อผิดพลาดหรือการเปลี่ยนแปลง กระบวนการพัฒนาก็จะวนเข้าสู่รอบใหม่อีกครั้ง นี่คือกระบวนการพัฒนาระบบงานระดับองค์กรตามแนวความคิดของผม ที่ได้รวบรวมจากประสบการณ์ทำงานและความรู้จากแหล่งต่างๆเพื่อที่จะสร้างสไตล์การทำงานที่เหมาะสมกับองค์กรผม หลายเรื่องได้ทำไปแล้ว หลายเรื่องกำลังทำอยู่ และมีบางเรื่องก็เพิ่งเริ่มต้น (ยังหารูปแบบที่ชัดเจนยังไม่ได้) แต่สิ่งที่สำคัญที่สุดคือ Feedback Learning เรียนรู้และนำมาปรับปรุงแก้ไข สุดท้ายอยากฝากคำคมของ Aristotle นักปราชญ์ชาวกรีกที่มีความหมายใกล้เคียงกับ Feedback Learning ที่ว่า
|
| << | สิงหาคม 2007 | >> | ||||
| อา | จ | อ | พ | พฤ | ศ | ส |
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |