摘要:軟件已成為人們工作和生活必不可少的助手和伴侶。軟件的質(zhì)量好壞直接影響了人們工作的效率和生活的水平。為確保軟件的質(zhì)量,需要一個(gè)系統(tǒng)的軟件質(zhì)量評(píng)估指標(biāo)體系,本文參考了業(yè)內(nèi)軟件質(zhì)量評(píng)估指標(biāo),并結(jié)合多年軟件開(kāi)發(fā)和運(yùn)維經(jīng)驗(yàn),設(shè)計(jì)了一個(gè)通用的軟件質(zhì)量評(píng)估指標(biāo)體系,根據(jù)此評(píng)估體系,我們可以對(duì)各種軟件的質(zhì)量進(jìn)行較系統(tǒng)和全面地評(píng)估,從而有助于為軟件開(kāi)發(fā)和維護(hù)工作提供參照,有助于全面保證和提高軟件的質(zhì)量。
關(guān)鍵詞:軟件;軟件質(zhì)量;評(píng)估指標(biāo)
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.3969/j.issn.1003-6970.2015.03.012
本文著錄格式:翁秀木,一個(gè)通用的軟件質(zhì)量評(píng)估指標(biāo)體系[J].軟件,2015,36(3):59-63
0.引言
隨著IT技術(shù),尤其是軟件技術(shù)的迅猛發(fā)展,軟件已成為人們工作和生活密不可分的一部分。例如本地PC辦公軟件、遠(yuǎn)程網(wǎng)站、手機(jī)本地App等等。然而,軟件的質(zhì)量不佳也已成為影響人們工作和生活質(zhì)量的嚴(yán)重問(wèn)題,例如,對(duì)于組織而言,例如金融機(jī)構(gòu),軟件的質(zhì)量差,造成客戶資料流失,不僅形象受損,也還可能要遭受業(yè)界監(jiān)管部門的巨額罰款。而對(duì)于個(gè)人而言,軟件的質(zhì)量差,不僅會(huì)影響正常使用,甚至?xí)<皞€(gè)人的安全,例如個(gè)人帳號(hào)安全,個(gè)人隱私泄露等。尤其在移動(dòng)互聯(lián)網(wǎng)蓬勃發(fā)展的今天,這個(gè)問(wèn)題尤其突出。
因此,如何確保軟件的質(zhì)量,是一個(gè)業(yè)內(nèi)一直以來(lái)都十分重視的問(wèn)題。而軟件的生命周期與人的生命周期有許多相似之處,軟件的質(zhì)量評(píng)估與人的體檢也有許多相似之處。人的體檢會(huì)借助一個(gè)的健康評(píng)估指標(biāo)體系,而軟件的質(zhì)量評(píng)估也需要一個(gè)全面的質(zhì)量評(píng)估指標(biāo)體系。本文根據(jù)作者多年從事軟件開(kāi)發(fā)和維護(hù)工作的實(shí)踐經(jīng)驗(yàn),并借鑒業(yè)內(nèi)相關(guān)的研究成果,設(shè)計(jì)出了一個(gè)通用的軟件質(zhì)量評(píng)估指標(biāo)體系,該體系由兩個(gè)維度組成:軟件的運(yùn)行和軟件的修改。
1.軟件質(zhì)量評(píng)估體系
1.1軟件的運(yùn)行
軟件的運(yùn)行指的是當(dāng)軟件的設(shè)計(jì)、編碼和單元測(cè)試的工作完成后,進(jìn)入系統(tǒng)集成測(cè)試、用戶測(cè)試、甚至上到生產(chǎn)環(huán)境上運(yùn)行時(shí),如何去評(píng)估軟件的質(zhì)量??梢苑譃?個(gè)指標(biāo):正確性、可靠性、效率性、可用性和安全性。
1.1.1正確性
正確性指的是評(píng)估軟件是否能夠正確地反映業(yè)務(wù)功能的要求,是否能夠正確地為用戶提供基本的業(yè)務(wù)服務(wù)。
該指標(biāo)的主要評(píng)估方法是,通過(guò)端對(duì)端的黑盒測(cè)試,根據(jù)測(cè)試用例,檢查軟件的功能是否符合需求規(guī)格說(shuō)明書的要求。而在軟件編碼階段,可以通過(guò)運(yùn)行單元測(cè)試腳本來(lái)進(jìn)行正確性檢驗(yàn)。
這是最基本的軟件質(zhì)量的評(píng)價(jià)要求。但在實(shí)際項(xiàng)目中,這往往會(huì)或多或少出現(xiàn)軟件在系統(tǒng)集成測(cè)試、用戶測(cè)試、甚至在生產(chǎn)環(huán)境上才發(fā)現(xiàn)軟件的功能與業(yè)務(wù)的要求不符。主要原因是雙方面的:一是業(yè)務(wù)方(包括業(yè)務(wù)分析師,即BA)沒(méi)有正確地描述需求。二是軟件的設(shè)計(jì)、代碼實(shí)現(xiàn)和測(cè)試方?jīng)]有正確地理解需求。
保證正確性的主要方法:(1)是業(yè)務(wù)方和軟件的設(shè)計(jì)和代碼實(shí)現(xiàn)方要強(qiáng)化溝通的有效性。例如極限編程思想提出的,雙方應(yīng)該盡可能地面對(duì)面的溝通,其他形式的電話、電郵或即時(shí)通訊工具的溝通,都不如面對(duì)面溝通準(zhǔn)確和有效。(2)是要有一份嚴(yán)謹(jǐn)而清晰的需求規(guī)格說(shuō)明書,軟件設(shè)計(jì)、代碼實(shí)現(xiàn)和測(cè)試方的對(duì)需求的理解主要是以該需求規(guī)格說(shuō)明書為準(zhǔn),需求規(guī)格說(shuō)明書不嚴(yán)謹(jǐn)、不清晰勢(shì)必影響軟件的正確性。(3)是要有一套科學(xué)的需求管理流程和工具。在很多情景下,需求方對(duì)需求難以做到一開(kāi)始就是十分準(zhǔn)確的,需求的變更在整個(gè)項(xiàng)目的過(guò)程中都可能存在,尤其是根據(jù)迭代式開(kāi)發(fā)和極限編程的思想,需求的變更是非常正常的,我們不能抗拒需求的變更,反而要擁抱需求的變更,要做到這點(diǎn),就有必要有一套有效的需求管理流程和工具。
1.1.2可靠性
可靠性指的是評(píng)估軟件在如下三方面的表現(xiàn):容錯(cuò)性、出錯(cuò)后的恢復(fù)能力、可伸縮性(scalability)。其中:(1)容錯(cuò)性,評(píng)估軟件運(yùn)行出錯(cuò)時(shí),可否自動(dòng)糾錯(cuò),而不影響在線用戶的使用,不影響后臺(tái)程序的繼續(xù)運(yùn)行。(2)出錯(cuò)后的恢復(fù)能力,評(píng)估軟件運(yùn)行出錯(cuò)后,要耗費(fèi)多少時(shí)間和其他資源才能恢復(fù)運(yùn)行。(3)可伸縮性,評(píng)估軟件在負(fù)載大,尤其是用戶劇增時(shí),是否還能繼續(xù)保證正常運(yùn)行。另外,在負(fù)載小時(shí),軟件是否可以在足以支撐高質(zhì)量服務(wù)的前提下,使用盡量少的資源。
可靠性指標(biāo)的常用評(píng)估方法是:(1)容錯(cuò)性,模擬出錯(cuò)情景,觀察軟件的反映。例如,模擬將某個(gè)主文件刪去,看當(dāng)軟件找不到主文件時(shí),是否可以自動(dòng)找其備份文件代替。(2)出錯(cuò)后的恢復(fù)能力,可從流程(Process)、人(People)和技術(shù)(Technology)三個(gè)方面來(lái)衡量,流程方面,是否存在著合理的、有效的出錯(cuò)恢復(fù)流程。人方面,是否存在著擁有扎實(shí)運(yùn)維知識(shí)的工程師隊(duì)伍。技術(shù)方面,是否存在著支持快速、完整地恢復(fù)錯(cuò)誤的技術(shù),例如備份數(shù)據(jù)庫(kù)。(3)可伸縮性,在測(cè)試階段,常常利用壓力測(cè)試工具來(lái)模擬軟件負(fù)載劇增時(shí)的情境,如Load Runner和Win Runner。借此檢測(cè)軟件系統(tǒng)的抗壓能力。
因此,要提高可靠性,(1)在容錯(cuò)性上,從代碼級(jí)別來(lái)看,不僅要保證軟件在“正?!鼻榫诚驴蛇\(yùn)行,而且要考量各種“異?!鼻榫?,若軟件是可以恢復(fù)的,就應(yīng)該有健全的異常處理代碼,使軟件能從異常中自動(dòng)恢復(fù),而不影響前臺(tái)用戶的使用或后臺(tái)程序的繼續(xù)運(yùn)行。從系統(tǒng)級(jí)別來(lái)看,軟件若能有多個(gè)備份,例如Web應(yīng)用同時(shí)部署在多個(gè)Web服務(wù)器上,若某個(gè)Web服務(wù)器上的應(yīng)用訪問(wèn)失敗,系統(tǒng)會(huì)自動(dòng)切換到其他Web服務(wù)器上的應(yīng)用,這個(gè)切換對(duì)用戶是透明的,從而提高了容錯(cuò)性。(2)出錯(cuò)后的恢復(fù)能力。從流程、人和技術(shù)上看。既要有一個(gè)科學(xué)的應(yīng)錯(cuò)流程,又要有一支出色的排錯(cuò)工程師隊(duì)伍,還要有一套完善的監(jiān)錯(cuò)、查錯(cuò)和糾錯(cuò)軟硬件技術(shù)。(3)可伸縮性。可以用實(shí)現(xiàn)負(fù)載均衡的軟硬件技術(shù),提高軟件系統(tǒng)的可伸縮性。
1.1.3效率性
效率性指從時(shí)間和空間(內(nèi)存、磁盤和網(wǎng)絡(luò)帶寬)兩方面來(lái)評(píng)估軟件的效率。
軟件運(yùn)行的時(shí)間效率也可以通過(guò)端對(duì)端的黑盒測(cè)試來(lái)評(píng)估,例如選取最復(fù)雜的業(yè)務(wù)功能模塊,測(cè)量用戶發(fā)出請(qǐng)求后,要多長(zhǎng)時(shí)間,該功能才可執(zhí)行完畢??臻g方面的測(cè)試,需要在客戶端和服務(wù)器端,衡量軟件運(yùn)行時(shí)的內(nèi)存和磁盤占用量,而網(wǎng)絡(luò)帶寬測(cè)試可以使用專門的網(wǎng)絡(luò)測(cè)速工具。
要提高軟件的時(shí)間和空間效率。(1)從時(shí)間上說(shuō),可以提高算法的時(shí)間復(fù)雜度,用優(yōu)良的算法來(lái)減少?gòu)?fù)雜模塊的時(shí)間消耗,另外,一般而言,磁盤讀寫的時(shí)間會(huì)遠(yuǎn)慢于內(nèi)存讀寫的時(shí)間,過(guò)多的磁盤讀寫勢(shì)必會(huì)降低軟件的時(shí)間效率,因而若能盡可能把磁盤讀寫轉(zhuǎn)換為內(nèi)存讀寫,就可以大大提高時(shí)間效率。另外,對(duì)于有網(wǎng)絡(luò)調(diào)用的軟件而言,過(guò)多的網(wǎng)絡(luò)調(diào)用也必然會(huì)降低時(shí)間效率,因而盡量減少網(wǎng)絡(luò)調(diào)用,就可大大提高軟件的時(shí)間效率。并且,對(duì)于高耗時(shí)的動(dòng)作,可以考慮用多線程的技術(shù)來(lái)實(shí)現(xiàn),當(dāng)然也可以用多進(jìn)程來(lái)實(shí)現(xiàn),但多進(jìn)程之間的通信會(huì)比多線程慢。(2)從空間上說(shuō),磁盤和內(nèi)存的空間占用,后者對(duì)軟件的效率影響更大,尤其是在資源有限環(huán)境下的運(yùn)行的軟件對(duì)內(nèi)存空間占用更加敏感,如智能家居、智能穿戴等軟件。一方面注意合理地管理內(nèi)存,一方面要盡量?jī)?yōu)化算法,使得內(nèi)存空間占用量盡可能少。而對(duì)于有網(wǎng)絡(luò)調(diào)用的軟件,網(wǎng)絡(luò)帶寬的占用也是影響效率的重要因素,應(yīng)該盡可能地減少通過(guò)網(wǎng)絡(luò)的數(shù)據(jù)傳輸量,例如用各種緩存技術(shù)。
1.1.4可用性
可用性指從用戶體驗(yàn)上來(lái)評(píng)估軟件的可操作性、易學(xué)性、可理解性等。
軟件的用戶界面美觀是重要的,但可用性高是更重要的,如何提高軟件的可用性。正如雅各布尼爾森所說(shuō),可以從十個(gè)方面來(lái)衡量:(1)系統(tǒng)狀態(tài)的可見(jiàn)性。軟件系統(tǒng)應(yīng)該始終讓用戶知道當(dāng)前正在做什么,這可通過(guò)在適當(dāng)?shù)臅r(shí)間內(nèi)得到適當(dāng)?shù)姆答亖?lái)實(shí)現(xiàn)。(2)系統(tǒng)和真實(shí)世界的匹配。軟件系統(tǒng)應(yīng)該采取用戶的語(yǔ)言與用戶交互,即用戶熟悉的詞句、概念等,而盡量不要用系統(tǒng)術(shù)語(yǔ)。同時(shí)要遵循真實(shí)世界的習(xí)慣,使得信息能以自然的、符合邏輯的順序來(lái)呈現(xiàn)。(3)用戶控制和自由。用戶時(shí)常會(huì)錯(cuò)誤地選擇了某個(gè)系統(tǒng)功能,進(jìn)入某個(gè)不期望的狀態(tài),這時(shí)需要有一個(gè)清晰的出口,使得用戶能夠簡(jiǎn)便地退出。例如支持撤銷和重做功能。(4)一致性和標(biāo)準(zhǔn)。要確保軟件系統(tǒng)的整體風(fēng)格一致性,不要讓用戶對(duì)不同的詞句、狀態(tài)和動(dòng)作是否代表同一件事情而困擾。(5)錯(cuò)誤避免。清晰而準(zhǔn)確的錯(cuò)誤消息是必要的,但最好能通過(guò)細(xì)心的設(shè)計(jì)避免錯(cuò)誤的發(fā)生,比如消除錯(cuò)誤發(fā)生的前提條件,或者在用戶確定提交請(qǐng)求之前,檢驗(yàn)用戶將要提交的信息是否合法,并提供一個(gè)確認(rèn)頁(yè)面讓用戶再次確認(rèn)將要提交的信息。(6)識(shí)別而非回想。也就是說(shuō),有關(guān)系統(tǒng)使用的提示信息應(yīng)該是可見(jiàn)的、或可適時(shí)獲得的,從而,用戶可以快速識(shí)別該怎么做,而不需要費(fèi)時(shí)回想過(guò)去是怎么做的。(7)使用的靈活性和效率性。對(duì)于軟件系統(tǒng)的高級(jí)用戶,應(yīng)該有些渠道使之能快速地進(jìn)行某些操作,如快捷鍵。并且,能讓用戶可以自定義一些經(jīng)常性操作的快捷訪問(wèn)方式。(8)簡(jiǎn)約式的設(shè)計(jì)。與用戶的任何交互界面都盡量剔除不相干的、或者極少需要的信息。(9)幫助用戶辨別和診斷錯(cuò)誤,并從錯(cuò)誤中恢復(fù)。錯(cuò)誤信息要以自然的語(yǔ)言來(lái)表述(不要用代碼),要精確地描述錯(cuò)誤,建設(shè)性地提出解決方法。(10)幫助和文檔。雖然最好軟件系統(tǒng)能夠不需要文檔即可使用,但是提供足夠的幫助和文檔也是需要的。并且,應(yīng)該讓用戶可以較容易地查到幫助信息,幫助信息應(yīng)該關(guān)注于用戶的任務(wù),列出具體的執(zhí)行步驟,但也不要太繁瑣。
1.1.5安全性
安全性指從機(jī)密性(confidentiality)、完整性(Integrity)和可訪問(wèn)性(Availability)三方面來(lái)評(píng)估軟件的質(zhì)量。機(jī)密性,指的是避免信息或數(shù)據(jù)被未授權(quán)用戶獲取。完整性指的是避免信息或數(shù)據(jù)被未授權(quán)用戶篡改??稍L問(wèn)性指的是保證信息或數(shù)據(jù)在需要時(shí)可以被訪問(wèn)。
為提高軟件的安全性,(1)應(yīng)確保信息和數(shù)據(jù)的機(jī)密性,從整體系統(tǒng)設(shè)計(jì)來(lái)看,要有完善的認(rèn)證和授權(quán)機(jī)制。從代碼級(jí)別來(lái)看,代碼編寫要可以防止為了獲取非授權(quán)信息的常見(jiàn)代碼安全攻擊,例如,主要針對(duì)Web應(yīng)用軟件的SQL注入攻擊和跨站點(diǎn)腳本攻擊,這可以通過(guò)恰當(dāng)?shù)拇a來(lái)避免。(2)應(yīng)確保信息和數(shù)據(jù)的完整性。例如信息和數(shù)據(jù)的傳播渠道要有足夠的安全級(jí)別,例如客戶端訪問(wèn)服務(wù)器端的認(rèn)證模塊應(yīng)該用安全級(jí)別更高的https協(xié)議,而不要用簡(jiǎn)單的http協(xié)議。(3)應(yīng)確保信息和數(shù)據(jù)的可訪問(wèn)性。一方面可從硬件上來(lái)提高,例如使用高訪問(wèn)性的服務(wù)器集群。另一方面可從軟件上來(lái)提高,例如可以通過(guò)合理的代碼設(shè)計(jì),避免惡意客戶多次反復(fù)提交請(qǐng)求而導(dǎo)致的內(nèi)存溢出等錯(cuò)誤。
1.2軟件的修改
軟件系統(tǒng)的生命周期通常包括初始化、計(jì)劃、需求分析、設(shè)計(jì)、測(cè)試、實(shí)施、運(yùn)營(yíng)和維護(hù)、乃至終止下線等多個(gè)步驟。在這其中,軟件運(yùn)營(yíng)和維護(hù)的成本是最高的。常占軟件生命周期總成本約七成。因此,評(píng)估軟件的質(zhì)量,不單要衡量軟件運(yùn)行時(shí)的指標(biāo),還要看軟件進(jìn)入維護(hù)階段時(shí)軟件修改的指標(biāo)。可分為6項(xiàng):可維護(hù)性、可測(cè)試性、可讀性、簡(jiǎn)單性、可移植性和可重用性。
1.2.1可維護(hù)性
維護(hù)往往是軟件生命周期中成本最大的階段。軟件必須強(qiáng)調(diào)可維護(hù)性,努力做到修改現(xiàn)有代碼時(shí),盡量少影響其他代碼,增加新功能時(shí),盡量少影響現(xiàn)有功能。例如,遵循開(kāi)閉原則,Software entities(classes,modules,functions,etc.)should be open for extension,but closed for modification,即軟件應(yīng)追求只需較少修改、甚至無(wú)需修改,就可擴(kuò)展。
軟件要提高可維護(hù)性,就要盡量提高軟件實(shí)體(包括類、模塊和函數(shù)等)的內(nèi)聚性,一般而言,若能做到單一實(shí)體只承擔(dān)單一職責(zé),就可有較高的內(nèi)聚性。提高了軟件實(shí)體的內(nèi)聚性,并盡可能降低實(shí)體之間的耦合性,軟件維護(hù)時(shí),就能更好地實(shí)現(xiàn)“增加新功能實(shí)體時(shí),不修改舊功能實(shí)體”。另外,對(duì)于遵循面向?qū)ο笏枷氲能浖?,在設(shè)計(jì)時(shí)遵循面向接口、依賴倒轉(zhuǎn)等原則,也可以提高軟件的可維護(hù)性,容易擴(kuò)展且基本無(wú)需修改原代碼。
1.2.2可測(cè)試性
可測(cè)試性指在對(duì)軟件進(jìn)行黑盒或白盒測(cè)試時(shí)的難易程度。因?yàn)楫?dāng)軟件在運(yùn)維期需要查錯(cuò)、修改時(shí),常常需要對(duì)軟件進(jìn)行測(cè)試。軟件的易測(cè)性直接決定了是否能在有限的生產(chǎn)環(huán)境維護(hù)時(shí)間窗內(nèi)快速地糾錯(cuò),直接決定了軟件修改項(xiàng)目進(jìn)行階段的成本。因此,如何提高軟件的可測(cè)試性,也是軟件設(shè)計(jì)階段必須謹(jǐn)慎考量的一個(gè)重要方面,因?yàn)樗绊懥塑浖薷臅r(shí)的效率,影響了軟件的質(zhì)量。
1.2.3可讀性
可讀性指軟件的需求、設(shè)計(jì)架構(gòu)、源碼、測(cè)試用例、運(yùn)行時(shí)所依賴的軟硬件平臺(tái),是否容易被理解,被讀懂。有完善易懂的軟件需求相關(guān)資料,軟件修改時(shí)才能更好地理解當(dāng)前需求。有科學(xué)合理的設(shè)計(jì)架構(gòu),軟件修改時(shí)才能更快地掌握當(dāng)前架構(gòu)。有簡(jiǎn)約明了的源碼(包括代碼風(fēng)格和注釋),軟件修改時(shí)才能更有效地讀懂、修改源碼。有清晰規(guī)范的測(cè)試用例等有關(guān)測(cè)試的資料,軟件修改時(shí)才能更好地避免改動(dòng)對(duì)原有功能的影響。有全面詳細(xì)的軟件硬件平臺(tái)資料,軟件修改時(shí)才能更準(zhǔn)確地將改動(dòng)部署上線。
1.2.4簡(jiǎn)單性
簡(jiǎn)單性指軟件的設(shè)計(jì)和編碼、包括其他的需求、測(cè)試和部署文檔,是否能遵循簡(jiǎn)約的風(fēng)格。正如極限編程思想所倡導(dǎo)的:The simplest thing that could possibly work,即讓軟件能用最簡(jiǎn)單的方式保證正常運(yùn)作。Spring框架的發(fā)明者Rod Johnson也說(shuō)過(guò):好的工程實(shí)踐并不一定非要用復(fù)雜的方法來(lái)實(shí)現(xiàn)。只有這樣,才能讓現(xiàn)有的軟件設(shè)計(jì)架構(gòu)、源碼、需求規(guī)格說(shuō)明書、測(cè)試用例文檔、部署文檔等更容易被理解,從而才能更好地降低軟件修改時(shí)的成本。
1.2.5可移植性
可移植性指軟件在不同軟硬件環(huán)境中遷移時(shí),是否能做到遷移成本低,且各種功能和性能指標(biāo)也不受影響。讓橘生于淮南為橘,生于淮北也須為橘,而不能為枳。例如,當(dāng)軟件在遷移到不同的操作系統(tǒng)平臺(tái)時(shí),是否需要重新編譯,甚至重新編碼?;蛘哌w移到不同的數(shù)據(jù)庫(kù)管理系統(tǒng)時(shí),是否需要重新編碼。尤其是所處軟硬件環(huán)境較復(fù)雜的軟件系統(tǒng),可移植性更為重要。
1.2.6可重用性
可重用性指軟件實(shí)體(如類、模塊和函數(shù))能否被其他軟件實(shí)體重用,并且能以較低成本重用。甚至是軟件本身,能否作為一個(gè)整體的服務(wù),被其他軟件系統(tǒng)直接調(diào)用。
要做到軟件實(shí)體的可重用性高,同樣也要遵循“單一職責(zé)”的設(shè)計(jì)思想,提高軟件實(shí)體的內(nèi)聚性,降低耦合性,就可以較好地實(shí)現(xiàn)重用現(xiàn)有實(shí)體。
2.小結(jié)
以上從軟件運(yùn)行和修改兩個(gè)維度,設(shè)計(jì)了一個(gè)軟件質(zhì)量評(píng)估體系,即軟件運(yùn)行時(shí)的正確性、可靠性、效率性、可用性、安全性,軟件修改時(shí)的可維護(hù)性、可測(cè)試性、可讀性、簡(jiǎn)單性、可移植性、可重用性。這個(gè)質(zhì)量評(píng)估體系是通用的,軟件不論基于何種業(yè)務(wù)功能,不論基于何種技術(shù)環(huán)境,都可采用這個(gè)評(píng)估體系對(duì)質(zhì)量進(jìn)行系統(tǒng)的全面評(píng)估。未來(lái)的研究,還需要對(duì)如何衡量這些指標(biāo)、如何提高軟件的質(zhì)量做更深入的分析,期望能對(duì)軟件的設(shè)計(jì)、編碼、測(cè)試、實(shí)施和運(yùn)維等工作有一定幫助。