实用软件工程(张海藩)复习笔记
軟件工程復習
?
(內容有出入,某些按自己理解簡寫)1-2章 軟件工程概述,可行性研究及需求分析
軟件工程三要素:方法、過程和工具。
軟件工程研究的內容:方法與技術、工具與環境、管理技術、標準與規范。
軟件危機的主要原因是:軟件本身的特點以及開發方法。
軟件生命周期:可行性研究,需求分析,軟件設計,編碼,軟件測試,軟件維護。
軟件生命周期模型:
| 瀑布模型 | 模型簡單,執行容易,但無法適應變更 |
| 快速原型模型 | 完成的功能往往是最終產品能完成的功能的子集 |
| 增量模型 | 將待開發的軟件系統模塊化和組件化 |
| 螺旋模型 | 每個階段前增加一個風險分析 |
| 噴泉模型 | 體現面向對象軟件開發過程迭代和無縫的特性 |
軟件過程是軟件開發活動的集合。
數據流圖(DFD)是進行軟件需求分析的常用工具,基本的圖形符號是加工、數據流、數據存儲和外部實體。
在需求分析中建模方法:數據流圖(DFD),狀態轉換圖(STD),實體關系圖(ER),控制流圖(CFD)。
需求分析中主要描述手段:DFD,數據字典,加工說明。
軟件工程需求分析階段:分析系統的數據要求,確定系統的功能需求,確定軟件系統的性能要求。
需求分析的主要方法有結構化分析方法(SA),考慮數據和處理的需求分析。
軟件需求規格說明書的內容包括:對重要功能的描述,對數據的要求,軟件的性能。
需求規格說明書不可以作為軟件可行性研究的依據。
軟件危機的主要表現是軟件產品的質量低劣,開發生產軟件效率低下。
第3-5章 ? 軟件設計,編碼實現,測試和維護
面向數據流的軟件設計模式可將 數據流 映射軟件結構。
軟件模塊的獨立性由內聚性和耦合性來衡量:
內聚性:模塊的功能強度(模塊內各元素之間彼此結合得緊密程度)
耦合性:模塊間相連程度的度量。
? 在軟件設計時,應該提高模塊的內聚程度,高內聚低耦合。
? 耦合程度 小 —>大 : 數據,控制,公共,內容。
Jackson方法是根據 數據結構 導出程序結構。
在面向數據流的軟件設計方法中,一般將信息流分為變換流和事務流。
軟件實現將軟件設計的結構翻譯成一種程序設計語言的代碼。
軟件測試的目的是為了發現軟件的錯誤(找出軟件中所有的錯誤是不可能的)
白盒法又稱為邏輯覆蓋法,主要用于單元測試。
? 白盒測試要對系統內部結構和工作原理有一個清楚的了解。
? 白盒測試有多種技術:代碼檢查法,基本路徑測試,邏輯覆蓋測試。
? 白盒測試是根據程序的 內部邏輯 來設計測試用例的。
黑盒測試又稱為功能測試,主要關注功能的實現。
? 黑盒測試又分為:等價類劃分法,邊界值分析法,錯誤推斷法,因果圖法,決策表法,場景法等。
下面給出黑盒測試與白盒測試的差別。
| 不涉及程序結構 | 考察程序邏輯結構 |
| 用軟件規格說明書生成測試用例 | 用程序結構信息生成測試用例 |
| 可適用于從單元測試到系統驗收測試 | 主要適用于單元測試和集成測試 |
| 某些代碼段得不到測試 | 對所有邏輯路徑進行測試 |
| 從用戶觀點測試 | 從管理者角度測試 |
成功的測試需要在運行測試用例發現程序的錯誤。
軟件集成測試交給不屬于該軟件開發組的軟件設計人員承擔,可以提高集成測試的效果。
集成測試的主要方法有:漸增式測試方法,非漸增式測試方法。
軟件測試的目的是盡可能發現軟件中的錯誤,通常單元測試是代碼編寫階段可進行的測試,它是整個測試工作的基礎。
單元測試不能完成的測試是系統功能。
軟件維護的副作用—修改軟件而造成的錯誤(Bug越改越多)
影響軟件可維護性的主要因素:可修改性,可測試性,可理解性。
測試用例由輸入數據和預期輸出結構兩部分組成。
功能測試是系統測試的主要內容,檢查系統的功能、性能是否與需求規格說明相同。
劃分模塊雖然可以降低軟件設計的復雜性和工作量,但是會增加軟件成本。
軟件設計說明書不是軟件概要設計的主要成果。
第6-7章 ? 面向對象和UML,面向對象軟件設計和實現
面向對象技術中,對象是類的實例,對象有三種成分:封裝,屬性,方法。
面向對象特征:多態性,繼承性,封裝性,對象唯一性,抽象性。
面向對象模型主要包括: 對象模型(o)、動態模型(d)、功能模型(f)。
封裝把對象的屬性和操作結合在一起,構成一個獨立的對象。
內部信息對外界隱藏,外界只能通過接口與對象發生聯系。
關聯是建立 類 之間的關系。
所有的對象可以成為各種對象類,每個對象類都定義了一組方法。
通過執行對象的操作可以改變獨享的屬性,但它必須通過消息的傳遞。
UML是軟件開發中的一個重要工具,它主要應用于基于對象的面向對象方法。
UML圖:
- 用例圖
- 靜態圖:類圖,對象圖
- 行為圖:狀態圖,活動圖
- 交互圖:順序圖,協作圖
- 實現圖:構件圖,部署圖
| 用例圖 | 從用戶使用系統的角度描述系統功能的圖形表達方法 |
| 類圖 | 表達系統類及其相互聯系的圖(面向對象設計的核心) |
| 對象圖 | 對象是類的實例,對象間連接是類之間關聯的實例 |
| 狀態圖 | 描述一個特定對象的所有可能狀態和引起狀態轉換的事件 |
| 順序圖 | 描述對象之間的動態交互關系,著重表現對象間消息傳遞的時間順序 |
| 活動圖 | 活動圖描動作及動作間關系 |
| 協作圖 | 描述相互協作的對象間的交互關系和鏈接關系 |
| 構件圖 | 描述軟件構件間的依賴關系 |
| 部署圖 | 描述處理器、硬件設備和軟件構件運行時的構架 |
面向對象分析首先要建立 問題的對象模型。
面向對象分析階段建立的模型中,核心是對象(生活中也是)。
面向對象的動態模型中,每張狀態圖表示某一個類的動態行為。
動態模型著重于系統的邏輯控制,它包括事件追蹤圖和狀態圖。
對象模型的描述工具是對象圖。
功能模型中的數據流圖(DFD),往往形成一個層次結構。
面向對象設計階段的主要任務是系統設計和對象設計。
只有類的共有界面的成員才能成為使用類的操作,這是軟件設計的信息隱藏原則。
對象的屬性集合是它的特征表示。
面向對象程序設計語言不同于其他語言的主要特點是繼承性。
面向對象的測試與傳統測試方法的主要區別是測試對象不同。
面向對象分析與設計活動是一個多次反復迭代的過程。
第8章 ?軟件工程管理
軟件工程針對維護工作的主要目標是:提高軟件的可維護性,降低維護的工作量。
度量的作用是為有效地、定量地進行軟件工程過程管理。
LOC和FP是兩種不同的估算技術 ,兩者對分解所需要的詳細程度不同。
風險管理過程:規劃,識別 ,評估。
按照人家配置管理的原始指導思想,受控制的對象應該是軟件配置項。
常用的評估軟件質量的因素:可理解性,可靠性,可維護性。
基線是通過了正式復審的軟件配置項(基線形成前可以快速修改)。
使用軟件時提出增加新功能就必須進行完善性維護。
軟件文檔不僅是軟件開發各階段的重要依據,也影響軟件的可維護性。
影響軟件維護的主要因素:可修改性,可測試性,可理解性。
CMM表示軟件過程成熟度模型(Capability Maturity Model Integration)。
代碼行技術是比較簡單的估算軟件規模的方法。
前面沒有提到的一些重點問題
-
個體與交互勝于流程與工具
-
可工作的軟件勝于面面俱到的文檔
-
客戶協作勝于合同談判
-
響應變化勝于遵循計劃
-
作用:避免需求中的錯誤,高效發開軟件。
-
重要性:能減少軟件開發費用,提高軟件質量,確保軟件開發的正常進行。
-
難點:
- 用戶和開發人員間存在交流障礙
- 用戶對需求的陳述不完整
- 基本思想: 對于一個復雜的系統,按照其內部數據的流動和處理過程,采用“抽象”和“分解”的手段,首先“抽象”得到系統的高層邏輯模型,之后采用自頂向下逐步求精的方法,對系統邏輯模型逐層不斷“分解”細化,直到不能再細化為止,即可得到系統最底層的詳細邏輯模型。對系統結構化分析的成果通常采用數據流圖和數據字典來表示。
- 建模方法:數據流圖(DFD),狀態轉換圖(STD),實體關系圖(ER),控制流圖(CFD)。
- 改進軟件結構提高模塊獨立性
- 模塊規模應該適中
- 深度、寬度、扇出和扇入應適當
- 模塊的作用域應該再控制域之內
- 降低模塊結構的復雜度
- 設計單出入口的模塊
- 模塊功能應能預測
- 程序內部文檔
- 數據說明
- 語句構造
- I/O
- 效率
- 項目的應用范圍
- 用戶的要求
- 軟件開發人員的愛好和能力
- 系統的可移植性要求
- 算法和數據結構的復雜性
- 平臺支持
-
模塊化
-
抽象
-
信息隱藏
-
弱耦合
-
強內聚
-
可重用
- 簡述面向對象測試策略的特點。
- 面向對象的單元測試
- 面向對象的集成測試
- 面向對象的確認測試
- 民主制程序員組
- 主程序員組
- 現代程序員組。
- 意義:在軟件開發工作中具有突出的地位和相當的工作量。
- 特性:
- 及時性
- 完整性
- 實用性
- 規范性
- 結構化
- 簡潔性
- 軟件質量:軟件與明確地和隱含地定義的需求相一致的程度。
- 措施:
- 正式技術復審
- 程序正確性證明
- 模塊化:開發具有獨立功能而且和其他模塊之間沒有過多的相互作用的模塊。
- 好處:
- 有效模塊化的軟件容易開發
- 容易測試和維護
一些習題
- 旅行社把預訂機票的旅客信息(姓名、年齡、單位、身份證號碼、旅行時間及目的地等)輸入機票預訂系統。系統為旅客安排航班,打印出取票通知單(附有應付的賬款)。旅客在飛機起飛的前一天憑取票通知單交款取票,系統檢驗無誤,輸出機票給旅客。
請畫出系統的頂層數據流圖、0 層數據流圖。
-
某高校學籍管理系統用于各個學院對每一位學生的入學、畢業、每學期考試成績、升留級等事項進行處理,包括錄入學生基本信息、存儲學生基本情況例如,學生各科成績等;查詢學生各科成績、單科成績;打印學生名單、學生成績單;統計班平均成績、各科平均成績;根據分數進行升留級處理等功能。 具體描述:
學籍管理系統細分為錄入、存儲處理、查詢處理,升留級處理和統計處理。
(1)錄入、存儲處理首先對學生信息進行審查,如果是新生,則錄入、存儲新生的信息。并寫入學生記錄文件;否則,從學生成績文件中讀該學生的各科成績,輸出學生記錄表及成績單。
(2)查詢處理接收學生學號和課程號,并進行有效性檢查,如無效,則拒絕接受;否則按照查詢要求從學生成績文件中讀取成績并打印成績單。
(3)升留級處理接收學生成績,并從成績標準文件中讀取信息,判斷該學生是否升級,形成升留級名單,并更新學生記錄。
(4)統計處理接收學生記錄,根據統計選擇進行班平均成績和各科平均成績的統計,形成相應的統計表。
請畫出該學籍管理系統的三層數據流圖。
-
某高校學生檔案管理系統的主要功能有:
(1)對學生檔案信息的增加、刪除和修改;
(2)對學生信息的查詢和打印;
(3)對學生信息的統計和打印;
(4)此外,本系統還應該能與其它系統共享部分數據。
請畫出此系統的頂層數據流圖、0 層數據流圖。
-
某高校學生檔案管理系統的主要功能有:
(1)對學生檔案信息的增加、刪除和修改;
(2)對學生信息的查詢和打印;
(3)對學生信息的統計和打印;
(4)此外,本系統還應該能與其它系統共享部分數據。
請設計出學生檔案管理軟件的系統結構圖。
-
在自動飲料售貨機中,除了買飲料的顧客,還有以下活動者:
(1) 供應商,向自動飲料售貨機添加飲料
(2) 收銀員,從自動飲料售貨機收錢。
后面兩類人在使用自動飲料售貨機時,都涉及打開和關閉該機器。請畫出它們的用例圖。
某校圖書管理系統具有以下功能:
(1)借書:先為讀者辦理借書證,借書證上記錄讀者姓名、學號、所屬系和班級等信息。
借書時根據讀者的借書證查閱讀者檔案,若借書數目未超過規定數量,則辦理借閱手續,修
改庫存記錄及讀者檔案;若超過規定數量則不予借閱。
(2)還書:根據讀者書中的條形碼,修改庫存記錄及讀者檔案,若借閱時間超過規定期限
則罰款。
(3)圖書管理員還要定期生成訂書清單,包括書名、圖書代號、單價、數量等,根據需要
向供應商訂購圖書。
總結
以上是生活随笔為你收集整理的实用软件工程(张海藩)复习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法之排序算法-shell排序(移位法)
- 下一篇: 系统设计基础:系统设计基本任务相关知识