วิธีการตรวจสอบประสิทธิภาพของกระบวนการตรวจสอบรหัส?


14

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

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

มีใครบ้างที่เคยเจอปัญหานี้มาก่อนหรือคิดว่าอะไรดีในการวัดความคิดเห็นโค้ด


7
การค้นหาจุดบกพร่องไม่ใช่จุดประสงค์เดียวของการรีวิวโค้ด พวกเขายังมีประโยชน์ในการเสริมมาตรฐานการเข้ารหัส, การฝึกอบรมข้ามข้ามผสมเกสรของความคิดและเทคโนโลยี ฯลฯ
เจสัน

ขอบคุณ Jason & เข้าใจ แต่ในกรณีนี้ฉันกำลังพยายามหาวิธีเพื่อให้แน่ใจว่ากระบวนการบรรลุเป้าหมายหลักของการป้องกันการเกิดข้อบกพร่องในช่วงต้นของกระบวนการ dev ที่เป็นไปได้

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

@maple_shaft: การเปรียบเทียบที่อ่อนแอ การพยายามวัดอัตราบั๊กเป็นเหมือนการพยายามวัดจำนวนโลงศพที่ใช้สำหรับคนตายจากการล่ม
S.Lott

1
ในการตรวจสอบโค้ดทั้งหมดที่ฉันเคยเข้าร่วมข้อบกพร่องจำนวนมากได้รับการแก้ไขแล้วในหน่วยและการทดสอบระดับสูงขึ้น นั่นคือรหัสไม่พร้อมสำหรับการตรวจสอบเพียงเพราะมันรวบรวม
Pete Wilson

คำตอบ:


7

มีตัวชี้วัดจำนวนหนึ่งที่สามารถรวบรวมได้จากการตรวจสอบโค้ดซึ่งบางส่วนยังขยายไปตลอดวงจรชีวิตของโครงการ

ครั้งแรกที่ตัวชี้วัดที่ผมจะแนะนำการชุมนุมคือประสิทธิภาพการกำจัดข้อบกพร่อง (DRE) สำหรับทุกข้อบกพร่องคุณจะต้องระบุว่าข้อบกพร่องนั้นถูกนำมาใช้ในช่วงใดและขั้นตอนใดที่จะถูกลบออกเทคนิคการตรวจหาข้อบกพร่องต่างๆที่คุณใช้นั้นได้รับการประเมินพร้อมกัน และอื่น ๆ คุณจะสนใจจำนวนข้อบกพร่องที่ติดอยู่ในขั้นตอนของรหัสโดยเฉพาะอย่างยิ่งเนื่องจากอาจรวมถึงการทดสอบหน่วยของคุณรวมถึงบทวิจารณ์โค้ด หากมีข้อบกพร่องมากมายจากระยะรหัสทำให้ผ่านไปยังขั้นตอนการทดสอบการรวมหรือแม้แต่ในเขตข้อมูลคุณรู้ว่าคุณควรประเมินการปฏิบัติหลังการเข้ารหัส

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

ด้วยเมตริกใด ๆ เหล่านี้จึงเป็นสิ่งสำคัญที่จะต้องเข้าใจผลกระทบที่มีต่อกระบวนการ การวิเคราะห์สาเหตุที่แท้จริงโดยใช้เทคนิคต่าง ๆ เช่นเหตุใด , Five Whys , หรืออิชิกาวะไดอะแกรมสามารถใช้เพื่อระบุสาเหตุที่รีวิวรหัส (หรือเทคนิคการปรับปรุงคุณภาพอื่น ๆ ) มีประสิทธิภาพ (ใน)

นอกจากนี้คุณยังอาจจะสนใจในบทความนี้เกี่ยวกับการตรวจสอบจาก Ganssle กลุ่มและบทความโดย Capers โจนส์ใน Crosstalk เกี่ยวกับข้อบกพร่องและศักยภาพ DRE


2

ในขณะที่ส่วนใหญ่เป็นความจริงที่ว่าการตรวจสอบโค้ดจะหยิบยกปัญหาที่ค่อนข้างแฝงอยู่ว่าการทดสอบอาจจะใช่หรือไม่ก็ได้ อย่างไรก็ตามในความคิดของฉันคุณอาจมีรหัส (จริงบั๊กฟรี) มีเสถียรภาพจริง ๆ แต่ยังคงเขียนในลักษณะที่ไม่สามารถอ่านหรือบำรุงรักษาค่อนข้างมาก ดังนั้นอาจเป็นไปได้ว่าการตรวจสอบรหัสอาจไม่พบข้อบกพร่องหากไม่มีปัญหาจริงในรหัส

ต้องบอกว่าฉันจะถามจริงๆทำไมคนเราถึงอยากจะตรวจสอบโค้ด? เหตุผลง่ายๆว่าทำไมสิ่งสำคัญคือรหัสควรได้รับการปรับปรุงเพื่อให้อ่านได้ง่ายขึ้นบำรุงรักษาและพัฒนาได้ หลายคนควรสามารถอ่านโค้ดที่สะอาดกว่าและเข้าใจได้ง่าย ในแง่นั้นวัตถุประสงค์ที่ง่ายที่สุดของกระบวนการตรวจสอบโค้ดคือการสร้างโค้ดที่สะอาด ดังนั้นการวัดประสิทธิภาพคือตอนนี้โค้ดสะอาดมากขึ้นเพียงใด

