Software/Product Integration Strategy

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

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 sent to your email.