IEC 62304 for software teams: safety classes, required deliverables and how to fit them into Git and CI
A practical engineering view of IEC 62304:2006+A1:2015: how software safety classification works with risk controls, which clauses apply to Class A, B and C, how to handle SOUP, and how pull requests, CI reports, tags and SBOMs become audit evidence.
Ala Ben Aicha

Direct answer
IEC 62304 is the life cycle standard for medical device software, including software that is a device on its own (SaMD). Each software system gets Class A, B or C based on the harm it could contribute to after external risk controls, and the class decides which activities and documents are mandatory. Configuration management, problem resolution, maintenance and system testing apply to every class; architecture, integration testing and most software risk analysis start at Class B; detailed unit design is Class C only. No waterfall is required: reviewed pull requests, CI test reports and tagged releases can be the records, as long as they are planned, controlled and traceable.
Which version applies in 2026
The current text is IEC 62304:2006+AMD1:2015, consolidated edition 1.1. A second edition has been in drafting for years. QuickBird Medical reported in September 2026 that the IEC now forecasts publication on 26 October 2028, after a large volume of comments on the 2025 committee draft. Drafts so far propose replacing the A/B/C classes with two process rigour levels and widening the scope to health software in general. Treat that as a direction: build to edition 1.1 today and keep process documents modular enough to remap later.
Where IEC 62304 sits next to other standards and regulations
IEC 62304 covers the software life cycle and nothing else. It assumes the surrounding system exists:
| Standard / regulation | What it gives you | How IEC 62304 depends on it |
|---|---|---|
| ISO 13485:2016 | The quality management system: document control, design and development controls, CAPA | Clause 4.1 expects a QMS; ISO 13485 is the usual route |
| ISO 14971:2019 | Risk management process, hazards, hazardous situations, risk acceptability | Clause 4.2 requires an ISO 14971 process; classification and clause 7 feed the risk management file |
| IEC 62366-1 | Usability engineering, use errors | Use-related hazards drive software requirements and risk controls |
| IEC 82304-1:2016 | Product-level safety for standalone health software on general computing platforms | Requires the software itself to follow IEC 62304 processes; adds product validation, labelling, post-market duties |
| IEC 81001-5-1 | Security activities across the health software life cycle | Plugs into the same plan, SOUP list and problem resolution |
| EU MDR Annex I, section 17.2 | Software must be developed "in accordance with the state of the art taking into account the principles of development life cycle, risk management, including information security, verification and validation" (Regulation (EU) 2017/745) | IEC 62304 is the usual way to show it to a notified body |
| FDA | IEC 62304 is an FDA-recognized consensus standard | A declaration of conformity can cover part of the premarket software documentation |
Two regulatory details matter for planning. In the EU, EN 62304 was harmonised under the old Medical Devices Directive, but it does not appear in the MDR harmonised standards lists published through mid-2026, so it gives no formal presumption of conformity under the MDR. Notified bodies still treat it as the state of the art, so in practice nobody skips it. Check the latest summary list before you write "harmonised" in a technical file. If you still need to decide whether your software is a device at all, start with the EU MDR guide for software teams and MDCG 2019-11 rev.1.
In the US, the June 2023 FDA guidance Content of Premarket Submissions for Device Software Functions replaced the old "level of concern" with a Basic or Enhanced documentation level. For the "software development, configuration management and maintenance practices" element, it accepts a declaration of conformity to the FDA-recognized version of IEC 62304. Since 2 February 2026, the Quality Management System Regulation incorporates ISO 13485:2016 by reference, so a single ISO 13485 QMS with IEC 62304 processes inside it can serve both markets.
Software safety classification with risk controls
Amendment 1 changed how classification works. The 2015 text assigns a class to each software system based on the hazardous situations it can contribute to, after considering risk control measures external to the software:
- Class A: the software cannot contribute to a hazardous situation, or the hazardous situation does not result in unacceptable risk once external risk controls are considered.
- Class B: unacceptable risk remains after external risk controls, and the possible harm is non-serious injury.
- Class C: unacceptable risk remains after external risk controls, and the possible harm is death or serious injury.
"External" means outside the software system being classified: a hardware interlock, an independent software system, a clinical procedure. A check inside the same codebase does not lower the class of that codebase. Three rules catch teams out:
- Until a class is assigned, Class C requirements apply (clause 4.3 g).
- Software items inherit the class of the system they come from. A lower class for one item needs a documented rationale explaining how it is segregated (4.3 d). For Class C, clause 5.3.5 requires you to identify that segregation and show it is effective.
- The class goes into the risk management file (4.3 c). It is a risk decision, owned jointly with whoever runs the ISO 14971 process.
Example: a SaMD that suggests an insulin bolus. If a wrong value could reach the patient unchecked, it is Class C. If the clinical workflow requires a clinician to verify inputs and result against a displayed calculation before administration, and the risk file shows that control brings the risk to acceptable, the risk team may justify Class B. That argument has to survive usability evaluation under IEC 62366-1; a confirmation dialog users click through is not an effective control.
One trap when you file in both markets: the FDA documentation level is assessed before risk control measures are applied. A system you justified as Class B under IEC 62304 can still need Enhanced documentation for the FDA.
Required deliverables by class
This summary follows the class markers in the normative text of IEC 62304:2006+A1:2015 (Annex A, Table A.1 gives the same picture).
| Clause | Activity | Class A | Class B | Class C |
|---|---|---|---|---|
| 5.1 | Development plan, verification plan, risk management plan, documentation plan, configuration management plan (5.1.1-5.1.3, 5.1.6-5.1.9) | Yes | Yes | Yes |
| 5.1 | Integration test planning, supporting items, configuration control before verification, common defect avoidance (5.1.5, 5.1.10-5.1.12) | - | Yes | Yes |
| 5.1.4 | Development standards, methods and tools | - | - | Yes |
| 5.2 | Software requirements, re-evaluate risk analysis, update system requirements, verify requirements | Yes | Yes | Yes |
| 5.2.3 | Risk control measures written as software requirements | - | Yes | Yes |
| 5.3 | Architecture, interfaces, SOUP functional and hardware requirements, verify architecture | - | Yes | Yes |
| 5.3.5 | Segregation needed for risk control | - | - | Yes |
| 5.4 | Subdivide into software units (5.4.1) | - | Yes | Yes |
| 5.4 | Detailed design of units and interfaces, verify detailed design | - | - | Yes |
| 5.5 | Implement each unit | Yes | Yes | Yes |
| 5.5 | Unit verification process, acceptance criteria, unit verification | - | Yes | Yes |
| 5.5.4 | Additional unit acceptance criteria | - | - | Yes |
| 5.6 | Integration and integration testing, regression | - | Yes | Yes |
| 5.7 | Software system testing covering all requirements | Yes | Yes | Yes |
| 5.8 | Release: verification complete, residual anomalies documented, versions, archive, reliable delivery | Yes | Yes | Yes |
| 5.8 | Evaluate residual anomalies, document build procedure and environment, confirm plan complete | - | Yes | Yes |
| 6 | Maintenance plan, problem and modification analysis, modification implementation | Yes | Yes | Yes |
| 7.1-7.3 | Software contribution to hazardous situations, risk control measures, their verification and traceability | - | Yes | Yes |
| 7.4 | Risk management of software changes (7.4.1 all classes, 7.4.2-7.4.3 B and C) | Partly | Yes | Yes |
| 8 | Configuration management: identification, SOUP identification, change control, status accounting | Yes | Yes | Yes |
| 9 | Problem resolution: reports, investigation, change control, records, trend analysis | Yes | Yes | Yes |
Class A is lighter, not empty. Since Amendment 1, Class A software needs requirements, system testing against them, release records, configuration management and problem resolution.
SOUP: what the standard asks for
SOUP (software of unknown provenance) covers any already-developed software not built for your device: open-source libraries, the language runtime, the OS, a commercial SDK, or older in-house code without development records. The obligations stack up by class:
- All classes (8.1.2): for each SOUP configuration item, document the title, the manufacturer and a unique designator such as a version or patch number. Standard libraries count.
- Class B and C (5.3.3, 5.3.4): specify the functional and performance requirements the SOUP item must meet for your intended use, and the hardware and software it needs to run.
- Class B and C (7.1.3): if a SOUP failure could contribute to a hazardous situation, evaluate at least the supplier's published anomaly list for the exact version you ship.
A lockfile identifies versions but does not record why a library is acceptable or which known bugs you reviewed. Generate an SBOM (CycloneDX or SPDX) on every release build, and keep a short SOUP register beside it with requirements, risk relevance and the date of the last anomaly review. For US cyber devices, section 524B of the FD&C Act already requires an SBOM in the premarket submission (see the FDA cybersecurity guidance), so the same artefact serves both purposes.
Mapping IEC 62304 to Git and CI
The standard asks for evidence that planned activities happened, by someone accountable, on a known configuration. A modern toolchain already produces most of that. Describe the mapping in the software development plan (5.1.1); otherwise an auditor sees tooling without a process.
| IEC 62304 expectation | Git / CI implementation | Record kept |
|---|---|---|
| Change control (8.2), approved change requests | Every change starts from a ticket; protected main branch; merge only via pull request | Ticket, PR, approval |
| Verification of design and code (5.5.5, 5.6) | Required reviewers who are not the author, required status checks | PR review log, CI run |
| Traceability (5.1.1, 7.3.3, 8.2.4) | Requirement and risk control IDs in ticket, PR title and test names | Generated matrix |
| Unit and integration test records (5.5.5, 5.6.7) | Test runners emit JUnit XML; CI stores reports per commit | Archived reports |
| System test records (5.7.5) | Tagged build, versioned test protocol, results linked to requirement IDs | Test report per release |
| Build procedure and environment (5.8.5) | Pinned build image, lockfile, build in CI only | Pipeline definition at the tag |
| Released versions and archive (5.8.4, 5.8.7) | Annotated, signed tags; artefacts stored immutably | Tag, artefact hash |
| SOUP identification (8.1.2) | SBOM generated on each release | SBOM attached to release |
| Problem resolution (9) | Issue tracker with a "problem report" type, required fields, link to fix PR | Problem report history |
| Residual anomalies (5.8.2, 5.8.3) | Open problem reports exported at release, each with a risk evaluation | Release notes section |
A commit and PR convention that makes the traceability matrix generatable:
feat(dosing): clamp bolus suggestion to configured max
Implements: SRS-042
Risk-control: RCM-007 (HAZ-012 overdose suggestion)
Verified-by: test_bolus_clamped_to_max, SYS-TC-118
Ticket: CR-311
A minimal pipeline step that keeps the evidence with the build:
release-evidence:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test -- --ci --reporters=default --reporters=jest-junit
- run: npx @cyclonedx/cyclonedx-npm --output-file sbom.cdx.json
- run: node scripts/trace-matrix.mjs --requirements docs/srs.yaml --junit junit.xml --out trace-matrix.csv
- uses: actions/upload-artifact@v4
with:
name: release-evidence-${{ github.ref_name }}
path: |
junit.xml
sbom.cdx.json
trace-matrix.csv
The trace-matrix.mjs script is your own: it reads requirement IDs from the SRS, scans test names and PR trailers, and fails the build when a requirement or risk control measure has no passing test. That failing check is worth more in an audit than a hand-maintained spreadsheet. CI artefact retention is usually short, so copy release evidence into controlled storage that matches the archive period from 5.8.7.
Two more rules keep this defensible. Tools that produce records (CI, the trace script, the issue tracker) need validation for their intended use under ISO 13485 clause 4.1.6, scaled to risk. And branch protection settings are part of your process, so changes to them go through change control.
Common audit findings
These come up repeatedly in practice, across company sizes:
- Classification without risk links: Class B or A claimed with no reference to hazards, external controls or the risk file entries that justify it.
- SOUP list without versions or anomaly review: "React, PostgreSQL, Python" with no designators, and no evidence anyone read the known-issues list for the shipped version.
- Traceability holes: risk control measures not written as software requirements (5.2.3), or written but never tested.
- Self-approved changes: the author merged their own PR, or an admin bypassed branch protection without a recorded reason.
- Release built on a laptop: no documented build environment, so the shipped binary cannot be reproduced (5.8.5).
- Residual anomalies listed but not evaluated: the open bug export exists, the risk assessment for each item does not (5.8.3).
- A stale plan: the development plan describes a process the team stopped using two years ago (5.1.2).
- No trend analysis on problem reports (9.6), which also weakens post-market surveillance.
Related reading and help
IEC 62304 overlaps with other obligations on the same codebase: AI components bring EU AI Act requirements, hospital deployments pull in NIS2 security duties, and the wider EU compliance landscape shows how these fit together. If you need a development team that builds medical device software with this evidence trail from the first sprint, see HealthTech development.
This article is engineering guidance, not regulatory or legal advice. Confirm classification and conformity strategy with your regulatory lead and notified body.