乐于分享
好东西不私藏

FDA指南 | 生产与质量管理体系软件的计算机软件保证

FDA指南 | 生产与质量管理体系软件的计算机软件保证

导读:本文基于美国食品药品监督管理局(FDA)于2026年2月3日发布的行业与FDA工作人员指南《生产与质量管理体系软件的计算机软件保证》进行编译与解读。该指南旨在为医疗器械生产和质量管理中使用的计算机及自动化数据处理系统提供基于风险的“计算机软件保证”建议,取代了2025年9月的旧版文件。本文将严格遵循原文档逻辑,以专业中文呈现其核心框架、风险分析方法及实施考量,重点解析如何应用风险思维来建立并维持软件在生命周期内的受控(已验证)状态,助力行业在合规前提下提升效率与灵活性。


I. 引言 Introduction

FDA发布本指南,旨在为作为医疗器械生产或质量管理体系一部分而使用的计算机和自动化数据处理系统提供关于计算机软件保证 Computer Software Assurance的建议。本指南:

  • 将“计算机软件保证”描述为一种基于风险的方法 Risk-Based Approach,用于建立对用于生产或质量管理体系的自动化的信心,并指出在何处可能需要额外的严谨性;以及
  • 描述了可用于建立计算机软件保证并提供客观证据以满足法规要求(例如,质量管理体系义务中的计算机软件验证要求,包括经引用并入2016版ISO 13485的21 CFR第820部分中的要求)的各种方法和测试活动。

本指南是对FDA指南《软件验证的一般原则》(下称“软件验证指南”)的补充,但本指南取代了软件验证指南的第6节:自动化工艺设备与质量体系软件的验证。

通常,FDA的指南文件并不建立法律上可强制执行的责任。相反,指南描述了FDA当前对某个主题的思考,应仅被视为建议,除非引用了特定的法规或法定要求。在FDA指南中使用“应 should”一词意味着某事是建议或推荐,但并非强制要求。

II. 背景 Background

FDA设想这样一种未来状态:医疗器械生态系统本质上专注于能提升产品质量和患者安全的器械特性与生产实践。FDA已寻求识别并推广成功的生产实践,帮助器械制造商提高其生产质量水平。在此过程中,一个目标是帮助制造商生产出符合FDA实施的法律法规的高质量医疗器械。遵守质量管理体系义务(包括第820部分中的义务)对于成品医疗器械制造商是必需的,只要他们从事这些义务适用的操作。质量管理体系义务包括要求医疗器械制造商开发、实施、控制并监控生产过程以确保器械符合其规范,包括要求制造商验证作为生产或质量管理体系一部分使用的计算机软件用于其预期用途 for its intended use

近年来,制造技术的进步,包括自动化、机器人技术、模拟和其他数字能力的采用,使制造商能够减少错误来源、优化资源并降低患者风险。FDA认识到这些技术在提高医疗器械质量、可用性和安全性方面具有巨大潜力,并已采取多项努力来促进此类技术的采用和使用。

传统上,软件验证通常通过在软件开发生命周期每个阶段进行的软件测试和其他验证活动来完成。然而,正如FDA的软件验证指南所解释的,仅靠软件测试通常不足以建立软件适合其预期用途的信心。相反,软件验证指南建议“软件质量保证”应侧重于防止缺陷引入软件开发过程,并鼓励使用基于风险的方法来建立软件适合其预期用途的信心。

FDA认为,对作为生产或质量管理体系一部分使用的计算机软件应用基于风险的方法,将能更好地聚焦制造商的质量保证活动,有助于确保产品质量,同时帮助满足验证要求。因此,FDA正在为作为医疗器械生产或质量管理体系一部分使用的计算机和自动化数据处理系统提供关于计算机软件保证的建议。FDA相信,这些建议将有助于促进创新技术的采用和使用,这些技术可促进患者获得高质量的医疗器械,并帮助制造商跟上动态、快速变化的技术格局,同时促进对FDA实施的法律法规的遵守。

III. 范围 Scope

本指南为用于医疗器械的生产或质量管理体系的计算机或自动化数据处理系统提供关于计算机软件保证的建议。

本指南并非旨在提供软件验证所有原则的完整描述。FDA先前已在FDA的软件验证指南中概述了软件验证的原则,包括将变更管理作为软件生命周期的一部分。本指南将软件验证指南中讨论的基于风险的软件验证方法应用于生产或质量管理体系软件。本指南还讨论了特定的风险考量、可接受的测试方法,以及通过医疗器械生命周期为生产或质量管理体系软件高效生成客观证据。

本指南不提供对符合《联邦食品、药品和化妆品法》(FD&C Act)第201(h)条器械定义的软件功能(即器械软件功能 Device Software Functions)的设计和开发验证或确认要求的建议。有关FDA对医疗器械软件验证的建议的更多信息,请参阅软件验证指南。

IV. 定义 Definitions

  • 计算机软件保证 Computer Software Assurance:一种基于风险的方法,用于建立对用于生产或质量管理体系的自动化的信心。计算机软件保证活动提供了软件适合其预期用途 fit for its intended use的客观证据。
  • 基于风险的方法 Risk-Based Approach:一种系统性地应用风险管理原则、流程和工具来识别危害、估计和评估相关风险、实施和监控风险控制措施,并评审风险管理过程有效性的方法。
  • 预期用途 Intended Use:软件在特定条件下的预期应用。对于本指南,预期用途是指软件作为生产或质量管理体系一部分的用途。
  • 已验证状态 Validated State:软件持续适合其预期用途的状态。
  • 云计算 Cloud Computing:一种模型,用于实现对可配置计算资源(例如,网络、服务器、存储、应用和服务)的共享池的 ubiquitous(无处不在)、方便、按需的网络访问,这些资源可以通过最少的管理工作或服务提供商交互来快速配置和释放。本指南讨论了与计算机化系统相关的各种云计算模型,例如基础设施即服务 Infrastructure as a Service平台即服务 Platform as a Service软件即服务 Software as a Service

V. 计算机软件保证 Computer Software Assurance

计算机软件保证是一种基于风险的方法,用于建立对用于生产或质量管理体系的自动化的信心。计算机软件保证活动提供了软件适合其预期用途的客观证据。计算机软件保证的目标是帮助确保用于生产或质量管理体系的软件在其整个生命周期内处于受控状态(“已验证状态”)。这一点很重要,因为制造商越来越依赖计算机和自动化处理系统来监控和操作生产、提醒责任人员以及传输和分析生产数据等。通过允许制造商利用诸如基于风险的测试、非脚本化测试、持续性能监控和数据监控,以及其他实体(例如,开发者、供应商、云服务提供商)执行的验证活动等原则,计算机软件保证方法提供了灵活性和敏捷性,有助于确保软件保持符合适用质量管理体系义务的已验证状态。

A. 计算机软件保证风险框架 Computer Software Assurance Risk Framework

以下方法旨在帮助制造商在整个软件生命周期内建立计算机软件保证的基于风险框架。概述的方法可应用于(但不限于)用作生产或质量管理体系一部分的自动化工具(例如,机器人流程自动化或自动工作流)、数据分析工具、人工智能/机器学习工具和云计算。

附录A提供了将此风险框架应用于各种计算机软件保证情况的示例。

(1) 识别预期用途 Identifying the Intended Use

