軟件實施

在這一章我們學習關於計算機編程方,文檔和軟件實現中的挑戰.

結構化編程

在程序編碼的過程中,代碼行不斷增加,因此該軟件增加大小。漸漸地,它變得幾乎不可能記住程序的流程。如果忘記了如何軟件和它的底層程序,文件,程序構造它,然後變得非常難以共享,調試和修改程序。該解決方案是結構化編程. 它允許開發人員使用的子程序,而不是在代碼中使用簡單的跳轉,從而帶來清晰的代碼中,提高其效率結構化編程循環還可以幫助程序員減少編碼時間和組織代碼號令.

結構化程序設計告訴如何程序被編碼的。結構化程序設計採用三個主要概念:

  • 自頂向下的分析 - 軟件還總是要進行一些理性的工作。這種合理的工作被稱爲軟件中用語問題。因此,我們知道如何解決的問題是非常重要的。下自頂向下的分析,該問題被分解成小塊,其中每一個具有一定的意義。每個問題都單獨解決,步驟明確說明如何解決該問題。

  • 模塊化編程 - 編程時,代碼被分解成較小的組的指令。這些基團被稱爲模塊,子程序或子例程。基於自頂向下的分析理解模塊化編程。它不鼓勵使用「轉到」在節目中,這往往使程序流程的非可追溯報表跳躍。跳躍是禁止的,模塊化的形式鼓勵在結構化編程.

  • 結構化編碼 -  在自頂向下分析參考時,結構編碼的子劃分的模塊插入的代碼還小的單位在其執行的順序。結構化程序使用控制結構,其控制程序的流程,而結構化的編碼使用控制結構來組織中定義的模式的指示.

函數式編程

函數式編程的編程語言把它使用數學函數的概念,方法。在數學中的函數應該總是產生在收到相同的參數相同的結果。在程序語言中,程序的流程通過程序運行時,例如,程序的控制被轉移到被調用的過程。而控制流從一個程序到另一個傳輸,程序改變其狀態。.

在程序編程,有可能爲一個程序在執行中的相同參數的時間產生不同的結果,因爲程序本身可以在不同的狀態。這是一個屬性,以及一個缺點的過程編程的,其中,所述程序執行的順序或定時變得很重要.

函數式編程提供了計算的數學函數,其產生的程序狀態的結果,不論手段。這使得能夠預測程序的行爲.

函數式編程使用以下概念:

  • 第一級和高階功能 - 這些功能有能力接受另一個函數作爲參數或返回他們的其他功能的效果.

  • 純函數 - 這些函數不包括破壞性的更新,即,它們不影響任何I / O或存儲器,如果它們不使用時,它們可以很容易地在不妨礙該程序的其餘部分移除.

  • 遞歸 - 遞歸是一種函數就是函數調用自身,重複的程序代碼中,除非一些預先定義的條件相匹配的編程技術。遞歸是建立在函數式編程循環的方式.

  • 嚴格的評價 - 它是評價傳遞給一個函數作爲參數的表達式的方法。函數式編程有兩種評價方法,嚴格的(渴望)還是非嚴格(偷懶)。嚴格評價調用該函數之前,請務必計算表達式。非嚴格的評估不計算表達式,除非它是必要的.

  • λ-演算 - 大多數函數式編程語言使用λ演算它們的類型系統。 λ-表達式被所發生的評估他們處決.

Common Lisp,斯卡拉,哈斯克爾,二郎和F#是函數式編程語言的一些例子.

編程風格

編程風格設定的編碼規則之後所有的程序員寫的代碼。當多個程序員在同一個軟件項目工作,它經常需要與寫的其他一些開發者的程序代碼工作。這變得乏味,或有時是不可能的,如果所有的開發人員不遵守一些標準的編程風格編寫程序.

適當的編程風格,包括使用函數和變量名相關的預期任務,用精心佈置的縮進,註釋代碼閱讀器和代碼的整體表現帶來的便利。這使得程序代碼閱讀和理解所有,這又使得求解更容易調試和錯誤。此外,適當的編碼風格有助於緩解文檔和升級.

