采用OOAD开发的方法时的需求不稳定,可分析出这不稳定的东西是对象。世界都是由对象组成的,而对象都是持久的,例如动物、植物已经有相当长的时间。虽然对象也在变化,动物、植物也在不断进化。但对象在一个相当长的时期内都存在,动植物的存在时间肯定比任何一家企业长久。面向对象开发方法的精髓是从企业的不稳定需求中分析出企业的稳定对象,以企业对象为基础来组织需求、构架系统。这样得出的系统会比传统的系统要稳定得多,因为企业的模式一旦变化,只需将稳定的企业对象重新组织行了。
在敏捷XP中,采用的是TDD驱动软件的设计和编程实践,即,测试驱动开
发。笔者负责过很多项目的敏捷实践中,更喜欢UDD(Use Case-Driven Development)比较适合目前的国情。它可根据用户目标,编写软件需求,根据软件需求,编写系统(验收)测试,即,用户目标驱动。利用 UML 对软件的设计进行建模,这部分建模当然是敏捷的(agile)。简单的只需几秒钟可以迅速在人的大脑中完成,复杂的则可以画在纸上、白板上,记录在建模工具生成的电子文档中,当需求稳定后可以迅速转化成软件应用代码,在结合TDD会有很不错的效果,这种理论体系有些像太极原理,需求的变化看似武术中的招式,采用UDD见招破招,无招胜有招,这种客户的需求应变使得UDD更为敏捷。
3.实战VSTS2010驱动开发
在Visual Studio 2010中,敏捷测试驱动开发功能非常强大,微软把Scrum和XP敏捷思想融入到Agile过程框架之中。TFS2010中增强了团队源码版本管理、迭代开发和驱动测试开发模型等,从而给微软.Net开发人员非常大的帮助。VSTS2010测试马甲和单元测试过程,如图3所示。
图3 VSTS2010单元测试过程
IUT——在生产环境中终交付而开发的软件。
Test Environment——测试环境。
测试驱动开发(TDD)基本过程:
(1)明确当前要完成的功能。可以记录成一个初始化测试清单(TODO)列表。
(2)快速完成针对一个功能的测试用例编写。
(3)测试代码编译通过,但测试用例通不过。
(4)编写对应的功能代码。
(5)测试通过。
(6)对代码进行重构,并保证测试通过。
(7)循环完成所有功能的开发。
·图书收藏实例
确定好backlog,进行sprint backlog,把story拆分成更小的故事,并在把故事拆分成任务,索引卡片参考图4所示。
图4 图书收藏Story索引卡
将案例分成任务,我们需要在很大程度上实现读者个人借阅图书的收藏集合。其中之一backlog索引卡,如图4所示。当读者到图书馆进行图书借阅中,会查询图书库所有相关类图书封面并选取其中自己需要的几本书。这个过程叫做“书签”,图书系统将通过图书管理来支持这个活动。为图书借阅集合初始化测试清单,参考1所示。
表1 为图书借阅夹初始化测试清单