2020国自产拍精品高潮直播_欧美专区另类在线视频_国产在线一本一精品_在线看国产成人

軟件開(kāi)發(fā)必須追求需求和設(shè)計(jì)

2015-06-10 14:24:18      訪問(wèn):

【內(nèi)容導(dǎo)讀】 一般來(lái)說(shuō),軟件產(chǎn)品要取得成功,必須同時(shí)兼顧需求和設(shè)計(jì)。而且歸根到底,所有的精妙設(shè)計(jì)都源自于實(shí)際的需求。如果沒(méi)有實(shí)際的需求,那么不論設(shè)計(jì)多么精妙,只是徒增成本而已。下面我們來(lái)探討一下設(shè)計(jì)是如何來(lái)滿足各種需求的。一、功能性。功能性需求是最容易

一般來(lái)說(shuō),軟件產(chǎn)品要取得成功,必須同時(shí)兼顧需求和設(shè)計(jì)。而且歸根到底,所有的精妙設(shè)計(jì)都源自于實(shí)際的需求。如果沒(méi)有實(shí)際的需求,那么不論設(shè)計(jì)多么精妙,只是徒增成本而已。下面我們來(lái)探討一下設(shè)計(jì)是如何來(lái)滿足各種需求的。

一、功能性。功能性需求是最容易想到的那部分需求,但是要確保系統(tǒng)功能的完整實(shí)現(xiàn),仍需要精心設(shè)計(jì)。通常我們通過(guò)領(lǐng)域分析來(lái)學(xué)習(xí)并確定系統(tǒng)功能,通過(guò)劃分子系統(tǒng)和功能模塊來(lái)實(shí)現(xiàn)對(duì)功能性的關(guān)注點(diǎn)分離。例如,在《彩色UML建模》一書(shū)中,將一個(gè)企業(yè)信息系統(tǒng)分解成了12個(gè)子系統(tǒng),分別是:物料資源管理、設(shè)施管理、制造管理、庫(kù)存管理、產(chǎn)品銷(xiāo)售管理、現(xiàn)金銷(xiāo)售管理、客戶賬戶管理、人力資源管理、關(guān)系管理、項(xiàng)目活動(dòng)管理、會(huì)計(jì)管理和文檔管理。

二、可靠性。不同的系統(tǒng)對(duì)可靠性有不同的要求,即平均無(wú)故障時(shí)間(MTBF)達(dá)到多少,或可用性達(dá)到幾個(gè)9.我們知道,一般系統(tǒng)的組成部件越多,出錯(cuò)的概率越大。但這只是故事的一個(gè)方面。要想提高系統(tǒng)的可用性,就要為系統(tǒng)增加更多的組成部件,即提供冗余部件。無(wú)單點(diǎn)故障的設(shè)計(jì),正是為了提高系統(tǒng)的可用性。RAID以及專(zhuān)為容錯(cuò)而設(shè)計(jì)的“NonStop”系列計(jì)算機(jī)和操作系統(tǒng),都是針對(duì)系統(tǒng)的可靠性需求所做的設(shè)計(jì)?,F(xiàn)在,人們?cè)絹?lái)越多地使用計(jì)算機(jī)集群來(lái)實(shí)現(xiàn)高可用性(HA)。安全性也是可靠性的一個(gè)方面,為此架構(gòu)師會(huì)設(shè)計(jì)一些機(jī)制,犧牲一點(diǎn)性能和易用性。

三、易用性。為了追求易用性,工業(yè)設(shè)計(jì)師和人機(jī)界面設(shè)計(jì)師殫思竭慮,設(shè)計(jì)出一些操作簡(jiǎn)單方便、適用于各種人群、各種場(chǎng)合的產(chǎn)品。IPhone以及奮起直追的Android手機(jī)就是這樣的產(chǎn)品。易用性為用戶節(jié)約了操作時(shí)間,帶來(lái)了價(jià)值。同樣,Photoshop的快捷鍵設(shè)計(jì)也是為了提高易用性,它只是有一條比較陡的學(xué)習(xí)曲線,學(xué)習(xí)成本較高而已。這些易用性設(shè)計(jì)的背后,都有真真切切的用戶需求。GUI是為了易用性,命令腳本也是為了易用性。

