คุณทำไม่ได้
คุณภาพของซอฟต์แวร์นั้นยากที่จะวัดอย่างเป็นกลาง หนักพอที่จะไม่มีทางออก ฉันงดเว้นคำตอบนี้เพื่อตะลุยคำถามว่ามีวิธีแก้ปัญหาได้หรือไม่ แต่เพียงแค่ชี้ให้เห็นว่าทำไมการนิยามอย่างใดอย่างหนึ่งจึงยาก
การใช้เหตุผลตามสภาพที่เป็นอยู่
ดังที่ Kilian Foth ชี้ให้เห็นหากมีการวัดอย่างง่ายสำหรับซอฟต์แวร์ "ดี" เราทุกคนต่างก็ใช้มันและทุกคนก็ต้องการมัน
มีโครงการที่ผู้จัดการตัดสินใจบังคับใช้เมตริกบางอย่าง บางครั้งมันทำงานได้บางครั้งก็ไม่ได้ ฉันไม่ได้ตระหนักถึงความสัมพันธ์ที่สำคัญใด ๆ โดยเฉพาะอย่างยิ่งซอฟต์แวร์ระบบที่สำคัญ (คิดว่าเครื่องบินรถยนต์ ฯลฯ ) มีข้อกำหนดมากมายในการ "รับรอง" คุณภาพ SW - ฉันไม่ได้รับการศึกษาใด ๆ ที่แสดงให้เห็นว่าข้อกำหนดเหล่านี้ส่งผลให้มีคุณภาพสูงขึ้นและฉันมีประสบการณ์ส่วนตัว ตรงกันข้าม
การใช้เหตุผลโดยการตอบโต้
ยังบอกใบ้โดย Kilian อยู่แล้วและโดยทั่วไปมักใช้ถ้อยคำว่า "ทุกเมตริกสามารถเล่นได้"
การเล่นเมตริกหมายความว่าอย่างไร มันเป็นเกมที่สนุกสำหรับนักพัฒนา: คุณมั่นใจว่าค่าการวัดดูดีจริงๆในขณะที่ทำสิ่งที่น่ารังเกียจ
สมมติว่าคุณวัดข้อบกพร่องต่อ LOC ฉันจะเล่นยังไงดี ง่าย - เพียงเพิ่มรหัสเพิ่มเติม! สร้างรหัสโง่ที่ทำให้ไม่มีการใช้งานเกิน 100 บรรทัดและทันใดนั้นคุณก็มีข้อบกพร่องน้อยกว่าต่อ LOC ดีที่สุด: คุณลดคุณภาพของซอฟต์แวร์ลง
ข้อบกพร่องของเครื่องมือถูกใช้อย่างไม่ถูกต้องคำจำกัดความถูกขยายไปจนถึงวิธีใหม่ ๆ ที่คิดค้นขึ้นมาโดยทั่วไปนักพัฒนาเป็นคนฉลาดจริง ๆ และหากคุณมีนักพัฒนาเพียงคนเดียวในทีมของคุณที่มีตัวชี้วัดการเล่นที่สนุกสนาน
นี่ไม่ได้เป็นการบอกว่าตัวชี้วัดนั้นแย่เสมอ - แต่ทัศนคติของทีมที่มีต่อตัวชี้วัดเหล่านี้เป็นสิ่งสำคัญ โดยเฉพาะอย่างยิ่งนี่แสดงว่ามันจะไม่ทำงานได้ดีสำหรับความสัมพันธ์ของผู้รับจ้างช่วง / บุคคลที่สาม
เหตุผลโดยการกำหนดเป้าหมายผิด
สิ่งที่คุณต้องการวัดคือคุณภาพซอฟต์แวร์ สิ่งที่คุณทำวัดคือหนึ่งหรือมากกว่าหนึ่งตัวชี้วัด
มีช่องว่างระหว่างสิ่งที่คุณวัดกับสิ่งที่คุณเชื่อว่ามันจะบอกคุณ ช่องว่างนี้มีขนาดใหญ่มาก
มันเกิดขึ้นตลอดเวลาในธุรกิจทุกประเภทรอบตัวเรา เคยเห็นการตัดสินใจตาม KPI (ตัวบ่งชี้ประสิทธิภาพหลัก) หรือไม่ มันเป็นปัญหาเดียวกัน - คุณต้องการให้ บริษัท ทำดี แต่คุณวัดอย่างอื่น
การใช้เหตุผลเชิงปริมาณ
ตัวชี้วัดที่สามารถวัดได้ ซึ่งเป็นเหตุผลเดียวที่เราจัดการกับพวกเขาเลย อย่างไรก็ตามคุณภาพของซอฟต์แวร์ได้ขยายไปไกลกว่าเอนทิตีที่สามารถวัดได้เหล่านี้และมีจำนวนมากซึ่งยากที่จะระบุจำนวน: ซอร์สโค้ดที่อ่านได้เป็นอย่างไร? การออกแบบของคุณขยายได้อย่างไร มันยากขนาดไหนสำหรับสมาชิกในทีมใหม่ที่จะขึ้นเครื่องบิน? ฯลฯ
การตัดสินคุณภาพของซอฟต์แวร์โดยการวัดและการมองข้ามไปยังส่วนต่าง ๆ ของคุณภาพที่คุณไม่สามารถหาปริมาณได้แน่นอนว่าจะไม่ได้ผลดี
แก้ไข:
สรุป
ให้ฉันชี้ให้เห็นว่าสิ่งที่กล่าวมาทั้งหมดเกี่ยวกับการตัดสินอย่างเป็นกลางว่าซอฟต์แวร์นั้นดีหรือไม่ดีตามตัวชี้วัด ซึ่งหมายความว่าจะไม่พูดอะไรเกี่ยวกับว่าและเมื่อคุณควรใช้ตัวชี้วัด
อันที่จริงนี่เป็นนัยยะทางเดียว: ตัวชี้วัดที่ไม่ดีบอกเป็นนัยถึงโค้ดที่ไม่ดี หมายความว่าทิศทางเดียวที่รหัสไม่ดีไม่รับประกันการวัดที่ไม่ถูกต้องหรือการวัดที่ดีรับประกันรหัสที่ดี ในทางกลับกันสิ่งนี้ในตัวมันเองหมายความว่าคุณสามารถใช้ตัวชี้วัดเพื่อตัดสินชิ้นส่วนของซอฟต์แวร์ - เมื่อคุณคำนึงถึงความหมายนี้
คุณวัดซอฟต์แวร์ A และตัวชี้วัดนั้นเลวร้ายมาก จากนั้นคุณสามารถมั่นใจได้ว่าคุณภาพของรหัสไม่ดี คุณวัดซอฟต์แวร์ B และตัวชี้วัดก็โอเคแล้วคุณก็ไม่รู้เลยเลยว่าคุณภาพของรหัสนั้นเป็นอย่างไร อย่าหลงกลโดยคิดว่า "metrics good = code good" เมื่อเป็นเพียง "code good => metrics ดี"
โดยพื้นฐานแล้วคุณสามารถใช้เมตริกเพื่อค้นหาปัญหาคุณภาพ แต่ไม่ใช่คุณภาพ