概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。更具体地说,软件质量是软件与明确地叙述的功能和
性能需求、文档中明确描述的开发标准以及任何专业开发的
软件产品都应该具有的隐含特征相一致的程度。从管理角度对软件质量进行度量, 可将影响软件质量的主要因素划分为六个部分特性(根据GB/T16260.1)功能性,可靠性,易用性,效率,维护性与
可移植性。其中功能性包括
适合性,
准确性,互用性,
依从性,安全性;可靠性包括
容错性,易恢复性,成熟性;易用性包括易学性,易
理解性,易操作性;效率包括资源特性和时间特性;维护性包括
可测试性,
可修改性,稳定性和易分析性;可移植性包括适应性,易安装性,一致性和可替换性的六个特征及若干子特征。
软件质量因素的定义
1.正确性(Correctness):系统满足
规格说明和用户目标的程度,即在预定环境下能正确地完成预期功能的程度;
2.
健壮性(Robustness):在硬件发生故障、输入的数据无效或操作错误等意外环境下,系统能做出适当响应的程度;
3.效率(
Efficiency):为了完成预定的功能,系统需要的
计算资源的多少;
4.完整性(Efficiency)或安全性(Security):对未经授权的人使用软件或数据的企图,系统能够控制(禁止)的程度;
5.
可用性(Usability):系统在完成预定应该完成的功能时令人满意的程度;
6.风险(Risk):按预定的成本和进度把
系统开发出来,并且为用户所满意的概率;
7.可理解性(Comprehensibility):理解和使用该系统的容易程度;
8.
可维修性(Maintainability):诊断和改正在运行现场发现的错误所需要的工作量的大小;
9.灵活性(Maintainability)或适应性(Adaptability):修改或改进正在运行的系统需要的工作量的多少;
10.
可测试性(Adaptability):软件容易测试的程度;
11.
可移植性(Portability):把程序从一种
硬件配置和(或)软件
系统环境转移到另一种配置和环境时,需要的工作量多少。有一种定量度量的方法是:用原来程序设计和调试的成本除移植时需用的费用;
12.可再用性(Reusability):在其他应用中该程序可以被再次使用的程度(或范围);
13.互运行性(Interoperability):把该系统和另一个系统结合起来需要的工作量的多少。
标准
(1)
软件需求是度量软件质量的基础,与需求不一致就是质量不高。
(2)指定的标准定义了一组指导
软件开发的准则,如果没有遵守这些准则,几乎肯定会导致质量不高。
(3)通常,有一组没有显式描述的隐含需求(如期望软件是容易维护的)。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。
QA和QC
QA即英文Quality Assurance的简称,中文意思是质量保证 ;
QC即英文Quality Control的简称,中文意义是质量控制。
QA和QC的主要区别前者是保证
产品质量符合规定,后者是建立体系并确保体系按要求运作,以提供内外部的信任.同时QC和QA又有相同点:即QC和QA都要进行验证,如QC按标准检测产品就是验证产品是否符合规定要求,QA进行
内审就是验证体系运作是否符合标准要求,又如QA进行出货稽核和可靠性检测,就是验证产品是否已按规定进行各项活动,是否能满足规定要求,以确保工厂交付的产品都是合格和符合相关规定的。
软件开发
需求分析
确保客户所要求的系统是可行的。
确保客户指定的需求确实能够满足他的真正 要求。
避免开发者和客户之间的误解。
向用户提供为满足他所提出的需求而实际构建的适当
软件系统。
软件规格说明
通过建立
需求跟踪文档,确保规格说明书与
系统需求保持一致。
确保规格说明书能适当地改进系统的灵活性、
可维护性以及性能。
确保已建立了测试策略。
确保已建立了现实的开发进度表,包括 预定的评审。
设计
确保已建立用于描述设计的标准,并且确保遵循这些标准。
确保适当地控制并用文档记录对设计进行的变更。
确保在
系统设计组件已按照商定的准则得到批准之后才开始编码。
确保对设计的评审按照进度进行。
确保代码遵循已建立的风格、结构和文档标准。
确保代码经过适当测试和集成,同时对编码模块的修改得到适当的标识。
查看代码编写是否遵循既定的进度。
测试
确保创建的测试计划能够满足所有系统规格说明书的要求。
确保经过测试和返工后软件与规格说明书保持一致。
维护
确保代码和文档的一致性。
确保对已建立的变更
控制过程进行监测,包括将变更集成到软件的产品版本中的过程。
确保对代码的修改遵循编码标准,并且要对其进行评审,不要破坏整个代码结构。