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