1 3 小酌軟體工程

2021-09-30 09:57:32 字數 1262 閱讀 6608

本章開頭曾經提到過,對資料結構和演算法的理解在開發軟體時是非常重要的。與其同等重要的是在我們的開發工作中應用一些軟體工程中的良好準則。軟體工程是個很廣的主題,但從一些思想和概念中我們可以得到很多收穫。這裡就介紹一些相關的主題並將這些思想運用到全書中。

模組化

在軟體設計中為了達到模組化的目的,一種方法是將精力集中在黑盒上。在軟體開發中黑盒代表乙個模組,它的內部實現並不希望被使用這個模組的使用者看到。使用者只能通過模組設計者預定義好的公共介面去和這個模組互動。這就是說設計者僅僅只公開使用者需要使用這個模組的必要資訊,而將其他所有實現細節都隱藏起來。其結果就是使用者並不關心模組的實現細節,也避免了(至少理論上是這樣,隨程式語言而定)與模組的內部實現相耦合。這些就是資料隱藏和封裝的基本思想。軟體工程中的良好準則在物件導向語言中更是被強制施行。儘管非物件導向程式設計語言並沒有在語言本身強制施行這些觀點和準則,我們自己依然可以做到。本書中的例子是設計抽象資料型別(adt)。基本上每種資料型別都是乙個結構體。我們對結構體所能做的一切操作都被精確定義,並在標頭檔案中以公共介面的形式公開。

可讀性

通過一些方法我們能使程式變得更加可讀。比如編寫有意義的注釋,使用貼切的識別符號,編寫自注釋的**,這都是一些範例。關於如何編寫出好的注釋,各種不同的觀點之間相差很大。但乙個好的基本準則是加上注釋以便於其他的開發人員能夠很容易的通過閱讀這段注釋來理解程式邏輯。另一方面,如果**是自注釋的則不需要新增注釋,因為**讀起來幾乎和注釋一樣清楚明了。本書中的自注釋**例子是在標頭檔案中對給出的資料結構和演算法的公共介面定義。

簡潔性

不幸的是,在人類社會中我們常常傾向於將「複雜」和「精巧」聯絡在一起。事實上,精巧的解決方案通常都是最簡單的。此外,最簡單的解決方案常常也是最難找到的。本書中的大部分演算法都能夠展示出簡潔的力量。儘管人們對一些演算法做了大量的研究工作後才證明了其正確性,但它們最終呈現出的形態都是對問題本質而言簡潔而清晰的解決方案。

一致性

在軟體開發中,一件非常值得去做的事情是建立編碼規範並一直遵守這個約定。當然,約定必須容易識別。畢竟,如果其他人無法確定什麼是約定,則約定也就不成約定了。

這種約定可以體現在許多層面上。例如,它們可能只是**形式上的修飾,或者它們可能和如何解決特定型別的問題有關聯。無論是什麼情況,乙個好的約定的優秀之處在於一旦我們在一處看到,我們就可以在別處識別出來並理解它的作用。因此,一致性也促進了**的可讀性和簡潔性。本書中的兩個形式約定的例子是注釋的寫法以及和資料結構相關聯的操作的命名方式。兩個概念上的約定例子是在資料結構中管理資料的方式以及把靜態函式當作私有函式使用,也就是,它們不屬於公共介面部分。

ps:

軟體工程複習(1 3)章

定義 將系統的 規範的 可度量工程化方法應用於軟體開發 執行和維護的全過程及上述方法的研究。基本要素 方法 工具和過程。軟體危機 1 軟體危機的表現 1 對於軟體開發成本和進度的估計很不準確 2 開發的軟體產品不能完全滿足使用者要求,使用者對已完成的軟體系統挺滿意的現象常常發生。3 開發的軟體可靠性...

軟體工程 軟體工程概述

一.軟體 定義 計算機系統中的程式及其文件 程式 計算任務的處理物件和處理規則的描述 文件 為了便於了解程式所需的闡明性資料 特點 軟體的種類 按功能劃分 系統軟體 支援軟體 應用軟體 二.軟體工程的起源和概念 早期電腦程式 現在人們認為 在資訊產業中,微電子是基礎,計算機和網路是載體,軟體是核心 ...

軟體工程 軟體工程的概述

軟體工程是研究和應用如何以系統性的 規範化的 可定量的過程化方法去開發和維護軟體,以及如何把經過時間考 驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科,它涉及到程式語言 資料庫 軟體 開發工具 系統平台 標準 設計模式等方面。先從軟體工程的第一章開始說起 軟體工程的概述,這一章是...