软件项目管理

来源:考试大发布时间:2008-06-19
  软件产品质量的保证是软件项目管理的一个重要内容。软件项目的目标不仅仅是进度目标和成本目标,更重要的就是质量目标,质量直接决定了软件产品能否生存已经后续的升级和维护等工作量。这里只谈为了提高软件质量可能采取的各种活动,但前提仍然是我们在做项目计划的时候首先要根据需求确定质量目标和制定质量计划。
  1.过程
  要提高质量需要强调我们对产品质量的保证不是依靠的团队中一两个重要成员,而是我们有相应的过程和方法论来保证质量,保证产品质量的过程是可以持续的。对于很多项目我们都不建议采用CMMI里面较为重量级的各种过程,但是对于产品质量提升有帮助的各种过程我们仍然需要去将其规范化和流程化。与此相关的主要有规范类的文件,比如需求编写模板和规范,设计规范和模板,代码编写规范和模板,数据库设计的规范和模板,界面设计规范和模板,测试用例模板。对于过程管理方面需要定义的主要有任务和工件的输入输出要求,配置管理和源代码管理,软件生命周期模型,缺陷跟踪和管理,问题和风险跟踪管理,变更管理。
  2.培训
  最重要的质量意识就是预防胜于检查,强调一次要事情做对,强调上游工序为下游提供合格的中间产出物,尽量减少各种缺陷的泄露。很多时候质量问题并不复杂,更多是团队成员没有质量意识,没有负责任的工作态度。提升质量最关键有两个方面,首先是我们都有意愿和意识来提升产品质量,其次是我们要有相应的能力和技能来保证产出物的质量。
  第一点我们依靠的团队绩效规则的建立,团队建设,质量文化的组建形成,员工态度和责任感的培养等内容。第二点我们强调的是培训,以师带徒,自我学习,个人知识管理方法,问题管理,学习型组织,读书会等各种方式来提升技能。
  3.评审
  评审是软件开发过程中保证质量的一个重要活动,项目软件开发往往会跟踪选择的软件生命周期模型分为多个阶段,对于较大点的项目还有严格的岗位角色划分,每个阶段都是不同的成员在进行工作。因此如果各个阶段的产出物的质量不能够很好保证的话,将导致缺陷泄露和后续大量的返工,这些都是我们不希望看到的坏质量成本投入。
  首先评审不是来检查产出物的各种低级错误的,每个人在思考问题上都有局限性和盲点。评审是涉及到需求,设计,开发,测试等各种角色的成员共同来从不同的角度来发现工件的各种问题。比如对于需求问题,测试人员在评审的时候重点关注的是该条需求描述和业务规则的可测试性,而设计和开发重点是可实现性。评审涉及到正式同行评审,多人复审,单人复审,代码走查等各种方式,需要根据项目的实际情况来选择使用。我们需要重点防止的就是需求和总体设计阶段的缺陷泄露,对于这种泄露往往都会造成大量的返工。
  4.测试
  测试是保证软件质量的最后一道关口,是一种迫不得已的行为,根据我们的质量意识应该要尽量做到问题不是到测试阶段才发现和暴露出来。很多问题在测试阶段才发现返工成本都是很大的。测试有单元测试,集成测试和系统测试,验收测试等各个阶段。在某一个功能或模块在交付给测试人员进行测试的时候,开发人员应该根据需求和设计进行较为充分的自测。这样的话系统测试的重点才能够真正去关注全流程的贯通和各种可能的业务场景组合和编辑,而不是关注某一个具体的实现功能点。
  敏捷开发里面强调测试驱动和单元测试,但敏捷里面的单元测试还有个重要的作用是通过单元测试的编写来细化需求和设计,这对团队每个成员都会有较高的技能要求。同时要注意单元测试的投入成本,很多时候我们来开发人员的自测和系统测试都做不好就去盲目的实施单元测试是得不偿失的。