AISE502/moodle/week_03.html

57 lines
5.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- ==========================================================================
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>