<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HJohansen.dk</title><link>https://hjohansen.dk/</link><description>Recent content on HJohansen.dk</description><generator>Hugo</generator><language>da-DK</language><lastBuildDate>Sun, 24 May 2026 10:00:00 +0200</lastBuildDate><atom:link href="https://hjohansen.dk/index.xml" rel="self" type="application/rss+xml"/><item><title>Pharma Automation Documentation Framework</title><link>https://hjohansen.dk/knowledge/pharma/framework/</link><pubDate>Sun, 24 May 2026 10:00:00 +0200</pubDate><guid>https://hjohansen.dk/knowledge/pharma/framework/</guid><description>&lt;p&gt;In a pharma automation context, the clean mental chain is:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;business need → user requirements → functional requirements → design → risk-based validation evidence → continued verification.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;FDA describes process validation as a lifecycle (three stages, not a one-time event), and ICH Q9 says the level of effort, formality, and documentation should match the level of risk.&lt;/p&gt;
&lt;h2 id="the-document-split"&gt;The Document Split&lt;/h2&gt;
&lt;h3 id="1-user-requirements-specification-urs"&gt;1. User Requirements Specification (URS)&lt;/h3&gt;
&lt;p&gt;The &lt;em&gt;what&lt;/em&gt; and &lt;em&gt;why&lt;/em&gt; from the user/business side. Describes process intent, operator needs, data capture, compliance needs, quality outcomes. ISA-88 gives a shared batch-control language for structuring this.&lt;/p&gt;</description></item><item><title>The Traceability Chain</title><link>https://hjohansen.dk/knowledge/traceability/overview/</link><pubDate>Sun, 24 May 2026 09:30:00 +0200</pubDate><guid>https://hjohansen.dk/knowledge/traceability/overview/</guid><description>&lt;p&gt;A useful mental model for how engineering documentation fits together:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Business Need
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Requirements (what)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Acceptance Criteria (how to verify what)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Design (how to build it)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Implementation
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Tests (based on acceptance criteria)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="key-principles"&gt;Key Principles&lt;/h2&gt;
&lt;h3 id="1-traceability-is-key"&gt;1. Traceability is Key&lt;/h3&gt;
&lt;p&gt;Every requirement should link to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a design element&lt;/li&gt;
&lt;li&gt;one or more acceptance criteria&lt;/li&gt;
&lt;li&gt;one or more tests&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-avoid-mixing-levels"&gt;2. Avoid Mixing Levels&lt;/h3&gt;
&lt;p&gt;Common mistakes:&lt;/p&gt;</description></item><item><title>Design Documents</title><link>https://hjohansen.dk/knowledge/design/overview/</link><pubDate>Sun, 24 May 2026 09:00:00 +0200</pubDate><guid>https://hjohansen.dk/knowledge/design/overview/</guid><description>&lt;p&gt;Design documents describe &lt;em&gt;how&lt;/em&gt; requirements will be implemented. They bridge requirements → implementation → verification.&lt;/p&gt;
&lt;h2 id="what-they-are-for"&gt;What They Are For&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Translate requirements into system structure&lt;/li&gt;
&lt;li&gt;Align developers and engineers before implementation&lt;/li&gt;
&lt;li&gt;Define interfaces, data flows, and responsibilities&lt;/li&gt;
&lt;li&gt;Reduce ambiguity in complex systems&lt;/li&gt;
&lt;li&gt;Provide traceability back to requirements&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="typical-structure"&gt;Typical Structure&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Overview&lt;/strong&gt; — purpose, scope, assumptions, constraints&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Requirements reference&lt;/strong&gt; — links to relevant requirements (traceability matrix optional)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High-level architecture&lt;/strong&gt; — components, responsibilities, data flow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Detailed design&lt;/strong&gt; — data structures, state machines, algorithms, interface definitions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge cases and failure handling&lt;/strong&gt; — recovery strategies, validation rules&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-functional considerations&lt;/strong&gt; — performance, security, maintainability, scalability&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open questions / decisions&lt;/strong&gt; — design trade-offs, alternatives considered&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="what-a-design-document-is-not"&gt;What a Design Document is NOT&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Not a requirements document&lt;/li&gt;
&lt;li&gt;Not a step-by-step implementation script&lt;/li&gt;
&lt;li&gt;Not code (though diagrams and pseudocode are fine)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Se også:&lt;/strong&gt; &lt;a href="https://hjohansen.dk/knowledge/requirements/"&gt;Requirements Engineering&lt;/a&gt;, &lt;a href="https://hjohansen.dk/knowledge/pharma/"&gt;Pharma Automation Framework&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Acceptance Criteria</title><link>https://hjohansen.dk/knowledge/requirements/acceptance-criteria/</link><pubDate>Sun, 24 May 2026 08:30:00 +0200</pubDate><guid>https://hjohansen.dk/knowledge/requirements/acceptance-criteria/</guid><description>&lt;p&gt;Acceptance criteria define how you prove a requirement is satisfied. They are concrete, verifiable, written in behavior terms, and often expressed as scenarios or rules.&lt;/p&gt;
&lt;h2 id="common-formats"&gt;Common Formats&lt;/h2&gt;
&lt;h3 id="rule-based"&gt;Rule-based&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Given X, system shall do Y.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="scenario-based-given--when--then"&gt;Scenario-based (Given / When / Then)&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Given a valid batch recipe,
When the user starts execution,
Then the system shall validate parameters before proceeding.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="key-properties"&gt;Key Properties&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Binary outcome&lt;/strong&gt; — pass or fail, no ambiguity&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus on observable behavior&lt;/strong&gt; — not implementation details&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Directly usable for testing&lt;/strong&gt; — a tester can derive test cases&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="relationship-to-requirements"&gt;Relationship to Requirements&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Requirements&lt;/th&gt;
 &lt;th&gt;Acceptance Criteria&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;What is needed&lt;/td&gt;
 &lt;td&gt;How we know it works&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;The goal&lt;/td&gt;
 &lt;td&gt;The proof&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Can be abstract&lt;/td&gt;
 &lt;td&gt;Must be concrete&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Think of acceptance criteria as the &lt;strong&gt;test contract&lt;/strong&gt; for a requirement. Every requirement should link to one or more criteria.&lt;/p&gt;</description></item><item><title>Requirements Engineering</title><link>https://hjohansen.dk/knowledge/requirements/overview/</link><pubDate>Sun, 24 May 2026 08:00:00 +0200</pubDate><guid>https://hjohansen.dk/knowledge/requirements/overview/</guid><description>&lt;p&gt;Requirements describe what the system must achieve, not how. They sit at different levels of abstraction.&lt;/p&gt;
