原来上网我下了很多VS2008驱动的Asp.net的Demo。而我用的是VS2005,我在使用这些小样时,基本上绝大部分基于VS2005的Asp.net工程都因为少数文件无法转换而无法加载工程,为此我也苦恼很久,后来终于让我找到了解决办法。
敏捷团队可以采用在软件工程学里有比较成熟的OOAD(Object Orient Analysis & Design,面向对象的分析和设计)软件开发方法(参见笔者著作《我也能做CTO之程序员职业规划》的高级程序员技术能力),在用户需求层面找到,并抽象出相对不变的需求。OOAD科学分析法体现的是‘现实事实的抽象理解能力’,以业务为中心来分析解决问题,不涉及求解方案。分析阶段所做的主要工作是理解问题和需求构模,将现实世界中的问题映射到问题域,从而稳定主要需求。OOAD包括‘设计模式能力’,反映计算机世界来体现现实世界。#t#
分析阶段主要是明确用户的功能需求,满足用户所需的系统部件及其结构。设计阶段则主要是确定实现用户需求的方法,即怎样做才能满足用户需求,并构造出系统的实现蓝图。
VS2008驱动要求在设计中要映射现实世界中(指问题域,如图2所示)的对象和实体,如程序员、汽车、项目实施人员等。VS2008驱动这就需要在设计中尽可能地接近现实世界,VS2008驱动以最自然的方式表述实体。所以,面向对象技术的优点就是能够构建与现实世界相对应的问题模型(桥梁),并保持它们的结构关系和行为模式。
例如,我们通常做的系统分析是在假定需求不变的情况下进行的,这样可以把企业的资源配置到***的程度,但是企业的需求是变化、不稳定的,那么以变化的需求为基础建立起来的软件系统当然也就不稳定了。需求是项目的根本,既然需求都是不稳定的,那么何以建立起稳定的企业信息系统呢?
采用VS2008驱动的方法时的需求不稳定,可分析出这不稳定的东西就是对象。世界都是由对象组成的,而对象都是持久的,例如动物、植物已经有相当长的时间。虽然对象也在变化,动物、植物也在不断进化。但对象在一个相当长的时期内都存在,动植物的存在时间肯定比任何一家企业长久。面向对象开发方法的精髓就是从企业的不稳定需求中分析出企业的稳定对象,以企业对象为基础来组织需求、构架系统。这样得出的系统就会比传统的系统要稳定得多,因为企业的模式一旦变化,只需将稳定的企业对象重新组织就行了。
在敏捷XP中,采用的是VS2008驱动软件的设计和编程实践,即,测试驱动开发。笔者负责过很多项目的敏捷实践中,更喜欢UDD(Use Case-Driven Development)比较适合目前的国情。它可根据用户目标,编写软件需求,根据软件需求,编写系统(验收)测试,即,用户目标驱动。利用 UML 对软件的设计进行建模,这部分建模当然是敏捷的(agile)。简单的只需几秒钟可以迅速在人的大脑中完成,复杂的则可以画在纸上、白板上,记录在建模工具生成的电子文档中,当需求稳定后可以迅速转化成软件应用代码,在结合TDD会有很不错的效果,这种理论体系有些像太极原理,需求的变化看似武术中的招式,采用UDD见招破招,无招胜有招,这种客户的需求应变使得UDD更为敏捷。