วันเสาร์ที่ 28 มิถุนายน พ.ศ. 2557

กรณีศึกษาเกี่ยวกับคุณภาพซอฟแวร์


กรณีศึกษา:  ISO กับ SMEs”

             สภาวะการแข่งขันทางธุรกิจปัจจุบัน ทำให้องค์กรจำเป็นต้องมีเครื่องมือเพื่อใช้ในการสร้างความได้เปรียบในเชิงธุรกิจ ซึ่งนอกจากประสิทธิภาพการทำงาน คุณภาพของสินค้าและบริการซึ่งเป็นที่ยอมรับแล้ว การปรับปรุงกระบวนการทำงานให้ได้รับรองระบบคุณภาพมาตรฐานสากลต่างๆ  เช่น ISO-9001:2000, ISO 14001, ISO 18001, ISO/TS-16949,HACCP, GMP อันเป็นมาตรฐานซึ่งเป็นที่ยอมรับในระดับสากล และเป็นอีกหนึ่งปัจจัยที่ช่วยเสริมสร้างศักยภาพการแข่งขันขององค์กรด้านต่างๆ เช่น เพิ่มประสิทธิผลในการทำงาน พนักงานมีจิตสำนึกในเรื่องของคุณภาพมากขึ้น ทำให้เกิดพัฒนาการทำงานเป็นทีมหรือเป็นกลุ่ม มีการประสานงานที่ดี และสามารถพัฒนาตนเอง เกิดทัศนคติที่ดีต่อการทำงาน การจัดองค์กร การบริหารงาน การผลิต ทำให้การให้บริการมีระบบ และมีประสิทธิผล ผลิตภัณฑ์และบริการ เป็นที่พึงพอใจของลูกค้า หรือผู้รับบริการ ก่อให้เกิดภาพลักษณ์ที่ดีแก่องค์กร สร้างโอกาสทางการค้าสำหรับตลาดใหม่ และสามารถเพิ่มขีดความสามารถในการแข่งขันกับองค์กรขนาดใหญ่ได้


ความท้าทายของการควบคุมมาตรฐาน ISO ในองค์กร

            การปรับปรุงกระบวนการทำงานขององค์กร เพื่อให้เป็นไปตามมาตรฐาน ISO ต่างๆ องค์กรคงต้องพบกับปัญหาและอุปสรรคมากมาย ไม่ว่าจะเป็น เวลาที่ใช้ในการปรับกระบวนการของบุคลากร เพื่อการแก้ไขการทำงานต่างๆ ให้เป็นไปตามมาตรฐาน ความยุ่งยากในการตรวจติดตาม การสืบค้นเอกสารที่จะสนับสนุนการปฏิบัติงาน เกิดค่าใช้จ่ายที่มาจากการแก้ไขข้อบกพร่อง การปรับปรุงระบบคุณภาพมาตรฐานให้ดีขึ้นตามข้อกำหนดใหม่ๆ  นอกจากการปรับกระบวนการทำงานให้เป็นไปตามมาตรฐานสากลต่างๆแล้ว สำหรับองค์กรที่ได้รับการรับรองระบบมาตรฐาน ISO ต่างๆอยู่แล้ว คุณอาจจะพบปัญหาและข้อบกพร่องต่างๆ  ในการรักษาและพัฒนาระบบมาตรฐาน ISO อย่างต่อเนื่อง ไม่ว่าจะเป็น เอกสารในระบบคุณภาพ (Procedure,Work instruction, Form, Support Document) มีจำนวนมากขึ้น การจัดการระบบเอกสาร ( การแก้ไข, การอนุมัติ, การบังคับใช้, การจัดเก็บ,การยกเลิก) ติดตามและควบคุมได้ยากการตรวจประเมินภายในและภายนอก การค้นหาเอกสารประกอบการตรวจมีความล่าช้า, การติดตามสถานะ CAR ติดตามได้ยาก ไม่สามารถตรวจสอบประวัติผู้ตรวจติดตามได้, เอกสารที่เกี่ยวกับการฝึกอบรมของพนักงานที่จำเป็นเรียกดูได้ยาก, เอกสารที่เกี่ยวกับการสอบเทียบเครื่องมือ ประวัติการสอบเทียบ / ทวนสอบ เรียกดูได้ยากและไม่มีการ แจ้งเตือนเมื่อถึงกำหนดการสอบเทียบ, การประชุมทบทวนฝ่ายบริหาร ไม่มีการติดตามงานที่มอบหมายจากการประชุม อย่างจริงจัง


