一、軟件工程學概述
1、軟件危機的定義
軟件危機是指計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。主要包含如何開發軟件,以滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有軟件兩方面問題。
2、軟件工程的定義
軟件工程是從管理和技術兩方面研究如何更好地開發和維護計算機軟件的一門新興學科。采用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件並有效地維護它,這就是軟件工程。
3、軟件生命周期
(8個階段)
問題定義、可行性研究、需求分析、總體設計、詳細設計、編碼和單元測試、綜合測試、軟件維護。
4、模型圖
瀑布模型圖
快速原型模型圖
增量模型圖
螺旋模型圖
噴泉模型圖
5、課后練習
根據歷史數據可以做出如下的假設 :
對計算機存儲容量的需求大致按下面公式描述的趨勢逐年增加:M=4080e0.28(Y-1960)
存儲器的價格按下面公式描述的趨勢逐年下降:P1=0.3×0.72Y-1974(美分/位) 注意單位,這里是美分
如果計算機字長為16位,則存儲器價格下降的趨勢為:P2=0.048×0.72Y-1974(美元/字)
在上列公式中Y代表年份,M是存儲容量(字數),P1和P2代表價格。
基於上述假設可以比較計算機硬件和軟件成本的變化趨勢。要求計算:
(1) 在1985年對計算機存儲容量的需求估計是多少?如果字長為16位,這個存儲器的價格是多少?
(2) 假設在1985年一名程序員每天可開發出10條指令,程序員的平均工資是每月4000美元。如果一條指令為一個字長,計算使存儲器裝滿程序所需用的成本。
(3) 假設在1995年存儲器字長為32位,一名程序員每天可開發出30條指令,程序員的月平均工資為6000美元,重復(1)、(2)題。
(1)
1、1985年對計算機存儲容量的需求估計:M=4080e0.28(1985-1960)=4474263(字)
2、當字長為16位,存儲器價格:P=0.048*0.72(1985-1974)*4474263=5789美元
(2)
如果每月有20個工作日,則每人每月可開發200條指令
需要工作量=4474263/200=22371(人/月)
程序員的月均工資是4000美元,開發出4474263條指令的成本是:
指令成本=22371*4000=89484000美元
(3)
1、需求估計M=4080e0.28(1995-1960)=73577679字
2、存儲器價格P=0.003*32*0.72(1995-1974)*73577679=7127美元
3、工作量=73577679/600=122629(人/月)
成本=122629*6000=735776790美元
二、可行性研究
1、系統流程圖的基本符號
2、系統符號
3、庫存清單系統的系統流程圖
4、數據流圖的符號
5、成本估價的技術
代碼行技術、任務分解技術、自動估計成本技術
6、課后練習題
課后練習2
系統流程圖
數據流程圖
課后練習4
系統模型圖
數據流程圖
課后練習5
三、需求分析
1、需求分析的定義
需求分析是軟件定義時期的最后一個階段,它的基本任務是准確回答“系統必須做什么”這個問題,即對目標系統提出完整、准確、清晰、具體的要求。在需求分析階段結束之前,系統分析員應該寫出軟件需求規格說明書,以書面形式准確描述軟件需求。
2、教學管理ER圖
3、電話系統狀態圖
4、課后練習
課后練習4
課后練習5
課后練習6
五、總體設計
1、耦合
耦合的定義:
耦合是對一個軟件結構內不同模塊之間互連程度的度量。
耦合的分類:
完全獨立、數據耦合、控制耦合、特征耦合、公共環境耦合、內容耦合
2、內聚
內聚的定義:
內聚標志着一個模塊內各個元素彼此結合的緊密程度,它是信息隱藏和局部化概念的自然擴展。
內聚的分類:
a、低內聚 有偶然內聚、邏輯內聚、時間內聚
b、中內聚 有過程內聚、通信內聚
c、高內聚 有順序內聚、功能內聚
3、軟件層次圖
給出軟件層次圖,求深度,寬度,扇入,扇出,控制域
4、信息流的兩種類型的圖
5、變換分析
給出圖5-9 ,映射成圖5-17的方法(數據流圖---軟件結構圖)
給出圖5-18的左圖,畫出右圖(數據流圖--軟件結構圖)
6、課后練習
六、詳細設計
1、3種基本的控制結構
順序結構、選擇(分支)結構、循環結構
2、結構化程序的定義
3、行李收費問題的判定表和判定樹
4、程序流程圖映射成流圖
5、PDL翻譯成流圖
(Program Design Language)(過程設計語言)偽碼
6、環形復雜度的求法
7、Halstead方法度量程序的復雜度
8、課后練習
課后練習3
課后練習7
課后練習8
七、實現
1、單元測試
單元測試主要用到什么技術,測試重點有哪些?
單元測試主要使用白盒測試技術,而且對多個模塊的測試可以並行地進行,包括人工測試和計算機測試兩種。
測試重點:模塊接口、局部數據結構、重要的執行通路、出錯處理通路、邊界條件
2、漸增式測試的策略
3、邏輯覆蓋
邏輯覆蓋是對一系列測試過程的總稱,這組測試過程逐漸進行越來越完整的通路測試。
分為:
語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、點覆蓋、邊覆蓋、路徑覆蓋
4、軟件可靠性公式
之后整理
5、課后練習
課后練習4,6 ,8,9,10
九、面向對象方法學引論
1、主要畫類圖和用例圖
圖9-8----到-----圖9-17
關聯類示例
一個電梯控制器控制着四台電梯,每個連接都對應一個隊列(對象),每個隊列(對象)存儲着來自控制器和電梯內部按鈕請求服務信息。
共享聚集示例
組合聚集示例
抽象類示例
復雜類示例
多重繼承示例
依賴關系示例
細化關系示例
自動售貨機系統用例
擴展和使用關系用例
2、課后練習
十、面向對象分析
1、存儲系統模型
2、自動售貨機系統模型
十一、面向對象設計
1、面向對象設計的原則
模塊化、抽象、信息隱藏、弱耦合、強內聚、可重用
2、設計繼承類的例子
3、課后練習
十三、軟件項目管理
1、代碼行技術
2、功能點技術
3、Gantt
4、工程網絡
5、課后習題
課后練習3:
(2)給出表13-5中1,2,3,4列的值,計算估計值
(3)給出表13-6種1,2,3,4,6列的值,計算估計值和UFP值
(4)根據前面數據計算
(5)根據前面數據計算
考試題目類型:
一、
計算題、畫圖題和簡答題若干(都在上面的復習提綱中)。
二、畫UML圖(要復習下這四種圖,這部分要詳細畫,分數才會高)
1.給出要求,畫類圖
2給出要求,畫用例圖
3.給出要求,畫順序圖
4.給出要求,畫活動圖。