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