软件工程第三次作业——关于软件质量保障初探

1.对教材与参考资料阅读后关于软件质量保障你的体会是什么?(40分)

软件质量保证是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。软件质量保证的目的是使软件过程对于管理人员来说是可见的。它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的。软件质量保证组在项目开始时就一起参与建立计划、标准和过程。这些将使软件项目满足机构方针的要求。软件质量保证的目标是以独立审查的方式,从第三方的角度监控软件开发任务的执行,就软件项目是否正确遵循已制定的计划、标准和规程给开发人员和管理层提供反映产品和过程质量的信息和数据,提高项目透明度,同时辅助软件工程取得高质量的软件产品。
软件质量保证的主要作用是给管理者提供预定义的软件过程的保证,因此SQA组织要保证如下内容的实现:选定的开发方法被采用、选定的标准和规程得到采用和遵循、进行独立的审查、偏离标准和规程的问题得到及时的反映和处理、项目定义的每个软件任务得到实际的执行。

软件质量保证是软件工程管理的重要内容,软件质量保证主要包括以下措施。
1)应用好的技术方法
质量控制活动要自始至终贯彻于开发过程中,软件开发人员应该依靠适当的技术方法和工具,形成高质量的规格说明和高质量的设计,还要选择合适的软件开发环境来进行软件开发。
2)测试软件
软件测试是质量保证的重要手段,通过测试可以发现软件中大多数潜在的错误。应当采用多种测试策略,设计高效的检测错误的测试用例进行软件测试。但是软件测试并不能保证发现所有的错误。
3)进行正式的技术评审
在软件开发的每个阶段结束时,都要组织正式的技术评审。由技术人员按照规格说明和设计,对软件产品进行严格的评审、审查。多数情况下,审查能有效地发现软件中的缺陷和错误。国家标准要求开发单位必须采用审查、文档评审、设计评审、审计和测试等具体手段来控制质量。
4)标准的实施
用户可以根据需要,参照国家标准、国际标准或行业标准,制定软件工程实施的规范。一旦形成软件质量标准,就必须确保遵循它们。在进行技术审查时,应评估软件是否与所制定的标准一致。
5)控制变更
在软件开发或维护阶段,对软件的每次变动都有引入错误的危险。如修改代码可能引入潜在的错误;修改数据结构可能使软件设计与数据不相符;修改软件时文档没有准确及时地反映出来等都是维护的副作用。因而必须严格控制软件的修改和变更。控制变更是通过对变更的正式申请、评价变更的特征和控制变更的影响等直接地提高软件质量。
6)程序正确性证明
程序正确性证明的准则是证明程序能完成预定的功能。
7)记录、保存和报告软件过程信息
在软件开发过程中,要跟踪程序变动对软件质量的影响程度。记录、保存和报告软件过程信息是指为软件质量保证收集信息和传播信息。评审、检查、控制变更、测试和其他软件质量保证活动的结果必须记录、报告给开发人员,并保存为项目历史记录的一部分。

 

2.如果你是一个项目的QA,那么你认为你的工作职责范围是什么?(30分)

在CMMI中,QA的主要工作是过程评审和产品审计。从实践经验来看,QA只完成这两项工作很难体现出QA的价值。为了让QA组织的产出大于组织的投入,实现增值,就应该根据企业需要适当增加QA的职责,比如过程指导、过程度量和过程改进等。过程指导主要是项目前期辅助项目经理制定项目计划(包括辅助定义或修改项目过程和过程模型、协助项目估计、建立项目验收准则、设置质量目标等),对项目成员进行过程和规范的培训以及在过程中进行指导等。过程度量(包括产品度量)在CMMI中已经成为CMMI ML2级中一个单独的过程域,但却是对所有过程的一个共性要求。
特别是成熟度越高,对度量的要求也越高,难度也越大。这就要求有专业的人员来负责,QA就是一个很好的选择。主要职责包括收集、统计、分析度量数据,以支持管理信息需求。过程改进在CMMI中主要是EPG的职责。但事实上,QA更接近于过程实施的环境,更了解过程运行的情况,也就更容易发现“木桶中最短的那块”。同时,QA也是改进过程实施的重要推动力量。

 

3.如果你是一个项目经理,那么你认为这你的项目中需要专职的QA么?还是只需有Test即可?如果一旦出现问题,你如何界定由谁担责?(30分)

1、软件测试(Test):运用定义好的流程,工具去验证软件能实现预先设计的功能和特性,工作的流程和结果通常是可量化的,例如,测试用例,bugs,代码覆盖率,MTTF,软件效能的参数。[注:正因为流程和结果是可明确定义的,可量化的,很多测试工作可以自动化]

2、软件质量保证工作(QualityAssurance):软件团队的成员为了让软件达到事先定义的质量而进行的所有活动,包括测试工作。

 运用各种手段, 在软件工程的各个阶段确保软件的质量能帮助软件团队实现目标。在这样的定义下Test只是QA工作的一部分。

我相信有分工是好事,软件团队中应该有独立的测试(Testing)角色。所有人都可以参与QA的工作(报告bug什么的),但是最后要有 一个角色对QA这件事负责。不但角色要独立,而且在最后软件发布的时候,必须得到此角色的签字保证。

 

posted @ 2019-09-22 19:15  諪諪諪  阅读(188)  评论(0编辑  收藏  举报