軟件工程導(dǎo)論名詞解釋
名詞解釋
1. 數(shù)據(jù)詞典——是描述數(shù)據(jù)信息的集合,它對數(shù)據(jù)流圖中的各個元素按規(guī)定格式進行詳細的描述和確切的解釋,是數(shù)據(jù)流圖的補充工具。
2. 數(shù)據(jù)流圖——他以圖形的方式反映系統(tǒng)的數(shù)據(jù)流程
3. 白盒測試——按照程序內(nèi)部的結(jié)構(gòu)測試程序,檢驗程序中的每條路徑是否都能按預(yù)定要求正確工作。有兩種測試法既邏輯覆蓋測試法和路徑測試法
4. 黑盒測試——按照程序的功能測試程序,檢驗與程序功能有關(guān)的輸入、輸出與程序執(zhí)行是否正確。有四種方法既等價分類法、邊界值分析法、錯誤猜測法和因果圖法
5. 完善性維護——為了適應(yīng)用戶業(yè)務(wù)和機構(gòu)的發(fā)展變化而對軟件的功能、性能進行修改、擴充的過程稱為完善性維護。因為各種用戶的業(yè)務(wù)和機構(gòu)在相當(dāng)長的時期內(nèi)不可能是一成不變的,所以功能、性能的增加是不可避免的,而且這種維護活動在整個維護工作中所占的比重很大
6. 軟件可靠性——指在給定的時間內(nèi),程序按照規(guī)定的條件成功地運行的概率
7. 軟件配置——是一個軟件在生存周期內(nèi),他的各種形式、各種版本的文檔與程序的總稱
8. 軟件再工程——運用逆向工程、重構(gòu)等技術(shù),在充分理解原有軟件的基礎(chǔ)上,進行分解、綜合、并重新構(gòu)建軟件,用于提高軟件的可理解性、可維護性可復(fù)用性或演化性。
9. α測試——是在一個受控的環(huán)境下,由用戶在開發(fā)者的“指導(dǎo)”下進行的的測試,由開發(fā)者負責(zé)記錄錯誤和使用中出現(xiàn)的問題。
10. β測試——是由軟件的最終用戶(多個)在一個或多個用戶場所來進行。由用戶負責(zé)記下遇到的所有問題,包括主觀認(rèn)定的和真實的問題,定期向開發(fā)者報告,開發(fā)者在綜合用戶的報告之后進行修改,最后將軟件產(chǎn)品交付給全體用戶使用。
11. 聚集關(guān)系——表示類或?qū)ο笾g的整體與部分的關(guān)系
12. 泛化關(guān)系——表示類或?qū)ο笾g的一般與特殊的關(guān)系
13. 內(nèi)聚——一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。
14. 耦合——一一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。
名詞解釋:
一章:
軟件危機:是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴(yán)重問題。
產(chǎn)生軟件危機的原因:一方面與軟件本身的特點有關(guān),另一方面也和軟件開發(fā)與維護方法不正確有關(guān)。
軟件工程:是指導(dǎo)計算機軟件開發(fā)和維護的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。
軟件工程的7條基本原理:(1)用分階段的生命周期計劃嚴(yán)格管理;(2) 堅持進行階段評審;(3) 實行嚴(yán)格的產(chǎn)品控制;(4) 采用現(xiàn)代程序設(shè)計技術(shù);(5) 結(jié)果可以清楚地審查;(6) 開發(fā)小組的人員應(yīng)該少而精;(7) 承認(rèn)不斷改進軟件工程實踐的必要性.
軟件工程方法學(xué)3要素:方法、工具、過程
軟件過程:是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。
軟件生命周期的概念:有軟件定義、軟件開發(fā)和軟件維護3個小時期組成
軟件生命周期8個階段的主要任務(wù):(1)問題定義: “需要解決的問題是什么?” (2) 可行性研究: “尋求可行的解決方案?” (3) 需求分析: “解決這些問題需要系統(tǒng)做什么?” (4) 總體設(shè)計(概要設(shè)計): “應(yīng)該怎樣實現(xiàn)目標(biāo)系統(tǒng)?” (5) 詳細設(shè)計(模塊設(shè)計): “如何具體地實現(xiàn)這個系統(tǒng)?” (6) 編碼和單元測試: “寫代碼,測試每個模塊!” (7) 綜合測試: “通過各類測試和調(diào)試來完善軟件” (8) 軟件維護: “通過各種必須的維護活動使系統(tǒng)持久滿足用戶的需要!”
二章:
可行性研究的五個方案:技術(shù)可行性,經(jīng)濟可行性,操作可行性,法律可行性,社會效益
可行性研究過程:1.復(fù)查系統(tǒng)規(guī)模與目標(biāo)、2.研究目前的系統(tǒng)、3. 導(dǎo)出新系統(tǒng)的高層邏輯模型、4. 進一步定義問題、5. 導(dǎo)出和評價供選擇的解法、6. 推薦行動方針、7. 草擬開發(fā)計劃、8.書寫文檔提交審查
系統(tǒng)流程圖:用來描述物理系統(tǒng)的工具。系統(tǒng)流程圖表達的是數(shù)據(jù)在系統(tǒng)各部件之間流動的
情況,而不是對數(shù)據(jù)進行加工處理的控制過程。即:系統(tǒng)流程圖≠程序流程圖。
數(shù)據(jù)流圖:用來描述邏輯系統(tǒng)的工具。數(shù)據(jù)流圖(DFD)是一種圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換,即數(shù)據(jù)流圖描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程。
三章:
需求分析在軟件生命周期中位置:最后一個階段;任務(wù):完整、準(zhǔn)確、清晰、具體地確定系統(tǒng)所要完成的工作。
軟件系統(tǒng)的綜合要求:功能需求,性能需求,可靠性和可用性需求,出錯處理需求,接口需求,約束,逆向需求,將來可能提出的要求
獲取需求的方法:訪談、面向數(shù)據(jù)流自頂向下求精、簡易的應(yīng)用規(guī)格說明技術(shù)、快速建立軟件原型
3種分析模型:數(shù)據(jù)模型(ER圖),功能模型(DFD),行為模型(狀態(tài)轉(zhuǎn)換圖)
需求分析階段的主要圖形工具:層次方框圖(描繪數(shù)據(jù)的層次結(jié)構(gòu));Warnier圖(描繪數(shù)據(jù)的層次結(jié)構(gòu));IPO圖(IPO圖是輸入、處理、輸出圖的簡稱)
五章:
總體設(shè)計的兩個階段:(1)系統(tǒng)設(shè)計階段(2)結(jié)構(gòu)設(shè)計階段
總體設(shè)計的設(shè)計原理:模塊化,抽象,逐步求精,信息隱藏和局部化,*模塊獨立(耦合,內(nèi)聚)
耦合:是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量;包括:
(1)數(shù)據(jù)耦合——如果兩個模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)
(2)控制耦合——如果傳遞的信息中有控制信息(盡管有時這種控制信息以數(shù)據(jù)的形式出現(xiàn))
(3)特征耦合——整個數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分?jǐn)?shù)據(jù)元素
(4)公共環(huán)境耦合——兩個或多個模塊通過一個公共數(shù)據(jù)環(huán)境相互作用
(5)內(nèi)容耦合——如果出現(xiàn)下列情況之一,兩個模塊間就發(fā)生了內(nèi)容耦合
低——高
3.內(nèi)聚:標(biāo)志一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度;包括:
(1)偶然內(nèi)聚——如果一個模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的。
(2)邏輯內(nèi)聚——如果一個模塊完成的任務(wù)在邏輯上屬于相同或相似的一類。
(3)時間內(nèi)聚——如果一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行。
(4)過程內(nèi)聚——如果一個模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行。
(5)通信內(nèi)聚——如果模塊中所有元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù)。
(6)順序內(nèi)聚——如果一個模塊內(nèi)的處理元素和同一個功能密切相關(guān),而且這些處理必須順序執(zhí)行(通常一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù))。
(7)功能內(nèi)聚——如果模塊內(nèi)所有處理元素屬于一個整體,完成一個單一的功能。
低——中——高
7條啟發(fā)規(guī)則:改進軟件結(jié)構(gòu),提高模塊獨立性,模塊規(guī)模適中,*深度、寬度、扇出和扇入合理(深度表示軟件結(jié)構(gòu)中控制的層數(shù);寬度是軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值;扇出:調(diào)用其它的模塊數(shù)(3-4);扇入:被上一級模塊調(diào)用數(shù)(越多越好)),*模塊的作用域應(yīng)在控制域范圍內(nèi)(模塊的作用域定義為受該模塊內(nèi)一個判定影響的所有模塊的集合。模塊的控制域是這個模塊本身以及所有直接或間接從屬于它的模塊的集合。),盡量降低模塊接口的復(fù)雜程度,設(shè)計單入口、單出口的模塊,模塊功能可以預(yù)測
六章:
過程設(shè)計的工具:程序流程圖(程序框圖),盒圖(N-S圖),PAD圖(問題分析圖),*判定表,判定樹,過程設(shè)計語言
面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法:(1)Jackson圖(程序中數(shù)據(jù)元素彼此間的邏輯關(guān)系只有三類:順序結(jié)構(gòu),選擇結(jié)構(gòu),重復(fù)結(jié)構(gòu))(2) *改進的Jackson圖(3)* Jackson方法
程序的處理過程:(1)確定輸入和輸出數(shù)據(jù)結(jié)構(gòu);(2)找有對應(yīng)關(guān)系的輸入輸出數(shù)據(jù)單元; (3)從數(shù)據(jù)結(jié)構(gòu)圖導(dǎo)出程序結(jié)構(gòu)圖 (均用Jackson圖表示);(4)列出所有操作和條件,并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置;(5)用偽碼表示程序。
七章:
軟件測試的定義或目標(biāo):測試是為了證明程序有錯,而不是證明程序無錯誤;一個好的測試用例在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。
測試步驟:模塊測試,子系統(tǒng)測試,系統(tǒng)測試,驗收測試,平行運行
邏輯覆蓋:(1)語句覆蓋 (2)判定覆蓋 (3)條件覆蓋(4) 判定-條件覆蓋 (5)條件組合覆蓋 (6) 路徑覆蓋(7)點覆蓋(8) 邊覆蓋
黑盒測試步驟:等價劃分,邊界值分析,錯誤推測,因果圖法
白盒測試(結(jié)構(gòu)測試)技術(shù):分析程序內(nèi)部—每個分支通路。過程:按照程序內(nèi)部的邏輯測試程序,檢測程序中主要執(zhí)行通路是否按預(yù)定要求正確工作。
軟件可靠性的定義:程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功運行的概率。
軟件可用性的定義:程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功運行的概率。
八章:
軟件維護的定義:在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。
軟件維護的分類:改正性維護(17%~21%),適應(yīng)性維護(17%~21%),完善性維護(50%~66%),預(yù)防性維護(4%~5%)
十三章:
項目管理的概念:就是通過計劃、組織和控制等一系列活動,合理地配置和使用各種資源,以達到既定目標(biāo)的過程。
軟件工作量的估算:靜態(tài)單變量模型(E=A+B×(ev)C),動態(tài)多變量模型,COCOMO2模型
制定項目的進度工具:Gantt(甘特)圖,工程網(wǎng)絡(luò)
估算軟件規(guī)模:(1)代碼行技術(shù): L = 其中L為估計的程序規(guī)模,a為程序的最小規(guī)模、b為程序的最大規(guī)模、m為最可能的規(guī)模。
優(yōu)點:代碼是所有軟件開發(fā)項目都有的“產(chǎn)品”,而且很容易計算代碼行數(shù)。
缺點:源程序僅是軟件配置的一個成分,用他的規(guī)模代表整個軟件的規(guī)模似乎不太合理,用不同語言實現(xiàn)同一個軟件所需要的代碼行數(shù)并不相同,這種方法不適用于非過程語言。
三、名詞解釋題每小題3分,共15分。
31.軟件生存周期模型:是描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型。
32.?dāng)?shù)據(jù)字典(DD):數(shù)據(jù)字典是用來定義數(shù)據(jù)流圖中的各個成分的具體含義的。它以一種準(zhǔn)確的、無二義性的說明方式為系統(tǒng)的分析、設(shè)計及維護提供了有關(guān)元素的一致的定義和詳細的描述。
33.內(nèi)聚性:內(nèi)聚性是模塊獨立性的衡量標(biāo)準(zhǔn)之一,它是指模塊的功能強度的度量,即一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。
34.JSP方法:JSP方法是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,其定義了一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的映射過程,它根據(jù)輸入,輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過程描述,即程序結(jié)構(gòu)。
35.多態(tài)性:指相同的操作或函數(shù)、過程可作用于多種類型的對象上并獲得不同結(jié)果?;颍ú煌膶ο?,收到同一消息可以產(chǎn)生不同的結(jié)果。)
1.程序的可維護性:為滿足用戶新的需求,或當(dāng)環(huán)境發(fā)生了變化,或運行中發(fā)現(xiàn)了新的錯誤時,對一個已投入運行的軟件進行相應(yīng)診斷和修改所需工作量的大小。
2.容錯技術(shù):對那些無法避開的差錯,使其影響減少至最小的技術(shù)。也就是說,當(dāng)錯誤發(fā)生時,盡可能地不影響其它的系統(tǒng)元素,或是把用戶的影響限制在某些容許的范圍內(nèi)。
3.結(jié)構(gòu)化維護:如果維護工作是從評價完整的軟件配置開始入手,確定軟件的重要結(jié)構(gòu)特點、性能特點以及接口特點;估量要求的改動將帶來的影響,并且計劃實施途徑。然后首先修改設(shè)計并且對所做的修改進行仔細審查。接下來編寫相應(yīng)的源程序代碼;使用在測試說明書中包含的信息進行回歸測試;最后,把修改后的軟件再次交付使用。
4.軟件生存周期是指從提出軟件開發(fā)要求開始,直到該軟件報廢不用為止的整個時期。這個時期又分為若干個階段,對軟件生產(chǎn)的管理和進度控制有重要作用,使軟件的開發(fā)有相應(yīng)的模式、流程、工序和步驟。
5.模塊獨立性:是模塊化、抽象和信息隱蔽的直接產(chǎn)物。每個模塊只要完成獨立的功能,與其它模塊聯(lián)系越少,則模塊的獨立性就越強。通過模塊與模塊之間的耦合性和模塊內(nèi)部的內(nèi)聚性來衡量模塊的獨立性。
1.?dāng)?shù)據(jù)流圖:是描述數(shù)據(jù)處理過程的工具。它從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。
2.軟件維護是軟件生命周期的最后一個階段,是在軟件已經(jīng)交付給用戶使用之后,為了改正軟件錯誤或滿足新的需要而修改軟件的過程。它包括四種類型的維護活動:改正型維護、適應(yīng)型維護、預(yù)防型維護和完善型維護。
3.軟件測試是一個為了尋找軟件錯誤而運行程序的過程。目的就是為了發(fā)現(xiàn)軟件中的錯誤。一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例。一個成功的測試是指揭示了迄今為止尚未發(fā)現(xiàn)的錯誤的測試。
4.程序的可維護性:為滿足用戶新的需求,或當(dāng)環(huán)境發(fā)生了變化,或運行中發(fā)現(xiàn)了新的錯誤時,對一個已投入運行的軟件進行相應(yīng)診斷和修改所需工作量的大小。
5.軟件生存周期:是指從提出軟件開發(fā)要求開始,直到該軟件報廢不用為止的整個時期。這個時期又分為若干個階段,對軟件生產(chǎn)的管理和進度控制有重要作用,使軟件的開發(fā)有相應(yīng)的模式、流程、工序和步驟。