\documentclass{bschlangaul-aufgabe} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 3}, Thematik = {Softwarearchitektur und Agilität}, Referenz = 66116-2019-H.T2-TA1-A3, RelativerPfad = Examen/66116/2019/09/Thema-2/Teilaufgabe-1/Aufgabe-3.tex, ZitatSchluessel = examen:66116:2019:09, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {Softwarearchitektur}, EinzelpruefungsNr = 66116, Jahr = 2019, Monat = 09, ThemaNr = 2, TeilaufgabeNr = 1, AufgabeNr = 3, } Die Komponentenarchitektur eines Softwaresystems beschreibt die unterschiedlichen Softwarebausteine, deren Schnittstellen und die Abhängigkeiten von Softwarekomponenten wie beispielsweise Klassen. Wir unterscheiden zwischen der Soll- und der Ist- Architektur eines Systems. \index{Softwarearchitektur} \footcite{examen:66116:2019:09} \begin{enumerate} %% % a) %% \item Nennen und definieren Sie drei Qualitätsattribute von Software, die durch die Architektur beeinflusst werden und charakterisieren Sie jeweils eine „schlechte“ Architektur, die diese Qualitätsattribute negativ beeinflusst. \begin{bAntwort} \begin{description} \item[Skalierbarkeit] Definition: Ob die Software auch für große Zugriffslasten konzipiert wurde. Charakterisierung einer schlechten Architektur: Eine Anwendung läuft nur auf einem Server. \item[Modifizierbarkeit] Definition: Ob die Software leicht verändert, erweitert werden kann. Charakterisierung einer schlechten Architektur: Monolithische Architektur, dass kein Laden von Modulen zulässt. \footcite[Seite 200]{schatten} \footcite{wiki:softwarearchitektur} \item[Verfügbarkeit] Definition: Ob die Software ausfallsicher ist, im Laufenden Betrieb gewartet werden kann. Charakterisierung einer schlechten Architektur: Ein-Server-Architektur, die mehrmal neugestartet werden muss, um ein Update einzuspielen. \end{description} \end{bAntwort} %% % b) %% \item Erläutern Sie, was Information Hiding ist. Wie hängt Information Hiding mit Softwarearchitektur zusammen”? Wie wird Information Hiding auf Klassenebene in Java implementiert? Gibt es Situationen, in denen Information Hiding auch negative Effekte haben kann? \begin{bAntwort} Das Prinzip der Trennung von Zuständigkeiten (engl. separation of concerns) sorgt dafür, dass jede Komponente einer Architektur nur für eine einzige Aufgabe zuständig ist. Das Innenleben von Komponenten wird durch Schnittstellen verkapselt, was auf das Prinzip des Verbergens von Informationen (engl. information hiding) zurückgeht. \footcite{wiki:softwarearchitektur} Java: Durch die Sichbarkeits-Schlüsselwörter: private, protected Zusätzlicher Overhead durch Schnittestellen API zwischen den Modulen. \end{bAntwort} %% % c) %% \item Erklären Sie, was Refactoring ist. \begin{bAntwort} Verbesserungen des Code durch bessere Lesbarkeit, Wartbarkeit, Performanz, Sicherheit. Keine neuen Funktionen werden programmiert. \end{bAntwort} %% % d) %% \item Skizzieren Sie die Kernideen von Scrum inkl. der wesentlichen Prozessschritte, Artefakte und Rollen. Beschreiben Sie dann die Rolle von Ist- und Soll-Architektur in agilen Entwicklungskontexten wie Scrum. \end{enumerate} \end{document}