ISO Product

            เพื่อรับมือกับปัญหาต่างๆเหล่านี้ บริษัท เมจิกซอฟท์แวร์ (ประเทศไทย) จำกัด ได้ออกแบบซอฟต์แวร์ เพื่อนำมาประยุกต์ใช้กับการบริหารงานระบบคุณภาพ ช่วยลดปัญหาและ ข้อบกพร่องต่าง ๆ ที่เกิดจากการทำระบบ ซึ่งยังช่วยให้การรักษาและพัฒนา ระบบมาตรฐาน ISO เป็นไปอย่างมีประสิทธิภาพสูงสุด

            ซอฟต์แวร์ระบบควบคุมคุณภาพ ISO นี้มีให้เลือกใช้งาน 2 แพลตฟอร์ม ได้แก่ ISO Quality Control System (ISO QCS) ทำงานบนฐานข้อมูล Lotus Note และ eSMART ISO  และ Risk Assessment System ทำงานบนฐานข้อมูลของ Microsoft (***เปลี่ยนสีให้เด่น)(Web Base)(***จบ/เปลี่ยนสีให้เด่น) ต่างเป็นเป็นซอฟต์แวร์ระบบควบคุมคุณภาพ ISO ที่ถูกออกแบบและพัฒนาเพื่อให้การทำงานขององค์กรเกิดประสิทธิภาพตามมาตรฐานต่างๆ ลดข้อผิดพลาดในการทำงานตามระบบมาตรฐาน อีกทั้งยังช่วยให้องค์กรสามารถรักษาการรองรับมาตรฐาน ISO และขยายขอบเขตการรองรับมาตรฐานเพิ่มเติมได้อีกด้วย


ซอฟต์แวร์ระบบคุณภาพ ISO

            มาพร้อมกับฟังก์ชันการทำงานต่างๆที่ครอบคลุมทุกกระบวนการของระบบมาตรฐานคุณภาพ ไม่ว่าจะเป็น การควบคุมและจัดการเอกสาร การตรวจและติดตาม การประสานงาน แจ้ง และบันทึกรายงานการประชุม การออกรายงาน CAR/PAR การจัดทำแบบสำรวจต่างๆ เป็นต้น ซึ่งซอฟต์แวร์ ISO QCS และ e-SMART ISO และ Risk Assessment System จะช่วยเพิ่มประสิทธิภาพ ในการบริหารจัดการ รวมถึงการรักษา และพัฒนาระบบคุณภาพขององค์กร ลดปัญหาและแก้ไข เรื่องข้อบกพร่องที่อาจจะเกิดขึ้น ได้อย่างถูกต้อง ตรงประเด็น


