กลับไปหน้าบทความ

อ่าน 4 นาที

เมตริกซอฟต์แวร์ ABC

เมตริก ซอฟต์แวร์ ABC ได้รับการแนะนำโดย Jerry Fitzpatrick ในปี 1997 เพื่อเอาชนะข้อเสียของ LOC [ 1 ] เมตริกนี้กำหนดคะแนน ABC เป็นค่าสามค่าที่แสดงถึงขนาดของชุดคำสั่งซอร์สโค้ด คะแนน...

เมตริกซอฟต์แวร์ ABC

เมตริกซอฟต์แวร์ ABC ได้รับการแนะนำโดย Jerry Fitzpatrick ในปี 1997 เพื่อเอาชนะข้อเสียของLOC [ 1 ] เมตริกนี้กำหนดคะแนน ABC เป็นค่าสามค่าที่แสดงถึงขนาดของชุดคำสั่งซอร์สโค้ด คะแนน ABC คำนวณโดยการนับจำนวนการกำหนดค่า (A) จำนวน การแยก สาขา (B) และจำนวนเงื่อนไข (C) ในโปรแกรม คะแนน ABC สามารถนำไปใช้กับเมธอดฟังก์ชันคลาสโมดูลหรือไฟล์แต่ละรายการภายในโปรแกรม ได้

คะแนน ABC แสดงด้วยเวกเตอร์ 3 มิติ < การมอบหมายงาน (A), สาขา (B), เงื่อนไข (C) > นอกจากนี้ยังสามารถแสดงเป็น ค่า สเกลาร์ซึ่งก็คือขนาดของเวกเตอร์ < การมอบหมายงาน (A), สาขา (B), เงื่อนไข (C) > และคำนวณได้ดังนี้:

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

ประวัติศาสตร์

แนวคิดเรื่องการวัดขนาดซอฟต์แวร์ได้รับการนำเสนอครั้งแรกโดย Maurice Halstead [ 2 ]จากมหาวิทยาลัย Purdue ในปี 1975 เขาเสนอว่าโปรแกรมคอมพิวเตอร์ทุกโปรแกรมประกอบด้วยโทเค็น เป็นหลัก ได้แก่ตัวดำเนินการและตัวถูกดำเนินการเขาสรุปว่าการนับจำนวนตัวดำเนินการและตัวถูกดำเนินการที่ไม่ซ้ำกันจะให้การวัดขนาดของโปรแกรม อย่างไรก็ตาม วิธีนี้ไม่ได้ถูกนำมาใช้เป็นการวัดขนาดของโปรแกรม

จำนวนบรรทัดโค้ด (LOC) เป็นอีกมาตรวัดที่นิยมใช้ในการวัดขนาดของโปรแกรม อย่างไรก็ตาม จำนวนบรรทัดโค้ดไม่ถือเป็นมาตรวัดที่แม่นยำของขนาดโปรแกรม เนื่องจากแม้แต่โปรแกรมที่มีฟังก์ชันการทำงานเหมือนกันก็อาจมีจำนวนบรรทัดที่แตกต่างกัน ขึ้นอยู่กับรูปแบบการเขียนโค้ด[ 3 ]

มีการนำ เมตริกอีกตัวหนึ่งที่เรียกว่า เมตริก Function Point (FP) มาใช้ในการคำนวณจำนวนธุรกรรมอินพุตและเอาต์พุตของผู้ใช้ การคำนวณ Function Point ไม่ได้ให้ข้อมูลเกี่ยวกับฟังก์ชันการทำงานของโปรแกรมหรือเกี่ยวกับรูทีนที่เกี่ยวข้องในโปรแกรม[ 4 ]

ตัวชี้วัด ABC มีจุดประสงค์เพื่อเอาชนะข้อเสียของการนับจำนวนบรรทัดโค้ด (LOC), ข้อผิดพลาดแบบจุดลอยตัว (FP) และจำนวนโทเค็น (การดำเนินการและตัวถูกดำเนินการ) อย่างไรก็ตาม คะแนน FP สามารถนำมาใช้เสริมคะแนน ABC ได้เช่นกัน

แม้ว่าผู้เขียนจะอ้างว่าเมตริก ABC วัดขนาด แต่บางคนเชื่อว่ามันวัดความซับซ้อน[ 5 ]ความสามารถของเมตริก ABC ในการวัดความซับซ้อนขึ้นอยู่กับว่าความซับซ้อนถูกกำหนดอย่างไร

คำนิยาม

องค์ประกอบทั้งสามของคะแนน ABC มีคำจำกัดความดังต่อไปนี้:

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

เนื่องจากภาษาพื้นฐาน เช่น C, C++, Java เป็นต้น มีเพียงการดำเนินการ เช่น การกำหนดค่าตัวแปร การเรียกฟังก์ชัน และเงื่อนไขการทดสอบเท่านั้น คะแนน ABC จึงมีองค์ประกอบทั้งสามนี้[ 1 ]

