การพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End | Software Development with Back-End Technology : 1-4-3


รหัสวิชา
Course Code
31901-2005

ทฤษฎี-ปฏิบัติ-หน่วยกิต
Theory-Practice-Credits
1-4-3

ชื่อวิชา
Course Name
การพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End
Software Development with Back-End Technology

ผลลัพธ์การเรียนรู้ระดับรายวิชา
Learning outcomes at the course level

พัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ออกแบบและพัฒนา API (Application Programming Interface) สำหรับให้บริการ Web Service ตามหลักการ ด้วยความละเอียดรอบคอบ รับผิดชอบ การสื่อสาร การคิดเชิงนวัตกรรมและการทำงานเป็นทีม

===============================================
ประยุกต์ใช้หลักการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ออกแบบและพัฒนา API (Application Programming Interface) สำหรับให้บริการ Web Service


จุดประสงค์การเรียนรู้ เพื่อให้
Objective To

1. เข้าใจการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End
2. มีทักษะการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End
3. มีเจตคติและกิจนิสัยที่ดีในการปฏิบัติงานด้วยความละเอียดรอบคอบ รับผิดชอบ การสื่อสารการคิดเชิงนวัตกรรมและการทำงานเป็นทีม
4. มีความสามารถประยุกต์ใช้หลักการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ในงานอาชีพ


สมรรถนะการเรียนรู้
Performance

1. ประมวลความรู้เกี่ยวกับหลักการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ตามหลักการ
2. พัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ตามหลักการและกระบวนการ
3. ทดสอบและแก้ไขข้อผิดพลาดของซอฟต์แวร์ ตามหลักการและกระบวนการ
4. จัดทำคู่มือการใช้งานตามหลักการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End
5. ประยุกต์ใช้หลักการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ในงานอาชีพ


คำอธิบายรายวิชา
Description

