@neobiotechlabs/neobiotech-dev-agent 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +22 -0
- package/.claude-plugin/plugin.json +58 -0
- package/.mcp.json +14 -0
- package/README.md +442 -0
- package/dist/__tests__/adf.test.d.ts +1 -0
- package/dist/__tests__/adf.test.js +68 -0
- package/dist/__tests__/adf.test.js.map +1 -0
- package/dist/__tests__/annex-ii-template.test.d.ts +1 -0
- package/dist/__tests__/annex-ii-template.test.js +39 -0
- package/dist/__tests__/annex-ii-template.test.js.map +1 -0
- package/dist/__tests__/doc-render.test.d.ts +1 -0
- package/dist/__tests__/doc-render.test.js +93 -0
- package/dist/__tests__/doc-render.test.js.map +1 -0
- package/dist/__tests__/help.test.d.ts +1 -0
- package/dist/__tests__/help.test.js +31 -0
- package/dist/__tests__/help.test.js.map +1 -0
- package/dist/__tests__/jira-fields.test.d.ts +1 -0
- package/dist/__tests__/jira-fields.test.js +81 -0
- package/dist/__tests__/jira-fields.test.js.map +1 -0
- package/dist/__tests__/plugin-manifest.test.d.ts +1 -0
- package/dist/__tests__/plugin-manifest.test.js +91 -0
- package/dist/__tests__/plugin-manifest.test.js.map +1 -0
- package/dist/__tests__/setup.test.d.ts +1 -0
- package/dist/__tests__/setup.test.js +7 -0
- package/dist/__tests__/setup.test.js.map +1 -0
- package/dist/__tests__/sync-version.test.d.ts +1 -0
- package/dist/__tests__/sync-version.test.js +37 -0
- package/dist/__tests__/sync-version.test.js.map +1 -0
- package/dist/clients/risk-client.d.ts +17 -0
- package/dist/clients/risk-client.js +54 -0
- package/dist/clients/risk-client.js.map +1 -0
- package/dist/clients/xray-client.d.ts +34 -0
- package/dist/clients/xray-client.js +127 -0
- package/dist/clients/xray-client.js.map +1 -0
- package/dist/config/project-config.d.ts +14 -0
- package/dist/config/project-config.js +45 -0
- package/dist/config/project-config.js.map +1 -0
- package/dist/confluence-client.d.ts +16 -0
- package/dist/confluence-client.js +97 -0
- package/dist/confluence-client.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/jira-client.d.ts +35 -0
- package/dist/jira-client.js +119 -0
- package/dist/jira-client.js.map +1 -0
- package/dist/tools/annex-ii-template.d.ts +30 -0
- package/dist/tools/annex-ii-template.js +129 -0
- package/dist/tools/annex-ii-template.js.map +1 -0
- package/dist/tools/confluence.d.ts +2 -0
- package/dist/tools/confluence.js +54 -0
- package/dist/tools/confluence.js.map +1 -0
- package/dist/tools/cvss.d.ts +2 -0
- package/dist/tools/cvss.js +59 -0
- package/dist/tools/cvss.js.map +1 -0
- package/dist/tools/doc-render.d.ts +2 -0
- package/dist/tools/doc-render.js +96 -0
- package/dist/tools/doc-render.js.map +1 -0
- package/dist/tools/doc-validation.d.ts +2 -0
- package/dist/tools/doc-validation.js +221 -0
- package/dist/tools/doc-validation.js.map +1 -0
- package/dist/tools/help-data.d.ts +7 -0
- package/dist/tools/help-data.js +144 -0
- package/dist/tools/help-data.js.map +1 -0
- package/dist/tools/help.d.ts +2 -0
- package/dist/tools/help.js +39 -0
- package/dist/tools/help.js.map +1 -0
- package/dist/tools/iec.d.ts +2 -0
- package/dist/tools/iec.js +203 -0
- package/dist/tools/iec.js.map +1 -0
- package/dist/tools/init.d.ts +2 -0
- package/dist/tools/init.js +38 -0
- package/dist/tools/init.js.map +1 -0
- package/dist/tools/jira-crud.d.ts +2 -0
- package/dist/tools/jira-crud.js +142 -0
- package/dist/tools/jira-crud.js.map +1 -0
- package/dist/tools/risk.d.ts +2 -0
- package/dist/tools/risk.js +172 -0
- package/dist/tools/risk.js.map +1 -0
- package/dist/tools/traceability.d.ts +2 -0
- package/dist/tools/traceability.js +85 -0
- package/dist/tools/traceability.js.map +1 -0
- package/dist/tools/types.d.ts +13 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/usability.d.ts +2 -0
- package/dist/tools/usability.js +149 -0
- package/dist/tools/usability.js.map +1 -0
- package/dist/tools/xray.d.ts +2 -0
- package/dist/tools/xray.js +35 -0
- package/dist/tools/xray.js.map +1 -0
- package/dist/utils/adf.d.ts +27 -0
- package/dist/utils/adf.js +104 -0
- package/dist/utils/adf.js.map +1 -0
- package/dist/utils/cvss.d.ts +15 -0
- package/dist/utils/cvss.js +86 -0
- package/dist/utils/cvss.js.map +1 -0
- package/dist/utils/doc-render.d.ts +28 -0
- package/dist/utils/doc-render.js +50 -0
- package/dist/utils/doc-render.js.map +1 -0
- package/dist/utils/jira-fields.d.ts +38 -0
- package/dist/utils/jira-fields.js +53 -0
- package/dist/utils/jira-fields.js.map +1 -0
- package/dist/utils/sync-version.d.ts +2 -0
- package/dist/utils/sync-version.js +20 -0
- package/dist/utils/sync-version.js.map +1 -0
- package/package.json +49 -0
- package/skills/doc-render/SKILL.md +79 -0
- package/vendor/dev-docs-templates/templates/dev_docs/plan_template.md +104 -0
- package/vendor/dev-docs-templates/templates/dev_docs/prd_template.md +110 -0
- package/vendor/dev-docs-templates/templates/dev_docs/spec_template.md +81 -0
- package/vendor/dev-docs-templates/templates/dev_docs/tasks_template.md +122 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/checklist-clinical-evaluation.md +81 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/checklist-gspr-mdr.md +403 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/clinical-evaluation-report.md +492 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/instructions-for-use.md +132 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/literature-evaluation-table.md +15 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/mdr-declaration-of-conformity.md +75 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/post-market-clinical-follow-up-plan.md +162 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/post-market-surveillance-plan.md +175 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/risk-management-cybersecurity-checklist.md +67 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/risk-management-report.md +111 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/CA/usability-evaluation-report.md +70 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/EA/clinical-evaluation-plan.md +154 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/EA/list-of-hazard-related-use-scenarios.md +34 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/EA/risk-table-fmea.md +155 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/EA/software-architecture-description.md +307 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/EA/software-requirements-list.md +156 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/EA/soup-list.md +82 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/EA/usability-evaluation-plan.md +103 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/global/bug-fixes-documentation-list.md +35 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/global/change-evaluation-list.md +100 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/global/list-of-known-anomalies.md +29 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/algorithm-validation-report.md +170 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/checklist-software-release.md +52 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/checklist-software-requirements-review.md +50 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/software-architecture-checklist.md +41 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/software-detailed-design.md +321 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/software-system-test-plan.md +155 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/usability-evaluation-protocol.md +63 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/PA/intended-use.md +116 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/PA/mdr-classification-document.md +114 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/PA/risk-management-plan.md +198 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/PA/software-development-maintenance-plan.md +225 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/PA/system-requirements-spec.md +182 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/information_security/information-security-controls.md +966 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/information_security/information-security-policy-and-scope.md +99 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/quality-manual-policy-objectives.md +187 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-capa.md +112 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-change-management.md +128 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-clinical-evaluation.md +102 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-feedback-management.md +140 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-integrated-software-development.md +361 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-post-market-surveillance.md +159 -0
- package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-software-problem-resolution.md +99 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
# Software Detailed Design (SDD): {PRODUCT_NAME}
|
|
2
|
+
|
|
3
|
+
<!-- AI AGENT 작성 지침
|
|
4
|
+
이 문서는 IEC 62304 Cl.5.4 기반 SW 상세 설계서 (Class B/C 필수)입니다.
|
|
5
|
+
작성 전 반드시 다음 문서를 참조하세요:
|
|
6
|
+
- SAD(software-architecture-description.md): 아키텍처 및 아이템 구조 확인
|
|
7
|
+
- SW 요구사항 명세서(software-requirements-list.md): 각 요구사항 ID 확인
|
|
8
|
+
- FMEA(risk-table-fmea.md): 위험 통제 관련 설계 반영 여부 확인
|
|
9
|
+
|
|
10
|
+
작성 지침:
|
|
11
|
+
1. 유닛(Unit)별로 섹션 3.x를 반복 작성하세요
|
|
12
|
+
2. Class C의 경우 알고리즘, 분기 조건, 오류 처리를 상세히 기술해야 합니다
|
|
13
|
+
3. Class B의 경우 인터페이스 수준까지 기술합니다
|
|
14
|
+
4. 모든 유닛은 SRS 요구사항 ID와 추적 연결을 명시해야 합니다 (Cl.5.4.2)
|
|
15
|
+
5. SOUP 연동 유닛의 경우 격리 전략과 오류 처리를 반드시 기술하세요
|
|
16
|
+
|
|
17
|
+
PlantUML 다이어그램 작성 지침:
|
|
18
|
+
- 클래스 다이어그램: 유닛 간 의존성 표현 -> 섹션 2.2에 작성
|
|
19
|
+
- 활동 다이어그램: 유닛 처리 흐름 표현 -> 각 유닛 섹션(3.x)에 작성
|
|
20
|
+
- 시퀀스 다이어그램: 유닛 간 상호작용 표현 -> 섹션 4.1에 작성
|
|
21
|
+
- 상태 다이어그램: 상태 전이가 있는 유닛에 사용
|
|
22
|
+
|
|
23
|
+
PlantUML 블록 형식: ```plantuml ... ```
|
|
24
|
+
-->
|
|
25
|
+
|
|
26
|
+
**문서 번호**: {DOC_ID}
|
|
27
|
+
**버전**: {VERSION} | **상태**: Draft
|
|
28
|
+
**작성일**: {DATE} | **작성자**: {AUTHOR}
|
|
29
|
+
**검토자**: {REVIEWER} | **승인자**: {APPROVER}
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 표준 요건 매핑 (Standard Requirements Mapping)
|
|
34
|
+
|
|
35
|
+
| IEC 62304 조항 | 제목 | 해당 섹션 | Class |
|
|
36
|
+
| -------------- | ------------------------- | ------------------ | ----- |
|
|
37
|
+
| Cl. 5.4.1 | SW 유닛 구현 및 검증 계획 | 1. 설계 개요 | B, C |
|
|
38
|
+
| Cl. 5.4.2 | SW 유닛 검증 | 5. 유닛 검증 계획 | B, C |
|
|
39
|
+
| Cl. 5.4.3 | SW 유닛 추가 상세 설계 | 3. 유닛 상세 설계 | C |
|
|
40
|
+
| Cl. 5.3.2 | 아키텍처 인터페이스 | 4. 인터페이스 설계 | B, C |
|
|
41
|
+
| Cl. 5.5.2 | 유닛 구현 검증 | 5. 유닛 검증 계획 | B, C |
|
|
42
|
+
| ISO 14971 Cl.6 | 위험 통제 조치 | 6. 위험 관련 설계 | - |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 1. 설계 개요 (Design Overview)
|
|
47
|
+
|
|
48
|
+
### 1.1 목적 및 범위
|
|
49
|
+
|
|
50
|
+
이 문서는 {PRODUCT_NAME}의 {SW_ITEM_NAME} 아이템을 구성하는 SW 유닛의 상세 설계를 기술한다.
|
|
51
|
+
|
|
52
|
+
- **대상 SW 아이템**: {SW_ITEM_NAME} ({ITEM_ID})
|
|
53
|
+
- **IEC 62304 SW 안전 등급**: Class {IEC62304_CLASS}
|
|
54
|
+
- **참조 SAD 문서**: {SAD_DOC_ID}
|
|
55
|
+
|
|
56
|
+
### 1.2 포함 유닛 목록
|
|
57
|
+
|
|
58
|
+
<!-- AI AGENT: SAD에서 정의된 아이템 내 유닛 목록을 가져와 작성하세요 -->
|
|
59
|
+
|
|
60
|
+
| 유닛 ID | 유닛 명 | 안전 등급 | 주요 기능 |
|
|
61
|
+
| -------- | ------------- | ------------- | ----------------- |
|
|
62
|
+
| UNIT-001 | {UNIT_1_NAME} | Class {CLASS} | {UNIT_1_FUNCTION} |
|
|
63
|
+
| UNIT-002 | {UNIT_2_NAME} | Class {CLASS} | {UNIT_2_FUNCTION} |
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 2. 유닛 구조 (Unit Structure)
|
|
68
|
+
|
|
69
|
+
### 2.1 유닛 분해 구조
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
{SW_ITEM_NAME} ({ITEM_ID})
|
|
73
|
+
|-- {MODULE_1_NAME}
|
|
74
|
+
| |-- UNIT-001: {UNIT_1_NAME}
|
|
75
|
+
| |-- UNIT-002: {UNIT_2_NAME}
|
|
76
|
+
|-- {MODULE_2_NAME}
|
|
77
|
+
|-- UNIT-003: {UNIT_3_NAME}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2.2 유닛 의존성 다이어그램
|
|
81
|
+
|
|
82
|
+
<!-- AI AGENT: 유닛 간 의존 관계를 클래스 다이어그램 형태로 표현하세요
|
|
83
|
+
유닛이 다른 유닛의 함수를 호출하거나 인터페이스를 사용하는 경우 화살표로 표현합니다
|
|
84
|
+
|
|
85
|
+
지침:
|
|
86
|
+
- 각 유닛을 class로 표현
|
|
87
|
+
- 의존 방향을 --> 또는 ..> 으로 표현
|
|
88
|
+
- SOUP 의존성은 <<external>> 스테레오타입 사용
|
|
89
|
+
|
|
90
|
+
예시: -->
|
|
91
|
+
|
|
92
|
+
```plantuml
|
|
93
|
+
@startuml SDD_Unit_Dependencies
|
|
94
|
+
skinparam classStyle rectangle
|
|
95
|
+
|
|
96
|
+
class "UNIT-001\nDataInputHandler" as U1 {
|
|
97
|
+
+ validate(input: InputData): bool
|
|
98
|
+
+ preprocess(data: InputData): ProcessedData
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
class "UNIT-002\nInferenceEngine" as U2 {
|
|
102
|
+
+ predict(data: ProcessedData): Result
|
|
103
|
+
- loadModel(): void
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
class "UNIT-003\nResultFormatter" as U3 {
|
|
107
|
+
+ format(result: Result): OutputDTO
|
|
108
|
+
+ applyThreshold(result: Result): RiskLevel
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
class "PyTorch v2.0\n(SOUP-002)" as SOUP <<external>>
|
|
112
|
+
|
|
113
|
+
U1 --> U2 : passes ProcessedData
|
|
114
|
+
U2 --> U3 : passes Result
|
|
115
|
+
U2 ..> SOUP : uses (isolated via wrapper)
|
|
116
|
+
|
|
117
|
+
note bottom of U2
|
|
118
|
+
Class C: 오분류 시 환자 위해 가능성
|
|
119
|
+
SOUP 격리: InferenceWrapper 래퍼 클래스 사용
|
|
120
|
+
end note
|
|
121
|
+
@enduml
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## 3. 유닛 상세 설계 (Unit Detailed Design)
|
|
127
|
+
|
|
128
|
+
> IEC 62304 Cl.5.4.3 (Class C 필수): 알고리즘, 데이터 구조, 처리 조건 상세 기술
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### 3.1 {UNIT_1_NAME} (UNIT-001)
|
|
133
|
+
|
|
134
|
+
#### 3.1.1 목적 (Purpose)
|
|
135
|
+
|
|
136
|
+
<!-- AI AGENT: 이 유닛이 수행하는 단일 책임(Single Responsibility)을 한 문장으로 기술하세요 -->
|
|
137
|
+
|
|
138
|
+
{UNIT_1_PURPOSE}
|
|
139
|
+
|
|
140
|
+
#### 3.1.2 알고리즘 / 처리 흐름 (Algorithm / Processing Flow)
|
|
141
|
+
|
|
142
|
+
<!-- AI AGENT: 처리 로직을 활동 다이어그램으로 표현하고, 아래에 설명을 추가하세요
|
|
143
|
+
Class C: 분기 조건(if/else, try/except)을 모두 명시해야 합니다
|
|
144
|
+
|
|
145
|
+
예시: -->
|
|
146
|
+
|
|
147
|
+
```plantuml
|
|
148
|
+
@startuml UNIT001_Activity
|
|
149
|
+
start
|
|
150
|
+
:입력 데이터 수신;
|
|
151
|
+
if (입력 유효성 검사?) then (통과)
|
|
152
|
+
:데이터 전처리\n(정규화, 포맷 변환);
|
|
153
|
+
:처리 결과 반환;
|
|
154
|
+
else (실패)
|
|
155
|
+
:유효성 오류 로깅;
|
|
156
|
+
:ValidationError 발생;
|
|
157
|
+
stop
|
|
158
|
+
endif
|
|
159
|
+
:정상 반환;
|
|
160
|
+
stop
|
|
161
|
+
@enduml
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**처리 단계 설명:**
|
|
165
|
+
|
|
166
|
+
1. **입력 검증**: {INPUT_VALIDATION_DESCRIPTION}
|
|
167
|
+
2. **전처리**: {PREPROCESSING_DESCRIPTION}
|
|
168
|
+
3. **핵심 처리**: {CORE_PROCESSING_DESCRIPTION}
|
|
169
|
+
4. **출력**: {OUTPUT_DESCRIPTION}
|
|
170
|
+
|
|
171
|
+
#### 3.1.3 데이터 구조 (Data Structures)
|
|
172
|
+
|
|
173
|
+
<!-- AI AGENT: 유닛이 처리하는 주요 입출력 데이터 구조를 정의하세요
|
|
174
|
+
범위 제한이 있는 필드는 반드시 허용 범위를 명시하세요 (안전 관련 값의 경우 필수) -->
|
|
175
|
+
|
|
176
|
+
**입력 (Input)**
|
|
177
|
+
|
|
178
|
+
| 필드명 | 타입 | 허용 범위 / 값 | 필수 여부 | 설명 |
|
|
179
|
+
| --------- | ------ | -------------- | --------- | ------ |
|
|
180
|
+
| {FIELD_1} | {TYPE} | {RANGE} | 필수 | {DESC} |
|
|
181
|
+
| {FIELD_2} | {TYPE} | {RANGE} | 선택 | {DESC} |
|
|
182
|
+
|
|
183
|
+
**출력 (Output)**
|
|
184
|
+
|
|
185
|
+
| 필드명 | 타입 | 범위 | 설명 |
|
|
186
|
+
| ---------------- | ------ | ------- | ------ |
|
|
187
|
+
| {OUTPUT_FIELD_1} | {TYPE} | {RANGE} | {DESC} |
|
|
188
|
+
|
|
189
|
+
#### 3.1.4 오류 처리 (Error Handling)
|
|
190
|
+
|
|
191
|
+
<!-- AI AGENT: 가능한 모든 오류 조건과 처리 방법을 기술하세요
|
|
192
|
+
IEC 62304 Cl.5.4.3: 안전 관련 오류는 반드시 Fail-Safe 동작을 정의해야 합니다 -->
|
|
193
|
+
|
|
194
|
+
| 오류 조건 | 오류 코드 | 처리 동작 | Fail-Safe 여부 | 로그 레벨 |
|
|
195
|
+
| ----------------- | --------- | ------------------------ | -------------- | ------------ |
|
|
196
|
+
| {ERROR_1} | ERR-{N} | {ACTION} | Yes / No | ERROR / WARN |
|
|
197
|
+
| 입력 값 범위 초과 | ERR-001 | 처리 중단 후 기본값 반환 | Yes | ERROR |
|
|
198
|
+
|
|
199
|
+
#### 3.1.5 요구사항 추적 (Requirements Traceability)
|
|
200
|
+
|
|
201
|
+
| SRS 요구사항 ID | 요구사항 설명 | 구현 방법 |
|
|
202
|
+
| --------------- | ------------- | ------------- |
|
|
203
|
+
| {SRS_ID_1} | {REQ_DESC} | {IMPL_METHOD} |
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### 3.2 {UNIT_2_NAME} (UNIT-002)
|
|
208
|
+
|
|
209
|
+
<!-- AI AGENT: 3.1 양식을 반복하여 각 유닛을 기술하세요 -->
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 4. 인터페이스 설계 (Interface Design)
|
|
214
|
+
|
|
215
|
+
> IEC 62304 Cl.5.3.2 아키텍처 인터페이스, Cl.5.4.3 상세 인터페이스
|
|
216
|
+
|
|
217
|
+
### 4.1 유닛 간 인터페이스 시퀀스
|
|
218
|
+
|
|
219
|
+
<!-- AI AGENT: 유닛 간 주요 상호작용을 시퀀스 다이어그램으로 표현하세요
|
|
220
|
+
요청-응답 사이의 데이터 타입과 오류 분기를 포함하세요
|
|
221
|
+
|
|
222
|
+
예시: -->
|
|
223
|
+
|
|
224
|
+
```plantuml
|
|
225
|
+
@startuml SDD_Unit_Sequence
|
|
226
|
+
participant "Caller\n(ITEM-001)" as CALLER
|
|
227
|
+
participant "UNIT-001\nDataInputHandler" as U1
|
|
228
|
+
participant "UNIT-002\nInferenceEngine" as U2
|
|
229
|
+
participant "UNIT-003\nResultFormatter" as U3
|
|
230
|
+
|
|
231
|
+
CALLER -> U1 : process(rawInput: RawInput)
|
|
232
|
+
activate U1
|
|
233
|
+
U1 -> U1 : validate(rawInput)
|
|
234
|
+
alt 유효하지 않은 입력
|
|
235
|
+
U1 --> CALLER : raise ValidationError(ERR-001)
|
|
236
|
+
else 유효한 입력
|
|
237
|
+
U1 -> U1 : preprocess(rawInput)
|
|
238
|
+
U1 -> U2 : predict(processedData: ProcessedData)
|
|
239
|
+
activate U2
|
|
240
|
+
U2 -> U2 : loadModel()
|
|
241
|
+
U2 -> U2 : inference(processedData)
|
|
242
|
+
U2 --> U1 : Result
|
|
243
|
+
deactivate U2
|
|
244
|
+
U1 -> U3 : format(result: Result)
|
|
245
|
+
activate U3
|
|
246
|
+
U3 -> U3 : applyThreshold(result)
|
|
247
|
+
U3 --> U1 : OutputDTO
|
|
248
|
+
deactivate U3
|
|
249
|
+
U1 --> CALLER : OutputDTO
|
|
250
|
+
end
|
|
251
|
+
deactivate U1
|
|
252
|
+
@enduml
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 4.2 SOUP 연동 인터페이스
|
|
256
|
+
|
|
257
|
+
> IEC 62304 Cl.5.3.5 (SOUP 격리)
|
|
258
|
+
|
|
259
|
+
| SOUP ID | SOUP 명 | 연동 방식 | 래퍼 클래스 | 고장 시 동작 |
|
|
260
|
+
| -------- | ----------- | ---------------- | --------------- | ------------------ |
|
|
261
|
+
| SOUP-001 | {SOUP_NAME} | {INTERFACE_TYPE} | {WRAPPER_CLASS} | {FAILURE_BEHAVIOR} |
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## 5. 유닛 검증 계획 (Unit Verification Plan)
|
|
266
|
+
|
|
267
|
+
> IEC 62304 Cl.5.4.2, Cl.5.5.2 (유닛 검증 방법 및 합격 기준)
|
|
268
|
+
|
|
269
|
+
### 5.1 검증 방법
|
|
270
|
+
|
|
271
|
+
| 방법 | 설명 | 적용 유닛 | 담당자 |
|
|
272
|
+
| -------------- | ----------------------------- | ------------------ | ---------- |
|
|
273
|
+
| 코드 리뷰 | 정적 분석 및 피어 리뷰 | 전체 | {REVIEWER} |
|
|
274
|
+
| 유닛 테스트 | pytest / unittest 기반 자동화 | UNIT-001, UNIT-002 | {DEV} |
|
|
275
|
+
| 정적 분석 도구 | {STATIC_ANALYSIS_TOOL} | 전체 | CI/CD |
|
|
276
|
+
|
|
277
|
+
### 5.2 합격 기준 (Acceptance Criteria)
|
|
278
|
+
|
|
279
|
+
<!-- AI AGENT: SW 안전 등급에 따른 커버리지 기준을 적용하세요
|
|
280
|
+
Class A: 요구사항 기반 테스트 / Class B: Statement 커버리지 / Class C: Branch 커버리지 -->
|
|
281
|
+
|
|
282
|
+
| 유닛 ID | 커버리지 기준 | 최소 기준값 | 허용 정적 분석 경고 |
|
|
283
|
+
| ------------------ | ------------------ | ----------- | -------------------- |
|
|
284
|
+
| UNIT-001 (Class B) | Statement Coverage | >= 80% | 0건 (정당화 시 허용) |
|
|
285
|
+
| UNIT-002 (Class C) | Branch Coverage | 100% | 0건 |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 6. 위험 관련 설계 고려사항 (Risk-Related Design Considerations)
|
|
290
|
+
|
|
291
|
+
> ISO 14971 Cl.6 (위험 통제 조치), IEC 62304 Cl.7.1
|
|
292
|
+
|
|
293
|
+
<!-- AI AGENT: FMEA(risk-table-fmea.md)의 Risk Control Measures를
|
|
294
|
+
이 섹션에서 어떻게 구현하는지 연결하세요 -->
|
|
295
|
+
|
|
296
|
+
| 위험 ID | 위험 설명 | 설계 통제 방법 | 구현 유닛 | 검증 방법 |
|
|
297
|
+
| ----------- | ----------- | ---------------- | --------- | -------------- |
|
|
298
|
+
| {RISK_ID_1} | {RISK_DESC} | {DESIGN_CONTROL} | UNIT-{N} | {VERIFICATION} |
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## 7. 추적성 매트릭스 요약 (Traceability Summary)
|
|
303
|
+
|
|
304
|
+
> IEC 62304 Cl.5.1.1(c), Cl.5.7.4
|
|
305
|
+
|
|
306
|
+
| SRS 요구사항 ID | 유닛 ID | 유닛 테스트 ID | 위험 ID |
|
|
307
|
+
| --------------- | -------- | -------------- | --------- |
|
|
308
|
+
| {SRS_ID_1} | UNIT-001 | TEST-{N} | {RISK_ID} |
|
|
309
|
+
| {SRS_ID_2} | UNIT-002 | TEST-{N} | - |
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 8. 변경 이력 (Revision History)
|
|
314
|
+
|
|
315
|
+
| 버전 | 날짜 | 작성자 | 변경 내용 |
|
|
316
|
+
| ---- | ------ | -------- | --------- |
|
|
317
|
+
| 0.1 | {DATE} | {AUTHOR} | 초안 작성 |
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
> Template based on IEC 62304:2006/AMD1:2015 Cl.5.4, ISO 14971:2019
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Software System Test Plan & Protocol: {PRODUCT_NAME} v{VERSION}
|
|
2
|
+
|
|
3
|
+
<!-- AI AGENT 작성 지침
|
|
4
|
+
이 문서는 IEC 62304 Cl.5.7 기반 시스템 테스트 계획서입니다.
|
|
5
|
+
Sprint마다 테스트 케이스를 추가/업데이트하세요.
|
|
6
|
+
|
|
7
|
+
작성 전 반드시 다음 문서를 참조하세요:
|
|
8
|
+
- SW 요구사항 명세서(software-requirements-list.md): 모든 SRS ID를 테스트 케이스로 커버해야 함
|
|
9
|
+
- FMEA(risk-table-fmea.md): 위험 통제 조치가 구현되었는지 검증하는 테스트 포함
|
|
10
|
+
- 사이버보안 체크리스트(risk-management-cybersecurity-checklist.md): 보안 테스트 항목 반영
|
|
11
|
+
|
|
12
|
+
작성 지침:
|
|
13
|
+
1. 모든 SRS 요구사항(SRS-F-xxx, SRS-P-xxx 등)에 최소 1개의 테스트 케이스가 있어야 합니다
|
|
14
|
+
2. 테스트 ID 체계: TST-SYS-{N:3d} (예: TST-SYS-001)
|
|
15
|
+
3. 테스트 결과 컬럼은 실제 테스트 실행 후 채워주세요 (계획서는 Expected까지만)
|
|
16
|
+
4. 위험 통제 조치에 대한 테스트는 "위험 통제 검증?" 열을 Yes로 표시하세요
|
|
17
|
+
5. Pass/Fail 외에 Blocked(사전 조건 미충족), N/A(해당 없음)도 사용 가능합니다
|
|
18
|
+
|
|
19
|
+
테스트 카테고리:
|
|
20
|
+
- Functional: SRS-F-xxx 기능 요구사항 검증
|
|
21
|
+
- Performance: SRS-P-xxx 성능 요구사항 검증
|
|
22
|
+
- Security: SRS-S-xxx 보안 요구사항 검증
|
|
23
|
+
- Regression: 이전 버전에서 동작하던 기능이 유지되는지 확인
|
|
24
|
+
- Boundary: 경계값 조건 검증 (허용 범위 초과/미만 입력)
|
|
25
|
+
|
|
26
|
+
테스트 환경 (필수 기재):
|
|
27
|
+
- 테스트 환경은 실제 사용 환경과 유사해야 합니다 (IEC 62304 Cl.5.7.2)
|
|
28
|
+
- 사용된 SOUP 버전을 명시하세요 (SOUP 리스트와 일치 확인)
|
|
29
|
+
-->
|
|
30
|
+
|
|
31
|
+
**문서 번호**: {DOC_ID}
|
|
32
|
+
**버전**: {VERSION} | **상태**: Draft (계획) / Final (프로토콜)
|
|
33
|
+
**Sprint**: {SPRINT_NUMBER} | **작성일**: {DATE}
|
|
34
|
+
**테스터**: {TESTER} | **검토자**: {REVIEWER}
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 표준 요건 매핑
|
|
39
|
+
|
|
40
|
+
| 표준 조항 | 제목 | 해당 섹션 |
|
|
41
|
+
| ------------------ | ----------------------------- | ------------------ |
|
|
42
|
+
| IEC 62304 Cl.5.7.1 | 통합 시스템 테스트 절차 수립 | 전체 |
|
|
43
|
+
| IEC 62304 Cl.5.7.2 | 소프트웨어 시스템 테스트 수행 | 3. 테스트 케이스 |
|
|
44
|
+
| IEC 62304 Cl.5.7.4 | 테스트 결과와 요구사항 추적성 | 4. 추적성 매트릭스 |
|
|
45
|
+
| MDR Annex II 6.1 | 제품 검증 | 전체 |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 1. 테스트 환경 (Test Environment)
|
|
50
|
+
|
|
51
|
+
<!-- AI AGENT: 실제 테스트를 수행한 환경을 정확하게 기재하세요 -->
|
|
52
|
+
|
|
53
|
+
| 항목 | 사양 |
|
|
54
|
+
| ------------------ | ---------------------------------- |
|
|
55
|
+
| OS / 환경 | {OS_VERSION} |
|
|
56
|
+
| 주요 SOUP 버전 | {SOUP_NAME} v{VERSION} (SOUP-{ID}) |
|
|
57
|
+
| 브라우저 / 런타임 | {BROWSER_OR_RUNTIME} |
|
|
58
|
+
| 테스트 데이터 출처 | {TEST_DATA_SOURCE} |
|
|
59
|
+
| 테스트 실행 일시 | {TEST_DATE} |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 2. 테스트 범위 (Test Scope)
|
|
64
|
+
|
|
65
|
+
| 포함 | 제외 |
|
|
66
|
+
| ---------------------------- | ------------------------------------ |
|
|
67
|
+
| {IN_SCOPE_TEST} | {OUT_OF_SCOPE_TEST} |
|
|
68
|
+
| SRS-F-xxx 전체 기능 요구사항 | 유닛 레벨 테스트 (별도 SDD에서 관리) |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 3. 테스트 케이스 (Test Cases)
|
|
73
|
+
|
|
74
|
+
### 3.1 기능 테스트 (Functional Tests)
|
|
75
|
+
|
|
76
|
+
<!-- AI AGENT: 각 SRS-F-xxx 요구사항에 대한 테스트 케이스를 작성하세요
|
|
77
|
+
테스트 단계(Steps)는 재현 가능하도록 구체적으로 작성해야 합니다
|
|
78
|
+
예시:
|
|
79
|
+
Steps: 1. {URL}에 접속한다 2. 사용자 ID {ID}와 비밀번호 {PW}를 입력한다 3. 로그인 버튼을 클릭한다
|
|
80
|
+
Expected: 대시보드 페이지로 이동하고 사용자 이름이 표시된다 -->
|
|
81
|
+
|
|
82
|
+
| 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 설명 | 사전 조건 | 테스트 단계 | 예상 결과 | 위험 통제 검증? | 실제 결과 | Pass? |
|
|
83
|
+
| ----------- | --------- | --------------- | ------------- | ----------- | -------------------------- | ------------ | --------------- | --------- | ----- |
|
|
84
|
+
| TST-SYS-001 | SRS-F-001 | Functional | {TEST_DESC_1} | {PRECOND_1} | 1. {STEP_1}<br>2. {STEP_2} | {EXPECTED_1} | Yes / No | | |
|
|
85
|
+
| TST-SYS-002 | SRS-F-002 | Functional | {TEST_DESC_2} | {PRECOND_2} | 1. {STEP_1}<br>2. {STEP_2} | {EXPECTED_2} | No | | |
|
|
86
|
+
|
|
87
|
+
### 3.2 성능 테스트 (Performance Tests)
|
|
88
|
+
|
|
89
|
+
| 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 설명 | 허용 기준 | 측정 방법 | 실제 결과 | Pass? |
|
|
90
|
+
| ------------- | --------- | --------------- | -------------- | --------- | -------------------- | --------- | ----- |
|
|
91
|
+
| TST-SYS-P-001 | SRS-P-001 | Performance | 응답 시간 측정 | <= {N}초 | {MEASUREMENT_METHOD} | {ACTUAL} | |
|
|
92
|
+
|
|
93
|
+
### 3.3 보안 테스트 (Security Tests)
|
|
94
|
+
|
|
95
|
+
<!-- AI AGENT: SRS-S-xxx 보안 요구사항에 대한 테스트를 작성하세요
|
|
96
|
+
다음 항목을 포함하는 것을 권장합니다:
|
|
97
|
+
- 인증 실패 케이스 (잘못된 자격증명, 세션 만료)
|
|
98
|
+
- 권한 없는 접근 시도
|
|
99
|
+
- SQL Injection / XSS 방어 확인
|
|
100
|
+
- TLS 통신 암호화 확인 -->
|
|
101
|
+
|
|
102
|
+
| 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 설명 | 예상 결과 | 위험 통제 검증? | 실제 결과 | Pass? |
|
|
103
|
+
| ------------- | --------- | --------------- | -------------------- | -------------------------------------- | --------------- | --------- | ----- |
|
|
104
|
+
| TST-SYS-S-001 | SRS-S-001 | Security | {SECURITY_TEST_1} | {EXPECTED} | Yes | | |
|
|
105
|
+
| TST-SYS-S-002 | SRS-S-002 | Security | TLS 통신 암호화 확인 | Wireshark 캡처 시 암호화된 패킷만 관측 | Yes | | |
|
|
106
|
+
|
|
107
|
+
### 3.4 경계값 테스트 (Boundary Tests)
|
|
108
|
+
|
|
109
|
+
| 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 조건 | 입력값 | 예상 결과 | 실제 결과 | Pass? |
|
|
110
|
+
| ------------- | --------- | --------------- | -------------- | ------------ | ----------------- | --------- | ----- |
|
|
111
|
+
| TST-SYS-B-001 | SRS-F-{N} | Boundary | 최대값 입력 | {MAX_VALUE} | {EXPECTED} | | |
|
|
112
|
+
| TST-SYS-B-002 | SRS-F-{N} | Boundary | 최소값 입력 | {MIN_VALUE} | {EXPECTED} | | |
|
|
113
|
+
| TST-SYS-B-003 | SRS-F-{N} | Boundary | 범위 초과 입력 | {OVER_VALUE} | 오류 처리 및 거부 | | |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 4. 추적성 매트릭스 (Traceability Matrix)
|
|
118
|
+
|
|
119
|
+
<!-- AI AGENT: 모든 SRS 요구사항이 테스트에 의해 커버되는지 확인하세요 -->
|
|
120
|
+
|
|
121
|
+
| SRS ID | 요구사항 설명 | 테스트 ID | 위험 ID | 커버 여부 |
|
|
122
|
+
| --------- | -------------- | ------------- | --------- | --------- |
|
|
123
|
+
| SRS-F-001 | {REQ_DESC} | TST-SYS-001 | - | Yes |
|
|
124
|
+
| SRS-S-001 | {SEC_REQ_DESC} | TST-SYS-S-001 | {RISK_ID} | Yes |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 5. 테스트 결과 요약 (Test Results Summary)
|
|
129
|
+
|
|
130
|
+
<!-- AI AGENT: 테스트 완료 후 아래 표를 채워주세요 -->
|
|
131
|
+
|
|
132
|
+
| 카테고리 | 전체 | Pass | Fail | Blocked | N/A |
|
|
133
|
+
| ----------- | ---- | ---- | ---- | ------- | --- |
|
|
134
|
+
| Functional | {N} | | | | |
|
|
135
|
+
| Performance | {N} | | | | |
|
|
136
|
+
| Security | {N} | | | | |
|
|
137
|
+
| Boundary | {N} | | | | |
|
|
138
|
+
| **합계** | | | | | |
|
|
139
|
+
|
|
140
|
+
**결론**: Pass / Fail / Conditional Pass
|
|
141
|
+
|
|
142
|
+
**미해결 결함 목록**: (없음 또는 bug-fixes-documentation-list.md 참조)
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 6. 변경 이력
|
|
147
|
+
|
|
148
|
+
| 버전 | 날짜 | 작성자 | 변경 내용 |
|
|
149
|
+
| ---- | ------ | -------- | --------------------- |
|
|
150
|
+
| 0.1 | {DATE} | {AUTHOR} | 계획서 초안 |
|
|
151
|
+
| 1.0 | {DATE} | {TESTER} | 테스트 결과 입력 완료 |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
> Template based on IEC 62304:2006/AMD1:2015 Clause 5.7, MDR 2017/745 Annex II 6.1
|
package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/usability-evaluation-protocol.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Usability Evaluation Protocol
|
|
2
|
+
|
|
3
|
+
## Mapping of Standard Requirements to Document Sections
|
|
4
|
+
|
|
5
|
+
| IEC 62366-1:2015 Section | Title | Document Section |
|
|
6
|
+
|--------------------------|-----------------------------------------------|------------------|
|
|
7
|
+
| 4.2 | Usability Engineering File | (all) |
|
|
8
|
+
| 4.3 | Tailoring of the Usability Engineering effort | (all) |
|
|
9
|
+
|
|
10
|
+
## 1. User Group and Environment
|
|
11
|
+
|
|
12
|
+
> Describe the user group here, e.g., physicians with experience in a certain field.
|
|
13
|
+
|
|
14
|
+
> Also, describe the environment in which the user test is being conducted. Obviously, both the user group and
|
|
15
|
+
> environment should match whatever you described in your Intended Use. So, if your app is intended to be used
|
|
16
|
+
> by emergency physicians in a brightly-lit hospital environment, you should also have these people do the
|
|
17
|
+
> usability test in a similar environment.
|
|
18
|
+
|
|
19
|
+
## 2. Preparation
|
|
20
|
+
|
|
21
|
+
> Describe whether you prepare users in any way. Again, this should be based on the use context in which your
|
|
22
|
+
> users will be using your device in real life. So, if people typically carefully read the user manual before
|
|
23
|
+
> (not sure in which parallel universe that happens), you can give them the manual and some time to study
|
|
24
|
+
> it. More realistically, you'll probably test how users handle your device when they haven't read the manual.
|
|
25
|
+
|
|
26
|
+
> If there are official training which are required before users can use your device, you should do this
|
|
27
|
+
> training first, of course.
|
|
28
|
+
|
|
29
|
+
## 3. List of Tasks
|
|
30
|
+
|
|
31
|
+
> This table lists the tasks you want your users to perform. It's kind of the master table which will be
|
|
32
|
+
> copy-pasted for each user below - you'll be filling out the observations and hazards encountered by each
|
|
33
|
+
> user.
|
|
34
|
+
|
|
35
|
+
> As always, using a spreadsheet (e.g., Google Sheets) instead of a document is a very good idea here.
|
|
36
|
+
|
|
37
|
+
| ID | Description | App State / Environment | Instructions | Acceptance Criteria | Observations | Hazards encountered |
|
|
38
|
+
|----|-------------|-------------------------|--------------|---------------------|--------------|---------------------|
|
|
39
|
+
| | | | | | | |
|
|
40
|
+
|
|
41
|
+
## 4. Protocols
|
|
42
|
+
|
|
43
|
+
> Copy-paste the table above for each user and fill it out during the test. Note down the names and ages (or
|
|
44
|
+
> any other important characteristics) per user.
|
|
45
|
+
|
|
46
|
+
### User 1 (Name, Age)
|
|
47
|
+
|
|
48
|
+
| ID | Description | App State / Environment | Instructions | Acceptance Criteria | Observations | Hazards encountered |
|
|
49
|
+
|----|-------------|-------------------------|--------------|---------------------|--------------|---------------------|
|
|
50
|
+
| | | | | | | |
|
|
51
|
+
|
|
52
|
+
### User 2 (Name, Age)
|
|
53
|
+
|
|
54
|
+
| ID | Description | App State / Environment | Instructions | Acceptance Criteria | Observations | Hazards encountered |
|
|
55
|
+
|----|-------------|-------------------------|--------------|---------------------|--------------|---------------------|
|
|
56
|
+
| | | | | | | |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
Template Copyright [openregulatory.com](https://openregulatory.com). See [template
|
|
61
|
+
license](https://openregulatory.com/template-license).
|
|
62
|
+
|
|
63
|
+
Please don't remove this notice even if you've modified contents of this template.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Intended Use
|
|
2
|
+
|
|
3
|
+
<!-- AI AGENT 작성 지침
|
|
4
|
+
이 문서는 MDR Annex II 1.1, ISO 14971 Cl.5.2, IEC 62366-1 Cl.5.1 기반 사용 목적 정의서입니다.
|
|
5
|
+
PA 단계의 첫 번째 핵심 문서로, 모든 이후 문서의 근거가 됩니다.
|
|
6
|
+
|
|
7
|
+
작성 지침:
|
|
8
|
+
1. "Intended Use": 의료 기기의 核心 기능을 명확하고 간결하게 기술하세요
|
|
9
|
+
- 무엇을 하는가? (진단/치료/모니터링)
|
|
10
|
+
- 어떤 방식으로? (AI 분석, 데이터 수집 등)
|
|
11
|
+
- 어떤 결과를 제공하는가? (점수, 권고사항, 시각화 등)
|
|
12
|
+
예시: "This software is intended to assist clinicians in detecting {CONDITION} by analyzing {INPUT_DATA} and providing a risk score."
|
|
13
|
+
|
|
14
|
+
2. "Intended Medical Indication": 대상 질환/상태를 구체적으로 기술하고
|
|
15
|
+
"제외 기준(Exclusion Criteria)"을 반드시 포함하세요
|
|
16
|
+
|
|
17
|
+
3. "Patient Population": 나이, 체중, 동반 질환 등 구체적 특성을 기술하세요
|
|
18
|
+
|
|
19
|
+
4. "User Profile": 의료 종사자인지 일반 사용자인지 명확히 구분하세요
|
|
20
|
+
- 필요한 교육/자격 요건
|
|
21
|
+
- 기술 숙련도 수준
|
|
22
|
+
|
|
23
|
+
5. "Use Environment": 병원 환경인지 재택 환경인지 구분하고
|
|
24
|
+
소음, 조명, 시간 압박 등 환경적 특성을 기술하세요
|
|
25
|
+
|
|
26
|
+
6. "Operating Principle": 입력 -> 처리 -> 출력 흐름을 명확히 기술하세요
|
|
27
|
+
AI/ML 모델을 사용하는 경우 반드시 "보조 진단 도구"임을 명시하세요
|
|
28
|
+
|
|
29
|
+
완성 체크리스트:
|
|
30
|
+
[ ] 제품명 및 버전 기재
|
|
31
|
+
[ ] Medical Indication에 제외 기준(Contraindications) 포함
|
|
32
|
+
[ ] 의도된 사용자와 환자 집단 구분 명확
|
|
33
|
+
[ ] MDR 등급 결정을 위한 충분한 정보 제공
|
|
34
|
+
[ ] IFU(instructions-for-use.md)와 내용 일치 확인
|
|
35
|
+
-->
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## Mapping of Requirements to Document Sections
|
|
39
|
+
|
|
40
|
+
| MDR Class | MDR Section | Document Section |
|
|
41
|
+
| --------- | ----------------------------- | ---------------- |
|
|
42
|
+
| (All) | Annex II, 1.1 a) - d), h), i) | (All) |
|
|
43
|
+
|
|
44
|
+
| ISO 14971:2019 Section | Document Section |
|
|
45
|
+
| ---------------------- | ---------------- |
|
|
46
|
+
| 5.2 | (All) |
|
|
47
|
+
|
|
48
|
+
| IEC 62366-1:2015 Section | Document Section |
|
|
49
|
+
| ------------------------ | ---------------- |
|
|
50
|
+
| 5.1 | (All) |
|
|
51
|
+
|
|
52
|
+
## Product
|
|
53
|
+
|
|
54
|
+
* Name: *\<product name\>*
|
|
55
|
+
* Version: *\<product version\>*
|
|
56
|
+
* Basic UDI-DI: *\<insert UDI-DI, if/when available\>*
|
|
57
|
+
|
|
58
|
+
## Intended Use
|
|
59
|
+
|
|
60
|
+
> Describe the core medical functionality of your device and how it treats, diagnoses or alleviates a disease.
|
|
61
|
+
> Keep it high-level so that this description is true for as long as possible even when the device is updated.
|
|
62
|
+
|
|
63
|
+
## Intended Medical Indication
|
|
64
|
+
|
|
65
|
+
> Describe the condition(s) and/or disease(s) to be screened, monitored, treated, diagnosed, or prevented by
|
|
66
|
+
> your software. Importantly, also list exclusion criteria: Maybe patients with a certain diagnosis should not
|
|
67
|
+
> be using your device.
|
|
68
|
+
|
|
69
|
+
## Contraindications
|
|
70
|
+
|
|
71
|
+
> List anything that you want to explicitly exclude from your intended use.
|
|
72
|
+
|
|
73
|
+
## Patient Population
|
|
74
|
+
|
|
75
|
+
> Describe the patient population your software is intended to be used on. Note that this may overlap with the
|
|
76
|
+
> user profile (section below), but not necessarily. Your software could be used by physicians to diagnose
|
|
77
|
+
> diseases in patients, so in that case, they don't overlap. Some ideas for characteristics to describe: Age
|
|
78
|
+
> group, weight range, health, condition(s).
|
|
79
|
+
|
|
80
|
+
## User Profile
|
|
81
|
+
|
|
82
|
+
> Describe the typical user of the software. Some ideas could be: Qualifications, prior training (for your
|
|
83
|
+
> software), technical proficiency, time spent using the software.
|
|
84
|
+
|
|
85
|
+
## Use Environment Including Software/Hardware
|
|
86
|
+
|
|
87
|
+
> Describe the typical use environment. What sort of devices is this running on? Does the software only run on
|
|
88
|
+
> one device or multiple devices? Is it loud and chaotic like in an emergency ward? How's the lighting?
|
|
89
|
+
>
|
|
90
|
+
> Also, add other software or hardware which is required by your device. Most commonly, apps require users to
|
|
91
|
+
> have a smartphone with a compatible operating system (iOS / Android).
|
|
92
|
+
|
|
93
|
+
## Operating Principle
|
|
94
|
+
|
|
95
|
+
> It's kind of a stretch to describe the "operating principle" of software. I guess this makes more sense for
|
|
96
|
+
> hardware devices. In any case, I'd just generally state what sort of input goes in and what output comes
|
|
97
|
+
> out, e.g. you could be processing images and returning diagnoses.
|
|
98
|
+
|
|
99
|
+
The device is stand-alone software. It receives input from the user and outputs information.
|
|
100
|
+
|
|
101
|
+
## Part of the Body / Type of Tissue Interacted With
|
|
102
|
+
|
|
103
|
+
The device is stand-alone software. It receives input from the user and outputs information. It doesn't come
|
|
104
|
+
in contact with tissue or bodily fluids.
|
|
105
|
+
|
|
106
|
+
## Variants / Accessories
|
|
107
|
+
|
|
108
|
+
> Describe variants and/or accessories of/to this device, if applicable. For typical stand-alone software of
|
|
109
|
+
> startups, this shouldn't be applicable.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
Template Copyright [openregulatory.com](https://openregulatory.com). See [template
|
|
114
|
+
license](https://openregulatory.com/template-license).
|
|
115
|
+
|
|
116
|
+
Please don't remove this notice even if you've modified contents of this template.
|