跳去內容

軟件建造

出自維基百科,自由嘅百科全書
郁手製作軟件,會用到好似噉嘅源碼編輯器

軟件建造軟件工程其中一個工序,講緊工程師要郁手寫源碼同埋做除錯等嘅工作,實際製作行得到嘅軟件。喺程序上,軟件建造通常發生喺軟件設計之後-喺軟件設計階段,工程師要度橋,諗吓隻軟件要用咩架構用家介面等,但係未實際郁手。做完軟件建造,整咗隻行到嘅軟件,工程師通常就會進入軟件測試階段[1]

軟件建造會產生大量需要打理嘅物品,諸如係裝住源碼嘅檔案、紀錄工作過程嘅文件呀噉。因此,點樣好好組織呢啲快勞都係受關注嘅問題,譬如係 GitHub 等嘅工具就可以攞嚟儲住隻軟件嘅唔同版本。

重要概念

[編輯]

就大方向嚟講,建造軟件一般都希望寫出嚟嘅電腦程式能夠做到[2]

  • 減少不必要嘅複雜度:大型啲嘅 project,會涉及成隊工程師團隊,甚至一個團隊做完交俾下一個做;因此,寫程式要寫到盡可能簡單,啲程式碼先會一睇就明佢哋做乜,噉下一個接手嘅人就容易做嘢;模塊化做法亦能夠減省不必要嘅複雜度。
  • 模塊化:以清晰介面拆件,每嚿單元(模塊module)都可以獨自運作,就會達致更易理解,而且啲部件容易拆開攞去返用[3][4]
  • 預想變化:工程師要預期第時會發生咩變化;多數軟件都會隨時間改變,而且客戶嘅要求都有可能隨時間變化,工程師要預測呢啲變化。
  • 可返用度:要整到容易返用鼓勵共用元件、函式庫等。
  • 抽象化:隱藏實作細節,用家冇必要知嘅行為就唔好騷出嚟。
  • 可維護度:軟件需要具備良好嘅可維護度,令到發生錯誤時能夠迅速搵出同修正。

要提升可返用度,方法有好多:工程師可以用參數化[5],設多啲參數,並且將程式寫到識得按輸入參數調整行為,噉同一嚿模塊就可以改改啲參數就攞去第啲場合用;工程師又可以用各種嘅設計模式,令啲碼更易攞去重用;此外,佢哋仲可以用公開發佈嘅做法,將啲模塊打包成套件或者函式庫呀噉,些牙俾其他開發者用,擴大代碼嘅使用範圍[1]

有關建造軟件嘅工作流程,亦可以睇吓瀑布模型同埋進化式原型製作等嘅概念。

編寫源碼

[編輯]
内文:源碼

源碼係將軟件設計轉做用特定語言寫成、可執行嘅指令,通常仲會一路編寫一路做測試同偵錯。工程師團隊一般會遵守風格指南,用呢啲指南幫啲變數快勞改名,會加注釋;做版本控制(靠 GitHub 等嘅工具)管理改動同協作流程;分析靜態嗰時嘅程式,減少常見錯誤。做完呢啲工作之後,佢哋仲會撰寫對外同對內嘅文件,確保軟件容易維修[6]

寫源碼嗰陣用到嘅語言,又可以分幾類:

  • 腳本語言:通常係直譯式,唔需要事先編譯機器碼;特色係開發效率高、靈活度強,不過效能一般都低過編譯語言
  • 編譯語言:通常需要經編譯器轉換成機器碼先至行到,執行效能高、資源控制精細,適合系統層級或效能要求高嘅應用。

而無論用咩語言,寫源碼都會講到一啲共通嘅要點:變數子程序要跟命名規範;要用簡潔清晰嘅控制流程;而且要加例外處理處理潛在錯誤,令系統更加穩定[1]

喺軟件建造過程中,實要結合唔同部組份,即係指將各個模塊、唔同嘅程式碼、唔同團隊造嘅成品同埋系統組件有效整合埋一齊,靠清晰接口設計、版本控制同埋自動化測試,確保整體協調同可靠。一般嚟講,常用嘅整合方法係增進式整合[7],即係將模塊逐步加落去同埋做測試,而唔係等到最後先一次過組合。噉做嘅好處係:可以及早發現錯誤、降低調試難度、令團隊更快得到行到嘅版本去驗證需求... 等等。

建造軟件嗰陣亦要做各種措施,確保啲程式有返咁上下容錯能力。工程師好多時會採取防禦式編程呢種設計方式,一路寫一路假設系統可能出現錯誤或者不合理嘅輸入,並且採取額外措施應對。常見做法有使用例外處理嚟捕捉同處理運行期間出現嘅異常情況,避免程式崩潰[8];又可以利用斷言,去檢查關鍵假設係咪成立,及早發現潛在錯誤。於是佢哋整出嚟嘅系統就做到更容易識別、隔離同修復問題。亦可以睇睇契約式設計嘅概念。

較大型嘅軟件工程 project 可能喺寫源碼階段就要為國際化(i18n)做準備。國際化指嘅係將語言文字等內容同程式邏輯分開,方便之後做本地化翻譯同轉換成唔同語言同文字。由於唔同語言文字有唔同嘅長度、方向同字型要求,轉換之後可能會引致排字介面設計方面嘅問題[9]

相關工具

[編輯]

睇埋

[編輯]

引述

[編輯]
  1. 1.0 1.1 1.2 SWEBOK Pierre Bourque; Robert Dupuis; Alain Abran; James W. Moore, 編 (2004). "Chapter 4: Software Construction". Guide to the Software Engineering Body of Knowledge. IEEE Computer Society. pp. 4–1–4–5. ISBN 0-7695-2330-7.
  2. Fraser, S. and Mancl, D., 2008. No silver bullet: Software engineering reloaded. IEEE Software, 25(1), pp.91-94.
  3. Wong,Y. and Sharp, J.,A Specification and Design Methodology Based on Data Flow Principles, in: Sharp, J. ed., Dataflow computing: Theory and Practice, Ablex Publishing, Norwood, 1992, 37-79.
  4. Davis, D., Burry, J., & Burry, M. (2011, July). Untangling parametric schemata: enhancing collaboration through modular programming. In Proceedings of the 14th international conference on Computer Aided Architectural Design, University of Liege, Liege.
  5. 英文parameterization
  6. Fowler, Martin (2018). Refactoring (2nd ed.). Addison-Wesley. ISBN 9780134757599.
  7. SWEBOK Pierre Bourque; Robert Dupuis; Alain Abran; James W. Moore, 編 (2004). Guide to the Software Engineering Body of Knowledge. IEEE Computer Society. ISBN 0-7695-2330-7.,佢哋 3.8 嗰度就講到增進式整合英文incremental integration)嘅概念。
  8. 2 Defensive Coding Techniques You Should Use Today. Medium.
  9. Internationalization (i18n). UX Glossary.

[編輯]