项目计划,是整个流程的起点,也是整个软件活动生命周期最重要的一部分,关系一个项目的成败。这部分包含风险计划管理,软件估算,软件周期计划,项目变更管理计划;本人认为应该把项目定期和不定期沟通都应该被描述至项目计划中,沟通在整个项目中无所不在,也是项目成败的关键。
项目跟踪和控制,这部分内容严格的规范了项目跟踪和控制流程。对项目推进具有很强的指导意义。项目跟踪和控制包括了工时度量,软件进度安排,软件评审,项目跟踪和控制。项目跟踪和控制中定义了在项目需要被跟踪和控制的内容,方式以及谁去控制。
可行性研究, 这是一个非常有必要的步骤。许多软件公司对产品都不做或者略做可行性研究,反正产品定下就关手开发,将来能否在市场上能否取得成功是后话,这样往往会造成一些不必要的损失。可行性研究流程明确定义了每个人的职责,把《可行性研究报告》作为这部分工作的提交物。
需求管理与需求分析,需求是软件开发的原料,用正确的方法提炼和加工原料,将会使后续的开发过程事半功倍。在需求管理和需求分析的流程中详细的描述了需求的获取的方法,需求变更的管理办法以及在需求发生变更的时项目相关人员职责,包括项目经理,SCM,SQA,测试组成员。需求分析,是将用户的需求转换我们的语言的过程,具体表现在《需求规格说明书》上面。
设计,设计是软件是在大脑和文档中成型的阶段。设计的好坏将直接影响到系统的性能,编码的效率,测试的效率。设计包含三个部分:概要设计,详细设计和用户界面设计。针对目前的文档本人有一些提议:
1. 在概要设计审中除了文档中规定的四个内容,本人觉得系统设计性能考虑也应该作为一个评审内容。
2. 把界面设计的也纳入评审的范围,并引入客户参与。
编码,是软件过程中一个实现的环节,这也是容易引入不确定因素最多的环节之一。说起编码,可能感觉谁都能做,但做得好的确不多。在编码过程中两件事比较重要,一个是遵照统一的编码规范,另一个就是受设计约束,这两者的执行都离不开一个检查。据本人以往的经验,在编码开始阶段应该花费较多的时间去检查代码,然后变成抽查,这样有利于编码人员更大程度的遵循编码规范和设计约束。
测试,这是软件质量控制最主要的手段。以前看到一句话是这样说,软件产品没有测试,就好像走在钢丝上。测试大体可以分为以下几类:单元测试,集成测试,系统测试,用户可接受测试。个人认为测试的工作应该贯穿整个软件活动的生命周期,从开发计划到客户验收,测试都应该参与。公司的测试流程写得非常规范,个人觉得实际操作过程的测试经验可能对测试工作会更有价值。以下是我从网站看到一些测试技巧,与大家共享之:
(1) 边界测试,测试用户输入框中的数值的最大数和最小数,以及为空时的情况。
(2) 非法测试,例如在输入数字的地方输入字母。
(3) 跟踪测试,跟踪一条数据的流程,保证数据的正确性。
(4) 在开始测试时应保证数据的正确性,然后在从系统中找出各种BUG。
(5) 接口测试,程序往往在接口的地方很容易发生错误,要在此模块测试勿掉以轻心。
(6) 代码重用测试,在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码上修改或修改不全面,而造成的错误。
(7) 突发事件测试,服务器上可能发生意外情况的测试。
(8) 外界环境测试,有些系统在开发时依赖于另外一个系统,当另外一个系统发生错误时, 这个系统所受到的影响的情况。
(9) 在程序员刚修复Bug之后的地方,再找一找,往往程序员只修复报告出来的缺陷而不去考虑别的功能在修改时可能会重新造成错误。
(10) 认真做好测试记录在做完一天的测试记录之后,第二天再根据第一天的测试记录重复测试你会发现有未修正的错误。
(11) 文字测试,如果在系统中有用词不当的地方,我想这是不应该的。
(12) 系统兼容测试,例如有些程序在IE6能运行正常,到IE5下不能运行。有些程序在WIN2000下能运行,而到WIN98却不能运行。像一些很特别的用户去使用系统,你很有可能发现BUG。
(13) 用户的易用性测试,往往用户的需求是不断的变化的,而其中的一部份变化的原因,是有用户操作上不方便引起的。
软件测试是软件开发中的重中之重,没有一点可以马虎的,在项目管理过程,我强调的时是每个过程的每一个环节都要进行测试,保证系统在每个阶段可以控制。因为软件测试中考虑的问题基本上是项目管理中考虑的问题。