采用OO 技術
采用OO 技術可以建立易于改變和加強可重用性的軟件系統。
對于OO 技術,我想現在已經不是什么陌生的概念:
1 封裝(Encapsulation )可以把問題影響的范圍縮小,外部的變化要求對系統的影響可以限定到某個類層次或某些類層次中,從而改變系統的一部分相對簡單;
2 繼承(Inheritance )可以使改變基于原有技術基礎,很大程度上減少重復開發工作;
3 多態(Polymorphism )的應用可以使開發和設計人員在相對統一的接口下更改系統的實現細節,從而改變系統的行為;
4 而且由于對OO 的類體系結構業界有非常清楚明晰的描述方式,就是目前規范的描述語言-UML ,非常易于被開發組的理解并達成共識,促進開發組成員之間的合作以及加強軟件開發工作的可延續性;可見本身即是一種增強軟件可維護性、健壯性以及保持設計穩定性的一種分析和設計方法,本身可以在一定程度上快速對需求變更進行反應,并可相對減少需求變更需要的成本。(OO 的意義在于分析和設計軟件系統的思考方式,以及建立對象庫以后的軟件重用將給軟件系統的開發帶來質的改變,但是在建立OO 開發體系之前的過程,一定會是一段荊棘遍布的路,需要付出加倍的努力以及達成思想的轉變。這里還有一個誤區需要澄清的是很多人以為用了C++,PB ,VB ,DELPHI 就是面向對象的開發了,其實只是用了一些面向對象的工具,骨子里仍然是結構化的分析和設計方法,套上一層OOP 的外殼而已。)可擴展性設計(Extensible-Design )
其次,從我們可以控制的軟件設計來說,怎樣進行合適的設計才能最大程度減少需求變更帶來的代價?
許有人說,我的設計極為靈活,我已經預計了客戶可能提出的要求,并設計幾種應對的方式,到時候客戶提出來,呵呵,我已經解決了。這樣的想法不錯,至少比僵硬的設計強,但是誰可以保證設計者可以預知以后的需求變化?而同時為了達到這種靈活(萬能/多能?)的設計,設計將變得復雜,而且可能那些多余的設計從來不會被用到?復雜的設計將增加實現的難度和提高成本,并有可能帶來潛在的Bug ,使得系統難以維護。
設計的思想應該有一些小小的轉變,那就是,設計確實要靈活,但是要體現在可擴展性上面,也就是說,設計可以簡單,但是一定要易于轉變,需要給出便于改變的接口,這一點很重要。
結論
可見,在面對需求變更時,除了客觀上可以通過人員培訓、代價分析等管理方式進行有效的需求管理外,從分析和設計的角度可以通過采用合理的分析和設計方法,還有改變我們設計的意識,可以做到對需求變更的靈活應對,至少可以在一定程度上降低維護代價和提高用戶滿意度。軟件需求的管理和控制是非常專業的學問,作者在這里結合自己的實踐提出一些粗淺的認識,只是想起到一個拋磚引玉的作用,希望大家可以一起來面對和想辦法解決我們在系統開發過程中的實際問題,我想那樣才是我真正想達到的目的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/