技术开发 频道

用例驱动的需求过程实践

【IT168 技术文章】

    一、需求矛盾

    根据CHAO的权威统计,虽然自"软件危机"提出以来,软件工程方法得到了长足的发展与进步,但在去年的软件项目成功率仍然不足30%,绝大多数的软件项目仍然超进度、超成本。而在这些不成功的项目中,由于需求不清晰、需求不完整等方面的因素,占到了60%左右。

    下面的这幅漫画虽然不乏夸张,但却是能够激起我们的深思:

    根据笔者多年来从事软件需求捕获、分析工作的实践经验,认为造成这一现象的根本原因在于客户与开发人员之间的沟通存在障碍,双方都以自己的角度、自己的专业术语进行沟通,这使得大家并不能够很好地就软件需求达成共识。

    由于帮助客户更好地利用信息化工具提高工作效率,是我们软件开发团队的责任,因此我们没有权利让用户理解我们所用的语言,而是反过来,我们有义务去理解用户的语言,站在用户的角度看问题。

    而事实上,许多开发团队经常抱怨"我们的客户连需求都说不清楚"、"我们的客户对计算机了解太少了".多年以来,大家都习惯从自己的角度来定义、分析问题,这也就造成了软件行业成为了一个最缺乏信任的行业,我们需要改一下习惯了。

    二、现代需求

    实践针对这些现象,许多先贤们开始了实践,并且总结出了一系列优秀的需求实践:

    1)Use case:用例分析技术鼎鼎大名的RUP是这样总结自己的:用例驱动,以体系结构为中心,迭代、增量的开发过程。Use case也伴随着RUP、UML一起名扬天下。

    用例用来描绘一个系统外在可见的需求情况,是代表系统中各个项目相关人员(风险承担人,Stakeholder)之间就系统的行为所达成的契约。

    2)User Story:用户故事、用户素材用户故事是Kent Beck在极限编程(XP)方法论中推荐的非常好的实践之一。它由客户参与编写,说明他们需要系统为他们做什么,一般用客户的术语写就,三句话左右。

    3)Feature:特征这是特征驱动开发(FDD)方法论的核心实践之一。一个特征就是一个小的,具有客户价值的功能,通常表示为<action><result><object>。

    从上面的定义来看,这三种现代软件工程需求实践无一例外地遵从两个原则:一是站在用户的角度看待系统、定义系统;二是用用户看得懂的语言表达。而在笔者的实践中,鉴于以下两点考虑还是先在团队中应用了"用例分析技术":1)用户故事略显粗糙,掌握起来需要经验,没有详细的规则用于按部就班,一开始采用容易迷失方向;而用例相对来说更加形式化,易于上手;2)特征看上去很有吸引力,但毕竟相关的理论还未完整,引入团队实践有些困难。

0
相关文章