มาตรฐานซอฟต์แวร์เครื่องมือแพทย์ (ตอนที่ 2)

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

ในการจัดการคุณภาพซอฟต์แวร์ มีที่มาจากซอฟต์แวร์อาจมีคุณภาพที่ต่ำได้หากเกิดเหตุการณ์ดังต่อไปนี้

  • ซอฟต์แวร์ตรงกับความต้องการของผู้ใช้ แต่ราคาไม่สมเหตุสมผล
  • ซอฟต์แวร์มีราคาสมเหตุสมผล แต่ไม่ตรงกับความต้องการของผู้ใช้
  • ซอฟต์แวร์มีราคาสมเหตุสมผล และตรงกับความต้องการของผู้ใช้ แต่ไม่น่าเชื่อถือและต้องซ่อมแซมมาก

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

ความสัมพันธ์ระหว่างมุมมองทั้งสามด้านนี้สามารถแสดงในแผนภาพที่เรียกว่า สามเหลี่ยมคุณภาพ (The Quality triangle) ตัวอย่างของแผนภาพนี้จะแสดงไว้ในรูปที่ 4 ด้านซ้ายบน มุมทั้งสามด้านของรูปสามเหลี่ยมจะแทนมุมมองของผู้ใช้ (User’s view) ผู้พัฒนา (Manufacture’s view) และผลิตภัณฑ์ (Product’s view) ด้านของรูปสามเหลี่ยมจะแทนระยะห่างที่เรียกว่า ช่องว่าง ระหว่างมุมมองต่างๆ (Gap)

รูปที่ 4 ภาพรวมสามเหลี่ยมคุณภาพ

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

ทั้งนี้การทำให้สามเหลี่ยมคุณภาพมีขนาดเล็กลง จะใช้การจัดการคุณภาพซอฟต์แวร์ในขั้นตอนการทวนสอบและการตรวจสอบของซอฟต์แวร์ (Software verification and validation)

การทวนสอบและการตรวจสอบของซอฟต์แวร์ (Software verification and validation)

         การทวนสอบและการตรวจสอบของซอฟต์แวร์ (Software verification and validation : V&V) คือกระบวนการที่ช่วยให้ผู้พัฒนาซอฟต์แวร์มีความมั่นใจว่าระบบที่พัฒนาตรงตามข้อกำหนดความต้องการซอฟต์แวร์ที่ตกลงกับผู้ใช้ และตรงตามคุณลักษณะซอฟต์แวร์ที่ได้ออกแบบไว้ โดยวัตถุประสงค์ของกระบวนการนี้ เพื่อค้นพบข้อบกพร่อง (Defect) หรือความผิดพลาดของระบบ (Error) หรือ ความล้มเหลวของระบบ (Failure)

การทวนสอบและการตรวจสอบของซอฟต์แวร์ เป็นการประกันคุณภาพ (Quality Assurance: QA) เพื่อใช้เป็นตัวชี้วัด และปรับปรุงคุณภาพซอฟต์แวร์ให้มีคุณภาพสูงสุด พร้มทั้งควบคุมคุณภาพ (Quality Control: QC)

          การตรวจสอบของซอฟต์แวร์ (Software validation) คือกระบวนการที่ช่วยให้ผู้พัฒนาซอฟต์แวร์มีความมั่นใจว่าซอฟต์แวร์ที่พัฒนาตรงตามข้อกำหนดความต้องการซอฟต์แวร์ที่ตกลงกับผู้ใช้ (User requirement) และเป็นการตรวจสอบของซอฟต์แวร์มุมมองคุณภาพภายนอกของซอฟต์แวร์ (มุมมองของผู้ใช้และผู้พัฒนา) ซึ่งทำให้ซอฟต์แวร์ที่ถูกต้องถูกสร้างขึ้น ในที่นี้เรียกว่า ซอฟต์แวร์ที่ดี (Good product)

การทวนสอบของซอฟต์แวร์ (Software verification) คือกระบวนการที่ช่วยให้ผู้พัฒนาซอฟต์แวร์มีความมั่นใจว่าซอฟต์แวร์ที่พัฒนาตรงตามคุณลักษณะซอฟต์แวร์ที่ได้ออกแบบไว้ (work product) และเป็นการทวนสอบของซอฟต์แวร์มุมมองคุณภาพภายในของซอฟต์แวร์ (มุมมองซอฟต์แวร์) ซึ่งเป็นการได้ซอฟต์แวร์จากการสร้างที่ถูกต้อง ในที่นี้เรียกว่า กระบวนการที่ดี (Good Process)

การทวนสอบและการตรวจสอบของซอฟต์แวร์มีหลายเทคนิคที่ใช้ ซึ่งเทคนิคที่นิยมใช้คือ การทบทวน (Review) และ การทดสอบ (Testing) แสดงดังรูปวงกลมในรูปที่ 4 ด้านขวา ซึ่งเทคนิคการทบทวนจะเป็นเทคนิคที่ป้องกันการเกิดข้อผิดพลาดในโปรแกรมที่ประมวลผล การทดสอบจะเป็นเทคนิคการแก้ไขข้อผิดพลาดในโปรแกรมที่ประมวลผล

 

