理順軟件開發各個環節-14(開發管理-編程實現)

5.7編程實現

  軟件開發,最後終歸要編寫程序代碼來實現。算法

 

5.7.1關於程序語言

  程序語言,即計算機語言,與天然語言的語種同樣,也是五花八門,就我本身用過的語言就有:彙編、BASIC、FORTRAN、VB、C、C++、C#、PASCAL、PHP、JAVA、PYTHON、R等,還有腳本語言如:JavaScript/jQuery、HTML、XML、JSON、Shell、EL、SQL等。還有一些不曾使用但稍稍瞭解的語言,如ADA、COBOL、EPL、Erlang、F#、Go、LISP...等等,不一而足。編程

  只要有配套的解釋器或編譯器,就能夠有一種計算機語言。實際上,經過語法分析、詞法分析,結合編譯原理,就能夠本身設計語言。多線程

  選擇何種計算機語言,在整體設計時須要考慮,與軟件依賴的軟硬件環境有關,也與須要實現的需求有關,再結合計算機語言對開發實現帶來的便利性。架構

  在C++時代,不一樣的編譯器有本身的類庫,如Turbo C++、Borland C++、C++ Builder、Visual C++、GCC等,一旦選擇,更換的成本很是高。併發

  C++做爲OOP的主力語言,高性能是優勢,但內存管理給開發人員帶來很大挑戰,所以GC機制的引入,使得不少應用放棄了C++,而使用C#或Java。框架

  Python近年來,持續火熱,一方面因其支持函數式編程,另外一方面與其支持大量機器學習算法包有很大關係。但因爲其GIL,很難作到真正的多線程,併發能力是瓶頸。機器學習

  在Windows平臺,VC++和C#.Net是主流的選擇;在Linux平臺,主流選擇是Java。其它如C、Python、PHP、Node.js等視需求選擇。函數式編程

  Java做爲跨平臺語言,是現在B/S架構的主流語言,框架從早期的SSM到現在的SpringBoot,插件也很是豐富。所以,若有機會,就應儘可能瞭解、熟悉和使用Java語言。函數

 

5.7.2關於編程規範

  程序代碼不只輸入給編譯器或解析器,同時也是呈現給開發人員的。計算機語言,是表達思想的一種方式,這就須要開發人員有良好的表達能力。這個表達能力,不只是符合計算機語言的語法和業務的邏輯結構,還應遵循約定的編程規範,從而使得開發團隊成員閱讀代碼變得輕鬆,提升團隊成員流動的便利性,下降代碼的維護成本。工具

  編程規範通常涉及以下部分:

  • 代碼註釋規範(我傾向於使用母語註釋,這樣更容易準確表達和被理解,除非是跨國團隊協做);
  • 命名規範;
  • 代碼書寫規範;
  • UI規範(視須要)。

  編程規範的執行狀況,能夠結合工具檢查和人工代碼審查來實行。工具如CodeStyle,Pylint等。

 

5.7.3關於接口先行

  在代碼開發以前,先肯定接口,包括入參和出參,接口代碼能夠先不實現,用固定的值返回(即所謂的假接口)。

  如Java開發,可使用Swagger或YApi來開發接口,結合Mock構造數據,而後就能夠部署,調試接口。

  接口先行,好處多多。能夠很容易發現參數是否缺失,數據類型是否合理等等,甚至能夠檢測出接口是否須要增長等狀況。

  因爲代碼還沒有實際開發,全部調整的代價都是很低的;一旦代碼已經編程實現,調整起來容易傷筋動骨。


5.7.4關於單元測試

  Java開發,使用JUnit,實現單元測試,是提升代碼質量的有效手段。

  固然,單元測試的有效性,更重要的是測試用例的有效性;但使用單元測試框架,能夠大大提升迴歸測試的效率。且單元測試能夠單獨部署,也便於測試驗證。

  所以,應儘可能使用單元測試框架。


5.7.5關於持續構建

  Jenkins使得代碼的持續構建成爲現實。

  代碼持續構建,方便獲取可驗證程序軟件,便於及早發現問題,對於提升團隊開發效率,幫助很大。固然,還須要與配置管理結合起來。

 

5.7.6編程實現階段的關鍵信息

  責任人:開發項目組長。

  執行人:開發人員(軟件工程師)。

  關鍵行爲:編碼實現和自測。

  輸入

  • 軟件需求規格書(SRS);
  • 數據字典(DD);
  • UI&UE交互設計原型(若是有);
  • 用戶故事;
  • 整體設計文檔(視須要);
  • 概要設計文檔;
  • 詳細設計文檔(若是有);
  • 接口設計文檔;
  • Checklist;
  • 開發約定。

  輸出

  • 程序代碼,使用代碼配置管理,通常用dev分支或相應的開發分支;
  • 單元測試及checklist,各check項都自測經過。

  職責要求

  • 分析軟件需求;
  • 理解設計思想;
  • 必要的詳細設計;
  • 編寫程序代碼;
  • 實現軟件需求;
  • 單元測試;
  • 代碼review;
  • 提交代碼至配置庫。
相關文章
相關標籤/搜索