软件行业发展了很多年,已经衍生出各种开发模式,像RUP,极限编程等等。而本文详细记录了我在使用轻量级B/S引擎NoahWeb来开发B/S结构的CSDN新闻MIS系统的时所使用的“增量迭代”开发模式的过程。意在让更多的人能了解和对比NoahWeb中所倡导的“增量迭代”开发模式同其他模式的不同之处。
特别感谢:撰写本文时由于得到CSDN相关部门的大力支持!因此文中所提MIS系统的各阶段源码也随本文同时提供,在了解这套MIS系统的开发模式的同时,有兴趣的读者还可以深入了解一下CSDN对新闻采编所使用的先进管理经验,再次感谢CSDN为我们无私的公开该项目源码与管理思想。
先来和大家介绍一下本文中将要登场的三个人物(使用代称):
James-我公司的客户经理 Neo-CSDN管理人员 job-也就是我,这个项目的具体实施者 另外还有CSDN一些使用该系统的使用者。
6月8日(星期三):需求分析阶段
上午
早晨到公司上班,James告诉我有一个新的系统要开发,是CSDN的一个MIS系统。并把头天晚上他和Neo在MSN进行的一段交谈记录发给了我,并要我尽快完成这个项目,MSN谈话中Neo详细讲述了他所需要的新闻报道的MIS系统的需求,看后我对系统也有了个大概了解。
MSN中的内容如下:
点击这里查看原对话内容 --
由于NoahWeb开源示例中已经有一套成型的MIS权限管理示例,并提供了完整的源码,所以有关MIS中的权限这部分我觉得我没必要再做了,可以直接以它为蓝本继续开发。另一方面虽然Neo对所系统的需求已经描述的很仔细,可是系统中有关系的元素很多。我和Neo之间的理解可能会有很大差异,因此开发管理上我决定采用“增量迭代”模式,逐步探索该系统的需求,同时保证整个项目能尽快完成。
因此,第一步:我先用假页面进行系统策划,以便更多更深刻的了解Neo那边的需求。
下午
15点36分:经过一系列分析,我制作出假页面交付给James,我们的目的是更多更深刻的了解Neo那边的需求。这时的假界面版本暂定为1.0。点击查看原对话内容 --
策划1.0版本
James把这个策划发给了Neo,其中他们又使用了MSN进行沟通,对话内容如下:
点击查看1.0版本 --
15点41分:我回头看James和Neo在MSN对话的时候发现策划1.0版本中我遗漏了“搜索产品的功能”,呵没办法,常言到智者千虑也必有一失嘛。没等Neo给我反馈,我已经开始修改策划,又发了一套假页面的策划给James,这个版本为1.1。
点击 --策划1.1版本
16点53分:James拿到了Neo那边的意见,意见如下:
点击查看原对话内容 --MSN对话内容
为此我再次制作出了1.2版本的策划假页面。
点击查看1.2版本 --策划1.2版本
18点26分:James发来了和Neo的对话。策划出来的假页面已经不需要进行修改,这是个不错的消息。明天准备开始写代码实现功能。
点击查看原对话内容 --原对话内容
今天用静态页面做了好几个策划版本,目的是通过这些的界面可以让客户通过一定程度的真实体验感去体会系统最后开发出来的效果,从而提出反馈获得帮助获得更准确的需求,通过这几次的修改对客户的需求会更快更深的了解,这无疑是一种非常好的低成本增加效率的方式,也能大大减少开发后期需求变化的可能,至少不会出现和用户需求“大相径庭”的现象。
6月9日(星期四) - 6月10日(星期五) :编码实现阶段
从策划分析确定了这个MIS系统很小,所以“增量迭代”后面的过程我就简化了。周四和周五两天内没再同James或是Neo沟通,根据最后确定的策划1.2版,开始设计数据库和编写代码,由于NoahWeb的编码机制很利于“增量迭代”模式的开发,而且有很强的表单支持,资源重用很容易,所以在两天内整套MIS系统的功能就都实现了。
MIS系统1.0版本下载(根据策划1.2版,完成的实际版本MIS版本1.0)
给James发过去了代码,James在下班前把1.0版发给了CSDN的Neo,呵呵本周工作结束,周末我可以好好休息了。
6月13日(星期一) :空闲
今天没我啥事,可能CSDN那边还未进行部署吧。我继续做我别的事情。
6月14日(星期二) :变更阶段
上午
依旧没我啥事情,我接着弄别的。
下午
16点15分:CSDN的Neo给James发来了系统安装后的一个错误日志报告,我忽略的一个小BUG。
点击查看原对话内容 --对话内容
为此我赶快发送了将缺少资源的两个文件进行替换解决了此BUG。 16点22分:CSDN那边试用过系统之后发来了反馈意见,呵呵意料中的事了,一个系统没真正使用前谁也不能体会真实的使用感觉,所以在试运行阶段,变更是肯定的,这个正好也是“增量迭代”的中心思想!
点击查看原对话内容 --对话内容
18点29分:经过修改,把1.1版本给James发过去了。
18点47分:Neo和James联系,那边对于1.1版本基本上满意了,任务顺利完成。
点击查看原对话内容 --对话内容
后记:
“增量迭代”模式本身源于实际B/S项目开发的经验,它将整个必要的开发过程分成多个迭代过程,并通过迭代探索用户真实需求,并在每次迭代的同时根据最新获得的需求调整最终系统,使用迭代也将减少系统开发结束之后的变更工作量,把原本在项目最后阶段才会暴露出的变更融合进整个项目开发中,缩短开发周期!降低成本。
本次的开发到这里也就结束了。5天开发完成出这么一套系统的确不是一件容易的事情,最初3个版本的策划假页面起了很大的帮助,如果没有这些工作,恐怕两周也不能开发完成。另一方面NoahWeb引擎所采用的高效编码机制对采用“增量迭代”模式下的编码效率和迭代中变更支持也起到了决定性的作用。
希望这种开发模式能为大家带来一点点的灵感,谢谢。
参考资料:
参考一:什么是NoahWeb?(http://www.noahweb.net/what.aspx)
参考二:什么是动作?(http://www.noahweb.net/training/whataction.aspx)
参考三:适合1月以下的“增量迭代”管理流程(http://www.noahweb.net/training/website.aspx)
参考四:适合1月以上的“增量迭代”管理流程(http://www.noahweb.net/training/base.aspx)