第一部分
8月7日
開始體驗(yàn)JUnit測(cè)試驅(qū)動(dòng)開發(fā),為《敏捷軟件開發(fā)技術(shù)指導(dǎo)大綱(提案)》做準(zhǔn)備。
8月10日
撰寫《敏捷軟件開發(fā)技術(shù)指導(dǎo)大綱(提案)》,對(duì)于項(xiàng)目開發(fā)中若干重大事情進(jìn)行討論。主要包括:
1. 方法學(xué)的選擇:敏捷軟件開發(fā)
2. 開發(fā)范型的選擇:面向?qū)ο?/span>
3. 開發(fā)工具和框架的選擇:Eclipse+Struts+Spring+Hibernate
4. 開發(fā)規(guī)范:面向?qū)ο笤O(shè)計(jì)原則,Java開發(fā)編碼規(guī)范
同時(shí)這也是接下來(lái)的行動(dòng)指南,可以從下面的記錄中看到如何來(lái)一步一步完成上面這些內(nèi)容的學(xué)習(xí)、研究和實(shí)踐的。
8月11-8月13日
研究持續(xù)集成:Ant+JUnit+CruiseControl
8月14日
白天和宋巖一起完成了作業(yè)計(jì)劃的領(lǐng)域建模,同時(shí)也將整個(gè)系統(tǒng)的核心進(jìn)行了建模工作。
晚上和鐵東進(jìn)行了3個(gè)小時(shí)的結(jié)對(duì)編程,完成了白天建模的代碼。
應(yīng)用了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)、TDD、結(jié)對(duì)編程。發(fā)現(xiàn)了Eclipse很多功能對(duì)于敏捷開發(fā)非常有幫助,比如對(duì)于JUnit和重構(gòu)的集成,代碼輔助生成等。
8月15-8月18日
研究Struts+Spring+Hibernate,一方面在做方案比選;一方面在看相關(guān)的書籍,并進(jìn)行小程序的測(cè)試,同時(shí)在撰寫編程規(guī)范。
選型工作主要包括如下內(nèi)容:
1. 在Struts1.2和Struts2.0中選擇了Struts1.2,原因是比較成熟,資源比較多,另外有MyEclipse工具支持。
2. Spring選擇了1.2版本,起初是因?yàn)橛泄ぞ咧С?,特別是和Hibernate的整合方面,不過(guò)后來(lái)看來(lái),這也并無(wú)益處。不過(guò)仔細(xì)考慮之后,發(fā)現(xiàn)2.0并未添加什么對(duì)我們有用的新特性,因此1.2和2.0對(duì)于我們而言是沒有區(qū)別的。
3. Hibernate3是毫無(wú)疑問(wèn)的選擇了。
考慮的問(wèn)題主要是兩方面:
1、如何使用它們
2、團(tuán)隊(duì)中如何使用它們
Spring的進(jìn)展比較快,如何進(jìn)行依賴注入,事務(wù)管理,持久化封裝,與Struts整合都在理論上搞通了。也就是知道如何操作了。
再已有的工具基礎(chǔ)上引進(jìn)了MyEClipse幫助開發(fā)SSH。Hibernate的研究主要基于這個(gè)工具,對(duì)于Hibernate的細(xì)節(jié),也就是它究竟能做什么還不是很了解。
8月19日
已經(jīng)利用Struts+Spring做出了用戶登錄Demo。
8月20日
使用xfire搞定Web Service,Delphi和J2EE可以同時(shí)訪問(wèn)權(quán)限服務(wù)。
開始研究Spring+Hibernate的Demo。
8月21日
看到Struts2.0的例子,發(fā)現(xiàn)其配置文件和標(biāo)簽都特別簡(jiǎn)潔,繼承了WebWork的一些優(yōu)點(diǎn),進(jìn)行了一番掙扎,決定還是使用Struts1.2。
研究Hibernate,可以利用工具創(chuàng)建出Hibernate程序,不過(guò)創(chuàng)建出來(lái)的POJO非常惡心。
8月22日
終于和邢戩結(jié)對(duì)編程完成了SSH的Demo,并且意外使用了Hibernate的級(jí)聯(lián)保存功能,深刻認(rèn)識(shí)到了所謂的對(duì)象-關(guān)系阻抗不匹配的含義中的一部分(組合關(guān)系映射問(wèn)題)。
8月23日
我研究Struts,邢戩研究Hibernate,宋巖一直在做界面。
8月24日
劉老師提出Weblogic里有O/R Mapping功能,于是研究了一天,撰寫了《持久化策略選型:EJB2.x實(shí)體和Hibernate》一文。
同時(shí)確定了系統(tǒng)平臺(tái),J2EE服務(wù)器選用Weblogic,并且和Oracle都放在小型機(jī)上。
于是開始著手研究AIX和Weblogic。
8月25日
早上劉老師又提出了JBoss,統(tǒng)一用開源或免費(fèi)的技術(shù)平臺(tái),JBoss的最新版本已經(jīng)將IoC容器內(nèi)置到其中了,也就是說(shuō)使用JBoss再使用Spring的意義就不大了,但是能夠做并不意味著做得好,就像雖然J2EE標(biāo)準(zhǔn)化規(guī)范中存在O/RM解決方案,但是業(yè)內(nèi)公認(rèn)很糟糕就沒必要用了。
下午開會(huì)確定了垂直切片的系統(tǒng)環(huán)境,終于可以開始著手開發(fā)。
8月26日~8月27日
開始系統(tǒng)研究Hibernate,有感于自己持久化理論之差。
根據(jù)需求,我們不得不使用Ajax技術(shù),宋巖開始尋找這方面的資料,并且找到了Ext解決方案。并且發(fā)現(xiàn)這個(gè)已經(jīng)是社區(qū)上的首選框架了。
分別撰寫需求報(bào)告。
8月28日
和宋巖結(jié)對(duì)編程搞定了Ext顯示晝夜作業(yè)計(jì)劃功能。
8月31日
和宋巖結(jié)對(duì)編程搞定了在Ext grid中選中一條記錄。
對(duì)于Ajax框架有了更多了解,宋巖又研究了GWT等內(nèi)容。
我繼續(xù)研究Hibernate,主要研究了Spring的HibernateTemplate類,對(duì)于其用法和源代碼進(jìn)行了研究,體會(huì)到了開源的一些好處。
9月1日
和邢戩結(jié)對(duì)編程完成了晝夜作業(yè)計(jì)劃的插入,先在JUnit下測(cè)試通過(guò)了對(duì)于晝夜作業(yè)計(jì)劃的保存(遭遇了業(yè)務(wù)主鍵生成問(wèn)題,流水號(hào)都是數(shù)字竟然使用varchar2型,無(wú)法排序,在HQL中做類型轉(zhuǎn)化,找了很久才找到;本來(lái)想著只保存晝夜作業(yè)計(jì)劃明細(xì)表,沒想到它還對(duì)應(yīng)了一個(gè)主表,造成參照完整性破壞)。由于中間研究AIX,Weblogic,JBoss,EJB等等內(nèi)容,所以直到要演示了才開始實(shí)際的編程。
下午展示了一下功能。并深入的討論了代理主鍵替代業(yè)務(wù)主鍵的問(wèn)題。
9月2日到9月8日
宋巖和邢戩結(jié)對(duì)研究Ext+DWR。
9月8日
開會(huì)進(jìn)行了分工:
1、宋巖、邢戩負(fù)責(zé)表現(xiàn)層。主攻Ext及其它Ajax框架+Struts
2、我和趙元負(fù)責(zé)Spring+Hibernate
3、郭勇和高鵬負(fù)責(zé)AIX
4、段文文和張慧琳負(fù)責(zé)數(shù)據(jù)庫(kù)
9月9日
劉老師又提出Dorado,宋巖和邢戩研究了一上午,覺得其過(guò)于強(qiáng)大,無(wú)法駕馭,對(duì)于所有的東西自成體系,沒法和其他框架整合。
花了一晚上時(shí)間,終于完成了使用Ext Form向Grid寫入數(shù)據(jù)功能。
9月10日
終于實(shí)現(xiàn)了Ext+Struts+Spring+Hibernate的整合中的增加記錄,選中一條記錄回顯到Form中。這樣做不破壞原有的體系架構(gòu)。宋巖和邢戩停止嘗試DWR,開始轉(zhuǎn)向直接使用Ext與Struts交互。
9月11日
使用Ext完成了刪除功能,并且和Dialog聯(lián)合了起來(lái)。
下午和宋巖結(jié)對(duì)編程,晚上和邢戩結(jié)對(duì)編程。
9月13日
經(jīng)過(guò)兩天,Ext這方面已經(jīng)取得了很大的進(jìn)步,宋巖對(duì)于這部分內(nèi)容也越來(lái)越熟悉。
完成添加晝夜作業(yè)計(jì)劃功能,不過(guò)存在中文亂碼問(wèn)題。
黃老師提出自動(dòng)安排泊位和樁位功能,涉及到ComboBox聯(lián)動(dòng)問(wèn)題。
9月14日
解決中文亂碼問(wèn)題和ComboBox聯(lián)動(dòng)問(wèn)題。
和邢戩實(shí)踐了契約式編程,通過(guò)定義接口來(lái)協(xié)調(diào)兩層的工作。發(fā)現(xiàn)還需要對(duì)如何進(jìn)行測(cè)試驅(qū)動(dòng)開發(fā)進(jìn)行培訓(xùn)和講解。
我負(fù)責(zé)解決技術(shù)問(wèn)題,做出Demo,然后宋巖和邢戩應(yīng)用到實(shí)際的任務(wù)中,不過(guò)其間依然存在很多問(wèn)題,致使宋巖通宵達(dá)旦,終于完成了添加晝夜作業(yè)計(jì)劃功能。同時(shí)增加了Ext menu,Toolbar等,界面更加美觀。
9月15日
當(dāng)切換到新的數(shù)據(jù)庫(kù)時(shí),發(fā)現(xiàn)兩個(gè)業(yè)務(wù)主鍵的生成規(guī)則竟然變了,導(dǎo)致程序異常無(wú)法使用。再一次看出業(yè)務(wù)主鍵的缺點(diǎn)。同時(shí)發(fā)現(xiàn)Hibernate對(duì)于數(shù)據(jù)庫(kù)切換覺有優(yōu)勢(shì),只需要修改配置文件即可。
后來(lái)又花了一下午時(shí)間,我和邢戩解決了上述問(wèn)題。
在過(guò)去的一個(gè)月時(shí)間里,對(duì)照《敏捷軟件開發(fā)技術(shù)指導(dǎo)大綱(提案)》中的內(nèi)容:
1、敏捷開發(fā)方法
1) JUnit測(cè)試驅(qū)動(dòng)開發(fā)
2) Ant自動(dòng)構(gòu)建,CruiseControl持續(xù)集成
3) 結(jié)對(duì)編程
4) 重構(gòu)
5) 簡(jiǎn)單設(shè)計(jì),領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)
2、面向?qū)ο?/span>
1) 領(lǐng)域建模
2) 契約式編程
3、技術(shù)和框架的應(yīng)用
1) AIX:基本命令的使用,安裝Oracle
2) Weblogic和JBoss
3) EJB實(shí)體Bean和Hibernate
4) Spring
5) Struts
6) Ajax框架:Ext,Dorado,DWR,GWT
7) Xfire Web Service
4、規(guī)范
完成了晝夜作業(yè)計(jì)劃第一個(gè)迭代版本,具體的經(jīng)驗(yàn)成果請(qǐng)見下一部分。