由于風(fēng)險(xiǎn)是在項(xiàng)目開始之后才開始對(duì)項(xiàng)目的開發(fā)起負(fù)面的影響,所以風(fēng)險(xiǎn)分析的不足,或是風(fēng)險(xiǎn)回避措施不得力,都很有可能造成軟件開發(fā)的失敗。風(fēng)險(xiǎn)分析是在事前的一種估計(jì),憑借一定的技術(shù)手段和豐富的經(jīng)驗(yàn),基本能夠?qū)?xiàng)目的風(fēng)險(xiǎn)做出比較準(zhǔn)確的估計(jì),經(jīng)過慎重的考慮提出可行的風(fēng)險(xiǎn)回避措施,是避免損失的重要環(huán)節(jié)。本文主要針對(duì)軟件開發(fā)涉及到的風(fēng)險(xiǎn),包括在軟件開發(fā)周期過程中可能出現(xiàn)的風(fēng)險(xiǎn)以及軟件實(shí)施過程中外部環(huán)境的變化可能引起的風(fēng)險(xiǎn)等進(jìn)行評(píng)估。在文中對(duì)所提到的風(fēng)險(xiǎn)都一一做了詳細(xì)的分析,并提出了相應(yīng)的風(fēng)險(xiǎn)回避措施。
一、主要風(fēng)險(xiǎn)綜述
任何軟件的開發(fā),其主要風(fēng)險(xiǎn)均來自于兩個(gè)方面,一是軟件管理,二是軟件體系結(jié)構(gòu)。軟件產(chǎn)品的開發(fā)是工程技術(shù)與個(gè)人創(chuàng)作的有機(jī)結(jié)合。軟件開發(fā)是人的集體智慧按照工程化的思想進(jìn)行發(fā)揮的過程。軟件管理是保證軟件開發(fā)工程化的手段。軟件體系結(jié)構(gòu)的合理程度是取決于集體智慧發(fā)揮的程度和經(jīng)驗(yàn)的運(yùn)用。
1、軟件體系結(jié)構(gòu)影響到軟件的如下質(zhì)量因素:
軟件的可伸縮性:是指軟件在不進(jìn)行修改的情況下適應(yīng)不同的工作環(huán)境的能力。由于硬件的飛速發(fā)展和軟件開發(fā)周期較長(zhǎng)的矛盾,軟件升級(jí)的需要顯得非常迫切。如果軟件的升級(jí)和移植非常困難,軟件的生命期必定很短,使得化費(fèi)巨大人力物力開發(fā)出的軟件系統(tǒng)只能在低性能的硬件或網(wǎng)絡(luò)上運(yùn)行,甚至被廢棄不用,造成巨大的浪費(fèi)。
軟件的可維護(hù)性:軟件的維護(hù)也是必然的事情,為了保證軟件的較長(zhǎng)使用壽命,軟件就必須適應(yīng)不斷的業(yè)務(wù)需求變化,根據(jù)業(yè)務(wù)需求的變化對(duì)軟件進(jìn)行修改。修改的成本和周期都直接和軟件的體系結(jié)構(gòu)相關(guān)。一個(gè)好的軟件體系結(jié)構(gòu)可以盡可能地將系統(tǒng)的變化放在系統(tǒng)的配置上,即軟件代碼無(wú)需修改,僅僅是在系統(tǒng)提供的配置文件中進(jìn)行適當(dāng)?shù)男薷?,然后軟件重新加載進(jìn)入運(yùn)行狀態(tài),就完成了系統(tǒng)部分功能和性能要求的變化。對(duì)于重大改動(dòng),需要打開源代碼進(jìn)行修改的,也僅僅是先繼承原先的代碼,然后用新的功能接替原先的調(diào)用接口,這樣將把軟件改動(dòng)量減小到最低。
軟件易用性:軟件的易用性是影響軟件是否被用戶接受的關(guān)鍵之關(guān)鍵因素。在軟件產(chǎn)品中,設(shè)計(jì)復(fù)雜,功能強(qiáng)大而完備,但因?yàn)椴僮鞣睆?fù)而被擱置者屢見不鮮。造成的主要原因在于缺乏軟件開發(fā)中軟件體系結(jié)構(gòu)的宏觀把握能力。另一方面,缺乏有效的手段進(jìn)行軟件需求的確定和對(duì)潛在需求的挖掘。
2、軟件管理將影響到軟件的下列因素:
軟件是否能夠按工期的要求完成:軟件的工期常常是制約軟件質(zhì)量的主要因素。很多情況下,軟件開發(fā)商在工期的壓力下,放棄文檔的書寫,組織,結(jié)果在工程的晚期,大量需要文檔進(jìn)行協(xié)調(diào)的工作時(shí),致使軟件進(jìn)度越來越慢。軟件的開發(fā)不同于其他的工程,在不同的工程階段,需要的人員不同,需要配合的方面也不同,所有這些都需要行之有效的軟件管理的保證。
軟件需求的調(diào)研是否深入透徹:軟件的需求是確保軟件正確反映用戶的對(duì)軟件使用的重要的文檔,探討軟件需求是軟件開發(fā)的起始點(diǎn),但軟件的需求卻會(huì)貫穿整個(gè)軟件的開發(fā)過程,軟件管理需要對(duì)軟件需求的變化進(jìn)行控制和管理,一方面保證軟件需求的變化不至于造成軟件工程的一改再改而無(wú)法按期完成;同時(shí)又要保證開發(fā)的軟件能夠?yàn)橛脩羲邮?。軟件管理需要控制軟件的每個(gè)階段進(jìn)行的成度,不能過細(xì)造成時(shí)間的浪費(fèi),也不能過粗,造成軟件缺陷。
軟件的實(shí)現(xiàn)技術(shù)手段是否能夠同時(shí)滿足性能要求:軟件的構(gòu)造需要對(duì)軟件構(gòu)造過程中的使用的各種技術(shù)進(jìn)行評(píng)估。軟件構(gòu)造技術(shù)通常是這樣:最成熟的技術(shù),往往不能體現(xiàn)最好的軟件性能;先進(jìn)的技術(shù),往往人員對(duì)其熟悉程度不夠,對(duì)其中隱含的缺陷不夠明了。軟