四、效率。不存在無(wú)限的資源,所以系統(tǒng)必然在效率方面有所要求。算法設(shè)計(jì)中的時(shí)間復(fù)雜度分析和空間復(fù)雜度分析,是每一個(gè)軟件架構(gòu)設(shè)計(jì)師必備的能力。如果需要讓一臺(tái)服務(wù)器服務(wù)盡可能多的并發(fā)用戶,如果需要讓軟件運(yùn)行在手機(jī)上,那么架構(gòu)師就必須為資源使用效率而設(shè)計(jì),考慮用時(shí)間換取空間或是反之。是否使用緩存機(jī)制?使用哪種緩存機(jī)制?架構(gòu)師會(huì)在需要的時(shí)候仔細(xì)斟酌。

五、可維護(hù)性。系統(tǒng)的運(yùn)營(yíng)維護(hù)成本才是總體擁有成本中的大頭。所以,好的架構(gòu)師知道,需要為運(yùn)營(yíng)維護(hù)而設(shè)計(jì)。復(fù)制/粘貼代碼是不好的行為。系統(tǒng)需要具備審計(jì)追蹤能力、需要能記錄日志。架構(gòu)的設(shè)計(jì)應(yīng)該盡可能滿足高內(nèi)聚低耦合的原則。需要有一些基礎(chǔ)設(shè)施來(lái)保證降低系統(tǒng)故障診斷成本和修復(fù)成本。SOA治理主要是從企業(yè)系統(tǒng)的可維護(hù)性需求出發(fā)來(lái)考慮問(wèn)題的。

六、可移植性。為什么Java會(huì)流行?因?yàn)橄到y(tǒng)有可移植性需求。人們甚至愿意為可移植性而犧牲一點(diǎn)效率。但是真正的架構(gòu)師知道,不用Java也能實(shí)現(xiàn)可移植性,用了Java也可能不能移植。Java只是架構(gòu)師在面對(duì)可移植性需求時(shí)的一個(gè)選擇。有的系統(tǒng)用Java設(shè)計(jì),但只能運(yùn)行在Windows平臺(tái)或Oracle數(shù)據(jù)庫(kù)上,這樣的故事我們聽(tīng)到的不少。Java虛擬機(jī)幫助我們實(shí)現(xiàn)對(duì)可移植性的關(guān)注點(diǎn)分離,并帶來(lái)一些開(kāi)銷(xiāo)。

七、可伸縮性。進(jìn)入互聯(lián)網(wǎng)時(shí)代,信息系統(tǒng)有了根本的變化,即強(qiáng)調(diào)可伸縮性。設(shè)計(jì)中的系統(tǒng)如果獲得成功,可能在不遠(yuǎn)的將來(lái)需要承受幾個(gè)數(shù)量級(jí)的客戶。這就要求系統(tǒng)有很好的可伸縮性。在這種情況下,不論使用怎樣的架構(gòu)風(fēng)格和編程語(yǔ)言,架構(gòu)師必須為可伸縮性而設(shè)計(jì)。GoogleMap/Reduce技術(shù)和ApacheHadoop項(xiàng)目就是很好的例子,架構(gòu)師設(shè)計(jì)出一些基礎(chǔ)設(shè)施,實(shí)現(xiàn)了可伸縮性的關(guān)注點(diǎn)分離。

虛擬機(jī)、SOA、RESTful、云計(jì)算、SaaS、PaaS、Android,無(wú)論是哪種架構(gòu),你都可以找出隱藏在這些架構(gòu)設(shè)計(jì)背后的需求。哪種適合你?只有實(shí)踐能給出答案。所以,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。沒(méi)有什么比好的理論更可實(shí)踐的了。紙上得來(lái)終覺(jué)淺,絕知此事要躬行。學(xué)而實(shí)習(xí)之,不亦樂(lè)乎?實(shí)踐是認(rèn)識(shí)的來(lái)源,實(shí)踐是認(rèn)識(shí)發(fā)展的動(dòng)力,實(shí)踐是認(rèn)識(shí)的最終目的。

關(guān)鍵詞:
上一篇:軟件定制開(kāi)發(fā)的好處
下一篇:需求分析的三重修煉