軟件工程考點

以下的內容均是我一個字一個字的碼的,也許也有錯誤。
軟件工程考點 SundayCoder俊勇
歡迎大家下載打印
下載地址:http://download.csdn.net/detail/qq_33094993/9720629
考試題型:
1選擇題(20x1)
2填空題(10x1或者5x2)
3名詞解釋(5x3)
4簡答題(5X5)
5應用題(3x10)
(1)什麼叫軟件危機?
軟件危機是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重的問題。
(2)軟件危機主要包含兩方面的問題:
1如何開發軟件,以滿足對軟件日益增長的需求。
2如何維護數量不斷膨脹的已有軟件。
(3)軟件危機的表現
1 對軟件開發成本和進度的估計常常很不準確。
2用戶對 “已經完成”的軟件系統不滿意的現象經常發生。
3軟件產品的質量往往靠不住。
4軟件常常是不可維護的。
5軟件通常沒有適當的文檔資料。
6軟件成本在計算機系統總成本中所佔的比例逐年上升。
7軟件開發生產率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢。
(4)產生軟件危機的原因:
在軟件的開發和維護的過程中存在這麼多嚴重的問題:
一方面和軟件本身的特點有關
一方面也和軟件開發與維護的方法的不正確有關。
(5)軟件工程是什麼?
軟件工程是指導計算機軟件開發和維護的一門工程學科。
軟件工程的研究內容應該蘊含軟件開發模型,軟件開發方法,軟件支持過程,軟件管理方面。
(6)軟件工程的目標
1 較低的開發成本
2 達到要求的軟件功能,取得較好的軟件性能。
3開發軟件的質量指標高,可靠性高。
4需要較低的維護費用
5能按時完成開發工作,及時交付使用。
(7)什麼是軟件生命週期?
軟件生命週期由軟件定義、軟件開發、運行維護(也稱軟件維護)3個時期組成。
軟件定義通常分爲三個階段:
1 問題定義 2 可行性研究 3需求分析
開發時期分爲四個階段:
1 總體設計 2 詳細設計 3 編碼 4 單元測試 (1,2又稱系統設計,3,4稱爲系統實現)
維護時期:
維護時期的主要任務是使軟件持久地滿足用戶的需要。
(8)什麼叫軟件過程?
軟件過程是爲了獲得高質量的軟件所需要完成的一系列任務的框架,它規定完成各項任務的工作步驟。(關鍵:who,when,what,how)

(9)什麼是軟件生存週期模型?
軟件生存週期模型是跨越了整個軟件的生存週期的系統開發、運作、維護所實施的全部工作和任務結構框架,它是軟件過程的一種抽象表示。
常見的軟件生存週期模型:
1瀑布模型:
具有的特點:1階段間具有順序性和依賴性2推遲實現的觀點3質量保證的觀點
(1) 每個階段都必須完成規定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務。
(2) 每個階段結束之前都要對已經完成的文檔進行評審,以便儘早的發現問題,改正錯誤

2原型模型:(也稱爲快速模型)
它具有先開發一個‘原型軟件’,完成主要功能,展示給用戶並徵求意見,然後逐步的完善的反覆循壞過程。按照原型建立的目的不同,可以分爲:
(1) 探索型模型,用戶用戶需求階段。
(2) 實驗型模型,用於設計階段。
(3) 演化型模型,軟件開發全過程,及早向用戶提交的一個原型系統。

3增量模型:
增量模型是一種非整體開發模型。把軟件產品作爲一系列的增量構建來設計、實現、集成、測試。開發時分批向用戶提交產品,每次提交一個滿足用戶需求子集的增量構件,直到最後一次得到滿足用戶的全部需求的完整產品爲止。
4螺旋模型:
螺旋模型是一種風險驅動的模型,它將瀑布模型和增量模型結合起來,並且加入了風險分析。螺旋模型主要適用於內部開發的大規模軟件項目。
5噴泉模型:
噴泉模型對軟件的複用和生存週期中的多項開發活動的集成提供了支持,主要支持面向對象的開發方法,系統的某個部門常常重複無數多次,相關的功能在每次的迭代中隨着加入演化的系統。

第二章
1可行性的研究目的是什麼?
可行性研究的目的是用最小的代價在儘可能短的時間內研究並確定客戶提出的問題是否有行得通的方法。(簡而言之,就是可行否!!!)
可行性的實質是進行了一次大大壓縮簡化了的系統分析和設計的過程。
一般從三個方面研究每種解法可行性。
(1) 技術可行性。(使用現有的技術可以實現這個系統嗎?)
(2) 經濟可行性。(這個系統的經濟效益能超過它的開發成本嗎?)
(3) 操作可行性。(系統的操作方式在這個用戶組織內行得通嗎?)
注:可行性的研究時間長短取決於工程的規模,可行性的研究成本佔預期的工程總成本的5%–10%。

