軟體工程基礎知識

2022-04-29 02:30:02 字數 4805 閱讀 9120

2.4.1 主要知識點

軟體工程是計算機軟體的乙個重要分支,主要應掌握軟體工程的基本原理以及軟體設計與測試方法。

2.4.1.1軟體生存週期各階段的任務

軟體生存週期指出由軟體定義、軟體開發和軟體維護等階段組成的全過程。

(1)軟體定義階段

軟體定義階段主要解決軟體要"做什麼"的問題,也就是要確定軟體的處理物件、軟體與外界的介面、軟體的功能、軟體的效能、軟體的介面以及有關的約束和限制。軟體定義階段通常可分成系統分析、軟體專案計畫和需求分析等階段。系統分階析的任務是確定待開發軟體的總體要求和適用範圍,以及與之有關的硬體和支撐軟體的要求,該階段所生產的文件可合併在軟體專案計畫階段的文件(專案計畫書)中。

軟體專案計畫的任務是確定待開發軟體的目標,對其進行可行性分析,並對資源分配、進度安排等做出合理的計畫,該階段所產生的文件有可行性分析報告和專案計畫書。需求分析的任務是確定待開發軟體的功能、效能、資料和介面等要求,從而確定系統的邏輯模型。該階段產生的文件是需求規格說明書。

(2)軟體開發階段

軟體開發階段主要解決軟體"怎麼做"的問題,包括資料結構和軟體結構的設計、演算法設計、編寫程式和測試,最後得到可交付使用的軟體。軟體開發階段通常可分成軟體設計、編碼、軟體測試等階段。軟體設計通常還可分成概要設計和詳細設計。

概要設計的任務是模組分解,確定軟體結構、模組的功能和模組的介面,以全國資料結構的設計。詳細設計的任務是設計每個模組的實現細節和區域性資料結構。設計階段產生的文件有設計說明書,它也可分為概要設計說明書和詳細設計說明書。

編碼的任務是用某種程式語言為每個模組編寫程式,產生的文件有程式清單。軟體測試的任務是發現軟體中的錯誤,並加以糾正,產生的文件有軟體測試計畫和軟體測試報告。

(3)軟體維護

軟體維護任務就是為使軟體適應外界環境的變化,進一步實現軟體功能的擴充和質量的改善而修改軟體。該階段產生的文件有維護計畫和維護報告。

2.4.1.2軟體開發模型

用不同的方式將軟體生存週期中所有開發活動組織起來,形成不同的軟體開發模型。常見的軟體開發模型有瀑布模型、螺旋模型和噴泉模型等。瀑布模型給出了軟體生存週期各階段的固定順序,上一階段完成後才能進入到下一階段。

各階段結束後,都要進行嚴格的評審。

2.4.1.3結構化分析和設計方法

(1)結構化分析(sa)方法

結構化分析(sa)方法是一種面向資料流的需求分析方法,它適用於分析大型資料處理系統。結構化分析方法的基本思想是自頂向下逐層分解,把乙個問題分解成若干個小問題,每個小問題再分解成若干個更小的問題,經過多次逐層分解,每個最低層的問題都是足夠簡單、容易解決的,這個過程就是分解的過程。sa方法的分析結果由資料流圖dfd、資料詞典和加工邏輯說明幾個部分組成。

(2)結構化設計(sd)方法

結構化設計(sd)方法是一各面向資料流的軟體設計方法,它可以與sa方法銜接,sd方法採用結構圖(sc)來描述程式的結構。結構圖的基本成分由模組、呼叫和輸入/輸出資料組成。在需求分析階段,用sa方法產生了資料流圖。

面向資料流的設計能方便地將dfd轉換成程式結構圖,dfd中從系統的輸入資料到系統的輸出資料流的一連串連續變換將形成一條資訊流。dfd的資訊流大體可分為兩種型別,一種是變換流,另一種是事務流。

sd方法的設計步驟有:①複查並精化資料流圖;②確定dfd的資訊流型別;③根據資訊流型別分別將變換流或事務流轉換成程式結構圖;④根據軟體設計的原則對程式結構圖作為改進。

(3)結構化程式設計(sp)

結構化程式設計(sp)採用自頂向下逐步求精的設計方法和單入口單出口的控制結構。自頂向下逐步求精的設計方法符合抽象和分解的原則, 人們解決複雜問題時常用的方法。sa方法和sd方法也採用了自頂向下逐步求精的方法,在詳細設計時也同樣如此。

