182 lines
6.6 KiB
TeX
182 lines
6.6 KiB
TeX
\documentclass[12pt,a4paper]{article}
|
|
|
|
% ============================================
|
|
% PACKAGES
|
|
% ============================================
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage[english]{babel}
|
|
\usepackage{geometry}
|
|
\geometry{margin=2.5cm, headheight=14.5pt, footskip=1.8cm}
|
|
\usepackage{graphicx}
|
|
\usepackage{hyperref}
|
|
\usepackage{xurl} % allow URLs to break anywhere (fixes overfull bibliography lines)
|
|
\usepackage{xcolor}
|
|
\usepackage{listings}
|
|
\usepackage{booktabs}
|
|
\usepackage{longtable}
|
|
\usepackage{enumitem}
|
|
\usepackage{fancyhdr}
|
|
\usepackage{titlesec}
|
|
\usepackage{tcolorbox}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
\usepackage{parskip}
|
|
\usepackage{tikz}
|
|
\usetikzlibrary{shapes.geometric, arrows.meta, positioning, fit, backgrounds, calc, decorations.pathreplacing}
|
|
\usepackage{float}
|
|
\usepackage{rotating}
|
|
\usepackage[round,authoryear]{natbib}
|
|
\bibliographystyle{plainnat}
|
|
|
|
% ============================================
|
|
% COLORS
|
|
% ============================================
|
|
\definecolor{bankblue}{rgb}{0.0,0.28,0.67}
|
|
\definecolor{bankgreen}{rgb}{0.13,0.55,0.13}
|
|
\definecolor{bankred}{rgb}{0.7,0.13,0.13}
|
|
\definecolor{aiviolet}{rgb}{0.42,0.19,0.58}
|
|
\definecolor{projteal}{rgb}{0.0,0.45,0.45}
|
|
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
|
|
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
|
|
|
|
% ============================================
|
|
% CODE LISTING STYLE
|
|
% ============================================
|
|
\lstdefinestyle{pythonstyle}{
|
|
backgroundcolor=\color{backcolour},
|
|
commentstyle=\color{bankgreen},
|
|
keywordstyle=\color{blue},
|
|
numberstyle=\tiny\color{codegray},
|
|
stringstyle=\color{bankred},
|
|
basicstyle=\ttfamily\footnotesize,
|
|
breakatwhitespace=false,
|
|
breaklines=true,
|
|
captionpos=b,
|
|
keepspaces=true,
|
|
numbers=left,
|
|
numbersep=5pt,
|
|
showspaces=false,
|
|
showstringspaces=false,
|
|
showtabs=false,
|
|
tabsize=4,
|
|
language=Python
|
|
}
|
|
\lstset{style=pythonstyle}
|
|
|
|
% ============================================
|
|
% CUSTOM ENVIRONMENTS
|
|
% ============================================
|
|
\newtcolorbox{keypoint}{
|
|
colback=blue!5!white,
|
|
colframe=bankblue,
|
|
title=Key Concept
|
|
}
|
|
|
|
\newtcolorbox{examplebox}[1][]{
|
|
colback=green!5!white,
|
|
colframe=bankgreen,
|
|
title={Example: #1}
|
|
}
|
|
|
|
\newtcolorbox{definitionbox}[1][]{
|
|
colback=yellow!5!white,
|
|
colframe=yellow!50!black,
|
|
title={Definition: #1}
|
|
}
|
|
|
|
\newtcolorbox{thinkbox}{
|
|
colback=orange!5!white,
|
|
colframe=orange!60!black,
|
|
title=Discussion
|
|
}
|
|
|
|
\newtcolorbox{hinweisbox}{
|
|
colback=red!5!white,
|
|
colframe=bankred,
|
|
title=Important Note
|
|
}
|
|
|
|
\newtcolorbox{ailinse}[1][]{
|
|
colback=violet!5!white,
|
|
colframe=aiviolet,
|
|
title={AI Lens: #1}
|
|
}
|
|
|
|
\newtcolorbox{projektbox}{
|
|
colback=teal!5!white,
|
|
colframe=projteal,
|
|
title=Project Link: Portfolio Intelligence Platform
|
|
}
|
|
|
|
% ============================================
|
|
% HEADER/FOOTER
|
|
% ============================================
|
|
\pagestyle{fancy}
|
|
\fancyhf{}
|
|
\fancyhead[L]{AISE502 -- AI in Software Engineering II}
|
|
\fancyhead[R]{Lecture Notes}
|
|
\fancyfoot[L]{\thepage}
|
|
\fancyfoot[R]{\includegraphics[height=0.9cm]{FHGR_Logo_small}}
|
|
|
|
% ============================================
|
|
% DOCUMENT
|
|
% ============================================
|
|
\begin{document}
|
|
|
|
|
|
% ============================================
|
|
% TITLE PAGE
|
|
% ============================================
|
|
\begin{titlepage}
|
|
\centering
|
|
\vspace*{1cm}
|
|
|
|
\includegraphics[width=0.5\textwidth]{FHGR_Logo_Large}\\[1.5cm]
|
|
|
|
{\Huge\bfseries AISE502: AI in Software\\Engineering II\par}
|
|
\vspace{1.5cm}
|
|
|
|
{\Large Lecture Notes\par}
|
|
\vspace{0.5cm}
|
|
{\large Core Part: A Theory of Architecture--Application Fit\par}
|
|
\vspace{1cm}
|
|
|
|
{\large Dr.\ Florian Herzog\par}
|
|
\vspace{0.3cm}
|
|
{\large University of Applied Sciences of the Grisons (FH Graub\"unden), Chur\par}
|
|
\vspace{0.5cm}
|
|
{\large Autumn Semester 2026\par}
|
|
|
|
\vfill
|
|
|
|
\begin{abstract}
|
|
These lecture notes form the core of the module AISE502 \emph{AI in Software Engineering II}. They develop a coherent theory of \emph{architecture--application fit}: software architecture is understood as the set of significant, hard-to-reverse decisions, driven by measurable quality attributes, made by systematically matching application requirements profiles against pattern capability profiles, and validated empirically over the entire software lifecycle. \textbf{Part~I} lays the conceptual and methodological foundations: architecture as a decision problem, quality attributes as architectural drivers, measurable quality attribute scenarios, and Architecture Decision Records. \textbf{Part~II} catalogues seven central architectural patterns -- from the layered architecture, the modular monolith and microservices to event-driven, pipeline and serverless architectures -- as capability profiles with their software engineering implications. \textbf{Part~III} characterises ten application classes -- from core banking systems, social media platforms and simulations to the AI-native advisory platform -- as weighted requirements profiles. \textbf{Part~IV} brings both sides together: the fit matrix, the step-by-step decision procedure (utility tree, trade-off analysis, ADR) and the continuous measurement of the decision in operation (fitness functions, DORA metrics, evolution paths). \textbf{Part~V} extends the theory along the AI dimension: AI as a tool in the software lifecycle (Axis~A) and AI as a non-deterministic system component (Axis~B) -- showing that both roles demand the same engineering discipline.
|
|
|
|
The methodology applied throughout rests on four principal sources, gratefully acknowledged here: the quality attribute scenarios, architectural tactics, and utility-tree/ATAM decision apparatus of the Software Engineering Institute, as consolidated by \citet{bass2021software}; the architecture-characteristics ratings and trade-off laws of \citet{richards2025fundamentals}; the architectural fitness functions of \citet{ford2022evolutionary}, which turn every decision into a measurable contract; and the empirical delivery-performance research of the DORA programme \citep{forsgren2018accelerate}. The quality vocabulary of the profile dimensions is anchored in ISO/IEC 25010:2023 \citep{iso2023product}.
|
|
\end{abstract}
|
|
|
|
\vspace{1cm}
|
|
\end{titlepage}
|
|
|
|
% ============================================
|
|
% TABLE OF CONTENTS
|
|
% ============================================
|
|
\tableofcontents
|
|
\newpage
|
|
|
|
\input{chapters/part1_architecture_decisions}
|
|
|
|
\input{chapters/part2_patterns}
|
|
|
|
\input{chapters/part3_application_classes}
|
|
|
|
\input{chapters/part4_fit}
|
|
|
|
\input{chapters/part5_ai_dimension}
|
|
|
|
\newpage
|
|
\bibliography{references}
|
|
|
|
\end{document}
|