Wednesday 24 December 2008

The Economy of Software Testing(2)

Series The Economy of Software Testing
The Economy of Software Testing (1)
The Economy of Software Testing (2)
The Economy of Software Testing (3)

นอกเหนือจากวิธีที่ได้กล่าวมาในการแก้ปัญหา software crisis แล้ว เช่น Higher Level Program Language หรือการนำ CASE Tool เข้ามาใช้แต่ยังมีอีกวิธีที่ยังไม่ได้กล่าวถึงคือ กระบวนการ Test เช่น

  • Formal Proof of Correctness เป็นการใช้หลักการทางคณิตศาสตร์เพื่อนำมาใช้ในการพิสูนจ์ว่า program ที่เขียนนั้นถูกต้อง โดยเป็นการสร้าง formal language โดยอาศัย กฎเกณฑ์ semantic และ syntax โดยที่ programming language ถือว่าเป็น formal language อยู่แล้ว ดังนั้นการสร้าง formal language ขึ้นมาเพื่อตรวจสอบ formal language อีกอันนั้นย่อมเป็นไปได้ แต่ข้อเสียอย่างเลวร้ายที่สุดของการใช้วิธีการนี้คือ เราจะยังเริ่มไม่ได้ถ้ายังไม่มีการ implement software และถ้าหากเป็น software นั้นใหญ่การที่จะมาทำ formal proof ทั้งหมดของ ของ source code นั้นยิ่งทำได้ยาก
  • Independent Verification and Validation (IV&V) เป็นการใช้บุคคลที่สามมาทำการ review software ซึ่งเป็นผลดีมากๆเลย ไม่มีความเอนเอียงหรือเข้าข้างกับทีมที่พัฒนา software เพราะไม่มีส่วนได้ส่วนเสีย และเป็นที่ยอมรับ แต่มีค่าใช้จ่ายสูงเพราะว่าต้องจ้างคนภายนอก จึงใช้กับ software ที่สำคัญมากๆ เช่น software ของระบบลงจอดของยานอวกาศ หรือ software ที่เกี่ยวอุปกรณ์ทางการแพทย์และต้องนำไปใช้กับส่วนต่างๆของร่างกาย (peak maker) เช่น เครื่อง X-ray
  • Software Quality Assurance เรียกได้ว่าเป็น In-house IV&V แทนที่จะใช้บุคลที่สามจากภายนอกองค์กร แต่เป็นบุคคลที่สามของหน่วยงานอื่นในองค์กรที่ไม่มีส่วนได้ส่วนเสียของการพัฒนา software มาทำการ review software โดยที่การทำงานคล้าย IV&V มาก ทำให้ได้ IV&V มาใช้ในราคาที่ถูกลง แต่ข้อเสียของ SQA นั้นอยู่ตรงที่ มาตรฐานในแต่ละองค์กรค่อนข้างต่างกัน ทำให้ความเสมอต้น เสมอปลายในการทดสอบนั้น ไม่เท่ากันทำให้คุณภาพที่ได้มาอาจจะไม่เทียบเท่ากับองค์กรที่ทำ IV&V โดยตรง
  • Cleanroom Process เป็นกระบวนการที่รวมการเอา formal verification (formal language) กับ กระบวนการควบคุมโดยใช้สถิติ (statistic process control : SPC) โดยจะเน้นการป้องกันไม่ให้ defect เกิดขึ้น โดยไม่ได้เน้นไปที่การหา defect โดยจะพึ่งพาอาศัยหลักการทางคณิตศาสตร์ที่จะใช้ตัวชี้วัดที่เรียกว่า Mean Time Between Failure แต่ Cleanroom process นั้นเป็นตัวที่ค่อนข้างใหม่ ยังไม่ได้รับการยอมรับให้เป็นที่แพร่หลาย เนื่องจากว่าความใหม่ของตัวมันเอง ถ้ารับนำเข้ามาใช้ในองค์กร ก็ต้องเปลี่ยนแปลง process มากทำให้ยังไม่เป็นที่นิยม ยกตัวอย่างเช่น ATM เป็น backbone ในระบบ Network โดยตอนที่มันเกิดมาใหม่ๆนั้นได้รับการคาดหมายว่าจะมาแทน LAN ด้วยความที่มันมี data rate ในการส่งที่สูงกว่าแต่ว่าในปัจจุบันนั้นไม่เป็นเช่นนั้น ATM ยังใช้แค่เป็น backbone เท่านั้นยังไม่ได้กระจายมาใช้แทน LAN ที่เป็นเช่นนั้นเพราะว่า ค่าใช้จ่ายในการเปลี่ยนระบบใหม่ค่อนข้างสูง และอีกอย่างคือ technology LAN นั้นก็พัฒนาอย่างไม่หยุดทำให้ LAN ก็ยังคงอยู่ ทำให้ ATM จึงนำมาใช้ในส่วนที่เป็น backbone อย่างเดียว ซึ่งก็เหมือนกันกับ Cleanroom process นั้นต่อให้มันดีแค่ไหนแต่ถ้าจะนับมาใช้ต้องเปลี่ยนทั้งระบบ และใช้ค่าใช้จ่ายมากมันก็คงไม่คุ้มที่จะเปลี่ยน
