Software product quality คืออะไร
เมื่อกล่าวถึงคำว่า product เราหมายถึงสินค้าที่ผู้ผลิตเสนอต่อลูกค้าและเป็นสิ่งที่ตรงตามความต้องการของลูกค้า ส่วน quality คือ ในทางการตลาด คือความพึงพอใจระดับสูงที่เกิดกับลูกค้า
"Quality in a product or service is not what the supplier puts in. It is what the customer gets out and is willing to pay for." : Peter Ducker
ดังนั้น software product quality เราหมายถึงสิ่งที่สร้างความพึงพอใจระดับสูงแก่ลูกค้าจากโปรแกรมที่ส่งมอบ เป็นส่วนที่ลูกค้าจะได้สัมผัสจากการใช้งาน ไม่ว่าโปรแกรมนั้นจะพัฒนามาจาก tools ชนิดใดหรือกระบวนการใดก็ตาม เพราะคำว่า คุณภาพ เกิดขึ้นที่ลูกค้า มิได้เกิดที่ผู้ผลิต ดังคำที่ ปรมาจารย์ทางการตลาด Peter Ducker กล่าวไว้ว่า
Quality guru ท่านหนึ่งชื่อ Philip Crosby ผู้นำเสนอ management theory and quality management practices ที่เป็นที่ยอมรับทั่วโลก ได้นิยามถึง quality ว่าคือ "Conformance to requirements ซึ่งในทาง software คือ ตรงตามความต้องการของผู้ใช้ (มิใช่ตรงตามความต้องการของผู้เขียนโปรแกรม)
ส่วน Quality guru อีกท่านหนึ่งชื่อ Joseph M. Juran ผู้เป็นบิดาแห่ง Quality management ซึ่งเป็นหลักการที่ญี่ปุ่นใช้ในการจัดการด้านคุณภาพมายาวนานจนเป็นผู้นำตลาดในระดับโลกมาถึงทุกวัน ท่านกล่าวว่า Quality คือ "Fitness for use." และย้ำ ว่า Fitness is defined by the customer ดังนั้น การเลือกซื้อโปรแกรมที่ใหญ่หรือเล็กเกินไป จึงไม่สามารถสร้าง Quality ให้เกิดขึ้นได้
จะเห็นได้ว่า หากเราจะพูดถึง software ที่มีคุณภาพ เราจะต้องถือเอามุมมองของลูกค้าเป็นสำคัญ มิใช่มุมมองทางด้านผู้สร้าง software นั้น หรือมุมมองทางด้านเทคโนโลยีโดยที่ไม่ได้ให้ความสำคัญต่อความพึงพอใจของผู้ใช้งาน ดังนั้นเราจึงพบว่าการนําเสนอโครงการที่เกี่ยวกับ IT ที่ใช้ technology approach มักจะประสบความล้มเหลว เพราะจะเสนอมุมมองทางด้านเทคโนโลยีเป็นหลัก จนทําให้ละเลยความสาคัญของ people ware
ประเด็นที่ต้องพิจารณา Software product quality มีอะไรบ้าง
- Product quality
conformance to requirements คือ ตรงตาม user requirement จริงๆ
- Scalability
สามารถ upsize และ downsize ได้อย่างเต็มที่ และไม่บังคับให้ทุกหน่วยงานที่เล็ก ต้องใช้ระบบที่ใหญ่เทอะทะ เป็นการขี่ช้างจับตั๊กแตน และที่ต้องไม่ลืมคือCorrectness ของข้อมูล ทั้งการ scale up หรือ scale down ต้องสามารถทำได้อย่างร้อยเปอร์เซ็นต์
- Completeness
กรณีที่เป็นโปรแกรมสำเร็จรูปคือ มีความสมบูรณ์ตามที่ได้เสนอ มิใช่โปรแกรมที่ยังทำไม่เสร็จสมบูรณ์ ซึ่งเป็นการเสี่ยงอย่างยิ่งต่อความสำเร็จของโครงการ
- Absence of bugs
คือไม่เต็มไปด้วยบั๊ก ซึ่งในกรณีนี้มิได้หมายถึง โปรแกรมจะไม่มีบั๊กเลย และโปรแกรมใหญ่ๆทุกตัวมี bug ทั้งสิ้น แต่โปรแกรมที่ดี ไม่ควรเจอบั๊กรายวัน หรือเจอบั๊กแล้วไม่สามารถแก้ได้ในเวลาอันควร โดยที่ระบบไม่สามารถ recover ได้
Bug คืออะไรที่ยังไม่รู้ว่ามีอยู่และอยู่ตรงไหน และเมื่อใดที่เจอแล้ว มันจะไม่เป็น bug อีกต่อไป
- Fault-tolerance
คือทนต่อความผิดพลาดที่คาดไม่ถึง ซึ่งโปรแกรมที่ออกแบบมาอย่างดี จะสามารถปรับตัว และเดินหน้าได้ตลอดเวลา ซึ่งการกระทบกระเทือนอาจจะมาจาก Hardware OS DBMS Network รวมทั้งแรงกระทบจากเทคโนโลยีใหม่ๆ ดังนั้น software เหล่านี้จึงต้องมีความสามารถที่จะ
- Extensibility คือขยายความสามารถให้ครอบคลุม environment ใหม่ๆ และเทคโนโลยีใหม่ๆ
- Maintainability คือสามารถบำรุงรักษาได้อย่างไม่ขาดช่วง ในทุกๆสถานการณ์
การที่ผู้ผลิตรายใดก็ตามที่อยู่ในตลาดมายาวนาน และสามารถพัฒนาโปรแกรมอย่างต่อเนื่อง สามารถ migrate ระบบของลูกค้ารุ่นเก่าๆ มา version ใหม่ได้ 100% และระบบต่างๆก็สามารถ link กันได้ 100% เป็นตัวชี้วัดความเป็น fault-tolerance ของ software ได้เป็นอย่างดี
- Documentation
Software จะมีคุณภาพดีได้นั้น จะต้องตอบสนองความต้องการของผู้ใช้จึงจะสร้างความพึงพอใจของผู้ได้ หาก software ที่เขียนมาดีมาก แต่ผู้ใช้ไม่สามารถนำความสามารถเหล่านั้นมาใช้ ก็ไม่สามารถสร้าง quality ได้ ดังนั้นคู่มือการใช้งานที่เพียงพอจึงเป็นส่วนสำคัญที่จะทำให้ผู้ใช้ได้เข้าถึงความพึงพอใจสูงสุดได้
http://en.wikipedia.org/wiki/Software_quality
http://en.wikipedia.org/wiki/Quality
|