Siklomatik sayı

Tümevarımcı , cyclomatic karmaşıklık ya ölçüde McCabe bir araçtır metroloji tarafından geliştirilen yazılım Thomas McCabe bir karmaşıklığını ölçmek için 1976 yılında bilgisayar programı . Bu ölçü, bir grafik biçiminde temsil edilen bir program aracılığıyla doğrusal olarak bağımsız "yolların" sayısını sayarak bir algoritmanın kararlarının sayısını yansıtır .

Tanım

Yapılandırılmış bir programın döngüsel karmaşıklığı şu şekilde tanımlanır:

veya:

M = siklomatik karmaşıklık; E = grafiğin kenar sayısı; N = grafiğin düğüm sayısı; P = grafiğin bağlı bileşenlerinin sayısı .

Faiz

Düşük bir siklomatik sayıya sahip basit bir kod teorik olarak okunması, test edilmesi ve bakımı daha kolaydır:

Kritik

Bununla birlikte, siklomatik sayı oybirliği değildir. YaniMart 1988Bir çalışma, siklomatik sayının sağlam bir teorik temele dayanmadığını ve yazılım geliştirme için uygun olmadığını gösterir ve hiçbir ampirik gözlemin bu önlemin yararlılığını haklı göstermediğini vurgular.

Siklomatik sayıyı tamamlamak için başka olasılıklar vardır, karmaşıklık NPATH (İngilizce, NPATH karmaşıklığı ) olarak, siklomatik sayının bu yolları eklemek için içerik olduğu yol kümesini ödünç almak için toplam fırsat sayısını ölçmek.

Karmaşıklık ölçüm araçları

Notlar ve referanslar

Notlar
  1. Burada yapılandırılmış, özellikle "bir giriş noktası ve bir çıkış noktası olan" anlamına gelir.
Referanslar
  1. McCabe (1976), s. 314.
  2. "  Siklomatik ve NPath karmaşıklığı açıklandı  " , Coding Swag üzerinde ,Mayıs 2013(erişim tarihi 10 Eylül 2013 ) .
  3. (inç) Bay Shepperd , "  Bir metrik olarak yazılımın döngüsel karmaşıklığını gözden geçirin  " , Software Engineering Journal , EIT uçuşu.  3, n o  21 st Ocak 88, s.  30-36 ( ISSN  0268-6961 , özet , çevrimiçi okuma ).
  4. (in) Brian A. Nejmeh , "  NPATH icra yolu karmaşıklığı ve Uygulamaları ölçüsüdür  " , ACM Communications , Computing Machinery, Derneği vol.  31, n o  21 st Şubat 1988, s.  188-200 ( ISSN  0001-0782 , DOI  10.1145 / 42372.42379 , özet , çevrimiçi okuma ).
  5. https://github.com/bbatsov/rubocop
  6. https://github.com/fzipp/gocyclo

Döngüsel karmaşıklığı hesaplayan araçlar

Dış bağlantılar

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">