ประโยชน์ของการใช้ซอฟต์แวร์ระบบควบคุมคุณภาพ ISO

            ประโยชน์ที่องค์กรจะได้รับจากการนำซอฟต์แวร์ ISO QCS และ e-SMART ISO และ Risk Assessment System มาใช้งาน ตัวอย่างเช่น ประหยัดเวลาในการ Implement, เรียนรู้และการใช้งาน สามารถติดต่อสื่อสารทุกๆ ขั้นตอนด้วยระบบ E-Mail ทำให้ช่วยลดปัญหาด้านการติดต่อสื่อสารภายในองค์กร  สามารถติดตามสถานะของเอกสารด้วยระบบ Online  สามารถสืบค้นเอกสารประกอบการปฏิบัติงานได้ทันที  รองรับการทำงานแบบ Multi User รองรับการปฏิบัติงานร่วมกับไฟล์มัลติมีเดียต่างๆ มีระบบ Document Tracking ลดพื้นที่ในการจัดเก็บเอกสาร  ลดการใช้กระดาษในสำนักงาน  ลดค่าใช้จ่ายระยะยาว  การรักษาระบบมาตรฐานมีประสิทธิภาพมากยิ่งขึ้น  เพิ่มประสิทธิภาพในการขยายขอบเขตการรองรับมาตรฐาน ISO เพิ่มเติมเป็นต้น





กรณีศึกษา: โปรแกรมคอมพิวเตอร์
ในรถยนต์ Toyota Prius ทำงานผิดพลาด



            เดือนพฤษภาคม ค.ศ.2005 องค์กรบริหารความปลอดภัยทางการจราจรบนทางหลวงแห่งชาติ สหรัฐอเมริกา (The National Highway Traffic Safety Administration: NHTSA)ได้มีการตรวจสอบเครื่องยนต์ตามคำร้องเรียนของผู้ใช้รถ Toyota Prius Hybrid  จำนวนมาก โดยในคำร้องเรียนนั้นกล่าวว่า ในขณะที่พวกเขากำลังขับรถ หรือจอดรถในขณะรถติดอยู่นั้น ได้มีไฟเตือนสว่างขึ้นและทันใดนั้นโหมดพลังงานแก๊สก็ถูกตัดการทำงานอย่างไรก็ตาม ผู้ใช้รถยังสามารถขับรถหลบเข้าข้างทางได้ เนื่องจากระบบมอเตอร์ไฟฟ้า ระบบพวงมาลัย และระบบเบรกยังสามารถใช้งานได้

            ในประเทศสหรัฐอเมริกา รถยนต์ที่ได้รับความนิยมเป็นอันดับสอง คือ Toyota Prius ด้วยระบบการทำงานที่สามารถสลับเปลี่ยนไป-มาได้ระหว่างพลังงานแก๊สและมอเตอร์ไฟฟ้า โดยมีระบบควบคุมด้วยไฟฟ้าที่ช่วยให้สลับพลังงานเป็นไปอย่างราบรื่น จากการร้องเรียนของงผู้ใช้รถ ทำให้บริษัท Toyota ได้ออกมายอมรับว่าความผิดพลาดที่เกิดขึ้นที่ระบบควบคุมด้วยไฟฟ้า เกิดจากการทำงานที่ผิดปกติของระบบและแผงเครื่องยนต์แก๊ส

            ปัจจุบัน ในรถยนต์ส่วนใหญ่มี Microprocessor เป็นส่วนประกอบประมาณ 30-40 ชิ้น รวมทั้งโค้ดโปรแกรมอีกมากกว่า 35 ล้านบรรทัด  ดังนั้น คุณภาพของซอฟต์แวร์จึงเป็นเรื่องสำคัญสำหรับผู้ผลิตรถยนต์ คุณ Stavros Stefanis ผู้เชี่ยวชาญด้านซอฟต์แวร์ในรถยนต์จาก IBM กล่าวว่า 1 ใน 3 ของการเคลมประกันรถยนต์ เป็นผลมาจากความบกพร่องของซอฟต์แวร์และระบบไฟฟ้า และความบกพร่องดังกล่าวก็ทำให้บริษัทผู้ผลิตรถยนต์หลายรายต้องสูญเสียเงินเป็นจำนวนมากไปกับการเรียกคืนรถเพื่อชดเชยความเสียหายให้กับลูกค้า นอกจากนี้ยังเสี่ยงต่อการฟ้องร้องดำเนินคดีอีกด้วย

            องค์บริหารความปลอดภัยทางจราจรบนทางหลวงแห่งชาติ สหรัฐอเมริกา (NHTSA) ได้เริ่มทำการสืบสวนทางบริษัท Toyota ได้ให้ความร่วมเป็นอย่างดี อย่างไรก็ตาม บริษัท Toyota ได้มีการแจ้งละเอียดข้อบกพร่องดังกล่าวแก่ลูกค้าที่ใช้รถยนต์ Toyota Prius Hybrid รุ่นระหว่างปี 2004-2005 ไปก่อนหน้าแล้ว นอกจานั้นบริษัท Toyota ยังได้มีการสืบสวนหาสาเหตุภายในองค์กร และได้เรียกคืนรถยนต์ดังกล่าวเมื่อเดือนตุลาคม ค.ศ. 2005 ประมาณ 75,000 คัน จากทั้งสิ้น 88,000 คันที่ขายทั่วโลก

            บริษัท Toyota เปิดเผยว่า ผลการสืบสวนของ NHTSA  ได้ระบุว่าข้อผิดพลาดดังกล่าวเป็นสิ่งที่บริษัทไม่ได้ตั้งใจทำให้เกิดความไม่ปลอดภัยแก่ผู้ใช้รถ และทางบริษัทเองก็ได้พยายามแสดงให้เห็นถึงความรับผิดชอบที่มีต่อสิ่งเกิดขึ้น ดังนั้น NHTSA จึงยุติการสืบสวน