法规要求制造商验证作为生产或质量管理体系一部分使用的软件用于其预期用途 for its intended use。这包括与计算机化系统相关的各种云计算模型,如IaaS、PaaS和SaaS。

为确定验证要求是否适用,制造商必须确定该软件是否(或将要)用作生产或质量管理体系的一部分(无论是直接使用还是用于支持生产或质量管理体系)。

具有以下预期用途的软件被视为直接用作 Directly Used as Part of生产或质量管理体系的一部分:

  • 旨在自动化生产过程、检查、测试或生产数据收集与处理的软件;以及
  • 旨在自动化质量管理体系流程、质量管理体系数据收集与处理,或维护根据适用质量管理体系义务建立的质量记录 Quality Record的软件。

具有以下预期用途的软件被视为用于支持生产或质量管理体系 Supporting Production or the Quality Management System

  • 旨在用作测试或监控软件系统或自动化用于生产或质量管理体系软件的测试活动的开发工具,例如用于开发和运行脚本或嵌入生产设备(如固件)中的软件的工具;以及
  • 旨在自动化非质量记录部分的生产或质量管理体系一般记录保存的软件。

这两种软件都用作生产或质量管理体系的一部分,并且必须根据ISO 13485的4.1.6、7.5.6或7.6子条款(视情况而定)进行验证。然而,如下文进一步讨论,支持性软件通常风险较低,因此在基于风险的计算机软件保证方法下,验证工作可相应减少,而不会影响安全性。

FDA建议制造商在考虑云计算模型时,重点关注软件的预期用途,因为并非所有云计算模型都“直接”用作生产或质量管理体系的一部分。例如,一个IaaS云存储解决方案属于基础设施类别,但可能用于存储根据适用质量管理体系义务建立的质量记录,在这种情况下,该IaaS云存储解决方案将被视为直接用作生产或质量管理体系的一部分。在此示例中,FDA建议制造商将保证工作的重点放在与记录完整性相关的特性或功能以及适用于预期存储记录的21 CFR第11部分要求上。

相反,一个IaaS云存储解决方案可能支持存储生产和过程数据的基础设施;这不会被视作已建立的质量管理体系记录。在此示例中,IaaS云存储解决方案不支持生产或质量管理体系,ISO 13485的4.1.6、7.5.6和7.6子条款中的验证要求将不适用。当数据在云中的存储独立于该数据是否属于质量记录时,制造商有义务确定该应用的适当风险水平。制造商可以考虑采用最低负担方法 Least-Burdensome Approach来确保IaaS云存储解决方案适合其业务。

如ISO 13485的4.1.6、7.5.6和7.6子条款所述,与软件验证和再验证相关的方法和活动需要与软件使用相关的风险(包括对产品符合规范能力的影响)相称。FDA认识到,用于生产或质量管理体系的软件通常是复杂的,由多个特性、功能和操作组成;软件可能根据其各个特性、功能和操作具有一个或多个预期用途。在软件的各个特性、功能和操作在生产或质量管理体系中具有不同作用的情况下,它们可能呈现不同的风险,需要不同程度的验证工作。FDA建议制造商检查各个特性、功能和操作的预期用途,以便于制定基于风险的保证策略。制造商可以决定针对与预期用途相关的各个特性、功能或操作进行不同的保证活动。

例如,一个商用现成品软件 Commercial Off-The-Shelf Software可能包含具有不同预期用途的各种功能。当利用COTS电子表格软件的基本输入功能,用于记录固化过程的时间和温度读数的预期用途时,制造商可能不需要执行超出COTS软件开发者进行的以及初始安装和配置之外的额外保证活动。软件的预期用途“记录读数”仅支持维护过程信息的记录,流程风险较低。因此,初始活动(如成功的供应商评估以及软件安装和配置)可能足以确定软件适合其预期用途并保持已验证状态。然而,如果制造商还利用COTS电子表格的内置功能创建直接用于生产或质量管理体系的自定义公式,则可能存在额外的风险和数据完整性考量。例如,如果自定义公式自动计算时间和温度统计数据以监控固化过程的性能和适用性,则可能需要制造商进行额外的验证。

就本指南而言,我们描述并推荐一个计算机软件保证框架,其中制造商检查软件的各个特性、功能或操作的预期用途。然而,在软件只有一个预期用途的简单情况下(例如,如果软件内的所有特性、功能和操作共享相同的预期用途),制造商可能会发现单独检查每个特性、功能和操作并无帮助。在这种情况下,制造商可以根据软件的整体预期用途制定基于风险的方法并考虑保证活动。

FDA建议制造商记录其用于确定软件特性、功能或操作是否(或将要)用作生产或质量管理体系一部分的决策过程。

(2) 确定基于风险的方法 Determining the Risk-Based Approach

一旦制造商确定软件特性、功能或操作已(或将要)用作生产或质量管理体系的一部分,则使用基于风险的分析来确定适当的保证活动。应注意,根据ISO 13485的4.1.2子条款,制造商需要将基于风险的方法应用于控制质量管理体系所需的适当过程。广义而言,这种基于风险的方法包括系统性地识别合理可预见的软件故障,确定此类故障是否构成高流程风险 High Process Risk,并系统性地选择和执行与医疗器械风险或流程风险(视情况而定)相称的保证活动。

制造商应根据其基于风险的分析,并考虑其流程和程序,为所执行的软件和保证活动选择适当的保证活动执行频率。

请注意,如本指南所述,为生产或质量管理体系软件进行计算机软件保证的基于风险分析,与执行ISO 14971:2019中描述的医疗器械风险分析是不同的。生产或质量管理体系软件的基于风险分析侧重于那些可能影响或阻止软件按预期执行的因素,例如适当的系统配置和管理、系统安全性、数据完整性、数据存储、数据传输或操作错误。生产或质量管理体系软件的基于风险分析应考虑哪些故障是合理可预见的(而非可能的),以及每个此类故障导致的风险。例如,在基于风险的分析中,制造商可以考虑停电导致的风险,这在生产或质量管理体系的生命周期中可能不常发生,但合理可预见会发生。本指南讨论了流程风险 Process Risk医疗器械风险 Medical Device Risk。流程风险是指损害生产或质量管理体系的潜在可能性。医疗器械风险是指器械伤害患者或用户的潜在可能性。在讨论医疗器械风险时,本指南侧重于因损害安全性的质量问题导致的医疗器械风险。

具体而言,FDA认为,当软件特性、功能或操作未能按预期执行可能导致损害安全性的质量问题时,即构成高流程风险。此流程风险识别步骤仅关注流程本身,而非对患者或用户造成的医疗器械风险。

通常属于高流程风险的软件特性、功能或操作示例包括那些:

  • 维持影响产品物理特性或被确定为对器械安全性至关重要的制造工艺的工艺参数 Process Parameters(例如,温度、压力或湿度);
  • 在有限或没有额外人工感知或审查的情况下,测量、检查、分析和/或确定产品或工艺的可接受性;
  • 基于数据监控或其他工艺步骤的自动化反馈,在没有额外人工感知或审查的情况下,执行工艺纠正或调整工艺参数;
  • 生成对医疗器械安全操作必要的使用说明或其他提供给患者和用户的标签;和/或
  • 自动化制造商确定为对器械安全性(例如,网络安全)和质量至关重要的数据的监控、趋势分析或跟踪。