ถ้าเวกเตอร์ ABC ถูกกำหนดเป็น⟨5,11,9⟩สำหรับซับรูทีนหมายความว่าซับรูทีนนั้นมีการกำหนดค่า 5 ครั้ง มีการแยกสาขา 11 ครั้ง และมีเงื่อนไข 9 ครั้ง เพื่อความสม่ำเสมอ ควรเขียนจำนวนเหล่านั้นไว้ในวงเล็บเหลี่ยมและเรียงลำดับตามสัญลักษณ์⟨A, B, C⟩

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

ค่าคะแนน ABC แบบสเกลาร์นั้นสูญเสียข้อดีบางประการเมื่อเทียบกับค่าคะแนนแบบเวกเตอร์ แทนที่จะคำนวณขนาดของเวกเตอร์ การรวมเวกเตอร์แบบถ่วงน้ำหนักอาจช่วยให้เปรียบเทียบขนาดได้แม่นยำยิ่งขึ้น ไม่ควรนำเสนอค่าคะแนน ABC แบบสเกลาร์โดยปราศจากเวกเตอร์ ABC ประกอบ เนื่องจากค่าสเกลาร์ไม่ใช่ตัวแทนที่สมบูรณ์ของขนาด

ทฤษฎี

กฎเฉพาะสำหรับการนับค่าเวกเตอร์ ABC ควรได้รับการตีความแตกต่างกันไปในแต่ละภาษา เนื่องจาก มีความแตกต่าง ทางความหมายระหว่างภาษาเหล่านั้น

ดังนั้น กฎสำหรับการคำนวณเวกเตอร์ ABC จึงแตกต่างกันเล็กน้อยตามภาษา เรากำหนดกฎการคำนวณเมตริก ABC สำหรับ C, C++ และ Java ไว้ด้านล่าง กฎสำหรับภาษาเชิงคำสั่งอื่นๆ สามารถตีความได้ตามกฎเหล่านี้[ 1 ]

กฎ ABC สำหรับ C

กฎต่อไปนี้แสดงจำนวนของการกำหนดค่า (Assignments), สาขา (Branchs) และเงื่อนไข (Conditionals) ในเมตริก ABC สำหรับภาษา C :

  1. เพิ่มจำนวนการมอบหมายงานขึ้นหนึ่งรายการเมื่อ:
  2. เพิ่มจำนวนสาขาขึ้นหนึ่งเมื่อ:
    • เกิด การเรียก ใช้ฟังก์ชัน
    • การปรากฏของ คำสั่ง goto ใดๆ ที่มีเป้าหมายอยู่ในระดับการซ้อน ที่ลึก กว่าระดับที่คำสั่ง goto นั้นตั้งอยู่
  3. เพิ่มค่าเงื่อนไขหนึ่งเมื่อ:

กฎ ABC สำหรับ C++

กฎต่อไปนี้แสดงจำนวนการกำหนดค่า (Assignments), การแยกสาขา (Branches) และเงื่อนไข (Conditionals) ในเมตริก ABC สำหรับภาษาC++ :

  1. เพิ่มจำนวนการมอบหมายงานขึ้นหนึ่งรายการเมื่อ:
  2. เพิ่มจำนวนสาขาขึ้นหนึ่งเมื่อ:
    • การเรียกใช้ฟังก์ชันหรือการเรียกใช้เมธอดของคลาส
    • การปรากฏของคำสั่ง goto ใดๆ ที่มีเป้าหมายอยู่ในระดับการซ้อนที่ลึกกว่าระดับที่คำสั่ง goto นั้นตั้งอยู่
    • การปรากฏของตัวดำเนินการ 'ใหม่' หรือ 'ลบ'
  3. เพิ่มค่าเงื่อนไขหนึ่งเมื่อ:
    • การปรากฏของตัวดำเนินการเงื่อนไข ( <, >, <=, >=, ==, != )
    • การปรากฏของคำหลักต่อไปนี้ (' else ', ' case ', ' default ', ' ? ', ' try ', ' catch ')
    • การปรากฏของตัวดำเนินการเงื่อนไขเอกภาค

กฎ ABC สำหรับภาษา Java

