1. 软件生命周期过程概述
     
    软件生命周期涵盖了从[敏感词]个产品创意到卸载的所有活动。软件生命周期过程包括但不限于:
    -软件开发
    -软件安装和运行
    -软件维护
    -问题解决
    -解除安装/退役
     
    2. 监管要求
     
    由于软件测试不能证明软件的正确性,所以必须从一开始就通过遵循软件生命周期过程来避免软件错误(bug、可用性问题)。所有与软件相关的法规,如IEC 62304和FDA的软件验证指导文件,都要求医疗器械制造商遵循这些生命周期过程。然而,他们并不强制执行特定的生命周期模型,如瀑布模型、V型模型或敏捷开发流程。
     
    a) IEC 62304
    生命周期过程
    IEC 62304要求实施以下流程:
    -软件开发
    -软件维护
    -问题解决
    -风险管理
    -配置管理
     
    开发过程
    取决于软件安全等级,软件开发过程必须包括以下活动:
    -创建一个软件开发计划
    -规范软件需求
    -开发软件结构和详细设计
    -代码的实施,例如,遵循编码准则
    -验证代码,例如通过代码审查和软件测试,如单元测试、集成测试和系统测试。
    -软件的发布
     
    b) 医疗器械法规(MDR)
    医疗器械法规(MDR)要求软件生命周期过程:“对于包含软件的器械或本身就是器械的软件,软件的开发和制造应符合当前技术水平,并考虑到开发生命周期、风险管理(包括信息安全)、验证和确认的原则。”制造商通过遵循IEC 62304证明符合这些要求。
     
    c) 其他法规
    所有相关的法规和标准都要求采取面向过程的方法:
    -ISO 13485要求采用以过程为导向的方法,而不仅仅是在开发过程中。
    -ISO 14971描述了一个风险管理过程。
    -IEC 62366要求,使用“以可用性为导向的开发过程”的医疗器械的可用性得到遵循。
    -IEC 60601-1规定,可编程序的电子医疗系统(PEMS)的制造商必须遵循一个生命周期过程。
    不幸的是,IEC 60601的PEMS寿命模型相当具有误导性和不一致性。
     
    开发过程和过程模型
    a) 过程的定义是什么
    开发过程与其他过程一样描述:
    -谁(哪个角色,如:需求工程师、程序员、软件架构师、测试人员等)?
    -转移:哪些输入到哪些输出(文件、产品、决策、组件)?
    -以什么样的顺序(如平行、顺序)?
    -如何(即,使用哪些方法、程序和工具)?
     
    b) 典型的生命周期活动
    整个软件开发过程中的典型活动包括:
    -定义预期用途并提出商业案例;
    -确定利益相关者的要求;
    -指定系统和软件的需求,并审查这个“SRS”;
    -设计一个技术解决方案,例如,创建一个系统或软件架构,包括审查;
    -遵循[敏感词]实践(如编码指南),实施、开发、编程系统和软件组件;
    -检验组件,例如,使用单元测试或代码审查;
    -验证组件的集成,例如:集成测试;
    -检验整个系统和软件,例如软件测试;
    -验证整个系统和软件,例如:总结性的可用性评估或临床评估。
    为了证明这些活动确实已经执行,制造商必须计划、记录和验证他们的工作。
     
    c) 方法和程序
    对于这些活动中的每一项,制造商都必须定义一套方法或程序(一套方法)。
    
        
            
            
        
        
            
                | 活动 | 方法(举例) | 
            
                | 确定利益相关者的要求 | 语境方法(如ISO 9241中所述) | 
            
                | 指定软件要求 | 使用模拟屏幕进行原型开发 | 
            
                | 建立软件架构模型 | UML建模,垂直原型的实施 | 
            
                | 软件测试 | 黑盒测试方法,例如使用等价类 | 
        
    
 
     
    d) 过程模型
    制造商需要确定这些活动的顺序,并确定这些活动是以线性方式,还是以迭代和渐进的方式进行。因此,大多数医疗器械制造商遵循:
    -瀑布式
    -V型模式
    -敏捷的流程模式
     
    3、软件开发过程与软件开发计划
     
    制造商可以为他们的每个产品自由地定义生命周期过程。例如,他们可以选择一个敏捷的开发过程来开发一个产品,而为另一个产品定义一个瀑布模型。
     
    a) 开发计划的内容
    在软件开发计划中,分别记录了产品和项目的具体决定。在这个计划中,他们可以确定:
    -适用于特定项目的流程
    -角色和对这些角色的具体人员分配
    -方法和程序
    -工具
    -阶段性目标
     
    b) 内容的分布
    如果开发团队必须始终遵循相同的要求,建议将这些要求尽可能多地转移到开发过程描述(SOP)中,并保持开发计划的简洁明了。然而,如果开发团队,例如软件服务供应商,有异质的项目,那么SOP应该是通用的,需要在具体项目的开发计划中描述具体的要求。然而,这意味着没有V型模型---即使它看起来像。这些活动也可以通过互动和渐进的方式进行。注意,你必须完成左边的所有活动,并进行验证。