<?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/en/</link><description>Recent content on HJohansen.dk</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 24 May 2026 10:00:00 +0200</lastBuildDate><atom:link href="https://hjohansen.dk/en/index.xml" rel="self" type="application/rss+xml"/><item><title>Pharma Automation Documentation Framework</title><link>https://hjohansen.dk/en/knowledge/pharma/framework/</link><pubDate>Sun, 24 May 2026 10:00:00 +0200</pubDate><guid>https://hjohansen.dk/en/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/en/knowledge/traceability/overview/</link><pubDate>Sun, 24 May 2026 09:30:00 +0200</pubDate><guid>https://hjohansen.dk/en/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/en/knowledge/design/overview/</link><pubDate>Sun, 24 May 2026 09:00:00 +0200</pubDate><guid>https://hjohansen.dk/en/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;See also:&lt;/strong&gt; &lt;a href="https://hjohansen.dk/en/knowledge/requirements/"&gt;Requirements Engineering&lt;/a&gt;, &lt;a href="https://hjohansen.dk/en/knowledge/pharma/"&gt;Pharma Automation Framework&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Acceptance Criteria</title><link>https://hjohansen.dk/en/knowledge/requirements/acceptance-criteria/</link><pubDate>Sun, 24 May 2026 08:30:00 +0200</pubDate><guid>https://hjohansen.dk/en/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/en/knowledge/requirements/overview/</link><pubDate>Sun, 24 May 2026 08:00:00 +0200</pubDate><guid>https://hjohansen.dk/en/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/en/knowledge/first-post/</link><pubDate>Sun, 17 May 2026 13:10:46 +0200</pubDate><guid>https://hjohansen.dk/en/knowledge/first-post/</guid><description>&lt;h2 id="hello-and-welcome"&gt;Hello and welcome&lt;/h2&gt;
&lt;p&gt;Welcome to our new website.&lt;/p&gt;
&lt;p&gt;We will share thoughts, projects, and small updates from time to time.&lt;/p&gt;
&lt;p&gt;Thanks for stopping by!&lt;/p&gt;</description></item><item><title>About Alberte</title><link>https://hjohansen.dk/en/alberte/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/alberte/ommig/</guid><description/></item><item><title>About Carina</title><link>https://hjohansen.dk/en/carina/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/carina/ommig/</guid><description/></item><item><title>About Mathilde</title><link>https://hjohansen.dk/en/mathilde/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/mathilde/ommig/</guid><description/></item><item><title>About Søren</title><link>https://hjohansen.dk/en/soren/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/soren/ommig/</guid><description/></item><item><title>About William</title><link>https://hjohansen.dk/en/william/ommig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/william/ommig/</guid><description/></item><item><title>Alberte's wishlist</title><link>https://hjohansen.dk/en/alberte/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/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>Carina's wishlist</title><link>https://hjohansen.dk/en/carina/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/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>Mathilde's wishlist</title><link>https://hjohansen.dk/en/mathilde/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/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>Søren's wishlist</title><link>https://hjohansen.dk/en/soren/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/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>William's wishlist</title><link>https://hjohansen.dk/en/william/onskeseddel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://hjohansen.dk/en/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>