劉紅
(上海微波設備研究所 上海市 200000)
近年來,我國軟件行業飛速發展,再加上我們正處在“互聯網+”的信息化時代中,因此軟件的質量控制變得尤為重要。軟件開發過程中的質量控制如果能夠做到位,那么在后期軟件使用的過程中,軟件的使用壽命會相應增長,軟件維護成本也會降低。據統計,連世界一流的軟件開發公司——“微軟”,其軟件開發的成功率也不足30%。而軟件開發的成功與否,除了要有必要的方法、工具和技術措施外,嚴格的質量控制和嚴密的管理必不可少。
世界上任何事物都具有兩面性。企業中,軟件辦公所帶來的好處無需多言,但隨著軟件的可選擇性越來越多,軟件的使用壽命和質量受到了越來越多的關注。因此,對軟件開發者的要求也越來越高。如何提高軟件的競爭力,是很多企業和軟件開發者密切關注的問題。然而,現在很多軟件開發商沒有一套完整的軟件開發管理模式,在軟件開發中職責劃分不清晰,后期維護制度不完善等等,致使用戶在使用過程中,會面臨無休止的后期服務,為了改善目前的這種現狀,務必要加強軟件開發過程中的質量控制。
一個完整的軟件產品包括:前期調研相關的文檔資料、數據、程序和代碼以及后期維護的標準。其中文檔編寫在整個軟件開發和后期維護中占了很大比重,但很多軟件開發人員都把重點放到了程序調試上,從而使質量控制受到影響。
根據軟件開發過程中的任務側重和先后順序,可以分為以下幾個階段:客戶需求分析、性能確定、總體設計和詳細設計、集成、代碼編寫、測試、修改bug,定版和上線等。階段劃分的目的是可以很清楚的定義每個階段負責人,相應負責人應確保按時提交任務,后續開發中出現問題時也便于明確各個角色的責權范圍,各階段都是一個質量控制點,軟件開發的過程貫穿著這些質量控制點,從而形成軟件開發質量控制體系。
逐步提高軟件質量是軟件開發的主要目標之一。“反映軟件產品滿足規定需求和潛在需求能力的特征和特征的總和。”這是國際化標準組織ISO 對軟件質量的最新定義。質量控制貫穿于軟件設計項目的全過程,而不僅僅是控制軟件的最終結果。隨著軟件的規模和作用的不斷增加,人們對軟件質量的要求也就不僅僅體現在軟件的功能和作用上了,而是更強調軟件整體的評價,比如:軟件的功能性,易用性,可靠性,是否高效,可維護性和可移植性。而在軟件開發過程中,其中軟件的可維護性是指在軟件使用過程中,能夠根據業務的發展對正在使用的軟件進行簡單的修改來滿足要求,而不用對程序進行大刀闊斧的改造,這就要求在軟件的開發過程中,遵循統一的標準和規范。軟件的可移植性是指該軟件的部分程序不止僅能適用于目前的軟件,其他軟件也可以借鑒和開發。就目前的軟件開發市場來看,軟件的可維護性和可移植性往往是容易被忽略的。

圖1:計算機軟件的應用

