1。對(duì)于需求和需求變更的理解
軟件需求是整個(gè)軟件項(xiàng)目的最關(guān)鍵的一個(gè)輸入,和傳統(tǒng)的生產(chǎn)企業(yè)相比較,軟件的需求具有模糊性、不確定性、變化性和主觀性的特點(diǎn),它不像生產(chǎn)汽車、電腦等硬件的需求,是有形的、客觀的、可描述的、可檢測(cè)的。軟件需求是軟件項(xiàng)目最難把握的問(wèn)題,同時(shí)又是關(guān)系項(xiàng)目成敗的關(guān)鍵因素,因此對(duì)于需求分析和需求變更的處理十分重要。
軟件需求變更會(huì)給項(xiàng)目帶來(lái)巨大的風(fēng)險(xiǎn),會(huì)導(dǎo)致項(xiàng)目的成本費(fèi)用增加、開發(fā)周期延長(zhǎng)、產(chǎn)品質(zhì)量下降及團(tuán)隊(duì)工作效率下降等不良后果,因而需求變更在軟件開發(fā)項(xiàng)目中應(yīng)該盡量避免。然而由于政府對(duì)特定軟件的相關(guān)要求、用戶部門市場(chǎng)戰(zhàn)略的調(diào)整、工業(yè)界的發(fā)展等因素都可能帶來(lái)需求的變更,而這些因素往往不可避免。在軟件開發(fā)過(guò)程中如果只有一條真理的話,那一定是:需求的變化是永恒的,需求不可能是完備的。因而,對(duì)于需求變更應(yīng)該正確的對(duì)待,盡量將其負(fù)面影響降低到最低。
2。減少需求變更
正如前文所說(shuō),需求變更往往是不可避免的。通常是項(xiàng)目負(fù)責(zé)人員花費(fèi)了大量的氣力避免需求變更,可最后需求變更總是會(huì)出現(xiàn)。但是這并不意味著項(xiàng)目開發(fā)人員不應(yīng)該做這方面的工作,項(xiàng)目開發(fā)人員對(duì)于需求變更的正確態(tài)度應(yīng)該和軟件測(cè)試的態(tài)度一樣,在需求并更發(fā)生之前盡量減少需求變更,以將需求變更帶來(lái)的風(fēng)險(xiǎn)降低到最低。項(xiàng)目開發(fā)人員切忌在項(xiàng)目設(shè)計(jì)之前試圖消除需求變更,這樣做往往費(fèi)力不討好。
相比于需求開發(fā)人員而言,客戶可能對(duì)需求變更認(rèn)識(shí)不足,認(rèn)為他們出錢,程序員或軟件開發(fā)公司就要為它服務(wù),因此客戶對(duì)需求變更往往將需求變更視為兒戲,隨個(gè)人喜好隨意變更需求。因此,在需求人員同用戶代表或用戶部門主管人員接觸時(shí),就應(yīng)該向他們挑明態(tài)度,和他們協(xié)商好,特別是應(yīng)該讓他們清楚軟件的定價(jià)應(yīng)該與軟件的功能相關(guān),以及需求隨意變更所帶來(lái)的風(fēng)險(xiǎn)的承擔(dān)者應(yīng)該由客戶和項(xiàng)目開發(fā)者共同承擔(dān)。通過(guò)這樣做,讓客戶在需求分析之前就盡量對(duì)他們所需要的功能有個(gè)整體的了解和確定的思路,而不是等到程序員開始編碼了,才提出以前原本在需求分析時(shí)就可以提出的需求。
讓客戶明白減少需求變更的重要性后,需求分析人員應(yīng)該采取合適的方法同客戶交流,幫助他們明確他們的需求。需求分析人員和客戶的關(guān)系不應(yīng)該僅僅是記錄人員和需求提供者,他們的關(guān)系應(yīng)該更多的是戰(zhàn)略合作伙伴關(guān)系。雖然需求分析人員和客戶存在著服務(wù)商和顧客的關(guān)系,但是他們有著一個(gè)共同的目標(biāo):開發(fā)出適合客戶需求的軟件,因此需求分析人員除了記錄客戶提出的需求以外,還應(yīng)和用戶討論,提出一些建議,使用合適的工具幫助客戶提出需求。在需求分析時(shí),盡量多的召集需求研討會(huì),邀請(qǐng)開發(fā)人員和客戶共同協(xié)商探討,在研討會(huì)上允許任意的提出需求,并將這些需求整理成檔后由客戶代表和需求分析人員共同商議可選的功能,這樣能夠盡量使得需求完備。在需求開發(fā)時(shí),開發(fā)人員采用原型的方法啟發(fā)客戶思考功能需求也不失為一個(gè)好辦法。
雖然需求不可能是完備的,但是在項(xiàng)目開始設(shè)計(jì)時(shí)盡量使得需求完備還是應(yīng)該的,也是值得的。
3。規(guī)范文檔
需求文檔作為客戶和開發(fā)人員的接口在整個(gè)項(xiàng)目開發(fā)過(guò)程中起著舉足輕重的作用。需求文檔應(yīng)該按照一定的格式和規(guī)范書寫,而且應(yīng)該具備完整性、一致性、基線控制、歷史記錄等特性。文檔書寫完畢以后應(yīng)該交給客戶審閱,在客戶滿意的基礎(chǔ)上確定基線。一個(gè)完整規(guī)范的需求文檔不僅能夠有助于設(shè)計(jì)人員和編碼人員完成項(xiàng)目開發(fā),更重要的是它作為一個(gè)階段性的成果可以供軟件需求變更時(shí)參考。
需求變更發(fā)生后,也應(yīng)該生成相應(yīng)的文檔,并且這些文檔的書寫也應(yīng)該采用規(guī)范的形式書寫。需求變更文檔也應(yīng)該包含基線以供下一次修改參考,還應(yīng)包含歷史記錄以供開發(fā)人員和客戶清楚當(dāng)前的文檔內(nèi)容的新舊以及歷史文檔的情況,以備以后查看。
4。設(shè)計(jì)良好的體系結(jié)構(gòu)
開發(fā)軟件就如同建造一座房屋,軟件體系結(jié)構(gòu)則如同建房屋時(shí)的規(guī)劃。兩層高的家庭住宅和幾十層高的商業(yè)大廈建造時(shí)的規(guī)劃必然不同,同樣,大型軟件和小軟件采用的體系結(jié)構(gòu)也必然有所區(qū)別。因此,設(shè)計(jì)一個(gè)合理的體系結(jié)構(gòu)對(duì)于項(xiàng)目的成敗也是十分關(guān)鍵的。
體系結(jié)構(gòu)的建立一般位于需求分析結(jié)束之后,軟件設(shè)計(jì)之前。軟件體系結(jié)構(gòu)的設(shè)計(jì)是從結(jié)構(gòu)的角度對(duì)整個(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ù),因而能夠快速的對(duì)需求變更作出響應(yīng),并且對(duì)已經(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)件的變化對(duì)另一個(gè)構(gòu)件產(chǎn)生盡可能少的影響。
現(xiàn)有的軟件體系結(jié)構(gòu)很多,包括管道-過(guò)濾器結(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)。基于中間件技術(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)將來(lái)改變預(yù)留接口來(lái)實(shí)現(xiàn)功能上的需求變更。當(dāng)然可擴(kuò)展性比較好的體系結(jié)構(gòu)遠(yuǎn)不止基于中間件技術(shù)的體系結(jié)構(gòu)這一種,具體的選擇和運(yùn)用應(yīng)該由設(shè)計(jì)人員根據(jù)實(shí)際需要考慮。
5。采用面向?qū)ο笏枷?BR> 需求是不穩(wěn)定的,因而沒有不變的需求,然而需求之中卻有穩(wěn)定的東西,這就是對(duì)象。世界都是由對(duì)象組成的,而對(duì)象都是持久的,例如動(dòng)物、植物已經(jīng)有相當(dāng)長(zhǎng)的時(shí)間。雖然對(duì)象也在變化,動(dòng)物、植物也在不斷的進(jìn)化。但對(duì)象在一個(gè)相當(dāng)長(zhǎng)的時(shí)期內(nèi)都存在,動(dòng)植物的存在時(shí)間肯定比任何一家企業(yè)長(zhǎng)久。面向?qū)ο蟮拈_發(fā)方法的精髓就是從企業(yè)的不穩(wěn)定需求中分析出企業(yè)的穩(wěn)定對(duì)象,以企業(yè)對(duì)象為基礎(chǔ)來(lái)組織需求、構(gòu)架系統(tǒng)。這樣得出的系統(tǒng)就會(huì)比傳統(tǒng)的系統(tǒng)要穩(wěn)定得多,因?yàn)槠髽I(yè)的模式一旦變化,只需要將穩(wěn)定的企業(yè)對(duì)象重新組織就行了。
面向?qū)ο螅∣O)技術(shù)的三大特征保證了采用OO技術(shù)可以建立易于改變和加強(qiáng)可重用性的軟件系統(tǒng)。封裝可以把問(wèn)題影響的范圍縮小,外部的變化要求對(duì)系統(tǒng)的影響可以限定到某個(gè)類層次或某些類層次中,從而改變系統(tǒng)的一部分相對(duì)簡(jiǎn)單;繼承可以使改變基于原有技術(shù)基礎(chǔ),很大程度上減少重復(fù)開發(fā)工作;多態(tài)的應(yīng)用可以使開發(fā)和設(shè)計(jì)人員在相對(duì)統(tǒng)一的接口下更改系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),從而改變系統(tǒng)的行為。
顯然,OO技術(shù)是一種增強(qiáng)軟件可維護(hù)性、健壯性以及保持設(shè)計(jì)穩(wěn)定性的一種分析和設(shè)計(jì)方法,可以在一定程度上快速對(duì)需求變更進(jìn)行反應(yīng),并可相對(duì)減少需求變更需要的成本。因此,在系統(tǒng)開發(fā)過(guò)程中應(yīng)該盡量的采用面向?qū)ο蟮乃季S方式來(lái)構(gòu)建系統(tǒng)和開發(fā)系統(tǒng)。
6。需求變更控制
正如前文所言,需求變更不可避免的會(huì)發(fā)生,那么當(dāng)需求變更發(fā)生后項(xiàng)目開發(fā)人員應(yīng)該如何應(yīng)對(duì)呢?
一般來(lái)講,需求的變更通常意味著需求的增加,需求的減少相對(duì)很少,而且處理也比較容易。當(dāng)客戶提出新需求的時(shí)候,項(xiàng)目開發(fā)人員應(yīng)該分析這些新需求對(duì)項(xiàng)目現(xiàn)階段帶來(lái)的風(fēng)險(xiǎn),得出雙方實(shí)現(xiàn)變更需求的需要的成本,包括時(shí)間、人力、資源等等方面,再與客戶商討是否有必要進(jìn)行變更和如何在最小代價(jià)下實(shí)現(xiàn)變更。
當(dāng)客戶確實(shí)希望進(jìn)行需求變更時(shí),可以讓開發(fā)人員開發(fā)一個(gè)快速原型,讓用戶體驗(yàn)一下,以確??蛻舸_確實(shí)實(shí)的希望添加這些需求。在客戶和項(xiàng)目開發(fā)人員共同確定了需求變更后,項(xiàng)目開發(fā)人員應(yīng)該與客戶簽訂一份新的合同。
當(dāng)客戶提出需求變更并且簽訂了合同后或是開發(fā)人員根據(jù)市場(chǎng)和國(guó)家政策作出的需求變更得到確證后,項(xiàng)目開發(fā)人員應(yīng)該決定何時(shí)實(shí)施這些變更。對(duì)于那些對(duì)系統(tǒng)影響不大和一些優(yōu)先權(quán)十分高的需求變更可以立即在項(xiàng)目中實(shí)施,而對(duì)于那些對(duì)于整個(gè)系統(tǒng)現(xiàn)階段的開發(fā)影響很大,而且又不是十分緊急的需求可以放在下一個(gè)版本中進(jìn)行。無(wú)論是立即實(shí)施還是放在下一個(gè)版本中,都應(yīng)該給新的需求一個(gè)充足的開發(fā)和測(cè)試時(shí)間,保證產(chǎn)品質(zhì)量。
結(jié)論
在面對(duì)需求變更時(shí),除了通過(guò)減少需求變更和規(guī)范文檔,從分析和設(shè)計(jì)的角度通過(guò)采用合理的分析和設(shè)計(jì)方法適應(yīng)需求變更以外,還應(yīng)該改變我們?cè)O(shè)計(jì)的意識(shí)和對(duì)需求變更的理解,做好對(duì)需求變更的控制和管理,做到對(duì)需求變更的靈活應(yīng)對(duì),在一定程度上降低維護(hù)代價(jià)和提高用戶滿意度。
軟件需求是整個(gè)軟件項(xiàng)目的最關(guān)鍵的一個(gè)輸入,和傳統(tǒng)的生產(chǎn)企業(yè)相比較,軟件的需求具有模糊性、不確定性、變化性和主觀性的特點(diǎn),它不像生產(chǎn)汽車、電腦等硬件的需求,是有形的、客觀的、可描述的、可檢測(cè)的。軟件需求是軟件項(xiàng)目最難把握的問(wèn)題,同時(shí)又是關(guān)系項(xiàng)目成敗的關(guān)鍵因素,因此對(duì)于需求分析和需求變更的處理十分重要。
軟件需求變更會(huì)給項(xiàng)目帶來(lái)巨大的風(fēng)險(xiǎn),會(huì)導(dǎo)致項(xiàng)目的成本費(fèi)用增加、開發(fā)周期延長(zhǎng)、產(chǎn)品質(zhì)量下降及團(tuán)隊(duì)工作效率下降等不良后果,因而需求變更在軟件開發(fā)項(xiàng)目中應(yīng)該盡量避免。然而由于政府對(duì)特定軟件的相關(guān)要求、用戶部門市場(chǎng)戰(zhàn)略的調(diào)整、工業(yè)界的發(fā)展等因素都可能帶來(lái)需求的變更,而這些因素往往不可避免。在軟件開發(fā)過(guò)程中如果只有一條真理的話,那一定是:需求的變化是永恒的,需求不可能是完備的。因而,對(duì)于需求變更應(yīng)該正確的對(duì)待,盡量將其負(fù)面影響降低到最低。
2。減少需求變更
正如前文所說(shuō),需求變更往往是不可避免的。通常是項(xiàng)目負(fù)責(zé)人員花費(fèi)了大量的氣力避免需求變更,可最后需求變更總是會(huì)出現(xiàn)。但是這并不意味著項(xiàng)目開發(fā)人員不應(yīng)該做這方面的工作,項(xiàng)目開發(fā)人員對(duì)于需求變更的正確態(tài)度應(yīng)該和軟件測(cè)試的態(tài)度一樣,在需求并更發(fā)生之前盡量減少需求變更,以將需求變更帶來(lái)的風(fēng)險(xiǎn)降低到最低。項(xiàng)目開發(fā)人員切忌在項(xiàng)目設(shè)計(jì)之前試圖消除需求變更,這樣做往往費(fèi)力不討好。
相比于需求開發(fā)人員而言,客戶可能對(duì)需求變更認(rèn)識(shí)不足,認(rèn)為他們出錢,程序員或軟件開發(fā)公司就要為它服務(wù),因此客戶對(duì)需求變更往往將需求變更視為兒戲,隨個(gè)人喜好隨意變更需求。因此,在需求人員同用戶代表或用戶部門主管人員接觸時(shí),就應(yīng)該向他們挑明態(tài)度,和他們協(xié)商好,特別是應(yīng)該讓他們清楚軟件的定價(jià)應(yīng)該與軟件的功能相關(guān),以及需求隨意變更所帶來(lái)的風(fēng)險(xiǎn)的承擔(dān)者應(yīng)該由客戶和項(xiàng)目開發(fā)者共同承擔(dān)。通過(guò)這樣做,讓客戶在需求分析之前就盡量對(duì)他們所需要的功能有個(gè)整體的了解和確定的思路,而不是等到程序員開始編碼了,才提出以前原本在需求分析時(shí)就可以提出的需求。
讓客戶明白減少需求變更的重要性后,需求分析人員應(yīng)該采取合適的方法同客戶交流,幫助他們明確他們的需求。需求分析人員和客戶的關(guān)系不應(yīng)該僅僅是記錄人員和需求提供者,他們的關(guān)系應(yīng)該更多的是戰(zhàn)略合作伙伴關(guān)系。雖然需求分析人員和客戶存在著服務(wù)商和顧客的關(guān)系,但是他們有著一個(gè)共同的目標(biāo):開發(fā)出適合客戶需求的軟件,因此需求分析人員除了記錄客戶提出的需求以外,還應(yīng)和用戶討論,提出一些建議,使用合適的工具幫助客戶提出需求。在需求分析時(shí),盡量多的召集需求研討會(huì),邀請(qǐng)開發(fā)人員和客戶共同協(xié)商探討,在研討會(huì)上允許任意的提出需求,并將這些需求整理成檔后由客戶代表和需求分析人員共同商議可選的功能,這樣能夠盡量使得需求完備。在需求開發(fā)時(shí),開發(fā)人員采用原型的方法啟發(fā)客戶思考功能需求也不失為一個(gè)好辦法。
雖然需求不可能是完備的,但是在項(xiàng)目開始設(shè)計(jì)時(shí)盡量使得需求完備還是應(yīng)該的,也是值得的。
3。規(guī)范文檔
需求文檔作為客戶和開發(fā)人員的接口在整個(gè)項(xiàng)目開發(fā)過(guò)程中起著舉足輕重的作用。需求文檔應(yīng)該按照一定的格式和規(guī)范書寫,而且應(yīng)該具備完整性、一致性、基線控制、歷史記錄等特性。文檔書寫完畢以后應(yīng)該交給客戶審閱,在客戶滿意的基礎(chǔ)上確定基線。一個(gè)完整規(guī)范的需求文檔不僅能夠有助于設(shè)計(jì)人員和編碼人員完成項(xiàng)目開發(fā),更重要的是它作為一個(gè)階段性的成果可以供軟件需求變更時(shí)參考。
需求變更發(fā)生后,也應(yīng)該生成相應(yīng)的文檔,并且這些文檔的書寫也應(yīng)該采用規(guī)范的形式書寫。需求變更文檔也應(yīng)該包含基線以供下一次修改參考,還應(yīng)包含歷史記錄以供開發(fā)人員和客戶清楚當(dāng)前的文檔內(nèi)容的新舊以及歷史文檔的情況,以備以后查看。
4。設(shè)計(jì)良好的體系結(jié)構(gòu)
開發(fā)軟件就如同建造一座房屋,軟件體系結(jié)構(gòu)則如同建房屋時(shí)的規(guī)劃。兩層高的家庭住宅和幾十層高的商業(yè)大廈建造時(shí)的規(guī)劃必然不同,同樣,大型軟件和小軟件采用的體系結(jié)構(gòu)也必然有所區(qū)別。因此,設(shè)計(jì)一個(gè)合理的體系結(jié)構(gòu)對(duì)于項(xiàng)目的成敗也是十分關(guān)鍵的。
體系結(jié)構(gòu)的建立一般位于需求分析結(jié)束之后,軟件設(shè)計(jì)之前。軟件體系結(jié)構(gòu)的設(shè)計(jì)是從結(jié)構(gòu)的角度對(duì)整個(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ù),因而能夠快速的對(duì)需求變更作出響應(yīng),并且對(duì)已經(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)件的變化對(duì)另一個(gè)構(gòu)件產(chǎn)生盡可能少的影響。
現(xiàn)有的軟件體系結(jié)構(gòu)很多,包括管道-過(guò)濾器結(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)。基于中間件技術(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)將來(lái)改變預(yù)留接口來(lái)實(shí)現(xiàn)功能上的需求變更。當(dāng)然可擴(kuò)展性比較好的體系結(jié)構(gòu)遠(yuǎn)不止基于中間件技術(shù)的體系結(jié)構(gòu)這一種,具體的選擇和運(yùn)用應(yīng)該由設(shè)計(jì)人員根據(jù)實(shí)際需要考慮。
5。采用面向?qū)ο笏枷?BR> 需求是不穩(wěn)定的,因而沒有不變的需求,然而需求之中卻有穩(wěn)定的東西,這就是對(duì)象。世界都是由對(duì)象組成的,而對(duì)象都是持久的,例如動(dòng)物、植物已經(jīng)有相當(dāng)長(zhǎng)的時(shí)間。雖然對(duì)象也在變化,動(dòng)物、植物也在不斷的進(jìn)化。但對(duì)象在一個(gè)相當(dāng)長(zhǎng)的時(shí)期內(nèi)都存在,動(dòng)植物的存在時(shí)間肯定比任何一家企業(yè)長(zhǎng)久。面向?qū)ο蟮拈_發(fā)方法的精髓就是從企業(yè)的不穩(wěn)定需求中分析出企業(yè)的穩(wěn)定對(duì)象,以企業(yè)對(duì)象為基礎(chǔ)來(lái)組織需求、構(gòu)架系統(tǒng)。這樣得出的系統(tǒng)就會(huì)比傳統(tǒng)的系統(tǒng)要穩(wěn)定得多,因?yàn)槠髽I(yè)的模式一旦變化,只需要將穩(wěn)定的企業(yè)對(duì)象重新組織就行了。
面向?qū)ο螅∣O)技術(shù)的三大特征保證了采用OO技術(shù)可以建立易于改變和加強(qiáng)可重用性的軟件系統(tǒng)。封裝可以把問(wèn)題影響的范圍縮小,外部的變化要求對(duì)系統(tǒng)的影響可以限定到某個(gè)類層次或某些類層次中,從而改變系統(tǒng)的一部分相對(duì)簡(jiǎn)單;繼承可以使改變基于原有技術(shù)基礎(chǔ),很大程度上減少重復(fù)開發(fā)工作;多態(tài)的應(yīng)用可以使開發(fā)和設(shè)計(jì)人員在相對(duì)統(tǒng)一的接口下更改系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),從而改變系統(tǒng)的行為。
顯然,OO技術(shù)是一種增強(qiáng)軟件可維護(hù)性、健壯性以及保持設(shè)計(jì)穩(wěn)定性的一種分析和設(shè)計(jì)方法,可以在一定程度上快速對(duì)需求變更進(jìn)行反應(yīng),并可相對(duì)減少需求變更需要的成本。因此,在系統(tǒng)開發(fā)過(guò)程中應(yīng)該盡量的采用面向?qū)ο蟮乃季S方式來(lái)構(gòu)建系統(tǒng)和開發(fā)系統(tǒng)。
6。需求變更控制
正如前文所言,需求變更不可避免的會(huì)發(fā)生,那么當(dāng)需求變更發(fā)生后項(xiàng)目開發(fā)人員應(yīng)該如何應(yīng)對(duì)呢?
一般來(lái)講,需求的變更通常意味著需求的增加,需求的減少相對(duì)很少,而且處理也比較容易。當(dāng)客戶提出新需求的時(shí)候,項(xiàng)目開發(fā)人員應(yīng)該分析這些新需求對(duì)項(xiàng)目現(xiàn)階段帶來(lái)的風(fēng)險(xiǎn),得出雙方實(shí)現(xiàn)變更需求的需要的成本,包括時(shí)間、人力、資源等等方面,再與客戶商討是否有必要進(jìn)行變更和如何在最小代價(jià)下實(shí)現(xiàn)變更。
當(dāng)客戶確實(shí)希望進(jìn)行需求變更時(shí),可以讓開發(fā)人員開發(fā)一個(gè)快速原型,讓用戶體驗(yàn)一下,以確??蛻舸_確實(shí)實(shí)的希望添加這些需求。在客戶和項(xiàng)目開發(fā)人員共同確定了需求變更后,項(xiàng)目開發(fā)人員應(yīng)該與客戶簽訂一份新的合同。
當(dāng)客戶提出需求變更并且簽訂了合同后或是開發(fā)人員根據(jù)市場(chǎng)和國(guó)家政策作出的需求變更得到確證后,項(xiàng)目開發(fā)人員應(yīng)該決定何時(shí)實(shí)施這些變更。對(duì)于那些對(duì)系統(tǒng)影響不大和一些優(yōu)先權(quán)十分高的需求變更可以立即在項(xiàng)目中實(shí)施,而對(duì)于那些對(duì)于整個(gè)系統(tǒng)現(xiàn)階段的開發(fā)影響很大,而且又不是十分緊急的需求可以放在下一個(gè)版本中進(jìn)行。無(wú)論是立即實(shí)施還是放在下一個(gè)版本中,都應(yīng)該給新的需求一個(gè)充足的開發(fā)和測(cè)試時(shí)間,保證產(chǎn)品質(zhì)量。
結(jié)論
在面對(duì)需求變更時(shí),除了通過(guò)減少需求變更和規(guī)范文檔,從分析和設(shè)計(jì)的角度通過(guò)采用合理的分析和設(shè)計(jì)方法適應(yīng)需求變更以外,還應(yīng)該改變我們?cè)O(shè)計(jì)的意識(shí)和對(duì)需求變更的理解,做好對(duì)需求變更的控制和管理,做到對(duì)需求變更的靈活應(yīng)對(duì),在一定程度上降低維護(hù)代價(jià)和提高用戶滿意度。