จากกรณีการสืบสวนหาสาเหตุของความผิดพลาดโดย NHTSA ไม่ได้ส่งผลให้ยอดขายรถยนต์ของ Toyota ชะลอตัวแต่อย่างใด โดยพบว่าในปี ค.ศ. 2005 บริษัทยังคงมียอดขายเพิ่มขึ้น 200% จากปีที่ผ่านมา อย่างไรก็ตาม Toyota ได้มุ่งมั่นและพยายามอย่างหนักในการพัฒนาซอฟต์แวร์เพื่อเพิ่มการผลิตที่จะตอบสนองต่อความต้องการรถยนต์แบบ Hybrid ในสหรัฐอเมริกา

            ถึงแม้ว่าการเรียกคืนรถยนต์จะไม่ส่งผลต่อยอดขายมากนักก็ตาม แต่ต้นทุนในการเรียกคืนรถยนต์ในบริษัทต้องจ่ายไปก็มีจำนวนมากเช่นกัน โดยเป็นค่าโฆษณาและต้นทุนอื่นๆ ที่เกี่ยวข้องกับการติดต่อกับเจ้าของรถยนต์ Prius  ในการเรียกคืน รวมทั้งซ่อมแซมรถยนต์ด้วย การเรียกคืนรถยนต์ในครั้งนี้ ทำให้บริษัทผู้ผลิตรถยนต์รายอื่นต้องตะหนักถึงข้อผิดพลาดจากการใช้งานของผู้ใช้ ซึ่งไม่ได้ถูกทดสอบก่อนนำมาใช้จริง





วันอาทิตย์ที่ 22 มิถุนายน พ.ศ. 2557

คุณภาพของซอฟต์แวร์

คุณภาพของซอฟต์แวร์

