第一部分 
8月7日
   开始体验JUnit测试驱动开发,为《敏捷软件开发技术指导大纲(提案)》做准备。
8月10日
   撰写《敏捷软件开发技术指导大纲(提案)》,对于项目开发中若干重大事情进行讨论。主要包括:
1.         方法学的选择:敏捷软件开发
2.         开发范型的选择:面向对象
3.         开发工具和框架的选择:Eclipse+Struts+Spring+Hibernate
4.         开发规范:面向对象设计原则,Java开发编码规范
同时这也是接下来的行动指南,可以从下面的记录中看到如何来一步一步完成上面这些内容的学习、研究和实践的。
8月11-8月13日
   研究持续集成:Ant+JUnit+CruiseControl
8月14日
   白天和宋岩一起完成了作业计划的领域建模,同时也将整个系统的核心进行了建模工作。
   晚上和铁东进行了3个小时的结对编程,完成了白天建模的代码。
   应用了领域驱动设计、TDD、结对编程。发现了Eclipse很多功能对于敏捷开发非常有帮助,比如对于JUnit和重构的集成,代码辅助生成等。
8月15-8月18日
   研究Struts+Spring+Hibernate,一方面在做方案比选;一方面在看相关的书籍,并进行小程序的测试,同时在撰写编程规范。
   选型工作主要包括如下内容:
1.         在Struts1.2和Struts2.0中选择了Struts1.2,原因是比较成熟,资源比较多,另外有MyEclipse工具支持。
2.         Spring选择了1.2版本,起初是因为有工具支持,特别是和Hibernate的整合方面,不过后来看来,这也并无益处。不过仔细考虑之后,发现2.0并未添加什么对我们有用的新特性,因此1.2和2.0对于我们而言是没有区别的。
3.         Hibernate3是毫无疑问的选择了。
   考虑的问题主要是两方面:
   1、如何使用它们
   2、团队中如何使用它们
   Spring的进展比较快,如何进行依赖注入,事务管理,持久化封装,与Struts整合都在理论上搞通了。也就是知道如何操作了。
   再已有的工具基础上引进了MyEClipse帮助开发SSH。Hibernate的研究主要基于这个工具,对于Hibernate的细节,也就是它究竟能做什么还不是很了解。
8月19日
   已经利用Struts+Spring做出了用户登录Demo。
8月20日
   使用xfire搞定Web Service,Delphi和J2EE可以同时访问权限服务。
   开始研究Spring+Hibernate的Demo。
8月21日
   看到Struts2.0的例子,发现其配置文件和标签都特别简洁,继承了WebWork的一些优点,进行了一番挣扎,决定还是使用Struts1.2。
   研究Hibernate,可以利用工具创建出Hibernate程序,不过创建出来的POJO非常恶心。
8月22日
   终于和邢戬结对编程完成了SSH的Demo,并且意外使用了Hibernate的级联保存功能,深刻认识到了所谓的对象-关系阻抗不匹配的含义中的一部分(组合关系映射问题)。
8月23日
   我研究Struts,邢戬研究Hibernate,宋岩一直在做界面。
8月24日
刘老师提出Weblogic里有O/R Mapping功能,于是研究了一天,撰写了《持久化策略选型:EJB2.x实体和Hibernate》一文。
同时确定了系统平台,J2EE服务器选用Weblogic,并且和Oracle都放在小型机上。
于是开始着手研究AIX和Weblogic。
8月25日
早上刘老师又提出了JBoss,统一用开源或免费的技术平台,JBoss的最新版本已经将IoC容器内置到其中了,也就是说使用JBoss再使用Spring的意义就不大了,但是能够做并不意味着做得好,就像虽然J2EE标准化规范中存在O/RM解决方案,但是业内公认很糟糕就没必要用了。
下午开会确定了垂直切片的系统环境,终于可以开始着手开发。
8月26日~8月27日
   开始系统研究Hibernate,有感于自己持久化理论之差。
   根据需求,我们不得不使用Ajax技术,宋岩开始寻找这方面的资料,并且找到了Ext解决方案。并且发现这个已经是社区上的首选框架了。
    分别撰写需求报告。
