วันอาทิตย์ที่ 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 ทำงานร่วมกับระบบอื่นได้




ไม่มีความคิดเห็น:

แสดงความคิดเห็น