Jackson hat Programmierung strukturiert

Jackson hat Programmierung strukturiert (JSP) ist eine Methode für die strukturierte Programmierung, die auf Ähnlichkeiten zwischen Datenstrom-Struktur und Programm-Struktur gestützt ist. JSP Struktur-Programme und Daten in Bezug auf Folgen, Wiederholungen und Auswahlen, und demzufolge wird es angewandt, wenn man eine ausführliche Kontrollstruktur eines Programms unter dem Niveau entwirft, wo objektorientierte Methoden wichtig werden.

Einführung

Michael A. Jackson hat ursprünglich JSP in den 1970er Jahren entwickelt. Er hat das System in seinem 1975 Buch Grundsätze des Programm-Designs dokumentiert. Das Ziel von Jackson war, COBOL-Gruppe-Dateiverarbeitungsprogramme leichter zu machen, zu modifizieren und aufrechtzuerhalten, aber die Methode kann an Designprogramme für jede Programmiersprache gewöhnt sein, die Kontrollkonstruktionen, Sprachen wie C, Java und Perl strukturiert hat. Trotz seines Alters ist JSP noch im Gebrauch und wird unterstützt, indem er Werkzeuge wie der Visio des Microsofts und FALL-Werkzeuge wie Jackson Workbench schematisch dargestellt

wird

Jackson Structured Programming wurde von vielen, wie verbunden, mit strukturiertem Warnier gesehen programmierend, aber der letzten Methode eingestellt fast exklusiv auf die Struktur des Produktionsstroms. JSP und die Methode von Warnier sowohl Struktur-Programme als auch Daten mit nur Folgen, Wiederholungen und Auswahlen, so schaffen sie im Wesentlichen Programme, die parsers für regelmäßige Ausdrücke sind, die gleichzeitig den Eingang des Programms und Produktionsdatenströme vergleichen.

Weil, wie man fordert, JSP focusses auf dem vorhandenen Eingang und den Produktionsdatenströmen, ein Programm mit JSP entwerfend, aufrichtiger ist als mit anderen strukturierten Programmierverfahren, vermeidend, dass die Sprünge der Intuition Verwenden-Methoden wie verfeinernde Zergliederung erfolgreich programmieren mussten.

Eine andere Folge von JSP'S konzentriert sich auf Datenströme ist, dass es Programm-Designs mit einer sehr verschiedenen Struktur zur Art schafft, die durch die Methoden der schrittweisen Verfeinerung von Wirth und Dijkstra geschaffen ist. Eine typische Eigenschaft der Struktur von JSP Programmen ist, dass sie mehrere Eingangsoperationen haben, die überall im Code im Gegensatz zu entworfenen Programmen mit der schrittweisen Verfeinerung verteilt sind, die dazu neigen, nur eine Eingangsoperation zu haben. Jackson illustriert diesen Unterschied im Kapitel 3 von Grundsätzen des Programm-Designs. Er präsentiert zwei Versionen eines Programms, das ein bestimmte Verwenden JSP, die anderen verwendenden "traditionellen" Methoden.

Strukturentsprechung

Die JSP Version des Programms ist zu strukturell gleichwertig

Schnur-Linie;

Linie = in.readLine ;

während (Linie! = ungültig) {\

int Zählung = 0;

Spannen Sie firstLineOfGroup = Linie;

während (Linie! = ungültig && line.equals (firstLineOfGroup)) {\

Zählung ++;

Linie = in.readLine ;

}\

System.out.println (firstLineOfGroup + "" + Zählung);

}\</pre>

und die traditionelle Version des Programms ist zu gleichwertig

Schnur-Linie;

int Zählung = 0;

Spannen Sie firstLineOfGroup = ungültig;

während ((Linie = in.readLine )! = ungültig) {\

wenn (firstLineOfGroup == ungültiger

||! line.equals (firstLineOfGroup)) {\

wenn (firstLineOfGroup! = ungültig) {\

System.out.println (firstLineOfGroup + "" + Zählung);

}\

zählen Sie = 0;

firstLineOfGroup = Linie;

}\

Zählung ++;

}\

