Popis: |
Zur Entwicklung komplexer Softwaresysteme, werden neben dem Quelltext zus��tzliche Artefakte, wie beispielsweise Architekturmodelle, verwendet. Wenn die verwendeten Architekturmodelle w��hrend der Entwicklung und Evolution eines Softwaresystems konsistent mit dem Quelltext sind, k��nnen Softwarearchitekten und Softwareentwickler bei der Entwicklung der Systeme besser unterst��tzt werden. Architekturmodelle, die auf dem aktuellem Stand sind, vereinfachen Entwicklungs- und Evolutionssaufgaben, da einfacher beantwortet werden kann wie und wo neue Funktionen implementiert werden sollen. Au��erdem ist es m��glich, modellbasierte Analysen mit Hilfe der Softwarearchitekturmodelle vorzunehmen. Beispielsweise k��nnen mit dem Palladio Komponentenmodell (PCM) Performanzvorhersagen durchgef��hrt werden, wenn ein Architekturmodell des Softwaresystems vorhanden ist und dieses Verhaltensspezifikationen beinhaltet. Wenn Architekturmodelle bei der Softwareentwicklung und Softwareevolution verwendet werden, k��nnen die beiden bekannten Probleme Architekturdrift und Architekturverletzung auftreten. Diese Probleme treten f��r gew��hnlich auf, wenn bei voranschreitender Entwicklung des Quelltextes die Architektur nicht konsistent zu diesem gehalten wird. Dies f��hrt zu veralteten und schlussendlich nutzlosen Architekturmodellen. Viele existierende Ans��tze, zur Vermeidung dieser Probleme, zielen darauf ab, Quelltext und UML-Klassendiagramme konsistent zu halten, oder sie zielen darauf ab, Architekturinformationen in den Quelltext einzubetten. In letzterem Fall wird die Notwendigkeit, die Architektur konsistent mit dem Quelltext zu halten, umgangen, da die Architektur integraler Bestandteil des Quelltextes ist. In der vorliegenden Dissertation beschreiben wir einen neuen Ansatz, um komponentenbasierte Architekturmodelle, welche sich auf einer hohen Abstraktionsebene befinden, konsistent mit dem Quelltext zu halten. Wir beschreiben, wie Instanzen des PCMs konsistent mit Java-Quelltext gehalten werden k��nnen. Um Konsistenz zu erreichen, werden Architekturelemente erzeugt, gel��scht oder ge��ndert, sobald ihre entsprechende Quelltextelemente ge��ndert wurden, und umgekehrt. F��r die Umsetzung der Konsistenzerhaltung stellen wir einen ��nderungsgetriebenen Ansatz vor. Dieser verwendet benutzerdefinierte, ��nderungsgetriebene Abbildungsregeln, um die Konsistenz zwischen den beteiligten Modellen sicherzustellen. In dieser Dissertation stellen wir vier konkrete Mengen von Abbildungsregeln zwischen Architekturmodellen und Quelltext vor. Diese haben wir in einer prototypischen Implementierung des Ansatzes umgesetzt. Wir stellen au��erdem einen Mechanismus vor, der mit den Benutzern des Konsistenzerhaltungsansatzes interagiert, wenn die Konsistenz nicht automatisch erhalten werden kann, sondern die Benutzer zuerst ihre Intention, die sie mit einer bestimmten ��nderung verfolgen, dem Ansatz mitteilen m��ssen. In diesem Fall m��ssen die Benutzer das genaue Vorgehen f��r die Konsistenzerhaltung spezifizieren. Da der vorgestellte Ansatz ��nderungsgetrieben funktioniert, ist es notwendig, dass wir alle ��nderungen in den beteiligten Architektur- und Quelltexteditoren aufzeichnen k��nnen. Um es Benutzern zu erlauben, vorhandene Editoren, mit denen sie sich auskennen, wiederverwenden zu k��nnen, haben wir Beobachter f��r diese Editoren implementiert. Diese Beobachter zeichnen alle ��nderungen an einem Modell auf und informieren unseren Ansatz ��ber jede durchgef��hrte ��nderung. Der in dieser Dissertation vorgestellte Ansatz erlaubt es auch, verhaltensbeschreibende Architekturmodelle konsistent mit dem Quelltext zu halten. Um dies zu erreichen, haben wir einen Ansatz implementiert, der es erm��glicht, Service Effect Specifications des PCMs inkrementell aus Methoden zu erstellen, nachdem diese ge��ndert wurden. Die Service Effect Specifications werden innerhalb des PCMs genutzt, um das Verhalten einer Komponente zu spezifizieren. Um bereits bestehende Architekturmodelle und bestehenden Quelltext innerhalb unseres Ansatzes verwenden zu k��nnen, stellen wir je eine Integrationsstrategie f��r die Architektur und den Quelltext vor. Um bestehende Architekturmodelle zu integrieren, simulieren wir deren Erstellung. W��hrend dieses Erstellvorgangs zeichnen wir die ��nderungen auf, die n��tig sind, um das Architekturmodell zu erstellen. Diese ��nderungen werden als Eingabe f��r den Konsistenzerhaltungsprozess verwendet, um daraus den entsprechenden Quelltext zu erzeugen. Um vorhandenen Quelltext einzubinden, stellen wir einen Ansatz vor, der auf Architekturrekonstruktionsverfahren basiert, d.h., zuerst wird die Architektur eines bestehenden Softwaresystems rekonstruiert. Die erstellte Architektur wird anschlie��end zusammen mit dem bestehenden Quelltext in unseren Coevolutionsansatz integriert. Oftmals ist bestehender Quelltext jedoch nicht so aufgebaut, wie es die Abbildungsregeln vorschreiben. Innerhalb der Integrationsstrategie f��r Quelltext stellen wir deshalb einen Ansatz vor, der in der Lage ist, solche Quelltexte dennoch zu integrieren. Dieser Ansatz erm��glicht es, nicht nur diese Art von Quelltext zu integrieren, sondern diesen auch mit speziell definierten Abbildungsregeln automatisch konsistent zu halten. Wir haben unseren Ansatz in verschiedenen Fallstudien evaluiert. Dabei haben wir zun��chst gezeigt, dass es m��glich ist vorhandene Architekturmodelle zu integrieren, indem ihr Aufbau simuliert wird. In der durchgef��hrten Fallstudie ist es mit unserem Ansatz und den vorgestellten Abbildungsregeln m��glich, zwischen 98% und 100% der unterst��tzten Elemente zu integrieren. Als n��chstes haben wir gezeigt, dass unser Ansatz in der Lage ist, existierenden Quelltext zu integrieren und ��nderungen am integrierten Quelltext konsistent mit der Architektur zu halten. F��r diese Fallstudie haben wir zun��chst den Quelltext von vier quelloffenen Projekten in den Ansatz integriert. Als n��chstes haben wir gezeigt, dass es m��glich ist, ��nderungen am Quelltext konsistent mit der Architektur zu halten. Dazu haben wir eine alte Version des Quelltextes integriert und ��nderungen die zwischen einer alten und neueren Version durchgef��hrt wurden, aus einem Versionskontrollsystem extrahiert und erneut auf den Quelltext angewendet. Im Rahmen dieser Evaluation haben wir auch gezeigt, dass es m��glich ist ��nderungen, die innerhalb von Methoden durchgef��hrt werden, mit einem Verhaltensmodell konsistent zu halten. Wir haben au��erdem eine Evaluation der Leistungsf��higkeit unseres Ansatzes durchgef��hrt und gezeigt, dass unser Ansatz in den meisten F��llen in der Lage ist, die Architektur in einer Zeit zwischen einer und f��nf Sekunden konsistent zu halten, nachdem eine ��nderung am Quelltext durchgef��hrt wurde. Als letztes haben wir gezeigt, dass es m��glich ist, coevolvierte Modelle f��r die Performanzvorhersage zu verwenden. Dazu haben wir zuerst die Modelle in einem Parametrisierungsschritt mit den n��tigen Ressourcenverbr��uchen angereichert. Als n��chstes konnten wir die Performanzvorhersage durchf��hren. In unserer Fallstudie zeigte sich, dass der Vorhersagefehler f��r die Antwortzeit eines Systems bei ca. 10% liegt, und damit die coevolvierten Modelle f��r die Absch��tzung der Performanz eines realen Systems verwendet werden k��nnen. |