Software-Entwicklung für Ingenieure und Ingenieurinnen
Eine Einführung mit der Programmiersprache C
- 2024
- Buch
- Verfasst von
- Norbert Drescher
- Verlag
- Springer Berlin Heidelberg
Über dieses Buch
Softwareentwicklung ist mehr als nur Programme schreiben: Die Entwicklung sicherer Programme erfordert ein systematisches Vorgehen von der Aufgabenstellung bis zum getesteten Programm. In diesem Buch wird eine Vorgehensweise beschrieben, die alle Aspekte einer Softwareentwicklung umfasst. Ausgehend von allgemeinen Grundlagen und Einführungen werden die einzelnen Entwicklungsschritte vorgestellt und durch Beispiele und Übungen vertieft. Dabei wird als Programmiersprache C benutzt, die ebenfalls schrittweise eingeführt wird, sodass der Zusammenhang zwischen Entwurf, Sprachkonzept und Programmierung deutlich wird. Abgerundet wird das Buch durch zwei Anwendungsschwerpunkte, in denen die Entwicklung von Systemprogrammen und von Programmen zur Steuerung technischer Anlagen beschrieben werden.
Inhaltsverzeichnis
-
Frontmatter
-
Kapitel 1. Einleitung und Methodik
Norbert DrescherDas Buch beschreibt eine umfassende Methodik für die Entwicklung von Software, wobei es zunächst die Bedeutung des Begriffs 'Entwicklung' anhand einer mathematischen Beziehung erklärt. Diese Beziehung unterscheidet zwischen der Anwendung und der Entwicklung von Software, wobei die Entwicklung als das Finden einer Funktion beschrieben wird, wenn Ein- und Ausgangsgrößen bekannt sind. Das Buch behandelt die Programmiersprache C, die besonders für die Entwicklung von Systemsoftware und technischen Anwendungen geeignet ist. Es wird eine Schritt-für-Schritt-Anleitung zur Entwicklung von Programmen gegeben, die von der Analyse der Problemstellung über den Entwurf von Algorithmen bis hin zur Fehlerbehandlung reicht. Besondere Aufmerksamkeit wird der strukturierten Vorgehensweise und der Fehlervermeidung geschenkt, um eine zuverlässige und nachvollziehbare Software zu entwickeln. Das Buch eignet sich sowohl für fortgeschrittene Entwickler als auch für solche, die ihre Kenntnisse in der Programmiersprache C vertiefen möchten.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungDas Buch beschreibt eine Methodik für die Entwicklung von Software. Zuvor wird jedoch das Wort »Entwicklung« näher betrachtet. Was ist Entwicklung überhaupt? Eine Erklärung wird anhand einer mathematischen Beziehung dargestellt. -
Kapitel 2. Analyse
Norbert DrescherDas Kapitel befasst sich mit der Analyse als zentralem Schritt in der Softwareentwicklung. Vor Beginn eines Entwurfs muss eine vollständige Beschreibung der Aufgabenstellung vorliegen, die das grundlegende Ziel und die Nutzer der Anwendung definiert. Die Analyse umfasst die Zerlegung des Gegenstands in Teile, die Sammlung von Informationen und die Strukturierung der Beziehungen zwischen diesen Teilen. Besondere Aufmerksamkeit wird auf die Eigenschaften und Wechselwirkungen der Teile gelegt, um ein umfassendes Verständnis zu gewährleisten. Praktische Beispiele und graphische Verfahren werden eingesetzt, um die Analyse zu veranschaulichen und zu vereinfachen. Die Betrachtung der Anwendungsumgebung und die Interaktionen zwischen Umgebung und Software sind ebenfalls wichtige Aspekte. Das Kapitel schließt mit einer detaillierten Beschreibung der Ein- und Ausgaben sowie der Fehleranalyse, um die Anforderungen klar zu definieren und die Grundlage für den Entwurf zu schaffen.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungBevor ein Entwurf beginnen kann, muss zunächst sichergestellt werden, dass eine vollständige Beschreibung der Aufgabenstellung vorliegt. Dazu dient die Analyse. Eine Analyse ist die Untersuchung eines Gegenstands oder Sachverhalts mit dem Ziel, eine vollständige Kenntnis über diesen zu erhalten. -
Kapitel 3. Entwurf
Norbert DrescherDas Kapitel behandelt den Entwurf von Software und deren Umgebung, basierend auf den Ergebnissen der Analysephase. Es wird gezeigt, wie Anwendungsfalldiagramme und Aktivitätsdiagramme genutzt werden, um den Systementwurf zu beschreiben. Besonderes Augenmerk liegt auf der Beschreibung von Aktivitäten und Aktionen sowie der Nutzung von UML-Diagrammen zur Darstellung dieser Prozesse. Praktische Beispiele und detaillierte Erklärungen zur schrittweisen Verfeinerung von Aktivitäten und zur Fehlerbehandlung machen das Kapitel besonders wertvoll für Softwareentwickler und Systemanalytiker. Die Beschreibung der Datenflussanalyse und die Betrachtung von Ausnahme- und Fehlerbehandlung runden das Kapitel ab und bieten eine umfassende Grundlage für das Verständnis des Softwareentwurfs.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungDas Ergebnis der Analyse ist eine vollständige Beschreibung des Gesamtsystems, bestehend aus der zu entwickelnden Software und der Umgebung, in der die Software genutzt werden soll. Ziel des Entwurfs ist die Entwicklung der Algorithmen, die die beschriebene Aufgabe realisieren sollen. Dazu werden jetzt nur noch die Schnittstellen zur Umgebung betrachtet. -
Kapitel 4. Information, Daten und Datenverarbeitung
Norbert DrescherDas Kapitel beginnt mit der Definition und Darstellung von Information in einem Rechner. Es wird erklärt, wie Informationen durch Zeichen und Zeichensätze repräsentiert werden und wie diese in Binärzeichen umgewandelt werden. Ein wesentlicher Teil des Textes beschäftigt sich mit der Darstellung von Zahlen im Binärsystem und den Unterschieden zwischen positiven und negativen Zahlen. Hierbei wird die Zweikomplementcodierung eingeführt, die es ermöglicht, negative Zahlen in einem Rechner darzustellen. Weiterhin wird auf die Speicherung und Verarbeitung von Daten in einem Rechner eingegangen, wobei die grundlegenden Operationen und die Arbeitsweise eines Prozessors detailliert beschrieben werden. Abschließend werden nichtnumerische Informationen und deren Codierung, wie zum Beispiel der ASCII-Code, behandelt. Der Text bietet eine umfassende Einführung in die grundlegenden Prinzipien der Datenverarbeitung in Rechnern und ist besonders für Programmierer und IT-Experten von Interesse.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungUm Algorithmen von einem Rechner ausführen lassen zu können, müssen diese bestimmte Fähigkeiten und Eigenschaften besitzen. Diese müssen zumindest teilweise bei der C-Programmierung berücksichtigt werden. Daher werden in diesem Kapitel grundlegende Arbeitsprinzipien eines Rechners vorgestellt und welchen Einfluss diese auf die Programmierung haben. Dabei wird zunächst geklärt, was Information bedeutet und wie Information in einem Rechner dargestellt werden kann. Darauf aufbauend wird das Arbeitsprinzip eines Rechners vorgestellt. -
Kapitel 5. Einführung in die Programmiersprache C
Norbert DrescherDer Beitrag führt in die Programmiersprache C ein und erklärt, wie ein Rechner trotz eingeschränkter Fähigkeiten komplexe Aufgabenstellungen bewältigen kann. Es wird das Konzept der Funktionen und deren Implementierung in C vorgestellt. Der Rechner nutzt Bitketten zur Verarbeitung und speichert Informationen in Form von Bitketten, die er verarbeiten und verknüpfen kann. Die Programmiersprache C orientiert sich am Verarbeitungsprinzip des Rechners und bietet dem Programmierer eine Schnittstelle, die der Arbeitsweise des Menschen näherkommt. Das Funktionsprinzip, das auch in natürlichen Sprachen und der Mathematik genutzt wird, wird anhand der Potenzfunktion erläutert. C nutzt das Funktionsprinzip zur Implementierung von Algorithmen und stellt Funktionen mit spezifischen Eigenschaften bereit, die in Funktionen und Modulen zusammengefasst werden können. Die Programmiersprache C verlangt die genaue Angabe der Eigenschaften einer Bitkette und bietet verschiedene Datentypen zur Beschreibung von Informationen. Der Beitrag schließt mit einer Einführung in die Programmierung von C-Programmen und der Nutzung von Funktionen und Bibliotheken.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungEine Programmiersprache ist der Vermittler zwischen einem Programmierer und einem Rechner. Beide Seiten müssen diese Sprache verstehen. Verglichen mit dem Programmierer ist der Rechner zunächst jedoch sehr einfach und in seinen Fähigkeiten stark eingeschränkt. -
Kapitel 6. Alternativen
Norbert DrescherDas Kapitel beschäftigt sich mit der Entscheidungsfindung in Programmen basierend auf Bedingungen. Es unterscheidet zwischen Alternativen, bei denen eine von mehreren Aktionen ausgeführt wird, und Wiederholungen, die abhängig von einer Bedingung mehrmals durchgeführt werden. Eine Einführung in die Aussagenlogik und Boolesche Algebra dient als Grundlage für die Formulierung von Bedingungen und deren Implementierung in Software. Verschiedene Varianten von Alternativen und deren Umsetzung in Programmiersprachen wie C werden vorgestellt. Praktische Beispiele, wie ein Zifferntest und ein Thermometer, veranschaulichen die Anwendung der theoretischen Konzepte. Die Analyse und Implementierung von Bedingungen und Alternativen wird detailliert erläutert, um ein tiefes Verständnis der Entscheidungsfindung in Software zu vermitteln.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungIn Abschn. 5.4 wurden Anweisungen der Reihenfolge nach von oben beginnend abgearbeitet. Nun gibt es allerdings viele Situationen, in denen eine Entscheidung getroffen werden muss, und abhängig von dieser Entscheidung soll im Programm fortgefahren werden. Dabei basiert die Entscheidungsfindung auf Bedingungen. -
Kapitel 7. Schleifen
Norbert DrescherDas Kapitel behandelt die grundlegenden Konzepte und die Implementierung von Schleifen in der Programmierung. Schleifen werden als Mittel zur Wiederholung von Anweisungen eingeführt und ihre Eigenschaften, wie die Prüfung des Wiederholungs- bzw. Abbruchkriteriums und die Komponenten des Schleifenblocks, werden detailliert beschrieben. Verschiedene Schleifentypen, wie Kopf- und Fußschleifen, sowie deren Implementierung in der Programmiersprache C werden vorgestellt. Besondere Aufmerksamkeit wird der Analyse und dem Entwurf von Schleifen geschenkt, wobei praktische Beispiele und die Betonung der Bedeutung von strukturiertem Programmieren den Leser dazu anregen, die Konzepte in eigenen Projekten anzuwenden.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungBisher ist die einmalige Ausführung von Anweisungen betrachtet worden. In vielen Anwendungen müssen Aktionen jedoch wiederholt bis fortwährend ausgeführt werden. Sollen Benutzer mehrfach vergleichbare Eingaben machen, soll ein Text nach einem Wort durchsucht werden oder ein Roboter fortlaufend Bauteile bearbeiten, dann befinden sich die Aktionen der Anwendungsfälle in Schleifen. -
Kapitel 8. Datenstrukturen
Norbert DrescherDas Kapitel behandelt die Bedeutung von Datenstrukturen in der Programmierung und zeigt, wie diese zur Organisation und Verarbeitung von Daten genutzt werden können. Nach einer Einführung in die Problemanalyse und die Datenflussanalyse wird die Anwendung von Datenstrukturen bei der Verarbeitung von Datensätzen mit mehreren Einzeldaten detailliert erläutert. Es wird gezeigt, wie Datenstrukturen in der Programmiersprache C implementiert werden und welche Vorteile sie bieten. Besonders interessant ist die Darstellung der verschiedenen Arten von Datenstrukturen und deren Anwendung in der Praxis. Das Kapitel schließt mit einer vertiefenden Datenanalyse, die notwendige Abhängigkeiten und Wertebereiche der Daten berücksichtigt.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungIn Kap. 6 und Kap. 7 wurden der Entwurf von Algorithmen mit Alternativen und Schleifen und ihre Implementierung in der Programmiersprache C eingeführt. In diesem Kapitel stehen die Daten im Vordergrund. Ausgangspunkt ist wieder die Problemanalyse, die das Ziel hat, eine vollständige und widerspruchsfreie Aufgabenstellung zu erstellen und die mit der Beschreibung der Ein-/Ausgangsdaten endet. -
Kapitel 9. Funktionen
Norbert DrescherDer Fachbeitrag behandelt die Erstellung und Nutzung von Funktionen in der Programmierung, insbesondere im Kontext der C-Programmiersprache. Es wird erklärt, wie Funktionen zur Beschreibung komplexer Sachverhalte eingesetzt werden können und wie sie durch funktionale Zerlegung und Hierarchien strukturiert werden. Die funktionale Zerlegung ermöglicht es, komplexe Aufgaben in überschaubare Teilaufgaben zu zerlegen, die durch Funktionen realisiert werden. Diese Funktionen können wiederum in Diagrammen beschrieben werden, um die Struktur und Beziehungen der Teilaufgaben darzustellen. Der Beitrag geht auch auf die verschiedenen Methoden der Parameterübergabe ein, wie Call by Value und Call by Pointer, und diskutiert deren Vor- und Nachteile. Zudem werden Maßnahmen zur Verbesserung der Programmiereffizienz und -sicherheit vorgestellt, wie die Verwendung von Wrapper-Funktionen und die Nutzung von Speicherklassen. Besondere Aufmerksamkeit wird der funktionalen Sicherheit geschenkt, um Fehler durch unkontrollierte Nutzung von Daten oder Aktionen zu vermeiden. Der Beitrag schließt mit praktischen Beispielen und Hinweisen zur Implementierung und Testung von Funktionen, die sowohl für Anfänger als auch für erfahrene Programmierer nützlich sind.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungFunktionen sind in Kap. 5 als universelles Hilfsmittel zur Beschreibung komplexer Sachverhalte eingeführt worden. Darauf aufbauend wurde die Hauptfunktion eines C-Programms eingeführt, und es wurde die Nutzung von Bibliotheksfunktionen vorgestellt. In diesem Kapitel wird die Erstellung von Funktionen behandelt. -
Kapitel 10. Dynamische Datenstrukturen
Norbert DrescherDas Kapitel über dynamische Datenstrukturen erläutert die Vorteile und Anwendungsfälle von dynamischen Datenstrukturen im Vergleich zu statischen Datenstrukturen. Es wird gezeigt, wie dynamische Datenstrukturen während der Laufzeit erzeugt und gelöscht werden können, um Speicher effizient zu nutzen und Anpassungsfähigkeit zu gewährleisten. Besondere Aufmerksamkeit wird auf die Nutzung von Zeigern zur Lösung allgemeiner Problemstellungen und die Entkopplung von Code und Daten gelegt. Praktische Beispiele wie Stapelspeicher, Warteschlangen und dynamische Tabellen veranschaulichen die Vorteile und Anwendungen dynamischer Datenstrukturen in verschiedenen Softwareanwendungen.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungIn Kap. 8 sind Datenstrukturen bereits eingeführt worden. Dabei handelt es sich um statische Datenstrukturen. Diese werden im Programm definiert und je nach Lebensdauer beim Start der Anwendung oder einer Funktion im Speicher des Rechners angelegt. -
Kapitel 11. Anpassbare Softwarestrukturen
Norbert DrescherDas Kapitel 'Anpassbare Softwarestrukturen' befasst sich mit der zentralen Rolle von Funktionen in der Programmiersprache C zur Strukturierung von Programmen. Funktionen werden zur Zerlegung von Aktionen genutzt, wobei die Aufrufbeziehungen durch Funktionsdiagramme beschrieben werden. Diese Diagramme zeigen statische Beziehungen zwischen Funktionen, die jedoch für flexible Softwareanpassungen nicht ausreichen. Der Text diskutiert verschiedene Szenarien, die eine Anpassung der Software erfordern, wie Weiterentwicklungen, Hardwareänderungen und die Nutzung auf unterschiedlichen Rechnern. Um die Vielfalt zu beherrschen, wird eine Lösung angestrebt, die mehrere Versionen einer Anwendung vermeidet. Möglichkeiten zur Auswahl der Variante umfassen die bedingte Übersetzung und die Laufzeitauswahl. Funktionszeiger spielen eine Schlüsselrolle bei der Dynamisierung von Softwarestrukturen, indem sie flexible Softwarestrukturen ermöglichen. Beispiele und detaillierte Erklärungen zur Implementierung von Funktionszeigern und Callback-Funktionen werden vorgestellt. Besondere Aufmerksamkeit wird der Sicherheit und den Gefahren bei der Nutzung änderbarer Bindungen geschenkt. Das Kapitel bietet einen umfassenden Überblick über die Herausforderungen und Lösungen bei der Anpassung von Software an unterschiedliche Umgebungen und Randbedingungen.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungFunktionen sind das zentrale Hilfsmittel zur Strukturierung von Programmen in der Programmiersprache C. Alle Aktionen werden schrittweise zerlegt und durch Funktionen realisiert. Dadurch ergibt sich eine Hierarchie von Funktionen, die durch Funktionsdiagramme beschrieben werden kann. -
Kapitel 12. Ein-/Ausgaben und Dateien
Norbert DrescherDas Kapitel beginnt mit der Erklärung des Standardverfahrens für die Ein- und Ausgabe von Daten und deren Speicherung in Dateien. Es wird beschrieben, wie Dateisysteme aufgebaut sind und wie Daten sequenziell gespeichert und gelesen werden. Ein wichtiger Aspekt ist die Verwaltung des Positionszeigers, der den aktuellen Lesepunkt in einer Datei markiert. Das Kapitel geht auch auf die Unterschiede zwischen verschiedenen Betriebssystemen bei der Pfadangabe ein und erläutert, wie Dateien auf internen und externen Speichermedien gespeichert werden. Besondere Aufmerksamkeit wird der Fehlerbehandlung geschenkt, wobei verschiedene Fehlerfälle und deren Behebung beschrieben werden. Praktische Beispiele und Funktionen zur Dateiverwaltung runden das Kapitel ab und bieten dem Leser konkrete Anwendungsfälle und Lösungsansätze.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungIn diesem Kapitel wird das Standardverfahren für die Ein- und Ausgabe von Daten und seine Nutzung für die Speicherung von Daten auf internen oder externen Speichermedien in Form von Dateien vorgestellt. -
Kapitel 13. Strukturierung der Software
Norbert DrescherDer Beitrag behandelt die grundlegenden Prinzipien der Softwareentwicklung und die Bedeutung der Modularisierung. Es wird erklärt, wie Funktionen und Daten in Module gruppiert werden können, um die Komplexität von Programmen zu bewältigen. Dabei werden verschiedene Arten von Modulen wie Datenmodule, Funktionsmodule und kombinierte Module vorgestellt. Besonders interessant ist die Darstellung des V-Modells und der verschiedenen Kriterien zur Modulzuordnung, wie z.B. die Gruppierung nach Anwendungsfällen oder Dienstleistungen. Zudem wird die Bedeutung von Header-Dateien und die Steuerung der Sichtbarkeit von Namen und Typen in Modulen detailliert erläutert. Die praktischen Beispiele und die Hinweise zur Dokumentation von Softwarestrukturen machen den Beitrag besonders wertvoll für Softwareentwickler, die ihre Programme effizient und übersichtlich gestalten möchten.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungEin Grundprinzip einer Entwicklung ist die Zerlegung einer Aufgabenstellung in einzelne Aktivitäten, deren weitere Zerlegung nicht möglich oder nicht sinnvoll ist. Sind alle Aktivitäten festgelegt worden, werden diese als einzelne Funktionen realisiert. Dies führt dazu, dass je nach Komplexität eines Programms viele bis sehr viele Funktionen entstehen können. -
Kapitel 14. Fehlerbehandlung
Norbert DrescherDas Kapitel widmet sich der Fehlerbehandlung in der Softwareentwicklung und erläutert, wie Fehler während der Entwicklung und Implementierung vermieden werden können. Es werden verschiedene Fehlerquellen und -typen identifiziert, wie z.B. systematische Fehler und Fehler durch Komponentenausfälle. Besondere Aufmerksamkeit wird der Fehlererkennung und -behandlung geschenkt, wobei Methoden zur Fehlermeldung und Fehlerreaktion detailliert beschrieben werden. Zudem werden Techniken zur Fehlersuche und -behebung vorgestellt, um die Zuverlässigkeit und Qualität der Software zu erhöhen. Der Text bietet praktische Ansätze und Werkzeuge, die Entwicklern helfen, Fehler effektiv zu managen und die Stabilität ihrer Software zu gewährleisten.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungBisher sind einzuhaltende Vorgaben und Regeln im Entwurf und während der Implementierung in den einzelnen Kapiteln angegeben worden. Alle diese Angaben haben das Ziel, die Qualität von Software zu verbessern und damit die Wahrscheinlichkeit von Fehlern im Programm zu reduzieren. Zudem ist in Abschn. 9.2.2 eine Vorgehensweise bei der Implementierung vorgestellt worden. Diese besagt, dass alle Funktionen vor der Benutzung getestet werden sollen. Diese Forderung erhöht zwar zunächst den Implementierungsaufwand, da Testprogramme entwickelt und Tests durchgeführt werden müssen. Insgesamt verkürzt sich aber der Implementierungsaufwand, wenn dadurch später deutlich aufwendigere Fehlersuchen entfallen. -
Kapitel 15. Hardware und C
Norbert DrescherDas Kapitel behandelt die Programmierung von Hardware mit der Programmiersprache C. Es wird erläutert, warum Hardware programmierbar sein muss und wie die Programmiersprache C dafür geeignet ist. Dabei werden grundlegende Hardwarekomponenten und deren Programmierung vorgestellt, wie z.B. logische Grundfunktionen und Gatter. Es wird auch auf spezielle Techniken für die hardwarenahe Programmierung eingegangen, wie z.B. die Nutzung von Maskenoperationen für Bitmanipulationen. Zudem werden spezielle Hardwarekomponenten und -eigenschaften betrachtet, wie z.B. Flipflops und Register. Das Kapitel schließt mit einer praktischen Anwendung, der Steuerung einer Lampe über einen Mikrocontroller, und geht auf die Bedeutung von Alignment-Regeln bei der Programmierung ein.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungUm Hardwaresysteme flexibel einsetzen zu können, müssen ihre Eigenschaften an unterschiedliche Umgebungen und Aufgabenstellungen angepasst werden können. Daher muss die Hardware programmierbar sein, um entsprechende Anpassungen vornehmen zu können. Jede Programmierung setzt jedoch Kenntnisse der Anwendung voraus, die realisiert werden soll – in diesem Fall also Kenntnisse der Hardware. Zusätzlich wird eine Programmiersprache benötigt, die für die Programmierung von Hardware geeignet ist. -
Kapitel 16. Systemsoftware
Norbert DrescherDas Kapitel beginnt mit einer Darstellung der Schnittstellen in einem Rechnersystem, wobei die Rechnerschnittstelle für Ein- und Ausgabegeräte und die interne Softwareschnittstelle für die Kommunikation zwischen Anwendungen und der Umgebung beschrieben werden. Die Systemsoftware, die unabhängig von einzelnen Anwendungen funktioniert, übernimmt Aufgaben wie den Transfer von Daten zwischen der Rechnerschnittstelle und der Anwendungsschnittstelle sowie die Verwaltung von Systemressourcen. Diese Ressourcen umfassen analoge und digitale Schnittstellen, Netzwerkschnittstellen, Hintergrundspeicher, Systemuhr und Prozessor. Das Kapitel betont die Bedeutung der Systemsoftware für die Entwicklung und den Betrieb von Rechnersystemen und bietet praktische Beispiele zur Veranschaulichung der theoretischen Konzepte. Besonders hervorgehoben wird die Hardware-Abstraktionsebene, die eine einheitliche Schnittstelle zur Hardware bereitstellt und die Unabhängigkeit von spezifischen Hardwareeigenschaften ermöglicht. Der Text endet mit einer detaillierten Beschreibung der Verwaltung von Systemressourcen und der Bedeutung der Systemsoftware für die Entwicklung von Anwendungen.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungIn Abb. 2.4 (Abschn. 2.3.2) sind die Schnittstellen in einem Rechnersystem dargestellt worden. Danach gibt es die Rechnerschnittstelle, an der Ein- und Ausgabegeräte angeschlossen werden, und eine interne Softwareschnittstelle, über die eine Anwendung mit der Umgebung Daten austauscht. Anwendungsprogramme kommunizieren in der Regel nie direkt mit externen Geräten, sondern nutzen dazu Dienstleistungsfunktionen des Systems. -
Kapitel 17. Echtzeitprogrammierung
Norbert DrescherDas Kapitel beginnt mit einer Einführung in die Echtzeitprogrammierung und deren Bedeutung in technischen Anwendungen. Es wird hervorgehoben, dass viele technische Systeme zeitliche Vorgaben einhalten müssen, um funktionsfähig zu bleiben. Ein Zeitfehler kann schwerwiegende Konsequenzen haben, daher ist es entscheidend, dass Entwickler Algorithmen so gestalten, dass sie unter allen Umständen die geforderten Zeitvorgaben einhalten. Das Kapitel führt in die Grundlagen der Steuerungstechnik und Regelungstechnik ein, die in der Automatisierungstechnik eine zentrale Rolle spielen. Es wird erklärt, wie Systeme gesteuert und geregelt werden, und welche Unterschiede zwischen ereignisdiskretem und zeitdiskretem Verhalten bestehen. Besondere Aufmerksamkeit wird auf die Notwendigkeit der genauen Erfassung und Verarbeitung von Informationen gelegt, um die Systeme effizient zu steuern. Das Kapitel schließt mit einer detaillierten Beschreibung der Methoden zur Entwicklung von Steuerungsalgorithmen und der Erstellung von Zustandsgraphen, die das Verhalten der Systeme beschreiben. Es wird auch auf die Herausforderungen und Besonderheiten der Echtzeitprogrammierung eingegangen, insbesondere auf die Notwendigkeit der Verwendung spezieller Betriebssysteme und Programmiersprachen, die eine vorhersagbare Laufzeit garantieren.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungIn vielen technischen Anwendungen müssen viele Vorgänge oder Abläufe zeitliche Vorgaben einhalten: So muss Musik genauso schnell abgespielt werden, wie sie aufgenommen wurde, oder Fahrstühle müssen exakt vor einer Fahrstuhltür stoppen, damit der Fahrstuhl auch von Personen in einem Rollstuhl problemlos benutzt werden kann. Werden die zeitlichen Vorgaben nicht eingehalten, ist das System unbrauchbar. -
Kapitel 18. Implementierung von Echtzeitsoftware
Norbert DrescherDas Kapitel 'Implementierung von Echtzeitsoftware' unterscheidet zwischen synchroner und asynchroner Echtzeitprogrammierung. Synchroner Echtzeitprogrammierung erfolgt zu festen Zeitpunkten, während asynchrone Programmierung sofort auf Ereignisse reagiert. Synchroner Echtzeitprogrammierung nutzt periodische Zeitpunkte zur Erfassung von Ereignissen und reagiert zu definierten Zeiten. Asynchrone Programmierung hingegen reagiert unmittelbar auf Ereignisse, was kürzere Reaktionszeiten ermöglicht, aber ein Echtzeitbetriebssystem erfordert. Das Kapitel beschreibt die zyklische Ausführung von Steuerprogrammen, die Rolle von Funktionszeigern und die Implementierung von Zustandsgraphen. Es werden auch die Unterschiede in der Reaktionszeit und die Notwendigkeit von Echtzeitbetriebssystemen bei asynchroner Programmierung diskutiert. Besondere Aufmerksamkeit wird der Implementierung von Zeitereignissen und der Überwachung der Ein- und Ausgaben geschenkt. Das Kapitel endet mit einer Zusammenfassung der wichtigsten Punkte und Hinweisen zur Realisierung von Steuerungen.KI-Generiert
Diese Zusammenfassung des Fachinhalts wurde mit Hilfe von KI generiert.
ZusammenfassungPrinzipiell gibt es zwei unterschiedliche Möglichkeiten der Echtzeitprogrammierung: die synchrone und die asynchrone Echtzeitprogrammierung. Bei der synchronen Echtzeitprogrammierung existieren periodische Zeitpunkte für die Erfassung der Ereignisse. Die Reaktion auf Ereignisse erfolgt somit synchronisiert zu definierten Zeitpunkten, die von der Steuerung festgelegt werden. -
Backmatter
- Titel
- Software-Entwicklung für Ingenieure und Ingenieurinnen
- Verfasst von
-
Norbert Drescher
- Copyright-Jahr
- 2024
- Verlag
- Springer Berlin Heidelberg
- Electronic ISBN
- 978-3-662-67369-0
- Print ISBN
- 978-3-662-67368-3
- DOI
- https://doi.org/10.1007/978-3-662-67369-0
Informationen zur Barrierefreiheit für dieses Buch folgen in Kürze. Wir arbeiten daran, sie so schnell wie möglich verfügbar zu machen. Vielen Dank für Ihre Geduld.