在20世紀(jì)60年代和70年代中軟件開發(fā)方法,最恰當(dāng)?shù)拿枋鍪鞘止ぜ妓,即每個(gè)項(xiàng)目都使用定制的過程和工具。到了20世紀(jì)80年代和90年代,軟件業(yè)成熟了并且變得更具工程規(guī)范。然而,這個(gè)時(shí)期的軟件項(xiàng)目仍然主要是研究密集型的,由人類的創(chuàng)造力和規(guī)模不經(jīng)濟(jì)所統(tǒng)治。所謂的軟件規(guī)模不經(jīng)濟(jì)是指工作量和規(guī)模的關(guān)系,與大多數(shù)制造過程相反,所構(gòu)造的軟件越多,軟件的單位花費(fèi)越多。要想使軟件業(yè)迅速向著以自動(dòng)化和規(guī)模經(jīng)濟(jì)為主流的更加產(chǎn)品密集型的方向發(fā)展,建設(shè)高效的軟件開發(fā)環(huán)境是必不可少的。
一、軟件開發(fā)環(huán)境的定義
現(xiàn)在,許多軟件企業(yè)集中精力通過軟件能力成熟度的改進(jìn)工作,來促進(jìn)軟件管理的可視性和可測量性,并在產(chǎn)品質(zhì)量、上市時(shí)間、投資回報(bào)及生產(chǎn)率方面提高軟件業(yè)務(wù)的性能。要使現(xiàn)代軟件開發(fā)項(xiàng)目運(yùn)作良好,過程定義和相當(dāng)程度的過程自動(dòng)化工具的使用是不可缺少的。軟件開發(fā)環(huán)境不僅包括軟件開發(fā)工具,而且也包括軟件開發(fā)過程。軟件開發(fā)過程是人們由于開發(fā)和維護(hù)軟件及其相關(guān)產(chǎn)品(例如項(xiàng)目計(jì)劃、設(shè)計(jì)文檔、代碼、測試用例和用戶手冊等等)的一組規(guī)程和方法,就如硬件生產(chǎn)的流水線。軟件開發(fā)工具是軟件開發(fā)過程中使用的直接開發(fā)工具和支持管理工具,它包括規(guī)劃工具、需求管理工具、可視化建摸工具、編譯器、編輯器、調(diào)試器和質(zhì)量保證分析工具、測試工具和用戶界面制作工具。如果軟件產(chǎn)品的產(chǎn)生是通過一定成熟度的軟件開發(fā)過程而獲得,并在該過程中使用了自動(dòng)化的開發(fā)工具,軟件產(chǎn)品的質(zhì)量、成本和所花費(fèi)的時(shí)間是可以預(yù)測的,從而才可能實(shí)現(xiàn)其他制造業(yè)所具有的規(guī)模經(jīng)濟(jì)。
二、軟件開發(fā)環(huán)境的重要性
軟件開發(fā)環(huán)境的主要貢獻(xiàn)是使低效的、易出錯(cuò)的手工任務(wù)得以自動(dòng)完成。自動(dòng)化和高效的軟件開發(fā)環(huán)境對軟件開發(fā)的生產(chǎn)力具有正比線性的效應(yīng)。通?梢允归_發(fā)效率提高20%到40%.項(xiàng)目經(jīng)驗(yàn)表明,一個(gè)高度集成化的環(huán)境,無論是對推動(dòng)還是加強(qiáng)過程的管理控制都是必要的。一個(gè)過程自動(dòng)化的環(huán)境,不僅可以改進(jìn)生產(chǎn)力,還可以提高軟件質(zhì)量,加速現(xiàn)代技術(shù)的吸收過程。一個(gè)支持增量式編譯、自動(dòng)化構(gòu)造和集成化的回歸測試的環(huán)境,可以為迭代式開發(fā)提供快速循環(huán)的支持,并可以使開發(fā)群組更加自由地進(jìn)行迭代。健壯的集成化的開發(fā)環(huán)境必須支持開發(fā)過程的自動(dòng)化。這個(gè)環(huán)境應(yīng)當(dāng)具備需求管理、文檔自動(dòng)化、宿主/目標(biāo)機(jī)編程工具、自動(dòng)的回歸測試、持續(xù)的和集成的變更管理,以及特性/缺陷跟蹤功能。成功的軟件工程都是雇傭優(yōu)秀的員工并為他們提供優(yōu)秀的工具來完成任務(wù)。軟件開發(fā)環(huán)境的自動(dòng)化可以在質(zhì)量、估計(jì)成本和進(jìn)度的能力以及使用更小的組取得總體的投資回報(bào)。要讓軟件開發(fā)人員快速遍歷開發(fā)制品并使它們保持最新狀態(tài),軟件開發(fā)環(huán)境在開發(fā)中正起著越來越重要的作用,F(xiàn)代軟件工程的發(fā)展強(qiáng)調(diào)將開發(fā)和維護(hù)環(huán)境作為基礎(chǔ)建設(shè)。猶如硬件環(huán)境的技資一樣,這一點(diǎn)非常重要,而在一些小型或不成熟的組織里,卻往往得不到保證。在這些組織里具體的過程開發(fā)和開發(fā)工具的采辦,是作為直接的項(xiàng)目費(fèi)用來計(jì)算的。這樣作將影響到資金的投入力度。不利于組織開發(fā)環(huán)境的成熟度的提高,任何項(xiàng)目都不愿將投入用于開發(fā)過程的建設(shè)和開發(fā)的采辦,就很難脫離手工作坊的開發(fā)方式。對于大多數(shù)成熟的軟件組織來說,開發(fā)環(huán)境的建設(shè)就像在其他工程學(xué)科里那樣是作為組織資產(chǎn)的,因此,它們的價(jià)值構(gòu)成和攤銷方式應(yīng)依據(jù)
固定資產(chǎn)的核算方式來核算。
三、軟件開發(fā)環(huán)境的價(jià)值構(gòu)成
固定資產(chǎn)的價(jià)值構(gòu)成是指固定資產(chǎn)價(jià)值所包括的范圍。它包括企業(yè)為購建某項(xiàng)固定資產(chǎn)達(dá)到預(yù)定可使用狀態(tài)前所發(fā)生的一切合理、必要的支出。同理軟件開發(fā)環(huán)境的價(jià)值構(gòu)成是軟件組織在購建開發(fā)過程和開發(fā)工具達(dá)到預(yù)定可使用狀態(tài)前所發(fā)生的一切合理、必要的支出。因此,根據(jù)軟件開發(fā)環(huán)境的購建過程,合理必要的支出既有直接費(fèi)用發(fā)生的,如軟件開發(fā)工具的價(jià)款、安裝調(diào)試費(fèi)、培訓(xùn)費(fèi)、咨詢費(fèi)、試運(yùn)行費(fèi)等,也有間接費(fèi)用的發(fā)生的,如應(yīng)承擔(dān)的借款利息、外幣借款折合差額以及應(yīng)分?jǐn)偟钠渌g接費(fèi)用等。由于軟件開發(fā)環(huán)境的來源渠道不同,其價(jià)值構(gòu)成的具體內(nèi)容也有所差異。
1.借助外力購建軟件開發(fā)環(huán)境
軟件開發(fā)環(huán)境是通過聘用外部專家來建立的,那么價(jià)值構(gòu)成將包括:軟件工具購置費(fèi),即軟件工具產(chǎn)品的市價(jià)。軟件工具的培訓(xùn)費(fèi),即對工具正確的使用進(jìn)行培訓(xùn)的費(fèi)用。軟件工具的安裝調(diào)試費(fèi),即為了使軟件工具適用于本組織的實(shí)際情況而進(jìn)行的必要的修改,以及相應(yīng)的安裝調(diào)試費(fèi)。軟件過程建設(shè)機(jī)構(gòu)的初建費(fèi)、外聘專家的咨詢費(fèi)、試運(yùn)行費(fèi)和各部門相應(yīng)過程建設(shè)配合的人員費(fèi)以及交納的稅金,作為入賬價(jià)值。
2.自行建設(shè)的軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境是依靠組織內(nèi)部的人員來建立的,那么價(jià)值構(gòu)成將包括:軟件工具的開發(fā)費(fèi)用、測試費(fèi)用和管理費(fèi)用。軟件工具的使用培訓(xùn)費(fèi)用。軟件過程建設(shè)機(jī)構(gòu)的初建費(fèi)、學(xué)習(xí)費(fèi)用、培訓(xùn)費(fèi)、試運(yùn)行費(fèi)和各部門相應(yīng)過程建設(shè)配合的人員費(fèi)以及交納的稅金,作為人賬價(jià)值。軟件開發(fā)環(huán)境的入賬價(jià)值中,還應(yīng)當(dāng)包括組織為取得軟件環(huán)境而交納的契稅等稅費(fèi)。
四、軟件開發(fā)環(huán)境的折舊
軟件開發(fā)組織的軟件開發(fā)環(huán)境可以長期參加主嚴(yán)經(jīng)營而仍保持其原有的實(shí)物形態(tài),但其價(jià)值將隨著軟件開發(fā)環(huán)境的使用而逐漸轉(zhuǎn)移到生產(chǎn)的軟件成本中,或構(gòu)成了組織的費(fèi)用。軟件開發(fā)環(huán)境的折舊,既是對軟件開發(fā)環(huán)境逐漸轉(zhuǎn)移到軟件成本或構(gòu)成組織費(fèi)用的那一部分價(jià)值的補(bǔ)償。軟件開發(fā)環(huán)境的折舊方法有z年限平均法、工作量法、年數(shù)總和法、雙倍余額遞減法等方法計(jì)提軟件開發(fā)環(huán)境折舊。本文分別簡單介紹四種方法的計(jì)算公式:
1.年限平均法
年限平均法是將軟件開發(fā)環(huán)境的折舊均衡地分?jǐn)偟礁髌诘囊环N方法。采用這種方法計(jì)算的每期折舊額均是等額的。其計(jì)算公式如下:
年折舊率=l/預(yù)計(jì)使用年限×100%
月折舊率=年折舊率/12
月折舊額=軟件開發(fā)環(huán)境原價(jià)×月折舊率
2.工作量法
工作量法是根據(jù)實(shí)際工作量計(jì)提折舊額的一種方法,其基本公式為:
每一工作量折舊額=軟件開發(fā)環(huán)境原值/預(yù)計(jì)總工作量
軟件開發(fā)環(huán)境月折舊額=軟件組織當(dāng)月開發(fā)工作量×每一工作量折舊額
3.雙倍余額遞減法
雙倍余額遞減法和年數(shù)總和法,是常用的加速折舊方法。其特點(diǎn)是在軟件開發(fā)環(huán)境使用前期提取折舊多,使用后期提取折舊逐年減少,以使軟件開發(fā)環(huán)境在有效使用年限中加快得到補(bǔ)償。雙倍余額遞減法的計(jì)算公式:
年折舊率=2/預(yù)計(jì)的
折舊年限×100%
月折舊率=年折舊率/12月折舊額=軟件開發(fā)環(huán)境賬面凈值×月折舊率
4.年數(shù)總和法
年數(shù)總和法又稱合計(jì)年限法,是將軟件開發(fā)環(huán)境凈值乘以一個(gè)逐年遞減的分?jǐn)?shù)計(jì)算每年的折舊額,這個(gè)分?jǐn)?shù)的分子代表軟件開發(fā)環(huán)境尚可使用的年限,分母代表使用年數(shù)的逐年數(shù)字總和。計(jì)算公式如下:
年折舊率=尚可使用年限/預(yù)計(jì)使用年限的年數(shù)總和×100%
月折舊率=年折舊率/12
月折舊額=軟件開發(fā)環(huán)境原價(jià)×月折舊率
軟件組織可以選擇不同的折舊方法,但是軟件開發(fā)環(huán)境的折舊方法一經(jīng)確定,不得隨意變更。如需變更,應(yīng)經(jīng)批準(zhǔn)并在會(huì)計(jì)
報(bào)表附注中予以說明。
結(jié)束語
軟件組織要提高自己的軟件開發(fā)能力,必要的軟件開發(fā)環(huán)境是基礎(chǔ)。要想對自己的軟件開發(fā)環(huán)境投入主要的資金,首先需要管理者在思想上。有一個(gè)轉(zhuǎn)變,及將軟件開發(fā)環(huán)境的建設(shè),尤其是軟環(huán)境的建設(shè)(軟件開發(fā)過程的改進(jìn)和自動(dòng)化軟件工具)認(rèn)為是固定資產(chǎn)的投資,該投資收益于今后的軟件開發(fā)工作中,因此不可當(dāng)作即期費(fèi)用來處理。我們只有將這種思想推廣開,才可以從根本解決軟件能力改進(jìn)所需的資金不足,才可以使軟件組織會(huì)逐漸變?yōu)槌墒斓、大?guī)模的開發(fā)商,它們才可能擁有穩(wěn)定的過程定義,并與軟件工具提供商建立起長期的合作關(guān)系。