OM組件技術。組件和構(gòu)件技術都是為了提高軟件的可靠性和軟件的可擴展性而采用的技術手段。從技術成熟度上說不存在風險,但為了實現(xiàn)良好的軟件構(gòu)架和穩(wěn)定的組件,與傳統(tǒng)開發(fā)方法比較,有相當?shù)亩嗟念~外工作需要做,這會給項目工期帶來較大的風險。
回避和控制這部分風險的辦法是在項目進行的過程不斷的對該階段進行風險估計和指定有效的里程碑。同時采用"范例"方式提高開發(fā)人員的構(gòu)件組件的分析識別能力,適時調(diào)整構(gòu)件組件的數(shù)量和粒度。
(2)設計階段的風險。
設計的主要目的在于軟件的功能正確的反映了需求??梢娦枨蟮牟煌暾蛯π枨蠓治龅牟煌暾湾e誤,在設計階段被成倍地放大。設計階段的主要任務是完成系統(tǒng)體系結(jié)構(gòu)的定義,使之能夠完成需求階段的即定目標;另一方面也是檢驗需求的一致性和需求分析的完整性和正確性。
設計本身的風險主要來自于系統(tǒng)分析人員。分析人員在設計系統(tǒng)結(jié)構(gòu)時過于定制,系統(tǒng)的可擴展性較弱,會給后期維護帶來巨大的負擔,和維護成本的激增。對用戶來說系統(tǒng)的使用比例會有明顯的折扣,甚至造成軟件壽命過短。反之,軟件結(jié)構(gòu)的過于靈活和通用,必然引起軟件實現(xiàn)的難度增加,系統(tǒng)的復雜度會上升,這又會在實現(xiàn)和測試階段帶來風險,系統(tǒng)的穩(wěn)定性也會受到影響。從另一個角度上看,業(yè)務規(guī)則的變化,或說用戶需求和將來軟件運行環(huán)境的變化都是必然的情況,目前軟件設計的所謂"通用性"是否就能很好的適應將來需求和運行環(huán)境的的變化,是需要認真折衷的。這種折中也蘊涵著很大的風險。
設計階段蘊涵的另一種風險來自于設計文檔。文檔的不健全不僅會造成實現(xiàn)階段的困難,更會在后期的測試和維護造成災難性的后果,例如根本無法對軟件系統(tǒng)進行版本升級,甚至是發(fā)現(xiàn)的簡單錯誤都無從更正。實現(xiàn)階段引入的風險軟件的實現(xiàn)從某種意義上講是軟件代碼的生產(chǎn)。原代碼本身也是文檔的一部分,同時它又是將來運行于計算機系統(tǒng)之上的實體。源代碼書寫的規(guī)范性,可讀性是該階段的主要風險來源。規(guī)范的代碼生產(chǎn)會把屬于程序員自身個性風格的成分引入代碼的比例降到最低限度,從而減小了系統(tǒng)整合的風險。
(3)軟件過程風險—軟件需求階段的風險。
軟件的開發(fā)是以用戶的需求開始,在大多數(shù)情況下,用戶需求要靠軟件開發(fā)方誘導才能保證需求的完整,再以書面的形式形成《用戶需求》這一重要的文檔。需求分析更多的是開發(fā)方確認需求的可行性和一致性的過程,在此階段需要和用戶進行廣泛的交流和確認。需求和需求分析的任何疏漏造成的損失會在軟件系統(tǒng)的后續(xù)階段被一級一級地放大,因此本階段的風險最大
(4)維護階段的風險。
軟件維護包含兩個主要的維護階段,一個是軟件生產(chǎn)完畢到軟件試運行階段的維護,這個階段是一種實環(huán)境的測試性維護,其主要目的是發(fā)現(xiàn)在測試環(huán)境中不能或未發(fā)現(xiàn)的問題;另一個階段是當軟件的運行不再能適應用戶業(yè)務需求或是用戶的運行環(huán)境(包括硬件平臺,軟件環(huán)境等)時進行的軟件維護,具體可能是軟件的版本升級或軟件移植等。
對系統(tǒng)可維護性的輕視是大型軟件系統(tǒng)的最大風險。在軟件漫長的運營期內(nèi),業(yè)務規(guī)則肯定會不斷發(fā)展,科學的解決此問題的做法是不斷對軟件系統(tǒng)進行版本升級,在確??删S護性的前提下逐步擴展系統(tǒng)。在軟件系統(tǒng)運營期間,主要的風險源自于技術支持體系的無效運轉(zhuǎn)。科學的方法是有一支客戶支持隊伍不斷收集運行中發(fā)現(xiàn)的問題,并將解決問題的方法傳授給軟件系統(tǒng)的所有使用者。從軟件工程的角度看,軟件維護費用約占總費用的55%~70%,系統(tǒng)越大,該費用越高。