在設計乙個模組的實現演算法時,先考慮整體後考慮區域性,先抽象後具體,通地逐步細化,最後得到詳細的實現演算法。單入口單出口的控制結構,使程式的靜態和動態結構執行過程一致,使程式具有良好的結構。

2.4.1.4面向資料結構的設計方法

這類方法以資料結構作為設計基礎,根據輸入/輸出資料結構匯出程式的結構。jackson方法是一種典型的面向資料結構的設計方法。儘管程式中實際使用中的資料結構有許多種,但這些資料結構中資料元素間的邏輯關係只有順序、選擇和重複3類。

jackson方法的設計步驟為:

(1)分析並確定輸入和輸出資料的邏輯結構,並用jackson圖表示;

(2)找出輸入資料結構與輸出資料結構間有對應關係的資料單元;

(3)從描述資料結構的jackson圖匯出描述程式結構的jackson圖。

2.4.1.5軟體設計的原則

(1)抽象的原則

軟體工程中從軟體定義到軟體開發要發經歷多個階段,在這個過程中每前進一步都可看作是對軟體設計的抽象層次的一次細化。抽象的最低層次就是實現該軟體的源程式**。在進行曲模組化設計時也可以有多個抽象層次,最高抽象層次的模組用概括的方式敘述題的解法,較低抽象層次的模組是對較高抽象層次模組問題解法描述的細化。

過程抽象和資料抽象是常用的兩種主要抽象手段。

(2)模組化的原則

模組化是指將乙個待開發的軟體分解或成若干個小的簡單的部分模組,每個模組可獨立地開發、測試,最後組裝成完整的軟體。

(3)資訊隱蔽的原則

資訊隱蔽是開發整體程式結構時使用的法則,即將每個程式的成分隱蔽或封裝在乙個單一的設計模組中,定義每一人模組時盡可能少地顯露其內部的處理。資訊隱蔽原則對提高軟體的可修改性、可測試性和可移植性都有重要的作用。

(4)模組獨立的原則

模組獨立是指每個模組完成乙個相對獨立的特定子功能,並且與其他模組之間的聯絡比較簡單。衡量模組獨立程度標準有兩個:耦合和內聚,耦合是指模組之間聯絡的緊密程度,耦合度越高,則模組的獨立性越差。

內聚是指模組內部各元素之間聯絡的緊密程度,內聚度越低,模組的獨立性越差。模組獨立要求每個模組都是高內聚低耦合的。

2.4.16編碼

編碼階段的任務就是根據詳細的設計說明書編寫程式。要編寫高質量的程式,應注意選擇合適的程式語言,明確源程式的質量要求,養成良好的程式設計格。

2.4.1.7 軟體測試

軟體測試的工作量約佔軟體開發總工作量的40%以上,其目的是盡可能多地發現軟體產品(主要是指程式)中的錯誤和缺陷。

測試的關鍵是測試用例的設計,設計方法可分成兩類:白盒測試和黑盒測試。白盒測試把程式看成是裝在乙隻透明的盒子裡,測試者完全了解程式的結構和處理過程。

白盒測試根據程式的內部邏輯來設計測試用例,檢查程式中的邏輯通路是否都按預定的要求正確地工作。黑盒測試把程式看成是裝在乙隻不透明的盒子裡,測試者完全不了解(或不考慮)程式的結構和處理過程。黑盒測試根據規格說明書規定的功能來設計測試用例,檢查程式的功能是否符合規格說明的要求。

軟體測試的主要步驟有單元測試、整合測試和確認測試。單元測試也稱模組測試,通常單元測試可放在編碼階段,主要用來發現編碼和詳細設計中產生的錯誤,一般採用白盒測試。整合測試也租組裝測試,它是對由各模組組裝而成的模組進行測試,主要檢查模組間的介面和通訊。

整合測試主要用來發現設計階段產生的錯誤,通常採用黑盒測試。確認測試的任務是檢查軟體的功能、效能和其他特徵是否與使用者的需求一致,它是以需求規格說明書作為依據的測試,通常採用黑盒測度。

