软件验证与确认
软件验证(Verification)和确认(Validation),简称为V&V 或V2。验证和确认的区别在于:验证关心的是确保软件模块或功能内在的正确性;确认则表明要与规定的需求进行比较是否满足要求,它所关心的是该软件产品的价值。
软件验证与确认是贯穿于软件开发过程中十分细致的软件检验活动。每个开发阶段的结果可认为是下一开发阶段的一个规格文件,但要进入下一阶段之前必须对该结果作出确认。验证和确认的主要方法有:代码走查、审查、测试和正确性证明等。代码走查就是对软件文档进行书面检查。它通过人工模拟执行源程序的过程,检查软件设计的正确性。人工模拟也像计算机执行那样,可以仔细推敲、校验和核实每一步的执行结果,进而确定其执行逻辑、控制模型、算法和使用参数与数据的正确性。
审查是软件验证和确认中的一个主要方法,可弥补其他方法的一些不足之处。它是一种用形式的、有效的和经济的方法查找设计和编程中的错误。审查的主要目的是1)找出软件中的缺陷;2)核实是否符合需求;3)早期生产评价;4)过程评价等。由第三方进行软件评测工作是十分重要的,其评测工具软件对软件进行静态的和动态的评测,能发现软件设计的缺陷、瓶颈和多余物等。值得指出的是,用于软件测试的各种方法、技术、工具和措施等,对提高软件的可靠性都是必要的,但不是充分的。这就表明,其中任何一个手段,均不能绝对保障软件的可靠性,但只要能发现软件中任何一个微小的错误,就起到了它的作用。
软件评审
从某种意义上说,软件中的多数错误是人为的。软件评审是软件生产过程中过滤软件错误的一个“滤波器”。软件评审涉及评审的组织机构、管理、准则、类别、内容、文件和要求等。
一般要求在软件研制阶段的里程碑点进行软件评审。评审的主要类别有:软件定义评审、软件需求评审、概要设计评审、详细设计评审、软件实现评审和软件验收评审等。
评审的原则:
● 某阶段未通过阶段评审不得进入下一个软件研制阶段;
● 评审时对事不对人,评审的是产品,而不是评审生产者;
● 评审就要挑刺,找问题、缺陷和隐患;
● 评审组的人员面越广越好;
● 评审组不作无休止的争论和辩驳,将争论点记录下来,供以后甄别;
● 评审只是提出问题,没有解决问题的任务;
● 使用“评审检查单”以提高评审的效果;
评审的作用:
● 技术把关,避免软件人员的想当然;
● 概念沟通,吸收用户和总体人员参加,审查软件人员理解的正确性;
● 集思广益,吸收有关的分系统人员参加,从不同侧面确认软件的协调性;
● 总结汇报,使实时控制系统总指挥、总设计师了解软件生产的进度、问题和要求,作出新的部署。
评审很容易走过场、走形式。评审效果的好坏,与当事人(软件人员)密切相关。基于有问题才需要评审,不能轻信自己的软件,导致对评审产生对立情绪。对评审出的问题进行整理、分类和汇总,不忽视任何一个细小的疑点。
软件管理
科学的管理能够出可靠性、出效果、出效益。软件的管理工作不完善、不严格,是引起意外事故的原因之一。软件管理主要包括软件项目管理、软件配置管理、软件可靠性管理和软件质量管理等方面。
软件项目管理的内容包括软件开发过程管理、软件可靠性度量、风险管理(包括风险分析和估计)、确定项目任务、建立可操作的工程计划等。软件项目管理是软件管理工作的第一层。需要强调的是,它不是一个阶段,也不仅仅是个步骤,而是贯穿于整个软件开发工程中的一个层次。从其管理内容来看,这是一种十分重要的管理工作。其管理的好坏,直接影响产品的质量。这项管理尚处于起步状态,是个薄弱环节。软件配置管理是软件人员和管理人员确定、组织和开展软件修改的手段,目的是在软件修改过程中设法少犯差错来最大限度地提高软件产品的生产率。软件配置管理涉及软件配置项和基线的确定。
软件配置项可理解为在软件生产的某个阶段应具备的软件文档和保存软件的介质等。软件基线(基准)又称里程碑。软件配置项经软件验证、确认、评审和认定后,形成了软件基线,也就成了该阶段的一个基准。下一个阶段只能在这个基准上进行开发活动。