西门子TD200显示器
的检查表。
需求评审面临的困难及对策如下。
需求评审的一个通病是“虎头蛇尾”。需求评审的确乏味,也比较费脑子。刚开始评审时,大家都比较认真,越到后头越马虎。当需求文件非常长时,几乎没有人能坚持到*后。会议主持人事先要强调需求评审的重要性:认真评审一小时可能会避免将来数十天的“返工”,让大家足够重视。评审组长还要设法避免大家在昏昏沉沉中评审。如果评审时间比较长,建议每隔两小时休息一次。如果系统比较大,也能细分成不同的部分分别进行,严格控制每一次评审的文件规模及持续时间。
需求评审设计的人员可能比较多,有些时候让那么多人聚在一起花费比较长的时间开会并不容易(如有些人可能出差在外,有些人可能事务缠身)。没有必要把所有时间挤在一块做,需求研发是循序渐进的过程,需求评审也能分段进行。这样每次评审的时间比较短,参加评审的人员也少一些,组织会议就比较容易。对于需求的工作产品《需求规格说明书》,我们能标明几种文件状态,如草稿状态、评审状态、初始状态等。只有进入评审状态时,我们才用不同的方式来对文件进行评审。但当其评审状态转化为初始状态时,需要进行正式的同行评审。
开评审会议经常会“跑题”,导致评审效率非常低。有时话匣子一打开后关不上,大家越扯越远,结果评审会议变成了聊天会议。主持人应当控制话题,避免大家讨论和主题无关的东西。对于自主研发的产品,由于需求评审人员大部分是研发人员,大家会不知不觉地讨论软件“怎么做”。由于需求是否“可实现、可验证、可测试”本来就西门子需求评审的范畴,强制大家:“只谈做什么,不谈怎么做”几乎是不可能的。那么,在需求的评审会
常强调产品的定义,注意开发或者代码编制阶段只是其中单独的一块。
② 瀑布模式各步骤是分立的、没有交叉。
③ 瀑布模式无法回潮,一旦进入某一个步骤,就要完成该步骤的任务,才能向下继续。
看起来似乎限制太多,实际上也是如此。对于拥有明确清晰的产品定义和训练有素的开发人员的项目而言,该模式的效果很好。该模式的目标是在编写代码之前解决所有的未知问题并明确所有细节。缺点是,在这个变化迅速、在互联网上开发产品的时代,当软件产品还在细细考虑和定义时,当初制造它的理由都可能会改变了。
从测试的角度来看,瀑布模式比上述模式更有优势。瀑布模式所有一切都有完整细致的说明。当软件提交到测试小组时,所有细节都已确定并有文档记录,实现在软件之中。由此,测试小组得以制订**的计划和进度。测试对象非常明确,在分辨是功能还是缺陷上也没有一点问题。
这个优点也带来一个巨大的缺点。因为测试仅在*后进行,一些根本性问题可能出现在早期,直到准备发布产品时才可能发现。好,但总有时间完成。”这是该模式的真实写照。采用这种方式的小组通常*初只有粗略的想法,接着进行一些简单的设计,开始漫长的来回编写、测试和修改缺陷的过程。等到觉得足够了,就发布产品。
由于开头几乎没有计划和文档编制,项目小组能较迅速地展现成果。边写边改模式极其适合意在快速制作用完就扔的小项目,如原型范例和演示程序。即便如此,许多**的软件仍然采用了边写边改模式。如果文字处理或者电子表格软件存在大量软件缺陷,或者功能似乎不完备,就可能是在边写边改模式下制造出来的。
与大爆炸模式类似,测试在边写边改模式中未特别强调,在
序员一样清醒地认识到自己将陷入无休止地循环往复。几乎每一天都会拿到新的软件版本并着手进行测试。当新版本出来时,旧版本的测试可能尚未完成,而新版本还可能包含新的或者修改的软件功能。*后,终于有机会对几乎所有功能进行测试了,并且发现软件缺陷越来越少,这时某人(或者进度)决定该发布软件了。
在进行软件测试工作期间,边写边改模式是*有可能碰到的。这种模式是软件开发的入门,有助于理解更加正规的方法。
2.3.3 瀑布模式
瀑布模式常常是编程学校所教的第一课,现在已经无处不在。它简捷、精致、很有意义,在合适的项目中效果显著
如前所述,在开发软件过程中有话,也要挤在产品发布前进行。这种模式下居然有测试的容身之地真是令人感到神奇,也许是进行测试会使大家感觉好一些。
假如要测试员参与大爆炸模式下生产产品的测试,就会面临一个既容易又困难的任务。因为软件已经完成,测试员手里有了完美的产品说明书——产品本身。但因为不可能回头修复已经打乱的事情,软件测试的工作其实就是报告发现的问题让客户知道。
测试工作越深入,就会发现越来越多的软件缺陷,争吵就越多,更妨碍了交付时间。尽量避开在此模式下进行测试。
2.3.2 边写边改模式
边写边改模式是项目小组在未刻意采用其他开发模式时默认的开发模式,各种不同的办法。对特定项目而言,没有哪一个模式一定是**的。4种*常用的模式包括大爆炸模式、边写边议模式、瀑布模式和螺旋模式,其他模式只是这些形式的变化而已。
每个模式都有它自己的优点和缺点。测试员可能会遇到以上所有模式,需要根据当前项目采
大爆炸说,数百亿年前,一股无穷的能量大爆炸创造了宇宙。世界万物皆由能量和粒子排列而成,于是便有了这本书、DVD和比尔盖茨。假如原子没有正确排列,这些事物就会变成一堆烂泥。状态或者条件的另一种正规示意图,表示不同状态间转换的方式。
④ 流程图。用图形描述程序逻辑的传统方式。流程图现在不流行了,一旦投入使用,根据详细的流程图编写程序是很简单的。
⑤代码注释。在软件代码中嵌入有用的注释是知道了软件产品由什么组成、附带了什么之后。现在该搞清楚制作软件的人员了。当然,公司和项目不同,人员也就大不相同。对于大多数情况,分工是一样的,只是叫法不同而已。
下面的清单不按次序地列出了主要人员及其职责,给出了*常用的名称,不包括变动和增加等情况。
① 项目经理、程序经理或者监制人员自始至终驱动整个项目。他们通常负责编写产品说明书、管理进度、进行重大决策。
②体系架构师或者系统工程师是产品小组中的技术专家。他们一般经验丰富,可以胜任设计整个系统的体系架构或软件。他们的工作与程序员关系紧密。
③程序员、开发人员或者代码制作者设计、编写软件并修复软件中的缺陷。他们与项目经理和设计师密切合作制作软件,与项目经理和测试员密切合作修复缺陷。
④ 测试员或质量保证(QualityAssurance,QA)员负责找出并报告软件产品的问题。他们与开发小组全部成员在开发过程中密切合作,进行测试并报告发现的问题。在后面的章节中完整地讲述了软件测试和软件质量保证任务的差别