Spaghetti Driven Development มันเป็นอย่างไร ?
เป็นอีกหนึ่งวิธีการของการพัฒนา software !!
โดยมีขั้นตอนดังนี้
- เขียน code โครตแย่ออกมา
- ทำการ refactor code ให้ code ดีขึ้นและเข้าใจได้ง่ายขึ้น
- ทำการเขียนชุดการทดสอบ
เริ่มในยุค 80
เป็นยุคของ Spaghetti Driven Development นั่นคือเขียน code แย่ ๆ ยุ่งเหยิงออกมาก่อน จากนั้นทำการ refactor code จนกระทั่ง code เข้าใจได้ง่ายขึ้น และเขียน test ออกมา ถามว่า มี automated test ไหม ? ตอบได้เลยว่าไม่ ลองคิดถึงตัวเราเองตอนสมัยเรียนการเขียน program สิ คุณเรียนรู้ว่า จะเขียน code อย่างไรเท่านั้นใช่ไหม ?ต่อมาในยุค 80 ถึง 90
เริ่มมีตำแหน่ง Analyst/Programmer เพื่อทำการวิเคราะห์และออกแบบระบบ ก่อนเริ่มเขียน programg เล็กน้อย ซึ่งนี่คือจุดกำเนิดของ Small Up Front Design !! มีขั้นตอนการทำงานดังนี้- ทำการออกแบบระบบ
- ทำการเขียน program
- ทำการทดสอบแบบ manual
ต่อมาในยุค 90 ถึงปี 2000
เป็นยุคแห่ง Big Design Up Front !! เพราะว่ามีขั้นตอนจำนวนมาก รวมทั้งในแต่ละขั้นตอนเรามีตำแหน่ง และ แผนกแยกกันทำงาน เช่น- Business Analyst
- Software Analyst
- Programmer
- QA/Tester
- Database Administrator
- System Admin
ต่อมาในช่วงต้นของยุค 2000
เริ่มกลับไปสู่ Small Design Up Front กลับมาสู่การทำงานแบบเป็นรอบสั้น ๆ (Interative and Incremantal Development) แต่ยังเขียนชุดการทดสอบแบบอัตโนมัติหลังจากเขียน program เสร็จ มีขั้นตอนการทำงานดังนี้- เขียนโปรแกรม
- ทำการ refactor code
- ทำการเขียนชุดการทดสอบแบบอัตโนมัติ
มาถึงยุคปัจจุบันกันบ้าง
มีแนวคิดต่าง ๆ ที่ได้รับการยอมรับและนิยมนำมาใช้งาน ประกอบไปด้วย- Test-Driven Development (TDD)
- Behaviour-Driven Development (BDD)
- Acceptance Test-Driven Development (ATDD)
- เริ่มต้นจากการคิด และ เข้าใจภาพรวมของปัญหา
- ทำการพัฒนาเป็นรอบสั้น ๆ
- ก่อนที่จะเขียน program ให้เริ่มด้วยการเขียนชุดการทดสอบแบบอัตโนมัติ
- ทำการเขียน program เพื่อให้ชุดการทดสอบผ่าน
- ทำการ refactor code
- สนกลับไปเขียนชุดการทดสอบแบบอัตโนมัติใหม่
- วนแบบนี้ไปเรื่อย ๆ
สุดท้ายแล้ว TDD มันไม่ใช่สิ่งใหม่
แต่มันคือความสามารถที่นักพัฒนาทุกคนต้องมี และไม่ใช่สิ่งที่จะเอามาอ้างว่า ถ้าทำ TDD แล้วต้องใช้เวลาเพิ่ม !!!คำถามตอนนี้เราพัฒนา software กันแบบไหนระหว่าง Spaghetti Driven Development ? Test-Driven Development ?สรุปเนื้อหามาจากหนังสือ Test-Driven Development by Examples