计划名 CADCSC软件质量保证计划
项目名 中国控制系统CAD工程化软件系统
项目委托单位
代 表 签 名 年 月 日
项目承办单位
代 表 签 名 年 月 日
1 引言
1.1 目的
本计划的目的在于对所开发的CADCSC软件规定各种必要的质量保证措施,以保证所交付的CADCSC软件能够满足项目委托书或合同中规定的各项需求,能够满足本项目总体组制定的且经领导小组批准的该软件系统需求规格说明书中规定的各项具体需求。
软件开发单位在开发CADCSC软件系统所属的各个子系统(其中包括为本项目研制或选用的各种支持软件)时,都应该执行本计划中的有关规定,但可根据各自的情况对本计划作适当的剪裁,以满足特定的质量保证要求,剪裁后的计划必须经总体组批准。
1.2 定义
本计划用到的一些术语的定义按GB/T 11457和GB/T 12505。
1.3 参考资料
GB/T 11457 软件工程术语
GB 8566 计算机软件开发规范
GB 8567 计算机软件产品开发文件编制指南
GB/T 12504 计算机软件质量保证计划规范
GB/T 12505 计算机软件配置管理计划规范
CADCSC 软件配置管理计划
2 管理
2.1 机构
在本软件系统整个开发期间,必须成立软件质量保证小组负责质量保证工作。软件质量保证小组属总体组领导,由总体组代表、项目的软件工程小组代表、项目的专职质量保证人员、项目的专职配置管理人员以及各个子系统软件质量保证人员等方面的人员组成,由项目的软件工程小组代表任组长。各子系统的软件质量保证人员在业务上受软件质量保证小组领导,在行政上受各子系统负责人领导。
软件质量保证小组和软件质量保证人员必须检查和督促本计划的实施。各子系统的软件质量保证人员有权直接向软件质量保证小组报告子项目的软件质量状况。各子系统的软件质量保证人员应该根据对子项目的具体要求,制订必要的规程和规定,以确保完全遵守本计划的所有要求。
2.2 任务
软件质量保证工作涉及软件生存周期各阶段的活动,应该贯彻到日常的软件开发活动中,而且应该特别注意软件质量的早期评审工作。因此,对新开发的或正在开发的各子系统,要按照GB 8566与本计划的各项规定进行各项评审工作。软件质量保证小组要派成员参加所有的评审与检查活动。评审与检查的目的是为了确保在软件开发工作的各个阶段和各个方面都认真采取各项措施来保证与提高软件的质量。在CADCSC软件开发过程中,经总体组研究决定,要进行如下几类评审与检查工作:
a. 阶段评审:在软件开发过程中,要定期地或阶段性地对某一开发阶段或某几个开发阶段的阶段产品进行评审。根据总体组研究决定,在CADCSC软件及其所属各子系统的开发过程中,应该进行以下三次评审:第一次评审软件需求、概要设计、验证与确认方法;第二次评审详细设计、功能测试与演示,并对第一次评审结果复核;第三次是功能检查、物理检查和综合检查。关于这些评审工作的详细内容见第5章。
阶段评审工作要组织专门的评审小组,原则上由项目总体小组成员或特邀专家担任评审组长,评审小组成员应该包括项目委托单位或用户的代表、质量保证人员、软件开发单位和上级主管部门的代表,其他参加人员视评审内容而定。
每一次评审工作都应填写评审总结报告(RSR)、评审问题记录(RPL)、评审成员签字表(RMT)与软件问题报告单(SPR)等四张表格。这四张阶段评审报表的具体格式应与附录C中的规定相一致。
b. 日常检查:在CADCSC软件的工程化生产过程中,各子系统应该填写项目进展报表,即软件进展报表表头、软件阶段进度表、软件阶段产品完成情况表、软件开发费用表等四张表格。项目总体组杨以通过项目进展季报表发现有关软件质量的问题。项目进展季报表的具体格式应与附录B中的规定相一致。
c. 软件验收:必须组织专门的验收小组对CADCSC软件系统及其所属各个子系统进行验收。验收工作应按照经项目委托单位“国家自然科学基金委员会信息科学部”与CADCSC总体组双方都认可的验收规程正式履行验收手续。验收内容应包括文档验收、程序验收、演示、验收测试与测试结果评审等几项工作。具体的验收规程另行制订。
2.3 职责
在CADCSC项目的软件质量保证小组中,其各方面人员的职责如下:
a. 组长全面负责有关软件质量保证的各项工作;
b. 总体组代表负责有关阶段评审、项目进展报表检查以及软件验收准备等三方面工作中的质量保证工作;
c. 项目的专职配置管理人员负责有关软件配置变动、软件媒体控制以及对供货单位的控制等三方面的质量保证活动;
d. 各子系统的软件质量保证人员负责测试复查和文档的规范化检查工作;
e. 用户代表负责反映用户的质量要求,并协助检查各类人员对软件质量保证计划的执行情况;
f. 项目的专职质量保证人员协助组长开展各项软件质量保证活动,负责审查所采用的质量保证工具、技术和方法,并负责汇总、维护和保存有关软件质量保证活动的各项记录。
3 文档
本章给出了在CADCSC软件开发过程各阶段需要编制的文档名称及其要求,并且规定了评审文质量的通用的度量准则。
3.1. 基本文档
为了确保软件的实现满足项目委托单位“国家自然科学基金委员会信息科学部”认可的需求规格说明书中规定的各项需求,CADCSC软件各开发单位至少应该编写以下八个方面内容的文档:
a. 软件需求规格说明书(SRS);
b. 软件设计说明书(SDD),对一些规模较大或复杂性较高的项目,应该把本文档分成概要设计说明书(PDD)与详细设计说明书(DDD)两个文档;
c. 软件测试计划(STP);
d. 软件测试报告(STR);
e. 用户手册(SUM);
f. 源程序清单(SCL);
g. 项目实施计划(PIP);
h. 项目开发总结(PDS)。
3.2 其他文档
除了基本文档之外,对于尚在开发中的软件,还应该包括以下四个方面的文档:
a. 软件质量保证计划(SQAP);
b. 软件配置管理计划(SCMP);
c. 项目进展报表(PPR);
d. 阶段评审报表(PRR)。
注:前面两个文档由项目软件工程小组制订,属于管理文档,各个子系统的项目承办单位与软件开发单位都应充分考虑执行计划中规定的条款。后面两类文档属于工作文档,就是本计划的2.2中提到的四张阶段评审表与四张项目进展季报表,各个子系统的项目承办单位或软件开发单位应该按照规定要求认真填写有关内容。
3.3 文档质量的度量准则
文档是软件的重要组成部分,是软件生存周期各个不同阶段的产品描述。验证和确认就是要检查各阶段文档的合适性。评审文档质量的度量准则有以下六条:
a. 完备性:所有承担软件开发任务的单位,都必须按照GB 8567的规定编制相应的文档,以保证在开发阶段结束时其文档是齐全的。
b. 正确性:在软件开发各个阶段所编写的文档的内容,必须真实地反映该阶段的工作且与该阶段的需求相一致。
c. 简明性:在软件开发各个阶段所编写的各种文档的语言表达应该清晰、准确简练,适合各种文档的特定读者。
d. 可追踪性: 在软件开发各个阶段所编写的各种文档应该具有良好的可追踪性。文档的可追踪性包括纵向可追踪性与横向可追踪性两个方面。前者是指在不同文档的相关内容之间相互检索的难易程度;后者是指确定同一文档某一内容在本文档中的涉及范围的难易程度。
e. 自说明性:在软件开发各个阶段所编写的各种文档应该具有较好的自说明性。文档的自说明性是指在软件开发各个阶段中的不同文档能独立表达该软件其相应阶段的阶段产品的能力。
f. 规范性:在软件开发各个阶段所编写的各种文档应该具有良好的规范性。文档的规范性是指文档的封面、大纲、术语的含义以及图示符号等符合有关规范的规定。
4 标准、条例和约定
在CADCSC工程化软件系统的开发过程中,还必须遵守下列标准、条例和约定:
a. 《CADCSC软件配置管理计划》,CADCSC软件工程小组编,1988年。
b. 《C语言编程格式约定》,CADCSC软件工程小组编,1988年。
5 评审和检查
本章具体规定了应该进行的阶段评审、阶段评审的内容和评审时间要求。对新开发的或正在开发的各个子系统,都要按照GB 8566的规定认真进行定期的或阶段性的各项评审工作。就整个软件开发过程而言,至少要进行软件需求评审、概要设计评审、详细设计评审、软件验证和确认评审、功能检查、物理检查、综合检查以及管理评审等八个方面的评审和检查工作。如本计划第2.2条所述,经总体组研究决定,在CADCSC软件及其所属各个子系统的开发过程中,把前七种评审分成三次进行。在每次评审之后,要对评审结果作出明确的管理决策。下面给出每次评审应该进行的工作。
5.1 第一次评审
第一次评审会对软件需求、概要设计以及验证与确认方法进行评审。
a. 软件需求评审(SRR)应确保在软件需求规格说明书中规定的各项需求的合理性。
b. 概要设计评审(PDR)应评价软件设计说明书中的软件概要设计的技术合适性。
c. 软件验证和确认评审(SV&VR)应评价软件验证和确认计划中确定的验证和确认方法的合适性与完整性。
5.2 第二次评审
第二次评审会要对详细设计、功能测试与演示进行评审,并对第一次评审结果进行复核。如果在软件开发过程中发现需要修改第一次评审结果,则应按照《CADCSC软件配置管理计划》的规定处理。
a. 详细设计评审(DDR)应确定软件设计说明书中的详细设计在满足软件需求规格说明书中的需求方面的可接受性。
b. 编程格式评审应确保所有编码采用规定的工作语言,能在规定的运行环境中运行,满足《C语言编程格式约定》,并且符合GB 8566中提倡的编程风格。在满足这些要求之后,方可进行测试工作评审。
c. 测试工作评审应对所有的程序单元进行静态分析,检查其程序结构(即模块和函数的调用关系和调用序列)和变量使用是否正确。在通过静态分析后,再进行结构测试和功能测试。在结构测试中,所有程序单元结构测试的语句覆盖率Co必须等于100%,分支覆盖率C1必须大于或等于85%。要给出每个单元的输入和输出变量的变化范围。各个子系统只进行功能测试,不单独进行结构测试,因而要登录程序单元之间接口的变量值,力图使满足单元测试的C1和Co准则的那此测试用例在子系统功能测试时得到再现。测试工作评审要检查所进行的测试工作是否满足这些要求。特别在评审功能测试工作时,不仅要运行变量的等价值,而且要运行变量的(合法的和非法的)边界值;不仅要运行开发单位给出的测试用例,而且要允许运行任务委托单位或用户、评审人员选定的采样用例。
5.3 第三次评审
第三次评审会要进行功能检查、物理检查和综合检查。这些评审会应在集成测试阶段结束后进行。
a. 功能检查(FA)应验证所开发的软件已经满足在软件需求规格说明书中规定的所有需求。
b. 物理检查(PA)应对软件进行物理检查,以验证程序和文档已经一致、并已做好了交付的准备。
c. 综合检查(CA)应验证代码和设计文档的一致性、接口规格说明之间的一致性(硬件和软件)、设计实现和功能需求的一致性、功能需求和测试描述的一致性。
6 软件配置管理
对CADCSC工程化软件系统的各项配置进行及时、合理的管理,是确保软件质量的重要手段,也是确保该软件具有强大生命力的重要措施。有关CADCSC工程化软件的配置管理工作,可按CADCSC软件工程小组编写的《CADCSC软件配置管理计划》。在软件配置管理工作中,要特别注意规定对软件问题报告、追踪和解决的步骤,并指出实现报告、追踪和解决软件问题的机构及其职责。
7 工具、技术和方法
在CADCSC项目所属的各个子系统(其中包括有关的支持软件)的研制与开发过程中,都应该在各自的软件质量保证活动中合理地使用软件质量活动的支持工具、技术和方法。这些工具主要有下列三种:
a. C软件测试工具。它支持用C语言编写的模块的静态分析、结构测试与功能测试。主要功能为:协助测试人员判断程序结构与变量使用情况是否有错;给测试人员提供模块语句覆盖率Co和分支覆盖率C1的值,并显示未覆盖语句和未覆盖分支的号码及其分支谓词,给出不同测试用例有效性的表格;同时提出功能测试的有效情况,并协助组织最终交付给用户的有效测试用例的集合。
b. 软件配置管理工具。它支持用户对源代码清单的更新管理以及对重新编译与连接的代码的自动组织;支持用户在不同文档相关内容之间进行相互检索并确定同一文档某一内容在本文档中的涉及范围;同时还应支持软件配置管理小组对软件配置更改进行科学的管理。
c. 文档辅助生成工具与图形编辑工具。它主要协助用户绘制描述程序流程与结构的DFD图与SC图、绘制描述软件功能(输入、输出关系)的曲线以及绘制描述控制系统特性的一些其他图形,同时还可生成若干与CADCSC软件文档编制大纲相适应的文档模块板。用户利用这个工具的正文与图形编辑功能以及上述辅助功能,可以比较方便地产生清晰悦目的文档,也有利于对文档进行更改,还有助于提高文档的编制质量。
8 媒体控制
为了保护计算机程序的物理媒体,以免非法存取、意外损坏或自然老化,CADCSC工程化软件系统的各个子系统(包括支持软件)都必须设立软件配置管理人员,并按照CADCSC软件工程小组制订的、且经CADCSC总体组批准的《CADCSC软件配置管理计划》妥善管理和存放各个子系统及其专用支持软件的媒体。
9 对供货单位的控制
CADCSC项目所属的各个子系统开发组,如果需要从软件销售单位购买、委托其他开发单位开发、从开发单位现存软件库中选用或从项目委托单位或用户的现有软件库中选用软部件时,则在选用前应向CADCSC总体组报告,然后由CADCSC总体组组织“软件选用评审小组”进行评审、测试与检查,只有当演示成功、测试合格后才能批准选用。如果只选用其中部分内容,则按待开发软件的处理过程办理,此时CADCSC总体组不作干预。
10 记录收集、维护和保存
在CADCSC项目及其所属的各个子系统的研制与开发期间,要进行各种软件质量保证活动,准确记录、及时分析并妥善保存有关这些活动的记录,是确保软件质量的重要条件。在软件质量保证小组中,应有专人负责收集、汇总与保存有关软件质量保证活动的记录。要收集、汇总与保存的记录名字及其保存期限见表1。
表1 记录名称及其保存的期限
附录B 项目进展报表(参考件)
B1 项目进展报表(月报表或季报表)由一个项目进展报表表头(表B1)和另外三个表格(表B2、表B3、表B4)组成。在表B2“软件阶段进度表中”中,要填写各个阶段的开工日期与结束日期。其中计划进度是指在项目实施计划中确定的计划进度,因此可以由管理人员事先填好,而不必由开发人员填写。实际进度是指该项目实际的开工日期与结束日期,它将随着该项目的不断进展填写。其中调整进度是指项目组长发现实际进度与计划进度不符时提出的进度修改建议;但经项目管理人员研究后,可能对此修改建议作某些更改。此外,在相继的若干次报表中,项目组长提出的建议修改日期也可能是不相同的。在此我们规定,最终的调整进度由项目经理来确定。在表B3“软件阶段产品完成情况表”中,要填写各个文档的开始编写日期与完成日期。其中关于对计划进度、调整进度与实际进度的含义的解释与上相同。表B4是关于统计软件开发费用的表格。
表B1 项目进展报表表头
注:SA&SD(system analysis & software definition phase):系统分析与软件定义阶段。
——RA(requirements analysis phase):需求分析阶段。
——PD(preliminary design phase):概要设计阶段。
——DD(detailed design phase):详细设计阶段。
——CD&UT(coding & unit testing phase):编码与单元测试阶段。
——IT&ST(integrating & system testing phase):组装与系统测试阶段。
——IS&AC(installation & aclearcase/" target="_blank" >cceptance phase):安装与验收阶段。
——TSSD(total software system development phase):整个软件系统的开发阶段。
附录C 项目阶段评审表(参考件)
C1 在软件开发过程中的适当阶段对软件阶段产品进行评审,是确保软件产品最终质量的重要方法。阶段评审可以对某个开发阶段的阶段产品进行评审,也可以对某几个开发阶段的阶段产品进行综合评审。在每次阶段评审中,必须履行正式手续,填写必要的评审表格,以利于项目管理工作,利于产品验收时的质量检查工作。
项目阶段评审表由四张子表组成。表C1是对评审中发现的问题的记录RPL(review problem);表C2是评审总结报告RSR(review summary report);表C3是对其中主要问题的详细描述SPR(software problem report);表C4是评审小组成员登记与签字表。下面给出这四张表的格式。