相反,FDA认为,当软件特性、功能或操作未能按预期执行不会导致损害安全性的质量问题时,则不构成高流程风险。这包括未能按预期执行不会导致质量问题的情况,以及未能按预期执行可能导致质量问题但不会合理可预见地导致安全性受损的情况。通常不构成高流程风险的软件特性、功能或操作示例包括那些:

  • 收集和记录用于监控和审查目的的过程数据,这些数据对生产或工艺性能没有直接影响;
  • 用作质量管理体系一部分,用于纠正和预防措施 Corrective and Preventive Actions路由、投诉的自动化记录/跟踪、自动化变更控制管理或自动化程序管理;
  • 旨在管理数据(处理、存储和/或组织数据)、自动化现有计算、增加过程监控,或在既定过程中发生异常时提供与数据管理相关的警报;和/或
  • 用于支持生产或质量管理体系,如第V.A.1节所述。

FDA承认,与用作生产或质量管理体系一部分的软件相关的流程风险是一个范围,从高流程风险到低流程风险。制造商应根据软件的预期用途,确定每个软件特性、功能或操作在该风险范围上的风险等级。FDA主要关注那些高流程风险的软件特性、功能和操作的审查和保证,因为其故障也构成医疗器械风险。就本指南而言,FDA以二元方式呈现流程风险,即“高流程风险”和“非高流程风险”。制造商仍可确定流程风险为“中等”、“中间”甚至“低”,以用于确定保证活动;在这种情况下,本指南中关于“非高流程风险”的部分将适用。如下文第V.A.4节所述,应对“高流程风险”的软件进行与医疗器械风险相称的保证活动,对“非高流程风险”的软件进行与流程风险相称的保证活动。

(3) 生产或质量管理体系软件变更 Production or Quality Management System Software Changes

对于已批准上市前批准申请 Premarket Approval Applications人道主义器械豁免 Humanitarian Device Exemptions的器械,对不影响器械安全或有效性的制造程序或制造方法的变更,如果在向FDA的定期报告(通常称为年度报告)中报告,则不需要提交PMA/HDE增补。PMA/HDE增补也不需要对影响器械安全性和有效性的制造程序或制造方法的修改;这些修改以30天通知的形式提交。对制造程序或制造方法的变更可能包括对用于生产或质量管理体系的软件的变更。对于已批准PMA或HDE的器械,在其生产或质量管理体系软件的增加或变更方面,FDA建议制造商应用上述第V.A.2节概述的原则来确定变更是否可能影响器械的安全性或有效性。通常,如果变更可能导致损害安全性的质量问题,则应提交30天通知。如果变更不会导致损害安全性的质量问题,则该变更可能适合在年度报告中报告。

(4) 确定适当的保证活动 Determining the Appropriate Assurance Activities

一旦制造商确定软件特性、功能或操作是否构成高流程风险(即可能导致损害安全性的质量问题),制造商应识别与医疗器械风险或流程风险相称的保证活动。在质量问题可能损害安全性(高流程风险)的情况下,保证水平应与医疗器械风险相称。在质量问题可能不会损害安全性(非高流程风险)的情况下,保证严谨性水平应与流程风险相称。在任何一种情况下,软件特性、功能或操作的较高风险通常需要更严格的保证工作(即更多的客观证据)。相反,相对较低的风险(即非高流程风险)可能允许较不严格的保证工作(即较少的客观证据)。

制造商可考虑作为保证活动一部分的手动或自动化测试类型包括但不限于以下内容:

  • 非脚本化测试 Unscripted Testing:测试人员的操作未由测试用例中的书面指令规定的动态测试。它包括:
    • 探索性测试 Exploratory Testing:一种基于经验的测试,测试人员积极控制测试设计,并将测试设计、测试执行、测试结果分析和学习同时或交替进行,作为相互支持的活动。
    • 基于错误的测试 Error-Guessing:一种基于经验的测试技术,测试人员利用其技能和直觉来识别可能已引入故障的测试条件。
  • 脚本化测试 Scripted Testing:测试人员的操作由书面指令规定的动态测试。
  • 自动化测试 Automated Testing:使用软件工具执行测试活动并评估结果,而无需人工干预。
  • 基于场景的测试 Scenario-Based Testing:一种基于需求的测试,其中测试用例基于用户场景设计。
  • 基于风险的测试 Risk-Based Testing:一种测试方法,其中测试活动的管理、选择、优先级排序和使用有意识地基于相应类型和水平的已分析风险。

对于高流程风险的软件特性、功能和操作,可能需要更严格的测试方法,例如详细的脚本化测试,以提供更高水平的保证。对于非高流程风险的软件特性、功能和操作,非脚本化测试可能就足够了。然而,对于某些非高流程风险的软件特性、功能和操作,制造商可能会发现脚本化测试更合适。例如,对于具有多个复杂交互或需要严格可重复性以支持其预期用途的软件特性、功能和操作,更稳健的脚本化测试(其中测试用例和证据可能包括可重复性、可追溯性或可审计性的详细要求)可能是合适的。

本指南描述了制造商可考虑用于满足法规要求的基于风险方法。它并非软件测试方法和原则的详尽列表。FDA认识到,除了指南中引用的方法外,还有制造商可以根据情况灵活考虑和使用的软件测试方法和途径。例如,适用于具有网络安全考量的器械的《医疗器械网络安全:质量管理体系考量与上市前提交内容》指南,描述了针对某些上市前提交类型的器械提交网络安全信息的建议,包括用于证明设计和开发活动有效性的网络安全测试建议。制造商在进行本指南所述的保证活动时,可考虑使用该指南中描述的网络安全测试方法,如适用。

通常,FDA建议制造商应用基于风险的测试 Risk-Based Testing原则,其中有意识地基于相应类型和水平的已分析风险来管理、选择、优先级排序和使用测试活动及资源,以确定适当的保证活动。对于高流程风险的软件特性、功能和操作,制造商可能会发现非脚本化测试(如探索性测试)更适合,即使对于高流程风险的特性、功能和操作,也能保证软件按预期执行。相反,制造商可能会发现为非高流程风险的特性、功能和操作开发脚本化测试并实现自动化更为有效和高效。

(5) 保证活动的额外考量 Additional Considerations for Assurance Activities

在决定适当的保证活动时,制造商应考虑在整个质量管理体系中是否存在任何额外的控制或机制,这些控制或机制可以在软件特性、功能或操作发生故障时降低安全性受损和/或质量影响。例如,作为全面保证方法的一部分,制造商可以利用以下方面来减少额外保证活动的工作量:

  • 在软件参与的生产过程中提供控制或完全验证过程的活动和既定流程。此类活动可能包括确保支持生产的数据完整性、后续检查或测试的程序,或由其他组织单位执行的软件质量保证过程。
  • 用于选择和监督软件供应商的既定采购控制 Purchasing Control流程。例如,医疗器械制造商可以将软件开发者已执行的软件开发实践、验证工作和电子信息作为起点,并确定可能需要哪些额外的活动。对于一些较低风险的软件特性、功能和操作,这可能就是制造商所需的全部保证。
  • 在整个生产过程中已纳入的额外过程控制,包括减少网络安全暴露的活动。例如,如果一个过程被充分理解,所有关键工艺参数都受到监控,和/或一个过程的所有输出都经过验证测试,这些控制可以作为额外的机制来检测和纠正软件特性、功能或操作未能按预期执行时可能发生的质量问题。在此示例中,这些控制的存在可以用来减少适合该软件的保证活动的工作量。
  • 尽可能使用支持软件开发和系统生命周期活动的工具(例如,缺陷、异常跟踪、需求可追溯性工具)来保证用于生产或作为质量管理体系一部分的软件。
  • 在用于生产或作为质量管理体系一部分的软件的整个生命周期中,迭代循环和持续进行的测试及结果。

