Tools, Management, Process สามเสาหลักของการพัฒนาระบบงาน

. Tuesday, September 29, 2009
  • Agregar a Technorati
  • Agregar a Del.icio.us
  • Agregar a DiggIt!
  • Agregar a Yahoo!
  • Agregar a Google
  • Agregar a Meneame
  • Agregar a Furl
  • Agregar a Reddit
  • Agregar a Magnolia
  • Agregar a Blinklist
  • Agregar a Blogmarks

ในการพัฒนาซอฟต์แวร์แบบ Agile นั้นยึดลูกค้าและผลงานเป็นหลัก รูปข้างล่างแสดงองค์ประกอบสำคัญซึ่งสามารถแบ่ง 3 ส่วนได้แก่
  1. Infrastructure และ Tools โครงสร้างพื้นฐานและเครื่องมือเพื่อใช้ในการพัฒนาระบบงาน

  2. Project Management การบริหารจัดการโครงการเพื่อให้โครงการดำเนินไปอย่างราบรื่น

  3. Development Process กระบวนการพัฒนาระบบงานเพื่อให้ผลงานมีคุณภาพตรงตามความต้องการ

โดยมีลูกค้าเป็นผู้ให้ความต้องการของซอฟต์แวร์ (รวมทั้งขอเปลี่ยนความต้องการด้วย) ทั้งนี้ Agile มี ความคิดว่า โดยธรรมชาติแล้วความต้องการของลูกค้าไม่มีทางสมบูรณ์และสามารถเปลี่ยนแปลง ได้อยู่ตลอดเวลา พวกเราในฐานะทีมพัฒนามีหน้าที่ผลิตซอฟต์แวร์ให้ตรงตามความต้องการของลูกค้า มากที่สุด ตรงตามกรอบเวลามากที่สุด และอยู่ในกรอบงบประมาณที่ประเมินไว้ (เรื่อง ความต้องการ เวลา งบประมาณ นี้เป็นเรื่องถกเถียงกันมากเรื่องหนึ่ง ไว้มีโอกาสจะขอแสดงความคิดเห็นครับ)

tpp

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 ที่ว่า

“We are what we repeatedly do. Excellence, then, is not act, but a habit”

เราจะเป็นอย่างที่เราทำอยู่ซ้ำๆ ผลงานยอดเยี่ยมไม่ได้เกิดจากการกระทำ แต่เกิดจากนิสัย

นั่น คือผลงานที่ยอดเยี่ยม ไม่ได้เกิดจากการทำชั่วครู่ชั่วคราว แต่เกิดจากทำซ้ำเรียนรู้สิ่งที่ดี เก็บไว้และทำให้เป็นนิสัย จากนั้นเสาะแสวงหาสิ่งใหม่เพื่อสร้างนิสัยที่ดีใหม่ต่อไป

2 comments:

Anonymous said...

Hi! I know this is somewhat off topic but I was wondering which blog
platform are you using for this website? I'm getting sick and tired of Wordpress because I've
had problems with hackers and I'm looking at options for another platform. I would be fantastic if you could point me in the direction of a good platform.

my web site; software openbox s9 Hd

Anonymous said...

What would make the Bowflex Revolution one of a kind is definitely the new patented
Spiraflex engineering, initially made for use in area, the place conventional pounds resistance won't get the job done.

Here is my webpage ... free weights for sale