Friday, January 29, 2010

คุณภาพ Software

หลังจากเงียบหายไปนาน พอดีพักนี้หาอารมณ์ทางวิชาการยากเลยไม่ค่อยได้เขียน Blog นี้ แต่พอดี๊พอดีพึ่งเจอเรื่องเข้าเรื่องหนึ่ง คือต้องไปรับโปรเจคที่ทีมอื่นทำเอาไว้ แล้วพอมาศึกษาถึงโครงสร้างของตัวระบบที่ทีมนั้นทำไว้เลยทำให้นึกถึงเรื่องของคุณภาพของ Software ขึ้นมา
ปกติเวลาผมพัฒนาระบบขึ้นตามความต้องการของ User ผมจะเน้นที่ต้องทำให้เสร็จเร็วที่สุดก่อนถึงกำหนดและครบถ้วนตามความต้องการของ User ก่อน จากนั้นจึงเริ่มมองส่วนเสริมเพื่อให้ Software มีคุณภาพที่ดีขึ้น
จริงๆแล้วคุณภาพของ Software เป็นสิ่งที่วัดค่อนข้างยากเมื่อเปรียบเทียบกับ Product อื่น ยกตัวอย่างเช่น บ้าน ปกติเวลาเราเลือกซื้อบ้าน เราจะมีกฏเกณฑ์คร่าวๆเอาไว้ได้แก่ ต้องสวยถูกใจ ทำเลเดินทางสะดวก ราคาไม่แพงเกินไป ฯลฯ ซึ่งกฏเกณฑ์ข้างต้นคือ ความต้องการของเรา แล้วคุณภาพล่ะ? ปกติคนเรา(โดยเฉพาะคนไทย)มักจะมองคุณภาพเป็นผลพลอยได้ แต่ในความจริงแล้วคุณภาพคือสิ่งที่สร้างความพึ่งพอใจของเราในระยะยาวมากกว่าความต้องการของเราด้วยซ่ำไป
อย่างไรก็ดี คุณภาพของ Software ตามหลักเกณฑ์(ที่ได้เรียนมา)ประกอบไปด้วย
1. คุณภาพด้านการใช้งาน หรือ Usability หลักการง่ายๆในการพัฒนา Software ให้มีคุณภาพด้านการใช้งานที่ดีคือ ต้องทำให้ Software ที่สร้างขึ้นมานั้นง่ายที่จะเรียนรู้เพื่อใช้งานสำหรับมือใหม่ มีส่วนอำนวยความสะดวกให้สำหรับมือเก่าหรือผู้ใช้ที่เชียวชาญแล้ว เช่น พวก Shortcut ต่างๆ นอกจากนั้นต้องสามารถสามารถดักจับ Error ได้หากผู้ใช้ทำผิดพลาด และรับมือกับ Error ได้ดี คือ ข้อความ Error ต้องชัดเจนเป็นภาษามนุษย์ที่ผู้ใช้อ่านเข้าใจและสามารถนำข้อความ Error มาบอกเราได้
2. คุณภาพด้านประสิทธิภาพ หรือ Efficiency ได้แก่ ไม่กิน CPU-time, ใช้ Memory น้อย, ใช้พื้นที่ใน Disk น้อย, ใช้ Network Bandwidth น้อย, สรุปคือใช้ Resource ให้น้อยที่สุดเท่าที่จะทำได้ ซึ่งข้อนี้เด็กจบใหม่มักจะขาดหายไปหรือลืมนึกไปเสมอๆ เวลาเราคิด Argorithm ขึ้นมาอย่าพึ่งรีบใช้ ให้ลองคิดดูดีๆเสียก่อนว่ายังมี Argorithm อื่นอีกหรือเปล่าที่สามารถทำงานได้เร็วกว่านี้ ใช้ Memory น้อยกว่านี้ ซึ่งตามปกติแล้วการแก้ไขปัญหาใดๆ มันจะมีวิธีแก้ไขมากกว่า 1 วิธีเสมอ ไม่จำเป็นต้องคิดจนครบ แต่ลองคิดให้ได้มากกว่า 1 วิธี ก็จะทำให้เรามีทางเลือกมากขึ้น
3. คุณภาพด้านความทนทาน หรือ Reliability คือ ต้องมีข้อผิดพลาดน้อยที่สุด ไม่เกิด Error บ่อยๆ แต่ถ้าเกิดข้อผิดพลาดขึ้นก็ต้องแก้ไขได้โดยง่าย และใช้เวลาแก้ไขน้อยที่สุด ข้อนี้สำคัญมากถ้าเป็น Software ที่เราพัฒนาให้ลูกค้าที่ต้องนำระบบเราไป Operate งานเอง เราต้องมีวิธีแก้ไขข้อผิดพลาดได้ง่ายที่สุด ไม่ใช่ว่าต้องเข้าไปแก้ไขข้อมูลใน Database เสียก่อนจากนั้นทำการ... และ... จึงจะหาย
4. คุณภาพด้านการบำรุงรักษา หรือ Maintainability คือ ระบบควรจะสามารถรองรับการเปลี่ยนแปลงที่จะเกิดขึ้นได้ และมีความยืดหยุนที่จะเปลี่ยนแปลงแก้ไข เช่น สามารถแก้ไข Configuration ของระบบได้โดยง่ายไม่ต้องทำการ Restart ระบบก่อน นอกจากนั้นควรจะมี Monitoring Tool ที่สามารถแสดงสถานะของระบบและสภาพแวดล้อมของระบบว่าอยู่ในสภาพที่ดีหรือไม่ ซึ่งจะเป็นสิ่งที่ช่วยลดปัญหาที่จะเกิดขึ้นได้มาก
5. คุณภาพด้านการนำมาใช้ใหม่ หรือ Resusability คือ ระบบที่พัฒนาขึ้นมาควรที่จะสามารถนำไปติดตั้งที่ระบบอื่นหรือสภาพแวดล้อมอื่นได้ง่าย โดยแก้ไขเล็กน้อยหรือไม่ต้องแก้ไขเลย เช่น Web Application ที่พัฒนาขึ้นควรที่จะสามารถติดตั้งได้ทั้งบน Tomcat หรือ WebLogic ก็ได้
ดังนั้น หากคุณอยากจะหา Option เสริมหรือ Value Added ในระบบให้แก่ลูกค้า อย่างเช่นในเรื่องเครื่องบินกระดาษที่ผมเสนอขึ้นมา คุณควรจะเสริมในแง่ของคุณภาพดีที่สุด เช่นถ้าเป็นเครื่องบินกระดาษ ก็ใช้กระดาษคุณภาพดี เบา กันน้ำ เวลาพับก็พับให้เรียบไม่ยับ วิธีการพับก็หาวิธีที่สามารถบินได้ไกลและลอยอยู่บนอากาศได้นาน เป็นต้น

ที่มา http://bomber.exteen.com/20040729/software

No comments: