架構
使用3-layer架構
建議
business layer的分析由BU使用domain model來分析,會讓service object更具有意義
好處
自動測試可行性與測試品質提高
針對問題分析後,可快速釐清是哪個layer的問題,再去修改對應的檔案
需搭配coding rule,註解
需記錄清楚的log
維護他人程式碼的時候,比較容易從問題單找到問題,而毋須瞭解整支規格
例如僅修改Presentation layer呈現的問題
壞處
每支程式之間的關係,coding rule需規範清楚
因為trace code至interface即無法移至定義
使用Spring.Net
好處
transaction控制變得容易
Adotemplate的parameter用法簡單,可有效防止SQL injection
rowmapper的部分可達到OR-mapping
Dependency Injection可輕易設計出Strategy Pattern
內建模組可輕易設計出Factory Pattern
壞處
需額外撰寫一些設定檔
不容易直接看到最後執行的SQL statement
底層控制項
好處
客製化的部分多屬於append,而非modified,Reuse比率高,底層開發時程短
已經克服公司UI核心元件與AJAX不相容的問題
共用的部分可統一修改
開發速度快、維護成本低
壞處
開發人員較難提升自身的技術能力
可以改進的地方
將客製化需要的js內嵌至dll裡
特殊驗證可採用AJAX control toolkit的Extender來improve
參數使用object,也就是DTO的方式傳遞
好處
容易擴充
壞處
多了很多可能只用一次的object class
可能會喪失一些OO的優點
開發
使用C#
好處
與java跟javascript的語法比較類似
新人建議從C#開始學起,C#與js一起學,轉換陣痛可以少一次
壞處
公司人員熟悉VB的居多,需有轉換的陣痛
Page的Event無法直接用下拉選單,需手動撰寫
只懂VB,不懂C#的應變計畫
http://www.developerfusion.com/tools/convert/vb-to-csharp/
client端
與先前的專案相比需要撰寫的javascript減少很多
總共僅52個js檔
一般程式+user control僅15支js檔
可以改進的地方
使用jQuery讓UI更Rich
偵錯
Log4Net
問題
直接使用log4net,搭配Spring.net會有問題,會抓不到是哪支class哪個method哪一行呼叫logwriter
因為一開始Spring就會呼叫所有dao的建構式
解決方式
從一開始設計時就避開這個問題
在BaseDao裡,使用system reflection與tracestack,追蹤stack該method是被誰呼叫
feedback
可手動將adotemplate轉換前的SQL,判斷datatype,自行取代成可執行的SQL statement記錄在log中
Session information on page
可加快偵錯速度與問題還原的品質
UAT在user side的人員可提供訊息給後端開發人員偵錯
SA或其他user site開發人員可透過SQL log與session快速分析問題癥結點
會影響些許performance
可以改進的地方
可設計在webconfig動態開關此功能
feedback
UAT時可以獲得user site的測試資料與DB schema,可以提高相當高的問題還原速度
有效解決以往在user site才會發生的問題,在公司卻正常的情況
定時備份DB schema與資料
尤其問題單是整合測試才會發生的問題,牽扯資料面跟流程太廣,擁有可還原資料的紀錄點可幫助解決影響層面與資料太廣的問題
User site能提供VNC服務的話,可以降低UAT駐點人數
問題單上使用wink記錄User site,問題發生的操作過程
可與user site的資料結合,快速還原與釐清問題
呈現
一般按鈕使用圖檔按鈕
好處
美觀
壞處
request會影響一點點效能
較無彈性
可以改進的地方
改用一般button+css漸層來達到美化效果
可以改進的地方
未來可以搭配jQuery或AJAX control toolkit來達到整理頁面的效果
如HoverMenu、CollapsiblePanel、Accordion
提昇效率
使用AJAX或jQuery的xmlHttpRequest搭配web service
如AJAX control toolkit的AutoComplete
自動測試
於Business layer與Data accesslayer撰寫Unit Test
好處
可以讓開發人員及早發現自己設計的盲點
透過daily build可達到迴歸測試的效果,避免牽一髮動全身
提高各程式基本品質
壞處
額外的開發成本不低
修改頻率頻繁
可以改進的地方
想辦法提早獲得相關的test case
問題單上的test case回補至unit test
多人同時開發時,測試DB的設計方式
working model
可以改進的地方
User site應該要有程式過版的能力
SVN的更新
檢查目前測試機版本與問題單對應版本的能力
線上視訊會議效果不彰
user site通常網路品質不穩
跨功能模組時的分析與設計
如跨SA設計的功能規格可能會有互等的deadlock情況,或是矛盾的情況發生
跨PA的功能設計,溝通上的情況可以改進,避免發生重複開發的情況
測試腳本
如果可以在規格上補上測試規格與測試腳本(包含test case),可讓開發人員更能瞭解該功能目的與提升程式品質
feedback
每週review進度使用excel瞭解整個專案的進度、milestone、人力情況,徹底反應現實專案情況
數據化的呈現更能讓leader掌握進度跟提早解決問題
SA帶領PA,PA帶領一組PG的方式,在開發上速度較快,但可能有開發人員面對跨SA設計的規格時,維護上適應的轉換成本