圖2:軟件技術分層
目前軟件開發中普遍存在的問題有很多,其一就是不能明確分析軟件的需求。很顯然,如果不能明確客戶的需求,那么從一開始就偏離了軟件開發的方向,達不到最終想要的效果。而明確軟件需求需要軟件開發者和客戶之間有良好有效的溝通和交流,這對軟件開發者的交際能力有很高的要求。不僅如此,在軟件開發的過程中也要不斷跟客戶交流,及時按照客戶的意愿調整開發方向。
第二個普遍問題就是軟件開發管理不規范,出現問題后不容易修復。軟件開發往往是一個團隊共同完成的,各司其職。這樣固然節省時間,但會造成一個問題,就是一旦程序出現問題,每個人只對自己負責的那部分有充分的了解,而且也只有軟件開發者可以對產生的問題進行解決。
軟件開發中遇到的第三個問題就是開發者疏忽質量控制。由于軟件開發是團隊之間的協作,出現問題往往不止是一個人的責任,再加上公司績效很大程度上都是按照項目進度結算的,如此一來,就會導致軟件開發者沒有按照需求去控制軟件質量,而一味追求效率和收益。
另一個重要問題是企業缺乏高素質的管理人員。就目前我國軟件開發的現狀來看,企業普遍缺乏成熟的軟件開發管理體系,這也是導致開發者疏忽質量控制的重要原因,因為沒有管理者系統把控軟件質量問題。部分有研發管理人員的企業,其素質和能力也不足以支撐起軟件的質量監控和管理機制。
軟件質量的核心還是軟件技術問題。我們知道,計算機分為硬件和軟件,其中軟件技術就是計算機為了達到使用者的目標,按設定的編程,構建完善的邏輯結構,編寫程序,從而提高人們的工作效率。也就是說,軟件的意義在于用邏輯編寫成代碼,從而形成一套完整的程序,來減輕人本身多的工作量,滿足人們的計劃和需求。而軟件質量是衡量一個軟件是否優秀的重要指標。在軟件開發時,也需要關注軟件的功能需求和功能正確性。
在實際應用中,軟件系統分布于項目的各個方面,隨著項目的開發,企業業務的不斷擴大,軟件之間的交互也變得越來越復雜,再加上我國目前軟件發展情況,區域不平衡問題會一直持續下去,這給從軟件技術層面提高軟件質量帶來了很大的問題。軟件技術的發展方向是創新化和智能化,要獲得用戶的認可,關鍵問題在于如何研發一個具備客戶需求,質量過硬,使用時間長并且市場普及率高的軟件。除了提高軟件質量之外,重視客戶體驗也是軟件開發的另一重要研究方向,這方面此處不再過多贅述。
除此之外,開發軟件應用范圍小也是目前軟件開發中容易遇到的問題。每個團隊開發的軟件都具備自身特有的特性,開發的軟件能否適用于其他系統,也就是上文提到的軟件是否具有可移植性,就變成了很能影響企業效率的事情。每一個需求都要做一套完整的軟件開發,這種不必要的重復性工作,無疑對企業會造成人力和財力的浪費。
最后,軟件測試的隨意性也是導致軟件質量問題的一大原因。為了后期軟件的正常使用,軟件測試在軟件質量控制中也是非常重要的一環。而許多企業目前面臨的問題是,測試人員不夠專業,或者測試人員本身對軟件的熟悉程度也不夠,對軟件測試工具使用次數少,軟件的很多潛在問題無法在測試中暴露出來,并且,市場目前還沒有建立完善的測試管理制度,最終導致測試結果不準確。
根據上文提到的,目前企業中存在的影響軟件質量的幾個問題,提出了以下幾個方面的軟件開發質量控制的措施:
在與客戶積極的進行需求分析時做好評審工作,能夠做到組織專門的人員和機構來進行評審,評審主要包括內部評審和外部評審,其中,所謂的內部評審就是對企業內部的負責人進行管理和培訓,內部評審工作的好壞直接影響到后續項目進行的效率問題,評審過程要嚴格書面記錄審核要點,必要時按照相關需要對審核的程序進行安排。外部評審指的是請外面的專家或者業界有影響力的同行對整個軟件技術的質量進行審核。評審后定義各部門工作的質量標準,把內部的所有規定都盡可能的變成文字記錄下來,以便人們按照規定去工作。管理人員分配好各部門的職責和任務,讓每一位負責人對自己要完成的工作有把握,根據項目自身的特點,從產生質量問題的風險程度提前采取相應的預防措施,并在軟件開發的過程中提前采取預防措施,減少錯誤率。同時與客戶的溝通不能間斷,以便隨時根據客戶的要求修改開發方案。
在軟件開發過程中,需要一位高素質的管理人員來統籌項目工作,把握項目走向,總攬大局。管理人員的責任是從始至終的。比如,需求分析階段要制定和設計文檔模版規范;軟件開發階段要確定要執行的編碼規范和每人要負責的任務;還要保證程序編寫過程中開發平臺的正常運行和統一;軟件測試過程還要建立質量審計制度等。
軟件測試一般包括這幾個階段:單元測試、集成測試、確認測試和系統測試。為了保證測試效果,應該對測試過程制定一個統一的規范。軟件測試是軟件開發的最后一道關口,為了避免軟件上線后造成不必要的錯誤,在測試過程中,一旦發現問題,應立即與測試領導者聯系,讓軟件開發人員對錯誤進行及時改正。
如何提高軟件技術也是非常重要的一個方面。最早研究軟件技術的國家是美國,雖然軟件技術在我國起步比較晚,但近些年在技術人員的不懈努力下也有了突飛猛進的發展。目前,我國軟件市場上出現了很多優秀的軟件開發的方法和相應的工具。比如近兩年非常火的,在國內的軟件領域也已經很成熟的快速原型法和瀑布模型。眾所周知,軟件技術的更新換代速度非常快,各種各樣新的技術不斷涌現,在軟件開發中,一些很新潮的編程思想和編程邏輯也越來越廣泛的被應用進去。舉例來說,軟件技術一個新的研究方向就是面向對象的軟件工程方式和面向用戶的軟件開發技術。這個方法最初是由國外傳進來的,一開始并不適用我國的軟件技術發展,而在后續不斷修改后慢慢已經適應了我國的編程環境,從而變得越來越主流。軟件技術分層如圖2所示。
實踐證明,良好的軟件開發質量控制是有利于降低開發和維護成本,是確保軟件達到預期效果的最基本保證。想要提高軟件的質量,質量問題應該貫穿始終,企業應該著重建立完善的質量控制體系,調查軟件開發中,造成軟件不合格的原因,做出相關分析,以防止此類問題再發生;保證軟件生命期各個階段的軟件質量,重視對軟件各個開發階段的評審,制定相關措施對質量控制中的相關不良規定進行糾正。對質量控制體系的整體過程、質量記錄和服務報告等情況都要充分的考慮,對可能會產生不合格品的風險程度提前預防。加強軟件測試,不能等到開發后期才去解決質量問題。企業各方也應協同合作,為提高軟件質量共同努力。