編碼準則

編碼風格的變化與組織,操作系統和語言.

在一個組織的編碼規則如下編碼元件可以被定義:

  • 命名約定 - 這部分定義如何命名函數,變量,常量和全局變量.

  • 縮進 - 這是留在一行的開頭的空間,通常2-8空白或單一標籤.

  • 空白 - 它通常被刪去,在一行的末尾.

  • 操作符 - 定義寫數學,分配和邏輯運算符的規則。例如,賦值運算符'='應具有空間之前和之後,如在「X= 2」。.

  • 控制結構 - 寫IF-THEN-ELSE,區分開關的規則,同時,直到和控制流語句僅在嵌套的方式。.

  • 線路長度和包裝 - 定義多少個字應該是有一條線,大多是一行是80個字符長。包裝定義了一條線要包好,如果太長.

  • 功能 - 此功能定義應如何申報和調用,使用和不使用參數.

  • 變量 - 這提到了不同的數據類型的變量是如何聲明和定義.

  • 註釋 - 這提到了不同的數據類型的變量是如何聲明和定義.

軟件文檔

軟件文檔是軟件過程的一個重要組成部分。良好的書面文件提供一個很好的工具和信息資源庫的方式要了解軟件的過程。軟件文檔還提供了有關如何使用該產品的信息.

維護良好的文件應包括下列文件

  • 需求文檔 - 本文檔可以作爲軟件設計,開發和測試團隊,以履行各自的任務關鍵工具。本文件包含的意軟件的所有功能,非功能性和行爲的描述.

    S本文件的來源可以事先存儲的數據有關的軟件,已經運行的軟件在客戶端結束的時候,客戶的訪談,問卷調查和研究。通常它被存儲在與高端軟件管理團隊的電子表格或字處理文檔的形式.

    本文檔可以作爲基礎進行開發的軟件和驗證和確認階段使用。大多數的測試案例是直接從需求文檔建立.

  • 軟件設計文檔 - 這些單證包括所有必要的信息,這些信息來構建軟件的需要. 它包括::(a) 一)高級軟件架構, (b) 軟件的設計細節, (c)數據流圖, (d) 數據庫設計.

    這些文件的存儲庫工作的開發者實現軟件。儘管這些文件沒有提供有關如何編寫程序的任何細節,他們給所需要的編碼和執行所有必要的信息.

  • 技術文件 - 這些文件已經由開發商和實際編碼器維持。這些文件中,作爲一個整體,表示有關代碼的信息。在寫代碼的程序員也不在話下代碼,是誰寫的,在那裏將它需要客觀,它做什麼,它是如何做,該代碼使用什麼其他的資源,等等.

    技術文檔增加了工作的相同的代碼不同程序員之間的瞭解。它增強了代碼的複用能力。這使得調試方便,可追溯.

    有可用的各種自動化的工具和一些自帶的編程語言本身。比如java的自帶的JavaDoc工具生成代碼的技術文檔.

  • 用戶文檔 - 本文檔是不同的,從所有上述解釋。所有以前的文件已經以提供約軟件及其發展過程的信息。但是,用戶文檔介紹了軟件產品應該如何工作,以及應該如何使用,以獲得理想的效果.

    這些單證包括,軟件安裝程序,操作指南,用戶指南,卸載方法和特殊的引用,以獲得更多象牌的信息等.

軟件實施的挑戰

有在實施軟件所面臨的開發團隊的一些挑戰。其中一些被提及如下:

  • 代碼重用 - 當代語言的編程接口是非常複雜的,配備巨大的庫函數。靜止,以使成本最終產物向下,組織管理傾向於重新使用的代碼,這是早爲一些其它軟件創建的。有兼容性檢查面臨的程序員,並決定多少代碼再利用巨大的問題.

  • 版本管理 - 新的軟件發給客戶的每一次,開發商必須保持版本和配置相關的文件。這個文檔需要高度精確,可利用時間.

  • 目標 - 主機 - 軟件程序,它正在開發的組織,需要被設計爲主機上的客戶端。但有時,不可能設計出在目標計算機上的可用的軟件.