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

ดิฉันได้ให้ข้อเสนอแนะแก่ทีมวิจัยตามความรู้และประสบการณ์ที่มีอยู่ใน 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