求達(dá)到共同的認(rèn)識(shí),這一點(diǎn)是老生常談,就不多說(shuō)。
確定文檔的有效性(Validity )
順便要提的一句是關(guān)于文檔,需求文檔是相當(dāng)重要的,可是目前存在一種奇怪的現(xiàn)象,本來(lái)說(shuō)必須要有文檔,而且是按照某種特定的格式,當(dāng)然這沒(méi)有錯(cuò),但接下來(lái),卻沒(méi)有人關(guān)心文檔的真正內(nèi)容是否正確,格式是否真的合理,是否實(shí)用(而且很多情況下是在幾天時(shí)間里趕出來(lái)或補(bǔ)上去的),例如我遇到一個(gè)例子,需要在原來(lái)的需求基礎(chǔ)上進(jìn)行后續(xù)開(kāi)發(fā),文檔找到了,完全符合格式的要求,但是我在里面找到的線索是有限的,結(jié)果是自己花幾天的時(shí)間查找數(shù)據(jù)表結(jié)構(gòu)、甚至查看數(shù)據(jù)表的內(nèi)容,詢(xún)問(wèn)當(dāng)時(shí)的開(kāi)發(fā)人員,才分析到所要的關(guān)系,這種情況在設(shè)計(jì)文檔里也存在,所以同時(shí)提一提,希望我們的開(kāi)發(fā)人員、PM 以及各級(jí)領(lǐng)導(dǎo)可以注意文檔的有效性和有用性問(wèn)題,甚至對(duì)文檔的格式進(jìn)行一下合理性檢查。
建立代價(jià)估算(Cost Estimate )概念
這一點(diǎn)對(duì)開(kāi)發(fā)方和客戶(hù)同樣重要,因?yàn)槿绻霈F(xiàn)需求變更,不可避免將帶來(lái)成本的增加、開(kāi)發(fā)時(shí)間延長(zhǎng)等不良后果,這樣的影響是雙方的。
這時(shí)候需要區(qū)分需求變更的原因,是客戶(hù)方必要/不必要的要求,還是由于開(kāi)發(fā)方的工作失誤,還是雙方都有原因,然后對(duì)現(xiàn)實(shí)情況進(jìn)行分析,得出雙方實(shí)現(xiàn)變更需求的需要的成本,包括時(shí)間,人力,資源等等方面,再與客戶(hù)商討是否必要進(jìn)行變更和如何在最小代價(jià)下實(shí)現(xiàn)變更。
當(dāng)客戶(hù)看到實(shí)際的代價(jià)估算,他們也會(huì)再一次慎重地考慮需求變更問(wèn)題,也會(huì)更容易理解系統(tǒng)建設(shè)中的進(jìn)行狀況,自然開(kāi)發(fā)方也不用負(fù)擔(dān)所有的需求變更成本,所以進(jìn)行成本分?jǐn)傔€是有其積極意義的。
當(dāng)然還有建立需求變更版本控制等等專(zhuān)業(yè)的需求管理,在這里不做專(zhuān)門(mén)論述。
從軟件分析和設(shè)計(jì)著手
前面說(shuō)了面對(duì)需求變更的幾種策略,那么從軟件系統(tǒng)分析和設(shè)計(jì)的角度來(lái)看,通過(guò)采用合理的分析設(shè)計(jì)方法,進(jìn)行可擴(kuò)展性設(shè)計(jì)可以有效地降低需求變更引起的風(fēng)險(xiǎn)和維護(hù)代價(jià)。
采用OO 技術(shù)
采用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ū)ο蟮墓ぞ?,骨子里仍然是結(jié)構(gòu)化的分析和設(shè)計(jì)方法,套上一層OOP 的外殼而已。)
可擴(kuò)展性設(shè)計(jì)(Extensible-Design )
其次,從我們可以控制的軟件設(shè)計(jì)來(lái)說(shuō),怎樣進(jìn)行合適的設(shè)計(jì)才能最大程度減少需求變更帶來(lái)的
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線啦!快來(lái)測(cè)測(cè)你排多少名吧~
http://opto-elec.com.cn/pmqhd/index.html