ศึกษาและปฏิบัติเกี่ยวกับหลักการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ความหมาย ความสำคัญ ประโยชน์ ของการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End แนวคิด Application Programming Interface (API) ประเภทของ API การเลือกใช้เครื่องมือและเทคโนโลยีภาษาสมัยใหม่สำหรับ การพัฒนาซอฟต์แวร์ การออกแบบและการสร้าง API Endpoint สำหรับให้บริการกับโปรแกรมภายนอก (Web/Mobile/Desktop Application) การใช้ RESTful Web Service ดำเนินการพัฒนาโปรแกรมแบบ Integration การจัดการข้อมูลด้วย HTTP Methods ระบบความปลอดภัยของ Web Service การติดต่อฐานข้อมูล SQL/NoSQL การใช้เครื่องมือทดสอบ API หาจุดผิดพลาด ตามบันทึกข้อผิดพลาด แก้ไขข้อผิดพลาดของ โปรแกรม ทดสอบการแก้ไขข้อผิดพลาดของโปรแกรม อ่าน Functional/Program Specification/UML เขียนโปรแกรมตาม Functional/Program Specification/UML ออกแบบการทดสอบ Integration Test ดำเนินการทดสอบ Integration Test ทดสอบโปรแกรมแบบ Integration Test จัดทำรายงาน ศึกษาการใช้งาน โปรแกรมที่พัฒนาขึ้น จัดทำคู่มือการใช้งานโปรแกรม ตรวจสอบความถูกต้องของคู่มือการใช้งานโปรแกรม การส่งมอบซอฟต์แวร์เพื่อให้สามารถใช้งานได้
==============================================================
ศึกษาและปฏิบัติเกี่ยวกับหลักการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End ความหมาย ความสำคัญ ประโยชน์ ของการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End แนวคิดการสร้างส่วนต่อประสานโปรแกรมประยุกต์ (Application Programming Interface หรือ API) ประเภทของ API เลือกใช้เครื่องมือและเทคโนโลยีภาษาสำหรับการพัฒนาซอฟต์แวร์ การออกแบบและการสร้าง API Endpoint สำหรับให้บริการ Web Service กับโปรแกรมภายนอก (Web Application, Mobile Application, Desktop Application) การใช้ RESTful Web Service กลไกลการแลกเปลี่ยนข้อมูลทางอินเทอร์เน็ต (SOAP,REST ) รูปแบบข้อมูล HTML, XML, JSON หรือ format อื่น ๆ การจัดการข้อมูลแบบ GET, POST, PUT, PATCH, DELETE และกระบวนการอื่น ๆ ระบบความปลอดภัยของ Web Service การติดต่อฐานข้อมูล SQL หรือ NoSQL การใช้เครื่องมือทดสอบ API การสร้างเอกสาร API (API Document) การอัพโหลดขึ้นเซิร์ฟเวอร์ (Deployment)
จัดทำคู่มือการใช้งานโปรแกรม(บรรยายการทำงานของโปรแกรม บรรยายการใช้งานโปรแกรม บรรยายข้อจำกัดการใช้งานโปรแกรม สร้างคู่มือการใช้งานโปรแกรม รวบรวมฟังก์ชันการทำงานของโปรแกรมสร้างแบบตรวจสอบความถูกต้องของคู่มือการใช้งานโปรแกรม ตรวจสอบแบบตรวจสอบความถูกต้องของคู่มือการใช้งานโปรแกรม ตรวจสอบคู่มือการใช้งานโปรแกรมตามแบบฟอร์มที่กำหนด) (**frontend/backend**)
ทดสอบโปรแกรมแบบ Integration Test(กำหนด/ตรวจสอบเงื่อนไข Entry Criteria , วิเคราะห์ SRS (ในมุมของIntegration) , จัดทำ/ปรับปรุง Test Case ทั้ง Functional/non-Functional (ในมุมของ Integration Test ให้สอดคล้อง SRS version) , จัดทำ checklist (ในมุมของIntegration) , จัดทำ test plan (ในมุมของIntegration) define exit criteria/) , จัดทำ test strategy , ดำเนินการ verify Software/SRS version , ทดสอบ Component/Unit Integration , ทดสอบ System/Service Integration , บันทึกผลการทดสอบแต่ละ Test Case , ระบุระดับของ Defect , วิเคราะห์และสรุปผลการทดสอบ Integration Test (Defect/Severity/rework) , รายงานและนำเสนอผลการทดสอบ Execution Test (ประเมิน exit criteria) (**frontend/backend**)
แก้ไขข้อผิดพลาด (ระบุตำแหน่งจุดที่มีข้อผิดพลาด อธิบายสาเหตุของข้อผิดพลาดที่เกิดขึ้น อธิบายผลกระทบจากข้อผิดพลาดที่เกิดขึ้นกับโปรแกรมย่อย เสนอหรือแนะนำวิธีการแก้ไขข้อผิดพลาดในแต่ละจุด รวจสอบจุดอ่อนหรือช่องโหว่ของโปรแกรม แก้ไขจุดผิดพลาดตามที่มีการระบุตำแหน่งไว้แล้ว อธิบายวิธีการแก้ไขข้อผิดพลาดที่เกิดขึ้น แก้ไขจุดอ่อนหรือช่องโหว่ของโปรแกรม กำหนดแผนการทดสอบโปรแกรมย่อยหลังรับการแก้ไขจุดผิดพลาดแล้ว แผนการทดสอบโปรแกรมย่อยต้องเป็นไปตามลำดับการทำงานของโปรแกรม แผนการทดสอบโปรแกรมย่อยต้องคำนึงถึงความมั่นคงปลอดภัยโดยการเลือกวิธีป้องกัน) (**frontend/backend**)


อ้างอิงมาตรฐาน
Reference

มาตรฐานอาชีพ สถาบันคุณวุฒิวิชาชีพ อาชีพ นักพัฒนาระบบ ระดับ 4

===============================================
1. มาตรฐาน มาตรฐานอาชีพและคุณวุฒิวิชาชีพ หน่วยงาน TPQI รหัส ICT-TGWL-008B อาชีพ อาชีพนักพัฒนาระบบ ระดับ 4


หน่วยสมรรถนะ
Unit Of Criteria (UOC)

1.แก้ไขข้อผิดพลาด
2.ดำเนินการพัฒนาโปรแกรมแบบ Integration
3.ทดสอบโปรแกรมแบบ Integration Test
4.จัดทำคู่มือการใช้งานโปรแกรม


