[เสพแล้วเล่า] ตอนที่ 1 — Agile Software Development By Siam Chamnankit (SCK)

Nat Ketwadee
WeLoveBug dot Com
Published in
4 min readAug 16, 2023

สวัสดีค่า บทความนี้ผู้เขียนจะมาบอกเล่าเรื่องราวที่ได้เรียนรู้ในเรื่องของ 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

หรือจะเป็นดังรูป ด้านล่างนี้

Software Development

Sequence Phases: Waterfall Model

เราเริ่มด้วยการมี Business Ideas แล้วไปจบที่ Business Goal ซึ่งจะต้องมีกลุ่มลูกค้า หรือ Customer(s) ทั้งระบบที่เริ่มใหม่ทั้งหมด หรือระบบที่เพิ่มจากของเดิมที่มีอยู่

การทำงานแบบ Waterfall Model จะถูกแบ่งออกเป็นส่วน ๆ แยกกัน จะต้องทำทีละส่วนให้เสร็จก่อนจึงจะไปทำส่วนต่อไปได้ เป็นการไหลแบบน้ำตก

Requirements → Analyst and Design → Coding → Testing → Acceptance Tests → Release

ตัวอย่าง Sequence Phases: Waterfall Model

ซึ่ง Waterfall Model เป็นการทำงานที่คนส่วนใหญ่พบเจอกันอยู่แล้ว แต่ก็หนักหนาสาหัสพอสมควร ทำให้มีการทำงานที่เรียกว่า Agile เข้ามา

Agile Software Development

Agile ไม่ใช่การทำงานเป็น Sprint

การทำงานเป็น Sprint คือการใช้ Scrum เข้ามาช่วย จะเรียก Scrum ว่าเป็น Framework

และ Agile ไม่ได้แปลว่า ไว หรือ เร็ว

แต่แปลว่า คล่องตัว หรือ ความสามารถในการปรับเปลี่ยนได้อย่างคล่องตัว

Agile Software Development ประกอบไปด้วย

  1. 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 รอบการทำงาน ดังนี้

Iterative and Incremental Development

Project Management หรือ Release Management Framework — DSDM

Traditional Approach

  • Feature (ปรับไม่ได้)
  • Time (ปรับได้)
  • Cost (ปรับได้)
  • Quality
Traditional Approach

DSDM Approach

  • Feature (ต้องบริหารและจัดการ)
  • Time (ปรับไม่ได้)
  • Cost (ปรับไม่ได้)
  • Quality (ปรับไม่ได้)
DSDM Approach

Delivery Framework — The Sprint ของ Scrum Framework

Ref: Scrum Guide (2016) and (2020) By Ken Schwaber and Jeff Sutherland

ภาพร่าง Scrum ทำงานเป็น Sprint ฉบับที่สยามชำนาญกิจใช้

ประโยคสำคัญ “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 อย่าง ดังนี้

  1. The New, New Product Development Game (จากงานวิจัยการทำงานของบริษัท Honda)
  2. Lean
  3. Iterative, Incremental Development
  4. Timeboxes
Influences of Scrum

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 วันทำการ

Iterative Development Model

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

The Sprint

Note: Definition of Done (DoD) คือการกำหนดว่าในระหว่างวันที่ 2 — วันที่ 8 (วันที่ 9) ของ Sprint จะต้องทำอะไรหรือเสร็จอะไรบ้าง (ใน Scrum ไม่มีข้อมูลนี้ให้) สามารถปรับเปลี่ยนเองได้

ตัวอย่าง Definition of Done (DoD)

Definition of Done By SCK

ขอบคุณทุกคนที่เข้ามาอ่านนะคะ สามารถติดตามตอนที่ 2 ได้ในเร็ว ๆ นี้ค่าา 🥰✌🏻

--

--

Nat Ketwadee
WeLoveBug dot Com

𝚂𝚘𝚏𝚝𝚠𝚊𝚛𝚎 𝚃𝚎𝚜𝚝𝚎𝚛 👩🏻‍💻˖ ۫ ּ