Software Development Learning

Stages of the Software Development Life Cycle

SDLC กำหนดงานที่ต้องดำเนินการในแต่ละขั้นตอนโดยวิศวกรซอฟต์แวร์หรือผู้พัฒนา ประกอบไปด้วย 6 เฟสหรือขั้นตอนในการพัฒนาซอฟต์แวร์ใดๆ ก็ตาม SDLC ประกอบด้วย 6 ขั้นตอนเหล่านี้ และขั้นตอนของ SDLC มีดังนี้

Stages of the Software Development Life Cycle
Ake SuwaphanAke Suwaphan
30 August 2024

Stages of the Software Development Life Cycle

SDLC กำหนดงานที่ต้องดำเนินการในแต่ละขั้นตอนโดยวิศวกรซอฟต์แวร์หรือผู้พัฒนา เพื่อให้แน่ใจว่าผลิตภัณฑ์ขั้นสุดท้ายสามารถตอบสนองความคาดหวังของลูกค้าและอยู่ในงบประมาณโดยรวม

แบบจำลอง SDLC ประกอบไปด้วย 6 เฟสหรือขั้นตอนในการพัฒนาซอฟต์แวร์ใดๆ ก็ตาม SDLC ประกอบด้วย 6 ขั้นตอนเหล่านี้ และขั้นตอนของ SDLC มีดังนี้

Stage 1: Planning and Requirement Analysis
  • 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
  • Stage 2: Defining Requirements
  • การทำ Defining Requirement แบ่งเป็นขั้นตอนดังนี้
  • 1. Functional Requirement
    • กำหนดคุณสมบัติและฟังก์ชันที่ระบบต้องมี เช่น การลงทะเบียนผู้ใช้ การจัดการคำสั่งซื้อ การแสดงรายงาน โดยจะโฟกัสที่การทำงานหลักของระบบ
  • 2. Technical Requirement
    • กำหนดข้อกำหนดทางเทคนิค เช่น สถาปัตยกรรมระบบ, ภาษาที่ใช้ในการพัฒนา, ฐานข้อมูล, และมาตรฐานความปลอดภัย เพื่อให้มั่นใจว่าระบบสามารถทำงานได้ตามที่วางแผนไว้
  • 3. Requirement Reviews and Approved
    • ทบทวนข้อกำหนดที่กำหนดไว้กับทีมพัฒนา ผู้มีส่วนเกี่ยวข้อง และลูกค้า เพื่อให้แน่ใจว่าข้อกำหนดทั้งหมดถูกต้องและตรงตามความต้องการ จากนั้นให้ทุกฝ่ายอนุมัติข้อกำหนดเหล่านั้น
Stage 3: Designing Architecture
  • Stage 3: Designing Architecture
  • การทำ Designing Architecture แบ่งเป็นขั้นตอนดังนี้
  • 1. High Level Design (HLD)
    • ออกแบบโครงสร้างระบบโดยรวม เช่น การเลือกสถาปัตยกรรม, การจัดสรรโมดูลต่าง ๆ, การเชื่อมต่อกับระบบภายนอก, และการกำหนดรูปแบบการสื่อสารระหว่างส่วนต่าง ๆ ของระบบ
    • มุ่งเน้นการวางแผนโครงสร้างที่ครอบคลุมการทำงานหลักทั้งหมดของระบบ โดยไม่ลงลึกในรายละเอียด
  • 2. Low Level Design (LLD)
    • ออกแบบรายละเอียดภายในแต่ละโมดูล เช่น การกำหนดโครงสร้างข้อมูล, การเขียน Flowchart, การกำหนดวิธีการทำงานของแต่ละฟังก์ชันย่อย
    • เน้นการอธิบายกระบวนการทำงานเชิงลึกในแต่ละส่วนของระบบเพื่อให้ทีมพัฒนาสามารถนำไปใช้งานได้จริง
Stage 4: Developing Product
  • 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
  • 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
  • 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
  • วัตถุประสงค์ รวบรวมความคิดเห็นจากผู้ใช้และทีมงานเพื่อปรับปรุงผลิตภัณฑ์ให้ดียิ่งขึ้น
  • ขั้นตอน
    • รวบรวมความคิดเห็น: ใช้เครื่องมือและวิธีการในการรวบรวมความคิดเห็นจากผู้ใช้ เช่น แบบสำรวจ, การสัมภาษณ์, และการวิเคราะห์ข้อมูลจากการใช้งาน
    • วิเคราะห์ความคิดเห็น: ตรวจสอบและวิเคราะห์ความคิดเห็นเพื่อค้นหาปัญหาและโอกาสในการปรับปรุง
    • พัฒนาแผนการปรับปรุง: สร้างแผนการปรับปรุงที่อิงจากความคิดเห็นที่ได้รับ
    • นำไปปฏิบัติ: ดำเนินการปรับปรุงผลิตภัณฑ์ตามแผนที่พัฒนาขึ้น
    • สื่อสารกับผู้ใช้: แจ้งให้ผู้ใช้ทราบถึงการปรับปรุงและการเปลี่ยนแปลงที่เกิดขึ้นเพื่อให้พวกเขารับรู้ถึงการพัฒนาของผลิตภัณฑ์