Komplexität des Software-Designs

Der Begriff Komplexität steht für den Zustand von Ereignissen oder Dingen, die mehrere miteinander verbundene Verbindungen und hochkomplizierte Strukturen aufweisen. In der Softwareprogrammierung wird die Anzahl der Elemente und ihre Verbindungen allmählich real, wenn das Design von Software realisiert wird, was auf einmal zu schwer zu verstehen ist.

Die Komplexität des Software-Designs ist ohne Verwendung von Komplexitätsmetriken und -maßen schwer zu bewerten. Lassen Sie uns drei wichtige Maßstäbe für die Softwarekomplexität sehen.

Komplexitätsmaße von Halstead

Im Jahr 1977 führte Maurice Howard Halstead Metriken zur Messung der Softwarekomplexität ein. Die Metriken von Halstead hängen von der tatsächlichen Implementierung des Programms und seinen Maßnahmen ab, die statisch direkt von den Operatoren und Operanden aus dem Quellcode berechnet werden. Es ermöglicht die Bewertung von Testzeit, Vokabular, Größe, Schwierigkeit, Fehlern und Aufwand für C / C ++ / Java-Quellcode.

Laut Halstead ist „ein Computerprogramm eine Implementierung eines Algorithmus, der als Sammlung von Token betrachtet wird, die entweder als Operatoren oder als Operanden klassifiziert werden können“. Halstead-Metriken betrachten ein Programm als eine Folge von Operatoren und den zugehörigen Operanden.

Er definiert verschiedene Indikatoren, um die Komplexität des Moduls zu überprüfen.

Parameter Bedeutung
n1 Anzahl eindeutiger Operatoren
n2 Anzahl eindeutiger Operanden
N1 Anzahl des gesamten Auftretens von Operatoren
N2 Anzahl des gesamten Auftretens von Operanden

Wenn wir die Quelldatei auswählen, um ihre Komplexitätsdetails im Metric Viewer anzuzeigen, wird im Metric Report das folgende Ergebnis angezeigt:

Metrisch Bedeutung Mathematische Darstellung
n Wortschatz n1 + n2
N. Größe N1 + N2
V. Volumen Länge * Log2 Wortschatz
D. Schwierigkeit (n1 / 2) * (N1 / n2)
E. Bemühungen Schwierigkeit * Lautstärke
B. Fehler Volumen / 3000
T. Testzeit Zeit = Aufwand / S, wobei S = 18 Sekunden.

Zyklomatische Komplexitätsmessungen

Jedes Programm enthält Anweisungen, die ausgeführt werden müssen, um eine Aufgabe auszuführen, und andere Entscheidungsanweisungen, die entscheiden, welche Anweisungen ausgeführt werden müssen. Diese Entscheidungskonstrukte verändern den Programmfluss.

Wenn wir zwei Programme gleicher Größe vergleichen, wird das mit mehr Entscheidungsaussagen komplexer, da die Steuerung von Programmen häufig springt.

McCabe schlug 1976 das Cyclomatic Complexity Measure vor, um die Komplexität einer bestimmten Software zu quantifizieren. Es handelt sich um ein graphgesteuertes Modell, das auf Entscheidungskonstrukten von Programmen wie if-else-, do-while-, repeat-till-, switch-case- und goto-Anweisungen basiert.

Verfahren zur Erstellung eines Flusskontrolldiagramms:

  • Unterbrechen Sie das Programm in kleinere Blöcke, die durch Entscheidungskonstrukte begrenzt sind.
  • Erstellen Sie Knoten, die jeden dieser Knoten darstellen.
  • Verbinden Sie die Knoten wie folgt:
    • Wenn die Steuerung von Block i zu Block j verzweigen kann

      Zeichne einen Bogen

    • Vom Ausgangsknoten zum Eingangsknoten

      Zeichne einen Bogen.

Um die zyklomatische Komplexität eines Programmmoduls zu berechnen, verwenden wir die Formel -

V(G) = e – n + 2

Where
e is total number of edges
n is total number of nodes

Die zyklomatische Komplexität des obigen Moduls beträgt

e = 10
n = 8
Cyclomatic Complexity = 10 - 8 + 2
                      = 4

Nach P. Jorgensen sollte die zyklomatische Komplexität eines Moduls 10 nicht überschreiten.

Funktionspunkt

Es wird häufig verwendet, um die Größe von Software zu messen. Function Point konzentriert sich auf die vom System bereitgestellten Funktionen. Merkmale und Funktionen des Systems werden verwendet, um die Komplexität der Software zu messen.

Der Funktionspunkt zählt fünf Parameter, die als externer Eingang, externer Ausgang, logische interne Dateien, externe Schnittstellendateien und externe Anfrage bezeichnet werden. Um die Komplexität der Software zu berücksichtigen, wird jeder Parameter weiter als einfach, durchschnittlich oder komplex kategorisiert.

