五、以参与者和参与者目标的视点编写用例

  用例的创立者Ivar Jacobson是这样定义用例的:用例的执行应当产生“对特定参与者具有价值的可观察结果”。在Jacobson的定义中传达的一个重要信息是,什么是对这个参与者有价值的。因此,用例分析的两个重要视点是:关注参与者期望达到的目标,关注参与者认为有价值的结果。我们在编写用例说明的时候,应当以这两个视点来进行编写。

  六、不要描述任何用户界面

  这是一些人(包括我)常犯的错。“点击××按钮”、“显示××列表”都是不应当出现在用例描述的文字中的。界面设计应当交给原型设计或界面设计阶段完成,而不是用例设计阶段。用例分析应当摒除用户界面的思考,而将全部精力关注于参与者的意图。

  七、再谈谈采用迭代的方式构建用例

  在本文中,我已经反复强调了采用迭代的方式构建用例。迭代是RUP以及后来的敏捷开发所大力提倡的一种开发方式,它从理论上彻底打破了过去的瀑布式开发理论。迭代开发包含了以下几个思想:

  1、从整体逐渐细化的过程。人类认识事物总是从整体到局部逐渐细化的一个过程,而迭代开发也体现了这一客观规律。在需求分析的初期,我们总是将系统分为几个大的用例,为每个大的用例,绘制几个主要的用例出来。而对于每个用例的说明,采用概述的方式,仅仅写出主成功场景。然后,随着一次一次的迭代,我们在不断丰富我们的用例,而用例说明的方式也渐渐变为非正式的方式,终改为详尽的方式,写出完整的用例图和用例说明。

  2、将大段的开发进程划分成了无数小的阶段。一次软件开发项目往往持续数月,甚至超过一年。而需求分析,也常常持续数月。许多项目开发团队不能按时完成开发任务,或者不能从容地完成开发任务,一个非常重要的原因是,在项目执行过程中,并没有随时评估自己的进度是否走在正常轨道上,也没有及时将偏离的进度拉回到正常的轨道上来。人造卫星和宇航飞机能够随时矫正自己的轨道,是因为它们在定期检测自己是否偏离轨道,项目管理也同样需要。如何定期检测项目进度是否在正常轨道呢?答案是迭代。迭代将持续数月的需求分析划分成了为期1~2周的一个个迭代期。每个迭代期在项目计划时都有一个目标,即该迭代期完成是项目应当进展到什么程度。在项目执行过程中,每个迭代期都要进行计划、执行、总结三个阶段的工作(如果迭代期为1周,通常是周一做计划,然后开始执行,直到周五开始总结)。在进行总结时,对比该迭代期应当完成的目标,可以判断项目进度是否在正常轨道,从而进行必要的调整。

  3、它强调的是与客户的反复沟通。按照敏捷开发的思想,业务变更是无所不在,正如那句经典的话:I changed when I saw it(当我看到软件时,需求开始变更了)。瀑布式开发理论之所以失败,正是因为拒绝了这种与客户的沟通,武断地认为,需求确认以后不能再变更,也不再需要与客户继续进行沟通。按照敏捷开发的思想,每次与客户沟通,都应当将客户的意见体现到设计开发中。然而,在将客户的意见体现到设计开发以后,需要寻找一个合适的时候与客户进行反馈,让客户确认这样的设计是否符合他的要求。没有及时地与客户进行反馈,不能保证项目的进展是否偏离了客户的需求。回到用例分析这个主题上,用例分析应当分成无数个迭代期,每个迭代期都应当包含与客户确认需求、进行用例分析、与客户进行反馈三个阶段。同时,用例分析还将持续到需求分析以后的整个项目开发过程中。

  用例分析的总结

  又到总结时间了,每到这个时刻我总是千言万语不知从何说起。我用了如此多的篇幅说明了什么是用例模型,它与需求规格说明书的区别以及优势。用例模型代表了先进的设计思想和方法,他可以完全替代需求规格说明书,但遗憾的是它至今还为我们所忽视(这也正是我写这篇文章的目的之一)。当然,你可能会说,许多客户依然要求我们编写需求规格说明书作为需求确认的指定文档。许多单位的质量管理手册也要求我们必须编写需求规格说明书,作为质量管理的一个部分。确实,需求规格说明书至今依然有大量fans,但我不得不替需求规格说明书说:不要迷恋哥,哥只是一个传说。说服客户和主管改用用例分析也许需要一定的时间,然而,采用需求分析过程是用例分析,终结果写成需求规格说明书,不失是另一个曲线救国的方式吧。

  后记

  我从小到大读书有一个特点,是不求甚解。一本书,特别是技术书籍,从来没有兴趣从头到尾把它读完过。即使感兴趣的章节,也从来不愿一字一句地去读。翻看目录是我主要干的事情。因为这样的读书方式,我小时候的成绩一定好不了,我却总是能去粗取精,把许多知识的精华握在胸中,跳出书本去思考许多更重要的东西。我看的书总是越看越薄,然后跳出来评判作者思想的得与失。正可谓:当局者迷,旁观者清。

  我写这些文章的目的,是帮你把书读薄,去粗取精,后留下真正重要的问题与你讨论。在写作过程中,我会将整个文章分成了数个大章,数个小节。每个章节,我都通过简短的语言,说明我下面要说的内容。你不必一章一节地挨着看,只看你感兴趣的部分,不求甚解,这是柳宗元先生给我们的大启示。