ตามที่คุณต้องการให้มีประสิทธิภาพที่วัดได้ - นี่คือสิ่งที่ฉันอยากจะแนะนำ:

  1. ตัวชี้วัดที่เกี่ยวข้องกับจำนวนของการทำใหม่ - จำนวนครั้งที่การทำงานซ้ำถูกนำมาใช้ในโมดูล / วัตถุ / รายการงานที่ได้รับเหมือนกันคือการวัดว่ารหัสนั้นแย่แค่ไหนในแง่ของการบำรุงรักษา เมื่อใช้การตรวจสอบโค้ดที่มีประสิทธิภาพเราจะสามารถลดคำขอการทำงานซ้ำในโมดูลเดียวกันได้บ่อยเพียงใด

  2. ตัวชี้วัดที่เกี่ยวข้องกับจำนวนการเปลี่ยนแปลงที่การเปลี่ยนแปลงทุกครั้งร้องขอ เมื่อทุกครั้งที่มีการร้องขอการเปลี่ยนแปลง - รหัสที่ไม่ดีจะส่งผลให้โมดูลจำนวนมากได้รับผลกระทบเสมอ การวัดอาจบ่งบอกว่าหลังจากการตรวจสอบโค้ดแล้ว - a คือการลดการแพร่กระจายการเปลี่ยนแปลงใด ๆสำหรับคำขอการเปลี่ยนแปลงที่คล้ายกันในอดีตหรือไม่

  3. ตัวชี้วัดที่เกี่ยวข้องกับความเร็วเฉลี่ยที่สามารถร้องขอการเปลี่ยนแปลงได้ เมื่อโค้ดนั้นสะอาดกว่า - เร็วกว่าและดีกว่าก็คือการตอบสนองต่อการเปลี่ยนแปลงที่จำเป็น หลังจากทำความสะอาดโค้ดในกระบวนการตรวจสอบแล้วเราจะพบว่ามีความเร็วเพิ่มขึ้นในการตอบสนองคำขอขนาดใกล้เคียงกัน

ฉันไม่ได้วางหน่วยวัดที่แน่นอน - คุณอาจจะสามารถสร้างเครื่องมือวัดที่แม่นยำมากขึ้นเกี่ยวกับวิธีนี้ได้ อาจมีพิธีการเสริมในแนวทางข้างต้นนี้

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


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

1
ในฐานะนักพัฒนาฉันแน่ใจว่าต้องการดูรหัสที่สะอาด อย่างไรก็ตามการตรวจสอบรหัสมีราคาแพงมาก ดังนั้นในฐานะผู้จัดการกองทุนโครงการทำความสะอาดรหัสไม่ใช่เหตุผลที่น่าสนใจจริงๆที่จะเพิ่มค่าใช้จ่ายและเวลา 5-10% ในงบประมาณการพัฒนาของฉัน โดยเฉพาะอย่างยิ่งเมื่อ (ในฐานะผู้จัดการ) โบนัส / รีวิวของฉันเชื่อมโยงกับการทำให้โครงการปัจจุบันตรงตามกำหนดเวลา / งบประมาณเสร็จสมบูรณ์ ดังนั้นความคิดเห็นของคุณว่าเหตุผลหลักในการรีวิวโค้ดคือการได้โค้ดที่สะอาดจะทำให้ผู้จัดการที่ดีบอกว่า ROI นั้นไม่คุ้มค่า คุณสามารถโต้เถียงเกี่ยวกับผลตอบแทนระยะยาว แต่จากนั้นผู้จัดการที่ส่งมอบตรงเวลา / ตามงบประมาณจะได้รับการเลื่อนตำแหน่งออกจากปัญหานั้น
Dunk

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

@Dunk ค่าใช้จ่ายในการตรวจสอบรหัสขึ้นอยู่กับประเภทของการตรวจสอบรหัส การตรวจสอบอย่างเป็นทางการกับผู้อ่าน 3-5 คนผู้ดำเนินรายการและการมีอยู่ของผู้เขียน (5-7 คนต่อห้อง) มีราคาแพง การตรวจสอบโต๊ะที่ประกอบด้วยนักพัฒนาอีกคนกำลังจ้องมองรหัสประมาณ 10-15 นาทีก็เป็นการตรวจสอบโค้ด แต่ก็ไม่เป็นทางการและถูกกว่ามาก แม้แต่การเขียนโปรแกรมคู่อาจถือเป็นเทคนิค เทคนิคที่เหมาะสมนั้นพิจารณาจากปัจจัยต่าง ๆ ซึ่งรวมถึง (แต่ไม่ จำกัด เพียง) ความสำคัญของรหัสอัตราความบกพร่องที่ต้องการและจำนวนเวลา / เงินที่จะลงทุน
โธมัสโอเวนส์

@Dunk - ฉันคิดว่าคุณได้โต้แย้งการตัดสินใจ "เราควรตรวจสอบโค้ด" จากมือของผู้จัดการโครงการและวางมันไว้ในมือของผู้จัดการที่รับผิดชอบแพลตฟอร์มซอฟต์แวร์ในระยะยาว IMO พูดโดยทั่วไปใช้เวลาเพิ่ม 5-10% ในการพัฒนาสำหรับการตรวจสอบรหัสที่เหมาะสมเป็นการลงทุนที่คุ้มค่าในแง่ของอายุการใช้งานของระบบที่กำลังพัฒนา แต่อาจไม่ใช่ในแง่ของงบประมาณและระยะเวลาของโครงการปัจจุบัน
Dawood กล่าวว่าคืนสถานะโมนิก้า
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.