Diskussion:McCabe-Metrik

message: Ich hab mir das Beispiel mit den Wochentagen jetzt eine Zeit lang angesehen, aber ich komm beim besten Willen nicht auf M = 9. Meiner Berechnung nach sollte für das Beispiel M = 8 sein (für M = e-n+2).
Bitte um Korrektur entweder des Artikels oder meiner Logik. :)
--Fibbo 18:31, 5. Okt. 2010 (CEST)
replies: text: Habe mir das gerade auch, zusammen mit jemand drittem angeschaut, und auch wir kommen auf 8. Habs im Artikel geändert. Wenn jemand anderer Meinung ist, müsste man zur (Er-)Klärung mal den graphen visualisieren. --212.23.105.165 11:50, 29. Jan. 2011 (CET)
replies: text: Hallo, es gibt durchaus berechtigte Kritik an Komplexitätsmaßen, aber hier gebe ich dir Recht: Das hier als "Kritik" angegbene Beispiel ist ungeeignet, da es tatsächlich eine vollkommen unnötig hohe Komplexität beinhaltet. Die Metrik erfasst hier also den schlechten Stil des Codes durchaus korrekt. Schönen Gruß --DownAnUp 15:10, 28. Jan. 2012 (CET)

text: Ich hielte es für sinnvoll, wenn der Artikel auch für das zweite Beispiel die Komplexitätszahl angeben würde - bisher steht dort lediglich, daß sie niedriger als im ersten Beispiel ist. Nach der Regel "Anzahl der binären Verzweigungen plus Eins" komme ich auf M=2. Falls das so korrekt ist, könnte jemand diesen Wert in den Artikel schreiben.--95.114.86.12 14:53, 8. Dez. 2019 (CET)
thread_title:  Code-Beispiel unter "Kritik" 