wenn (firstLineOfGroup! = ungültig) {\

System.out.println (firstLineOfGroup + "" + Zählung);}\</pre>

Jackson kritisiert die traditionelle Version, behauptend, dass sie die Beziehungen verbirgt, die zwischen den Eingangslinien bestehen, die Verständlichkeit des Programms und Haltbarkeit in Verlegenheit bringend, durch, zum Beispiel den Gebrauch eines speziellen Falls für die erste Linie zwingend und einen anderen speziellen Fall für eine Endproduktionsoperation zwingend.

Die Methode

JSP verwendet halbformelle Schritte, die vorhandene Struktur Eingänge eines Programms und Produktionen in der Struktur des Programms selbst zu gewinnen.

Die Absicht ist, Programme zu schaffen, die leicht sind, über ihre Lebenszeit zu modifizieren. Die Hauptscharfsinnigkeit von Jackson war, dass Voraussetzungsänderungen gewöhnlich geringe Kniffe zu den vorhandenen Strukturen sind. Für ein Programm gebaut, JSP, die Eingänge, die Produktionen und die inneren Strukturen des Programms das ganze Match verwendend, so sollten kleine Änderungen zu den Eingängen und Produktionen in kleine Änderungen zum Programm übersetzen.

JSP Struktur-Programme in Bezug auf vier Teiltypen:

  • grundsätzliche Operationen
  • Folgen
  • Wiederholungen
  • Auswahlen

Die Methode beginnt durch das Beschreiben Eingänge eines Programms in Bezug auf die vier grundsätzlichen Teiltypen. Es setzt dann fort, die Produktionen des Programms ebenso zu beschreiben. Jeder Eingang und Produktion werden als getrenntes Data Structure Diagram (DSD) modelliert. Um JSP dafür arbeiten zu lassen, rechnen - intensive Anwendungen wie Digitalsignalverarbeitung (DSP) es ist auch notwendig, Algorithmus-Struktur-Diagramme zu ziehen, die sich auf innere Datenstrukturen konzentrieren aber nicht eingeben und Produktion.

Der Eingang und die Produktionsstrukturen werden dann vereinigt oder in eine Endprogramm-Struktur, bekannt als Program Structure Diagram (PSD) verschmolzen. Dieser Schritt kann die Hinzufügung eines kleinen Betrags der hohen Kontrollstruktur einschließen, um die Eingänge und Produktionen zu heiraten. Einige Programme bearbeiten den ganzen Eingang vor dem Tun jeder Produktion, während andere, die in einer Aufzeichnung gelesen sind, eine Aufzeichnung schreiben Sie und wiederholen Sie. Solche Annäherungen müssen im PSD gewonnen werden.

Der PSD, der neutrale Sprache ist, wird dann auf einer Programmiersprache durchgeführt. JSP wird zur Programmierung am Niveau von Kontrollstrukturen eingestellt, so verwenden die durchgeführten Designs gerade primitive Operationen, Folgen, Wiederholungen und Auswahlen. JSP ist an Struktur-Programme am Niveau von Klassen und Gegenständen nicht gewöhnt, obwohl es Kontrollfluss innerhalb Methoden einer Klasse nützlich strukturieren kann.

JSP verwendet eine schematisch darstellende Notation, um die Struktur von Eingängen, Produktionen und Programmen mit Diagramm-Elementen für jeden der grundsätzlichen Teiltypen zu beschreiben.

Eine einfache Operation wird als ein Kasten gezogen.

Eine Folge von Operationen wird durch mit Linien verbundene Kästen vertreten. Im Beispiel unten besteht Operation A aus der Folge von Operationen B, C und D.

Eine Wiederholung wird wieder mit angeschlossenen Kästen vertreten. Außerdem hat die wiederholte Operation einen Stern an der richtigen Spitzenecke seines Kastens. Im Beispiel unten besteht Operation A aus einer Wiederholung der Null oder mehr Beschwörungen der Operation B.

Auswahl ist einer Folge, aber mit einem an der Spitzenecke der rechten Hand jeder fakultativen Operation gezogenen Kreis ähnlich. Im Beispiel besteht Operation A aus ein und nur eine von Operationen B, C oder D.