Sehen wir uns die Parameter des Funktionspunkts an:

Externe Eingabe

Jede eindeutige Eingabe von außen in das System wird als externe Eingabe betrachtet. Die Eindeutigkeit der Eingabe wird gemessen, da keine zwei Eingaben das gleiche Format haben sollten. Diese Eingänge können entweder Daten- oder Steuerparameter sein.

  • Simple - Wenn die Anzahl der Eingaben niedrig ist und weniger interne Dateien betrifft

  • Complex - Wenn die Anzahl der Eingaben hoch ist und mehr interne Dateien betrifft

  • Average - zwischen einfach und komplex.

Externer Ausgang

Alle vom System bereitgestellten Ausgabetypen werden in dieser Kategorie gezählt. Die Ausgabe wird als eindeutig betrachtet, wenn ihr Ausgabeformat und / oder ihre Verarbeitung eindeutig sind.

  • Simple - wenn die Anzahl der Ausgänge niedrig ist

  • Complex - wenn die Ausgangsanzahl hoch ist

  • Average - zwischen einfach und komplex.

Logische interne Dateien

Jedes Softwaresystem verwaltet interne Dateien, um seine Funktionsinformationen zu erhalten und ordnungsgemäß zu funktionieren. Diese Dateien enthalten logische Daten des Systems. Diese logischen Daten können sowohl Funktionsdaten als auch Steuerdaten enthalten.

  • Simple - wenn die Anzahl der Datensatztypen niedrig ist

  • Complex - wenn die Anzahl der Datensatztypen hoch ist

  • Average - zwischen einfach und komplex.

Externe Schnittstellendateien

Das Softwaresystem muss möglicherweise seine Dateien für eine externe Software freigeben oder die Datei zur Verarbeitung oder als Parameter an eine Funktion übergeben. Alle diese Dateien werden als externe Schnittstellendateien gezählt.

  • Simple - wenn die Anzahl der Datensatztypen in der freigegebenen Datei gering ist

  • Complex - Wenn die Anzahl der Datensatztypen in der freigegebenen Datei hoch ist

  • Average - zwischen einfach und komplex.

Externe Anfrage

Eine Anfrage ist eine Kombination aus Eingabe und Ausgabe, bei der der Benutzer einige Daten sendet, um sie als Eingabe abzufragen, und das System dem Benutzer mit der Ausgabe der verarbeiteten Anfrage antwortet. Die Komplexität einer Abfrage ist größer als die externe Eingabe und die externe Ausgabe. Die Abfrage gilt als eindeutig, wenn ihre Eingabe und Ausgabe in Bezug auf Format und Daten eindeutig sind.

  • Simple - Wenn die Abfrage nur wenig verarbeitet werden muss und nur eine geringe Menge an Ausgabedaten liefert

  • Complex - Wenn die Abfrage einen hohen Prozess benötigt und eine große Menge an Ausgabedaten liefert

  • Average - zwischen einfach und komplex.

Jeder dieser Parameter im System wird entsprechend seiner Klasse und Komplexität gewichtet. In der folgenden Tabelle ist die Gewichtung der einzelnen Parameter aufgeführt:

Parameter Einfach Durchschnittlich Komplex
Eingänge 3 4 6
Ausgänge 4 5 7
Anfrage 3 4 6
Dateien 7 10 15
Schnittstellen 5 7 10

Die obige Tabelle liefert rohe Funktionspunkte. Diese Funktionspunkte werden entsprechend der Komplexität der Umgebung angepasst. Das System wird anhand von vierzehn verschiedenen Merkmalen beschrieben:

  • Datenkommunikation
  • Verteilte Verarbeitung
  • Leistungsziele
  • Betriebskonfigurationslast
  • Transaktionsrate
  • Online-Dateneingabe,
  • Effizienz der Endbenutzer
  • Online-Update
  • Komplexe Verarbeitungslogik
  • Re-usability
  • Einfache Installation
  • Bedienungsfreundlichkeit
  • Mehrere Seiten
  • Wunsch, Änderungen zu erleichtern

Diese charakteristischen Faktoren werden dann wie unten erwähnt von 0 bis 5 bewertet:

  • Kein Einfluss
  • Incidental
  • Moderate
  • Average
  • Significant
  • Essential

Alle Bewertungen werden dann als N zusammengefasst. Der Wert von N reicht von 0 bis 70 (14 Arten von Merkmalen x 5 Arten von Bewertungen). Es wird verwendet, um Komplexitätsanpassungsfaktoren (CAF) unter Verwendung der folgenden Formeln zu berechnen:

CAF = 0.65 + 0.01N

Dann,

Delivered Function Points (FP)= CAF x Raw FP

Dieses FP kann dann in verschiedenen Metriken verwendet werden, z.

    Cost = $ / FP

    Quality = Fehler / FP

    Productivity = FP / Personenmonat