3.2 (SDLC-V Model)

กระบวนการพัฒนาซอฟต์แวร์ (Software development life cycle-SDLC) นั้นมีหลายแบบจำลอง แต่ที่นิยมใช้อธิบายระดับการทดสอบด้วยคือ กระบวนการพัฒนาซอฟต์แวร์ แบบจำลองวี (V Model) แสดงดังรูปที่ 5

จากรูปที่ 5 ด้านซ้ายเป็นลำดับกระบวนการพัฒนาซอฟต์แวร์ และด้านขวาเป็นภาพรวมการทดสอบในแต่ละระดับของทดสอบ โดยมีความเชื่อมโยงกับกระบวยการพัฒนาระบบฯ โดยเริ่มต้นจากกระบวนการพัฒนาซอฟต์แวร์ ในขั้นตอนแรก จะเป็นการกำหนดคุณลักษณะความต้องการของระบบ (Requirement Specification) ว่าระบบนี้จะต้องใช้อะไรเป็นส่วนประกอบพื้นฐาน และมีข้อจำกัดอะไรบ้าง รวมถึงอธิบายว่าระบบนี้สามารถทำอะไรได้บ้าง ในด้านคุณภาพการทำงานเชิงหน้าที่ (Functional Suitability) และคุณภาพด้านอื่นๆ (Non Functional) เช่น ด้านประสิทธิภาพการทำงาน (Performance efficiency) ด้านความน่าเชื่อถือของระบบ (Reliability)

ขั้นตอนต่อมาจะเป็นการออกแบบสถาปัตยกรรมของระบบ (Architecture) เพื่อให้เห็นส่วนประสานเชื่อมต่อกับระบบหรืออุปกรณ์ต่างๆ รวมทั้งการออกแบบรายละเอียดของระบบฯ ว่ามีเงื่อนไขการตัดสินใจ, ลำดับการทำงานอย่างไร และรายละเอียดของข้อมูลนำเข้า ข้อมูลออก ในขั้นตอนถัดไปจะเป็นขั้นตอนการพัฒนาซอร์ดโค้ด (Source code) ซึ่งในระหว่างขั้นตอนนี้จะมีการทดสอบหน่วยย่อยของระบบฯ (Unit Test) เพื่อตรวจสอบว่าฟังก์ชันต่างๆ ของระบบมีการทำงานที่ถูกต้อง ครบถ้วน ตามที่ออกแบบในระดับรายละเอียดหรือไม่ ถ้าทดสอบแล้วฟังก์ชันเหล่านั้น สามารถทำงานได้ถูกต้องทั้งหมด จึงจะประกอบส่วนต่างๆ ทั้งหมดเข้าด้วยกัน พร้อมกันนั้นจะมีการทดสอบแบบบูรณาการ (Integration Test) เพื่อเป็นการทดสอบว่าส่วนประกอบต่างๆ นั้นสามารถทำงานด้วยกันได้ถูกต้อง ตามที่ได้ออกแบบไว้ในสถาปัตยกรรมของระบบฯ หากทดสอบแบบบูรณาการผ่านแล้ว

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

รูปที่ 5 กระบวนการพัฒนาซอฟต์แวร์

(อ้างอิง: ISTQB_FL_Rich Picture.pdf)

การทดสอบซอฟต์แวร์ แบ่งเป็น 2 เทคนิคหลัก ดังนี้

1) การทดสอบแบบกล่องขาว (White Box) หรือ การทดสอบแบบกล่องแก้ว (Glass-Box Testing) หรือการทดสอบเชิงโครงสร้าง (Structural Testing) เป็นการทดสอบข้อความคำสั่ง (Statement) ของโปรแกรม โดยกรณีทดสอบจะถูกออกแบบตามโครงสร้างของโปรแกรม และข้อความคำสั่งควบคุม (Control Statement) เช่น If, While, Case, Until เป็นต้น

2) การทดสอบแบบกล่องดำ (Black Box) หรือ การทดสอบเชิงพฤติกรรม (Behavioral Testing) คือการทดสอบฟังก์ชันต่างๆ โดยไม่ต้องคำนึงถึงข้อความคำสั่ง แต่จะออกแบบตามข้อกำหนดของการฟังก์ชัน ตามข้อมูลนำเข้า (Input) และข้อมูลนำออก (Output)

ในตอนต่อไปเราจะมาพูดถึงมาตรฐาน IEC 60601-1 Cl.14 และ IEC 62304 ซึ่งเป็นมาตรฐานเกี่ยวกับการพัฒนาซอฟต์แวร์เครื่องมือแพทย์ แล้วพบกันค่ะ….

ผู้เขียน : ดร.พนิตา เมนะเนตร

ภาพปก : https://bit.ly/3u52JdL