就了事了。作為項(xiàng)目干系人之內(nèi)的項(xiàng)目組其他成員,對(duì)需求的有效性也起到某種程度的驗(yàn)證作用。雖然軟件項(xiàng)目的生命周期按照各種開(kāi)發(fā)模型有不同階段的劃分,但每個(gè)階段的結(jié)束不是簡(jiǎn)單地把階段工作成果塞給下一階段的成員就可以了。特別是高科技的軟件開(kāi)發(fā)項(xiàng)目,上一階段的工作成果往往要通過(guò)多次的溝通才能更為清晰地被下一階段成員接受,其有效性、合理性也要被下一階段的工作所檢驗(yàn),通過(guò)檢驗(yàn)有時(shí)也有必要對(duì)上一階段的工作結(jié)果進(jìn)行相應(yīng)的調(diào)整,需求更是如此。因此,無(wú)論是同一階段不同人員之間,或是不同階段人員之間都應(yīng)根據(jù)需要相互協(xié)作,相互配合,共同完成軟件開(kāi)發(fā)任務(wù)。
二、在軟件工程的方位內(nèi),盡量減少需求變更的影響
系統(tǒng)的各模塊應(yīng)該設(shè)計(jì)成送耦合的,采用OO 技術(shù)可以建立易于改變和加強(qiáng)可重用性的軟件系統(tǒng)。對(duì)于OO 技術(shù),我想現(xiàn)在已經(jīng)不是什么陌生的概念:
1 封裝(Encapsulation )可以把問(wèn)題影響的范圍縮小,外部的變化要求對(duì)系統(tǒng)的影響可以限定到某個(gè)類(lèi)層次或某些類(lèi)層次中,從而改變系統(tǒng)的一部分相對(duì)簡(jiǎn)單;
2 繼承(Inheritance )可以使改變基于原有技術(shù)基礎(chǔ),很大程度上減少重復(fù)開(kāi)發(fā)工作;
3 多態(tài)(Polymorphism )的應(yīng)用可以使開(kāi)發(fā)和設(shè)計(jì)人員在相對(duì)統(tǒng)一的接口下更改系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),從而改變系統(tǒng)的行為;
4 而且由于對(duì)OO 的類(lèi)體系結(jié)構(gòu)業(yè)界有非常清楚明晰的描述方式,就是目前規(guī)范的描述語(yǔ)言-UML ,非常易于被開(kāi)發(fā)組的理解并達(dá)成共識(shí),促進(jìn)開(kāi)發(fā)組成員之間的合作以及加強(qiáng)軟件開(kāi)發(fā)工作的可延續(xù)性;
可見(jiàn)本身即是一種增強(qiáng)軟件可維護(hù)性、健壯性以及保持設(shè)計(jì)穩(wěn)定性的一種分析和設(shè)計(jì)方法,本身可以在一定程度上快速對(duì)需求變更進(jìn)行反應(yīng),并可相對(duì)減少需求變更需要的成本。(OO 的意義在于分析和設(shè)計(jì)軟件系統(tǒng)的思考方式,以及建立對(duì)象庫(kù)以后的軟件重用將給軟件系統(tǒng)的開(kāi)發(fā)帶來(lái)質(zhì)的改變,但是在建立OO 開(kāi)發(fā)體系之前的過(guò)程,一定會(huì)是一段荊棘遍布的路,需要付出加倍的努力以及達(dá)成思想的轉(zhuǎn)變。這里還有一個(gè)誤區(qū)需要澄清的是很多人以為用了C++,PB ,VB ,DELPHI 就是面向?qū)ο蟮拈_(kāi)發(fā)了,其實(shí)只是用了一些面向?qū)ο蟮墓ぞ撸亲永锶匀皇墙Y(jié)構(gòu)化的分析和設(shè)計(jì)方法,套上一層OOP 的外殼而已。)
可擴(kuò)展性設(shè)計(jì)(Extensible-Design )
其次,從我們可以控制的軟件設(shè)計(jì)來(lái)說(shuō),怎樣進(jìn)行合適的設(shè)計(jì)才能最大程度減少需求變更帶來(lái)的代價(jià)?
也許有人說(shuō),我的設(shè)計(jì)極為靈活,我已經(jīng)預(yù)計(jì)了客戶可能提出的要求,并設(shè)計(jì)幾種應(yīng)對(duì)的方式,到時(shí)候客戶提出來(lái),呵呵,我已經(jīng)解決了。這樣的想法不錯(cuò),至少比僵硬的設(shè)計(jì)強(qiáng),但是誰(shuí)可以保證設(shè)計(jì)者可以預(yù)知以后的需求變化?而同時(shí)為了達(dá)到這種靈活(萬(wàn)能/多能?)的設(shè)計(jì),設(shè)計(jì)將變得復(fù)雜,而且可能那些多余的設(shè)計(jì)從來(lái)不會(huì)被用到?復(fù)雜的設(shè)計(jì)將增加實(shí)現(xiàn)的難度和提高成本,并有可能帶來(lái)潛在的Bug ,使得系統(tǒng)難以維護(hù)。
設(shè)計(jì)的思想應(yīng)該有一些小小的轉(zhuǎn)變,那就是,設(shè)計(jì)確實(shí)要靈活,但是要體現(xiàn)在可擴(kuò)展性上面,也就是說(shuō),設(shè)計(jì)可以簡(jiǎn)單,但是一定要易于轉(zhuǎn)變,需要給出便于改變的接口,這一點(diǎn)很重要。
例如,現(xiàn)在有一個(gè)類(lèi)叫做TCPConnection ,來(lái)代表計(jì)算機(jī)網(wǎng)絡(luò)通信中典型的TCP 連接,對(duì)于這個(gè)連接而言,它可能處于以下幾種狀態(tài):Established (連接已建立),Listening (正在偵聽(tīng)),Closed (連接關(guān)閉)。一個(gè)連接對(duì)象需要從其他的對(duì)象接受請(qǐng)求,至于它的反應(yīng)則決定于連接對(duì)象所處的狀態(tài),對(duì)于(打開(kāi)連接的請(qǐng)求),如果是在連接關(guān)閉狀態(tài),則進(jìn)行Open (),處于其他狀態(tài)則
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線啦!快來(lái)測(cè)測(cè)你排多少名吧~
http://m.opto-elec.com.cn/pmqhd/index.html