ดิฉันเป็นที่ปรึกษาให้กับงานวิจัยพัฒนาระบบชิ้นหนึ่ง เมื่อได้อ่านจากการศึกษาเอกสารแสดงความก้าวหน้าของโครงการ ผลการประชุมเชิงปฏิบัติการเพื่อพัฒนาศักยภาพและกรอบแนวคิดในการดำเนินงาน และ แนวทางการศึกษาปัญหาและความต้องการใช้ข้อมูล อ่านแล้วก็เห็นสัจธรรมหลายๆ อย่างของแนวทางการพัฒนาระบบของประเทศไทยที่ทำให้เกิดปัญหาที่เรื้อรังยากต่อการแก้ไข
ดิฉันได้ให้ข้อเสนอแนะแก่ทีมวิจัยตามความรู้และประสบการณ์ที่มีอยู่ใน 3 ประเด็นหลัก คือ basic software requirements, software development และ requirement gathering
1. Basic software requirements
จากการวิเคราะห์ปัญหาที่ผู้ใช้ประสบอยู่ สามารถสรุปได้ว่า ซอฟต์แวร์ระบบที่จะพัฒนาขึ้นนั้น ควรจะมีคุณสมบัติดังนี้ คือ
- ใช้งานง่าย เรียนรู้ง่าย จดจำการใช้งานได้ง่าย
- มีรูปลักษณ์ที่ดูน่าใช้ ดูมีความทันสมัย
- ไม่มีข้อผิดพลาดของการทำงานของระบบ
- ต้องนำมาใช้เพื่อเป็นการอำนวยการปฏิบัติได้จริง
- เป็น Centralized web-based system
- มีทีมงานของผู้พัฒนาระบบที่ให้คอยความช่วยเหลือตลอดเวลา
- มีคู่มือการใช้ที่เข้าใจง่าย และ มีการอบรมการใช้งานก่อนนำไปใช้จริง
2. Software development
จากการวิเคราะห์เอกสาร ขอเสนอแนะว่า
- ให้พัฒนาต่อยอดจากซอฟต์แวร์ XXXX เนื่องจากเป็นซอฟต์แวร์ที่ใช้อยู่แล้วและมีผู้ใช้มากที่สุดเมื่อเปรียบเทียบกับซอฟต์แวร์อื่น
- โดยพัฒนาให้เป็น Centralized web-based system
- พัฒนาให้เป็น Open-source system คือ เปิดเผยรหัสต้นฉบับ เพื่ออำนวยให้นักพัฒนาจากทั่วไทยสามารถเข้ามาช่วยพัฒนาได้
- มีคู่มือสำหรับนักพัฒนาโดยละเอียดเพื่อการพัฒนาต่อยอด
- บันทึกประสบการณ์ความรู้ที่ได้รับจากการพัฒนาระบบนี้เพื่อเป็น best practices ให้กับการพัฒนาระบบอื่นๆ ต่อไป
- สร้างทีมพัฒนาระบบ ซึ่งควรประกอบด้วย
i. ผู้พัฒนาระบบ XXXX
ii. ผู้พัฒนาต่อยอดระบบ XXXX ในแต่ละหน่วยงาน
iii. ผู้ใช้ระบบ XXXX ที่ใช้อยู่เป็นประจำ มีความเข้าใจระบบเป็นอย่างดี
iv. ทีมผู้พัฒนาระบบของโครงการวิจัย
3. Requirement gathering
- ควรเริ่มต้นโดยการวางแผนการทำ requirement gathering อย่างละเอียด
- กำหนดบทบาทและหน้าที่ของทีมผู้พัฒนาแต่ละท่านอย่างชัดเจน
- โดยเฉพาะผู้ใช้ระบบที่จะเข้ามาร่วมทีมนั้น จะต้องให้เขาเข้าใจบทบาทและหน้าที่อย่างชัดเจน พร้อมให้ความร่วมมือของทีมพัฒนา ให้เขารับรู้ความสำคัญของเขาต่อการพัฒนาระบบที่มีผู้ใช้เป็นศูนย์กลาง
- ในทีมพัฒนาจะต้องมีบุคคลที่มีความสามารถในการติดต่อสื่อสารในการช่วยอำนวยการสนทนาระหว่างผู้พัฒนาและผู้ใช้ซึ่งไม่มีความรู้เรื่องเทคโนโลยี
- เก็บ requirements โดยยึดเอาตัวชี้วัดและเป้าหมายของหน่วยงานกลางเป็นหลัก
- แบ่งกลุ่มผู้ใช้ระบบ ซึ่งอาจจะแบ่งโดย privilege levels หรือปัจจัยอื่นๆ เช่น feature การใช้ หรือ ความถี่ในการใช้ระบบ เป็นต้น
- วิธีการเก็บ requirements สามารถทำได้หลายอย่างควบคู่กัน ที่นอกเหนือจากการสัมภาษณ์ และ การสนทนากลุ่ม เพื่อการเก็บที่ครบถ้วนสมบูรณ์ เช่น document analysis, XXXX system analysis หรือ วิเคราะห์ซอฟต์แวร์อื่นสำหรับงานด้านนี้ที่ใช้อย่างแพร่หลาย ศึกษาจากปัญหาผู้ใช้ที่เก็บสะสมไว้แล้วจากทีม XXXX ทำ site visit เพื่อศึกษาการใช้งานจริง ทำ user survey และ ทำ use-case analysis เป็นต้น
- ทีมควรเป็นทีมเล็กๆ 2-3 ทีม ประกอบด้วยทีมละ 5-6 คน และเก็บ requirement คู่ขนานกันไป
- เก็บกฏเกณฑ์กติกาต่างๆ ที่ใช้ในการปฏิบัติงานให้ครบถ้วน เช่น การคำนวณค่าดัชนีต่างๆ หรือ ข้อจำกัดต่างๆ เป็นต้น
- เขียน requirements ที่เก็บได้ลงในแบบฟอร์มอย่างชัดเจน ไม่ว่าจะเป็น system features, system interface, security, performance เป็นต้น
- Modeling requirements ที่เก็บมาได้อย่างละเอียด
- ยึด data dictionary ของ XXXX เป็นหลัก แล้วศึกษา data dictionary ของแต่ฐานข้อมูลที่หน่วยงานต่างๆ สำหรับงานด้านนี้ แสดงการเชื่อมโยงไปยังฐานข้อมูลหลักของ XXXX
ขอบคุณสำหรับบทความดีดีนะครับ
กำลังทำรายงานหัวข้อนี้พอดีเลยครับ ^^