มีความสัมพันธ์ระหว่างความซับซ้อนและความสามารถในการเข้าถึงได้หรือไม่?


18

ฉันได้ศึกษาความซับซ้อนของวงจร (McCabe) และความสามารถในการเข้าถึงซอฟต์แวร์ของ uni เมื่อเร็ว ๆ นี้ วันนี้อาจารย์ของฉันบอกว่าไม่มีความสัมพันธ์กันระหว่างตัวชี้วัดสองตัว แต่เป็นกรณีนี้จริงหรือ

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

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

คำตอบ:


2

ฉันได้ศึกษาความซับซ้อนของวงจร (McCabe) และความสามารถในการเข้าถึงซอฟต์แวร์ของ uni เมื่อเร็ว ๆ นี้ วันนี้อาจารย์ของฉันบอกว่าไม่มีความสัมพันธ์กันระหว่างตัวชี้วัดสองตัว แต่เป็นกรณีนี้จริงหรือ

จริงๆแล้วทั้งใช่และไม่ใช่

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

CC = E - N

ปัญหาการเข้าถึงได้เป็นปัญหาที่พบบ่อยในทฤษฎีกราฟที่สามารถแสดงในทางที่กำหนด: สองโหนด A และ B คือโหนด B สามารถเข้าถึงได้จากโหนด A คือหนึ่งสามารถเข้าถึง B เริ่มต้นจาก A และตามขอบของกราฟที่ถูกต้อง ทิศทาง? ดังนั้นจึงเป็นตัวชี้วัดอีกครั้งที่ใช้กับกราฟการไหลของการควบคุมและไม่ใช่ในรหัส

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

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

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


1

ฉันไม่คุ้นเคยกับความสามารถในการเข้าถึง แต่ถ้ามันเป็นตัวชี้วัดของโค้ดพา ธ ที่ไม่สามารถเรียกใช้งานได้ความซับซ้อนของวงจรควรเป็นขอบเขตบนของมัน


0

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

ในแง่ของข้อมูลในโลกแห่งความเป็นจริงอาจมีความสัมพันธ์ที่แข็งแกร่ง แต่อาจเป็นเพราะระบบซอฟต์แวร์ที่ออกแบบมาไม่ดีซึ่งไม่ได้กำจัดความสัมพันธ์นี้ มันอาจจะเป็นความสัมพันธ์ที่ไม่ได้ตั้งใจเพราะขาดความรู้เกี่ยวกับทฤษฎีกราฟ


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