57 lines
5.9 KiB
HTML
57 lines
5.9 KiB
HTML
<!-- ==========================================================================
|
||
AISE502 · Moodle course page · Week 3
|
||
Section title (Edit section → Section name): Week 3: The Supply Side, the Match, and the Decision Record
|
||
Three blocks follow, matching the FHGR section template. Paste each block into the
|
||
corresponding 'Text and media area' (editor → source code view), or all three into one.
|
||
The slide set of lecture 3 is added by the lecturer as a file resource below block 2.
|
||
Generated by src/build_moodle.py from src/content/week_03.json – edit the JSON, not this file.
|
||
========================================================================== -->
|
||
|
||
<!-- BLOCK 1 · Learning objectives -->
|
||
<h4>🎯 Learning objectives</h4>
|
||
<ul>
|
||
<li>I know the seven candidate patterns L, MM, HX, MS, EDA, PF, SL and their signature strength and cost.</li>
|
||
<li>I can distinguish an architectural pattern from an architectural tactic and explain why the framework keeps them apart.</li>
|
||
<li>I can derive a capability rating c_i(p) from tactics, published star ratings and documented production systems.</li>
|
||
<li>I can explain, via tactics, why EDA rates ++ on D7 and MS rates −− on D4.</li>
|
||
<li>I can run the three-stage, non-compensatory fit procedure: knock-outs and shape gate, vetoes, ordinal reading with sensitivity analysis.</li>
|
||
<li>I can defend the C10 mini-match verdict against L, MM and MS and explain why the MS veto relaxes.</li>
|
||
<li>I can explain why a weighted sum over ordinal ratings fails its three preconditions and produces pseudo-precision.</li>
|
||
<li>I can record an architecture decision as a MADR (drivers, options, consequences) and attach a measurement contract.</li>
|
||
</ul>
|
||
|
||
<!-- BLOCK 2 · Theory -->
|
||
<h4>🧑🏫 Theory</h4>
|
||
<p><strong>Lecture 3: The Supply Side, the Match, and the Decision Record</strong> · 2 lessons lecture + 2 lessons exercise<br>
|
||
Lecture 3 completes Part I: the supply side C(p) from tactics, the three-stage non-compensatory match run live on C10, and the decision record (ADR/MADR) with its measurement contract.</p>
|
||
<ul>
|
||
<li>Seven candidates form the set P (L, MM, HX, MS, EDA, PF, SL), each with a signature strength and cost; HX composes with the other six rather than competing.</li>
|
||
<li>Patterns are macro-structures that bundle tactics (elementary design decisions on one quality attribute); the chain topology → tactics → responses makes every ++ and −− explainable by construction.</li>
|
||
<li>An ordinal rating c_i(p) is derived from tactics analysis, then published star ratings (deviations footnoted), then documented production systems; C(p) = (c_1(p), …, c_12(p); S(p)) adds the native workload shape.</li>
|
||
<li>The three-stage match fit(a,p) is non-compensatory: knock-outs and the workload-shape gate; vetoes on High dimensions, liftable only by documented mitigations; ordinal reading with sensitivity analysis – a ranking with exclusions.</li>
|
||
<li>Mini-match R(C10) against L, MM, MS: L fails two unmitigated vetoes (−), the MS cost veto relaxes under mitigation (○), the hexagonal modular monolith wins (++) – the project architecture.</li>
|
||
<li>A weighted sum fails three preconditions (cardinal scales, preferential independence, weights as trade-off rates) and yields pseudo-precision; the 7 × 10 matrix is an explication instrument, not a computation.</li>
|
||
<li>An ADR records one decision (title, status, context, decision, consequences): co-located in the repository, brief, immutable. MADR adds decision drivers and considered options – one matrix row in narrative form.</li>
|
||
<li>Every ADR ends with a measurement contract: fitness functions and thresholds as CI gates, automated tests and telemetry alarms, DORA metrics in operation; a breach leads to a superseding ADR.</li>
|
||
</ul>
|
||
<p>📎 <strong>Materials:</strong> Slide set of Lecture 3 <em>(added below by the lecturer)</em> · Script: Part I – Sections 4 (Constructing the Supply Side: The Capability Profile C(p)), 5 (The Match: fit(a,p)) and 6 (Recording and Testing the Decision).</p>
|
||
|
||
<!-- BLOCK 3 · Self-study and assignments -->
|
||
<h4>🧑💻 Self-study and assignments</h4>
|
||
<p><strong>📖 Reading before the lecture:</strong> Part I – Sections 4 (Constructing the Supply Side: The Capability Profile C(p)), 5 (The Match: fit(a,p)) and 6 (Recording and Testing the Decision).</p>
|
||
<p><strong>Also before the lecture:</strong></p>
|
||
<ul>
|
||
<li>Bring the results of requirements workshop I (QAW scenarios and utility tree) – A1 is due at the end of week 3.</li>
|
||
<li>Have R(C10) from Lecture 2 at hand: the worked mini-match runs the advisory platform against three candidates.</li>
|
||
</ul>
|
||
<p><strong>🧩 Exercise session:</strong> Requirements workshop II: teams finalise R(platform) – weights, workload shape and knock-out constraints – fix the ontology as a contract, and complete the A1 requirements dossier (scenarios, utility tree, R(a)).</p>
|
||
<p><strong>🛠️ Project work this week</strong> · Milestone M1 – Requirements and Ontology (weeks 1–3)</p>
|
||
<ul>
|
||
<li>Finalise R(platform) – weights, workload shape and hard constraints (the knock-outs of stage 1).</li>
|
||
<li>Finalise the domain model and fix the ontology of the investment domain as a contract.</li>
|
||
<li>Check the scenario set: at least eight quality attribute scenarios with response measures, at least three for the AI components (answer correctness, token cost per request, provider migration), plus the utility tree.</li>
|
||
<li>Confirm that the project and tooling setup (repository, environment, agentic dev tools) is complete.</li>
|
||
<li>Deliver A1 (end of week 3): the requirements dossier – scenarios, utility tree and R(platform) with weights, workload shape and hard constraints.</li>
|
||
</ul>
|
||
<div style="border-left:4px solid #1b6ec2; background:#eef5fc; padding:8px 12px; margin:10px 0;">📌 <strong>Due this week:</strong> Deliverable A1 (end of week 3): requirements dossier</div>
|