มีการประยุกต์ใช้มาตรการความซับซ้อนของ Halstead ในการพิจารณาคุณภาพซอฟต์แวร์หรือไม่


14

ในปี 1977 Maurice Howard Halstead ได้แนะนำมาตรการความซับซ้อนของระบบซอฟต์แวร์ซึ่งรวมถึงการวัดคำศัพท์ของโปรแกรมความยาวของโปรแกรมปริมาตรความยากความพยายามและจำนวนข้อผิดพลาดโดยประมาณในโมดูล ตามวิกิพีเดียความยากลำบากเกี่ยวข้องกับความยากลำบากในการทำความเข้าใจโปรแกรมเมื่ออ่านหรือเขียนและความพยายามสามารถแปลเป็นเวลาที่ใช้ในการเขียนโปรแกรมประยุกต์ที่เวลา = (ความพยายาม / 18) วินาที

การวัดไม่มีประโยชน์เว้นแต่ว่าข้อมูลและการคำนวณจะเกี่ยวข้องกับการพัฒนาซอฟต์แวร์ อย่างไรก็ตามฉันไม่พบงานใด ๆ ที่ระบุว่าความยากลำบากของค่าบางค่าหรือสูงกว่ามีแนวโน้มเพิ่มขึ้นอย่างมีนัยสำคัญทางสถิติในข้อบกพร่องหรือความสัมพันธ์ระหว่างความยากลำบากและเวลาในการอ่านรหัส (ความยากลำบากของ N การทำความเข้าใจฐานรหัส) หรือการวิเคราะห์ใด ๆ ที่สามารถคำนวณเวลาหลังจากข้อเท็จจริงที่เป็นประโยชน์ในการกำหนดคุณภาพ (โดยเฉพาะตั้งแต่เวลาที่จะเขียนควรได้รับการบันทึกเป็นการวัดแล้ว) ฉันสนใจโดยเฉพาะอย่างยิ่งในการประเมินข้อผิดพลาดของ Halstead (ซึ่งไม่ได้กล่าวถึงใน Wikipedia) - จำนวนข้อบกพร่องในแอปพลิเคชันสามารถประมาณได้โดย Volume / 3000 หรือ Effort ^ (2/3) / 3000

ฉันกำลังมองหาสองสิ่ง:

  • มีใครบ้างที่ใช้มาตรการความซับซ้อนของซอฟต์แวร์ของ Halstead ในแอปพลิเคชันที่ใช้งานจริงเพื่อประเมินคุณภาพซอฟต์แวร์ ถ้าเป็นเช่นนั้นคุณใช้พวกเขาอย่างไรและพวกเขากลายเป็นการวัดที่มีประโยชน์ถูกต้องและ / หรือเชื่อถือได้หรือไม่
  • มีงานวิจัยเชิงวิชาการในรูปแบบของการสำรวจวิเคราะห์หรือกรณีศึกษาที่กล่าวถึงความถูกต้อง (หรือความไม่ถูกต้อง) ของมาตรการความซับซ้อนของ Halstead เมื่อนำไปใช้กับคุณภาพของซอฟต์แวร์หรือไม่
  • มีงานวิจัยเชิงวิชาการในรูปแบบของการสำรวจวิเคราะห์หรือกรณีศึกษาที่แสดงให้เห็นถึงการใช้ Source Lines of Code (SLOC) เพื่อคำนวณบางสิ่งที่คล้ายกับตัวชี้วัด Halstead ของ Volume, Difficulty, Effort, Time และ Bugs หรือไม่? ฉันสงสัยว่า Volume อาจสอดคล้องกับการนับ SLOC และความยากลำบากอาจสอดคล้องกับความซับซ้อนของวัฏจักร (และมาตรการอื่น ๆ ที่อาจเป็นไปได้) ฉันตระหนักดีว่าความพยายามในการวัดผลการผลิตหรือเวลาใน SLOC อาจทำให้เข้าใจผิด

คุณจะมีปัญหาในการค้นหาผลลัพธ์ในช่วง 15 ปีที่ผ่านมาเนื่องจากงานการวัดของ Halstead ดำเนินการมากขึ้นเช่นเมื่อ 30-40 ปีก่อนและความสัมพันธ์ที่แข็งแกร่งกับ SLOC นั้นถูกค้นพบเกือบจะในทันที (นี่คือจากความทรงจำจากการพูดคุยของผู้สมัครคณาจารย์ปริญญาเอกใหม่ที่ UT Austin รัฐแคลิฟอร์เนียปี 1977)
John R. Strohm

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

คำตอบ:


5

Microsoft Research ได้ทำงานบางอย่างในพื้นที่นี้ ตรวจสอบหน้านี้: http://research.microsoft.com/en-us/people/nachin/ แม้ว่าจะไม่ได้มีพื้นฐานมาจาก Halstead โดยเฉพาะ Nachi และทีมของเขาได้ทำการตรวจสอบโดยใช้ Halstead ความซับซ้อนของวงจรการใช้รหัสปั่นและมาตรการอื่น ๆ เพื่อประเมินความเสี่ยงและความเปราะบางสำหรับการเปลี่ยนแปลงในส่วนของรหัส นอกจากนี้ยังมีบทความที่น่าสนใจเกี่ยวกับประสิทธิภาพขององค์กรที่มีบทบาทสำคัญ แต่เป็นหัวข้อที่ไม่เกี่ยวข้อง :)