8月28日
和宋岩结对编程搞定了Ext显示昼夜作业计划功能。
8月31日
和宋岩结对编程搞定了在Ext grid中选中一条记录。
对于Ajax框架有了更多了解,宋岩又研究了GWT等内容。
我继续研究Hibernate,主要研究了Spring的HibernateTemplate类,对于其用法和源代码进行了研究,体会到了开源的一些好处。
9月1日
和邢戬结对编程完成了昼夜作业计划的插入,先在JUnit下测试通过了对于昼夜作业计划的保存(遭遇了业务主键生成问题,流水号都是数字竟然使用varchar2型,无法排序,在HQL中做类型转化,找了很久才找到;本来想着只保存昼夜作业计划明细表,没想到它还对应了一个主表,造成参照完整性破坏)。由于中间研究AIX,Weblogic,JBoss,EJB等等内容,所以直到要演示了才开始实际的编程。
下午展示了一下功能。并深入的讨论了代理主键替代业务主键的问题。
9月2日到9月8日
宋岩和邢戬结对研究Ext+DWR。
9月8日
    开会进行了分工:
1、宋岩、邢戬负责表现层。主攻Ext及其它Ajax框架+Struts
2、我和赵元负责Spring+Hibernate
3、郭勇和高鹏负责AIX
4、段文文和张慧琳负责数据库
9月9日
刘老师又提出Dorado,宋岩和邢戬研究了一上午,觉得其过于强大,无法驾驭,对于所有的东西自成体系,没法和其他框架整合。
花了一晚上时间,终于完成了使用Ext Form向Grid写入数据功能。
9月10日
终于实现了Ext+Struts+Spring+Hibernate的整合中的增加记录,选中一条记录回显到Form中。这样做不破坏原有的体系架构。宋岩和邢戬停止尝试DWR,开始转向直接使用Ext与Struts交互。
9月11日
使用Ext完成了删除功能,并且和Dialog联合了起来。
下午和宋岩结对编程,晚上和邢戬结对编程。
9月13日
经过两天,Ext这方面已经取得了很大的进步,宋岩对于这部分内容也越来越熟悉。
完成添加昼夜作业计划功能,不过存在中文乱码问题。
黄老师提出自动安排泊位和桩位功能,涉及到ComboBox联动问题。
9月14日
    解决中文乱码问题和ComboBox联动问题。
和邢戬实践了契约式编程,通过定义接口来协调两层的工作。发现还需要对如何进行测试驱动开发进行培训和讲解。
我负责解决技术问题,做出Demo,然后宋岩和邢戬应用到实际的任务中,不过其间依然存在很多问题,致使宋岩通宵达旦,终于完成了添加昼夜作业计划功能。同时增加了Ext menu,Toolbar等,界面更加美观。
9月15日
当切换到新的数据库时,发现两个业务主键的生成规则竟然变了,导致程序异常无法使用。再一次看出业务主键的缺点。同时发现Hibernate对于数据库切换觉有优势,只需要修改配置文件即可。
后来又花了一下午时间,我和邢戬解决了上述问题。
在过去的一个月时间里,对照《敏捷软件开发技术指导大纲(提案)》中的内容:
1、敏捷开发方法
1)        JUnit测试驱动开发
2)        Ant自动构建,CruiseControl持续集成
3)        结对编程
4)        重构
5)        简单设计,领域驱动设计
2、面向对象
1)        领域建模
2)        契约式编程
3、技术和框架的应用
1)        AIX:基本命令的使用,安装Oracle
2)        Weblogic和JBoss
3)        EJB实体Bean和Hibernate
4)        Spring
5)        Struts
6)        Ajax框架:Ext,Dorado,DWR,GWT
7)        Xfire Web Service
4、规范
             完成了昼夜作业计划第一个迭代版本,具体的经验成果请见下一部分。