Software/Product Integration Strategy

หลายคนอาจจะเจอคำถามแนวๆว่า เพิ่ม Feature นี้เข้าไป หรือ Deploy ระบบที่ละส่วน มันมีแนวคิดการ Integrate หรือ ป่าวนะ ที่เป็น Guideline หรือป่าวนะ สรุปมีแนวทาง โดยมี 4 กลยุทธ์ที่ใช้กัน ดังนี้ครับ

  • Big Bang
  • Incremental
    • Top-Down
    • Button-Up
    • Sandwich

1. Big Bang

  • Big Bang ไม่มีลำดับอะไร เมื่อทุกคนทำเสร็จให้เทรวม และทดสอบรวมกันเดียว
  • เหมาะกับ
    • งานที่ไม่มีความซับซ้อน หรือมีขนาดเล็ก เพราะ ถ้าพลาดนี้หนังชีวิตเลยครับ
    • แต่ต้องระวัง
      • เนื่องจากเป็นการเทรวม หายังไม่ได้ตกลง Interface (Internal / External) กันก่อน ทำให้เกิดปัญหาตอนเอาทุก Component / Sub-System แต่ละอันมารวมกัน
      • การทดสอบ หากมีข้อผิดพลาดเกิดขึ้น อาจจะทำให้หา Root-Cause ได้ยากขึ้น
  • ตัวอย่าง
    • Coding: การ Merge Feature ที่มี Dev ทำหลายๆคนกลับเข้าที่ Branch หลัก
    • System: การ Deploy ระบบคลังสินค้า ที่มีการเชื่อมกับระบบบัญชีพร้อมกัน

2. Incremental

  • Incremental มีการจัดลำดับ / ความสำคัญก่อนหลัง เช่น การทำ Core ขึ้นมาก่อน แล้วค่อยเพิ่ม Feature เข้าไปในแต่ละ Release
  • เหมาะกับ
    • งานที่มีขนาดใหญ่ จึงต้องแบ่งออกเป็น Component / Sub-System
    • แผนงานยืดหยุ่นได้ เพราะ ใช้เวลาเก็บข้อมูล เพื่อมาปรับตัวระบบที่ละนิดเล็กบ้าง ใหญ่บ้าง
    • สำหรับแนวทาง Incremental มี 3 รูปแบบ
    • Top-Up: พัฒนาจาก Component / Sub-System ที่อยู่ด้านบน และไล่ลอง ยกตัวอย่าง UI (Front-End) อยู่ด้านบนที่ต้องเรียกใช้งาน API (Web Service) ด้านล่าง แต่ระหว่างที่เราพัฒนา UI มันไม่มี API ดังนั้นต้องมีการทำ Stub / Mock เข้ามาช่วยเตรียมข้อมูลก่อน
    • ตัวอย่าง: ตอนทำ Component ของ UI_HOME ต้องเตรียม Stub ของ UI_A / UI_C / UI_D
    • Button-up: พัฒนาจาก Component / Sub-System ที่อยู่ด้านล่างไล่ขึ้นไป จากตัวอย่างของ Top-Down ที่มี UI (Front-End) กับ API (Web Service) คราวนี้ทีมพัฒนาเริ่มทำในส่วนของ API ขึ้นมาก่อน ส่วนของงานที่มาจาก UI ต้องทำ Driver เพื่อเข้ามาทดสอบ ถ้าในเคสนี้จะเป็นตัว API Tool อย่าง Post-Man ครับ
    • ตัวอย่าง: ตอนทำ Component ของ API_A ต้องเตรียม Drive ของ UI_A
    • Sandwich: เป็นการผสมระหว่าง Top-Up กับ Button-up เพราะถ้าไล่ทำที่ละจุดไปเรื่อยๆ จะใช้ระยะเวลาที่ยาวนาน และเปลืองทรัพยากรได้ เพราะต้องมาทำ Stub กับ Driver เลยมีการจัดกลุ่มของ Component / Sub-System ขึ้นมา และทำ Stub/Driver เท่าที่จะเป็น
    • ตัวอย่าง: จับกลุ่มของ UI_A / UI_B และ API_B มาเป็น Sandwich โดยเหลือเตรียม Driver UI_HOME และ Stub ของ API_A เท่านั้น
  • ตัวอย่าง
    • Coding: การตกลงการ Release Sub-Feature ในแต่ละเวอรชัน เช่น 8.7.17.0 ระบบ Core / 8.7.17.1 ส่วนการเดินรายการ / 8.7.17.3 ส่วนการออกรายงาน เป็นต้น
    • System: อาจจะมองเป็นการ Implement ระบบ ERP ขนาดใหญ่ โดยติดตั้งจาก Core และใช้งาน จากนั้นค่อยติดตั้ง Module อื่นๆ เพิ่มขึ้นมา

สรุป ไม่ว่าจะเลือกทางไหนต้องพิจารณา

  • เลือกทางไหนขึ้นกับ Skill ของทีมงานทุกคน
  • ขนาด และความซับซ้อนของระบบที่กำลังพัฒนา
  • รูปแบบ Software/Product Integration Strategy มีผลกับทางทดสอบระบบด้วยครับ

Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.