ฉันจะประเมินอายุการใช้งานของบรรทัดรหัสได้อย่างไร


11

ฉันกำลังพยายามหาวิธีในการวิเคราะห์อายุการใช้งานโค้ดในโครงการโอเพ่นซอร์สนั่นคือระยะเวลาที่รหัสบรรทัดที่ระบุใช้งานและใช้งานอยู่

ความคิดปัจจุบันของฉันคืออายุขัยของรหัสเริ่มต้นเมื่อมีการผูกมัดครั้งแรกและสิ้นสุดลงเมื่อสิ่งใดสิ่งหนึ่งต่อไปนี้เกิดขึ้น:

  • มันแก้ไขหรือลบ
  • ไม่รวมอยู่ในงานสร้าง
  • ไม่มีรหัสภายในโครงสร้างของมันถูกเก็บรักษาไว้เป็นระยะเวลาหนึ่ง (พูดปี)

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

อะไรจะเป็นตัวกำหนดอายุการใช้งานของบรรทัด


2
"รหัสบรรทัดที่ระบุใช้งานได้นานเท่าไรและใช้งานแล้ว" ทำไมคุณคิดว่านี่เป็นตัวชี้วัดที่ดี
Pieter B

คำตอบ:


10

Andy Ozment มอง OpenBSD ในปี 2549 ด้วยคำถามแบบเดียวกัน: Milk หรือ Wine: Software Security มีการพัฒนาตามอายุหรือไม่?

คุณอาจเรียนรู้จากนิยามของเขา นอกจากนี้ยังเป็นบทความที่น่าสนใจมากโดยมีข้อสรุปที่น่าสนใจเช่นกันซึ่งไม่ได้รวมอยู่ในตำนานการจัดการซอฟต์แวร์:

ในช่วงเวลา 7.5 ปีและรุ่นที่สิบห้าปล่อย 62% จาก 140 ช่องโหว่ที่รายงานใน OpenBSD เป็นพื้นฐาน : มีอยู่ในรหัสที่จุดเริ่มต้นของการศึกษา

ต้องใช้เวลามากกว่าสองปีครึ่งในการรายงานช่องโหว่พื้นฐานในช่วงครึ่งปีแรก เราพบว่า 61% ของซอร์สโค้ดในเวอร์ชันสุดท้ายที่ศึกษานั้นเป็นพื้นฐาน: มันยังคงไม่เปลี่ยนแปลงจากเวอร์ชันเริ่มต้นที่วางจำหน่าย 7.5 ปีก่อนหน้านี้ อัตราการรายงานของช่องโหว่พื้นฐานใน OpenBSD จึงมีแนวโน้มที่จะยังคงมีอิทธิพลอย่างมากต่ออัตราการรายงานความเสี่ยงโดยรวม

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


1
+1 @Bruce Ediger: เยี่ยมมากขอบคุณ - ดูสิตอนนี้!
ความผิดพลาด

ขอบคุณอีกครั้งดังนั้นข้อมูลเดียวที่ฉันสามารถใช้งานได้คือ "เราเรียนรู้ว่า 61% ของบรรทัดของรหัสใน OpenBSD วันนี้เป็นพื้นฐาน: พวกเขาได้รับการแนะนำก่อนปล่อยรุ่นแรกที่เราศึกษาและไม่มี ถูกเปลี่ยนแปลงตั้งแต่ " - ซึ่งในขณะที่น่าสนใจไม่เกี่ยวข้องจริงๆ ทุกสิ่งทุกอย่างดูเหมือนจะมุ่งเน้นไปที่ระยะเวลาในการแก้ไขช่องโหว่ซึ่งน่าสนใจอีกครั้ง แต่ไม่ได้พูดถึงปัจจัยที่ต้องคำนึงถึงในช่วงอายุของโค้ด มีบางอย่างที่ฉันขาดหายไปหรือไม่?
ความผิดพลาด

1

ฉันไม่คิดว่าจะมีคำตอบสำหรับสิ่งนั้น มันขึ้นอยู่กับโครงการ บางคนมีความเสถียรมากกว่าปีที่ผ่านมาบางคนมีความผันผวน / refactored / พัฒนามากกว่าปีที่ผ่านมา

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

ที่กล่าวว่าฉันคิดว่าก้อนที่ดีของ LOCs อยู่ตลอดไป

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

ยิ่งไปกว่านั้นโปรแกรมเมอร์ที่ดีเท่านั้นที่มีแนวโน้มที่จะล้างรหัสฐานและลดบรรทัด คนอื่น ๆ ทั้งหมดมีแนวโน้มที่จะกอง LOCs และจนถึงตอนนี้หลังชนะโดยไกล ;)


0

การลบหรือยกเว้นบรรทัดของรหัสแน่นอนเป็นการบ่งบอกถึงจุดสิ้นสุดของอายุการใช้งาน

เมื่อทำการแก้ไขใหม่ฉันจะถามคำถามนี้: ข้อความนี้ให้ผลลัพธ์ที่แตกต่างหลังจากการแก้ไขหรือไม่

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

ตัวอย่างการเปลี่ยนแปลงผลลัพธ์:

if ( a && b )

ถึง:

if ( a || b )

ตัวอย่างการใช้งานอย่างต่อเนื่อง:

foo.bar( baz );

ถึง:

foo.prototype.bar.call( this, baz );
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.