February 22, 2024
ในโลกของการพัฒนาซอฟต์แวร์ (Software Development) นั้นมีหลายเรื่องที่ต้องคำนึง ตั้งแต่ความต้องการผู้จ้าง (Requirement) ความซับซ้อนของระบบ จนถึงเรื่องความปลอดภัยของซอฟต์แวร์
โปรเจกต์พัฒนาซอฟต์แวร์จะสำเร็จได้ ไม่ได้ทำเพียงแค่การเขียนโค้ดเท่านั้น แต่ต้องเริ่มจากการวางแผน การออกแบบ การทดสอบ รวมถึงการบำรุงรักษาหลังจากที่ซอฟต์แวร์ถูกนำไปใช้งานจริงอีกด้วย
กระบวนการทั้งหมดนี้รวมเป็นสิ่งเดียว เรียกว่า Software Development Life Cycle หรือ SDLC บทความนี้จะพามารู้จักความหมาย และขั้นตอนทั้งหมดของ SDLC พร้อมทั้งสำรวจโมเดล (SDLC Model) ที่ใช้กับกระบวนการนี้กันครับ
SDLC หรือ Software Development Life Cycle คือกระบวนการพื้นฐานที่ใช้ในการพัฒนาซอฟต์แวร์ ประกอบด้วยขั้นตอนต่าง ๆ ที่เป็นมาตรฐาน ตั้งแต่การวิเคราะห์ความต้องการ จนถึงการทดสอบและการบำรุงรักษา เพื่อให้แต่ละขั้นตอนมีชุดการส่งมอบที่จะป้อนในระยะต่อไป กระบวนการ SDLC นี้จะช่วยให้นักพัฒนาซอฟต์แวร์สามารถติดตามความคืบหน้า และจัดการกับปัญหาได้ง่ายมากขึ้น
กระบวนการของ SDLC จะประกอบด้วย 6 ขั้นตอน ที่มีบทบาทความสำคัญแตกต่างกันไปตามลำดับ ตามต่อไปนี้
ขั้นตอนแรกของ SDLC ที่เป็นการรวบรวม และวิเคราะห์ความต้องการจากผู้ที่มีส่วนได้ส่วนเสีย เพื่อระบุ requirement ของลูกค้าและกำหนดขอบเขตของโปรเจกต์
ทีมนักพัฒนาจะต้องสื่อสารกับลูกค้าและเก็บข้อมูลที่เกี่ยวข้องทั้งหมด เพื่อทำความเข้าใจวัตถุประสงค์ทางธุรกิจ ฟังก์ชันใช้งานที่ต้องการ และข้อจำกัดของระบบ รวมถึงรายละเอียดงบประมาณกับระยะเวลาของโปรเจกต์ เพื่อจัดทำเอกสารข้อกำหนดความต้องการ หรือ Software Requirements Specification (SRS) สำหรับใช้เป็นข้อตกลงร่วมกันระหว่างผู้พัฒนาซอฟต์แวร์กับผู้ว่าจ้าง
หลังจากที่กำหนด SRS ชัดเจนดีแล้ว ก็จะเริ่มกระบวนการออกแบบระบบซอฟต์แวร์สำหรับใช้พัฒนา โดยอิงตามเอกสารข้อกำหนดความต้องการที่ได้จากขั้นตอนก่อนหน้า
ขั้นตอนนี้เกี่ยวข้องกับการสร้างสถาปัตยกรรมของซอฟต์แวร์ การออกแบบโครงสร้างฐานข้อมูล อินเตอร์เฟซผู้ใช้ (UX/UI) ฯลฯ รวมถึงการกำหนดเทคโนโลยีและเครื่องมือที่ต้องใช้ในการพัฒนา โดยจะจัดทำเอกสารการออกแบบระบบ หรือ System Design Document ที่ระบุโครงสร้างกับการทำงานของซอฟต์แวร์อย่างละเอียด เพื่อใช้เป็นแนวทางสำหรับพัฒนาในขั้นตอนถัดไป
SDLC ขั้นตอนนี้ จะเป็นการเขียนโค้ดหรือการสร้างซอฟต์แวร์จริงตามเอกสารการออกแบบระบบ ที่ได้รับการอนุมัติแล้วจากขั้นตอนก่อนหน้านี้
นักพัฒนามักจะแบ่งงานออกเป็นหลายโมดูล และถูกพัฒนาโดยทีมหรือบุคคลที่แตกต่างกัน ขึ้นอยู่กับขนาดและความซับซ้อนของโปรเจกต์ หลังจากที่โค้ดแต่ละส่วนพัฒนาเสร็จสิ้นก็จะนำมารวมกันเป็นระบบใหญ่ วิธีการนี้อาจเกิดขึ้นหลายครั้งในระหว่างการพัฒนา เพื่อทดสอบแต่ละส่วนของโค้ดอย่างละเอียด (Unit Testing) และแก้ใขข้อผิดพลาดอย่างต่อเนื่อง ก่อนจะเข้าสู่ขั้นตอนการทดสอบระบบที่ครอบคลุมมากขึ้น
หลังจากพัฒนาซอฟต์แวร์เสร็จ ขั้นตอนทดสอบก็จะเริ่มขึ้น เพื่อค้นหาข้อผิดพลาดและปัญหาภายในซอฟต์แวร์ ฝ่าย QA (Quality Assurance) จะทำการทดสอบหลายระดับ หลายประเภท และหลายเหตุการณ์ เพื่อให้มั่นใจว่าซอฟต์แวร์จะทำงานได้ตามที่คาดหวัง เสถียร และผ่านมาตรฐานความปลอดภัย เป็นขั้นตอนสำคัญในการประเมินคุณภาพก่อนที่จะถูกนำไปใช้งานจริง
ในกระบวนการ SDLC เมื่อซอฟต์แวร์ผ่านการทดสอบว่ามีคุณภาพ และตรงตาม requirement ของลูกค้าทุกอย่าง ก็จะเข้าสู่ขั้นตอนการติดตั้งให้กับผู้ใช้
การติดตั้งที่ว่า หมายถึงการนำซอฟต์แวร์ออกจากสภาพแวดล้อมการพัฒนาทดสอบ และนำไปติดตั้งบนเซิร์ฟเวอร์หรือระบบคอมพิวเตอร์ที่จะใช้งานจริง รวมถึงการตั้งค่าระบบให้ผู้ใช้ที่เกี่ยวข้องสามารถเข้าถึงได้
ระหว่างการติดตั้ง นักพัฒนาจำเป็นจะต้องดำเนินการอบรมผู้ใช้งาน เพื่อให้เข้าใจวิธีการใช้ซอฟต์แวร์ที่สร้างอย่างถูกต้อง อีกทั้งต้องจัดทำเอกสารคู่มืออธิบายรายละเอียดการใช้งานเบื้องต้น เพื่อให้ซอฟต์แวร์ถูกนำไปใช้ได้ตามที่คาดหวัง
SDLC ขั้นตอนสุดท้ายหลังจากที่ซอฟต์แวร์ถูกติดตั้งใช้งานจริงเรียบร้อย ก็ยังจำเป็นต้องได้รับการดูแลและปรับปรุงอย่างต่อเนื่อง เพื่อให้แน่ใจว่าซอฟต์แวร์จะยังคงทำงานได้ดีไปตามการเปลี่ยนแปลงของผู้ใช้และธุรกิจ
การ Maintenance ไม่ใช่เพียงการแก้ไขข้อผิดพลาดที่อาจเกิดขึ้นเท่านั้น แต่รวมถึงการอัปเดต การเพิ่มฟังก์ชันใหม่ และการพัฒนาระบบให้เข้ากับเทคโนโลยีล่าสุดอีกด้วย มักต้องเกิดขึ้นเรื่อย ๆ เพื่อคุณภาพกับความน่าเชื่อถือของซอฟต์แวร์ในระยะยาว
SDLC Model คือแบบแผนการทำงานที่ใช้พัฒนาซอฟต์แวร์ ให้อยู่ในกรอบที่ควบคุมได้ แต่ละโมเดลของ SDLC จะมีวิธีการกับขั้นตอนที่ต่างกัน แต่โมเดลทั้งหมดล้วนมีเป้าหมายร่วมกัน ในการทำให้กระบวนการพัฒนาซอฟต์แวร์เป็นไปได้อย่างราบรื่น และสามารถสร้างซอฟต์แวร์ที่ตอบสนองผู้ใช้ได้เป็นอย่างดี สำหรับ SDLC Model ที่นิยมใช้และรู้จักกันดี จะมีอยู่ 7 โมเดล ตามต่อไปนี้
Big Bang model เป็นโมเดล SDLC ที่เน้นไปที่การเขียนโค้ดของซอฟต์แวร์โดยตรง ไม่เน้นการวางแผนหรือการทำงานทีละขั้นตอนอย่างเป็นระบบ การพัฒนาจะเริ่มต้นโดยไม่มีแผนที่ละเอียดและโครงสร้างไม่ชัดเจน เหมาะกับโปรเจกต์ขนาดเล็กที่มีนักพัฒนา 1-2 คนทำงานร่วมกันในระยะเวลาพัฒนาที่จำกัด มักจะทดสอบซอฟต์แวร์เมื่อเสร็จหรือใกล้เสร็จในทีเดียว
Waterfall model เป็นโมเดล SDLC เก่าแก่ แต่ยังคงได้รับความนิยมมาก เพราะมีลำดับขั้นตอนพัฒนาซอฟต์แวร์ที่ชัดเจน เรียงต่อกันเป็นลำดับ แต่ละขั้นต้องเสร็จเรียบร้อยก่อนถึงจะเริ่มขั้นถัดไปได้ โมเดลนี้มีโครงสร้างที่เข้าใจง่ายแต่ใช้เวลาทำนาน เหมาะกับโปรเจกต์ที่มีความต้องการกับข้อกำหนดชัดเจน แน่นอน และไม่มีการเปลี่ยนแปลงบ่อย
V-Shaped model เป็นโมเดล SDLC ที่เน้นการทดสอบอย่างเข้มงวดในแต่ละขั้นตอน มีลำดับขั้นตอนที่ชัดเจน สามารถย้อนกลับไปทำขั้นก่อนหน้าได้ โมเดลนี้เป็นการขยายและปรับปรุงมาจาก Waterfall model ด้วยการเพิ่มส่วนการทดสอบเข้ามาในทุกขั้นตอน มีจุดเด่นเรื่องการรับประกัน ว่าในแต่ละขั้นตอนการพัฒนาจะได้รับการทดสอบอย่างถี่ถ้วน ทำให้ข้อผิดพลาดหรือบัคถูกตรวจพบ และแก้ใขได้ตั้งแต่ระยะเริ่มต้นพัฒนาซอฟต์แวร์
Iterative Model เป็นโมเดล SDLC ขนาดใหญ่ ที่แบ่งการทำงานออกเป็นส่วนย่อย ๆ เน้นการพัฒนาผ่านการทำวนซ้ำหลายครั้ง ในแต่ละรอบของการวนซ้ำจะมุ่งเน้นไปที่การปรับปรุงและเพิ่มเติมฟีเจอร์เฉพาะไปเรื่อย ๆ สิ่งนี้จะช่วยให้ทีมพัฒนาตอบสนองต่อ requirement ที่เปลี่ยนแปลงได้อย่างรวดเร็ว
SDLC Model นี้ยังช่วยให้ผู้ใช้กับผู้มีส่วนได้ส่วนเสียได้มีโอกาสให้ข้อเสนอแนะ และมีส่วนร่วมในกระบวนการพัฒนา ทำให้ไฟนอลซอฟต์แวร์ออกมาตอบสนองความต้องการของผู้ใช้ได้เป็นอย่างดี
RAD model หรือ Rapid Application Development โมเดล SDLC ที่เน้นขั้นตอนรวบรัด ด้วยการเลือกใช้เครื่องมือกับเทคนิคที่ช่วยให้การพัฒนาซอฟต์แวร์ดำเนินไปได้อย่างรวดเร็ว นักพัฒนาจะใช้การสร้างต้นแบบ (Prototype) ของซอฟต์แวร์ขึ้นมา และนำไปทดสอบกับผู้ใช้ เพื่อรับฟีดแบ็คเป็นส่วนสำคัญมาพัฒนาต่อจนกว่าซอฟต์แวร์จะเสร็จพร้อมใช้
Spiral model เป็นโมเดล SDLC ที่นำจุดแข็งของ Waterfall Model มาพัฒนาให้ดีขึ้น เพราะแต่เดิมหากขั้นตอนไหนผิดพลาดจะไม่สามารถแก้ไขได้ ต้องรอจบกระบวนการทั้งหมดก่อนถึงจะแก้ไขได้ตั้งแต่ขั้นแรกและเรียงลำดับขึ้นไปเรื่อย ๆ ทำให้มีความเสี่ยงที่การพัฒนาซอฟต์แวร์จะไม่สำเร็จ
จึงมีการปรับเปลี่ยนรูปแบบเป็น Spiral model หรือโมเดลรูปเกลียว ที่เน้นการประเมินความเสี่ยงของโปรเจกต์ ด้วยการแบ่งโครงสร้างออกเป็นโปรเจกต์กลุ่มย่อย ช่วยให้การปรับเปลี่ยน requirement ในระหว่างพัฒนาทำได้ง่ายขึ้น ตลอดจนประเมินความเสี่ยงกับความต่อเนื่องของโปรเจกต์ในเรื่องค่าใช้จ่าย SDLC model นี้เหมาะกับโปรเจกต์ที่มีความซับซ้อนสูง และมีความเสี่ยงที่ต้องควบคุมอย่างเข้มงวด
Agile model เป็น SDLC Model ที่เน้นความยืดหยุ่นและการทำงานเป็นทีม การสื่อสารที่คล่องตัวจะช่วยให้สามารถพัฒนาซอฟตแวร์ที่ตอบสนองต่อ requirement ของลูกค้าได้เร็ว นักพัฒนาจะแบ่งโปรเจกต์เป็นส่วนย่อย ที่เรียกว่า Sprint ซึ่งแต่ละ Sprint จะใช้ระยะเวลาประมาณ 1-4 สัปดาห์ เพื่อให้ซอฟต์แวร์เสร็จภายในระยะสั้น ๆ แล้วนำไปทดสอบกับผู้ใช้ เพื่อรับฟีดแบคกลับมาปรับปรุงต่อ ใน Sprint ถัดไป
สรุปแล้ว SDLC (Software Development Life Cycle) นั้นคือวงจรชีวิตพื้นฐานของซอฟต์แวร์ระยะพัฒนา ที่เริ่มตั้งแต่การวางแผน การออกแบบระบบ การพัฒนากับทดสอบ การนำไปติดตั้งใช้งานจริง และคอยบำรุงรักษาหลังส่งมอบซอฟต์แวร์ กระบวนการทั้งหมดจะถูกดำเนินไปอย่างมีระบบ ช่วยทำให้นักพัฒนาสามารถรับมือกับความท้าทายต่าง ๆ และตอบสนองความต้องการของโปรเจกต์ได้อย่างมีประสิทธิภาพ
แบบแผนการทำงานที่ใช้กับกระบวนการ SDLC ให้อยู่ในกรอบที่ควบคุมได้นั้นมีหลายโมเดล ที่นิยมใช้กันก็จะมี Waterfall model, Iterative model, Spiral model และ Agile model แม้จะมีขั้นตอนกับวิธีการที่ต่างกัน แต่ SDLC model ทั้งหมดก็ล้วนมีเป้าหมายร่วมกัน ในเรื่องการช่วยให้กระบวนการพัฒนาซอฟต์แวร์เป็นไปได้อย่างราบรื่น และเหมาะสมกับแต่ละโปรเจกต์