20194580软件工程第三次作业-质量保障初探

软件工程第三次作业-质量保障初探

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

(1)什么是软件质量保障

       软件质量保证是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。软件质量保证的目的是使软件过程对于管理人员来说是可见的。它通过对软件产品和活动进行评审和审计来验证软件是合乎标准的。软件质量保证组在项目开始时就一起参与建立计划、标准和过程。这些将使软件项目满足机构方针的要求。

       在本书中利用了软件=程序+软件工程的公式导出软件质量=程序质量+软件工程质量

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

      (1) QA(QUALITY ASSURANCE,中文意思是"质量保证",其在ISO8402:1994中的定义是"为了提供足够的信任表明实体能够满足质量要求,而在质量管理体系中实施并根据需要进行证实的全部有计划和有系统的活动"。有些推行ISO9000的组织会设置这样的部门或岗位,负责ISO9000标准所要求的有关质量保证的职能,担任这类工作的人员就叫做QA人员 .
      (2)在CMMI中,QA的主要工作是过程评审和产品审计。从实践经验来看,QA只完成这两项工作很难体现出QA的价值。为了让QA组织的产出大于组织的投入,实现增值,就应该根据企业需要适当增加QA的职责,比如过程指导、过程度量和过程改进等。过程指导主要是项目前期辅助项目经理制定项目计划(包括辅助定义或修改项目过程和过程模型、协助项目估计、建立项目验收准则、设置质量目标等),对项目成员进行过程和规范的培训以及在过程中进行指导等。过程度量(包括产品度量)在CMMI中已经成为CMMI ML2级中一个单独的过程域,但却是对所有过程的一个共性要求。特别是成熟度越高,对度量的要求也越高,难度也越大。这就要求有专业的人员来负责,QA就是一个很好的选择。主要职责包括收集、统计、分析度量数据,以支持管理信息需求。过程改进在CMMI中主要是EPG的职责。但事实上,QA更接近于过程实施的环境,更了解过程运行的情况,也就更容易发现“木桶中最短的那块”。同时,QA也是改进过程实施的重要推动力量。
在了解了QA的这些工作以后,是否认为每个企业的QA职责应该都一样或者差不多呢?目前国内不少企业的现状确实是这样,这也是QA整体效果低下的一个很重要的因素。我们在确定QA职责的时候应该考虑自身的需要和环境,主要包括业务需求、过程成熟度水平和企业文化。
业务需求主要是确定了QA需要完成哪些方面的工作,比如执行同行评审过程中,QA可以协助评审和组织会议;在存在外包的情况下,可能需要QA在监控外包方方面发挥作用。

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

       我觉得是不需要全职的QA的,因为有的QA是不懂得开发的,不懂开发的人必然做不好测试。就像不懂开发的研发经理必然管不好研发团队一样。这样出现问题智能是开发者来承担责任。

猜你喜欢

转载自www.cnblogs.com/bl1124/p/11570556.html