2可行性的研究過程
(1) 複查系統規模和目標
(2) 研究目前正在使用的系統。
(3) 導出新系統的高層邏輯模型。
(4) 進一步定義問題。
(5) 導出和評價供選擇的解法。
(6) 推薦行動方針。
(7) 草擬開發計劃。
(8) 書寫文檔提交審查。
3系統流程圖
系統流程圖是概括的描繪物理系統的傳統工具。它的基本思想是用圓形符號以黑盒子形狀描繪組成系統的每個部件(程序,文檔,數據庫,人工過程等)。
注:系統流程圖表示的是數據在系統各部件之間的流動的情況,而不是對數據進行加工處理的控制過程,因此儘管系統流程圖的某些符號和程序流動圖的符號形式相同,但它卻是物理數據流圖而不是程序流程圖。
4數據流圖(DFD)【參看P42】
數據流圖的符號
(1) 正方形(或立方體表示數據的源點或者終點)。
(2) 圓角矩形(或圓代表變換數據的處理)。
(3) 平行線(代表數據存儲)
(4) 箭頭(代表數據流,即特定數據的流動方向)。
5成本效益的分析方法。
1貨幣的時間形式。
F=P(1+i)^n(p元錢在N年後的價值)
P=F/(1+i)^n(N年後收入錢爲F,那麼現在的錢的價值爲P)
2投資回收期。
投資回收期越短就越能越快獲得利潤,因此這個項目更加值得投資。
投資回收期=投資總額/(年新增利潤額+年折舊額)
3純收入。(賺的錢-成本)
4投資回收率。
P=∑Fi/(1+j)^i(i爲1,2,3…n)
【Fi爲i年年底的效益,n是系統使用壽命,j是投資回收率,P是現在的投資額】
第三章
1需求分析的任務是什麼?
需求分析是軟件定義時期的最後一個階段。
軟件定義總共分爲3個階段
(1) 問題定義
(2) 可行性研究
(3) 需求分析
需求分析的基本任務是準確的回答“系統必須做什麼?”這個問題。
所以需求分析的任務還不是確定系統怎樣完成它的工作,僅僅是確定系統必須完成那些工作,也就是對目標系統提出完整,清晰,具體的要求。

2需求分析的具體任務。
(1) 確定對系統的綜合要求。
1功能需求
2性能需求
3可靠性和可用性需求
4出錯處理需求
5接口需求
6約束
7逆向需求
8將來可能提出的要求
(2) 分析系統的數據要求。
(3) 導出系統的邏輯模型。
(4) 修正系統的開發計劃。
3需求分析的方法
1功能分解的方法。
2面向數據流自定向下求精。(結構化分析方法)
3信息建模方法。快速建立軟件模型。(最準確,最有效,最強大的需求分析技術)
4面向對象的方法。
4需求分析過程應該建立的三種模型
(1) 數據模型。(E-R圖)
(2) 功能模型。(數據流圖)
(3) 行爲模型。(狀態轉換圖)
5需求分析可能用到的三個圖形
(1) 層次方框圖。(層次的樹形狀)
(2) Warnier圖(與思維導圖相似)
(3) IPO圖。(輸入、處理、輸出圖的簡稱,能夠方便的描繪輸入數據,對數據的處理和輸出數據之間的關係。)【改善的IPO圖成爲IPO表】
6驗證軟件需求。
(1) 一致性。(所有的需求必須是一致性的,任何需求不能與其他需求相矛盾)
(2) 完整性。(需求必須是完整的,規格說明書應該包括用戶需要的每一個功能或性能)
(3) 現實性。(指定的需求是現有的硬件和軟件技術可以實現的)
(4) 有效性。(必須驗證需求是正確有效的,確實能解決用戶面對的問題)

第五章
1總體設計
經過了需求分析階段的任務之後,系統必須“做什麼”已經很清楚了。現在是解決“怎麼做”的時候了。
總體設計的基本目的就是回答“概括的說,系統應該如何實現?”這個問題。
因此,總體設計又稱爲概要設計或者初步設計。通過這個階段的設計將將劃分組成系統的物理元素—程序、文件、數據庫、人工過程和文檔。