FDA认识到,制造商作为评估的一部分,可能对软件供应商的信息访问有限,并建议制造商在其保证方法中建立并应用对软件供应商的基于风险分析。制造商的评估在决定软件供应商(例如,采购控制)的适当控制水平时,可以考虑各种信息来源。为了评估供应商的能力(无论是基于云、本地部署还是混合模式),制造商可以考虑的活动包括但不限于:

  • 对供应商进行现场审计(如适用)。FDA承认,对于器械制造商来说,审计软件供应商可能不可行或不合适。制造商可以在对软件供应商的控制和能力进行基于风险的分析时,考虑任何替代的信息组合(如适用);
  • 保留记录、归档数据以及生成准确完整的记录副本;
  • 保护静态和传输中的数据(即,维护用户操作和数据更改的安全、计算机生成的、带时间戳的审计跟踪,加密数据);和/或
  • 为用户操作建立和维护访问控制、电子签名控制和授权检查。

制造商应在其程序中建立并维护其对供应商的要求,基于供应商满足规定要求的能力,并定义对产品、服务和供应商实施的控制类型和程度。制造商应在评估决策中考虑有关供应商的适当信息来源。

FDA建议制造商建立基于风险的方法,用于评估软件或服务的供应商、评估活动以及保留适当的客观证据。

例如,如第V.A.1节所述,支持性软件通常风险较低,因此保证工作通常可相应减少。因为“直接”用于生产或质量管理体系的保证活动通常固有地涵盖了支持性软件的性能,通过利用供应商评估和验证记录、软件安装或软件配置,可能足以确定该支持性软件按预期执行,从而使得额外的保证活动(例如,脚本化或非脚本化测试)变得不必要。

制造商负责确定确保软件特性、功能或操作保持已验证状态的适当保证活动。上述保证活动和考量是提供保证的一些可能方式,并非旨在规定性或详尽无遗。制造商可以利用任何最适合与预期用途相关风险的活动或活动组合。

(6) 建立适当的记录 Establishing the Appropriate Record

在建立记录时,制造商应捕获足够的客观证据,以证明软件特性、功能或操作已得到评估并按预期执行。通常,FDA建议记录包括以下内容:

  • 软件特性、功能或操作的预期用途;
  • 软件特性、功能或操作的基于风险分析的结果;以及
  • 所进行的保证活动的文件记录,包括:
    • 基于保证活动进行的测试描述。
    • 测试期间发现的问题(例如,偏差、缺陷和/或故障)。
    • 声明软件适合其预期用途的结论陈述。如果发现问题,FDA建议将发现问题的解决作为结论陈述的一部分。制造商可考虑包括为解决任何问题对预期用途的影响而实施的过程控制,或说明为何发现的问题不会影响预期用途的适当风险论证。
    • 执行测试/评估的人员记录和测试/评估执行的日期。
    • 适当时建立的审查和批准(例如,必要时,具有签署权限的个人的签名和日期)。

保证活动的文件记录无需包含超出必要范围以证明软件特性、功能或操作按预期执行以应对已识别风险的证据。FDA建议记录保留保证活动的足够细节,以作为改进的基线或问题发生时的参考点。

数字技术的进步可能允许制造商利用结果的数字保留、自动化可追溯性、自动化测试以及所执行工作的电子捕获作为客观证据,减少对人工或纸质文件的需求。作为一种最低负担方法,FDA建议结合使用数字记录,例如系统日志、审计跟踪和软件生成及维护的其他数据,而不是纸质文件、屏幕截图或复制软件已数字保留的结果。在使用数字记录时,FDA建议制造商将记录的准确性、可靠性、完整性、可用性和真实性的需求作为已建立的基于风险保证方法的一部分加以考虑。

表1提供了在使用基于风险的测试方法(包括上文第V.A.4节中确定的测试方法)时,实施和开发记录的一些示例方式。制造商可以使用替代方法并提供不同的文件记录,只要其方法满足适用的法律文件记录要求即可。

表1:基于风险的测试方法记录示例

测试方法记录内容示例
非脚本化测试 Unscripted Testing(如探索性测试)测试目标、测试范围、测试人员、测试日期、测试环境、执行的测试活动摘要、发现的问题、结论(包括问题解决或论证)。
脚本化测试 Scripted Testing详细的测试协议、每个测试用例的步骤、预期结果、实际结果(通过/失败)、发现的问题、测试人员、测试日期、审查和批准(如需要)。
自动化测试 Automated Testing自动化测试脚本的标识/版本、测试目标、测试执行日志/报告(包括通过/失败状态)、发现的问题、结论。
测试方法记录内容示例
非脚本化测试 Unscripted Testing(如探索性测试)测试目标、测试范围、测试人员、测试日期、测试环境、执行的测试活动摘要、发现的问题、结论(包括问题解决或论证)。
脚本化测试 Scripted Testing详细的测试协议、每个测试用例的步骤、预期结果、实际结果(通过/失败)、发现的问题、测试人员、测试日期、审查和批准(如需要)。
自动化测试 Automated Testing自动化测试脚本的标识/版本、测试目标、测试执行日志/报告(包括通过/失败状态)、发现的问题、结论。

以下是一个保证活动记录的示例,场景是制造商开发了一个电子表格,其预期用途是收集和绘制存储在受控系统中的不合格数据以用于监控目的。在此示例中,制造商已建立了额外的过程控制和检查,确保不合格产品不被放行。在这种情况下,电子表格未能按预期执行不会导致损害安全性的质量问题,因此该电子表格不构成高流程风险。制造商对电子表格中使用的特定功能进行了快速探索性测试,以确保可以创建、读取、更新和/或删除分析。在探索性测试期间,所有计算字段都正确更新,除了在测试更新时发生的一个偏差。在此场景中,记录将如下记录:

  • 基于风险的分析:在这种情况下,该软件仅用于收集和显示数据以监控不合格,并且制造商已建立了额外的过程控制和检查以确保不合格产品不被放行。因此,电子表格未能按预期执行不应导致损害安全性的质量问题。因此,该软件不构成高流程风险,保证活动应与流程风险相称。
  • 保证活动:进行了探索性测试。测试目标:验证电子表格可以创建、读取、更新和删除分析。测试结果:所有计算字段在更新时正确更新,除了一个偏差(具体描述偏差)。偏差已解决(描述解决方式)。
  • 结论:该电子表格适合其预期用途。
  • 记录:测试人员:张三。测试日期:2026-03-15。

B. 电子记录要求的考量 Considerations for Electronic Records Requirements

制造商对21 CFR第11部分《电子记录;电子签名》对用作生产或质量管理体系一部分的计算机或自动化数据处理系统的适用性表示困惑和关切。制造商在确定是否以及如何应用21 CFR第11部分(下称“第11部分”)时,应参考《第11部分,电子记录;电子签名——范围与应用》指南(下称“电子记录指南”)。