หน่วยสมรรถนะย่อย
Elements Of Criteria (EOC)

1.1. หาจุดผิดพลาด ตามบันทึกข้อผิดพลาด
1.2. แก้ไขข้อผิดพลาดของโปรแกรม
1.3. ทดสอบการแก้ไขข้อผิดพลาดของโปรแกรม
2.1.อ่าน Functional/ Program Specification/ UML
2.2.เขียนโปรแกรมตาม Functional/ Program Specification/ UML
3.1 ออกแบบการทดสอบ Integration Test
3.2 ดำเนินการทดสอบ Integration Test
3.3 จัดทำรายงาน
4.1 ศึกษาการใช้งานโปรแกรมที่พัฒนาขึ้น
4.2 จัดทำคู่มือการใช้งานโปรแกรม
4.3 ตรวจสอบความถูกต้องของคู่มือการใช้งานโปรแกรม


เกณฑ์ในการปฏิบัติงาน
Performance Criteria (PC)

1.1.1 ระบุตำแหน่งจุดที่มีข้อผิดพลาด
1.1.2 อธิบายสาเหตุของข้อผิดพลาดที่เกิดขึ้น
1.1.3 อธิบายผลกระทบจากข้อผิดพลาดที่เกิดขึ้นกับโปรแกรมย่อย
1.1.4 เสนอหรือแนะนำวิธีการแก้ไขข้อผิดพลาดในแต่ละจุด
1.1.5 ตรวจสอบจุดอ่อนหรือช่องโหว่ของโปรแกรม
1.2.1 แก้ไขจุดผิดพลาดตามที่มีการระบุตำแหน่งไว้แล้ว
1.2.2 อธิบายวิธีการแก้ไขข้อผิดพลาดที่เกิดขึ้น
1.2.3 แก้ไขจุดอ่อนหรือช่องโหว่ของโปรแกรม
1.3.1 กำหนดแผนการทดสอบโปรแกรมย่อยหลังรับการแก้ไขจุดผิดพลาดแล้ว
1.3.2 แผนการทดสอบโปรแกรมย่อยต้องเป็นไปตามลำดับการทำงานของโปรแกรม
1.3.3 แผนการทดสอบโปรแกรมย่อยต้องคำนึงถึงความมั่นคงปลอดภัยโดยการเลือกวิธีป้องกัน
2.1.1 เขียน Pseudo code / Flowchart/ UML (เข้าใจลำดับ) ในระดับ Integration System
2.1.2 บอกผลลัพธ์ของ Functional/ Program Specification (เข้าใจผลลัพธ์) ในระดับ Integration System
2.2.1 แยกโมดูลย่อยตามพฤติกรรมการทำงาน ในระดับ Integration System
2.2.2 เขียนโปรแกรมตาม Functional/ Program Specification/ UMLในระดับ Integration System
2.2.3 ตรวจสอบผลลัพธ์ของโปรแกรมตามที่กำหนดใน Functional/ Program Specification/ UML

3.1.1. กำหนด/ตรวจสอบเงื่อนไข Entry Criteria
3.1.2. วิเคราะห์ SRS (ในมุมของIntegration)
3.1.3. จัดทำ/ปรับปรุง Test Case ทั้ง Functional/non-Functional (ในมุมของ Integration Test ให้สอดคล้อง SRS version)
3.1.4. จัดทำ checklist (ในมุมของIntegration)
3.1.5. จัดทำ test plan (ในมุมของIntegration) define exit criteria/)
3.1.6. จัดทำ test strategy
3.2.1. ดำเนินการ verify Software/SRS version
3.2.2. ทดสอบ Component/Unit Integration
3.2.3. ทดสอบ System/Service Integration
3.2.4. บันทึกผลการทดสอบแต่ละ Test Case
3.2.5. ระบุระดับของ Defect
3.3.1. วิเคราะห์และสรุปผลการทดสอบ Integration Test (Defect/Severity/rework)
3.3.2. รายงานและนำเสนอผลการทดสอบ Execution Test (ประเมิน exit criteria)