คุณภาพของซอฟต์แวร์และความสำคัญ

            คุณภาพของซอฟต์แวร์ คือ ผลิตภัณฑ์หรือบริการที่องค์กรส่งมอบแก่ลูกค้ามีคุณลักษณะสอดคล้องกับข้อกำหนดและสามารถใช้งานได้ตรงตามที่ตกลงกัน การที่ซอฟต์แวร์มีคุณลักษณะถูกต้อง เชื่อถือได้ ใช้งานง่าย บำรุงรักษาง่าย เปลี่ยนแปลงแก้ไขได้ ประยุกต์กับงานอื่นๆได้

          คุณภาพของ 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 ระบบก่อน นอกจากนั้นควรจะมี MonitoringTool ที่สามารถแสดงสถานะของระบบและสภาพแวดล้อมของระบบว่าอยู่ในสภาพที่ดีหรือไม่ ซึ่งจะเป็นสิ่งที่ช่วยลดปัญหาที่จะเกิดขึ้นได้มาก
            5. คุณภาพด้านการนำมาใช้ใหม่หรือ Resusability คือระบบที่พัฒนาขึ้นมาควรที่จะสามารถนำไปติดตั้งที่ระบบอื่นหรือสภาพแวดล้อมอื่นได้ง่าย โดยแก้ไขเล็กน้อยหรือไม่ต้องแก้ไขเลยเช่น WebApplication ที่พัฒนาขึ้นควรที่จะสามารถติดตั้งได้ทั้งบน Tomcat หรือ WebLogic ก็ได้


การจัดการคุณภาพของซอฟต์แวร์

                  การจัดการคุณภาพของซอฟแวร์ (Software Quality Management) คือ การระบุวิธีการกำหนดคุณลักษณะของซอฟแวร์ที่มีคุณภาพ วิธีการวัดคุณภาพ และปรับปรุงคุณภาพของกระบวนการพัฒนาซอฟแวร์ โดยมีต้นทุนของคุณภาพ ประกอบไปด้วย
                 1. ต้นทุนการป้องกัน (Prevention Cost) เป็นค่าใช้จ่ายที่ใช้ป้องกันเพื่อไม่ให้เกิดความบกพร่องในการควบคุมคุณภาพ
                2. ต้นทุนในการประเมิน (Appraisal Cost) เป็นค่าใช้จ่ายที่เกิดจากการตรวจสอบ หรือวัดเพื่อประเมินคุณภาพซอฟแวร์
                 3. ต้นทุนของความผิดพลาดภายใน (Internal Failure Cost) เป็นค่าใช้จ่ายที่เกิดจากการผิดพลาดทางการผลิต
                4. ต้นทุนของความผิดพลาดภายนอก (External Failure Cost) เป็นค่าใช้จ่ายที่เกิดจากความผิดพลาดหลังส่งมอบสินค้าให้กับลูกค้า เช่น บริการหลังการขาย







การจัดคุณภาพของซอฟต์แวร์ 
(Software Quality Management)

          การจัดคุณภาพของซอฟต์แวร์ (Software Quality Management) 
คือ การระบุวิธีการกำหนดคุณลักษณะของซอฟต์แวร์ที่มีคุณภาพ วิธีการวัดคุณภาพ และการปรับปรุงคุณภาพของกระบวกการพัฒนาซอฟต์แวร์รวมถึงสิ่งที่ได้จากแต่ละกระบวนการด้วย 

          การจัดการคุณภาพซอฟต์แวร์ เป็นการนำงานบริหารจัดการคุณภาพสำหรับอุตสาหกรรมการผลิตสินค้าทั่วไปเข้มาใช้กับการผลิตซอฟต์แวร์ในทุกด้าน ไม่ว่าจะเป็นกระบวนการตัวผลิตภัณฑ์ซอฟต์แวร์ และทรัพยากรที่ใช้โดยกำหนดมาตรฐานและกระบวนการทำงานเพื่อให้เป็นไปตามมาตรฐานดังกล่าว

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