Reliability VS Feature and Cost

ต่อในปี 1990s นั้น Computer นั้นเร็วขึ้น ถูกลง ขนาดลดลง ผู้ใช้งานหลากหลายขึ้น PC กลายเป็นสิ่งที่แพร่หลายได้มากขึ้น ทำให้เกิดการเปลี่ยนแปลงระหว่าง hardware และ software ค่อนข้างมาก ทำให้ user กลายเป็นแรงขับเคลื่อนในการผลิต software และตลาดของ software นั้นเปิดกว้างขึ้น ทำให้ software ที่ออกมาในช่วงนี้ค่อนข้างที่จะต้องรีบออกมาอย่างรวดเร็วเพื่อให้ทันกับความต้องการของ user ทำให้ผู้ผลิตนั้นต้องรีบผลิต software ออกมาเพื่อที่จะแข่งขันกับคู่แข่งรายอื่นๆ นั้นก็คือพยายามออก version ใหม่ของ software เพื่อที่จะพยายาม update ตัว software เพื่อให้มี feature ที่นำหน้าคู่แข่งอยู่เสมอ และอีกอย่างหนึ่งก็คือ hardware นั้นมี performance ที่สูงขึ้นทำให้ software ที่ออกมานั้นมีความซับซ้อนขึ้นเป็นตามลำดับ ผลที่เกิดขึ้นทำให้ software vender นั้นต้องรีบออก product ใหม่ให้เร็วๆ จนทำให้ เวลาที่ใช้ในการผลิต software ลดลงดังนั้นการทำการ testing software นั้นลดลงส่งผลต่อคุณภาพของ software และ defect ของ software มีมากขึ้น ถึงแม้ว่าจะออก version ใหม่ออกมาแต่ defect ใหม่ก็มีมากขึ้นเช่นกัน ทำให้ user ต่างๆร้องเรียนเข้ามาทำให้ software vender นั้นต้องทำการ fixed defect เหล่านั้น และค่าใช้จ่ายในการ fixed defect นั้นสูง ทำให้เสียค่า maintain มากเนื่องจากต้องจ่ายค่าส่งไปรษณีย์(สมัยนั้นยังไม่มี internet)ในการ fixed defect แต่ละครั้ง และยังไม่รวมไปถึงค่าใช้จ่ายให้กับที่ต้องไป support ในกรณีที่ต้องแก้ไขทางด้าน technical ยังไม่รวมถึงค่า call center ทำให้การกระทำเช่นนี้เริ่มที่จะแว้งกัดกลับไปยัง software vender เพราะว่า profit ลดลงจากการที่ต้องจ่ายค่าใช้จ่ายในการ support เพื่อที่จะ fixed defect ทำให้เริ่มกลับมาคิดจากการละเลยของคุณภาพ software ทำให้เกิดการมองเรื่องของคุณภาพของ software กับ การแข่งขันทางการตลาด ทำให้เกิดการ shift ไปสู่การเน้นคุณภาพของ software ที่สูงขึ้น

