|
有感于目前公司的一個項目產(chǎn)品中遇到的一些問題,結(jié)合著自己的設(shè)計與開發(fā)經(jīng)歷,總結(jié)一下系統(tǒng)設(shè)計與規(guī)劃的必要性和知識點,作為將來設(shè)計的參考,也與大家一同探討系統(tǒng)設(shè)計中要注意的各方面。
產(chǎn)品簡介:該產(chǎn)品是一個WebGIS系統(tǒng),歷經(jīng)2-3年的開發(fā)與實施,目前準(zhǔn)備從項目升級為產(chǎn)品,但是在項目實施中暴露出大量問題,使得實施人員和開發(fā)人員狼狽不堪,離產(chǎn)品要求還有較大差距,所以領(lǐng)導(dǎo)層意識到問題的嚴(yán)重性,要求進(jìn)行改造,并讓我做一些技術(shù)指導(dǎo)和設(shè)計上的把關(guān)。作為一個未曾參與開發(fā)的其它小組成員,以旁觀者的身份進(jìn)行觀察,發(fā)現(xiàn)
目前存在的一些問題:
1. 系統(tǒng)功能不穩(wěn)定,很多基本功能都會偶爾冒出問題,搞得實施人員提心吊膽,對產(chǎn)品沒信心。
2. 系統(tǒng)中出現(xiàn)一些低級錯誤,比如分頁功能出錯,上傳文件的功能沒有文件類型過濾...諸如此類,有失專業(yè)水準(zhǔn)。
3. 只支持IE瀏覽器,但對IE6和IE8不支持,只能強迫用戶安裝IE7,并且要用兼容模式瀏覽,使用很不方便。
4. 因為不同項目的需求不同,客戶的界面風(fēng)格喜好不一樣,所以為各個項目的修改和定制花費大量精力。
5. 在修正客戶所提的bug過程中,時常引入另外的bug,把原本好的功能弄出錯誤。
6. 對運行環(huán)境的測試不充分,遇到64位操作系統(tǒng)或者英文版操作系統(tǒng),就會出一些問題。
7. 數(shù)據(jù)庫限定太死,目前只支持ORACLE,且限定在特定的版本,如果使用ORACLE的RAC還會很麻煩。
8. 部署太麻煩,手動執(zhí)行數(shù)據(jù)庫腳本,配置文件有好幾個,每次換IP或者數(shù)據(jù)庫發(fā)生變動,要手動替換好些字符串,最讓人郁悶的是居然把URL地址記錄在數(shù)據(jù)庫表里。
9. 沒有運行日志記錄,所以很難由客戶提供運行的異常信息,只能自己調(diào)試。
這樣的問題其實一直都存在,只是以前我不知道罷了,但實施人員多次反映,客戶也一直提出問題,依然得不到徹底的解決,使我更加迷惑。于是通過與開發(fā)人員和實施人員的交流,了解到造成困局的一些原因:
1. 前期需求不完整,造成后期的變更頻繁,開發(fā)人員難以應(yīng)付。
2. 數(shù)據(jù)庫訪問存在多種方式:JDBC, Hibernate和公司研發(fā)的訪問組件。
3. 最初的項目是在ORACLE上實施,所以一直以此為目標(biāo)數(shù)據(jù)庫,沒有兼顧到其它數(shù)據(jù)庫,也沒有測試過RAC環(huán)境。
4. 由于考慮到一些界面效果,使用了IE7上的特性,造成瀏覽器不兼容。
5. 各功能模塊之間的耦合度太高,相互依賴,所以牽一發(fā)而動全身,不敢輕易改動。
6. 由于缺少測試人員,開發(fā)人員只能自己測試,但沒有使用單元測試和自動化測試工具,也沒有壓力測試和運行環(huán)境的測試。
7. 各個項目同時實施,開發(fā)人員身兼各個項目的技術(shù)支持和維護(hù),版本維護(hù)和代碼修改難免出現(xiàn)混亂。
出現(xiàn)這樣的局面,其實是多方面的因素:需求分析、過程管理、架構(gòu)設(shè)計、代碼質(zhì)量等。但個人覺得,最主要的還是沒有做好系統(tǒng)設(shè)計,缺乏整體規(guī)劃,過早進(jìn)入編碼階段,使得系統(tǒng)僵化,擴(kuò)展能力不足,無法靈活應(yīng)變。所以我才想到了系統(tǒng)設(shè)計規(guī)劃這樣一個主題,這個主題也沒有什么明確的定義,個人理解是對軟件產(chǎn)品和項目的一個分析和評估,考慮系統(tǒng)所涉及的幾個重要方面,并做好相應(yīng)的準(zhǔn)備,但不涉及解決方案的細(xì)節(jié)。同時,系統(tǒng)設(shè)計規(guī)劃也不同于架構(gòu)設(shè)計和詳細(xì)設(shè)計,個人認(rèn)為后兩者更偏向于業(yè)務(wù)邏輯的分層和模塊組織,以及核心類設(shè)計,更偏向于業(yè)務(wù)和代碼實現(xiàn)。根據(jù)個人的設(shè)計經(jīng)驗,對系統(tǒng)進(jìn)行分析和評估應(yīng)該考慮以下幾個因素:
1. 技術(shù)選型
2. 分層設(shè)計
3. 數(shù)據(jù)庫設(shè)計
4. 技術(shù)難點
5. 技術(shù)標(biāo)準(zhǔn)與行業(yè)規(guī)范
6. 性能設(shè)計
7. 測試設(shè)計
8. 調(diào)試設(shè)計
9. 安全設(shè)計
10. 部署設(shè)計
在這所列的10個因素中,前5個是經(jīng)常涉及的,也是考慮的較多的,但后5個可能考慮的不多。這些因素,每個都是一個很大的主題,背后都有很深的理論知識和豐富的實踐素材,沒有人能給出一個統(tǒng)一的解決方案。所以,我這里只是用圖表的形式進(jìn)行劃分,并列舉出每個主題的相關(guān)內(nèi)容和關(guān)注點。每個關(guān)注點背后也都涉及到很多知識,在系統(tǒng)設(shè)計時,需要結(jié)合著自身的開發(fā)實際和需求進(jìn)行取舍,并找到適當(dāng)?shù)膽?yīng)對策略。總之,我的目的是希望在系統(tǒng)設(shè)計之初,做好宏觀的分析和把握,制定出合適的解決方案,使得系統(tǒng)從容應(yīng)對后期的需求變更和代碼維護(hù)。
上圖所列內(nèi)容完全來源于個人經(jīng)驗,定有許多不足之處,還望補充和指正。
it知識庫:系統(tǒng)設(shè)計與規(guī)劃--一點總結(jié),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。