4.1.1 บรรยายการทำงานของโปรแกรม
4.1.2 บรรยายการใช้งานโปรแกรม
4.1.3 บรรยายข้อจำกัดการใช้งานโปรแกรม
4.2.1 สร้างคู่มือการใช้งานโปรแกรม
4.2.2 รวบรวมฟังก์ชันการทำงานของโปรแกรม
4.3.1 สร้างแบบตรวจสอบความถูกต้องของคู่มือการใช้งานโปรแกรม
4.3.2 ตรวจสอบแบบตรวจสอบความถูกต้องของคู่มือการใช้งานโปรแกรม
4.3.3 ตรวจสอบคู่มือการใช้งานโปรแกรมตามแบบฟอร์มที่กำหนด


การออกแบบหน่วยการเรียนรู้
Learning Unit Design

1. บทนำ
อธิบายความหมายและความสำคัญของการพัฒนาซอฟต์แวร์ด้วยเทคโนโลยี Back-End
ยกตัวอย่างเว็บไซต์และแอปพลิเคชันที่ใช้ Back-End
อธิบายถึงโอกาสและความท้าทายในสายงาน Back-End Developer

2. แนวคิดพื้นฐานของ Back-End
สถาปัตยกรรม Client-Server
ภาษาโปรแกรมสำหรับ Back-End เช่น Java, Python, PHP, Node.js
ฐานข้อมูล เช่น MySQL, PostgreSQL, MongoDB
Web Framework เช่น Spring Boot, Django, Laravel, Express.js

3. การออกแบบ API
หลักการออกแบบ API
รูปแบบ API เช่น RESTful API, JSON API
เครื่องมือสำหรับออกแบบ API เช่น Swagger, Postman

4. การพัฒนา API
การเขียนโค้ด API ด้วยภาษาโปรแกรมที่เลือก
การเชื่อมต่อ API กับฐานข้อมูล
การทดสอบ API
การ Deploy API

5. ความปลอดภัยของ Back-End
ภัยคุกคามต่อ Back-End
แนวทางปฏิบัติที่ดีที่สุดสำหรับความปลอดภัยของ Back-End
เครื่องมือสำหรับทดสอบความปลอดภัยของ Back-End

6. การจัดการข้อมูล
การจัดการข้อมูลใน Back-End
การ Query ข้อมูล
การ caching ข้อมูล

7. การ Monitoring และ Debugging
เครื่องมือสำหรับ Monitoring Back-End
เทคนิคการ Debugging Back-End

8. กรณีศึกษา
วิเคราะห์และออกแบบ API
พัฒนา API
ทดสอบและ Deploy API
นำเสนอผลงาน


แนวทางการสอน
Teaching Guidelines

เน้นการเรียนรู้แบบ Active Learning โดยให้นักเรียนมีส่วนร่วมในกิจกรรมต่างๆ เช่น การฝึกปฏิบัติ การอภิปราย การนำเสนอ
ใช้กรณีศึกษาและตัวอย่างจากโลกแห่งความเป็นจริง
ส่งเสริมให้นักเรียนคิดวิเคราะห์และแก้ปัญหา
เน้นทักษะการสื่อสารและการทำงานเป็นทีม


เครื่องมือ/แหล่งข้อมูล
Tools Resources

เครื่องมือ
เว็บเบราว์เซอร์ เช่น Chrome, Firefox
Text Editor เช่น Visual Studio Code, Sublime Text
เครื่องมือสำหรับพัฒนา Back-End ตามภาษาโปรแกรมที่เลือก
ฐานข้อมูล เช่น MySQL, PostgreSQL, MongoDB
เครื่องมือสำหรับออกแบบ API เช่น Swagger, Postman
เครื่องมือสำหรับทดสอบความปลอดภัยของ Back-End เช่น OWASP Top 10
เครื่องมือสำหรับ Monitoring Back-End เช่น ELK Stack
เครื่องมือสำหรับ Debugging Back-End เช่น Xdebug

แหล่งข้อมูล
หนังสือ: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/B09Y9XKBZR
เว็บไซต์: https://developer.mozilla.org/
เว็บไซต์: https://www.w3schools.com/
เว็บไซต์: https://www.freecodecamp.org/