霜,不在学习中爆发,就在学习中沉默。

发布新日志

  • 开发高质量的软件

    2006-12-16 16:03:48

              开发高质量的软件----------Louise Tamres

      第一部分  开发环境基础

    软件工程包括许多方面,每一个方面都是一专门的学科并要求有其自身独特的过程。

    一。需求

      好的需求能够在用户和软件开发者之间建立一个沟通的桥梁。需求是从用户的角度对系统的能力进行描述,由需求产生设计,描述系统如何满足这些能力。系统需求涉及内部接口、设计约束,及性能问题如精确性和时间性。

      一个成功的项目是满足需求的项目。好的需求是可验证的和无二义性的,即可以针对一个需求写一个或多个测试用例。

      关于软件测试

      需求是评估最终产品的基础。测试根据需求确认软件工以确保开发的产品符合要求。我根据需求通过说明输入和输出条件和创建"what if??"(如果......怎样?)"场景定义测试用例。在项目早期坠落人,评审需求检查其是否恰当地和正确地反映了用户的需要。如果需求比较少或没有需求说明,则给测试人员挖掘足够的信息产生测试用例带来了较大难度。

    二。项目管理

      项目管理是管理进度和资源的学科,成功的项目需要组织并不断地对所发生的情况进行评估和沟通。软件项目管理主要有两个方面:项目计划和项目跟踪。

      软件项目计划对实施软件工程和管理软件项目进行合理的策划好的项目计划包括:

        1。定义项目目标

        2。定义开发策略

        3。明确要完成的工作

        4。识别风险和对计划进行调整

        5。确定所需资源

        6。分配资源

        7。定义项目发布日期

        8。将项目分解为小的可定义的任务

        9。确定进度

        10。识别关键路径

      软件项目跟踪对实际项目进展提供了适当的可见性,使得在项目的实施与计划的活动发生重大偏差时可以采取有效的措施:

      1。建立主要的和小的里程碑以跟踪项目进展情况

      2。识别潜在的问题

      3。发生问题时,启用恢复计划(如何从问题中恢复)

      一旦项目结束,将实际的任务完成时间和计划的任务时间段进行比较,为项目的准确评估提供反馈信息。前面的项目的历史信息和经验教训可供以后的项目计划借鉴。

      关于软件测试

      软件测试由许多阶段组成,是一个与软件开发任务并行开展的活动,整个软件测试的开销(包括测试计划、测试执行及其它测试任务)可以占整个进度的一半。在许多项目中,测试执行时间随着开发进度的拖延而被压缩。好的项目管理会认真对待这些瓶颈并相应地调整进度。

    三。软件配置管理

      软件配置管理(SCM)对复杂的软件开发环境进行控制并维护组件的完整性,因为组件在开发周期过程中会发生变化。SCM跟踪源代码、需求文档、设计文档、测试用例、用户手册及其它由项目产生的产物。

      许多商业工具支持SCM活动,它们具有以下功能:

      1。协调种类人员进行工作

      2。提供确定产品状态的手段

      3。支持多个迸发开发流

      4。提供变更的审计记录

      SCM所承担的活动如下:

      版本控制(Version control)维护每个组件随着时间变更的历史。人们总可以访问组件以前的状态。版本管理的主要机制是控制每个组件的检入和检出。

      配置控制(Configuration control)跟踪构造一个特定版本所需的所有组件,包括文档和测试说明。SCM的配置控制还跟踪源代码文件之间的依赖关系。一些组织必须跟踪所有的工具,如编译器、链接、flash工具及其他创建每个系统版本所需的所有工具。

      变更控制(Change control)是初始化、审批和监控变更进程的过程,包括这些进程的修改和改进。

      构造控制(Build control)是构造每个应用程序的过程。这是一个自动产生的过程,如make实用程序,其准确地知道系统的每个层次所包含的内容。为减少构造阶地的时间,有效的构造过程应仅重新构造的组件。生成控制的过程为:1。产生可执行应用程序,2。记录有关的计帐信息。计帐信息列出了用于生成可执行程序的每个组件及其相应版本的信息。

      过程管理(Process management)通过跟踪组件在开发周期过程中的进展评估软件开发活动。例如:该过程可能要求一个组件在发布前要进行测试。过程管理还要确保在变更代码、设计和其它文档前进行变更请求并审批。

      关于软件测试

      将每个产物都纳入到配置管理控制下,测试人员可以方便地建立产品的任何版本的环境。错误地使用对象的不正确的版本时会出现许多问题,常见的问题是用手工方式实施配置管理或管理系统的人员没有经过培训。为有效起见,测试人员必须清楚地知道被测系统的配置。配置管理还允许测试人员跟踪测试脚本或其它与测试有关的文件。

      测试中发现的问题一般都要求修改代码,由此产生一个新的产品版本。测试用例版本和产品版本的跟踪信息作为问题描述的一部分可以减少混乱。

      缺乏配置控制通常会出现下列问题:
      1。以前改正过的问题又突然出现在新的产品版本中

      2。对老版本的修改丢失

      3。在产品发布时丢失某个特性或文件

    四。软件质量保证

      软件质量保证(Software Quality Assurance(SQA))对软件项目的过程和被构造的产品提供可见性的管理。SQA由一系列评估被开发或被生产产品过程的活动组成。SQA确保使用正确的工具、步骤和技术开发产品,目的是防止出现错误或尽早地检查和排除错误以开发出高质量的软件。尽早地发现和排除可以避免返工以提高效率。

      下面SQA活动贯穿整个生命周期过程:

      1。定义质量计划

      2。实施软件评审

      3。确保对文档和源代码的变更实施控制

      4。审计软件过程对标准的符合性

      5。收集软件质量度量

      6。评价软件开发和测试方法

      SQA的一项工作是审核。审核是对项目产物的独立性评价,其主要目的是确保产品的开发符合已批准标准和指南的要求。审核可以是内部的也可以是外部的。公司内部的评估员可以作为SQA组织成员。当被开发的软件是一个实际的用户产品的组件时,由公司或用户委派的标准组织审核员实施外部审核。

      关于软件测试

      一些公司错误地将SQA等同于软件测试。SQA评估过程质量,主要目的是担担缺陷预防,而软件测试评估产品质量,主要目的是错误检测。SQA通过评审测试结果和搜集软件质量度量元监控测试的有效性。对软件测试文档的审核确定测试活动是否符合建立的标准和规范的要求。

    五。评审和检查

      评审是减少错误和改进质量的最有效方法之一,目的是通过评审所有产生的产物,及早地发现和修改错误。这些产物包括需求、设计院、代码、测试用例及任何其他与项目有关的文档。

      评审和检查在开发各阶段产生的产品有助于尽早地发现错误,由此可以避免这些相同的错误波及到其他开发阶段。最大的回报来自于检查需求和设计文档,因为如果越晚发现问题,其修改错误观点的开销增加得越快。评审包括几种不同的类型:

      技术评审(Technical reviews):一般为同行专家的讨论,目的是对工作产品进行评价和审议。

      走查(Wolkthroughs):通常由设计人员带领其他人员对其编写的文档划代码进行检查。因此,走查是项目组其他人员学习特定产品的培训工具。

      软件检查(Software inspections):是评审中最严格的一种形式,它遵循一个形式化的过程,包括:

         1。使用检查表提高评审的有效性

         2。为每一个参与检查的人分配一个角色

         3。将被除数评审项与标准进行比较

         4。实施传递检查

         5。产生检查报告

         6。跟踪明显较弱方面(产品和开发过程)的记录

         7。对度量检查过程同步的有效性进行统计分析

       关于软件测试

      检查是对文档进行测试的一种方法,无论文档是需求、设计还是其他文档类型。这些文档是定义测试用例的基础。测试文档本身也可能有错误,因此,对其进行检查是很有益处的。

      评审发现问题比测试代码发现错误要早,因为文档是在源代码开发之前生成的。在评审中发现的错误就确实存在于所发现之处,而在测试中发现的错误却不然,因为在代码中发现的错误可能涉及骊需求的修改。在测试中发现的错误要么是在检查后引入的,要么是在检查中遗漏的。

     

我的存档

数据统计

  • 访问量: 6162
  • 日志数: 10
  • 建立时间: 2006-12-13
  • 更新时间: 2006-12-30

RSS订阅

Open Toolbar