Ein bearbeitetes Beispiel

Als ein Beispiel ist hier, wie ein Programmierer entwerfen und eine Lauf-Länge encoder codieren würde, JSP verwendend.

Eine Lauf-Länge encoder ist ein Programm, das als sein Eingang einen Strom von Bytes nimmt. Es Produktionen ein Strom von Paaren, die aus einem Byte zusammen mit einer Zählung der Konsekutivereignisse des Bytes bestehen. Geführte Länge encoders wird häufig verwendet, um bitmaps grob zusammenzupressen.

Mit JSP ist der erste Schritt, die Struktur Eingänge eines Programms zu beschreiben. Eine Lauf-Länge encoder hat nur einen Eingang, einen Strom von Bytes, die als Null oder mehr Läufe angesehen werden können. Jeder Lauf besteht aus einem oder mehr Bytes desselben Werts. Das wird durch das folgende JSP Diagramm vertreten.

Der zweite Schritt ist, die Struktur der Produktion zu beschreiben. Die Lauf-Länge encoder Produktion kann als Null oder mehr Paare, jedes Paar beschrieben werden, das aus einem Byte und seiner Zählung besteht. In diesem Beispiel wird die Zählung auch ein Byte sein.

Der nächste Schritt soll die Ähnlichkeiten zwischen den Operationen im Eingang und den Produktionsstrukturen beschreiben.

Es ist in dieser Bühne, dass der scharfsinnige Programmierer auf einen Struktur-Konflikt stoßen kann, in dem es keine offensichtliche Ähnlichkeit zwischen dem Eingang und den Produktionsstrukturen gibt. Wenn ein Struktur-Konflikt gefunden wird, wird er gewöhnlich durch das Aufspalten des Programms in zwei Teile, das Verwenden einer Zwischendatenstruktur aufgelöst, um ein allgemeines Strukturfachwerk zu versorgen, mit dem die zwei Programm-Teile kommunizieren können. Die zwei Programm-Teile werden häufig als Prozesse oder Koroutinen durchgeführt.

In diesem Beispiel gibt es keinen Struktur-Konflikt, so können die zwei Strukturen verschmolzen werden, um die Endprogramm-Struktur zu geben.

In dieser Bühne kann das Programm durch das Hängen verschiedener primitiver Operationen von den Elementen der Struktur mit Fleisch versehen werden. Primitive, die sich andeuten, sind

  1. lesen Sie ein Byte
  2. erinnern Sie sich an Byte
  3. Satz-Schalter zur Null
  4. erhöhen Sie entgegnen
  5. Produktion hat sich an Byte erinnert
  6. Produktionsschalter

Die Wiederholungen müssen auch mit Fleisch versehen werden. Sie brauchen hinzugefügte Bedingungen. Passende Bedingungen würden sein

  1. während es mehr Bytes gibt
  2. während es mehr Bytes gibt und dieses Byte dasselbe als das erste Byte des Laufs ist und die Zählung noch ein Byte einfügen wird

Wenn wir all das zusammenstellen, können wir das Diagramm und die primitiven Operationen in C umwandeln, eine isomorphe Ähnlichkeit zwischen dem Code und den Operationen und der Struktur des Programm-Designdiagramms aufrechterhaltend.

  1. einschließen
einschließen

int Hauptsache (interne Nummer argc, Rotforelle *argv [])

{\

Rotforelle c;

c = getchar ;

während (c! = EOF) {\

Rotforelle-Zählung = 1;

Rotforelle first_byte = c;

c = getchar ;

während (c! = EOF && c == first_byte && Zählung

Kritik

Diese Methode wird nur arbeiten, wenn die Übersetzung vom Eingang bis Produktion zu einer Grammatik ohne Zusammenhänge gleichwertig ist.

Siehe auch

  • Systementwicklung von Jackson
  • Warnier strukturierte Programmierung

Außenverbindungen


Richard le Breton / Oswald das glückliche Kaninchen
Impressum & Datenschutz