大多數軟體生產者使用一種alpha 測試和beta測試的過程,來揭露僅由終端使用者才能發現的錯誤。 alpha測試是在開發者的現場由客戶來實施的,被測試的軟體是在開發者從使用者的角度進行常規設定的環境下執行的。beta測試是在乙個或多個客戶的現場由該軟體的終端使用者實施的。

與alpaha測試不同的是,進行beta測試時開發者通常是不在場的。

2.4.1. 8 物件導向方法的基本概念

物件導向(oo)方法成為軟體開發的一種主要方法。它有幾個基本概念。

(1)物件

在計算機系統中,物件是指一組屬性以及這組屬性上的專用操作的封裝體。屬性可以是一些資料,也可以是另乙個物件。每個物件都有它自己的屬性值,表示該物件的狀態,使用者只能看見物件封裝介面上的資訊,物件的內部實現對使用者是隱蔽的。

封裝目的是使物件的使用者和生產者分離,使物件的定義和實現分開。乙個物件通常可由物件名、屬性和操作這3個部分組成。

(2)類

類是一組具有相同屬性和相同操作的物件的集合。乙個類中的每個物件都是這個類的乙個例項(instance )。在分析和設計時,我們通常把注意力集中在類上,而不是具體的物件上。

通常把乙個類和這個類的所有物件稱為類及物件或物件類。

(3) 繼承

繼承是在某個類的層次關聯中不同的類共享屬性和操作的一種機制。乙個父類可以有多個子類,這些子類都是父類的特例。父類描述了這些子類的公共屬性的操作,子類中還可以定義它自己的屬性和操作。

乙個子類只有唯一的乙個父類,這種繼承稱為單一繼承。乙個了類有多個父類,可以從多個父類中繼承特性,這種繼承稱為重多繼承。

(4)訊息

訊息的物件間通訊的手段、乙個物件通過向另一物件傳送訊息來請求其服務。乙個訊息通常包括接收物件名、呼叫的操作名和適當的引數(如有必要)。訊息只告訴接收物件需要完成什麼操作,但並不能指示接收者息樣完成操作。

訊息完全同接收者解釋,接收者獨立決定採用什麼方法來完成所需的操作。

(5)多型性和動態繫結

多型性是指同乙個操作作用不同的物件可以有不同的解釋,產生不同的執行結果。

與多型性密切相關的乙個概念就是動態繫結。傳統的程式語言把過程呼叫與目標**的連線放在程式執行前進行,稱為靜態繫結。而動態繫結則是把這種連線推遲支動行時才進行。

在執行過程中,當乙個物件傳送訊息請求服務時,要根據接收物件的具體情況將請求的操作與實現的方法連線,即動態繫結。

2.4.1.9物件導向的分析與設計方法

(1)peter coad 和edward yourdon的ooa和ood方法

ooa(物件導向的分析)模型由5個層次(主題層、物件類層、結構層、屬性層和服務層)和5個活動(標識物件類、標識結構、定義主題、定義屬性和定義服務)組成。在這種方法中定義了兩種物件類之間的結構,一種稱為分類結構,一種稱為組裝結構。分類結構就是所謂的一般與特殊的關係。

組裝結構則反映了物件之間的整體與部分的關係。

軟體工程基礎知識

課程2 軟體工程基礎知識 91過軟考教育學院 class txt 小馬老師qq 858301448 tel 180 2013年1月2013年上半年資訊系統專案管理師軟體需求定義必須掌握。p15 3種需求 功能 非功能 設計約束,要會判斷和區分。需求工程,包含需求開發和需求管理p16 需求開發 需求捕...

軟體工程基礎知識 軟體設計師

2.4.1 主要知識點 軟體工程是計算機軟體的乙個重要分支,主要應掌握軟體工程的基本原理以及軟體設計與測試方法。2.4.1.1軟體生存週期各階段的任務 軟體生存週期指出由軟體定義 軟體開發和軟體維護等階段組成的全過程。1 軟體定義階段 軟體定義階段主要解決軟體要 做什麼 的問題,也就是要確定軟體的處...

3 軟體工程基礎

1.通常,將軟體產品從提出 實現 使用維護到停止使用退役的過程稱為軟體生命週期。也就是說,軟體產品從考慮其概念開始,到該軟體產品不能使用為止的整個時期都屬於軟體生命週期。軟體生命週期的主要活動階段為 可行性研究和計畫制定。確定待開發軟體系統的開發目標和總的要求,給出它的功能 效能 可靠性以及介面等方...