กฎต่อไปนี้แสดงจำนวนการกำหนดค่า (Assignments), การแยกสาขา (Branches) และเงื่อนไข (Conditionals) ในเมตริก ABC สำหรับภาษา Java :

  1. เพิ่มจำนวนการมอบหมายงานขึ้นหนึ่งรายการเมื่อ:
    • การปรากฏของตัวดำเนินการกำหนดค่า (ไม่รวมการประกาศค่าคงที่และการกำหนดค่าพารามิเตอร์เริ่มต้น) ( =, *=, /=, %=, +=, -=, <<=, >>=, &=, !=, ^=, >>>= )
    • การปรากฏของตัวดำเนินการเพิ่มหรือลดค่า (คำนำหน้าหรือคำต่อท้าย) ( ++, -- )
  2. เพิ่มจำนวนสาขาขึ้นหนึ่งเมื่อ
    • การเรียกใช้ฟังก์ชันหรือการเรียกใช้เมธอดของคลาส
    • การปรากฏตัวของตัวดำเนินการ 'ใหม่'
  3. เพิ่มค่าเงื่อนไขหนึ่งเมื่อ:
    • การปรากฏของตัวดำเนินการเงื่อนไข ( <, >, <=, >=, ==, != )
    • การปรากฏของคำหลักต่อไปนี้ (' else ', ' case ', ' default ', ' ? ', ' try ', ' catch ')
    • การปรากฏของตัวดำเนินการเงื่อนไขเอกภาค

แอปพลิเคชัน

[ 1 ]

ไม่ขึ้นอยู่กับรูปแบบการเขียนโค้ด

เนื่องจากตัวชี้วัดคะแนน ABC สร้างขึ้นจากแนวคิดที่ว่างานต่างๆ เช่น การจัดเก็บข้อมูล การแยกสาขา และการทดสอบ เงื่อนไข ตัวชี้วัดนี้จึงไม่ขึ้นอยู่กับรูปแบบการเขียนโค้ดของผู้ใช้

การประมาณเวลาโครงการ

การคำนวณคะแนน ABC ช่วยในการประมาณเวลาที่จำเป็นในการทำโครงการให้เสร็จสมบูรณ์ สามารถทำได้โดยการประมาณคะแนน ABC ของโครงการอย่างคร่าวๆ และโดยการคำนวณคะแนน ABC ของโครงการในแต่ละวัน เวลาที่ใช้ในการทำโครงการให้เสร็จสมบูรณ์สามารถหาได้โดยการหารคะแนน ABC ของโครงการด้วยคะแนน ABC ที่ได้ในหนึ่งวัน

การคำนวณอัตราข้อผิดพลาด

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

การเปรียบเทียบโปรแกรม

โปรแกรมที่เขียนด้วยภาษาต่าง ๆ สามารถเปรียบเทียบกันได้โดยใช้คะแนน ABC เนื่องจากภาษาโปรแกรมส่วนใหญ่ใช้การกำหนดค่า การแยกเงื่อนไข และคำสั่งเงื่อนไข

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

เมตริกเชิงเส้น

คะแนน ABC เป็นแบบเชิงเส้นดังนั้นไฟล์ โมดูล คลาส ฟังก์ชัน หรือเมธอดใดๆ ก็สามารถให้คะแนนได้ ตัวอย่างเช่น คะแนน ABC (แบบเวกเตอร์) สำหรับโมดูลหนึ่งคือผลรวมของคะแนนของโมดูลย่อยต่างๆ อย่างไรก็ตาม คะแนน ABC แบบสเกลาร์นั้นไม่ใช่เชิงเส้น

ดูเพิ่มเติม

  • การประยุกต์ใช้เมตริก ABC กับภาษา C, C++ และ Java
  • ABC Metric ถูกเก็บถาวรเมื่อวันที่ 28 มีนาคม 2018 ในWayback Machine
  • กฎเกณฑ์ด้านขนาดและความซับซ้อน
  • การถอดรหัสเมตริกโค้ด Ruby
  • ตัวชี้วัด ABC
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=ABC_Software_Metric&oldid=1341197301 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เมตริกซอฟต์แวร์ ABC

เมตริก ซอฟต์แวร์ ABC ได้รับการแนะนำโดย Jerry Fitzpatrick ในปี 1997 เพื่อเอาชนะข้อเสียของ LOC [ 1 ] เมตริกนี้กำหนดคะแนน ABC เป็นค่าสามค่าที่แสดงถึงขนาดของชุดคำสั่งซอร์สโค้ด คะแนน...

ประวัติศาสตร์

แนวคิดเรื่องการวัดขนาดซอฟต์แวร์ได้รับการนำเสนอครั้งแรกโดย Maurice Halstead [ 2 ] จากมหาวิทยาลัย Purdue ในปี 1975 เขาเสนอว่าโปรแกรมคอมพิวเตอร์ทุกโปรแกรมประกอบด้วย โทเค็น เป็นหลัก ได้แก่ ตัวดำเนินการ และ ตัวถูกดำเนินการ...

คำนิยาม

องค์ประกอบทั้งสามของคะแนน ABC มีคำจำกัดความดังต่อไปนี้:

ทฤษฎี

กฎเฉพาะสำหรับการนับค่าเวกเตอร์ ABC ควรได้รับการตีความแตกต่างกันไปในแต่ละภาษา เนื่องจาก มีความแตกต่าง ทางความหมาย ระหว่างภาษาเหล่านั้น