2 模塊化設計原理
模塊,是指具有相對獨立性的,由數據說明,執行語句等程序對象構成的集合,程序中的每個模塊都需要單獨命名,通過名字可實現對指定模塊的訪問。

在軟件的結構體系中,模塊是可組合可分解和更換的單元,具有四個基本屬性:接口、功能、邏輯、狀態。
接口、功能、狀態反映模塊的外部特徵,邏輯反映的是模塊的內部特徵。

模塊化是把整個程序劃分爲若干個模塊,每個模塊用於實現一個特定的功能。把這些模塊組合起來構成的一個整體,可以完成指定的功能滿足用戶的需求。

3抽象和逐步求精
抽象是抽出事務的本質特性而展示不考慮他們的細節。
逐步求精是一種先總體後局部的思維原則,也就是一種逐層分解,分而治之的方法。

4信息屏蔽和局部化
信息屏蔽是指在設計和確定模塊時,使一個模塊內包含的信息(過程和數據),對於不需要這些信息的其他模塊來說,是不可訪問的。
局部化是與信息屏蔽相關的,所謂局部化,就是使得一些關係密切的軟件元素彼此靠近一些。

5模塊的獨立性
模塊的獨立性是指每個模塊只完成系統要求的獨立的子功能,並且與其他模塊的聯繫量最少且接口簡單。

模塊的獨立性可以由兩個定性的標準度量。
(1) 反應模塊外部特徵的標準是耦合。
耦合:耦合也稱爲塊間聯繫,是對一個軟件結構內不同模塊間相互聯繫緊密程度的的度量,模塊間的聯繫越緊密,耦合性就越強,模塊的獨立性就越差。
耦合類型:非直接耦合、數據耦合、標記耦合、控制耦合、外部耦合、公共耦合、內容耦合。
(2) 反應模塊內部特徵的標準則是內聚。
內聚:內聚也稱爲塊內聯繫,是指一個模塊內部個個元素之間關係的緊密程度。若是一個模塊中的各元素(語句程序段)聯繫得越緊密,內聚性就越高,模塊的獨立性就越好。
內聚類型:功能內聚、信息內聚、通信內聚、過程內聚、時間內聚、邏輯內聚、巧合內聚。

6 典型的數據流類型和系統結構。
典型的數據流類型有變換型數據流和事務型數據流。數據流的類型不同,得到的系統結構也不同。
(1) 變化型數據流和變化型系統結構。
變換型數據處理問題的工作大概分爲三步:取得數據,變換數據,給出數據。
數據沿着外部通道進來,變成內部形式,在通過加工,再變成外部形式輸出。
(2) 事務型數據流和事務型系統結構。
數據沿着輸入通路到達一個處理T時,這個處理根據輸入數據的類型在若干個動作序列中選出一個來執行。
注:處理T成爲事務中心。它完成以下任務:
(1) 接受輸入數據。(輸入數據又稱爲事務)
(2) 分析每個事務並確定他們的類型。
(3) 根據事務類型選取一條活動通路。
7程序流程圖
要點:
8盒圖(N-S圖)
N-S圖的特點:
■功能域明確;
■很容易確定局部和全局數據的作用域;
■不可能任意轉移控制;
■很容易表示嵌套關係及模塊的層次關係。

