本文主要針對軟件開發(fā)涉及到的風(fēng)險(xiǎn),包括在軟件開發(fā)周期過程中可能出現(xiàn)的風(fēng)險(xiǎn)以及軟件實(shí)施過程中外部環(huán)境的變化可能引起的風(fēng)險(xiǎn)等進(jìn)行評估。在文中對所提到的風(fēng)險(xiǎn)都一一做了詳細(xì)的分析,并提出了相應(yīng)的風(fēng)險(xiǎn)回避措施。 由于風(fēng)險(xiǎn)是在項(xiàng)目開始之后才開始對項(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é)。
主要風(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)用。
軟件管理將影響到軟件的下列因素:
軟件是否能夠按工期的要求完成:軟件的工期常常是制約軟件質(zhì)量的主要因素。很多情況下,軟件開發(fā)商在工期的壓力下,放棄文檔的書寫,組織,結(jié)果在工程的晚期,大量需要文檔進(jìn)行協(xié)調(diào)的工作時(shí),致使軟件進(jìn)度越來越慢。軟件的開發(fā)不同于其他的工程,在不同的工程階段,需要的人員不同,需要配合的方面也不同,所有這些都需要行之有效的軟件管理的保證。
軟件需求的調(diào)研是否深入透徹:軟件的需求是確保軟件正確反映用戶的對軟件使用的重要的文檔,探討軟件需求是軟件開發(fā)的起始點(diǎn),但軟件的需求卻會貫穿整個(gè)軟件的開發(fā)過程,軟件管理需要對軟件需求的變化進(jìn)行控制和管理,一方面保證軟件需求的變化不至于造成軟件工程的一改再改而無法按期完成;同時(shí)又要保證開發(fā)的軟件能夠?yàn)橛脩羲邮堋\浖芾硇枰刂栖浖拿總€(gè)階段進(jìn)行的成度,不能過細(xì)造成時(shí)間的浪費(fèi),也不能過粗,造成軟件缺陷。
軟件的實(shí)現(xiàn)技術(shù)手段是否能夠同時(shí)滿足性能要求:軟件的構(gòu)造需要對軟件構(gòu)造過程中的使用的各種技術(shù)進(jìn)行評估。軟件構(gòu)造技術(shù)通常是這樣:最成熟的技術(shù),往往不能體現(xiàn)最好的軟件性能;先進(jìn)的技術(shù),往往人員對其熟悉程度不夠,對其中隱含的缺陷不夠明了。軟件管理在制定軟件開發(fā)計(jì)劃和定義里程碑時(shí)必須考慮這些因素,并做出合理的權(quán)衡決策。
軟件質(zhì)量體系是否能夠被有效地保證:任何軟件管理忽略軟件質(zhì)量監(jiān)督環(huán)節(jié)都將對軟件的生產(chǎn)構(gòu)成巨大的風(fēng)險(xiǎn)。而制定卓有成效的軟件質(zhì)量監(jiān)督體系,是任何軟件開發(fā)組織必不可少的。軟件質(zhì)量保證體系是軟件開發(fā)成為可控制過程的基礎(chǔ),也是開發(fā)商和用戶進(jìn)行交流的基礎(chǔ)和依據(jù)。
軟件體系結(jié)構(gòu)影響到軟件的如下質(zhì)量因素:
軟件的可伸縮性:是指軟件在不進(jìn)行修改的情況下適應(yīng)不同的工作環(huán)境的能力。由于硬件的飛速發(fā)展和軟件開發(fā)周期較長的矛盾,軟件升級的需要顯得非常迫切。如果軟件的升級和移植非常困難,軟件的生命期必定很短,使得化費(fèi)巨大人力物力開發(fā)出的軟件系統(tǒng)只能在低性能的硬件或網(wǎng)絡(luò)上運(yùn)行,甚至被廢棄不用,造成巨大的浪費(fèi)。
軟件的可維護(hù)性:軟件的維護(hù)也是必然的事情,為了保證軟件的較長使用壽命,軟件就必須適應(yīng)不斷的業(yè)務(wù)需求變化,根據(jù)業(yè)務(wù)需求的變化對軟件進(jìn)行修改。修改的成本和周期都直接和軟件的體系結(jié)構(gòu)相關(guān)。一個(gè)好的軟件體系結(jié)構(gòu)可以盡可能地將系統(tǒng)的變化放在系統(tǒng)的配置上,即軟件代碼無需修改,僅僅是在系統(tǒng)提供的配置文件中進(jìn)行適當(dāng)?shù)男薷模缓筌浖匦录虞d進(jìn)入運(yùn)行狀態(tài),就完成了系統(tǒng)部分功能和性能要求的變化。對于重大改動,需要打開源代碼進(jìn)行修改的,也僅僅是先繼承原先的代碼,然后用新的功能接替原先的調(diào)用接口,這樣將把軟件改動量減小到最低。
軟件易用性:軟件的易