2 ต้นทุนของคุณภาพ
ต้นทุนของคุณภาพ ประกอบไปด้วย
          1.ต้นทุนการป้องกัน (Prevention Cost) เป็นค่าใช้จ่ายที่ใช้ไปเพื่อปกป้องกันไม่ให้เกิดความบกพร่องในการดำเนินงานควบคุมคุณภาพ
          2.ต้นทุนในกาประเมิน (Appraisal Cost) เป็นค่าใช้จ่ายที่เกิดจากการประเมินคุณภาพและปรับคุณภาพ
          3.ต้นทุนของความผิดพลาดภายใน (Internal Failure Cost) เป็นค่าใช้จ่ายที่เกิดจากความผิดพลาดในระหว่างการผลิต
          4.ต้นทุนของความผิดพลาดภายนอก (External Failure Cost) เป็นค่าใช้จ่ายที่เกิดจากความผิดพลาดหลังส่งมอบสินค้าให้ลูกค้า เช่น การบริการหลังการขาย เป็นต้น

          เนื่องจากคุณลักษณะที่บ่งบอกถึงคุณภาพของซอฟต์แวรเป็นคุณลักษณะที่ไม่ใช้หน้าที่หลักของซอฟต์แวร์ดังนั้น  จึงไม่สามารถวัดออกมาเป็นต้นทุนที่แน่นอนได้ การพิจารณาต้นทุนของคุณภาพซอฟแวร์จึงต้องทำให้ลูกค้าเข้ามามีส่วนร่วมในการตัดสินใจ โดยจะต้องพิจารณาถึงผลตอบแทนที่ได้รับประกอบกันไปด้วย บางครั้งกระบวนการตัดสินใจดังกล่าวอาจจัดทำขึ้นระหว่างขั้นตอน การกำหนดความต้องการก็ได้ หรืออาจจัดทำขึ้นเป็นระยะเมื่อต้นทุนเกิดการเปลี่ยนแปลงตลอดทั้งกระบวนการผลิตซอฟต์แวร์

3 คุณภาพของกระบวนการพัฒนาซอฟต์แวร์
ในการผลิตสินค้าทั่วไป หากกระบวนการผลิตมีคุณภาพสิ่งที่ตามมาคือ สินค้าที่มีคุณภาพ และสามารถปรับปรุงคุณภาพของสินค้าได้จากการปรับปรุงกระบวนการผลิตไปเรื่อยๆ จนกว่าสินค้าจะมีคุณภาพในระดับที่พอใจ แต่กระบวนการผลิตหรือพัฒนาซอฟต์แวร์แล้ว ความสัมพันธ์ระหว่างกระบวนการผลิตกับผลิตภัณฑ์ซอฟต์แวร์เป็นความสัมพันธ์ที่ซับซ้อนด้วยคุณลักษณะของซอฟต์แวร์เอง ประกอบกับขั้นตอนการออกแบบ

การควบคุมคุณภาพ
(Quality Control) 

          เป็นการดูแลและควบคุมให้กระบวนการผลิตซอฟต์แวร์ ดำเนินไปตามแผนงานการประกันคุณภาพและมาตรฐานต่างๆอย่างครบถ้วน [Sommerville,2007]

การตรวจสอบคุณภาพของกระบวนการผลิตซอฟต์แวร์ มี 2 วิธี ดังนี้

การทบทวนคุณภาพ (QualityReview)
          เป็นการทบทวนคุณภาพของเอกสารและกระบวนการผลิตซอฟต์แวร์โดยทีมงานนที่ได้รับมอบหมาย กล่าวคือทีมงานจะตรวจสอบว่าโครงการดำเนินตามมาตรฐานหรือไม่ ตลอดจนตรวจสอบว่าเอกสารและผลิตภัณฑ์ซอฟต์ที่ผลิตได้นั้นตรงตามมาตรฐานหรือไม่ด้วย ส่วนใดที่เบี่ยงเบนไปตามมาตรฐานจะถูกบันทึกผู้บริหารจะแจ้งเตือนไปยังผู้รับผิดชอบต่อส่วนที่บกพร่อง การทบทวนคุณภาพ แบ่งเป็น 2 ชนิด ดังนี้

