要想軟體問題少,個人能力要提高
雖然軟體工程是一種系統方法,它通過應用專案管理的方法,不完全依賴個人的能力,通過JAD、審查、評審、測試等質量控制手段來確保軟體產品質量。
但是,“打鐵還要自身硬”。軟體產品的質量與軟體開發人員的能力和知識水平有非常直接的關係。想要指望依靠團隊的審查、評審、測試這些手段來解決開發人員能力不足帶來的所有問題是不現實的。當軟體出現技術問題時,問題的原因往往是技術人員缺乏軟體應用領域相關的專業知識,而不是缺乏軟體開發方法的基本知識。也有可能是缺乏關鍵質量控制活動方面的知識,如審查、JAD以及專門的測試方法等。
以下是一些軟體技術人員應當掌握的技術主題:
-
應用程式所在的領域
軟體開發人員對業務領域越熟悉,就越能理解使用者的需求,從而減少由於需求變更帶來的問題。
-
資料庫軟體包的形式、工具以及產品
除了程式設計工具之外,其它影響軟體功能實現的工具,軟體開發人員也應當掌握。比如資料庫工具。如果沒能掌握如何對它進行呼叫,又怎麼去實現資料的儲存、查詢的功能?
-
外包公司的技能
即使自己不開發一行程式碼,把軟體交給外包公司開發,軟體人員也要具備與外包公司溝通,監控外包公司的進度、過程質量和產品質量的能力,否則,你很難驗收到一個合格的軟體產品。
-
JAD的原則
聯合應用設計是一項非常好的技能,它不僅能幫助我們減少需求問題,也能幫助我們更好地設計和實現。但是,軟體開發人員應當能夠建立應用這一技能的基本原則,比如何時應用這一技能,使用這一技能的範圍界定等等。這樣,才可能真正發揮JAD的作用。
-
正式設計審查
做好設計審查,可以在軟體實現之前就消除掉一些缺陷,對於軟體開發的進度和質量具有積極的意義。但是,如果僅憑個人經驗的審查是很能發揮出太大的作用。要使用審查工作發揮作用,應當建立軟體的經驗教訓庫,選取合適的審查人員,制定合理的審查準則,指定適宜的審查範圍。
-
複雜性分析
對軟體複雜程度的理解,可以幫助開發人員做好針對性的設計。軟體的複雜性分析就是完成這一任務的技術手段。
-
使用程式語言
要掌握一門程式語言,絕不僅僅是會在它的開發平臺上敲敲程式碼而已。環境的設定、編碼的規則、語言的侷限等等,都是需要開發人員掌握的。
-
安全問題和安全漏洞
對於一些有高安全性需求的軟體,開發人員應當主動研究軟體面臨的安全問題,思考軟體存在的安全漏洞,並預先進行處理。
-
效能問題和瓶頸
效能需求往往受到使用者的高度重視。解決軟體的效能瓶頸是軟體開發人員的一項重要能力。
-
正式程式碼審查
人工程式碼審查,可以發現很多工具發現不了的邏輯性錯誤。開發人員使用自己的大腦來執行測試用例,是開發人員必須掌握的技能。
-
靜態分析方法
使用一些測試工具能夠對程式碼進行靜態分析,能夠幫助開發人員發現一些不符合編碼準則的問題。
-
變更控制的方法和工具
變更控制要能夠滿足需求方和開發方的利益,要做好版本控制,並且避免引入新的缺陷。
-
效能的度量和優化方法
開發人員對於效能需求,必須要以量化的語言描述,這樣在軟體實現之後才能對其進行測量。效能的測量可能需要藉助一些專用的工具和裝置,開發人員應能設計有效的測量方法,準確地度量軟體的效能指標,並能採取有效的措施對其進行優化。
-
測試方法和工具
測試是用來驗證軟體是否被正確地實現。一些非功能性需求可能要使用一些專用工具和設計出專門的測試方法。唯有如此,軟體的需求才能得到有效的驗證。
軟體開發人員要提高自己的能力,進而提高自己產品的質量,就要對照上述能力項反省自己是否有缺失,並且努力補充自己的短板。同時,組織也應按照自己的戰略培訓計劃逐步開展相應的技術培訓。
參考書目:《軟體工程最佳實踐》