DEV Community

Cover image for เส้นทางอาชีพการเป็น Software Developer กับ ChatGPT #2
devmountaintechfest
devmountaintechfest

Posted on

เส้นทางอาชีพการเป็น Software Developer กับ ChatGPT #2

Software Development Life Cycle (SDLC)

Image description

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

  1. แบบแผน (Planning) - ในขั้นตอนนี้ทีมพัฒนาซอฟต์แวร์จะประเมินและวางแผนการพัฒนา รวมถึงการกำหนดความต้องการ การวิเคราะห์ความเป็นไปได้และการเตรียมแผนการทดสอบซอฟต์แวร์

  2. ออกแบบ (Design) - ในขั้นตอนนี้ทีมพัฒนาซอฟต์แวร์จะออกแบบโครงสร้างของระบบ การจัดทำแผนภาพและการออกแบบส่วนประกอบต่าง ๆ เพื่อให้มีความเข้าใจเกี่ยวกับซอฟต์แวร์ที่กำลังจะพัฒนา

  3. พัฒนา (Development) - ในขั้นตอนนี้ทีมพัฒนาซอฟต์แวร์จะเขียนโค้ดและทำการทดสอบโปรแกรม

  4. ทดสอบ (Testing) - ในขั้นตอนนี้ทีมทดสอบซอฟต์แวร์จะทำการทดสอบความถูกต้องของโปรแกรม โดยรวมถึงการทดสอบเพื่อตรวจสอบว่าโปรแกรมสามารถทำงานได้ถูกต้องและตามความต้องการของผู้ใช้งาน

  5. การปรับปรุงและการบำรุงรักษา (Maintenance and Monitoring) - หลังจากที่โปรแกรมหรือซอฟต์แวร์ได้ถูกสร้างขึ้นและเผยแพร่ไปแล้ว จะต้องมีการบำรุงรักษาและปรับปรุงอยู่ตลอดเวลา เพื่อให้ซอฟต์แวร์สามารถทำงานได้ตลอดเวลาและไม่มีปัญหาในการใช้งาน

ในแต่ละขั้นตอน เกี่ยวข้องกับตำแหน่งงานใดบ้าง

  1. วิเคราะห์ความต้องการ (Requirement Analysis): Business Analyst, System Analyst
  2. ออกแบบ (Design): Software Architect, System Designer, UX Designer
  3. พัฒนา (Development): Software Developer, Front-end Developer, Back-end Developer, Full-stack Developer
  4. ทดสอบ (Testing): QA Engineer, Software Tester
  5. การปรับปรุงและการบำรุงรักษา (Maintenance): Software Support Engineer, Technical Support Engineer, System Administrator

ในแต่ละขั้นตอน เกี่ยวข้องกับเอกสารอะไร หรือมี กระบวนการทำงานอย่างไร

ในแต่ละขั้นตอนของ SDLC มักจะมีการเขียนเอกสารและสร้างเอกสารที่เกี่ยวข้องเพื่อใช้ในการพัฒนาซอฟต์แวร์ และใช้ในการสื่อสารระหว่างทีมพัฒนาซอฟต์แวร์กันด้วยกัน โดยในแต่ละขั้นตอนจะมีเอกสารที่เกี่ยวข้องและมีแนวทางที่เหมาะสมดังนี้

1. วิเคราะห์ความต้องการ (Requirement Analysis)

  • Business Requirements Document (BRD)
  • Functional Requirements Document (FRD)
  • Use Case Diagrams
  • Business Process Models
  • User Stories
  • การทำความเข้าใจความต้องการของลูกค้าอย่างละเอียดและระบุสิ่งที่ต้องการได้ชัดเจน
  • การทำความเข้าใจตลาดและผู้ใช้งานเป้าหมายเพื่อเตรียมพัฒนาสิ่งที่ต้องการได้อย่างเหมาะสม

2. ออกแบบ (Design)

  • Technical Design Document (TDD)
  • Database Design Document
  • Wireframes and Mockups
  • User Interface (UI) Design Document
  • การออกแบบโครงสร้างของซอฟต์แวร์ให้เป็นไปตามหลักการออกแบบซอฟต์แวร์ที่เหมาะสม
  • การเลือกเทคโนโลยีที่เหมาะสมและเป็นไปตามสถานการณ์ของธุรกิจ

3. พัฒนา (Development)

  • Source Code
  • Unit Test Cases
  • Integration Test Cases
  • Deployment Scripts
  • การเขียนโค้ดที่สามารถอ่านง่ายและแก้ไขได้ง่าย
  • การทำงานร่วมกันในทีมโดยใช้เทคโนโลยีการพัฒนาที่เหมาะสม

4. ทดสอบ (Testing)

  • Test Plan
  • Test Cases
  • Test Scripts
  • Defect Report ในขั้นตอนนี้ นักพัฒนาซอฟต์แวร์จะต้องทดสอบโปรแกรมเพื่อตรวจสอบว่าโปรแกรมทำงานได้ถูกต้องตามความต้องการหรือไม่ โดยการทดสอบสามารถแบ่งออกเป็นหลายประเภท เช่น การทดสอบฟังก์ชั่น (Functional Testing) การทดสอบประสิทธิภาพ (Performance Testing) การทดสอบความปลอดภัย (Security Testing) การทดสอบการทำงานร่วมกัน (Integration Testing) เป็นต้น การทดสอบเป็นขั้นตอนที่สำคัญมากในการพัฒนาซอฟต์แวร์ เนื่องจากการทดสอบที่ดีจะช่วยลดความผิดพลาดในโปรแกรมและช่วยให้โปรแกรมทำงานได้ถูกต้องมากขึ้น
  • การทดสอบควรทำอย่างสม่ำเสมอตลอดกระบวนการพัฒนาโปรแกรม และควรใช้เทคโนโลยีและเครื่องมือที่เหมาะสมในการทดสอบ

