Software Development Life Cycle (SDLC)
Software development life cycle (SDLC) คืออะไร?
วงจรของการพัฒนาซอฟต์แวร์ หรือ SDLC เป็นกระบวนการที่ติดตามสำหรับความคืบหน้าของซอฟต์แวร์ ตั้งแต่ระยะการเริ่มต้นพัฒนาจนถึงเสร็จสมบูรณ์ ประกอบด้วยแผนโดยละเอียดที่อธิบายวิธีการพัฒนา บำรุงรักษา แทนที่ และแก้ไขหรือปรับปรุงซอฟต์แวร์เฉพาะ SDLC จะกำหนดวิธีการปรับปรุงคุณภาพของซอฟต์แวร์และกระบวนการพัฒนาโดยรวม
ขั้นตอนที่ 1: การวางแผนและการวิเคราะห์ความต้องการ (Requirements Gathering and Analysis)
การวิเคราะห์ความต้องการของลูกค้าเป็นขั้นตอนพื้นฐานที่สำคัญก่อนจะเริ่มงาน โดยประกอบไปด้วยหัวหน้าทีม และผู้เชี่ยวชาญด้านต่างๆของการพัฒนาโดยอ้างอิงจากข้อมูลของลูกค้า ข้อมูลนี้จะใช้ในการวางแผนแนวทางโครงการเพื่อศึกษาความเป็นไปได้ของซอฟต์แวร์ที่ต้องการพัฒนา
ในระยะนี้ ผู้มีส่วนได้ส่วนเสียของโครงการ รวมถึงลูกค้าและผู้ใช้ จะได้รับการปรึกษาเพื่อรวบรวมและจัดทำเอกสารข้อกำหนดโดยละเอียดสำหรับซอฟต์แวร์ ข้อกำหนดเหล่านี้กำหนดสิ่งที่ซอฟต์แวร์ควรทำและคุณลักษณะต่างๆ
ขั้นตอนที่ 2: การวางแผนและข้อกำหนด
เมื่อการวิเคราะห์ความต้องการแล้ว ขั้นตอนต่อไปคือการบันทึกข้อกำหนดของผลิตภัณฑ์อย่างชัดเจน และได้รับการเห็นชอบกับลูกค้าและนักพัฒนา ซึ่งดำเนินการผ่านเอกสาร SRS (Software Requirement Specification) ซึ่งประกอบด้วยข้อกำหนดผลิตภัณฑ์ทั้งหมดที่จะออกแบบและพัฒนาในระหว่างวงจรชีวิตของโครงการ
โดยสรุปขอบเขต ระยะเวลา งบประมาณ และทรัพยากรที่จำเป็นสำหรับโครงการ ผู้จัดการโครงการและผู้มีส่วนได้ส่วนเสียกำหนดเป้าหมายและวัตถุประสงค์ที่ชัดเจน
ขั้นตอนที่ 3: การออกแบบผลิตภัณฑ์
SRS เป็นข้อมูลอ้างอิงสำหรับผู้ออกแบบผลิตภัณฑ์ ตามข้อกำหนดที่ระบุไว้ใน SRS โดยปกติแล้วจะเสนอแนวทางการออกแบบมากกว่าหนึ่งแนวทางสำหรับสถาปัตยกรรมผลิตภัณฑ์และจัดทำเป็นเอกสารไว้ใน DDS (Design Document Specification)
DDS นี้ได้รับการตรวจสอบโดยผู้มีส่วนเกี่ยวข้องทั้งหมด และขึ้นอยู่กับพารามิเตอร์ต่างๆ เช่น การประเมินความเสี่ยงของผลิตภัณฑ์ การออกแบบโมดูลาร์ งบประมาณและข้อจำกัดด้านเวลา เมื่อได้รับการพิจารณาแนวทางที่ดีที่สุดแล้ว จะถูกเลือกมาใช้ในการพัฒนาผลิตภัณฑ์
ขั้นตอนที่ 4: การสร้างหรือการพัฒนาผลิตภัณฑ์
ในขั้นตอนนี้ การพัฒนาจริงจะเริ่มต้นและผลิตภัณฑ์จะถูกสร้าง โดยการเขียนโค้ดจะถูกสร้างขึ้นตาม DDS (Design Document Specification) หากการออกแบบดำเนินการอย่างละเอียดและเป็นระเบียบ การสร้างโค้ดก็สามารถทำได้โดยไม่ต้องยุ่งยากมากนัก
โดยทั่วไปแล้วแนวทางการเขียนโค้ดจะขึ้นอยู่กับข้อกำหนดของแต่ละองค์กร และใช้เครื่องมือการเขียนโปรแกรม เช่น Compilers, Interpreters,Debuggers ฯลฯ เพื่อสร้างโค้ด ภาษาการเขียนโปรแกรมจะถูกเลือกตามประเภทของซอฟต์แวร์ที่กำลังพัฒนา
ขั้นตอนที่ 5: การทดสอบผลิตภัณฑ์
ในขั้นนี้จะเป็นขั้นตอนย่อยของขั้นตอนทั้งหมด การทดสอบส่วนใหญ่จะเกี่ยวข้องกับทุกขั้นตอนของ SDLC โดยขั้นตอนนี้เป็นการทดสอบเฉพาะของผลิตภัณฑ์ มีการรายงาน ติดตาม แก้ไข และทดสอบซ้ำจนกว่าจะเป็นไปตามมาตรฐานที่กำหนดไว้ใน SRS
การประกันคุณภาพและการทดสอบถือเป็นสิ่งสำคัญเพื่อให้แน่ใจว่าซอฟต์แวร์ทำงานได้อย่างถูกต้องและตรงตามข้อกำหนดที่ระบุ มีการดำเนินการทดสอบประเภทต่างๆ เช่น การทดสอบหน่วย การทดสอบรวม การทดสอบระบบ
ขั้นตอนที่ 6: การปรับใช้และการบำรุงรักษา
เมื่อซอฟต์แวร์ผ่านการทดสอบแล้ว ซอฟต์แวร์จะถูกนำไปใช้งาน โดยอาจนำไปใช้ในกลุ่มที่จำกัดก่อนและทดสอบในสภาพแวดล้อมจริง (UAT- การทดสอบการยอมรับของผู้ใช้) แล้วนำฟีดแบคกลับมาพัฒนา หลังจากการปรับใช้จะมีการบำรุงรักษาอย่างต่อเนื่องเพื่อแก้ไขจุดบกพร่อง ปัญหา หรือการอัปเดต ขั้นตอนนี้ทำให้มั่นใจได้ว่าซอฟต์แวร์ยังคงเชื่อถือได้และทันสมัย
การเลือกโมเดลของ SDLC
การเลือกโมเดล SDLC ขึ้นอยู่กับข้อกำหนดของโครงการและความเห็นชอบขององค์กร บางโปรเจคอาจได้รับประโยชน์จากแนวทางที่มีโครงสร้างเป็นขั้นเป็นตอนของโมเดล Waterfall ในขณะที่โปรเจคอื่นที่ต่างกันออกไป อาจต้องการความยืดหยุ่นของการทำงานที่ต้องมีการอัปเดตการทำงานเป็นระยะจึงต้อง Agile สิ่งสำคัญคือต้องกำหนดโมเดล และความก้าวหน้าของงานให้เหมาะสมที่สุด โดยโมเดลที่มีการใช้งานอยู่มาก ได้แก่
Waterfall Model
โมเดลน้ำตกนี้ถูกนำมาใช้กับโครงการที่มีความเป็นขั้นเป็นตอนที่แตกต่างกันชัดเจน รวมถึงการรวบรวมข้อกำหนด การออกแบบ การนำไปปฏิบัติ การทดสอบ การนำไปใช้งาน และการบำรุงรักษา แต่ละระยะจะต้องเสร็จสิ้นก่อนจะก้าวไปสู่ขั้นตอนถัดไป และการเปลี่ยนแปลงจะยากถ้าหากแต่ละเฟสเสร็จสิ้นแล้ว
Agile Model
โมเดลอาจายเป็นแนวทางการพัฒนาซอฟต์แวร์แบบวนซ้ำและแบบเพิ่มหน่วย โดยเน้นการทำงานร่วมกัน ความคิดเห็นของลูกค้า และการส่งมอบซอฟต์แวร์ส่วนเพิ่มการทำงานเป็นรอบสั้นๆ ที่เรียกว่าสปรินต์
Iterative Model
โมเดลการวนซ้ำแต่ละครั้งประกอบด้วยขั้นตอนต่างๆ เช่น ข้อกำหนด การออกแบบ การนำไปใช้ และการทดสอบ หลังจากการวนซ้ำแต่ละครั้ง ซอฟต์แวร์จะพัฒนาและปรับปรุงตามคำติชม และคุณสมบัติใหม่ๆ จะถูกเพิ่มเข้ามาในการวนซ้ำครั้งต่อๆ ไป
Spiral Model
โมเดล Spiral รวมองค์ประกอบของทั้งโมเดล Waterfall และ Iterative มันเกี่ยวข้องกับการวนซ้ำ แต่ละรอบประกอบด้วยการวางแผน การวิเคราะห์ความเสี่ยง วิศวกรรม การทดสอบ และการประเมินผล มีประโยชน์อย่างยิ่งสำหรับโครงการขนาดใหญ่และซับซ้อนที่มีข้อกำหนดที่เปลี่ยนแปลงได้
V-Model (Validation and Verification Model)
V-Model เป็นส่วนขยายของโมเดล Waterfall ที่เน้นความสัมพันธ์ระหว่างการทดสอบและการพัฒนาในแต่ละขั้นตอนการพัฒนา จะมีขั้นตอนการทดสอบที่สอดคล้องกัน ช่วยให้มั่นใจได้ว่ากิจกรรมการทดสอบจะถูกรวมเข้ากับกระบวนการพัฒนา
RAD (Rapid Application Development)
โมเดล RAD เป็นโมเดลที่เน้นเก็บความคิดเห็นของผู้ใช้แล้วนำกลับมาพัฒนา โดยเหมาะกับโปรเจคที่ต้องการส่วนร่วมของผู้ใช้และนำมาปรับปรุงได้ทันที
DevOps
DevOps เป็นแนวทางการปฏิบัติงานที่เน้นทดสอบ ปรับปรุง เก็บฟีดแบคของการทำซอฟต์แวร์อย่างต่อเนื่อง โดยเน้นความเร็วในการทดสอบอย่างอัติโนมัติ โดยเน้นการปรับปรุงทีละน้อย เพื่อแล้วนำข้อมูลมาวิเคราะห์ พัฒนา ทดสอบไปเรื่อยๆ (CI/CD)
Big Bang Model
โมเดลบิ๊กแบง เป็นการทำงานแบบไม่เป็นไปตามกระบวนการที่พัฒนาตั้งแต่เริ่มต้น ไม่มีแผนอย่างเป็นทางการ และทำการเปลี่ยนแปลงตามความจำเป็นจนกว่าซอฟต์แวร์จะถือว่าเสร็จสมบูรณ์
Incremental Model
โมเดลส่วนเพิ่ม ทำงานโดยการแบ่งซอฟต์แวร์ออกเป็นส่วนย่อยๆ ที่สามารถจัดการได้เรียกว่าส่วนเพิ่ม แต่ละรายการได้รับการพัฒนาและทดสอบแยกกัน และส่วนเพิ่มใหม่จะถูกเพิ่มจนกว่าซอฟต์แวร์จะเสร็จสมบูรณ์