1.การตรวจทานโปรแกรมหรืองานออกแบบ (Design or Program Inspection)เพื่อเป็นการค้นหาข้อผิดพลาดและข้อบกพร่องในเอกสารข้อกำหนดความต้องการ โค้ดโปรแกรม หรืองานออกแบบ ซึ่งจะช่วยให้แก้ไขงานได้ทันที
2.การทบทวบความคืบหน้า (Progress Review)เพื่อเตรียมข้อมูลให้กับฝ่ายบริหารเกี่ยวกับความคืบหน้าของโครงการ ทั้งด้านกระบวนการทำงานและตรวจทานงาน งบประมาณที่ใช้ไป แผนงาน และตารางการดำเนินงาน 


การประเมินซอฟต์แวร์อัตโนมัติ (Automated Software Assessment)
          เป็นการเปรียบเทียบคุณภาพของเอกสารและผลิตภัณฑ์ซอฟต์แวร์ว่าได้มาตรฐานหรือไม่ ด้วยเครื่องมือแบบอัตโนมัติ ซึ่งเป็นวิธีการที่ใช้เวลาน้อยกว่าวีธีแรก และเนื่องจากเป็นวิธีการที่ต้องมีการเปรียบเทียบ ดังนั้น จึงต้องมีการวัดคุณลักษณะของซอฟต์แวร์เพื่อนำค่าที่วัดได้(ส่วนใหญ่เป็นค่าเชิงปริมาณ) มาเปรียบเทียบกับมาตรฐาน ซึ่งจะทำให้การประเมินซอฟต์แวร์ง่ายขึ้น ดังนั้น การวัดคุณลักษณะของซอฟต์แวร์จึงเกี่ยวข้องกับการประเมินซอฟต์แวร์เพื่อการควบคุมคุณภาพ






คุณสมบัติของซอฟต์แวร์ที่มีคุณภาพ

1.  มีความถูกต้อง (Correctness)
2.  มีความน่าเชื่อถือ (Reliability)
3.  ใช้งานง่าย (User Friendliness)
4.  มีความง่ายต่อการปรับเปลี่ยน (Adaptability)
5.  สามารถนำกลับมาใช้งานใหม่ได้ (Reusability)
6.  มีความเข้ากันได้กับระบบที่แตกต่าง (Interoperability)
7.  มีประสิทธิภาพ (Efficiency)
8.  มีความสะดวกในการเคลื่อนย้าย (Portability)
9.  มีความปลอดภัย (Security)

ลักษณะของวิศวกรรมซอฟต์แวร์

1.  เกี่ยวข้องกับการสร้างโปรแกรมขนาดใหญ่
2.  สามารถจัดการเกี่ยวกับความซ้ำซ้อนได้
3.  เน้นการทำงานร่วมกันของบุคลากร
4.  สามารถเปลี่ยนแปลงได้ง่ายเมื่อจำเป็น
5.  เน้นการพัฒนาให้มีประสิทธิภาพ
6.  สนองความต้องการของผู้ใช้

ประเภทคุณภาพของซอฟต์แวร์

1.  การพัฒนาระบบซอฟต์แวร์ให้มีคุณภาพสูงมีข้อจำกัดและปัจจัยที่เกี่ยวข้องหลายอย่าง ได้แก่ ผู้พัฒนาต้องเผชิญกับข้อจำกัดต่างๆ ได้แก่ ปริมาณทรัพยากรที่มีอยู่ในองค์กร ( resource ) หรือกำหนดการที่ถูกกำหนดไว้ตายตัว ( schedules ) รวมทั้งงบประมาณที่ใช้ในการพัฒนา
2.  ความต้องการคุณภาพของซอฟต์แวร์มีหลายอย่างมาก บางครั้งเกี่ยวข้องกับผลิตภัณฑ์และขบวนการผลิตซอฟต์แวร์ เช่น
       - ผู้ใช้ต้องการคุณภาพของผลผลิตซอฟต์แวร์ดังนี้
               1. ความน่าเชื่อถือ ( reliable )
               2. ประสิทธิภาพ ( efficient )
               3. ง่ายต่อการใช้งาน ( easy to use )
       - ผู้พัฒนาซอฟต์แวร์ต้องการคุณภาพของซอฟต์แวร์ที่สามารถ
               1. ตรวจสอบได้ง่าย ( verifiable )
               2. ง่ายสำหรับการพัฒนา ( maintainable )
               3. ง่ายในส่วนของการเพิ่มขีดความสามารถ ( extensible )
               4. นำไปใช้งานได้ในหลายระบบ ( portable )
       - ผู้บริหารโครงการซอฟต์แวร์ต้องการคุณภาพของขบวนการผลิตที่...
               1. กระบวนการผลิตซอฟต์แวร์สามารถควบคุมการทำงานได้ง่าย
               2. กระบวนการผลิตซอฟต์แวร์สามารถสร้างผลผลิตจำนวนมาก