ต่อมาไม่นานหลังจากการ shift ไปสู่การเน้นคุณภาพของ software ก็เกิดนวัตกรรมใหม่ขึ้นมา คือ Internet หรือที่รู้จักกันในชื่อของ www ซึ่งมีผลกระทบต่อการ communication ทำให้ค่าใช้จ่ายในการ fixed defect นั้นลดลงเพราะว่าถ้าเกิด defect ใดๆก็ตามให้แจ้งผ่านเข้ามาทาง mail หรือ track issue ต่างๆเช่น JIRA, Bugzilla อื่นๆเป็นต้น จากนั้นจึงส่ง link เพื่อที่จะ download ตัว update ของ software ทำให้ software vender นั้นพึงพอใจมากกับค่าใช้จ่ายในการ support ที่ลดลง นอกจาก software vender ที่พอใช้แล้ว user เองก็พอใจด้วยเนื่องจากได้รับบริการที่รวดเร็วขึ้นจึงเป็นผลดีทั้งสองฝ่าย ทำให้การออก version ใหม่ให้กับตัวของ software นั้นรวดเร็วเพื่อเพิ่มแข่งขันกันในทางตลาดกลับมาเหนือคำว่า คุณภาพของ software เพราะว่าถูกมองว่าไม่ใช่ความสำคัญต่อความสำเร็จของตัว software ที่ออกมาขาย ไปเน้นเรื่องของ feature ที่ออกมาเตะตาของ user มากกว่าเพื่อแย่งพื้นที่การตลาด

ต่อมาในช่วงปี 2001 – 2002 ซึ่งเป็นช่วงของ ฟองสบู่แตก ความสะพัดของเม็ดเงินนั้นลดลงธุรกิจ dot com หลายตัวที่ต้องล้มละลาย ทำให้การพึ่งพา www ที่จะลดค่าใช้จ่ายในการ support นั้นค่อนข้างที่จะใช้ไม่ได้ผลมากยิ่งขึ้น เพราะว่า user นั้นเริ่มต้องการ software ที่มีคุณภาพที่สูงขึ้น ไม่ต้องการที่จะเสียค่าใช้จ่ายในการมาไล่ตามการ update version เพื่อให้คุ้มกับเม็ดเงินที่ลงทุนไป ทำให้กระแสของ software คุณภาพนั้นได้ย้อนกลับมาอีกครั้ง ทำให้ software vender ต้องปรับตัวในการเพิ่มคุณภาพให้กับ software ซึ่งยุคนี้ก็ได้ดำเนินมาจนถึงยุคปัจจุบัน

พอจะเห็นภาพคร่าวๆกันแล้วใช่ไหมครับว่าความเป็นมาของ V&V นั้นเป็นยังไง แต่ว่าเรื่องราวของ The Economy of Software Testing ยังไม่จบครับลองติดตามต่อในตอนที่สาม ซึ่งจะเริ่มไปเข้า Concept ของ V&V ครับ

ref :
SW Verification and Validation for Practitioner and Manager 2 Ed.
Software Testing Fundamwntals: Method and Metrics
Lecture วิชา SWE613 Software Verification and Validation

เพิ่มเติม
พอดีได้ไปเจอบทความ ของคุณ Siroz แล้วมันมีความคล้ายกันเพียงแต่ว่ามองกันคนละแนวกันโดยบทความของคุณ Siroz นั้นจะเน้นไปในวิวัฒนาการของการทดสอบ software จริงๆ ซึ่งถ้าใครสนใจสามารถเข้าไปดูตาม link ด้านล่างครับ

พัฒนาการของการทดสอบซอฟต์แวร์ ตอนที่ 1
พัฒนาการของการทดสอบซอฟต์แวร์ ตอนที่ 2

No comments: