Benutzer:

Benutzer einloggen:

(Schritt 1 von 2)


Schreibe Deine E-Mail Adresse in das weisse Feld und dann drücke den Button "Bestätigen".

Benutzer einloggen:

(Schritt 2 von 2)


Schreibe Dein Passwort in das weisse Feld und dann drücke den Button "Bestätigen".
Oder drücke den Button "Passwort anfordern", um vergessenes Passwort anzufordern.

Benutzer einloggen - Fehler:


E-Mail Adresse wurde nicht gefunden!
Drücke den Button "Vorheriger Schritt", um Deine E-Mail Adresse erneut einzugeben.
Oder drücke den Button "Benutzer registrieren" um Deine E-Mail Adresse zu registrieren.

Benutzer einloggen - Fehler:


Passwort stimmt nicht überein!
Drücke den Button "Vorheriger Schritt", um das Passwort erneut einzugeben.
Oder drücke den Button "Passwort anfordern", um vergessenes Passwort anzufordern.

Passwort anfordern:

(Schritt 1 von 2)


Schreibe Deine E-Mail Adresse in das weisse Feld und dann drücke den Button "Bestätigen".

Passwort anfordern:

(Schritt 2 von 2)


Dein Passwort wurde an Deine E-Mail gesendet.
Bitte kontrolliere auch Deinen Spam-Ordner.

Passwort anfordern - Fehler:


E-Mail Adresse wurde nicht gefunden!
Drücke den Button "Vorheriger Schritt", um Deine E-Mail Adresse erneut einzugeben.
Oder drücke den Button "Benutzer registrieren" um Deine E-Mail Adresse zu registrieren.

Benutzer registrieren:

(Schritt 1 von 5)


Schreibe Deine E-Mail Adresse in das weisse Feld und dann drücke den Button "Bestätigen".

Benutzer registrieren:

(Schritt 2 von 5)


Registrierungscode wurde an Deine E-Mail gesendet.
Bitte kontrolliere auch Deinen Spam-Ordner.
Kopiere den Registrierungscode aus Deiner E-Mail in das weisse Feld und dann drücke den Button "Bestätigen".
Oder drücke den Button "Vorheriger Schritt", um den Registrierungscode erneut anzufordern.

Benutzer registrieren - Fehler:


Die E-Mail Adresse ist bereits vergeben!
Drücke den Button "Vorheriger Schritt", um die E-Mail Adresse erneut einzugeben.
Oder drücke den Button "Benutzer einloggen", um dich mit Deiner E-Mail Adresse und Passwort einzulogen.
Oder drücke den Button "Passwort anfordern", um vergessenes Passwort anzufordern.

Benutzer registrieren:

(Schritt 3 von 5)


Setze Deinen Benutzernamen in das weisse Feld und dann drücke den Button "Bestätigen".

Benutzer registrieren - Fehler:


Registrierungscode stimmt nicht überein!
Drücke den Button "Vorheriger Schritt", um den Registrierungscode erneut einzugeben.

Benutzer registrieren:

(Schritt 4 von 5)


Setze Dein Passwort in das weisse Feld und dann drücke den Button "Bestätigen".

Benutzer registrieren - Fehler:


Der Benutzername ist bereits vergeben!
Drücke den Button "Vorheriger Schritt", um anderen Benutzernamen zu setzen.

Benutzer registrieren:

(Schritt 5 von 5)


Benutzer wurde erfolgreich registriert.
Drücke den Button "Benutzer einloggen", um einzuloggen.

Benutzer-Einstellungen:

Benutzer-Einstellungen:


Bitte logge dich ein um Benutzer-Einstellungen öffnen zu können.
Drücke den Button "Benutzer einloggen", um mit Deiner E-Mail Adresse einzuloggen.
Oder drücke den Button "Benutzer registrieren" um Deine E-Mail Adresse zu registrieren.

Benutzer-Einstellungen:


Dein Abonnement wurde erfolgreich abbestellt.

Benutzer-Einstellungen:


Dein Abonnement wurde erfolgreich eingerichtet.

Kommentar schreiben:

Schreibe deinen Kommentar in das weisse Feld und dann drücke den "Kommentar hinzufügen" Button.

Modulare Softwarearchitektur



Lego

Bevor wir mit dem Programmieren beginnen, wollen wir uns überlegen, wie wir das Programm aufteilen.

Was gewinnen wir, wenn wir das Programm richtig aufteilen?

Der Programmcode ist in mehrere kürzere Teile (Module) unterteilt. Jedes dieser Module erfüllt eine bestimmte Funktion. Die Funktion wird nur einmal im Modul programmiert, das Modul kann aber im gesamten Programm mehrfach verwendet werden. Dadurch entfällt die Notwendigkeit, denselben Code mehrmals zu schreiben oder zu kopieren, was das Schreiben, Debuggen und Ändern des Codes erleichtert.

Das Modul ist klar und leicht verständlich, da der Code nicht lang ist und nur ein Feature betrifft.

Das Modul ist gekapselt, unabhängig und erfüllt die Funktion vollumfänglich. Es ist daher auch einfach, in einem anderen Projekt zu verwenden.

Das Modul verfügt über eine klar definierte Ein- und Ausgabeschnittstelle. Mit dieser Schnittstelle verbinden wir das Modul mit dem übergeordneten Modul, das über die Eingangsschnittstelle die Sollwerte und Befehle in das Modul schreibt und über die Ausgangsschnittstelle die Istwerte und Zustände des Moduls liest.

Entsprechend benannte Eingangs- und Ausgangsmodul-Schnittstellenvariablen geben bereits die Funktion des Moduls an.

Die definierte Schnittstelle eignet sich hervorragend zum Testen der Funktionalität des Moduls während der Entwicklung und auch bei der Inbetriebnahme.

Bei Bedarf kann das Programm einfach um zusätzliche Module mit neuen Funktionen erweitert werden.

Das gesamte Programm ist strukturiert und übersichtlich.

Mehrere Programmierer können konfliktfrei gleichzeitig an einem Programm arbeiten, da jeder an einem anderen Modul arbeitet.

Die Arbeit (Programmieren, Debuggen, Testen, Dokumentieren, Simulation, Troubleshooting, Erweitern, etc.) ist effizient.

Sei vorsichtig! Eine falsch gestaltete Architektur kann später ein riesiges, unlösbares Problem sein. Wenn die Programmarchitektur schlecht ist, können selbst die besten Programmiertechniken das Ergebnis nicht retten.

© Radim-Automation, 2020–2025. Alle Rechte vorbehalten.
Die Verbreitung dieses Artikels ist mit Angabe der Quelle (Link zur Originalseite) ausdrücklich gestattet.


Verwandte vorherige Artikel:


Verwandte nächste Artikel:


Ich sehe eine grosse Ähnlichkeit zwischen einem Hausbauprojekt und einem Projekt der industriellen Maschinenautomatisierung.

1. Wir müssen eine Vorstellung davon bekommen, was das Ergebnis sein wird, wofür es verwendet wird und wie gross es sein wird.

2. Wir müssen alle notwendigen Anforderungen zusammentragen.

3. Je nach Grösse des Gebäudes / Programms ist es notwendig, ein ausreichend grosses Grundstück / eine ausreichend leistungsfähige SPS auszuwählen.

4. Es ist notwendig, eine geeignete Architektur und Pläne / SW-Architektur und Konzept zu entwerfen.

5. Wir verbinden technische Netzwerke zu dem Grundstück unter Berücksichtigung der Verfügbarkeit am jeweiligen Standort. / Andere elektrische Komponenten wählen wir entsprechend ihrer Kompatibilität mit der ausgewählten SPS aus.

6. Wir müssen ein solides Fundament für das Haus bauen. / Wir müssen eine zuverlässige unterste Programmschicht programmieren (Hardware-Abstraktionsschicht und allgemeine Funktionen).

7. Dann können wir den Rest nach den Anforderungen und Plänen bauen.

8. Stellt jetzt jemand eine neue Anforderung, kann diese nur in das Gebäude / Programm eingebaut werden, wenn diese Anforderung der vorgeschlagenen Architektur entspricht.

9. Bei falscher Architektur oder schlechten Fundamenten kann selbst der beste Maurer / Programmierer das idealisierte Gebäude / Programm nicht bauen.

Sogar eine einfache Maschine oder Anlage kann so komplex entworfen und programmiert werden, dass deren Diagnose und Erweiterung nur mit extremem Aufwand und einem hohen Risiko der Einführung neuer ungewollter Fehler möglich ist.
Glaubst du?

Es ist besser, ein modulares Programm zu schreiben, das in Zukunft leicht erweiterbar ist, als ein grosses monolithisches Programm, das alle möglichen Funktionen enthält.
Ein grosser monolithischer Programmblock ist schwer zu modifizieren, da er eine grosse Anzahl von Abhängigkeiten und "versteckten" Regeln enthält.

Die Aufteilung des Maschinenprogramms in Module kann auch für Visualisierung sinnvoll sein. In der Visualisierung ist es manchmal notwendig, mehrere Ansichten zu haben. Eine modulare Ansicht ist eine Ansicht, die strukturiert Informationen über die gesamte Maschine anzeigt.

Bei entsprechend modularem Aufbau der Maschinenelektronik ist es möglich, die Maschine stückweise zu testen und in Betrieb zu nehmen.

"Durch den zunehmenden Trend, maschinenbauliche Anlagen möglichst flexibel zu gestalten, ist es unabdingbar geworden, bestehende Programme so zu verändern, dass sich modulare Maschinenkonzepte auch in der Software widerspiegeln. Damit wird die Modularisierung zum Leitprinzip für die Gestaltung der Programme der Zukunft. Modularisierte Software umfasst Module, die als unabhängige Einheiten voll funktionsfähig und getestet sind, aber innerhalb verschiedener Maschinen zu einer einzigen Funktionseinheit kombiniert werden können."
- Michael Braun and Wolfang Horn. Publicis Pixelpark Erlangen (2017). Object-Oriented Programming with SIMOTION.

"Investitionen in gute Codequalität und gute Architektur sind nachhaltige Investitionen. Über 80% der Entwicklungs-Arbeiten sind Wartungsarbeiten sowie Änderungen an bestehendem Code. Prof. Niklaus Wirth meinte einmal, dass SW nicht für den Compiler geschrieben wird, sondern für Menschen die den Code warten müssen. Stellt sich die Frage nach „quick and dirty“, ist die Tragbarkeit der «technischen Schuld» mit zu berücksichtigen, denn irgendwann wird die Schuld untragbar oder so gross, dass ein «Neubeginn» billiger wird. Versicherungstechnisch spricht man hier von einem «Total-Schaden». Oft wird bei «quick and dirty Lösungen» immer wieder im gleiche Stil weiter «gewurstelt». Neben bestehenden schlechten Codestellen fallen weitere «Spaghetti – Zeilen» nicht mehr auf, ein Freipass…

So beginnt ein Teufelskreis, denn mit der wachsenden «technischen Schuld», verlangsamt sich –wegen unlesbarem und schlechtem Code – auch die Entwicklungsgeschwindigkeit. Dies verzögert das Fertigstellen neuer Features und das Projekt muss mit explosiv steigenden Opportunitätskosten leben."
- https://blog.noser.com/kennen-sie-ihre-technische-schuld-wir-unterstuetzen-sie-bei-der-rueckzahlung/

"Indem wir das Design des Codes kontinuierlich verbessern, machen wir es immer einfacher, damit zu arbeiten.
Dies steht in krassem Gegensatz zu dem, was normalerweise geschieht: wenig Refactoring und viel Aufmerksamkeit, um schnell neue Funktionen hinzuzufügen.
Wenn man sich die hygienische Angewohnheit angewöhnt, kontinuierlich zu refaktorisieren, wird man feststellen, dass es einfacher ist, den Code zu erweitern und zu pflegen."

Übersetzt von:
- Joshua Kerievsky. Addison-Wesley (2004). Refactoring to Patterns.

Lasst uns die Dinge beschleunigen!

Ein Mann braucht eine Stunde, um ein 1 m tiefes, 1 m breites und 1 m langes Loch zu graben. Wie viel Zeit braucht man, wenn man 10 Männer einsetzt?

ChatGPT: "Wenn ein Mann ein Loch von 1 m Tiefe, 1 m Breite und 1 m Länge in einer Stunde graben kann und 10 Männer gleichzeitig arbeiten, kann man die Zeit durch die Anzahl der Männer teilen, um die Gesamtzeit zu ermitteln, die die Gruppe für die Aufgabe benötigt.

Es würde also 1 Stunde / 10 Männer = 0,1 Stunden (oder 6 Minuten) dauern, bis die Gruppe von 10 Männern das Loch gegraben hat.

Sind Sie mit der Antwort von ChatGPT einverstanden?