53

Informatik (Subject) / AI1 (Lesson)

.

This lesson was created by Tahl.

Learn lesson

This lesson is not released for learning.

Advertisement
  • Abstraktion Fähigkeit, Details zu ignorieren, um den Fokus der Betrachtung auf eine höhere Ebene lenken zu können
  • Modularisierung der Prozess der Zerlegung eines Ganzen in wohl definierte Teile, die getrennt erstellt und untersucht werden können und die in wohl definierter Weise interagieren
  • Schwerwiegende Programmierfehler Absturz Ariane 5 Therac 25 (Medizinisches Bestrahlungsgeraät) Mars Climate Orbiter (Falsches Maßsystem bei der Triebwerksteuerrung; Sonde geht verloren)   --> Teuer
  • Fehlerarten Lexikalische Fehler Syntac Fehler Laufzeitfehler Ausführung/logische Fehler
  • Lexikalische Fehler Auftreten von Begriffen, die nicht definiert sind (Tippfehler, vertauschte Buchstaben, fehlende Namen, unbekannte Methoden, Groß- Kleinschreibung)
  • Syntax Fehler Nicht-Einhalten festgelegter Regeln der Programmiersprache   Definition außerhalb von Klammern Klammern fehlen Punkte, Semikolon vergessen oder zuviel Falsche Reihenfolge von Parametern
  • Laufzeitfehler Fehler, die zur Laufzeit erkannt werden (doppeltes Löschen eines Elements, Zugriff auf Index außerhalb eines Arrays)
  • Ausführungsfehler Fehler in der Logik des Programmablaufs. Das Programm tut etwas aber nicht das was es soll
  • Wieso ist Prävention von Fehlern wichtig? Einen Fehler in der Wartung zu finden und zu beheben ist 100 mal so teuer wie im Design. Deshalb Fehlerwk verringern (Kapselung, systematische Fehlersuche) Fehlererkennung erhöhen(Modularisierung, Dokumentation, Debuggen(systematische Fehlersuche)--> lokalisieren und dann beheben
  • Methoden der systematischen Fehlersuche Manuelle Ausführung Mündlische Ausführung Objektzustand tabellieren Ausgabeanweisungen Debugger
  • Advertisement
  • Wichtige Funktionen eines Debugger sprachen- und umgebungsspezifisch 1) Steuerung Programmablauf: Programm kann angehalten werden(Haltepunkt); Durchschreiten des Programmtextes in Einzelschritte (Schritt über/hinein) 2) Inspizieren von Daten: Auslesen von Werten von Variablen zur Laufzeit, Objekte untersuchen   3Modifizieren von Daten (nicht in BlueJ)
  • Grundsätze vom Testen Vertrag festlegen Suche nach Vertragsverletzung durch positives und negatives Testen Testen von Grenzberreichen
  • Wieso sollten Tests automatisiert werden Regressionstests: Wiederholung von bereits erfolgreichen Testfällen um Auswirkungen von Modifikation in bereits getesteten Teilen der Software aufzuspüren   --> mehrmals wdhl --> manuell fehleranfällig --> Automatisierung auch der Interpretation (Eingriff nur erforderlich, wenn Test fehlschlägt)
  • Was umfasst eine Dokumentation Name der Klasse allgemeine Beschreibung K Versionsnummer, Autor Liste Konstruktoren +Methoden (Ereignistypen+Parameter+Beschreibung Zweck) Dokumentation jedes Konstruktors jeder Methode Name Zweck+Arbeitsweise Ergebnistyp Beschreibung Ergebnis Name und Typ Parameter Beschreibung parameter
  • Wie sieht Kommentierung aus? /** @ {inheritDoc} @author @version @param @return */
  • Wozu benötigt man einen guten Klassenentwurf? Wartung Anpassung Veränderung (zukünftige sollen erleichtert werden) Erweiterung ...von Code durch unterschiedliche Programmierer
  • Kohäsion Anzahl und Vielfalt der Aufgaben, die die eine einzelne Einheit einer Anwendung verantwortlich ist. Das Prinzip bezieht sich auf Klassen (sollten ein Typ Objekt modellieren) und Methoden (eine logische Operation implementieren Angestrebt wird ein hoher Grad an Kohäsion, d.h. das Einheiten für eine wohldefinierte Aufgabe zuständig sind
  • Vorteil hoher Kohäsion Wiederverwendbarkeit (der Einheit in anderen Kontexten) Stellen, die von Änderungen betroffen sind lassen sich leichter lokalisieren Lesbarkeit Besseres Verständnis über Funktion einer Einheit
  • Kopplung bezieht sich darauf, wie separate Einheiten eines Programms miteinander verknüpft sind (Grad der Abhängigkeit zweier Klassen) lose Kopplung d.h. jede Klasse arbeitet weitgehend unabhängig und kommuniziert mit anderen Klassen nur über wohldefinierte Schnittstellen
  • Vorteile loser Kopplun Änderung lokal halten Klasse verstehen ohne andere Klassen verstehen zu müssen bessere Wartbarkeit
  • Kapselung Informationen über die Implementierung verbergen. Interessant ist was ein Objekt macht, nicht wie (Geheimnisprinzip) Ermöglicht Änderung von Implementierung ohne andere Klassen zu beeinträchtigen --> lose Kopplung (Zugriff auf Methoden nur über definierte Methoden als Schnittstelle)   Datenfelder private nur Methoden, die für andere Klassen bestimmt sind sollten öffentlich sein
  • Entwurf nach Zuständigkeit Jede Klasse ist für den Umgang mit ihren Daten verantwortlich. Methoden, die Daten verarbeiten sollten deshalb zu der Klasse gehören, die für diese Daten verantwortlich sind
  • Refactoring Restruckturierung eines bestehenden Entwurfs, um die Qualität des Klassenentwirfs zu erhalten   Wenn Klasse erweitert wird kommt meist neuer Code hinzu Refactoring getrennt von anderen Änderungen Testen vor und nach Refactoring
  • Wobei hilft Vererbung Vermeidung von Code Duplizierung Wiederverwendung von Code Einfachere Wartung Erweiterbarkeit
  • Statischer vs. dynamischer Typ Statischer Typ: Typ der Variable mit der sie im Quelltext deklariert wird. Bestimmt welche Werte zugewiesen werden können, welche Methoden ausgeführt werden können Im Gültigkeitsberreich ihrer Deklaration nur ein statischer Typ   Dynamischer Typ Typ des Objekts, der zur Zeit in Variable gehalten wird (Untertypen des statische Typs)--> wird bei Aufruf einer Methode verwendet
  • Methodensuche Auf Variable wird zugegriffen In Variabel gespeichertes Objekt wird aufgerufen Klasse des Objekts gefunden und nach übereinstimmender Methode durchsucht Wird keine Übereinstimmung gefunden, wird die Superklasse durchsucht
  • Methoden Polymorphie Derselbe Methodenaufruf kann zu unterschiedlichen Zeitpunkten verschiedene Methoden aufrufen, abhängig vom dynamischen Typ der Variablen, mit der der Aufruf durchgeführt wird
  • Zugriffsrechte private: nur innerhalb KLasse public: gesamtes Programm protected: Zugriff innerhalb einer Vererbungshierachie
  • Identität vs. Gleichheit Identität: == Verweis auf die selbe Instanz im Hauptspeicher Gleichheit: equals:Verweis auf verschiedene Instanzen mit identischen Parametern Identische Objekte sind Gleich. (Umgekehrt muss dies nicht gelten)
  • Prozess Ein Prozess beschreibt die Ausführung eines oder mehrerer Programme und gibt Aufschluss darüber welche Aktivitäten in einem System stattfinden z.B.: welche ZUgriffsrechte ein Programm zur Zeit hat, welcher Kontrollfluss in einem mehrfädigen Programm aktiv ist oder wie sich Programmunterbrechungen Stapeln. Der Prozess eines Anwendungsprogramm kann Betriebssystemprogramme aufrufen (Systemaufruf oder  Programmunterbrechunge) Manchmal sind mehrere Prozesse an einer Programmausführung beteiligt (Uniprozessorsysteme: Unterteilung in Aufgaben, Fäden) Paralleles Programm bei Multiprozessorsystemen
  • Advertisement
  • Betriebssystem Definition Menge von Programmen, die Programmen, Anwendungen Benutzer assistieren Ausführung von Programmen steuern und Bewachen den Rechner für eine Anwendungsklasse betreiben eine abstrakte Maschine implementieren Aufgabe: Betriebsmittel des Rechners verwalten, d.h. ressourcen kontrollieren ggf. gerecht verteilen
  • Betriebsmittelarten wiederverwendbar (teilbar, unteilbar) (CPU Speicher, Geräte) konsumierbar (Daten, Signale, Nachrichten
  • Konflikt Betriebsmittelzuteilung Wenn auf begrenzte Anzahl gemeinsamer Betriebsmittel, die unteilbar und von der selben Art sind durch zwei Prozesse gleichzeitig zugegriffen wird
  • Streit Betriebsmittel Ein Prozess fordert ein Betriebsmittel an, das ein anderer Prozess bereits besitzt
  • Ziele Betriebsmittelverwaltung konfliktfreie Abwicklung korrekte Bearbeitung in endlicher Zeit gleichmäßige, maximierte Auslastung der Betriebsmittel hoher Durchsatz, kurze Durchlaufzeit, hohe Ausfallsicherheit Betriebsmittelanforderung frei von Verhungern/Verklemmung
  • Aufgabe Betriebsmittelverwaltung Buchführung über im Rechnersystem vorhandene BM Art, Klasse, Zugriffsrechte,Prozesszuordnung, Nutzungszustand- dauer   Steuerung der Verarbeitung von BManforderungen engegennahme, Überprüfung Zugangsrechte Einplanung Einlastung Entzug
  • Voraussetzung Verklemmung notwendig exklusive Belegung (unteilbar nutzbar) Nachforderung kein Entzug hinreichend zirkulares Warten
  • Wie entwickeln sich Betriebssysteme Dienstleister, die Rechnerhardeware nutzbar machen soll Betriebssystem abhängig von Anwendungszweck und Hardeware Fertigkeiten des Entwicklungspersonals
  • Multiprogrammbetrieb und Simultanbetrieb Multiplexen CPU zwischen mehreren Programmen Nebenläufigkeit Abschottung der sich in Ausführung befindlicher Prozesse (Adressraumschutz) Wartezeit von x wird für y verwendet aktives warten vermeiden --> passiv (CPU wird lauffähigem Programm zugeteilt) Einplanung und Einlastung von Prozessen regeln die lauffähigkeit von Programmen Betriebssystem=mehrfädiges Programm (mehrere Prozesse gleichzeitig aktiv)
  • Dialogbetrieb Benutzereingabe und Verarbeitung wechseln sich ab E/A intensive Anwendungen interagieren mit Benutzer über Dialogstationen(Tastatur, Maus) Einplanung bevorzugt interaktive Prozesse (Benutzerfreundlicher) prompte Neueinplanung schnelle Reaktion   Nachteil: Monopolisierung CPU, Sicherheit
  • Teilnehmerbetrieb Dialogstationen können Dialogprozesse absetzten--> wirkt Monopolisierung vor Zeitscheibe: Jeder Prozess bekommt CPU für Zeitspanne zugeteilt Zeitgeber sorgen für zyklische Programmunterbrechung (Intervall durch Zeitscheibe vorgegeben)
  • TTeilhaberbetrieb Dialogstationen teilen sich gemeinsamen Dialogprozess gleichartige Vorgänge an Datenstationen Endbenutzerdienst mit festem, definierten Funktionsangebot Transaktionssysteme Kassen Bankschalter Klient/Anbieter System
  • Cloud Computing Selbstzuweisung von Ressourcen auf Anfrage Ortsunabhängigkeit Skalierbarkeit Elastizität Abrechenbare Dienstnutzung   SDienstmodelle Cloud Software as a service platform Infrastruktur
  • Spezialzweckbetriebssystem Betriebssystem+ Anwendungsprogramm bilden geschlossene Einheit maßgeschneidert Quelltext Bibliothek Auto, Kraftwer, Flugzeug
  • Virtueller Adressraum Illusion von einem eigenen Adressraum für jedes im Arbeitsspeicher ggf. unvollstänfig vorliegende Programm Programm-->logischer Adressraum (das braucht er) logischer Adressraum--> virtueller Adressraum virtueller Adressraum--> physikalischer Adressraum Adressraumzugriffe können auch Hintergrundspeicher implizieren  
  • Vordergrundspeicher Bereich im physikalischen Adressraum Zentralspeicher zur Programmausführung kurzfristige Speicherung im ns
  • Hintergrundspeicher Massenspeicher (Band, Platte,CD,DVD) über Rechnerperipherie angeschlossen Datenablage und Implementierung virtueller Adressräume größer als phy. adressraum (Petabytes) mittel- bis langfristige Speicherung ms bereich zugriff
  • Datei Sammlung von Daten zusammenhängende, abgeschlossene Einheit, eindimensional adressierte bytes Dauerhaftigkeit abhängig von Speichermedium nicht flüchtig: Platte, Band, CD flüchtig: Ram Kommunikationsmittel für kooperierende Prozesse ausführbare Dateien: Von einem Prozessor ausführbarer Programmtext nicht-ausführbare Dateien: von einem Prozessor, der in Programmtext vorliegt verarbeitbare Programmdaten
  • Bezeichnung Dateien symbolische Adresse(Dateiname) der nach innen durch numerische Adresse abgebildet wird systemdef. Kennung einer Datenstruktur der Dateiverwaltung identifiziert den Dateikopf (Inode) Inode enthält Dateiattribute(Eigentümer,Typ,Rechte, Größe...)   Erweiterung des Dateinamen durch suffix: Hinweis auf Dateiformat bzw. Typ
  • Namensraum ordnen Namen Bedeutung zu flache Struktur: def. nur einen einzigen Kontext hierarchische Struktur:def. mehrere Kontexte (Kontextname als Präfix) Seperatoren Schrägstrich Name einer Datei= Blatt des Namensbaums   Wurzelverzeichnis: Wurzel des Dateibaums (durch Administrator gesetzt Arbeitsverzeichnis: gegenwärtige Position eines Programms/Prozess im Dateibaum (ändert sich) Heimatverzeichnis: initiale Arbeitsverzeichnis eines Benutzers/prozess. von System gesetzt bei Sitzungsbeginn ________ Namensbindung: Abbildung symbolische Adresse auf numerische (ZUm Erzeugungspunkt  Dateiname mit Dateikopf verknüpfen + Eintrag Dateiverzeichnis) Namensauflösung: Umsetzung sympolische Adresse in numerische (Benutzungsname Dateiverzeichnisdurchsuchen schrittweise für jeden Verzeichnisnamen im Pfad schließlich Dateiname)