[เสพแล้วเล่า] ตอนที่ 1 — Agile Software Development By Siam Chamnankit (SCK)
สวัสดีค่า บทความนี้ผู้เขียนจะมาบอกเล่าเรื่องราวที่ได้เรียนรู้ในเรื่องของ Agile Software Development ที่ได้รับมอบหมายให้ย้อนดูคลิปวิดีโอที่ได้มีการบันทึกเก็บไว้ใน youtube ของสยามชำนาญกิจ ซึ่งในนั้นก็จะมีหลากหลายเรื่องราวความรู้หรือประสบการณ์ที่พี่ ๆ ได้บอกเล่าไว้ใน youtube นี้ค่ะ มีเรื่องของการทดสอบซอฟต์แวร์ด้วยนะคะ สามารถตามไปเสพกันได้ค่ะ (ขออนุญาติแอบขายของค่า555)
warning! — บทความนี้เกิดขึ้นจากการทำความเข้าใจด้วยตัวของผู้เขียนเองเท่านั้น
Software Development หรือ การพัฒนา ตรวจสอบ ทดสอบ เพื่อส่งมอบผลลัพธ์จากซอฟต์แวร์
Needs (พูดหรือบอก, เขียน, เอกสาร) → Requirements Engineering or Requirements Development → Requirements → Analysis and Design (Software Architecture) → Software Specification or Blueprint → Implementation → Installation or Development → Release → Software Product
หรือจะเป็นดังรูป ด้านล่างนี้
Sequence Phases: Waterfall Model
เราเริ่มด้วยการมี Business Ideas แล้วไปจบที่ Business Goal ซึ่งจะต้องมีกลุ่มลูกค้า หรือ Customer(s) ทั้งระบบที่เริ่มใหม่ทั้งหมด หรือระบบที่เพิ่มจากของเดิมที่มีอยู่
การทำงานแบบ Waterfall Model จะถูกแบ่งออกเป็นส่วน ๆ แยกกัน จะต้องทำทีละส่วนให้เสร็จก่อนจึงจะไปทำส่วนต่อไปได้ เป็นการไหลแบบน้ำตก
Requirements → Analyst and Design → Coding → Testing → Acceptance Tests → Release
ซึ่ง Waterfall Model เป็นการทำงานที่คนส่วนใหญ่พบเจอกันอยู่แล้ว แต่ก็หนักหนาสาหัสพอสมควร ทำให้มีการทำงานที่เรียกว่า Agile เข้ามา
Agile Software Development
Agile ไม่ใช่การทำงานเป็น Sprint
การทำงานเป็น Sprint คือการใช้ Scrum เข้ามาช่วย จะเรียก Scrum ว่าเป็น Framework
และ Agile ไม่ได้แปลว่า ไว หรือ เร็ว
แต่แปลว่า คล่องตัว หรือ ความสามารถในการปรับเปลี่ยนได้อย่างคล่องตัว
Agile Software Development ประกอบไปด้วย
- Extreme Programming (XP) :: ควรหยิบขึ้นมาใช้เป็นอย่างยิ่ง
2. Scrum Framework :: มีการใช้งานเยอะมาก แต่ถ้าใน Software Development Scrum ไม่ได้บอกเอาไว้ว่าควรทำอย่างไร
3. Dynamic System Development Method (DSDM)
4. Crystal Family
5. Feature-Driven Development
Ref: Create Your Successful Agile Project (2007) By Johanna Rothman
ที่สยามชำนาญกิจจะใช้ 3 ระดับในการพัฒนาซอฟแวร์ ดังรูปนี้
ระดับแรกคือเรื่องของ Project Management ที่จะใช้ DSDM มาช่วยในเรื่องนี้ เราจะใช้บางอย่างจาก ซึ่งอีกสองระดับนั้นจะไม่แข็งแรงเท่า DSDM ในเรื่องของการบริหารคุมโครงการ
ระดับที่สองคือเรื่องของการใช้ Scrum Framework เข้ามาช่วยบริหารจัดการเวลาในกรอบเวลาสั้น ๆ จะได้เห็นว่าหนึ่งกรอบเวลาสั้น ๆ หรือที่เรียกว่า Sprint แต่ขอย้ำว่า Scrum ไม่ได้บอกว่าถ้าเป็น Software Development นั้นจะต้องทำอย่างไร
ระดับที่สามคือ วิธีปฏิบัติ หรือ เทคนิค จาก Extreme Programming (XP) ที่ Scrum ไม่มี
ดังนั้นเราจึงจะใช้การทำงานแบบ Scrum Framework แต่เลือก วิธีปฏิบัติ หรือ เทคนิค จาก Extreme Programming (XP)
เราจะทำการเปลี่ยนจาก Waterfall Model มาเป็นการทำงานแบบ Iterative and Incremental Development ซึ่งสิ่งนี้เป็นรากพื้นฐานของ 5 ข้อที่กล่าวไปข้างต้น
Iterative and Incremental Development
จะให้ความสำคัญกับการส่งมอบ Business Value เรื่อย ๆ ตามลำดับความสำคัญ
ยกตัวอย่างเช่น มีของที่ต้องส่งมอบทั้งหมด A-F และมี Business Goal ใหญ่
แนะนำให้แบ่งออกเป็น Business Goal เล็ก ๆ แล้วใช้เป็น Goal ของแต่ละรอบการทำงาน หรือ Iteration โดยใช้ระยะเวลาเท่า ๆ กัน ซึ่งเราจะทำการตรวจรับในทุก ๆ Iteration โดยเมื่อเราทำครบทุก Iteration แล้ว ก็จะถึงขั้นตอนการ Release
ตัวอย่างการแบ่งการทำงานออกเป็น 4 รอบการทำงาน ดังนี้
Project Management หรือ Release Management Framework — DSDM
Traditional Approach
- Feature (ปรับไม่ได้)
- Time (ปรับได้)
- Cost (ปรับได้)
- Quality
DSDM Approach
- Feature (ต้องบริหารและจัดการ)
- Time (ปรับไม่ได้)
- Cost (ปรับไม่ได้)
- Quality (ปรับไม่ได้)
Delivery Framework — The Sprint ของ Scrum Framework
Ref: Scrum Guide (2016) and (2020) By Ken Schwaber and Jeff Sutherland
ประโยคสำคัญ “Deliver the business outcome early and often in a fixed time box (iteration) on month or less”
ถูกออกแบบมาเพื่อ เราจะส่งมอบ Business outcome อย่างไร
ตัวอย่าง Output และ Outcome
ซื้อ หวย 1 คู่ → Output (ผลผลิต)
ถูกรางวัล → Outcome (ผลลัพธ์)
เช่นเดียวกันกับ
Requirements นำไปเข้า SDLC ออกมาเป็น Features
Features → Output (ผลผลิต)
ผลที่เกิดขึ้นจากการใช้งานจริง ๆ → Outcome (ผลลัพธ์)
ที่มาที่ไปของ Scrum Framework จากรากของ Iterative Development
Influences of Scrum มาจาก 4 อย่าง ดังนี้
- The New, New Product Development Game (จากงานวิจัยการทำงานของบริษัท Honda)
- Lean
- Iterative, Incremental Development
- Timeboxes
Iterative Development Model
คือ 1 วงรอบการทำงาน ที่มีกระบวนการในการพัฒานซอฟแวร์อยู่
- Planning: วางแผนว่าในรอบการทำงานจะมีงานอะไรบ้าง
- Requirements: ระบุความต้องการที่จะทำให้เสร็จได้ภายในระยะเวลาที่กำหนด
- Analysis & Design: ออกแบบระบบ
- Implementation: สร้างระบบ/เขียน Code
- Testing: ดำเนินการทดสอบ และแก้ Bug ให้เรียบร้อยในขั้นตอนนี้
- Evaluation: นำไปทดสอบโดยผู้ใช้งาน และ feedback จะถูกกลับส่งไปที่ Planning อีกครั้ง
Scrum จะเรียก 1 รอบการทำงานนี้ว่า Sprint ซึ่งโดยทั่วไปในรอบการทำงานจะไม่เกิน 1 เดือน หรือ 20 วันทำการ เช่น
- 1 Sprint เท่ากันกับ 5 วันทำการ
- 1 Sprint เท่ากันกับ 10 วันทำการ
- 1 Sprint เท่ากันกับ 15 วันทำการ
- 1 Sprint เท่ากันกับ 20 วันทำการ
ที่นิยมมากที่สุดก็คือ 1 Sprint เท่ากันกับ 10 วันทำการ
Note: เราไม่ได้ใช้ Scrum ที่ถูกสร้างมาเพื่อทำ Software Development แต่ Scrum ที่เราใช้กันอยู่นั้น ถูกปรับให้ใช้กับการทำงานอื่น ๆ
The Sprint
หนึ่งใน Influences ของ Scrum คือ Timeboxes
ดังนั้น สิ่งแรกที่ต้องกำหนดคือ กรอบเวลาใน 1 Sprint (Time-box) ว่าจะใช้เวลากี่วัน และระหว่าง (During) Sprint จะต้องมีการสร้างอะไรบางอย่างที่มีคุณสมบัติที่เรียกว่า เสร็จ (Done) และสามารถใช้งานได้ และพร้อมนำ Product ไปปล่อย (Releasable) เปิดขายหรือบริการ
The Sprint — Software Development
กำหนดระยะเวลา (Time-box): 1 Sprint เท่ากันกับ 10 วันทำการ
ระหว่าง Sprint (During): เท่ากันกับ วันที่ 2 — วันที่ 8 (วันที่ 9) ของ Sprint
Done (Definition of Done): กำหนดว่ามีอะไรบ้างที่ต้องเสร็จ
Usable: ซอฟต์แวร์สามารถใช้งานได้
ปล่อย Product (Releasable): Software Version ล่าสุด ติดตั้งอยู่ที่ UAT Environment หรือ Pre-Production Environment
Note: Definition of Done (DoD) คือการกำหนดว่าในระหว่างวันที่ 2 — วันที่ 8 (วันที่ 9) ของ Sprint จะต้องทำอะไรหรือเสร็จอะไรบ้าง (ใน Scrum ไม่มีข้อมูลนี้ให้) สามารถปรับเปลี่ยนเองได้
ตัวอย่าง Definition of Done (DoD)
ขอบคุณทุกคนที่เข้ามาอ่านนะคะ สามารถติดตามตอนที่ 2 ได้ในเร็ว ๆ นี้ค่าา 🥰✌🏻