message: Allgemeine Frage zu "Interpretation der Metrik":
Die Aussage ist "über 10 wird es zu schwer..." - nicht mehr und nicht weniger?
Aus "über 10 ist es schwer" folgt nicht zwangsweise, dass es unter 11 in Ordnung sein muss.
Sicher, dass genau das diskutiert wird? Stimmt die Grundaussage nicht? (nicht signierter Beitrag von 31.19.226.215 (Diskussion) 10:16, 2. Jul 2015 (CEST)
replies: text: Hallo, schwierig. Siehe auch hier: https://stackoverflow.com/questions/745857/do-you-find-cyclomatic-complexity-a-useful-measure - grob: alles >50 sollte reviewed werden, wenn man nach "Best practice" geht. In diesem guten Artikel von 2016 wird CC grundlegend als positiv gesehen, speziell als Mittel der Kommunikation "Lage" bzw. "Situation" zwischen verschiedenen Personen (Manager-Manager, Manager-Dev) etc. Ich denke der Kommentar hier ist erledigt und sollte wenn dann grundlegend erforscht werden (empirisch), wie CC sich in verschiedenen Software (Sprachen, Projekte z.B. Embedded, Umfang, Targets, etc.) auswirkt. Gruss--17387349L8764 (Diskussion) 12:18, 19. Feb. 2021 (CET)
thread_title:  Umstritten 

message: Ich würde gerne eine Diskussion anstoßen bzgl. der zur Zeit im Artikel verwendeten Formel für die Berechnung der zyklomatischen Komplexität, (also hier: M = e - n + 2p).
Meiner Meinung nach ist diese wie sie hier im Artikel verwendet wird, schlicht und ergreifend falsch.
M = e - n + 2p funktioniert nur dann, wenn davon ausgegangen werden kann, dass die Zusammenhangskomponenten des Kontrollflussgraphen EINEN Anfangsknoten und EINEN Endknoten hat. [McCabe geht in seinem Paper davon aus.] Das wird im Artikel nicht erwähnt. Die Formulierung, dass die Anzahl der Zusammenhangskomponenten gleich der Anzahl der Sprünge aus dem Programm heraus entspricht (also z.B. return-Anweisungen), ist somit eindeutig missverständlich, da in einem Programm (oder Prozedur) üblicherweise mehrere return-Anweisungen verwendet werden (und nur EIN Anfangsknoten). Mit der Formel M = e - n + 2p erhält man somit ein falsches Ergebnis, da es nur EINEN Anfangsknoten, aber MEHRERE Endknoten im Graphen gibt, wohingegen die Anzahl der Zusammenhangskomponenten gleich 1 bleibt. (Man würde annehmen, dass p gleich der Anzahl der return-Anweisungen ist und diese mal zwei nehmen.)
[Auch nachzulesen auf der englischen Wikipedia-Seite, zur Zeit unter der Fußnote a. (Here "structured" means in particular "with a single exit (return statement) per function").]
Mein Vorschlag:
1) Die Formel M = e - n + p + 1 verwenden und dabei erwähnen, dass p die Anzahl der Sprünge aus dem Programm heraus ist, wobei es nur einen Anfangsknoten im Kontrollflussgraphen gibt. Damit umgeht man den Begriff der Zusammenhangskomponente eines Graphen.
ODER
2) Die Formel M = e - n + 2p beibehalten, aber erwähnen, dass die Zusammenhangskomponenten des Graphen nur einen Anfangsknoten und einen Endknoten besitzen dürfen. Die Berechnung für ein Programm mit mehreren Endpunkten, ist dann nicht ohne weiteres möglich.
ODER
3) (So haben es Ludewig und Lichter in Software Engineering - Grundlagen, Menschen, Prozesse und Techniken. dpunkt.verlag. 3. Auflage. Seite 315 gemacht.) Die Formel M = e - n + p benutzen, wobei p hier die Anzahl der Außenverbindungen ist. Außenverbindungen sind Ein- und Ausgangsknoten. Hier hätte man den Vorteil, dass der Kontrollflussgraph mehrere Anfangsknoten haben könnte. (Der 1. Vorschlag ist also ein Spezialfall von diesem hier.)
Für eine Varianten muss man sich entscheiden, aber bitte nicht mehrere vermischen, da sonst das Ergebnis falsch berechnet werden könnte.
Viele Grüße (nicht signierter Beitrag von 88.78.217.167 (Diskussion) 11:24, 5. Mär. 2016 (CET)
thread_title:  Berechnung der Komplexität mit Hilfe von Knoten und Kanten 

message: Was bedeutet "linear unabhängig" für Pfade auf einem Graphen? Wohin kann man dafür verlinken? In Adjazenzmatrix wird auf Lineare Algebra verlinkt, aber "linear unabhängig" kommt nicht vor. --Rainald62 (Diskussion) 11:54, 27. Apr. 2016 (CEST)
replies: text: Siehe Lineare Unabhängigkeit. --Rôtkæppchen₆₈ 17:00, 7. Okt. 2016 (CEST)
replies: text: Hast offenbar die Frage nicht verstanden. --Rainald62 (Diskussion) 00:06, 9. Okt. 2016 (CEST)
thread_title:  linear unabhängig? 

message: Ich will ja nicht unken, aber hätte der Montag in dem Arrays nicht den Index Wert 0? Wenn ihr mit "if ((nummer >= 1) && (nummer <= sizeof (tage)))" das Array absichert hättet ihr dann nicht echt Schwierigkeiten auf den Montag zu kommen? Ich wäre auch nicht mal verwundert der Compiler in beiden fällen den gleichen Hex Code baut.... (nicht signierter Beitrag von 62.96.90.172 (Diskussion) 13:50, 2. Mär. 2018 (CET)
replies: text: Ich sehe da aktuell keinen Fehler (mehr?). Der Zugriff auf das Array erfolgt durch tage[nummer - 1], für nummer==1 wird also "Montag" zurückgeliefert.--95.114.86.12 14:56, 8. Dez. 2019 (CET)
thread_title:  Fehler im Quelltext??