Sinn und Zweck eines Software-Schichtenmodells

Hallo Experten,

kann mir jemand verraten, was der Sinn und Zweck eines Software-Schichtenmodells ist?

Danke und liebe Grüße!
Sabine

welches modell meinst du genau?
das bekannteste dürfte das ISO Modell sein aber ich glaube nicht das du das gerade meintest oder?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Sabine,

kann mir jemand verraten, was der Sinn und Zweck eines
Software-Schichtenmodells ist?

Hm, kommt jetzt ganz drauf an, was da geschichtet wird.

Ich zum Beispiel programmiere immer so, dass klare Hierarchien bezüglich Hardwareebene zu erkennen sind. Also ich will was auf die Platte schreiben. Dann habe ich Funktionen, die die Datei öffnen und schließen. Oben drüber sind Funktionen, die in die Datei schreiben. Diese Funktionen benutzen (bei bedarf) die Funktionen zum öffnen/schließen. Darüber dann die Funktionen, die die erforderlichen Daten zusammenstellt, die dann wieder die Schreib-Fkt. aufrufen. Und ganz oben Funktionen, die die eigentliche Arbeit machen und nur die Anweisung geben, jetzt was zu schreiben.

Wichtig ist dabei, dass immer nur mit den nächsten Schichten gearbeitet wird. Also sowas wie die oberste Funktion, die die Datei öffnen-Fkt. aufruft widerspricht dem dann.

Das hat den klaren Vorteil, dass deine Software transparent wird. Für die Fehlersuche ist schnell klar, wo du suchen musst. Wenn du auf ein anderes Betriebssystem oder eine andere Schnittstelle portieren willst, musst du nur die untersten Funktionen austauschen und die Schnittstellen in den Funktionen nachbilden. Der Rest bleibt davon unangerührt. Bezüglich Schnittstellenbeschreibung kann ich dir http://doxygen.org empfehlen. Das erzeugt aus deinen Kommentaren im Quelltext eine Funktionsdokumentation.

Wenn das nicht das war, was du meintest, erklär es einfach nochmal.

Günther

OK, ich bin ein absoluter Computer-Depp.
Ich habe vor mir ein Script mit einer Zeichnung liegen. Sieht ungefähr so aus:

Anwendungssoftware

Systemsoftware

  • Dienstprogramme
  • Betriebssystem
  • Treiber
  • BIOS

Hardware

Dass das geschichtet ist erkenne ich ja noch. Man braucht Hardware, um Software einzusetzen. Aber was ist nun der Sinn und Zweck des Ganzen???
Tut mir leid, wenn ich so blöd frage, ich stehe mächtig auf dem Schlauch!
Sabine

Hallo,

Systemsoftware

  • Dienstprogramme
  • Betriebssystem
  • Treiber
  • BIOS

Hardware

Dass das geschichtet ist erkenne ich ja noch. Man braucht
Hardware, um Software einzusetzen. Aber was ist nun der Sinn
und Zweck des Ganzen???

Im wesentilchen, dass Rad nicht immer neu erfinden zu müssen.

Wenn ein Entwickler ein Programm auf seinem Rechner schreibt, will er, dass es auf möglichst vielen Rechnern läuft, und nicht nur auf seinem.
Deswegen spricht er nicht die Hardware an, sondern lässt das das Betriebssystem machen.
Als zweites Arguement gibt es Sicherheit: Wenn ein Programm direkt auf die Hardware zugreifen kann, kann es beliebige Dinge mit deinem Rechner anstellen. Wenn da ein Betriebssystem dazwischen ist, kann es (im Idealfall) das schlimmste verhindern.

Eine nette Analogie ist übrigens Geld als Abstraktionsebene: wenn du Waren verkaufst, und dir Waren dafür geboten werden, musst du wissen, was diese Waren wert sind. Und wenn jemand mit einer Tauschware kommt, die du nie vorher gesehen hast, kannst du nur raten (oder den Handel ablehnen).
Mit Geld als Abstraktionsebene lässt du dir einfach Geld geben, egal wer etwas von dir kaufen will.
Das bringt zwar Aufwand mit sich, z.B. muß das Geld gedruckt und verteilt werden, Blüten aus dem Verkehr gezogen etc., aber insgesamt ist es viel effizienter als immer Ware gegen Ware zu tauschen.

So ist das mit den Abstraktionsebenen bei der Software auch: Um ein Bild auf dem Bildschirm anzeigen zu können, muss der Programmierer nicht wissen, welche Werte er in welche Register der Grafikkarte schreiben muß (was von Modell zu Modell anders sein kann), sondern er sagt nur dem Betriebssystem (grob vereinfacht), an welcher Stelle das Pixel welche Farbe haben soll.

Grüße,
Moritz

Gruezi.

Anwendungssoftware
Systemsoftware

Das sind schon mal zwie ganz gute Ansätze, um eine - unwissenschaftliche, aber hoffentlich anschauliche - Erklärung zu versuchen.

Systemsoftware, wie z.B. Treiber, muss in der Lage sein, auf die Systemkomponenten direkt zuzugreifen, bspw. einen Drucker zu steuern. Jeder Benutzer, der drucken soll, braucht diesen Treiber - in irgendeiner Bibliothek hinterlegt. Was der normale Benutzer nicht weiß und auch nicht zu wissen braucht, sind die eigentlichen Druckerbefehle, die sich in der Treibersoftware verstecken. Der Benutzer schickt ein Dokument oder was auch immer an den Drucker, und der Treiber macht daraus die Steuerbefehle. Jetzt hast Du schon zwei Schichten : Die Benutzeroberfläche, in der Du sagen kannst „druck mir das Dokument Bumsfallera auf dem Drucker bauzdich aus“, und die Treibersoftware, die dem Drucker sagt „hol Papier, mach es mit Daten unbrauchbar, spuck es aus“. Der Drucker weiß nix von in diesem Fall meinetwegen Word, und Word weiß nicht, dass der Drucker zum Seitenumbruch den Befehl „peng schepper X0DF1“ braucht. Der Treiber ist für den Benutzer komplett unsichtbar, und im Normalfall kann er diesen auch nicht ändern oder begucken.

Wenn das Ganze jetzt komplexer wird - durch viele Benutzer mit verschiedenen Anwendungen, oder durch vielerlei Hardware, oder peng - bekommst Du eine „Zwiebel“ mit den Schichten „Benutzeranwendung“|„Treibersoftware“|„Druckersoftware“, und jede Schicht der Zwiebel weiß nur so viel über die benachbarte(n), dass sie mit dieser kommunizieren kann, wenn nötig.

Hättest Du diesen schichtweisen Aufbau nicht, müsstest Du auf einer Ebene alles vorhalten, was geritten und gefahren kommt - stell Dir vor, was es bedeuten würde, sämtliche Intelligenz eines Netzwerks direkt an einem Arbeitsplatz abzubilden, bzw. was der Benutzer für Aufstände hätte, all die verschiedenen kleinen Helferleins direkt anzusprechen. Von einem möglichen Update des Systems gar nicht zu reden … dann müssten alle einzelnen Befehle an jedem einzelnen Arbeitsplatz neu definiert werden. Da ist vermutlich die Methode der Datenaufzeichnung à la Fred Feuerstein um einiges rationeller, und n Sehnenscheid kann man sich da genau so gut holen wie an der Tastatur :wink:

Gruß Eillicht zu Vensre

Vielen Dank für Eure Antworten (owT)
.