第11部分中的法规规定了FDA认为电子记录、电子签名以及手写签名应用于电子记录是可信、可靠且通常等同于纸质记录和手写签名应用于纸质记录的标准。通常,第11部分适用于根据FDA法规规定的任何记录要求创建、修改、维护、归档、检索或传输的电子形式记录。第11部分也适用于根据《联邦食品、药品和化妆品法》和《公共卫生服务法》要求提交给FDA的电子记录,即使此类记录未在FDA法规中特别指明。在《FD&C法案》、《PHS法案》和FDA法规(第11部分除外)中规定的基本要求被称为“基础规则 Predicate Rules”。此外,如果电子签名及其关联的电子记录符合第11部分的要求,FDA通常将认为电子签名等同于FDA法规要求的完整手写签名、首字母和其他一般签署。

对于用作生产或质量管理体系一部分的计算机软件,适用的基础规则包括第820部分下的规则。第820部分要求的文件——包括但不一定是第820部分要求签名的文件——并以电子形式维护的,通常构成第11部分下的“电子记录”。为确定何时需要根据第820部分保留记录,制造商应考虑,除其他事项外,该记录是否作为证明所需验证的证据是必要的。如果制造商以电子形式维护第820部分要求的文件,则第11部分通常适用。

示例:证明管理企业系统正确可靠地自动化检查生产前材料的文件,通常作为制造商支持已验证状态的必要证据。在此示例中,如果以电子形式存在,第11部分通常适用于该文件。
示例:在应用启动时,一个COTS软件自动保存常规活动日志。然而,在这种情况下,这些活动日志并非制造商支持已验证状态的必要证据。在此示例中,第11部分不适用于活动日志。

如电子记录指南中所述,FDA打算对用于创建、修改、维护或传输电子记录的计算机化系统的验证的特定第11部分要求行使执法自由裁量权。但电子记录指南中描述的执法自由裁量政策(关于用于创建、修改、维护或传输电子记录的计算机化系统的验证)明确不适用于根据ISO 13485的4.1.6、7.5.6和7.6子条款产生的、用于生产或质量管理体系的计算机软件的验证要求。

本指南建议制造商将其计算机软件保证方法建立在合理且有文件记录的风险评估以及对系统可能影响产品质量、患者安全和记录完整性的潜在性的确定之上。制造商可以利用本指南中概述的最低负担、基于风险的方法来提供保证,确保维护受第11部分约束的电子记录的软件按预期执行。

附录A. 示例 Appendix A. Examples

本节中的示例概述了本指南中的原则在各种软件保证情况下的可能应用。

示例1:不合格管理系统

制造商购买并配置了用于自动化其不合格流程的COTS软件,并在实施中应用基于风险的计算机软件保证方法。该软件旨在以电子方式管理不合格流程。

作为保证活动的一部分,制造商对软件供应商进行了全面评估,包括:

  • 评估供应商的软件开发生命周期,
  • 审查供应商的质量管理体系和相关认证,以及
  • 审查供应商的网络安全文件和生命周期管理计划以及相关认证。

根据制造商既定的供应商评估SOP,供应商满足制造商要求的能力被视为可接受该软件的预期用途。制造商根据其既定的采购控制程序保留了评估记录。

制造商在制定基于风险的保证策略时考虑了以下特性、功能或操作:

特性、功能或操作特性、功能或操作的预期用途基于风险的分析保证活动建立适当的记录
不合格发起操作
• 不合格事件导致创建不合格记录。
• 发起任务完成前记录必要数据。
• 在不合格发起任务完成前分配不合格负责人。
这些操作的预期用途是管理不合格的工作流程,并对工作流程进行防错,以促进工作和完整的质量记录。这些操作旨在补充制造商为控制不合格产品而建立的流程。不合格发起操作未能按预期执行可能会延迟发起工作流程,但不会导致损害安全性的质量问题,因为制造商已建立了额外的控制不合格产品的流程,包括隔离受影响产品、通知产线管理和标记受影响产品。因此,制造商确定不合格发起操作不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。此外,制造商通过探索性测试补充这些活动。建立了满足预期用途的高级测试目标,未发生意外故障。制造商记录:
• 预期用途
• 基于风险分析的结果
• 测试操作的摘要描述
• 测试目标及通过/失败情况
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
电子签名功能
• 电子签名执行记录作为审计跟踪的一部分存储。
• 电子签名采用登录名和密码两个不同的身份识别组件。
• 执行电子签名时,以下信息作为执行记录的一部分:
- 签署记录的人员姓名。
- 签名执行的日期和
时间。
- 与签名相关的签署者角色。
电子签名功能的预期用途是在需要签名时捕获和存储电子签名,并使其满足电子签名的要求。电子签名功能未能按预期执行可能会损害或延迟遵守法规要求和既定SOP,但不会导致损害安全性的质量问题。因此制造商确定电子签名功能不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。为确保该功能符合适用要求,制造商使用用户对该功能进行场景测试,以证明该功能满足预期用途。制造商记录:
• 预期用途
• 基于风险分析的结果
• 执行的测试
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
产品控制功能
当为制造商控制范围外的产品发起不合格时,系统提示用户识别是否需要产品纠正或移除。
此功能旨在在已分销产品发生不合格时,触发必要的评估和决策,以确定是否需要产品纠正或移除。此功能未能按预期执行将导致必要的纠正或移除未启动,从而导致损害安全性的质量问题。因此制造商确定此功能构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。制造商确定该功能为高流程风险。制造商执行了与医疗器械风险相称的保证活动,并建立了详细的脚本化测试协议,以演练可能的交互和潜在的功能故障。测试还包括各种场景下的适当可重复性测试,以确保功能可靠工作。制造商记录:
• 预期用途
• 基于风险分析的结果
• 详细的测试协议
• 执行的测试的详细报告
• 每个测试用例的通过/失败结果
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
• 根据制造商既定SOP的签署权限人员的签名和日期
访问控制、用户管理和通知功能
• 创建和管理用户登录功能。
• 根据管理层分配的课程为用户分配培训。
• 系统通知用户培训课程分配、培训完成和未完成培训。
• 系统通知用户管理层未完成培训。
这些功能旨在管理用户访问、用户工作流以及与培训相关的用户通知。这些特性、功能或操作未能按预期执行将影响质量记录的完整性,但不会合理可预见地损害安全性。因此,制造商确定这些特性、功能和操作不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。此外,制造商通过非脚本化测试补充这些活动,应用错误猜测法尝试规避流程流并验证系统的访问控制。制造商记录:
• 预期用途
• 基于风险分析的结果
• 测试的故障模式摘要描述
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
记录保存和报告功能
• 系统捕获用户培训完成的证据。
• 系统生成关于培训课程分配、培训完成和未完成培训的报告。
这些功能旨在捕获和维护用户培训完成的证据和记录,并根据需要为组织生成分析报告以供审查。这些特性、功能或操作未能按预期执行将影响质量记录的完整性,但不会合理可预见地损害安全性。因此,制造商确定这些特性、功能和操作不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。此外,制造商通过非脚本化测试补充这些活动,以“破坏”系统(例如,尝试删除审计跟踪)、验证记录完整性以及报告生成功能。制造商记录:
• 预期用途
• 基于风险分析的结果
• 测试的故障模式摘要描述
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
特性、功能或操作特性、功能或操作的预期用途基于风险的分析保证活动建立适当的记录
不合格发起操作
• 不合格事件导致创建不合格记录。
• 发起任务完成前记录必要数据。
• 在不合格发起任务完成前分配不合格负责人。
这些操作的预期用途是管理不合格的工作流程,并对工作流程进行防错,以促进工作和完整的质量记录。这些操作旨在补充制造商为控制不合格产品而建立的流程。不合格发起操作未能按预期执行可能会延迟发起工作流程,但不会导致损害安全性的质量问题,因为制造商已建立了额外的控制不合格产品的流程,包括隔离受影响产品、通知产线管理和标记受影响产品。因此,制造商确定不合格发起操作不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。此外,制造商通过探索性测试补充这些活动。建立了满足预期用途的高级测试目标,未发生意外故障。制造商记录:
• 预期用途
• 基于风险分析的结果
• 测试操作的摘要描述
• 测试目标及通过/失败情况
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
电子签名功能
• 电子签名执行记录作为审计跟踪的一部分存储。
• 电子签名采用登录名和密码两个不同的身份识别组件。
• 执行电子签名时,以下信息作为执行记录的一部分:
- 签署记录的人员姓名。
- 签名执行的日期和
时间。
- 与签名相关的签署者角色。
电子签名功能的预期用途是在需要签名时捕获和存储电子签名,并使其满足电子签名的要求。电子签名功能未能按预期执行可能会损害或延迟遵守法规要求和既定SOP,但不会导致损害安全性的质量问题。因此制造商确定电子签名功能不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。为确保该功能符合适用要求,制造商使用用户对该功能进行场景测试,以证明该功能满足预期用途。制造商记录:
• 预期用途
• 基于风险分析的结果
• 执行的测试
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
产品控制功能
当为制造商控制范围外的产品发起不合格时,系统提示用户识别是否需要产品纠正或移除。
此功能旨在在已分销产品发生不合格时,触发必要的评估和决策,以确定是否需要产品纠正或移除。此功能未能按预期执行将导致必要的纠正或移除未启动,从而导致损害安全性的质量问题。因此制造商确定此功能构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。制造商确定该功能为高流程风险。制造商执行了与医疗器械风险相称的保证活动,并建立了详细的脚本化测试协议,以演练可能的交互和潜在的功能故障。测试还包括各种场景下的适当可重复性测试,以确保功能可靠工作。制造商记录:
• 预期用途
• 基于风险分析的结果
• 详细的测试协议
• 执行的测试的详细报告
• 每个测试用例的通过/失败结果
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
• 根据制造商既定SOP的签署权限人员的签名和日期
访问控制、用户管理和通知功能
• 创建和管理用户登录功能。
• 根据管理层分配的课程为用户分配培训。
• 系统通知用户培训课程分配、培训完成和未完成培训。
• 系统通知用户管理层未完成培训。
这些功能旨在管理用户访问、用户工作流以及与培训相关的用户通知。这些特性、功能或操作未能按预期执行将影响质量记录的完整性,但不会合理可预见地损害安全性。因此,制造商确定这些特性、功能和操作不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。此外,制造商通过非脚本化测试补充这些活动,应用错误猜测法尝试规避流程流并验证系统的访问控制。制造商记录:
• 预期用途
• 基于风险分析的结果
• 测试的故障模式摘要描述
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
记录保存和报告功能
• 系统捕获用户培训完成的证据。
• 系统生成关于培训课程分配、培训完成和未完成培训的报告。
这些功能旨在捕获和维护用户培训完成的证据和记录,并根据需要为组织生成分析报告以供审查。这些特性、功能或操作未能按预期执行将影响质量记录的完整性,但不会合理可预见地损害安全性。因此,制造商确定这些特性、功能和操作不构成高流程风险。制造商已执行了系统能力评估、供应商评估和安装活动。此外,制造商通过非脚本化测试补充这些活动,以“破坏”系统(例如,尝试删除审计跟踪)、验证记录完整性以及报告生成功能。制造商记录:
• 预期用途
• 基于风险分析的结果
• 测试的故障模式摘要描述
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期

示例3:商业智能应用

医疗器械制造商决定实施一个商业商业智能解决方案,用于数据挖掘、分析和报告。该软件旨在更好地了解产品和过程随时间推移的性能,以识别改进机会。

作为保证活动的一部分,制造商对软件供应商进行了全面评估,包括:

  • 评估供应商的软件开发生命周期,
  • 审查供应商的质量管理体系和相关认证,以及
  • 审查供应商的网络安全文件和生命周期管理计划以及相关认证。

根据制造商既定的供应商评估SOP,供应商满足制造商要求的能力被视为可接受该软件的预期用途。制造商根据其既定的采购控制程序保留了评估记录。

除了供应商评估,制造商在制定基于风险的保证策略时还考虑了以下特性、功能或操作:

