การประกันคุณภาพซอฟต์แวร์ ตอนที่ 2 : การประกันคุณภาพต่างจากการควบคุมคุณภาพอย่างไร
การประกันคุณภาพต่างจากการควบคุมคุณภาพอย่างไร

เมื่อ กล่าวถึง QA เรามักคิดกันว่า QA ก็คือ tester นั่นแหละ มีหน้าที่ในการทดสอบโปรแกรมหรือซอฟต์แวร์ที่โปรแกรมเมอร์เขียน แต่จะมีซักกี่คนที่รู้ว่าจริงๆแล้ว QA เค้าทำอะไรกันบ้าง มาตามดูกันเลย
ผลิตผลที่ได้จากการผลิต ซอฟต์แวร์นั้น เป็นได้ทั้งสิ่งที่สามารถจับต้องได้ จับต้องไม่ได้ มองเห็นและมองไม่เห็น อาทิเช่น เอกสารข้อกำหนดความต้องการ หรือเอกสาต่างๆที่จัดทำขึ้นในกระบวนการผลิตซอฟต์แวร์, ข้อมูลที่ใช้สำหรับการทดสอบ ซอร์สโค้ด ชิ้นส่วนซอฟต์แวร์ หรือแม้แต่หน้าจอการทำงานของซอฟต์แวร์ นอกจากผลิตผล ที่ออกมาเป็นชิ้นงานดังกล่าวแล้ว การบริการก็ถือเป็นผลิตผลหนึ่งของการผลิตซอฟต์แวร์ด้วย อาทิเช่น การประชุมกับลูกค้า (meeting) การฝึกอบรม (training) และการให้ความช่วยเหลือ/แก้ปัญหาการใช้งานซอฟต์แวร์ (help desk) ผลิตผลด้านการบริการเหล่านี้ก็ต้องมีคุณลักษณะทางด้านคุณภาพเช่นกัน
ดังที่ได้กล่าวมาแล้วข้างต้นเกี่ยวกับความหมายของคุณภาพ ซึ่งหมายถึงการ “meeting requirements and customer needs” ซึ่งสามารถตีความได้ว่าผลิตภัณฑ์นั้นไม่มีข้อบกพร่อง หรือ “Defect-free” ทั้งในมุมของผู้ผลิตและผู้ใช้งาน และเพื่อให้ได้ผลิตภัณฑ์ที่ไม่มีข้อบกพร่อง จึงได้มีการนำวิธีการของการควบคุมคุณภาพและการประกันคุณภาพเข้ามาใช้ แต่ในปัจจุบันยังมีความเข้าใจที่คลาดเคลื่อนในความหมายของการควบคุมคุณภาพ (Quality Control) และการประกันคุณภาพ (Quality Assurance) บุคลากรที่ทำหน้าที่ด้านการประกันคุณภาพในปัจจุบันส่วนใหญ่ ยังทำหน้าที่ในการควบคุมคุณภาพโดยที่ยังไม่ได้นำหลักปฏิบัติในการประกัน คุณภาพมาใช้ในการผลิตซอฟต์แวร์นั้น จะต้องมีกระบวนการผลิตซึ่งประกอบด้วยกิจกรรมต่างๆที่เกิดขึ้นเพื่อให้สามารถ ผลิตออกมาเป็นซอฟต์แวร์ได้ ผู้ผลิตที่มีกระบวนการผลิตซอฟต์แวร์ที่สามารถทำซ้ำได้ จะสามารถผลิตซอฟต์แวร์ออกมาได้ด้วยคุณภาพที่คล้ายคลึงกับที่เคยผลิตออกมา แล้ว หลักการของการประกันคุณภาพนั้นจะเกี่ยวข้องกับกระบวนการผลิตซอฟต์แวร์ โดยหากผู้ผลิตซอฟต์แวร์มีกระบวนการผลิตที่คงเส้นคงวาแล้ว ก็สามารถให้การรับประกันกับลูกค้าได้ว่าลูกค้าจะได้รับมอบผลิตภัณฑ์ที่มี คุณภาพในระดับเดียวกับผลิตภัณฑ์ที่ได้จากกระบวนการผลิตดังกล่าว
การควบคุมคุณภาพ (Quality Control) หมายถึงกระบวนการ หรือวิธีการที่ใช้สำหรับ
การเปรียบเทียบคุณภาพของผลิตภัณฑ์ที่ผลิตออกมากับข้อกำหนดความต้องการ (requirements) และมาตรฐานต่างๆที่ใช้ในการผลิตซอฟต์แวร์
การดำเนินการอย่างใดอย่างหนึ่งหากพบสิ่งที่ไม่เป็นไปตามข้อกำหนดหรือมาตรฐาน
การควบคุมคุณภาพจะใช้วิธีการทบทวน (review) และทดสอบ (testing) เพื่อตรวจสอบ ค้นหาและแก้ไขข้อผิดพลาดก่อนที่จะส่งมอบผลิตภัณฑ์ การควบคุมคุณภาพ ควรเป็นหน้าที่รับผิดของหน่วยผลิตซอฟต์แวร์และควรรวมเข้าเป็นหนึ่งเดียวกับ กิจกรรมในการผลิตซอฟต์แวร์ ซึ่งอาจดำเนินการโดยทีมงานที่ผลิตซอฟต์แวร์เอง หรือจัดตั้งทีมงานเฉพาะที่ทำหน้าที่ในการควบคุมคุณภาพของผลิตภัณฑ์
อุปสรรคที่สำคัญที่ทำให้การดำเนินงานด้านการควบคุมคุณภาพไม่ประสบความสำเร็จมีดังนี้
การควบคุมคุณภาพถูกมองว่าเป็นการจับผิด
มักมีความเข้าใจว่างานการผลิตซอฟต์แวร์เป็นงานศิลปะ
กระบวนการหรือมาตรฐานที่ใช้ในการผลิตซอฟต์แวร์ไม่มีประสิทธิภาพ
ขาดการฝึกอบรมเกี่ยวกับกระบวนการ
การประกันคุณภาพ (Quality Assurance) เป็นการดำเนินกิจกรรมต่างๆ เพื่อให้มีกระบวนการพัฒนาซอฟต์แวร์ที่ดีและมีการปรับปรุงกระบวนการอย่างต่อ เนื่อง เพื่อให้องค์กรสามารถใช้กระบวนการดังกล่าวในการผลิตและส่งมอบผลิตภัณฑ์ (ซอฟต์แวร์และบริการ) ได้ตรงตามข้อกำหนดความต้องการและเป็นผลิตภัณฑ์ที่ผู้ใช้งานต้องการใช้งาน การประกันคุณภาพเป็นการป้องกันการเกิดปัญหา ผู้ที่ทำหน้าที่การประกันคุณภาพจะให้คำแนะนำและแนวทางที่ถูกต้องในเวลาที่ เหมาะสม รวมทั้งเป็นผู้ที่ทำให้เกิดการตื่นตัว สร้างความเข้าใจเกี่ยวกับแนวคิดด้านคุณภาพภายในองค์กรและสร้างทัศนคติที่ดี ด้านคุณภาพ ทำให้บุคลากรทั้งในระดับบริหารและระดับผู้ปฏิบัติเข้าใจและเห็นถึงประโยชน์ ของคุณภาพ รวมทั้งทำให้แนวคิดด้านคุณภาพนั้นกลายเป็นวินัยและเป็นส่วนหนึ่งของการทำงาน
หน้าที่หลักๆของการประกันคุณภาพ คือ
ทำให้เกิดกระบวนการ พัฒนาซอฟต์แวร์ กระบวนการควบคุมคุณภาพ กระบวนการบำรุงรักษาและกระบวนการอื่นๆที่เกี่ยวข้องกับการผลิตซอฟต์แวร์ที่ ดีและเหมาะสมสำหรับองค์กร
ประเมินผลกระบวนการที่กำหนดขึ้น เพื่อค้นหาจุดอ่อนและปรับปรุงกระบวนการอย่างต่อเนื่อง
อุปสรรคสำคัญที่ทำให้การดำเนินงานการประกันคุณภาพไม่ประสบความสำเร็จเท่าที่ควร ส่วนใหญ่มาจากผู้บริหารไม่ให้ความสำคัญ หรือไม่เห็นประโยชน์และไม่มีความต้องการด้านคุณภาพ นอกจากนั้น ตัวกระบวนการเองก็ยังมีส่วนที่ทำให้งานการประกันคุณภาพไม่สำเร็จ เช่น
ระดับบริหารไม่หนักแน่นพอหรือหละหลวมในการให้ทีมงานทำงานตามกระบวนการที่กำหนด
ผู้ปฏิบัติงานไม่เห็นความสำคัญของกระบวนการ
กระบวนการที่ใช้ล้าสมัย
เป็นกระบวนการที่ยากเกินไป
กระบวนการที่เลือกใช้ ไม่ตอบสนองต่อการผลิตซอฟต์แวร์
ผู้ปฏิบัติไม่ได้รับการฝึกอบรมเกี่ยวกับกระบวนการ
ไม่มีการวัดผล
มีการให้โทษกับผู้ปฏิบัติในการวัดผล
ในตอนถัดไป เราจะมาทำความเข้าใจกับคุณลักษณะของคุณภาพที่เราคาดหวังจากอฟต์แวร์กัน