9 PAD圖(問題分析圖縮寫)
10判定表
11jackson圖
Jackson和Warnier是最著名的兩個面向數據結構的設計方法。
Jackson設計方法是一種面向數據結構的軟件設計方法,Jackson分析方法是面向數據流的分析方法。
邏輯數據結構三類:
(1) 順序
(2) 選擇
(3) 重複
第七章 軟件編碼
1什麼是編碼?
編碼就是講詳細設計的結果轉換成用某種編程語言編寫的源程序。
編碼風格應該簡明清晰,易讀易懂。
爲了達到目的,必須遵守以下的原則。
(1) 程序內部的文檔(包括適當的標識符,適當的註解,程序的視覺組織)。
(2) 數據說明
(3) 語句構造
(4) 輸入輸出
(5) 效率
2軟件測試基礎
軟件測試的目的與軟件工程所有其他階段的目的都相反,軟件工程其他階段都是‘建設性的’,但軟件測試的目的確是爲了“破壞”已經建立好的軟件系統—竭力證明程序中有錯誤,不能按照預定要求正確的工作。
測試階段的根本目標是竟可能多的發現並且排除軟件中潛藏在的錯誤。3
3什麼是測試?它的目標是什麼?
(1) 測試是爲了發現程序中的錯誤而執行程序的過程。
(2) 好的測試方案是極有可能發現迄今爲止未能發現錯誤的測試方案。
(3) 成功的測試是發現至今未止尚未發現的錯誤的測試。
4軟件測試的準則
(1) 所有的測試度應該追溯到用戶需求。
(2) 應該在測試開始之前就制定好測試計劃。
(3) 把prareto的原理應用到軟件測試中去。
(4) 應該從小規模開始測試並且逐步進行大規模測試。
(5) 窮舉測試是不可能的。
(6) 爲了達到最佳的測試效果,應該由獨立的第三方從事測試工作。
5軟件的測試方法
軟件的測試技術分爲靜態分析技術和動態預測技術。
靜態分析技術:1人工測試。2利用計算機輔助靜態測試。
動態預測技術:
(1) 黑盒測試(又稱功能測試)
黑盒測試:已經知道產品應該具有什麼樣的功能,可以通過測試來檢驗是否每個功能都能正常的使用。
(2) 白盒測試(又稱結構測試)
白盒測試:如果知道產品的內部工作過程,可以通過測試來驗證產品內部動作是否按照規格說明書的規定正常的執行。
6軟件測試的步驟
測試的步驟基本上是由以下的步驟組成的。
(1) 模塊測試。(單元測試)
(2) 子系統測試。(局部測試)
(3) 系統測試。(也稱爲集成測試)
(4) 驗收測試。(也稱爲確認測試,用戶有參與)
(5) 平行運行。(新舊共存)

7集成測試
(1) 自頂向下集成。
自頂向下集成:從主控制模塊(主程序開始),沿着軟件的控制層次向下移動,從而逐步的把各個模塊結合起來
(2) 自底向上集成。
自底向上集成:從‘原子’模塊(即軟件最底層的模塊)開始組裝和測試。因爲是從底部開始向上結合模塊總能得到下層模塊處理的功能,所以不需要存根程序。
8白盒測試技術。
(1) 邏輯覆蓋
1語句覆蓋2判定覆蓋(分支覆蓋)3條件覆蓋4判定/條件覆蓋
5條件組合覆蓋6點覆蓋7邊覆蓋8路徑覆蓋
(2) 控制結構測試
1基本路徑測試
2條件測試
3循環測試
9黑盒測試技術
(1) 等價劃分
等價劃分:首先把程序的輸入域劃分成爲若干個數據類,然後根據劃分出的輸入數據種類開始設計測試用例。
(2) 邊界值分析
(3) 錯誤推測
10兩種測試方法.
黑盒測試不能替代白盒測試。
白盒測試是在測試過程中的早期階段執行,而黑盒測試是在測試階段過程的後期執行。
黑盒測試可以發現白盒測試不易發現的其他不同類型的錯誤。
(1) 功能不正確或者功能遺漏。
(2) 界面錯誤。
(3) 數據結構錯誤或者外部數據庫訪問錯誤。
(4) 性能錯誤。
(5) 初始化和終止錯誤。

11調試
調試(也稱爲糾錯)作爲成功測試的後果而出現,也就是說,測試是在測試發現錯誤之後排除錯誤的過程。
調試途徑:1回溯法2原因排除法。

第八章
1軟件維護的定義。
軟件維護就是軟件已經交付用戶使用之後,爲了改正軟件中的錯誤或使軟件滿足新的功能需求而修改軟件的過程。
軟件維護包括下述4中活動:
(1) 改正性維護。
(2) 適應性維護。
(3) 完善性維護。
(4) 預防性維護。
2軟件維護的特點。
(1) 結構化維護和非結構化維護差別巨大。
(2) 維護的代價高昂。
(3) 維護的問題很多。
3軟件的可維護性
軟件的可維護性可以理解是維護成員理解、改正、改動或改進這個軟件的難易程度。
決定軟件的可維護性的因素。
(1) 可理解性
(2) 可測試性
(3) 可修改性
(4) 可移植性
(5) 可靠性
(6) 可重用性
(7) 效率
4如何提高軟件的可維護性
(1) 建立明確的軟件質量目標。
(2) 使用先進的軟件開發技術和工具。
(3) 建立明確的質量保證。
(4) 選擇可維護性的程序設計語言。
(5) 改進程序的文檔。

第九章 面向對象的設計方法
1面向對象的設計方法的優點
(1) 與人類習慣的思維方法一致。
(2) 穩定性好。
(3) 可重用性好。
(4) 較易開發大型軟件系統。
(5) 可維護性好。

發佈了47 篇原創文章 · 獲贊 26 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章