對(duì)spring框架和開發(fā)模式進(jìn)行了驗(yàn)證。大家有什么問題或好的建議,請(qǐng)回復(fù),大家一起討論!
一、 項(xiàng)目目標(biāo)及完成情況
目標(biāo) |
完成情況 |
技術(shù)驗(yàn)證和推廣 |
完成較好。
1. 共有7人實(shí)際參與項(xiàng)目開發(fā),我們引入maven2作為構(gòu)建工具,eclipse作為ide環(huán)境。大家都能在很短的時(shí)間初始化項(xiàng)目,并快速掌握各自需要的技術(shù)(如spring,spring mvc等)進(jìn)行開發(fā)。
2. 對(duì)分層開發(fā)的模式也進(jìn)行了探討,證明它是可行的:可以各層并行開發(fā),提高開發(fā)效率;而通過分層可以隔離關(guān)注點(diǎn),使得各層開發(fā)人員可以只關(guān)注本層相關(guān)技術(shù)和接口,減輕開發(fā)人員負(fù)擔(dān),提高效率。
3. 在項(xiàng)目活動(dòng)中碰到一些技術(shù)難點(diǎn),我們將解決方案文檔化,然后項(xiàng)目內(nèi)共享,這樣能在碰到同樣問題時(shí)快速解決。現(xiàn)在還是碰到問題才解決,以后需要建立預(yù)研機(jī)制,較早發(fā)現(xiàn)可能出現(xiàn)的難點(diǎn),盡早解決,避免對(duì)項(xiàng)目進(jìn)展產(chǎn)生影響。
4. 平臺(tái)還處于建設(shè)階段,對(duì)項(xiàng)目的支持還不夠,需要形成一些通用的組件。 |
過程和管理實(shí)施 |
有待提高。
1. 測試1.0版已發(fā)布,目前開發(fā)1。1版,完善分頁功能和采用更好的驗(yàn)證方式。由于對(duì)規(guī)范開發(fā)的項(xiàng)目周期估計(jì)不足,加上管理上的一些問題,導(dǎo)致項(xiàng)目有所延期,需要對(duì)實(shí)際的項(xiàng)目開發(fā)進(jìn)行量化分析,確立比較準(zhǔn)確的人員和時(shí)間計(jì)劃。
2. UC文檔規(guī)范和編碼規(guī)范等的引入,為項(xiàng)目提供了較好的支持。
3. 在實(shí)施中比較缺乏必要的文檔支持,如設(shè)計(jì)文檔等;同時(shí)各層的接口定義也出現(xiàn)較多問題,導(dǎo)致一些開發(fā)瓶頸的出現(xiàn),這都需要在正式迭代中改進(jìn)。 |
系統(tǒng)功能 |
完成較好。
1. 完成了UC文檔確定的功能點(diǎn),頁面美觀,使用方便,能給用戶較好的頁面體驗(yàn)。
2. 采用較好的面向?qū)ο笤O(shè)計(jì),能提供一定的可重用性和擴(kuò)展性。 |
二、展現(xiàn)層總結(jié)
經(jīng)驗(yàn)與教訓(xùn)
1. SpringMVC是一個(gè)簡潔、標(biāo)準(zhǔn)的MVC實(shí)現(xiàn),結(jié)構(gòu)清晰,功能強(qiáng)大(主要體現(xiàn)在對(duì)日常WEB開發(fā)中可能遇到的各種常見問題的解決方案),有一定學(xué)習(xí)曲線,但是有其它MVC框架基礎(chǔ)的開發(fā)人員可以較快上手;
2. 根據(jù)業(yè)務(wù)功能盡早確定接口,接口由展現(xiàn)層確定,由業(yè)務(wù)層實(shí)現(xiàn);
3. 合理選擇Controller可以減少開發(fā)工作量,前提是充分理解每種Controller的處理機(jī)制及其回調(diào)方法細(xì)節(jié),Controller的編寫更多的精力主要花在校驗(yàn)、出錯(cuò)處理上;
4. 頁面工作量很大,特別是需要比較復(fù)雜javascript的頁面;
5. UI的流轉(zhuǎn)設(shè)計(jì)等對(duì)于Controller的編寫和業(yè)務(wù)層的接口有著很大的影響,應(yīng)盡早明確,否則會(huì)產(chǎn)生較大的返工;
6. 展現(xiàn)層開發(fā)可以與業(yè)務(wù)層同步進(jìn)行,推薦確定接口后,就編寫業(yè)務(wù)層接口的mock實(shí)現(xiàn),放在展現(xiàn)層的test包內(nèi),同時(shí)寫單獨(dú)的測試用spring配置文件;
待解決問題
1. Controller是否應(yīng)寫test case,本次開發(fā)未做;
2. 如何減少校驗(yàn)的工作量,對(duì)于有業(yè)務(wù)邏輯的服務(wù)端校驗(yàn)如何實(shí)現(xiàn),是否需要采用一些validator框架,如sun的JEF的validator組件,目前我們進(jìn)行了研究,通過使用commons validator組件能夠較方便的實(shí)現(xiàn)validator;
三、業(yè)務(wù)層總結(jié)
經(jīng)驗(yàn)與教訓(xùn):
1. Spring,iBatis的應(yīng)用還是很成功的,學(xué)習(xí)曲線比較平滑,好的框架好掌握;
2. 比較重視測試,編寫很多測試案例,并頻繁使用maven運(yùn)行所有測試,使得問題能夠及早發(fā)現(xiàn),保證了各層能夠快速成功集成
3. 對(duì)于很多問題都需要經(jīng)過各層間的討論來確定;
4. 接口由展現(xiàn)層定義,由業(yè)務(wù)層實(shí)現(xiàn);
5. 持久層數(shù)據(jù)模型和領(lǐng)域模型是有區(qū)別的,但簡單的情況下可以合二為一;
6. Fa?ade模式還是很有價(jià)值的;
7. 一些開源軟件的使用需要比較小心,如iBatis的null的問題等,如果處理不當(dāng)會(huì)花費(fèi)較多的人力物力,需要技術(shù)較強(qiáng)的人對(duì)開源軟件花費(fèi)一定時(shí)間進(jìn)行源碼級(jí)的研究,才能找出較好的解決方案;
8. 認(rèn)識(shí)到設(shè)計(jì)的重要性,需要對(duì)前置、后置條件等進(jìn)行分析;
9. 數(shù)據(jù)類型分析簡單,造成數(shù)據(jù)庫設(shè)計(jì)對(duì)業(yè)務(wù)層產(chǎn)生不良影響;
待解決問題:
1. 溝通不夠,需要建立溝通渠道,是否可以有專門的場合和時(shí)間討論項(xiàng)目中的進(jìn)度和問題;
2. 計(jì)劃不明確,對(duì)于要完成哪些功能,完成到什么程度,沒有明確的定義,需要設(shè)置里程碑目標(biāo)。在正式迭代開始前,要明確每次迭代的任務(wù)和目標(biāo),需要結(jié)合業(yè)務(wù)需求進(jìn)行計(jì)劃;
四、持久層總結(jié)
經(jīng)驗(yàn)與教訓(xùn):
1. 通過代碼生成工具,能夠大大提高開發(fā)效率;
2. 工具使用者要求對(duì)ibatis和sql比較了解;
3. 在使用過程中對(duì)工具進(jìn)行了完善,這對(duì)正式使用工具提供了保證;
4. 與業(yè)務(wù)層的接口,應(yīng)該由業(yè)務(wù)層確定,由持久層實(shí)現(xiàn),而不是由持久層決定;
待解決問題:
1. 持久層的測試該如何進(jìn)行,才能真的有用;
2. 一些通用功能如分頁代碼生成,還在開發(fā)中;