當(dāng)前的文檔內(nèi)容的新舊以及歷史文檔的情況,以備以后查看。
設(shè)計(jì)良好的體系結(jié)構(gòu)
開發(fā)軟件就如同建造一座房屋,軟件體系結(jié)構(gòu)則如同建房屋時(shí)的規(guī)劃。兩層高的家庭住宅和幾十層高的商業(yè)大廈建造時(shí)的規(guī)劃必然不同,同樣,大型軟件和小軟件采用的體系結(jié)構(gòu)也必然有所區(qū)別。因此,設(shè)計(jì)一個(gè)合理的體系結(jié)構(gòu)對于項(xiàng)目的成敗也是十分關(guān)鍵的。
體系結(jié)構(gòu)的建立一般位于需求分析結(jié)束之后,軟件設(shè)計(jì)之前。軟件體系結(jié)構(gòu)的設(shè)計(jì)是從結(jié)構(gòu)的角度對整個(gè)系統(tǒng)進(jìn)行分析,選擇合適的構(gòu)件,安排構(gòu)件間的相互作用以及他們之間的約束,形成一個(gè)系統(tǒng)框架以滿足用戶需求。在設(shè)計(jì)軟件體系結(jié)構(gòu)時(shí),不僅應(yīng)該想到如何完成滿足現(xiàn)在已經(jīng)提出的用戶需求,同時(shí)也應(yīng)適當(dāng)?shù)乜紤]到需求的變更。
采用有彈性和可擴(kuò)展的軟件體系結(jié)構(gòu)設(shè)計(jì)可以有效地降低需求變更引起的風(fēng)險(xiǎn)和維護(hù)代價(jià),能夠在項(xiàng)目范圍未發(fā)生變化的前提下很好地適應(yīng)需求的變化。體系結(jié)構(gòu)的靈活和可擴(kuò)展性設(shè)計(jì)使得開發(fā)者可以在這種體系結(jié)構(gòu)上面進(jìn)行各個(gè)功能層的組合和分離,也可以將各個(gè)功能層分布在各個(gè)不同的服務(wù)器上共同提供服務(wù),因而能夠快速的對需求變更作出響應(yīng),并且對已經(jīng)開發(fā)好的系統(tǒng)產(chǎn)生盡可能少的影響。
體系結(jié)構(gòu)的設(shè)計(jì)除了考慮到體系結(jié)構(gòu)的靈活性和可擴(kuò)展性以外,還應(yīng)盡量采用松散耦合的結(jié)構(gòu),使得結(jié)構(gòu)中的各個(gè)構(gòu)件之間的關(guān)聯(lián)程度盡可能的少,這樣就能在需求發(fā)生變更時(shí)一個(gè)構(gòu)件的變化對另一個(gè)構(gòu)件產(chǎn)生盡可能少的影響。
現(xiàn)有的軟件體系結(jié)構(gòu)很多,包括管道-過濾器結(jié)構(gòu)、B/S結(jié)構(gòu)(含C/S結(jié)構(gòu))、解釋器/虛擬機(jī)結(jié)構(gòu)、黑板系統(tǒng)以及基于中間件技術(shù)的體系結(jié)構(gòu)。在設(shè)計(jì)體系結(jié)構(gòu)時(shí),首先應(yīng)該選出適合項(xiàng)目需求的系統(tǒng)結(jié)構(gòu),然后在從中挑選出那些擴(kuò)展性比較好,構(gòu)件之間耦合性比較小的體系結(jié)構(gòu)?;谥虚g件技術(shù)的體系結(jié)構(gòu)就是擴(kuò)展性比較好的體系結(jié)構(gòu)。采用中間件技術(shù),中間件作為用戶界面和操作系統(tǒng)以及網(wǎng)絡(luò)的連接點(diǎn),向上為用戶提供服務(wù),向下屏蔽操作系統(tǒng)和網(wǎng)絡(luò)的細(xì)節(jié)。這種分層的思想能夠很好的適應(yīng)操作系統(tǒng)和網(wǎng)絡(luò)的變化,可擴(kuò)展性十分的好。同時(shí),可以在中間件中給出容易改變的接口或是為系統(tǒng)將來改變預(yù)留接口來實(shí)現(xiàn)功能上的需求變更。當(dāng)然可擴(kuò)展性比較好的體系結(jié)構(gòu)遠(yuǎn)不止基于中間件技術(shù)的體系結(jié)構(gòu)這一種,具體的選擇和運(yùn)用應(yīng)該由設(shè)計(jì)人員根據(jù)實(shí)際需要考慮。
采用面向?qū)ο笏枷?/STRONG>
需求是不穩(wěn)定的,因而沒有不變的需求,然而需求之中卻有穩(wěn)定的東西,這就是對象。世界都是由對象組成的,而對象都是持久的,例如動物、植物已經(jīng)有相當(dāng)長的時(shí)間。雖然對象也在變化,動物、植物也在不斷的進(jìn)化。但對象在一個(gè)相當(dāng)長的時(shí)期內(nèi)都存在,動植物的存在時(shí)間肯定比任何一家企業(yè)長久。面向?qū)ο蟮拈_發(fā)方法的精髓就是從企業(yè)的不穩(wěn)定需求中分析出企業(yè)的穩(wěn)定對象,以企業(yè)對象為基礎(chǔ)來組織需求、構(gòu)架系統(tǒng)。這樣得出的系統(tǒng)就會比傳統(tǒng)的系統(tǒng)要穩(wěn)定得多,因?yàn)槠髽I(yè)的模式一旦變化,只需要將穩(wěn)定的企業(yè)對象重新組織就行了。
面向?qū)ο螅∣O)技術(shù)的三大特征保證了采用OO技術(shù)可以建立易于改變和加強(qiáng)可重用性的軟件系統(tǒng)。封裝可以把問題影響的范圍縮小,外部的變化要求對系統(tǒng)的影響可以限定到某個(gè)類層次或某些類層次中,從而改變系統(tǒng)的一部分相對簡單;繼承可以使改變基于原有技術(shù)基礎(chǔ),很大程度上減少重復(fù)開發(fā)工作;多態(tài)的應(yīng)用可以使開發(fā)和設(shè)計(jì)人員在相對統(tǒng)一的接口下更改系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),從而改變系統(tǒng)的行為。
顯然,OO技術(shù)是一種增強(qiáng)軟件可維護(hù)性、健壯性以及保持設(shè)計(jì)穩(wěn)定性的一種分析和設(shè)計(jì)方法,可以在一定程度上快速對需求變更進(jìn)行反應(yīng),并可相對減少需求變更需要的成本。因此,在系統(tǒng)開發(fā)過程中應(yīng)該盡量的采用面向?qū)ο蟮乃季S方式來構(gòu)建系統(tǒng)和開發(fā)系統(tǒng)。
需求變更控制