&lt;h2 id="levels-of-requirements"&gt;Levels of Requirements&lt;/h2&gt;
&lt;h3 id="1-business-requirements"&gt;1. Business Requirements&lt;/h3&gt;
&lt;p&gt;The highest-level intent. Expresses &lt;em&gt;why&lt;/em&gt; something is needed. Usually stable over time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The system shall reduce manual batch configuration errors.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="2-user--functional-requirements"&gt;2. User / Functional Requirements&lt;/h3&gt;
&lt;p&gt;Describes system behavior from a user or process point of view. Focuses on &lt;em&gt;what&lt;/em&gt; the system does.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The system shall validate all recipe parameters before execution.&amp;rdquo;&lt;/p&gt;</description></item><item><title>First Post</title><link>https://hjohansen.dk/knowledge/first-post/</link><pubDate>Sun, 17 May 2026 13:10:46 +0200</pubDate><guid>https://hjohansen.dk/knowledge/first-post/</guid><description>&lt;h2 id="hej-og-velkommen"&gt;Hej og velkommen&lt;/h2&gt;
&lt;p&gt;Velkommen til vores nye website.&lt;/p&gt;
&lt;p&gt;Her vil vi dele tanker, projekter og små opdateringer fra tid til anden.&lt;/p&gt;
&lt;p&gt;Tak fordi du kigger forbi!&lt;/p&gt;</description></item><item><title>Alberte ønskeseddel</title><link>https://hjohansen.dk/alberte/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/alberte/onskeseddel/</guid><description>&lt;iframe src="https://onskeskyen.dk/da/wishlists/q0eC9mz2xc9PlfiM" width="100%" height="800" style="border: none;"&gt;&lt;/iframe&gt;</description></item><item><title>Carinas ønskeseddel</title><link>https://hjohansen.dk/carina/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/carina/onskeseddel/</guid><description>&lt;iframe src="https://onskeskyen.dk/da/wishlists/T6NcS64Vlp1RZRqG" width="100%" height="800" style="border: none;"&gt;&lt;/iframe&gt;</description></item><item><title>Mathildes ønskeseddel</title><link>https://hjohansen.dk/mathilde/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/mathilde/onskeseddel/</guid><description>&lt;iframe src="https://onskeskyen.dk/da/wishlists/hBl55CPZf5RCcFvb" width="100%" height="800" style="border: none;"&gt;&lt;/iframe&gt;</description></item><item><title>Om Alberte</title><link>https://hjohansen.dk/alberte/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/alberte/ommig/</guid><description/></item><item><title>Om Carina</title><link>https://hjohansen.dk/carina/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/carina/ommig/</guid><description/></item><item><title>Om Mathilde</title><link>https://hjohansen.dk/mathilde/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/mathilde/ommig/</guid><description/></item><item><title>Om Søren</title><link>https://hjohansen.dk/soren/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/soren/ommig/</guid><description>&lt;p&gt;Mit navn er Søren, og jeg bor i Kalundborg sammen med min kone og vores tre børn. Til daglig arbejder jeg som automation engineer hos Novo Nordisk. Jeg er uddannet biokemiker, og brugte mine første 10 år hos Novo som produktionskemiker, men jeg er også vild med automation, så derfor er jeg skiftet til dette, for at udvikle mine evner inden for dette felt også.&lt;/p&gt;
&lt;p&gt;Jeg interessere mig som sagt meget for software, systemarkitektur og automatisering. Mit arbejde handler meget om S88, batchstyring, og udvikling af SattLine kode til vores procesanlæg.&lt;/p&gt;</description></item><item><title>Om William</title><link>https://hjohansen.dk/william/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/william/ommig/</guid><description/></item><item><title>Sørens ønskeseddel</title><link>https://hjohansen.dk/soren/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/soren/onskeseddel/</guid><description>&lt;iframe src="https://onskeskyen.dk/da/wishlists/3Jfsj01ga6aEWm5j" width="100%" height="800" style="border: none;"&gt;&lt;/iframe&gt;</description></item><item><title>Williams ønskeseddel</title><link>https://hjohansen.dk/william/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/william/onskeseddel/</guid><description>&lt;iframe src="https://onskeskyen.dk/da/wishlists/iv2syxDYXGNow0Jr" width="100%" height="800" style="border: none;"&gt;&lt;/iframe&gt;</description></item></channel></rss>