432 lines
26 KiB
TeX
432 lines
26 KiB
TeX
% !TEX encoding = UTF-8 Unicode
|
|
% ============================================================================
|
|
% AISE502 -- AI in Software Engineering II
|
|
% Lecture 7 slides, typeset with the official FHGR beamer theme
|
|
% (beamerthemeFHGR.sty, University of Applied Sciences of the Grisons).
|
|
% Slide content is unchanged; only the presentation layer is the FHGR template.
|
|
% ============================================================================
|
|
\documentclass[aspectratio=169]{beamer}
|
|
|
|
\usetheme[showsection, titlebg=pics/theme_pics/titlepage.png]{FHGR}
|
|
|
|
% ============================================
|
|
% PACKAGES
|
|
% The theme already loads tikz, graphicx, xcolor, tabularx, colortbl,
|
|
% listings, hyperref, environ and xparse -- only the extras are needed here.
|
|
% ============================================
|
|
\usepackage[british]{babel}
|
|
\usepackage{booktabs}
|
|
\usepackage{amsmath}
|
|
\usepackage{amssymb}
|
|
\usepackage{tcolorbox}
|
|
\usetikzlibrary{shapes.geometric, arrows.meta, positioning, fit, backgrounds, calc}
|
|
|
|
% ============================================
|
|
% SEMANTIC COLOURS, MAPPED ONTO THE FHGR PALETTE
|
|
% The names used throughout the slides are kept, so no slide text changes;
|
|
% they now resolve to the FHGR brand colours defined by the theme.
|
|
% ============================================
|
|
\colorlet{bankblue}{blue} % FHGR blue (4B92A4)
|
|
\colorlet{bankgreen}{green} % FHGR green (817E65)
|
|
\colorlet{bankred}{red} % FHGR red (C60219)
|
|
\colorlet{codegray}{gray} % FHGR gray (595959)
|
|
\colorlet{backcolour}{linen} % FHGR linen (E1D3B5)
|
|
\definecolor{aiviolet}{HTML}{6B4E71} % muted plum, kept distinct for the AI lens
|
|
|
|
% Attribution labels in English (theme default is German)
|
|
\renewcommand{\source}[1]{\par\hfill {\tiny\color{FHGRDeco} Source:\,\itshape #1}}
|
|
\renewcommand{\imagesource}[1]{\par\hfill {\tiny\color{FHGRDeco} Image source:\,\itshape #1}}
|
|
|
|
% ============================================
|
|
% CUSTOM TCOLORBOXES (same semantics as the script, FHGR colours)
|
|
% ============================================
|
|
\newtcolorbox{keypoint}{
|
|
colback=bankblue!7!white,
|
|
colframe=bankblue,
|
|
title=Key Concept,
|
|
fonttitle=\bfseries\small,
|
|
boxrule=0.8pt,
|
|
arc=2pt,
|
|
top=2pt, bottom=2pt, left=4pt, right=4pt
|
|
}
|
|
|
|
\newtcolorbox{examplebox}[1][]{
|
|
colback=bankgreen!10!white,
|
|
colframe=bankgreen,
|
|
title={Example: #1},
|
|
fonttitle=\bfseries\small,
|
|
boxrule=0.8pt,
|
|
arc=2pt,
|
|
top=2pt, bottom=2pt, left=4pt, right=4pt
|
|
}
|
|
|
|
\newtcolorbox{definitionbox}[1][]{
|
|
colback=linen!40!white,
|
|
colframe=camel!85!black,
|
|
title={Definition: #1},
|
|
fonttitle=\bfseries\small,
|
|
boxrule=0.8pt,
|
|
arc=2pt,
|
|
top=2pt, bottom=2pt, left=4pt, right=4pt
|
|
}
|
|
|
|
\newtcolorbox{thinkbox}{
|
|
colback=lightGray!35!white,
|
|
colframe=darkGray,
|
|
title=Discussion,
|
|
fonttitle=\bfseries\small,
|
|
boxrule=0.8pt,
|
|
arc=2pt,
|
|
top=2pt, bottom=2pt, left=4pt, right=4pt
|
|
}
|
|
|
|
\newtcolorbox{hinweisbox}{
|
|
colback=bankred!5!white,
|
|
colframe=bankred,
|
|
title=Important Note,
|
|
fonttitle=\bfseries\small,
|
|
boxrule=0.8pt,
|
|
arc=2pt,
|
|
top=2pt, bottom=2pt, left=4pt, right=4pt
|
|
}
|
|
|
|
\newtcolorbox{ailinse}[1][]{
|
|
colback=aiviolet!7!white,
|
|
colframe=aiviolet,
|
|
title={AI Lens: #1},
|
|
fonttitle=\bfseries\small,
|
|
boxrule=0.8pt,
|
|
arc=2pt,
|
|
top=2pt, bottom=2pt, left=4pt, right=4pt
|
|
}
|
|
|
|
\newtcolorbox{projektbox}{
|
|
colback=bankblue!4!white,
|
|
colframe=bankblue!70!black,
|
|
title=Project Link: Portfolio Intelligence Platform,
|
|
fonttitle=\bfseries\small,
|
|
boxrule=0.8pt,
|
|
arc=2pt,
|
|
top=2pt, bottom=2pt, left=4pt, right=4pt
|
|
}
|
|
|
|
% ============================================
|
|
% TITLE METADATA
|
|
% ============================================
|
|
\title[AI in Software Engineering II]{AISE502: AI in Software Engineering II}
|
|
\subtitle{Lecture 7: The Fit, Formally -- Three Cases, the Procedure, the Matrix\\[0.4ex]{\small Script: Part IV, Sections 30--32, 34; Section 37 (introduction)}}
|
|
\author{Dr.\ Florian Herzog}
|
|
\shortname{AISE502}
|
|
\fullname{Fachhochschule Graub\"unden, Chur -- Autumn Semester 2026}
|
|
|
|
\begin{document}
|
|
|
|
% ============================================
|
|
% TITLE SLIDE
|
|
% ============================================
|
|
\FHGRTitlePage
|
|
|
|
% ============================================
|
|
% AGENDA
|
|
% ============================================
|
|
\begin{frame}{Agenda}
|
|
\small
|
|
\begin{enumerate}\setlength\itemsep{1pt}
|
|
\item Recap: the match, seen once at small scale -- and run by you last week
|
|
\item Three matches, three stages: \textbf{C6} (gate), \textbf{C1} (veto), \textbf{C2} (holistic reading and its alarm)
|
|
\item The procedure in general -- and what a weighted sum would have destroyed
|
|
\item The matching matrix: cell semantics and the $7 \times 10$ grid
|
|
\item Reading the matrix as a whole: columns, rows, five support points
|
|
\item The measurement contract, introduced: fitness functions and the DORA metrics
|
|
\item This week's exercise: \textbf{the design-review gate and Deliverable A2}
|
|
\end{enumerate}
|
|
\end{frame}
|
|
|
|
% ============================================
|
|
% RECAP
|
|
% ============================================
|
|
\section{Recap}
|
|
|
|
\begin{frame}{Recap: where we are}
|
|
\footnotesize
|
|
\begin{center}
|
|
\small demand $\;\to\;$ supply $\;\to\;$ \textbf{match} $\;\to\;$ record $\;\to\;$ \textbf{test}
|
|
\end{center}
|
|
|
|
\vspace{0.1cm}
|
|
\textbf{Done} (weeks 1--6): Part I -- the framework and the C10 mini-match (L $-$, MM $++$, MS $\circ$); Part II -- seven capability profiles $C(p)$, the consolidated table, Maxims 3 and 4, ordinal reading only; Part III opened -- the C10 profile and the C1/C2 mirror pair (\emph{weights, not dimensions, define a class}).
|
|
|
|
\vspace{0.1cm}
|
|
\textbf{Last week's exercise}: you ran the three stages on your own platform (knock-out $\to$ veto $\to$ ordinal reading) and began the ADR -- today you will recognise every step.
|
|
|
|
\vspace{0.1cm}
|
|
\textbf{Today}:
|
|
\begin{itemize}\setlength\itemsep{1pt}
|
|
\item three cases from Part IV, \textbf{one per stage}
|
|
\item the general statement and the \textbf{seventy-cell grid}
|
|
\item the \textbf{measurement contract}, introduced
|
|
\end{itemize}
|
|
|
|
\vspace{0.1cm}
|
|
\begin{hinweisbox}
|
|
\footnotesize \textbf{A2 is due this week} -- the architecture dossier (ADR $+$ C4 $+$ measurement contract); the design-review gate closes the design phase; production code only after the gate.
|
|
\end{hinweisbox}
|
|
\end{frame}
|
|
|
|
% ============================================
|
|
% THREE MATCHES, THREE STAGES
|
|
% ============================================
|
|
\section{Three Matches, Three Stages}
|
|
|
|
\begin{frame}{Part IV opens: three matches, three stages}
|
|
\emph{\textcolor{bankblue}{What does the three-stage procedure actually do when it runs?}} -- usually far less than students expect: \textbf{most of the work happens before anything is scored}.
|
|
|
|
\vspace{0.1cm}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{1pt}
|
|
\item Every Part III class ends with a \textbf{verdict and a promise} -- a one-sentence primary and secondary recommendation, and the assurance that Part IV computes it through the three-stage procedure. You have seen one (C10) and the C1/C2 sketch; the other rows follow in weeks 8--9
|
|
\item You own both operands: {\scriptsize $R(a) = (w_1(a),\dots,w_{12}(a);\, S(a);\, K(a))$, $w_i \in \{\text{H},\text{M},\text{L}\}$ -- from A1 and Part III; $C(p) = (c_1(p),\dots,c_{12}(p);\, S(p))$, $c_i \in \{++,+,\circ,-,--\}$ -- the seven columns of Part II.} You have watched $\mathrm{fit}(a,p)$ run once at small scale (the C10 mini-match); not yet seen: \textbf{the machine at full load}
|
|
\item Cases first, generalisation after (as Parts II and III worked) -- three matches computed end to end, each exposing one stage: \textbf{C6} -- knock-out screening and shape gate (Stage 1) $\cdot$ \textbf{C1} -- veto rule with documented mitigations (Stage 2) $\cdot$ \textbf{C2} -- holistic ordinal reading with its built-in sensitivity alarm (Stage 3). Each lands on exactly the verdict its Part III section states
|
|
\end{itemize}
|
|
|
|
\vspace{0.1cm}
|
|
\begin{center}
|
|
\resizebox{\textwidth}{!}{%
|
|
\begin{tikzpicture}[
|
|
box/.style={rectangle, draw, rounded corners=3pt, align=center, font=\small\sffamily, minimum height=0.75cm, inner sep=5pt},
|
|
today/.style={box, fill=bankblue!20, draw=bankblue},
|
|
later/.style={box, fill=gray!15, draw=gray!60!black, text=gray!60!black},
|
|
node distance=0.2cm
|
|
]
|
|
\node[today] (a) {\S30 cases};
|
|
\node[today, right=of a] (b) {\S31 procedure};
|
|
\node[today, right=of b] (c) {\S32 matrix};
|
|
\node[today, right=of c] (d) {\S34 reading};
|
|
\node[today, right=of d] (e) {\S37 contract (intro)};
|
|
\node[later, right=0.7cm of e] (f) {\S33 rationales};
|
|
\node[later, right=of f] (g) {\S35 hybrids, evolution};
|
|
\node[later, right=of g] (h) {\S36 eight steps};
|
|
\node[later, right=0.7cm of h] (i) {\S37 in depth};
|
|
\node[later, right=of i] (j) {\S38 organisation};
|
|
\node[later, right=of j] (k) {\S39 limits};
|
|
\node[font=\small\sffamily\bfseries, text=bankblue, above=0.1cm of c] {today};
|
|
\node[font=\small\sffamily, text=gray!60!black, above=0.1cm of g] {Lecture 10};
|
|
\node[font=\small\sffamily, text=gray!60!black, above=0.1cm of j] {Lecture 11};
|
|
\end{tikzpicture}%
|
|
}
|
|
\end{center}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 1 -- C6 against all seven: the shape gate}
|
|
\emph{\textcolor{bankblue}{The nightly risk run must finish by 06:00, reproduce to the bit, and cost as little as possible: which of the seven patterns can even apply for the job?}}
|
|
|
|
\vspace{0.05cm}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{0pt}
|
|
\item The C6 profile (given here as the operand; Part III, Lecture 9): High on \textbf{D2} (makespan reading), \textbf{D9} (reproducibility reading), \textbf{D10}; shape \textbf{scheduled batch}; deterministic seeds as a hard constraint
|
|
\item Before comparing a single rating, hold $S(\text{C6}) = $ scheduled batch against the native-shape row $S(p)$ of the capability table (deck 6): \textbf{only PF proceeds to Stages 2--3}; the verdict column is identical to the C6 row of the matching matrix
|
|
\end{itemize}
|
|
|
|
\vspace{-0.05cm}
|
|
\scriptsize
|
|
\renewcommand{\arraystretch}{0.85}%
|
|
\begin{center}
|
|
\begin{tabular}{@{}lp{2.6cm}p{7.6cm}c@{}}
|
|
\toprule
|
|
\textbf{Pattern} & \textbf{Native shape $S(p)$} & \textbf{Stage-1 outcome} & \textbf{Verdict} \\
|
|
\midrule
|
|
L & interactive & gate caps at $\circ$; harm clause -- no answer to makespan or checkpointing, $--$ against High D2 & $--$ \\
|
|
MM & interactive & gate caps at $\circ$: orchestration codebase around monolithic kernels & $\circ$ \\
|
|
HX & (host's) & gate caps at $\circ$: ports touch no binding dimension & $\circ$ \\
|
|
MS & interactive & gate caps; harm clause -- communication cost multiplied against High D10 & $--$ \\
|
|
EDA & stream / async & gate caps at $\circ$: job-status glue beside scheduler and DAG & $\circ$ \\
|
|
PF & scheduled batch & \textbf{gate passed} -- proceeds to Stages 2--3; no veto on $\{$D2, D9, D10$\}$ & $++$ \\
|
|
SL & event-trig., short-lived & gate caps at $\circ$: burst fan-out for communication-light sections only & $\circ$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 1 -- one survivor, and the didactic point}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{2pt}
|
|
\item \textbf{Stages 2 and 3 -- one survivor.} Only PF reaches the veto stage, and no veto fires: against the High set $\{$D2, D9, D10$\}$ it rates $+$, $+$, $++$ (PF column, deck 6) -- throughput from data-parallel frameworks, reproducibility by construction, utilisation-driven cost
|
|
\item Its $--$ on D3 sits on a Low weight and is \emph{inert}; the holistic reading ranks a field of one
|
|
\item \textbf{Result: $\mathrm{fit}(\text{C6},\text{PF}) = {++}$, every other pattern at $\circ$ or below} -- the C6 row of the matrix, computed almost entirely at Stage 1
|
|
\item The didactic point generalises: \textbf{run the cheapest test first} -- six of seven candidates died before a single rating was weighed
|
|
\item The knock-outs of $K(a)$ belong to the same stage and work the same way: $K(\text{C1})$ eliminates any structure that cannot guarantee an ACID booking core, an immutable audit journal, and ten-plus-year retention -- \emph{before} scoring, however well it scales
|
|
\item The verdict the class's Part III section states (Lecture 9): \textbf{pipes-and-filters on HPC/batch infrastructure as primary}, serverless fan-out for bursty, communication-light parallel sections as secondary -- with the honest subsystem roles (the $\circ$ cells) stated, not hidden
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 2 -- C1: the gate passes both, the veto rule decides}
|
|
\emph{\textcolor{bankblue}{Two candidates pass the gate, both natively interactive -- and one of them cannot commit a transaction across its own internal boundaries: how does the procedure decide core banking?}}
|
|
|
|
\vspace{-0.05cm}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{0pt}
|
|
\item From the deck-6 mirror pair: C1 High on \textbf{D4, D5, D6, D7, D9}; $K(\text{C1})$: ACID booking core, BCBS 239 / FINMA auditability; shape interactive with batch edges. Contested pair: \textbf{MM against MS} -- the two columns side by side
|
|
\item \textbf{Stage 1.} Both natively interactive $\to$ the gate passes both; no hard constraint in $K(\text{C1})$ eliminates either -- \emph{a constraint names an obligation, not a pattern}
|
|
\item \textbf{Stage 2 for MS.} $c_4(\text{MS}) = {--}$: no ACID transactions across service boundaries; sagas trade atomicity for choreography complexity. D4 is High in C1 $\to$ \textbf{the veto fires and caps the cell at $-$}
|
|
\item The fact is \emph{structural}: a mitigation can only show that living without the property is \emph{survivable}
|
|
\item Monzo (deck 5): roughly 2{,}800 microservices in production banking -- under \textbf{organisational scale plus extreme technological homogeneity} (one language, one monorepo, central migration automation): a condition most organisations do not meet; the premium is paid in platform staffing with no gain for typical team sizes
|
|
\item Cap lifted \textbf{only to $\circ$}, the condition recorded in the cell rationale; MS's $--$ on D8 and D10 sit on Low weights -- no further veto fires. \textbf{Result: $\mathrm{fit}(\text{C1},\text{MS}) = \circ$}
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 2 -- stage 2 for MM, and the stage-3 reading}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{3pt}
|
|
\item \textbf{Stage 2 -- veto rule for MM.} $c_4(\text{MM}) = {++}$ (cross-module ACID transactions) -- no veto
|
|
\item But $c_5(\text{MM}) = {-}$ on High-weight D5 $\to$ caps the cell at $\circ$ -- \emph{unless a documented mitigation exists}
|
|
\item It does: \textbf{hot-standby replication of whole monolith instances} -- the classical banking high-availability tactic, in production at Fineract-class core-banking systems. The cap is lifted.
|
|
\item \textbf{Stage 3 -- holistic reading.} MM now stands at $++$ on D4, $+$ on D6, $+$ on D7, $+$ on D9 -- support on every High-weight dimension of the class, with the one structural weakness mitigated
|
|
\item \textbf{Result: $\mathrm{fit}(\text{C1},\text{MM}) = {++}$}
|
|
\item The ranking MM $\succ$ MS for the C1 core is \textbf{stable under plausible weight variation}: it would flip only if D11 (team scaling) rose to High \emph{and} the Monzo homogeneity condition held -- exactly what the C1 cell rationale (Section 33, Lecture 10) records as the escalation condition
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 2 -- two kinds of mitigation, and the C1 verdict}
|
|
\footnotesize
|
|
\begin{columns}[T]
|
|
\begin{column}{0.48\textwidth}
|
|
\textcolor{bankblue}{\textbf{Operational weakness}}
|
|
\begin{itemize}\setlength\itemsep{1pt}
|
|
\item MM's one-process blast radius (D5)
|
|
\item \emph{repaired outright} by a standard tactic -- hot standby, pod replication
|
|
\end{itemize}
|
|
\end{column}
|
|
\begin{column}{0.48\textwidth}
|
|
\textcolor{bankblue}{\textbf{Structural weakness}}
|
|
\begin{itemize}\setlength\itemsep{1pt}
|
|
\item atomicity surrendered at the boundary (MS, D4): no mitigation \emph{restores} ACID across service boundaries -- sagas buy coordination with compensating actions, not atomicity
|
|
\item can only be \emph{made survivable}, under a condition most organisations do not meet
|
|
\end{itemize}
|
|
\end{column}
|
|
\end{columns}
|
|
|
|
\vspace{0.15cm}
|
|
\begin{itemize}\setlength\itemsep{2pt}
|
|
\item The division of labour generalises: the veto rule does the heavy lifting, and the \textbf{``documented mitigation'' clause is where engineering knowledge -- not arithmetic -- enters the computation}
|
|
\item The rest of the row follows the same mechanics (Section 33, Lecture 10); in particular \textbf{HX -- a delta discipline, not a competitor -- joins MM at $++$} by isolating the long-lived booking core from volatile channels and providers
|
|
\end{itemize}
|
|
|
|
\vspace{0.1cm}
|
|
\textbf{The verdict the class's Part III section states (Lecture 9): a hexagonal modular monolith for the booking core} (MM and HX at $++$), EDA at the edges and PF for the batch runs as secondary, and microservices only when organisation size forces D11 to High -- the Monzo condition -- exactly the C1 row of the matrix.
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 3 -- C2: when scoring cannot separate the survivors}
|
|
\emph{\textcolor{bankblue}{Two finalists carry $++$ where it matters and neither dominates: what does the procedure return when scoring cannot separate the survivors?}}
|
|
|
|
\vspace{0.05cm}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{2pt}
|
|
\item C2 (from the deck-6 mirror pair): the \textbf{widest High set in the catalogue} -- D1, D3, D5, D7, D9, D11 -- and a constraint set that knocks out almost nothing; the discrimination work is done by the \emph{weights}, not the constraints
|
|
\item \textbf{Stage 1} requires one honest observation about shape: the class core has \textbf{two constitutive paths} -- the interactive read path that serves the feed, and the asynchronous fan-out path that delivers posts (the five-second delivery scenario, given here from the C2 profile of Part III, is binding for the class)
|
|
\item Neither MS (natively interactive) nor EDA (natively stream/async) is shape-foreign to the path it would carry $\to$ \textbf{the gate passes both}
|
|
\item \textbf{Stage 2} fires one veto against each, and documented practice lifts both: MS's $-$ on High-weighted D3 (mitigation: edge caching, precomputed timelines); EDA's $-$ on High-weighted D9 (mitigation: schema/contract tests, progressive delivery)
|
|
\item Both reach Stage 3 intact
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 3 -- stage 3: the comparison refuses to close}
|
|
\scriptsize
|
|
\renewcommand{\arraystretch}{0.9}%
|
|
\begin{center}
|
|
\begin{tabular}{@{}p{4.2cm}cc@{}}
|
|
\toprule
|
|
\textbf{High dimension (C2)} & \textbf{MS} & \textbf{EDA} \\
|
|
\midrule
|
|
D1 Read scalability & $++$ & $++$ \\
|
|
D3 Latency \& predictability & (mitigated) & $+$ \\
|
|
D5 Availability \& isolation & $++$ & $++$ \\
|
|
D7 Evolvability & $++$ & $++$ \\
|
|
D9 Testability \& deployability & $+$ & (mitigated) \\
|
|
D11 Team scaling & $++$ & $+$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
\vspace{0.1cm}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{2pt}
|
|
\item \textbf{Neither dominates}: MS leads where \emph{teams} multiply (D9, D11 -- independent deployments), EDA where \emph{consumers} multiply (D3 on the asynchronous path; D7 in its attach-new-consumers reading)
|
|
\item The \textbf{mandatory sensitivity analysis flips the ordering under entirely plausible variation}: weight D11 the way a several-hundred-team organisation must, and MS wins; frame the feed as what it technically is -- an eventually consistent, precomputed product of an event flow -- and EDA wins
|
|
\item By Stage 3's own rule, that instability is \textbf{not noise}: it marks a genuine tradeoff point in the ATAM sense, to be escalated to scenario-based analysis rather than smoothed over
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Case 3 -- the record refuses the either/or}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{2pt}
|
|
\item Twitter's timeline architecture is \textbf{both patterns at once}: fan-out-on-write \emph{is} publish/subscribe -- an event flow whose product, the precomputed timeline, is served by independently scaled services
|
|
\item The honest reading of the instability is not ``the procedure failed to pick a winner'' but ``\textbf{the class genuinely needs both patterns, placed}'' -- the bridge to hybrids (Section 35, Lecture 10), where hybrids turn out to be the normal case, not the exception
|
|
\item The verdict the class's Part III section states (Lecture 8): an \textbf{EDA $+$ microservices hybrid at organisational scale} (MS and EDA at $++$), a modular monolith as secondary until that scale is \emph{measured}, not assumed -- Mastodon runs the full fan-out mechanics in a Rails monolith -- exactly the C2 row
|
|
\end{itemize}
|
|
|
|
\vspace{0.1cm}
|
|
\begin{keypoint}
|
|
\footnotesize \textbf{Three cases, three stages, one division of labour.} The knock-out screening and shape gate kill most candidates before any scoring (C6: the cheapest test runs first); the veto rule disciplines the High set and prices every mitigation as documented engineering rather than optimism (C1); the holistic ordinal reading ranks the survivors while flagging its own instability as a finding, not an error (C2). \emph{Every one of the seventy cells was produced by exactly this division of labour.}
|
|
\end{keypoint}
|
|
\end{frame}
|
|
|
|
% ============================================
|
|
% THE PROCEDURE IN GENERAL
|
|
% ============================================
|
|
\section{The Procedure in General}
|
|
|
|
\begin{frame}{The formal statement -- the deck-3 box, plus one clause}
|
|
\footnotesize
|
|
\emph{\textcolor{bankblue}{What rule were the three matches following?}} Stated briefly -- every element has already done visible work: $\mathrm{fit}(a,p)$ is the ordinal aggregate of the dimension-wise comparison of $R(a)$ and $C(p)$, same five-step scale, \textbf{non-compensatory, three stages}.
|
|
|
|
\vspace{-0.1cm}
|
|
\begin{definitionbox}[Architecture--application fit $\mathrm{fit}(a,p)$]
|
|
\footnotesize
|
|
\begin{enumerate}\setlength\itemsep{0pt}
|
|
\item \textbf{Knock-out screening and workload-shape gate.} $K(a)$ eliminates before any scoring; $S(p) \neq S(a)$ caps at $\circ$ (subsystem role), $+$ only for a \emph{constitutive} subsystem of a shape-hybrid class, $-$/$--$ where it would harm the binding scenarios. \textbf{Not shown in deck 3 -- the gate is read per constitutive path}: a pattern is not shape-foreign to a class one of whose binding scenarios constitutes a path of its native shape (Case 3: C2's fan-out delivery scenario).
|
|
\item \textbf{Veto rule on High-weight dimensions.} $c_i(p) = {--}$ on a High dimension caps at $-$; $c_i(p) = {-}$ caps at $\circ$ -- unless a documented mitigation exists (a tactic or hybrid composition with production evidence): the cell says so, the cap is lifted.
|
|
\item \textbf{Holistic ordinal reading with mandatory sensitivity analysis.} Survivors ranked by support of the High set; clustered Medium conflicts downgrade one step; a \emph{ranking with exclusions}, never ``12\,\% better''; a flip under plausible weight variation marks a tradeoff point (ATAM) $\to$ scenario-based analysis.
|
|
\end{enumerate}
|
|
\end{definitionbox}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Three stages, decreasing hardness -- each with a worked face}
|
|
\footnotesize
|
|
The three stages are ordered by \textbf{decreasing hardness}, and each now has a worked face:
|
|
|
|
\vspace{0.1cm}
|
|
\renewcommand{\arraystretch}{1.0}%
|
|
\begin{center}
|
|
\begin{tabular}{@{}p{2.6cm}p{5.6cm}p{5.0cm}@{}}
|
|
\toprule
|
|
\textbf{Stage} & \textbf{What it encodes} & \textbf{Worked face} \\
|
|
\midrule
|
|
1 Knock-out and shape gate & facts no merit elsewhere can compensate -- a violated BCBS 239 obligation, an interactive pattern asked to carry a scheduled-batch core & Case 1 (C6): this stage running the show, emptying six of the row's seven cells on shape alone \\[0.2cm]
|
|
2 Veto rule & \textbf{Assumption A4}: the High weights come from the $(H,H)$ leaves of a utility tree (deck 2), so a structural failure on such a dimension fails precisely the scenarios that define the class -- unless engineering practice has produced a documented way around it & Case 2 (C1): both halves of the rule -- a mitigation that \emph{repairs} (MM's hot standby) and one that merely makes \emph{survivable under condition} (MS's Monzo condition) \\[0.2cm]
|
|
3 Holistic ordinal reading & deliberately the softest: produces an ordering, and carries a built-in alarm for its own instability & Case 3 (C2): the alarm fired and returned a hybrid rather than a false winner \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{center}
|
|
\end{frame}
|
|
|
|
\begin{frame}{Why the fit is not a weighted sum}
|
|
\footnotesize
|
|
\begin{itemize}\setlength\itemsep{2pt}
|
|
\item Deck 3 (Part I): $V(p) = \sum_i w_i \cdot v_i(p)$ presupposes cardinal scales, preferential independence, and weights as trade-off rates -- all three violated by ordinal profiles (A2); AHP inherits rank reversal
|
|
\item \textbf{What the three cases add -- a demonstration of what the formula would have destroyed:}
|
|
\begin{itemize}\setlength\itemsep{1pt}
|
|
\item \textbf{C6}: it would have averaged the shape gate away under good scores elsewhere
|
|
\item \textbf{C1}: it would have let MS's missing cross-service ACID be compensated by team scaling
|
|
\item \textbf{C2}: it would have manufactured a decimal-point winner exactly where the honest output is a flagged tradeoff point
|
|
\end{itemize}
|
|
\item Kept from multi-criteria decision analysis: the \emph{explication discipline} (criteria, weights, assumptions forced into the open); dropped: its arithmetic pretensions -- the matrix is an \textbf{explication and communication instrument}, not a computation that determines decisions; behind every contested cell stands \textbf{ATAM}, and, where money decides, \textbf{CBAM} (utility-response curves, return on investment)
|
|
\end{itemize}
|
|
|
|
\vspace{0.1cm}
|
|
\begin{keypoint}
|
|
\footnotesize The fit computation is \textbf{non-compensatory by design}: constraints knock out before anything is scored, structural failures on High-weight dimensions veto unless a documented mitigation exists, and only then does a holistic ordinal ranking follow -- with mandatory sensitivity analysis. \emph{A weighted sum over ordinal profiles would be formally illegitimate and would average away exactly the failures that matter most.}
|
|
\end{keypoint}
|
|
\end{frame}
|
|
|
|
\end{document}
|