特性、功能或操作特性、功能或操作的预期用途基于风险的分析保证活动建立适当的记录
连接功能
• 软件允许连接到组织内各种数据库和外部数据源。
• 软件保持来自原始源的数据完整性,并能够确定数据完整性、损坏或数据传输是否存在问题。
这些功能旨在确保系统具有安全可靠的能力,以连接到适当的数据源,确保数据完整性,防止数据损坏,并适当地修改和存储数据。这些功能未能按预期执行将导致不准确或不一致的趋势分析。这将导致未能识别潜在的质量趋势、问题或改进机会,在某些情况下,可能导致损害安全性的质量问题。因此,制造商确定这些功能构成高流程风险,需要更严格的保证活动,与相关的医疗器械风险相称。制造商确定了与医疗器械风险相称的保证活动,并已执行了系统能力评估、供应商评估和安装活动。此外,制造商建立了详细的脚本化测试协议,演练可能的交互和功能可能失败的方式。测试还包括各种场景下的适当可重复性测试,以确保功能可靠工作。制造商记录:
• 预期用途
• 基于风险分析的结果
• 详细的测试协议
• 执行的测试的详细报告
• 每个测试用例的通过/失败结果
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
• 根据制造商既定SOP的签署权限人员的签名和日期
用户帮助功能
软件为用户提供应用程序的帮助菜单。
此功能旨在促进用户与系统的交互,并就所有系统功能的使用提供帮助。此功能未能按预期执行不太可能导致损害安全性的质量问题。因此,制造商确定此功能不构成高流程风险。除了制造商在评估系统能力、供应商评估和安装活动中已执行的工作外,此功能不需要任何额外的保证工作。制造商记录:
• 预期用途
• 基于风险分析的结果
• 执行评估的人员记录和评估日期
• 声明可接受性的结论,包括问题解决
报告功能
• 软件能够创建和执行查询,并连接来自不同源的数据以进行数据挖掘。
• 软件允许进行各种统计分析和数据汇总。
• 软件可以根据数据创建图表。
• 软件提供生成分析报告的能力。
这些功能旨在允许用户查询数据源,连接来自不同源的数据,进行分析,并生成可视化和摘要。这些功能旨在收集和记录用于监控和审查目的的数据,这些数据对生产或过程性能没有直接影响。在此示例中,该软件不旨在为质量决策提供信息。这些功能未能按预期执行可能导致质量问题(例如,不完整或不充分的报告),但在此示例中,不会合理可预见地导致安全性受损,因为这些功能旨在收集和记录用于监控和审查目的的数据,这些数据对生产或过程性能没有直接影响。因此,制造商确定这些功能不构成高流程风险。报告软件的供应商已验证了软件创建和执行查询、连接来自不同源的数据以进行数据挖掘、执行统计分析和数据汇总、创建图表和生成报告的能力。除此之外,制造商已评估了系统能力并执行了供应商评估和安装活动。因此,制造商确定该软件的这些报告功能不需要超出这些活动的任何额外保证工作。制造商记录:
• 预期用途
• 基于风险分析
• 执行评估的人员记录和评估日期
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制
特性、功能或操作特性、功能或操作的预期用途基于风险的分析保证活动建立适当的记录
连接功能
• 软件允许连接到组织内各种数据库和外部数据源。
• 软件保持来自原始源的数据完整性,并能够确定数据完整性、损坏或数据传输是否存在问题。
这些功能旨在确保系统具有安全可靠的能力,以连接到适当的数据源,确保数据完整性,防止数据损坏,并适当地修改和存储数据。这些功能未能按预期执行将导致不准确或不一致的趋势分析。这将导致未能识别潜在的质量趋势、问题或改进机会,在某些情况下,可能导致损害安全性的质量问题。因此,制造商确定这些功能构成高流程风险,需要更严格的保证活动,与相关的医疗器械风险相称。制造商确定了与医疗器械风险相称的保证活动,并已执行了系统能力评估、供应商评估和安装活动。此外,制造商建立了详细的脚本化测试协议,演练可能的交互和功能可能失败的方式。测试还包括各种场景下的适当可重复性测试,以确保功能可靠工作。制造商记录:
• 预期用途
• 基于风险分析的结果
• 详细的测试协议
• 执行的测试的详细报告
• 每个测试用例的通过/失败结果
• 发现的任何问题
• 声明可接受性的结论,包括问题解决
• 执行测试的人员记录和测试日期
• 根据制造商既定SOP的签署权限人员的签名和日期
用户帮助功能
软件为用户提供应用程序的帮助菜单。
此功能旨在促进用户与系统的交互,并就所有系统功能的使用提供帮助。此功能未能按预期执行不太可能导致损害安全性的质量问题。因此,制造商确定此功能不构成高流程风险。除了制造商在评估系统能力、供应商评估和安装活动中已执行的工作外,此功能不需要任何额外的保证工作。制造商记录:
• 预期用途
• 基于风险分析的结果
• 执行评估的人员记录和评估日期
• 声明可接受性的结论,包括问题解决
报告功能
• 软件能够创建和执行查询,并连接来自不同源的数据以进行数据挖掘。
• 软件允许进行各种统计分析和数据汇总。
• 软件可以根据数据创建图表。
• 软件提供生成分析报告的能力。
这些功能旨在允许用户查询数据源,连接来自不同源的数据,进行分析,并生成可视化和摘要。这些功能旨在收集和记录用于监控和审查目的的数据,这些数据对生产或过程性能没有直接影响。在此示例中,该软件不旨在为质量决策提供信息。这些功能未能按预期执行可能导致质量问题(例如,不完整或不充分的报告),但在此示例中,不会合理可预见地导致安全性受损,因为这些功能旨在收集和记录用于监控和审查目的的数据,这些数据对生产或过程性能没有直接影响。因此,制造商确定这些功能不构成高流程风险。报告软件的供应商已验证了软件创建和执行查询、连接来自不同源的数据以进行数据挖掘、执行统计分析和数据汇总、创建图表和生成报告的能力。除此之外,制造商已评估了系统能力并执行了供应商评估和安装活动。因此,制造商确定该软件的这些报告功能不需要超出这些活动的任何额外保证工作。制造商记录:
• 预期用途
• 基于风险分析
• 执行评估的人员记录和评估日期
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制

示例4:软件即服务产品生命周期管理系统

制造商正在实施一个SaaS产品生命周期管理系统,用于管理产品开发项目。该软件的预期用途是捕获项目需求、制定项目计划、监控/跟踪项目执行,并在项目结束时维护相关记录、签名和交付物。该系统的此预期用途不直接影响患者安全或产品质量,但确实维护了一个需要数据完整性的质量记录。制造商不需要对SaaS产品的“开箱即用”功能进行任何定制,只需要执行SaaS产品的基本标准配置(例如,用户角色、账户)。

作为保证活动的一部分,制造商对SaaS供应商进行了全面评估,包括:

  • 评估供应商的软件开发生命周期,
  • 审查供应商的质量管理体系和相关认证,
  • 审查供应商的网络安全文件和生命周期管理计划以及相关认证,以及
  • 审查供应商的基础设施支持,包括可用性和可靠性。

根据制造商既定的供应商评估SOP,供应商满足制造商要求的能力被视为可接受该软件的预期用途。制造商根据其既定的采购控制程序保留了评估记录。制造商还与SaaS供应商建立了服务协议,其中包括安全性、数据完整性、隐私、可用性、变更管理和业务连续性要求。