ฉันจะต้องอ่านบางอย่าง สิ่งที่ฉันสนใจแน่นอน แต่ฉัน (อย่างน้อยตอนนี้) โดยเฉพาะอย่างยิ่งความสนใจใน Halstead ดังนั้นฉันจะมุ่งเน้นไปที่นั่น ฉันบุ๊คมาร์คเว็บไซต์เพื่อให้ฉันสามารถอ่านได้เมื่อฉันมีเวลามากขึ้น แต่นี่คือ +1 ในขณะนี้
โธมัสโอเวนส์

ความซับซ้อนตามวัฏจักรของ McCabe ได้ถูกแสดงบนโค้ดจริงเพื่อให้มีความสัมพันธ์อย่างมากกับ SLOC ดิบจนถึงจุดที่ไม่มีค่าเพิ่มขึ้นใด ๆ ในการคำนวณ
John R. Strohm

0

มีการศึกษาดังกล่าวค่อนข้างน้อย Google เป็นเพื่อนของคุณ

ตัวชี้วัดของ Halstead หลุดพ้นจากการสนับสนุนเมื่อมันแสดงให้เห็นว่าพวกเขาทั้งหมดมีความสัมพันธ์อย่างยิ่งกับ SLOC ดิบ (บรรทัดซอร์สของรหัส) ณ จุดนั้นมันจะง่ายกว่าในการวัด SLOC และทำได้ด้วย

นี่เป็นผลจากGoogle หนังสือ


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

1
@ โทมัส: ไม่ใช่ว่าตัวชี้วัดของ Halstead นั้นเกี่ยวข้องกับ SLOC แต่ก็มีความสัมพันธ์กันอย่างมาก สถิติ 102. การบอกว่า Y และ X มีความสัมพันธ์กันอย่างมากหมายความว่าอัตราส่วน Y / X นั้นคงที่สำหรับชุดข้อมูลทั้งหมด เมื่อเป็นกรณีนี้ไม่มีจุดใดในการวัด Y ถ้าง่ายกว่าการวัด X เพราะ Y ไม่ได้บอกอะไรคุณอย่างที่คุณไม่รู้จักจาก X.
John R. Strohm

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

SLOC นั้นง่ายต่อการนับและอาจมีประโยชน์มากกว่า การประมาณค่า SLOC นั้นถูกใช้โดยเทคนิคการประมาณราคาหลายอย่างที่ติดตามใน PSP และ TSP และสามารถใช้ในการวัดอื่น ๆ เช่นความหนาแน่นของข้อบกพร่อง สำหรับฉันแล้วบอกว่าการนับ SLOC อาจดีกว่าการนับตัวดำเนินการ / ตัวถูกดำเนินการ ประการที่สองและยังไม่ได้รับคำตอบคือความถูกต้องของตัวชี้วัดของความพยายามเวลาและข้อบกพร่องโดยไม่คำนึงถึงการวัดที่ใช้ในการคำนวณ ฉันยอมรับว่าการคำนวณด้วย SLOC อาจจะดีกว่า แต่ถึงแม้ว่าฉันจะทำเช่นนั้น
Thomas Owens

@ThomasOwens: อาจจะไม่ หากความพยายามเวลาและข้อบกพร่องมีความสัมพันธ์อย่างมากกับ SLOC มันจะบอกคุณว่าโปรแกรมทุกขนาดที่กำหนดต้องใช้เวลาและความพยายามเท่ากันและมีข้อผิดพลาดจำนวนเท่ากัน สองคนแรกคือการประเมินตาม SLOC (เช่น COCOMO) และเป็นเหมือนการบอกว่าน้ำเปียก บุคคลที่สามไม่ได้ช่วยอะไรคุณจริงๆ
John R. Strohm

0

ปริมาณ Halstead นั้นมีความสัมพันธ์กับ SLOC นั้นน่าสนใจ แต่มีข้อ จำกัด สถิติพื้นฐาน: ความสัมพันธ์เชิงเส้นไม่ได้เป็นสกรรมกริยา X สัมพันธ์กับ Y, Y สัมพันธ์กับ Z ไม่ได้หมายความว่า X สัมพันธ์กับ Z


เมื่อ X และ Y มีความสัมพันธ์กันเพียงอย่างเดียวและ Y และ Z มีความสัมพันธ์กันเท่านั้นใช่ X และ Z ไม่จำเป็นต้องมีความสัมพันธ์กันเนื่องจากระดับเสียงค่อนข้างสูงในสองสหสัมพันธ์แรก เมื่อ X และ Y มีความสัมพันธ์อย่างยิ่งและ Y และ Z มีความสัมพันธ์กันอย่างมากมีสัญญาณรบกวนน้อยมากและมันก็มีความเป็นไปได้สูงมากในกรณีใดก็ตามที่พบว่า X และ Z มีความสัมพันธ์กัน
John R. Strohm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.