คุณภาพภายในกับภายนอก ( External Versus Internal Qualities )

       คุณภาพของซอฟต์แวร์สามารถแบ่งออกเป็น 2 อย่าง   คือ  คุณภาพภายนอก ( external quailites) เป็นคุณภาพที่ผู้ใช้สามารถมองเห็น เช่น โปรแกรมมีระบบเมนูที่ช่วยให้ผู้ใช้ทำงานได้สะดวก และ คุณภาพภายใน ( internal qualities ) เกี่ยวข้องกับผู้พัฒนาซอฟต์แวร์ ปกติผู้ใช้จะสนใจแต่คุณภาพภายนอกเท่านั้น เช่น ซอฟต์แวร์สามารถใช้งานได้ง่าย ส่วนผู้พัฒนาให้ความสนใจกับคุณภาพภายใน เช่น ระเบียบวิธีการผลิตซอฟต์แวร์ เพื่อให้ได้ผลิตภัณฑ์ที่มีคุณภาพ

คุณภาพของผลิตภัณฑ์กับขบวนการผลิต (Procuct  Versus Process Qualities )

       การผลิตซอฟต์แวร์ต้องมีกรรมวิธีหรือขบวนการสร้าง(process ) ที่เป็นแบบแผน เพื่อให้ผู้ควบคุมสามารถกำหนดคุณภาพบางอย่างกับกรรมวิธีในการผลิตซอฟต์แวร์ คุณภาพของขบวนการผลิตมีความสัมพันธ์อย่างใกล้ชิดกับคุณภาพของผลิตภัณฑ์ เช่น ถ้าขบวนการผลิตมีการวางแผนอย่างระมัดระวังในเรื่องการนำข้อมูลมาทดสอบ ก่อนที่การออกแบบและการพัฒนาระบบจะเริ่มต้นขึ้น การทำเช่นนี้สามารถช่วยเพิ่มความน่าเชื่อถือให้กับผลิตภัณฑ์  นอกจากนี้คุณภาพบางอย่าง เช่น ประสิทธิภาพ    
( efficiency ) สามารถนำไปประยุกต์กับผลิตภัณฑ์และขบวนการผลิต

สิ่งที่แสดงคุณภาพโดยทั่วไปของซอฟต์แวร์

       1.  Correctness มีความถูกต้อง
       2.  Reliability  มีความน่าเชื่อถือ
       3.  Robustness ทำงานได้ต่อเนื่อง
       4.  Performance มีประสิทธิภาพ
       5.  User  friendliness ใช้งานง่าย
       6.  Verifiability  ตรวจสอบได้
       7.  Portability รองรับได้ทุกสภาพ
       8.  Maintainability ง่ายสำหรับพัฒนา
       9.  Reusability นำกลับมาใช้ได้
       10.  Reparability  แก้ไขข้อบกพร่องได้ง่าย
       11.  Visibility  ติดตามความก้าวหน้าได้
       12.  Understandability เข้าใจง่าย
       13.  User documentation มีเอกสารคู่มืออธิบาย
       14.  Timeliness ผลิตตรงเวลา
       15.  Interoperability ทำงานร่วมกับระบบอื่นได้