1.在UI层,定义界面事件的Handler,并将界面模块化。此处代码不应包含任何业务逻辑
2.在Business层,定义和业务相关的接口以及实现。系统里面和业务相关的代码都应放在Business Layer中
3.在Data Access层,定义获取数据的接口及实现。此处代码不应该包含任何业务逻辑。
在步骤1中,要分析出UI上面的事件。当事件分析出来后,再考虑如何来处理这些事件,这时就进入了步骤2。
在步骤2中,分析出业务处理逻辑以及处理这些业务逻辑时所依赖的数据。可以一边写业务逻辑代码,一边根据业务逻辑来定义获取数据的接口。
最后在步骤3中,来实现获取数据的接口。
在步骤2中,可以根据Test Driven Development的思想,通过单元测试,来驱动代码的开发。这对项目的质量有很大的促进作用。
这个过程的实现依赖于依赖注入框架,独立的事件通知机制以及Mock框架。
当然,这个过程对风险控制和业务变更仍然是积极的。由于开发是从UI层面开始,一方面使开发人员对业务的理解逐步深化,另一方面使需求的落实变得更加具体,这个过程使得风险的暴露提前,使我们能够尽早发现风险,从而使我们有机会来控制风险。由于界面的模块化,在某种程度上能够缩小未来的需求变更的影响范围,即需求的变更可能只发生在某一个模块或几个模块中,从而只影响一个或几个模块,而不是整个系统。
以上虽然是针对Asp.net项目的开发流程的总结,但对其它类型的项目仍然适用。希望能够帮助你在项目开发和管理中理清思路。