5. Evaluation and Approval

หลังจากที่โปรแกรมหรือระบบได้ถูกพัฒนาเสร็จสิ้นแล้ว ขั้นตอนต่อไปคือการประเมินและการอนุมัติ ซึ่งจะทำการตรวจสอบการทำงานของโปรแกรมหรือระบบว่าตรงตามความต้องการหรือไม่ โดยเฉพาะเรื่องความปลอดภัยและประสิทธิภาพของระบบ
ในการประเมินและการอนุมัตินั้น มีหลายวิธี แต่หลักๆ แล้วจะมีการทดสอบ (Testing) โดยผู้ทดสอบจะทำการทดสอบความสมบูรณ์และความถูกต้องของโปรแกรมหรือระบบตามข้อกำหนดที่กำหนดไว้ ซึ่งการทดสอบสามารถแบ่งเป็นหลายประเภทได้ เช่น

  • Unit Testing: การทดสอบระดับหน่วยงาน เช่น การทดสอบการทำงานของฟังก์ชั่นหนึ่งๆ ในโปรแกรม
  • Integration Testing: การทดสอบการทำงานร่วมกันของหน่วยงานหลายๆ ในโปรแกรม หรือการทดสอบการทำงานร่วมกันของระบบย่อยหลายๆ ซึ่งประกอบกันเป็นระบบใหญ่
  • System Testing: การทดสอบระบบในรูปแบบที่มีความคล้ายคลึงกับการใช้งานจริง
  • Acceptance Testing: การทดสอบโดยผู้ใช้งานจริง เพื่อตรวจสอบว่าระบบสามารถทำงานได้ตามความต้องการหรือไม่

6. Deployment

หลังจากที่ได้ทำการพัฒนาและทดสอบแอปพลิเคชันเสร็จสิ้นแล้ว ขั้นตอนต่อไปคือการนำแอปพลิเคชันไปใช้งานจริง หรือที่เรียกว่าการ Deployment ซึ่งจะประกอบไปด้วยขั้นตอนดังนี้

  • การเตรียมพร้อมสภาพแวดล้อม: การเตรียมแวดล้อมให้เหมาะสมกับการ Deploy โดยเฉพาะอย่างยิ่งถ้าเป็นการ Deploy บน Production Environment จะต้องมีการเตรียมตัวอย่างดีเพื่อลดความเสี่ยงที่จะเกิดข้อผิดพลาดขณะ Deploy
  • การสร้าง Package: ขั้นตอนต่อไปคือการสร้าง Package หรือชุดไฟล์ของแอปพลิเคชันที่จะถูก Deploy โดยปกติแล้วจะใช้เครื่องมือที่ช่วยสร้าง Package อย่างเช่น Maven, Gradle, NPM ซึ่งจะสร้างไฟล์ที่เหมาะสมสำหรับการ Deploy ในรูปแบบที่ต้องการ
  • การ Deploy: หลังจากที่ได้ Package แล้ว จะทำการ Deploy โดยมีหลายวิธีการเช่นการ Deploy ผ่าน Command Line Interface (CLI), การ Deploy ผ่านการใช้เว็บแอปพลิเคชัน, การ Deploy ผ่านเครื่องมือเฉพาะของระบบ เป็นต้น
  • การทดสอบและตรวจสอบการ Deploy: หลังจากที่ได้ Deploy แอปพลิเคชันเสร็จแล้ว จะต้องมีการทดสอบและตรวจสอบการ Deploy โดยให้แน่ใจว่าแอปพลิเคชันทำงานได้ตามที่ควร และตรวจสอบปัญหาหรือข้อผิดพลาดที่อาจเกิดขึ้นในขณะที่ Deploy

7. Maintenance and Monitoring

หลังจากที่ซอฟต์แวร์ถูกนำเสนอและถูกใช้งานจริงแล้ว ก็จำเป็นต้องดูแลและรักษาซอฟต์แวร์อย่างต่อเนื่องเพื่อให้สามารถทำงานได้อย่างมีประสิทธิภาพและปลอดภัยตลอดเวลา ดังนั้น ขั้นตอนการ Maintenance and Monitoring จึงเป็นส่วนสำคัญของ Software Development Life Cycle (SDLC) โดยสามารถแบ่งออกเป็นขั้นตอนดังนี้

  • การทดสอบและการพัฒนาเพิ่มเติม: เมื่อพบบั๊กหรือปัญหาในการใช้งานซอฟต์แวร์ ทีมพัฒนาจะต้องแก้ไขปัญหาโดยทำการทดสอบและพัฒนาเพิ่มเติมเพื่อแก้ไขปัญหานั้นๆ
  • การประเมินและการอนุมัติ: หลังจากที่ทีมพัฒนาได้แก้ไขปัญหาแล้ว จะต้องมีการประเมินผลการแก้ไขปัญหาและการอนุมัติก่อนที่จะนำไปใช้งานจริง
  • การอัปเดต: หากมีการอัปเดตหรือการปรับปรุงซอฟต์แวร์ เช่น เพิ่มฟีเจอร์ใหม่ หรือแก้ไขปัญหา ทีมพัฒนาจะต้องนำซอฟต์แวร์ไปอัปเดตให้กับผู้ใช้งาน
  • การดูแลรักษา: ต้องมีการดูแลรักษาซอฟต์แวร์อย่างต่อเนื่องเพื่อให้มั่นใจว่าซอฟต์แวร์ยังสามารถทำงานได้อย่างปลอดภัยและมีประสิทธิภาพ

Top comments (0)