?


在進(jìn)行系統設計時(shí),何做好系不僅要考慮軟件的??統設統設功能性需求,還要考慮非功能性需求,計闡計比??如軟件的述系性能(Performance)、可擴展性(Scalability),原則系(xi)統的何做好系穩定性(Reliability)、??部署(Deployment)和更新(Upgrade),統設統設可維護性(Maintainability),計闡計版本的述系管理,系統的原則安全(Security),界面的何做好系友好程度可用性(Usability, User experience)等。要想覆蓋所(′_ゝ`)有需求,統設統設實(shí)現一個(gè)簡(jiǎn)單而優(yōu)秀的計闡計系統,可謂艱難。述系
大道至簡(jiǎn),原則合適最好
什么是優(yōu)秀的系統設計? 這個(gè)問(wèn)題頗有爭議,但幾乎每個(gè)軟件工程師和(′?_?`)架構師都追求優(yōu)秀的系統設計。當然,系統設計并不代表結果,系統設計只是架構師或者帶頭程序員的工作,??優(yōu)秀的系統設計必須經(jīng)由良好的項目管理和團隊努力,經(jīng)過(guò)分析需求、設計、開(kāi)發(fā)、測試、分發(fā)、維護,以及迭代或重構的過(guò)程。中間哪個(gè)環(huán)節出了問(wèn)題,再好的設計都將功虧一簣。
可能每個(gè)人都對自己設計的系統很自信很滿(mǎn)意,ヽ(′ー`)ノ但“實(shí)踐是檢驗真理的唯一標準”。如果一個(gè)系統設計經(jīng)過(guò)實(shí)踐證明,大家(指客戶(hù)或用戶(hù))公(gong)認為優(yōu)秀的系統,那就是一個(gè)優(yōu)秀的系統設計。
大道至簡(jiǎn),適合的就是最好的。其實(shí)設計并沒(méi)有那么嚴重,適合的就是最好的,簡(jiǎn)單最好。軟件也是一種服務(wù),這個(gè)系統設計出來(lái)就是為了服務(wù)一些用戶(hù)還沒(méi)有被滿(mǎn)足的需求,如果你能夠恰好滿(mǎn)足了這些(xie)沒(méi)有被滿(mǎn)足的需求,而且能(neng)以比較低的代價(jià)提供這種服務(wù),那這就是最好的系統。因為系統設計的來(lái)源是商業(yè)需求,而商業(yè)追求利益最大化。你的軟件和┐(′д`)┌服務(wù)必須比別人功能更加先進(jìn),更加好??用,對變化的商業(yè) 需求反??應更加靈活,??推出或者升級的速度更快,開(kāi)發(fā)和維護成本更低,才能證明這個(gè)系統設計的優(yōu)秀?性。所以系統簡(jiǎn)單,不(bu)能說(shuō)明你的系統不優(yōu)秀,說(shuō)不定設計者有化繁為簡(jiǎn)的過(guò)人能力;系統復雜,功能繁多,也不能說(shuō)明系統優(yōu)秀。
技 術(shù)人員常常犯的錯誤是技術(shù)至上,技術(shù)第一,不計成本的去??設計和開(kāi)發(fā)無(wú)比先進(jìn)和靈活的系統,不計風(fēng)險的去采用最新的沒(méi)經(jīng)過(guò)實(shí)用的新技術(shù)。所以作為架構師,不僅僅需要精通(′?_?`)技術(shù),更需要良好的溝通協(xié)調,去了解業(yè)務(wù)和客戶(hù)真正的需求,真正站在客戶(hù)利益角度和最終用戶(hù)利益角度思考問(wèn)題和設計系統,在各種選擇中做出權 衡。
穩定壓倒一切
標題黨的風(fēng)格,但這個(gè)口號在社會(huì )上如此,(′_`)系統設計上也是如此。系統的穩定性壓倒一切,即使犧牲性能,也要確保系統的穩定。即使(shi)擴展性不強,也要保持系統穩定。即使用戶(hù)界面不友好,也不要系統不穩定。
為什么用戶(hù)這么關(guān)注穩定性?由于人們日(′;д;`)常的工作對系統依賴(lài)程度越來(lái)越多,因此系統必須可( ?ヮ?)靠。舉個(gè)例子,我想我們??都玩過(guò)CPUヾ(′▽?zhuān)??超頻吧,頻率高(╬ ò﹏ó)了確實(shí)挺爽,但如果一天死機幾次,正在干的活全部丟失,你心里還會(huì )放心踏實(shí)的工作嗎?同樣的道理,一個(gè)網(wǎng)站如果不穩定,經(jīng)常(chang)宕掉,用戶(hù)的信息和辛辛苦苦寫(xiě)的文章搞丟失,還會(huì )有人上(????)這個(gè)網(wǎng)站嗎?所以穩定性是系統設計最重要的方面。
但實(shí)施起來(lái)比說(shuō)起來(lái)困難,有時(shí)候為了實(shí)現系統靈活的擴展性,導致系統架構不穩定;也有(you)時(shí)候為了(?Д?)實(shí)現高性(xing)能,導致系統不穩定。如何???取舍和平(′ω`*)衡,不同的需求,不 同的架構師(╯‵□′)╯會(huì )做(′?`)出不同的抉擇。但個(gè)人認為穩定性放第一位,再先(╯‵□′)╯進(jìn)靈活的框架,再牛的功能,如果不夠穩定,堅決不要沒(méi)有充分測試匆忙上線(xiàn)。
系統穩定性如果獲得?除了大量充分的測試(′?ω?`)以外,在設計上必須有針對可靠性的設計,基本原則是在盡量保證各服務(wù)可靠的基礎之??上,通過(guò)一個(gè)健壯的體??系結構來(lái)確保系統能夠在硬件和軟件出錯的情況下依然平穩的運行。比如(ru)采用統一面向方面的框架,統(tong)一的異常處理、錯誤隔離、報警、容錯和恢復機制,考慮系統的冗余度,盡可能地避免單??點(diǎn)故障,盡??可能地保證一個(gè)(′_ゝ`)進(jìn)程故障都不會(huì )引起系統的(′?`)癱瘓,同時(shí)也允許系統對部分服務(wù)做升級┐(′д`)┌和維護而不影響系統繼續提供核心的服務(wù)等等??傊?,系統可靠性是系統在給定的時(shí)間間隔及給定的環(huán)境條件下,按設計要求,成功地運行程序的概率。成(cheng)功地運行不僅要保證系統能正確地運行,滿(mǎn)(╯°□°)╯足功能需求,還要求當系統出現意外故障時(shí)能夠盡快恢復正常運行,??數據不受破壞。
可擴展性,靈活性
毋庸置疑,一個(gè)先進(jìn)的系統設計具有很強的可擴展性和靈活性,因為現在的商業(yè)需求變化迅速,如(ru)果每次小小變化都(dou)導致大量系統改動(dòng)的話(huà),(??ヮ?)?*:???這樣的體系結構無(wú)疑是失敗的。所以架構師必須去主動(dòng)迎接未來(lái)可??能的變化???,設計靈活的可擴展的架構。但具體系統的可擴展性做到哪個(gè)程度,以及和其(qi)他設計指標的權衡利弊如何取舍是個(gè)問(wèn)題。
架構設計必須盡量封裝可能的變化,例如在業(yè)務(wù)流程??發(fā)生有限的變化時(shí)(比如每個(gè)業(yè)務(wù)模塊本身的業(yè)務(wù)邏輯沒(méi)有變的情況下),能夠比較??方便ヾ(′ω`)?地修改系統程序模塊或組件間的調用關(guān)系(xi)而實(shí)現新的需求;如果這種調用關(guān)系被設計成存儲在配置庫的數據字典里,則連程序代碼都不用修改,只需修改數據字典里的模塊或組件調用規則即可。這就是按需設計,不是過(guò)度設計。
設計指標的權?衡利弊如何取舍的問(wèn)題也很明顯,比如降低依賴(lài)性常用的方法是封裝變化(Wrapper),分層設計,但會(huì )帶來(lái)系統的性能下降,尤其是大數據量的情況下;引入緩存機制吧又會(huì )增加系統復雜性,降低系統穩定性等。因為過(guò)于復雜的設計既造成系統不穩定的隱患,又影響性能。
這方面的討論很多,個(gè)人認為可擴展性和靈活性設計是架構設計中非常重要的方面,但不能(⊙_⊙)過(guò)度。穩定性第一,接下來(lái)是靈活性第二,還是性能第二靈活性第三的問(wèn)題,要具體看需求的情況了。(??ヮ?)?*:???如果是一個(gè)實(shí)時(shí)大( ?° ?? ?°)數據量大用戶(hù)在線(xiàn)服務(wù)系統,應該在性能的前提下實(shí)現靈活;如果是一個(gè)其(qi)他的業(yè)務(wù)系統,靈活性?xún)?yōu)先于性能。具體情況要具體權衡利弊。
高性能
在進(jìn)行性能設計時(shí),首先要與客戶(hù)充分地溝通,了解客戶(hù)的性能需求,不管它是清晰的還是暗含的。不要等到項目后期才發(fā)現其實(shí)數據量是60萬(wàn)而不是10萬(wàn)。所以預先了解項目的性能指標,獲取與性能相關(guān)的數據,從而預先評估架構的性能指標非常重要。
可用性,用戶(hù)友好性
設計以人為本,到頭來(lái)還是給人用的。產(chǎn)品經(jīng)理、客戶(hù)和最終用戶(hù)很注重界面,他們不知道你的系統有多么先進(jìn),只看界面是不是美觀(guān),界面友好,標準,操作流暢,有良好的用戶(hù)體驗(User experience)。界面做好(hao)了,客戶(hù)滿(mǎn)意,你就成功了一半;否┐(′д`)┌則內(nei)部系統再先進(jìn),客戶(hù)都會(huì )認為這個(gè)系統非常糟糕,用戶(hù)體驗非常不好。因此,可用性設計在這個(gè)Web2.0的時(shí)代尤其重要。
針對可用性的設計應該由架構師、??用戶(hù)體驗設計師共同完成??捎眯栽O計不等于界面設計。界面設計是靜態(tài)的,而可用性設計是以用戶(hù)為中心的交互設計(Interaction Design),更關(guān)(guan)注用戶(hù)的行為和體驗。交互設計需要研究角色模型,用戶(hù)行為和上下(◎_◎;)文,數??據整合和呈現方式等(Per(′?ω?`)so??na,goal,scenario)。一個(gè)成功的可用性設計/用戶(hù)體驗設計需要一個(gè)或多個(gè)跨學(xué)科的設計師,傾聽(tīng)和收集用戶(hù)對系統使用的需求、體驗或不滿(mǎn),并進(jìn)行藝術(shù)化的設計。
例如一個(gè)失敗的網(wǎng)站,內容繁雜,讓客戶(hù)無(wú)所適從;搜索了一個(gè)內容,出來(lái)一堆東西,用戶(hù)想在這里面進(jìn)一步搜索,卻找不到這個(gè)功能。而良好的網(wǎng)站設計,用(yong)戶(hù)操作非常流暢,流程很容易讓用戶(hù)理解。簡(jiǎn)潔明了,沒(méi)有(′▽?zhuān)?)亂七八糟的東西干擾用戶(hù)。因為后者仔細研究過(guò)用戶(hù)交互模型,知道大多數用戶(hù)的操作習慣和困難,而網(wǎng)站內容是根據清晰的流程設計的。數據的呈現方式也是經(jīng)過(guò)整合的,不是所有數據都呈現給用戶(hù),而是呈現對用戶(hù)有用的數據。
可維護性,可管理性
可維護性包括代碼的可理解性,可測試性,可ヾ(′?`)?修改性和系統的可移植性。如果一個(gè)系統的可維護性??從最初沒(méi)(′?_?`)有得到很好的重視,當系統面臨重大的設計改動(dòng)時(shí),會(huì )發(fā)現幾乎無(wú)法入手,最簡(jiǎn)單的方法是徹底推翻重寫(xiě),于是造成大量的資源浪費。
具體來(lái)說(shuō),軟件系統可維護性差的原因有:
1.過(guò)于僵硬: 加入一個(gè)新性能,不僅僅意味著(zhù)建造一個(gè)獨立的模塊,而且因為這個(gè)新性能會(huì )波及(ji)很多其他的模塊,最好變成跨越幾個(gè)模塊的改動(dòng)。
2.過(guò)于脆弱: 對一個(gè)地方的修改,??往往會(huì )導致看上去沒(méi)什么關(guān)系的另外一個(gè)??地方發(fā)生故障。盡管在??修改之前,設計師會(huì )盡力預測可能的故障點(diǎn),當是修改完成之前(qian),系統的原始設計師們甚至都無(wú)法預測(′ω`*)到可能會(huì )波及的地方。
4.黏度過(guò)高: 有的時(shí)候,一個(gè)改動(dòng)可以以保存??原(′?`)始設計意圖和原始設計框架的方式進(jìn)行,也可以以破壞原始意圖和框架的方式進(jìn)行。一個(gè)系??統設計,如果總是使得第二種辦法比第一種辦法容易,就叫黏度過(guò)高。
5.系統過(guò)于復雜:系統過(guò)于復雜和龐大,結構不盡合理,設計文檔缺乏或沒(méi)有更新,系統年齡大時(shí)間久遠。
可維護性設計應該采用靈活架構,采用復用的設計(ji)方法,盡量減少相互之間的依賴(lài)項,盡量采用成熟的工業(yè)應用級的產(chǎn)品和框架,采用代碼審查機制等。傳統軟件工程用可理解性、可測試性和可修改性來(lái)衡量軟件的可維護性,CASE軟件工程則以考察可重用性來(lái)衡量可維護性??删S護性最直接的體現是良好的軟件結構和完整正確的文檔體系。維護應在文(°□°)檔級以上展開(kāi),應從軟件結構(O_O)出發(fā),即以重構(T_T)為核心??芍赜眯允强删S護性的基本屬性,最大限度地重用現存軟件是軟件維護方法學(xué)的重要思想??原則。
運行可管理性,包括運維對系統軟硬件各個(gè)部分的監控,以便于控制系統運行、監視系統狀態(tài)、錯誤處理。為了實(shí)現上述目標,系統應該盡量采用參數化的可配置的設計,模塊間通信應當盡可能簡(jiǎn)單,同時(shí)建立合理詳盡的系統運行日志,系統通過(guò)自動(dòng)審計運行日志和動(dòng)態(tài)跟蹤(dynamic tracing facility),了解系統運行狀態(tài)、監控資源的使(?????)用和配置、進(jìn)行有效的錯誤處理。
網(wǎng)站建設詳細方案_杭州公寓網(wǎng)站建設方案_1
網(wǎng)站建設營(yíng)銷(xiāo)型_營(yíng)銷(xiāo)型網(wǎng)站建設核心工作網(wǎng)站建設營(yíng)銷(xiāo)型_紅谷灘區個(gè)人網(wǎng)站搭建的特點(diǎn)網(wǎng)站建設維護_遵義宣傳網(wǎng)站建設報價(jià)
手機:
13910811300
電話(huà):
010-52661970
傳真:
010-82694569
網(wǎng)址:www.javn.cn
郵箱:[email protected]
朝陽(yáng)一部:朝陽(yáng)區紫芳路九號院廣順園2號樓2605A
海淀二部:回龍觀(guān)黃平路19號院泰華龍旗廣場(chǎng)E座1212室(距西三旗橋2公里,8號線(xiàn)育新站海淀昌平交界)
© 2025.Company name All rights reserved.網(wǎng)站地圖 天津九安特機電工程有限公司-More Templates 粵ICP備888888號