特性、功能或操作特性、功能或操作的预期用途基于风险的分析保证活动建立适当的记录
项目启动和规划功能
• 软件允许创建新项目。
• 软件能够根据制造商管理层的分配,为项目分配团队成员和角色。
• 软件接收并更新项目需求和规范。
• 软件能够制定项目计划,包括任务、依赖关系、里程碑和交付物。
• 软件监控项目记录维护的数据的变更。
这些功能旨在自动化创建项目数据记录,维护用户角色,为团队成员分配关键项目数据的责任,接收与项目相关的关键数据,维护项目数据的完整性和关联性,并监控项目信息的变更或更新。这些功能未能按预期执行将影响质量记录的完整性,但不会合理可预见地损害安全性。因此,制造商确定这些功能不构成高流程风险。制造商已执行了系统能力评估、供应商评估,并与SaaS供应商建立了服务协议。基于基于风险的分析,制造商使用探索性非脚本化测试进行配置验证和用户验收测试。制造商记录:
• 预期用途
• 基于风险分析
• 测试目标的摘要描述、执行的测试
• 发现的任何问题
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制
• 执行评估的人员记录和评估日期
电子签名功能
• 电子签名执行记录作为审计跟踪的一部分存储。
• 电子签名采用登录名和密码两个不同的身份识别组件。
• 执行电子签名时,以下信息作为执行记录的一部分:
- 签署记录的人员姓名。
- 签名执行的日期和时间。
- 与签名相关的含义。
电子签名功能的预期用途是在需要签名时捕获和存储电子签名,并使其满足电子签名的要求。电子签名功能未能按预期执行可能会损害或延迟遵守法规要求和既定SOP,但不会导致损害安全性的质量问题。因此制造商确定电子签名功能不构成高流程风险。制造商已执行了系统能力评估、供应商评估和配置活动。为确保该功能符合适用要求,制造商使用用户对该功能进行场景测试,以证明该功能满足预期用途。制造商记录:
• 预期用途
• 基于风险分析
• 执行的测试
• 发现的任何问题
• 执行测试的人员记录和测试日期
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制
访问控制和可追溯性功能
• 该功能控制用户角色、相关权限和系统访问。
• 该功能监控并维护对系统中维护的最终数据记录的访问和修改记录。
• 该功能生成带时间戳的报告,记录对制造商审计程序中确定的、系统中维护的最终数据记录的系统访问、授权、变更及相关用户。
这些功能旨在提供适当的访问控制,建立用户角色,并维护个人用户账户。这些功能还旨在监控、维护和报告对培训记录或电子签名事件的访问或更改的带时间戳记录,以确保制造商确定要维护的最终记录的真实性、可靠性和完整性。这些功能未能按预期执行对整体预期用途和系统操作有重大影响,因此可能导致质量管理体系完整性和合规性问题。由于这些功能仅旨在确保质量管理体系数据记录的完整性,制造商确定未能按预期执行不会合理可预见地导致安全性受损,因此不构成高流程风险。制造商已执行了系统能力评估、供应商评估,并与SaaS供应商建立了服务协议。基于基于风险的分析,制造商进行配置验证,并开发了一个自动化测试脚本,以快速演练访问控制,同时支持未来变更的验证。此外,制造商使用探索性非脚本化测试对报告能力进行用户验收测试。制造商记录:
• 预期用途
• 基于风险分析
• 测试脚本中自动化测试用例的摘要(或测试脚本的电子版本)以及测试目标的摘要描述、执行的测试
• 发现的任何问题和自动化测试脚本的结果
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制
• 执行测试的人员记录和测试日期
特性、功能或操作特性、功能或操作的预期用途基于风险的分析保证活动建立适当的记录
项目启动和规划功能
• 软件允许创建新项目。
• 软件能够根据制造商管理层的分配,为项目分配团队成员和角色。
• 软件接收并更新项目需求和规范。
• 软件能够制定项目计划,包括任务、依赖关系、里程碑和交付物。
• 软件监控项目记录维护的数据的变更。
这些功能旨在自动化创建项目数据记录,维护用户角色,为团队成员分配关键项目数据的责任,接收与项目相关的关键数据,维护项目数据的完整性和关联性,并监控项目信息的变更或更新。这些功能未能按预期执行将影响质量记录的完整性,但不会合理可预见地损害安全性。因此,制造商确定这些功能不构成高流程风险。制造商已执行了系统能力评估、供应商评估,并与SaaS供应商建立了服务协议。基于基于风险的分析,制造商使用探索性非脚本化测试进行配置验证和用户验收测试。制造商记录:
• 预期用途
• 基于风险分析
• 测试目标的摘要描述、执行的测试
• 发现的任何问题
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制
• 执行评估的人员记录和评估日期
电子签名功能
• 电子签名执行记录作为审计跟踪的一部分存储。
• 电子签名采用登录名和密码两个不同的身份识别组件。
• 执行电子签名时,以下信息作为执行记录的一部分:
- 签署记录的人员姓名。
- 签名执行的日期和时间。
- 与签名相关的含义。
电子签名功能的预期用途是在需要签名时捕获和存储电子签名,并使其满足电子签名的要求。电子签名功能未能按预期执行可能会损害或延迟遵守法规要求和既定SOP,但不会导致损害安全性的质量问题。因此制造商确定电子签名功能不构成高流程风险。制造商已执行了系统能力评估、供应商评估和配置活动。为确保该功能符合适用要求,制造商使用用户对该功能进行场景测试,以证明该功能满足预期用途。制造商记录:
• 预期用途
• 基于风险分析
• 执行的测试
• 发现的任何问题
• 执行测试的人员记录和测试日期
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制
访问控制和可追溯性功能
• 该功能控制用户角色、相关权限和系统访问。
• 该功能监控并维护对系统中维护的最终数据记录的访问和修改记录。
• 该功能生成带时间戳的报告,记录对制造商审计程序中确定的、系统中维护的最终数据记录的系统访问、授权、变更及相关用户。
这些功能旨在提供适当的访问控制,建立用户角色,并维护个人用户账户。这些功能还旨在监控、维护和报告对培训记录或电子签名事件的访问或更改的带时间戳记录,以确保制造商确定要维护的最终记录的真实性、可靠性和完整性。这些功能未能按预期执行对整体预期用途和系统操作有重大影响,因此可能导致质量管理体系完整性和合规性问题。由于这些功能仅旨在确保质量管理体系数据记录的完整性,制造商确定未能按预期执行不会合理可预见地导致安全性受损,因此不构成高流程风险。制造商已执行了系统能力评估、供应商评估,并与SaaS供应商建立了服务协议。基于基于风险的分析,制造商进行配置验证,并开发了一个自动化测试脚本,以快速演练访问控制,同时支持未来变更的验证。此外,制造商使用探索性非脚本化测试对报告能力进行用户验收测试。制造商记录:
• 预期用途
• 基于风险分析
• 测试脚本中自动化测试用例的摘要(或测试脚本的电子版本)以及测试目标的摘要描述、执行的测试
• 发现的任何问题和自动化测试脚本的结果
• 声明可接受性的结论,包括问题解决、论证和/或为解决问题影响而实施的过程控制
• 执行测试的人员记录和测试日期

结语

FDA《生产与质量管理体系软件的计算机软件保证》指南的发布,标志着对医疗器械行业软件验证实践的现代化指引。其核心在于推动从传统、可能过于繁琐的验证方式,向灵活、高效且基于风险的“保证”模式转变。通过聚焦软件的预期用途 Intended Use、科学评估流程风险 Process Risk医疗器械风险 Medical Device Risk,并允许采用多样化的测试方法(从严格的脚本化测试到灵活的探索性测试),该框架旨在帮助企业在确保患者安全和产品质量的前提下,更敏捷地采用和创新自动化与数字化技术。制造商应深入理解其软件在生产与质量管理中的具体作用,据此制定并记录基于风险的保证策略,从而在合规与创新之间找到最佳平衡点。


免责声明:本文是对美国FDA指南文件《Computer Software Assurance for Production and Quality Management System Software》的专业解读与编译,旨在传递信息与促进理解。本文内容不应被视为法律或监管建议,也不构成任何官方文件的替代。对于文中的任何解读或表述,读者在应用于具体实践前,应始终以FDA发布的原始英文指南文件及其引用的相关法律法规为准,并建议咨询专业的法规事务或质量保证人员。编译者不对依赖本文内容所采取的任何行动或决策承担法律责任。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-11 06:22:21 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/604076.html
  2. 运行时间 : 0.222170s [ 吞吐率:4.50req/s ] 内存消耗:4,993.99kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=550b1d1c9c5dc3d9e20ad6fabc32f37b
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001225s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.002094s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000829s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000710s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001552s ]
  6. SELECT * FROM `set` [ RunTime:0.000588s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001676s ]
  8. SELECT * FROM `article` WHERE `id` = 604076 LIMIT 1 [ RunTime:0.001547s ]
  9. UPDATE `article` SET `lasttime` = 1778451741 WHERE `id` = 604076 [ RunTime:0.013172s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000741s ]
  11. SELECT * FROM `article` WHERE `id` < 604076 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001319s ]
  12. SELECT * FROM `article` WHERE `id` > 604076 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001235s ]
  13. SELECT * FROM `article` WHERE `id` < 604076 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002069s ]
  14. SELECT * FROM `article` WHERE `id` < 604076 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002557s ]
  15. SELECT * FROM `article` WHERE `id` < 604076 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.007170s ]
0.223975s