<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Presentation-Abstraction-Control</id>
	<title>Presentation-Abstraction-Control - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Presentation-Abstraction-Control"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Presentation-Abstraction-Control&amp;action=history"/>
	<updated>2026-05-28T08:23:19Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Presentation-Abstraction-Control&amp;diff=575246&amp;oldid=prev</id>
		<title>imported&gt;Neutronstar2: bitte Fachliteratur als Quellen hinzufügen</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Presentation-Abstraction-Control&amp;diff=575246&amp;oldid=prev"/>
		<updated>2022-07-28T19:56:47Z</updated>

		<summary type="html">&lt;p&gt;bitte Fachliteratur als Quellen hinzufügen&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Belege}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Darstellung-Abstraktion-Steuerung&amp;#039;&amp;#039;&amp;#039; bzw. englisch &amp;#039;&amp;#039;&amp;#039;Presentation-Abstraction-Control&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;PAC&amp;#039;&amp;#039;&amp;#039;) bezeichnet ein [[Architekturmuster]] zur Strukturierung von interaktiven Softwaresystemen.&lt;br /&gt;
&lt;br /&gt;
Will man diese Systeme so entwickeln, dass sie aus einzelnen Teilen bestehen, die jeweils einen Teil der Aufgaben des Systems anbieten und damit eine hohe Flexibilität des Systems erhalten, dann muss man sich darum kümmern, dass diese Teile zu einem funktionierenden Ganzen zusammengesetzt werden und auch zusammenarbeiten. Für eine Softwarearchitektur, die dies sicherstellt, ist PAC ein Muster.&lt;br /&gt;
&lt;br /&gt;
Das &amp;#039;&amp;#039;[[Model View Controller|Model-View-Controller]]&amp;#039;&amp;#039;-Muster (ebenfalls ein [[Architekturmuster]] für interaktive Softwaresysteme) reicht für diese Anwendungen nicht aus und so geht PAC über dieses hinaus. Es teilt ein System in zwei Richtungen auf, einmal in die drei Einheiten [[Grafische Benutzeroberfläche|grafische Benutzungsschnittstelle]] (&amp;#039;&amp;#039;Presentation&amp;#039;&amp;#039;), Vermittlung und Kommunikation (&amp;#039;&amp;#039;Control&amp;#039;&amp;#039;) und das Datenmodell ({{enS|Abstraction}}) –&amp;amp;nbsp;dies ist ähnlich dem MVC&amp;amp;nbsp;– und darüber hinaus noch hierarchisch in verschiedene Teile, die, wie eingangs gefordert, jeweils einen Teil der Aufgaben des Systems anbieten. Diese Teile nennt man im PAC-Muster „Agenten“ und sie stellen die erste Stufe der Strukturierung während des [[Architekturentwurf (Softwareentwicklung)|Architekturentwurfes]] dar. Das heißt, man beginnt den Entwurf mit der Aufteilung der gesamten Anforderungen auf einzelne Agenten und baut die hierarchische Struktur darauf auf. Für jeden Agenten wird dann im zweiten Schritt des Entwurfes eine Aufteilung in die besagten Komponenten, Darstellung, Abstraktion und Steuerung, vorgenommen.&lt;br /&gt;
&lt;br /&gt;
== Hierarchische Struktur ==&lt;br /&gt;
[[Datei:pac-schema.png|gerahmt|Die Struktur einer Softwarearchitektur nach PAC]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;Die Hierarchie von PAC ist in drei Schichten aufgeteilt,&amp;lt;/span&amp;gt;&amp;lt;!-- Mindestbreite der Textspalte wegen überbreiter Grafik --&amp;gt; den &amp;#039;&amp;#039;Top-Level&amp;#039;&amp;#039;-Agent, die &amp;#039;&amp;#039;Intermediate-Level&amp;#039;&amp;#039;-Agenten und die &amp;#039;&amp;#039;Bottom-Level&amp;#039;&amp;#039;-Agenten. Ersterer kommt nur einmal in einem System vor und übernimmt alle globalen Aufgaben, wie z.&amp;amp;nbsp;B. den Datenbankzugriff. Die &amp;#039;&amp;#039;Bottom-Level&amp;#039;&amp;#039;-Agenten bieten die eigentlichen Funktionen des interaktiven Systems an, wobei jedes seine eigene, möglichst abgeschlossene, Funktion hat und möglichst über keine Abhängigkeiten zu anderen &amp;#039;&amp;#039;Bottom-Level&amp;#039;&amp;#039;-Agenten verfügen sollte. Die &amp;#039;&amp;#039;Intermediate-Level&amp;#039;&amp;#039;-Agenten bilden die Schnittstelle zwischen der untersten (&amp;#039;&amp;#039;Bottom-Level&amp;#039;&amp;#039;) und der obersten (&amp;#039;&amp;#039;Top-Level&amp;#039;&amp;#039;) Schicht und fassen mehrere &amp;#039;&amp;#039;Bottom-Level&amp;#039;&amp;#039;-Agenten zu einer Einheit, zu einem Teilsystem, zusammen. Dabei können diese Teilsysteme auch weiter hierarchisch aufgeteilt werden, so dass ein Teilsystem auch aus einem oder mehreren anderen bestehen kann und dann ein &amp;#039;&amp;#039;Intermediate-Level&amp;#039;&amp;#039;-Agent mehrere andere &amp;#039;&amp;#039;Intermediate-Level&amp;#039;&amp;#039;-Agenten zusammenfasst.&lt;br /&gt;
&lt;br /&gt;
Der [[Architekturentwurf (Softwareentwicklung)|Architekturentwurf]] beginnt mit der Aufteilung der geforderten Funktionalität auf mehrere &amp;#039;&amp;#039;Bottom-Level&amp;#039;&amp;#039;-Agenten. Daran anschließend legt man den &amp;#039;&amp;#039;Top-Level&amp;#039;&amp;#039;-Agent fest, bzw. die Funktionen, die er erbringen muss. Die Hierarchie wird dann mit der Festlegung der &amp;#039;&amp;#039;Intermediate-Level&amp;#039;&amp;#039;-Agenten vervollständigt, die eine Kombination aus &amp;#039;&amp;#039;Bottom-Level&amp;#039;&amp;#039;-Agenten darstellen und diesen den Zugriff auf den &amp;#039;&amp;#039;Top-Level&amp;#039;&amp;#039;-Agent vermitteln.&lt;br /&gt;
&lt;br /&gt;
== Aufteilung der Agenten ==&lt;br /&gt;
Jeder einzelne Agent wird in die drei Komponenten strukturiert. Erstens die grafische Benutzeroberfläche (Darstellung oder &amp;#039;&amp;#039;Presentation&amp;#039;&amp;#039;), welche die komplette Ein- und Ausgabe umfasst und nicht wie beim MVC-Muster noch einmal aufgeteilt wird. Die zweite Komponente ist die Abstraktion (&amp;#039;&amp;#039;Abstraction&amp;#039;&amp;#039;), welche das Datenmodell des Agenten realisiert. Die dritte Komponente, die Vermittlung und Kommunikation (Steuerung oder &amp;#039;&amp;#039;Control&amp;#039;&amp;#039;), stellt die Verbindung zwischen den beiden anderen Komponenten her und ermöglicht die Kommunikation mit anderen Agenten. Sie sind damit die zentrale Schnittstelle, die die Zusammenarbeit der einzelnen Teile eines Systems im PAC-Muster ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Es ist nicht zwingend, dass jeder Agent alle drei Komponenten hat, sondern jeder Agent bringt die Benutzerschnittstelle und das Datenmodell für seine Aufgabe mit. So ist es auch möglich, dass z.&amp;amp;nbsp;B. ein &amp;#039;&amp;#039;Intermediate-Level&amp;#039;&amp;#039;-Agent nur in einem Fenster darunterliegende Agenten zusammenfasst und zur Anzeige bringt, aber keine Daten dafür benötigt. Die Steuerungskomponente muss allerdings jeder Agent besitzen, um über sie die Kommunikation mit anderen Agenten und zwischen den Komponenten zu ermöglichen.&lt;br /&gt;
&lt;br /&gt;
== Stärken ==&lt;br /&gt;
Die große Stärke des PAC-Musters liegt in der Zerlegung der Funktionen des Gesamtsystems in einzelne semantisch getrennte Teile, welche von Agenten realisiert werden. Damit kann die Funktionalität problemlos durch zusätzliche Agenten erweitert werden. Eine gute Wartbarkeit ist durch die interne Struktur der Agenten gegeben.&lt;br /&gt;
&lt;br /&gt;
== Schwächen ==&lt;br /&gt;
Die bedeutendste Schwäche von PAC ist die erhöhte Systemkomplexität, welche durch einen erhöhten Koordinations- und Kommunikationsaufwand zwischen den Agenten hervorgerufen wird. Die Steuerungskomponenten können eine hohe Komplexität erreichen und sind der kritische Punkt bei der Umsetzung dieses Musters, der besondere Beachtung benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Entwurfsmuster]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Neutronstar2</name></author>
	</entry>
</feed>