Software Development
Learning
Stages of the Software Development Life Cycle
SDLC กำหนดงานที่ต้องดำเนินการในแต่ละขั้นตอนโดยวิศวกรซอฟต์แวร์หรือผู้พัฒนา ประกอบไปด้วย 6 เฟสหรือขั้นตอนในการพัฒนาซอฟต์แวร์ใดๆ ก็ตาม SDLC ประกอบด้วย 6 ขั้นตอนเหล่านี้ และขั้นตอนของ SDLC มีดังนี้
Ake Suwaphan
30 August 2024
Stages of the Software Development Life Cycle
SDLC กำหนดงานที่ต้องดำเนินการในแต่ละขั้นตอนโดยวิศวกรซอฟต์แวร์หรือผู้พัฒนา เพื่อให้แน่ใจว่าผลิตภัณฑ์ขั้นสุดท้ายสามารถตอบสนองความคาดหวังของลูกค้าและอยู่ในงบประมาณโดยรวม
แบบจำลอง SDLC ประกอบไปด้วย 6 เฟสหรือขั้นตอนในการพัฒนาซอฟต์แวร์ใดๆ ก็ตาม SDLC ประกอบด้วย 6 ขั้นตอนเหล่านี้ และขั้นตอนของ SDLC มีดังนี้
- Stage 1: Planning and Requirement Analysis
- การทำ Planning and Requirement Analysis ในการพัฒนาซอฟต์แวร์สามารถแบ่งเป็นขั้นตอนต่าง ๆ ดังนี้
-
1. Define Project Scope
- ระบุขอบเขตของโครงการ โดยพิจารณาว่าจะครอบคลุมอะไรบ้าง เช่น ฟังก์ชันหลัก ความต้องการของผู้ใช้ เป้าหมายของระบบ
-
2. Set Objectives and Goals
- กำหนดวัตถุประสงค์และเป้าหมายที่ต้องการบรรลุ เช่น เพิ่มประสิทธิภาพการทำงาน ลดเวลาในการดำเนินงาน หรือปรับปรุงประสบการณ์ผู้ใช้
-
3. Resource Planning
- วางแผนทรัพยากรที่ต้องใช้ เช่น บุคลากร เทคโนโลยี งบประมาณ และเวลา เพื่อให้โครงการดำเนินไปตามแผน
- Stage 2: Defining Requirements
- การทำ Defining Requirement แบ่งเป็นขั้นตอนดังนี้
-
1. Functional Requirement
- กำหนดคุณสมบัติและฟังก์ชันที่ระบบต้องมี เช่น การลงทะเบียนผู้ใช้ การจัดการคำสั่งซื้อ การแสดงรายงาน โดยจะโฟกัสที่การทำงานหลักของระบบ
-
2. Technical Requirement
- กำหนดข้อกำหนดทางเทคนิค เช่น สถาปัตยกรรมระบบ, ภาษาที่ใช้ในการพัฒนา, ฐานข้อมูล, และมาตรฐานความปลอดภัย เพื่อให้มั่นใจว่าระบบสามารถทำงานได้ตามที่วางแผนไว้
-
3. Requirement Reviews and Approved
- ทบทวนข้อกำหนดที่กำหนดไว้กับทีมพัฒนา ผู้มีส่วนเกี่ยวข้อง และลูกค้า เพื่อให้แน่ใจว่าข้อกำหนดทั้งหมดถูกต้องและตรงตามความต้องการ จากนั้นให้ทุกฝ่ายอนุมัติข้อกำหนดเหล่านั้น
- Stage 3: Designing Architecture
- การทำ Designing Architecture แบ่งเป็นขั้นตอนดังนี้
-
1. High Level Design (HLD)
- ออกแบบโครงสร้างระบบโดยรวม เช่น การเลือกสถาปัตยกรรม, การจัดสรรโมดูลต่าง ๆ, การเชื่อมต่อกับระบบภายนอก, และการกำหนดรูปแบบการสื่อสารระหว่างส่วนต่าง ๆ ของระบบ
- มุ่งเน้นการวางแผนโครงสร้างที่ครอบคลุมการทำงานหลักทั้งหมดของระบบ โดยไม่ลงลึกในรายละเอียด
-
2. Low Level Design (LLD)
- ออกแบบรายละเอียดภายในแต่ละโมดูล เช่น การกำหนดโครงสร้างข้อมูล, การเขียน Flowchart, การกำหนดวิธีการทำงานของแต่ละฟังก์ชันย่อย
- เน้นการอธิบายกระบวนการทำงานเชิงลึกในแต่ละส่วนของระบบเพื่อให้ทีมพัฒนาสามารถนำไปใช้งานได้จริง
- Stage 4: Developing Product
- การทำ Developing Product แบ่งเป็นขั้นตอนดังนี้
-
1. Coding Standard
- กำหนดมาตรฐานในการเขียนโค้ด เช่น การตั้งชื่อตัวแปร, รูปแบบการจัดระเบียบโค้ด และแนวทางการเขียนเพื่อให้โค้ดอ่านง่ายและสอดคล้องกันทั้งทีม
-
2. Scalable Code
- เขียนโค้ดที่สามารถขยายและปรับปรุงได้ในอนาคต เช่น การเขียนโค้ดให้มีความยืดหยุ่น รองรับการเพิ่มฟีเจอร์ใหม่ และจัดการปริมาณการใช้งานที่เพิ่มขึ้นได้อย่างมีประสิทธิภาพ
-
3. Version Code
- ใช้ระบบควบคุมเวอร์ชัน เช่น Git เพื่อจัดการกับการเปลี่ยนแปลงของโค้ดในแต่ละเวอร์ชัน ป้องกันการสูญหายของโค้ดและจัดการความขัดแย้งระหว่างการพัฒนาในทีม
-
4. Code Review
- กระบวนการตรวจสอบโค้ดโดยทีมพัฒนาเพื่อตรวจหาข้อผิดพลาด, ปรับปรุงประสิทธิภาพ และรับประกันว่าโค้ดที่เขียนมีคุณภาพสูงและสอดคล้องกับมาตรฐานที่กำหนด
- Stage 5: Product Testing and Integration
- ขั้นตอนการทำ Product Testing และ Integration โดยแบ่งเป็นขั้นตอนดังนี้
- 1. System Testing
- วัตถุประสงค์ ตรวจสอบให้แน่ใจว่าทั้งระบบทำงานได้ตามที่คาดหวังและตรงตามข้อกำหนดที่ระบุ
-
ขั้นตอน
- กำหนดวัตถุประสงค์การทดสอบ: เข้าใจข้อกำหนดของระบบและสิ่งที่ต้องทดสอบ
- พัฒนาแผนการทดสอบ: สร้างแผนการทดสอบที่ละเอียด ซึ่งรวมถึงสิ่งที่จะทดสอบ วิธีการทดสอบ และผลลัพธ์ที่คาดหวัง
- ตั้งค่าสภาพแวดล้อมการทดสอบ: เตรียมสภาพแวดล้อมที่ใช้ในการทดสอบ รวมถึงฮาร์ดแวร์ ซอฟต์แวร์ และการตั้งค่าเครือข่าย
- ดำเนินการทดสอบ: ทำการทดสอบตามแผนที่กำหนด ซึ่งอาจรวมถึงการทดสอบด้านฟังก์ชัน การทดสอบประสิทธิภาพ การทดสอบความปลอดภัย ฯลฯ
- บันทึกผลลัพธ์: จดบันทึกผลลัพธ์ของการทดสอบ รวมถึงข้อบกพร่องหรือปัญหาที่พบ
- ตรวจสอบและวิเคราะห์: ประเมินผลลัพธ์เพื่อพิจารณาว่าระบบตรงตามมาตรฐานที่ต้องการหรือไม่
- รายงานผลการทดสอบ: แบ่งปันผลลัพธ์กับผู้มีส่วนได้ส่วนเสีย รวมถึงปัญหาที่พบและข้อเสนอแนะในการแก้ไข
- 2. Manual Testing
- วัตถุประสงค์ ค้นหาข้อบกพร่องและตรวจสอบให้ซอฟต์แวร์ทำงานตามที่คาดหวังโดยการใช้งานจากผู้ใช้จริง
-
ขั้นตอน
- สร้างกรณีทดสอบ: เขียนกรณีทดสอบหรือสถานการณ์ที่ละเอียดตามข้อกำหนดของระบบ
- เตรียมข้อมูลทดสอบ: รวบรวมหรือสร้างข้อมูลที่จะใช้ในกระบวนการทดสอบ
- ดำเนินการกรณีทดสอบ: ทดสอบด้วยตนเองโดยการโต้ตอบกับแอปพลิเคชันตามที่ผู้ใช้จะใช้งาน
- บันทึกผลลัพธ์: จดบันทึกผลลัพธ์ รวมถึงข้อผิดพลาดหรือปัญหาที่พบ
- รายงานข้อบกพร่อง: บันทึกปัญหาที่พบและให้รายละเอียดเพื่อช่วยในการแก้ไข
- ทดสอบซ้ำ: เมื่อตรวจพบข้อบกพร่องแล้วให้แก้ไข และทำการทดสอบซ้ำเพื่อให้แน่ใจว่าปัญหาได้รับการแก้ไขและไม่มีปัญหาใหม่เกิดขึ้น
- 3. Automated Testing
- วัตถุประสงค์ เพิ่มประสิทธิภาพและความแม่นยำโดยใช้เครื่องมือในการดำเนินการกรณีทดสอบอัตโนมัติ
-
ขั้นตอน
- เลือกเครื่องมืออัตโนมัติ: เลือกเครื่องมือที่เหมาะสมสำหรับการทดสอบอัตโนมัติตามความต้องการของโครงการและเทคโนโลยีที่ใช้
- พัฒนาเทสสคริปต์อัตโนมัติ: เขียนสคริปต์เพื่อทำการทดสอบอัตโนมัติ ซึ่งมักจะเกี่ยวข้องกับการเขียนโค้ดในภาษาสคริปต์หรือภาษาโปรแกรม
- ตั้งค่าสภาพแวดล้อมการทดสอบ: ตั้งค่าสภาพแวดล้อมสำหรับการรันการทดสอบอัตโนมัติ ซึ่งอาจแตกต่างจากสภาพแวดล้อมการทดสอบด้วยมือ
- ดำเนินการทดสอบอัตโนมัติ: รันสคริปต์การทดสอบโดยใช้เครื่องมืออัตโนมัติ
- ตรวจสอบผลลัพธ์: วิเคราะห์ผลลัพธ์ที่ได้จากการทดสอบอัตโนมัติเพื่อตรวจสอบข้อผิดพลาดหรือปัญหาที่พบ
- บำรุงรักษาสคริปต์: อัปเดตและบำรุงรักษาสคริปต์การทดสอบเมื่อแอปพลิเคชันมีการเปลี่ยนแปลงเพื่อให้สคริปต์ยังคงมีความเกี่ยวข้องและมีประสิทธิภาพ
- รวมเข้ากับ CI/CD: รวมการทดสอบอัตโนมัติเข้ากับ CI/CD pipelines เพื่อให้สามารถทดสอบได้อย่างต่อเนื่องในระหว่างกระบวนการพัฒนา
- Stage 6: Deployment and Maintenance of Products
- ขั้นตอนในการทำ Deployment และ Maintenance ของผลิตภัณฑ์ โดยแบ่งเป็นขั้นตอนดังนี้
- 1. Release Planning
- วัตถุประสงค์ วางแผนการปล่อยผลิตภัณฑ์ใหม่หรือการอัปเดตเพื่อให้แน่ใจว่าการปล่อยเป็นไปตามแผนและไม่มีปัญหา
-
ขั้นตอน
- กำหนดขอบเขตการปล่อย: ตัดสินใจว่าจะปล่อยฟีเจอร์ใหม่, แก้ไขบั๊ก, หรือการอัปเดตอื่น ๆ
- ตั้งกำหนดการ: กำหนดวันที่และเวลาที่จะทำการปล่อยผลิตภัณฑ์
- สร้างแผนการปล่อย: รวมถึงการจัดการทรัพยากร, การสื่อสารกับทีม, และการเตรียมการสำหรับการทดสอบและตรวจสอบ
- ตรวจสอบความพร้อม: ตรวจสอบให้แน่ใจว่าทุกอย่างพร้อมสำหรับการปล่อย, รวมถึงการทดสอบที่จำเป็นและการตรวจสอบความถูกต้องของผลิตภัณฑ์
เตรียมเอกสาร: สร้างเอกสารที่เกี่ยวข้อง เช่น บันทึกการเปลี่ยนแปลง (Release Notes), คู่มือการใช้งาน, และเอกสารการฝึกอบรม - 2. Deployment Automation
- วัตถุประสงค์ ใช้เครื่องมือและเทคนิคในการทำให้การติดตั้งผลิตภัณฑ์เป็นไปโดยอัตโนมัติ ลดข้อผิดพลาดและเพิ่มความเร็วในการปล่อย
-
ขั้นตอน
- เลือกเครื่องมืออัตโนมัติ: เลือกเครื่องมือที่เหมาะสมสำหรับการทำงาน เช่น Jenkins, GitLab CI/CD, Ansible, Docker ฯลฯ
- พัฒนาสคริปต์การติดตั้ง: เขียนสคริปต์ที่ใช้ในการติดตั้งผลิตภัณฑ์โดยอัตโนมัติ รวมถึงการจัดการกับการตั้งค่า, การคอนฟิก, และการจัดการเวอร์ชัน
- ตั้งค่าระบบ: กำหนดค่าเครื่องมือและสคริปต์ในสภาพแวดล้อมที่ใช้ในการติดตั้ง
- ทดสอบการติดตั้ง: ทดสอบการติดตั้งในสภาพแวดล้อมการทดสอบเพื่อให้แน่ใจว่าการทำงานเป็นไปตามที่คาดหวัง
- ติดตั้งในสภาพแวดล้อมจริง: ใช้สคริปต์การติดตั้งเพื่อดำเนินการติดตั้งในสภาพแวดล้อมการผลิต
- 3. Maintenance
- วัตถุประสงค์ รักษาและปรับปรุงผลิตภัณฑ์หลังจากการปล่อยเพื่อให้มีประสิทธิภาพและความเสถียรสูงสุด
-
ขั้นตอน
- ติดตามและตรวจสอบ: ติดตามประสิทธิภาพของผลิตภัณฑ์และตรวจสอบปัญหาที่เกิดขึ้น เช่น ข้อบกพร่องหรือปัญหาด้านประสิทธิภาพ
- จัดการข้อบกพร่อง: แก้ไขข้อบกพร่องที่พบและทำการปรับปรุงที่จำเป็น
- ดำเนินการอัปเดต: อัปเดตผลิตภัณฑ์เป็นระยะ ๆ รวมถึงการเพิ่มฟีเจอร์ใหม่และการปรับปรุงความปลอดภัย
- สำรองข้อมูล: จัดทำแผนการสำรองข้อมูลเพื่อป้องกันการสูญหายของข้อมูล
- จัดการการสนับสนุน: ให้การสนับสนุนแก่ผู้ใช้ เช่น การตอบคำถามและการแก้ไขปัญหาที่เกิดขึ้น
- 4. Feedback
- วัตถุประสงค์ รวบรวมความคิดเห็นจากผู้ใช้และทีมงานเพื่อปรับปรุงผลิตภัณฑ์ให้ดียิ่งขึ้น
-
ขั้นตอน
- รวบรวมความคิดเห็น: ใช้เครื่องมือและวิธีการในการรวบรวมความคิดเห็นจากผู้ใช้ เช่น แบบสำรวจ, การสัมภาษณ์, และการวิเคราะห์ข้อมูลจากการใช้งาน
- วิเคราะห์ความคิดเห็น: ตรวจสอบและวิเคราะห์ความคิดเห็นเพื่อค้นหาปัญหาและโอกาสในการปรับปรุง
- พัฒนาแผนการปรับปรุง: สร้างแผนการปรับปรุงที่อิงจากความคิดเห็นที่ได้รับ
- นำไปปฏิบัติ: ดำเนินการปรับปรุงผลิตภัณฑ์ตามแผนที่พัฒนาขึ้น
- สื่อสารกับผู้ใช้: แจ้งให้ผู้ใช้ทราบถึงการปรับปรุงและการเปลี่ยนแปลงที่เกิดขึ้นเพื่อให้พวกเขารับรู้ถึงการพัฒนาของผลิตภัณฑ์