SE for non-tech day 04
สวัสดีคับ, บทความนี้ เป็นเอกสารประกอบการเรียน สำหรับ คอส SE for non-tech people ที่เน้นสอนคนที่ไม่ใช่สาย Tech ให้ออกแบบและจัดทำระบบอย่างง่ายได้ โดยในวันนี้ จะเป็นการ สร้าง Backoffice Web application อย่างง่าย ออกมาจริงๆนะคับ, โดยเราจะใช้ความรู้จากการเรียนวันที่ 1–3, และความรู้ในการใช้ GPT ในการช่วยวิเคราะห์ และออกแบบระบบ จากการเรียนในวันนี้ นะครับ
เอกสารประกอบการเรียนของวันก่อนหน้า
วันที่ 02 https://medium.com/t-t-software-solution/software-engineer-for-non-tech-people-day-02-e925d3bfa308
วันที่ 03 https://medium.com/t-t-software-solution/se-for-non-tech-day-03-44d0e78359a9
ทบทวนวิธีวิเคราะห์ระบบอย่างง่าย กันก่อน
สำหรับผู้ที่ไม่ได้เรียนสาย tech หรือเปลี่ยนอาชีพมา ผมแนะนำให้ออกแบบระบบอย่างง่าย ตามขั้นตอนดังนี้, ซึ่งได้สอนอย่างละเอียดในวันที่ 01 ไปแล้ว
- จัดเตรียมข้อมูลระบบที่จะวิเคราะห์ (Business Context)
- กิจกรรมหลักของระบบมีอะไรบ้าง
- แต่ละกิจกรรม, มีตารางเก็บข้อมูลและฟิล อย่างไรบ้าง
- ระบบที่จัดทำ ควรมีหน้าจออะไรบ้าง
- ระบบที่จัดทำ ควรมีกลุ่มผู้ใช้งานเป็นใครบ้าง และแต่ละกลุ่มควรมีสิทธิทำอะไร ในหน้าจอไหน
โดยสำหรับระบบตัวอย่าง ที่จะนำมาวิเคราะห์แบบรวบรัด คือ การบ้านตัวอย่างที่ 01 ของการสอนในวันที่ 01 ซึ่งมี Business Context ดังนี้
ต้องการระบบบริหารจัดการ ศูนย์ซ่อม ยานอวกาศ สากล ซึ่งมีหน้าที่บริหารจัดการ การจองซ่อมยาน, การบริหารการซ่อม, การคิดค่าใช้จ่ายและการรับชำระ
ศูนย์ซ่อม ยานอวกาศสากล รองรับการซ่อมยานระดับจักวาล โดยอ้างอิง มิติเวลาของโลก
มูลค่าการซ่อม จะใช้หน่วยมูลค่าสากลของจักรวาล ชื่อหน่วยว่า EA
ศูนย์ซ่อม สามารถรับชำระเป็นสิ่งของได้ เช่น น้ำมัน, แก๊ส, แร่ธาตุจากต่างจักรวาล และทุกอย่าง จะต้องสามารถแปลงเป็นมูลค่าสากล EA ได้
ผู้บริหาร สามารถดูรายงานได้ ตามความเหมาะสม
มาลองใช้ GPT ช่วยวิเคราะห์ระบบกันครับ
ก่อนใช้ GPT คุณควรฝึกวิเคราะห์ด้วยตัวเอง มาก่อนแล้ว, ในการใช้ GPT นี้ จะเป็นตัวช่วยอำนวยความสะดวก ทำให้เราทำงานได้ไวขึ้น ลดเวลาในการคิด และตกผลึกลง โดยขั้นตอนการใช้ GPT ช่วย มีขั้นตอนดังนี้
- ทำการสร้าง Prompt และสอบถามไปยัง GPT
- วิเคราะห์คำตอบของ GPT ก่อนนำไปใช้งานจริง
โดยผมแนะนำ Prompt อย่างง่าย ดังนี้
คุณคือ Software Engineer, จงวิเคราะห์ระบบ และตอบคำถามต่อไปนี้:
1.กิจกรรมหลักของระบบมีอะไรบ้าง
2.แต่ละกิจกรรม, มีตารางเก็บข้อมูลและฟิล อย่างไรบ้าง
3.ระบบที่จัดทำ ควรมีหน้าจออะไรบ้าง
4.ระบบที่จัดทำ ควรมีกลุ่มผู้ใช้งานเป็นใครบ้าง และแต่ละกลุ่มควรมีสิทธิทำอะไร ในหน้าจอไหน
ข้อมูลระบบที่จะให้วิเคราะห์:
{Business Context}
โดยตัวอย่างที่ผมทำ จะเป็นตามข้างล่างนี้
ซึ่งเมื่อทดลองนำไปถาม GPT จะได้คำตอบ ดังนี้
วิเคราะห์คำตอบของ GPT ก่อนนำไปใช้งานจริง
โดยปกติ เมื่อเราได้คำตอบจาก GPT เราจะเชื่อมันไม่ได้ในทันที, โดยสำหรับการวิเคราะห์และออกแบบระบบนี้, หลังจาก เห็นคำตอบข้างต้นแล้ว ผมแนะนำว่า ควรรวบรวมความต้องการเพิ่มเติม โดยมีลำดับการคิดดังนี้
- ลองดูตัวอย่าง Application หรือเอกสาร ที่คล้ายๆกันในท้องตลาด ประกอบ โดยในข้อนี้ ขอให้ผู้เรียนลองดูด้วยตนเอง โดยเอาคำค้นเหล่านี้ ไปลองหาดู, แบบฟอร์มใบจองซ่อมรถ, ใบเสร็จ/ใบวางบิลค่าซ่อมรถ, จากนั้น นำมาทบทวนกับระบบที่กำลังออกแบบ => การทำในขั้นตอนนี้ เพื่อเปิดมุมมองของเราให้กว้างขึ้นก่อนที่จะเริ่มเก็บข้อมูลจากลูกค้า
- สำหรับ การพัฒนาระบบให้ลูกค้า เฉพาะราย, ให้ขอเอกสารต่างๆที่เกี่ยวกับระบบที่จะจัดทำ จากลูกค้า เพื่อดูว่า ลูกค้ากรอกข้อมูลจริงอย่างไร, มีการใช้งานจริงอย่างไร => ในขั้นนี้ จะทำเพื่อ หาความต้องการที่ชัดเจนขึ้น จากลูกค้า
- สำหรับ การพัฒนาระบบให้เป็น Product, ให้วิเคราะห์ความต้องการของตลาด และจุดขายที่เราต้องการนำเสนอแก่ลูกค้า โดยอาจมีการสอบถามข้อมูลจากตัวอย่างลูกค้าเพิ่มเติม เพื่อให้โครงการมีทิศทางการวิเคราะห์ออกแบบ โดยอิงจากความต้องการจริง
- ทดลองรันระบบ ในหัวตัวเองก่อน แล้วหาความสมเหตุสมผล ในการวิเคราะห์ และ ออกแบบระบบ จากนั้น อาจทำ 1–3 กลับไปกลับมา จนได้แนวทางการออกแบบที่ต้องการ
- คุณมีข้อจำกัดการพัฒนาหรือไม่ และ บริหาร ข้อจำกัด อย่างไร
โดยหลังจากทำ 1–5 ดังกล่าวแล้ว คุณอาจพบว่า
- ตาราง Spacecraft มาฟิลข้อมูลที่เก็บน้อยเกินไป และ ขาดรูปภาพ
- ขาดตาราง User
- คุณอาจจะมีคำถาม เวลาออกแบบในส่วน Inventory, Exchange Rate และ Transection
- จำเป็นต้องมีตาราง Report หรือไม่
- การออกแบบ Time Zone จะออกแบบให้ เก็บข้อมูลเป็น GMT แต่ Display ที่ UI ตามเขตพื้นที่ ที่มนุษย์ต่างดาวนั้นๆ อยู่ โดยในจุดนี้ จะตัดออกไปก่อน
- สำหรับการ Demo นี้ จะทำในแนวทาง Minimum Viable Product (MVP) ด้วยเวลาที่จำกัด
- อื่นๆ ที่คุณอาจจะคิดถึง
ทดลองออกแบบระบบอย่างง่ายๆ
หลังจากที่วิเคราะห์ระบบแล้ว, ผมได้ออกแบบในแนว Minimum โดยมี Concept ดังนี้
- เอาเรื่อง Inventory ออกไปก่อน
- เน้นให้สามารถ บันทึกการจองซ่อมได้, บันทึกการซ่อมได้, บันทึกการชำระเงิน ได้
- มีข้อมูลเพียงพอสำหรับสร้าง report ง่ายๆได้
โดยเมื่อลองทบทวนว่า สามารถเก็บข้อมูลได้ตาม กิจกรรมหลัก หรือไม่ จะพบดังนี้
- การจองซ่อม — มีตาราง Booking ในการเก็บ
- การซ่อม — มีตาราง Repairs ในการเก็บ
- การชำระเงิน — มีตาราง Payment ในการเก็บ
- การดูรายงาน — สามารถออกรายงาน การจอง, การซ่อม, การชำระเงิน ได้
- Master Data — ข้อมูลที่ใช้ซ้ำๆกัน จะออกแบบให้มีตาราง Customers และ Users ในการเก็บ
ทดลองสร้าง Excel เพื่อ Generate Code
เพื่อจะได้ Gen Code ได้ตามที่สอนในวันที่ 03 ผมได้จัดทำไว้ดังนี้
ทำการสร้าง Application จริง
ผมได้จัดทำระบบขึ้นมา โดยเผยแพร่ผ่าน git นี้ไว้ โดยเป็นแบบ Public นะครับ, วิธีรัน ขอให้ศึกษาจาก บทความในวันที่ 02
nakornttss/UniversalSpacecraftRepairManagementSystem (github.com)
ซึ่งเมื่อนำโปรแกรมไปรัน จะได้ดังนี้
ใช้ GPT ช่วยสร้างข้อมูลจำลอง
คุณสามารถใช้ GPT สร้างข้อมูลจำลองขึ้นมาได้ ดังตัวอย่าง ต่อไปนี้
สรุปส่งท้าย
เมื่อมาถึงจุดนี้, คุณก็จะสามารถสร้าง Backoffice Web Application อย่างง่าย ขึ้นมาได้แล้ว โดยเวลาที่ใช้ในการทำตัวอย่างโปรเจคไม่มากนัก และมี code ที่พร้อม custom ต่อได้ หวังว่า บทความนี้ จะมีประโยชน์ สำหรับผู้ที่เข้าเรียน SE For non-tech people นะครับ