第一篇:軟件工程期末總結(jié)和心得體會
心得體會
通過這學期<軟件工程>這門課程的學習,使我獲益良多,作為一名計算機專業(yè)的學生, 覺得計算機方面的東西學的實在是太少了,專業(yè)知識的淺陋讓我感到有點羞愧, 老師告訴我們,我們在做畢業(yè)設(shè)計時,要根據(jù)<軟件工程>這門課程中的有關(guān)內(nèi)容來進行文檔的撰寫,所以在老師讓我們寫需求分析報告,可行性研究報告以及總體設(shè)計報告中,我學到了很多,了解到如何來寫畢業(yè)設(shè)計的有關(guān)文檔.,然而也通過這門課程的學習, 讓我更深一步了解到一個軟件不僅僅就是編寫程序這么簡單,編寫程序只不過是開發(fā)軟件的一個小小部分而已, 以前一直誤認為只要會寫程序代碼就可以了,現(xiàn)在看來是大錯特錯了,因為軟件開發(fā)的前期工作是相當復(fù)雜而重要的,首先要了解客戶的需求,了解開發(fā)的這個軟件到底是干什么用的,有時甚至要到一個公司,一個部門里去”跟蹤”一段時間, 了解開發(fā)的這個軟件具體有哪些作用、功能,否則開發(fā)出來的軟件將不能滿足客戶的要求;開發(fā)軟件還要知道開發(fā)的這個軟件底可不可行,要進行可行性研究,.還要分析它的成本,效益,最后還要進行一個總體上的設(shè)計,所以說在編寫程序代碼前還要做其大量的工作,并不是我們想象的那么簡單.有時,老師在講臺上面”使勁兒”給我們講授知識時,我們總是不認真聽講,或者聽一會兒之后又走神兒了,雖然每次都想認真聽課,都想學到更多的東西,可總是克服不了自己的惰性,我們都明白,作為一名大三的學生了,更應(yīng)該有自律性與毅力,更應(yīng)該努力,學習更多的知識,因為不久之后我們也將踏入社會面臨就業(yè)的問題,如果沒有多大本事,專業(yè)技能不強,的話,我們將很難找到一份較好的工作,再加上現(xiàn)在每年畢業(yè)生都那么多,就業(yè)壓力是如此的大,所以我們一定要利用好在學校這寶貴的機會,學習更多的知識,不斷的強化自己.,讓自己變得更優(yōu)秀!
在這門課程的第一章中呢,我們學習到了軟件危機方面的有關(guān)知識,以及軟件過程和軟件生存周期,還了解到軟件開發(fā)過程模型,那么有哪些模型呢,首先有種瀑布模型, 快速原型模型,然后就是螺旋模型,增量模型,噴泉模型等等,這些模型都有各自不同的特點.。我們還學習到軟件開發(fā)的一些方法,比如結(jié)構(gòu)化方法.面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法.面向?qū)ο蟮姆椒?和視覺化開發(fā)方法..對于第二章呢,我們重點學習了可行性研究,系統(tǒng)流程圖,以及如何制定軟件計劃和成本/效益分析,首先,可行性研究是軟件生命周期計劃階段中的重要組成部分,在可行性研究中,”問題定義”是相對重要的,不過問題定義階段的持續(xù)時間一般很短,形成的報告文本也相對比較簡單;可行性研究包括經(jīng)濟可行性、技術(shù)可行性、法律可行性和開發(fā)方案選擇四個任務(wù);可行性研究的步驟包括系統(tǒng)規(guī)模和目標的復(fù)查、認真研究現(xiàn)有系統(tǒng)、導出新系統(tǒng)的高層邏輯模型、重新定義問題、導出和評價供選擇的方案、推薦方案和行動方針、草擬開發(fā)計劃、提交文檔這八個方面.然后就是系統(tǒng)流程圖,我們要知道系統(tǒng)流程圖的一些基本符號,了解它們各自的作用,會畫系統(tǒng)流程圖,最后就是如何來制定軟件計劃和進行成本的估算以及效益分析的方法.同時,第三章也是我們學習的重點,需求分析是在可行性研究的基礎(chǔ)上進行的更細致的分析工作,是軟件定義時期的最后一個階段,是對軟件目標及范圍的求精和細化.需求分析的基本任務(wù)是準確回答”系統(tǒng)必須做什么”這個問題,它的具體任務(wù)是確定對系統(tǒng)的綜合要求、分析系統(tǒng)的數(shù)據(jù)要求、導出目標系統(tǒng)的詳細邏輯模型、修訂系統(tǒng)開發(fā)計劃、開發(fā)原型系統(tǒng)等這幾個方面;了解需求分析的原則;以及會寫需求規(guī)格說明書,需求規(guī)格說明書包括引言、任務(wù)概述、需求規(guī)定、運行環(huán)境規(guī)定.引言里面又包括編寫目的,背景,定義,參考資料;任務(wù)概述里面包括目標,用戶的特點,假定和約束,需求規(guī)定里又包括對功能.性能的規(guī)定,輸入/輸出的要求,數(shù)據(jù)管理能力、故障處理的要求,運行環(huán)境規(guī)定里面包括設(shè)備,支持軟件,接口,控制這幾點。還要知道獲取需求的方法.第四、五章就是總體設(shè)計和詳細設(shè)計了, 第四章主要了解了總體設(shè)計的任務(wù)及過程,總體設(shè)計的原理,以及總體設(shè)計的常用方法及工具.第五章了解了詳細設(shè)計的 一些原則,和詳細設(shè)計的方法及工具等等.最后我們還學習了軟件測試的方法和軟件測試的相關(guān)步驟.<軟件工程>這門課程讓我以前對軟件片面的認識有了一個很大的提升,讓我深刻了解到要做好一個軟件方面的項目應(yīng)該從哪些方面去著手,也讓我以后想從事這方面的工作有了一個新的認識.
第二篇:軟件工程-期末總結(jié)
軟件工程期末總結(jié)
課程:姓名:學號:班級:xxxxx xxxxx xxxxxx xxxxxx
目錄
1.軟件工程學概述.........................................................1 1.1軟件危機..........................................................1 1.2軟件工程..........................................................1 1.3軟件生命周期......................................................2 1.4軟件過程..........................................................2 2.可行性研究:............................................................2 2.1可行性研究的任務(wù)..................................................2 2.2可行性研究的過程..................................................3 2.3數(shù)據(jù)流圖..........................................................3 3.需求分析...............................................................3 4.形式化說明技術(shù).........................................................4 5.模塊設(shè)計...............................................................4 1.耦合:............................................................4 2.內(nèi)聚..............................................................4 6.詳細設(shè)計...............................................................5 6.1結(jié)構(gòu)程序設(shè)計......................................................5 6.2人機界面設(shè)計......................................................5 7.軟件測試...............................................................5 7.1軟件測試的目標....................................................5 7.2軟件側(cè)試準則......................................................6 7.3測試方法..........................................................6 8.軟件可靠性.............................................................7 8.1軟件質(zhì)量..........................................................7
1.軟件工程學概述
1.1軟件危機
1.1.1 軟件危機的介紹:是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。具體地說,軟件危機主要有以下一些典型表現(xiàn):1.對軟件開發(fā)成本和進度的估計常常很不準確。2.用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。3.軟件產(chǎn)品的質(zhì)量往往靠不住。4.軟件常常是不可維護的。5.軟件通常沒有適當?shù)奈臋n資料。6.軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。7.軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應(yīng)用迅速普及深入的趨勢。1.1.2產(chǎn)生軟件危機的原因:在軟件開發(fā)和維護的過程中存在這么多嚴重問題,一方面與軟件本身的特點有關(guān),另一方面也和軟件開發(fā)與維護的方法不正確有關(guān)。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。1.1.3消除軟件危機的途徑:
1、認識到軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。2.認識到軟件是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目;
3、推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法,探索更好更有效的技術(shù)和方法;
4、開發(fā)和使用更好的軟件工具??傊?,為了解決軟件危機,既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。軟件工程正是從管理和技術(shù)兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。
1.2軟件工程
1.2.1軟件工程的介紹:軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。定義:采用工程的概念、原理和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它。1.2.2軟件工程的基本原理:
1、用分階段的生命周期計劃嚴格管理
2、堅持進行階段評審
3、實行嚴格的產(chǎn)品控制
4、采用現(xiàn)代程序設(shè)計技術(shù)
5、結(jié)果應(yīng)能清楚地審查
6、開發(fā)小組的人員應(yīng)該少而精
7、承認不斷改進軟件工程實踐的必要性 1.2.3 軟件工程方法學:通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學,也稱為范型。軟件工程方法學包含3個要素方法、工具和過程。目前使用得最廣泛的軟件工程方法學,分別是傳統(tǒng)方法學和面向?qū)ο蠓椒▽W
1.3軟件生命周期
軟件生命周期由軟件定義、軟件開發(fā)和運行維護3個時期組成,每個時期又進一步劃分成若干個階段。軟件定義的3個階段:問題定義、可行性研究、需求分析;軟件開發(fā)的四個階段:總、詳(系統(tǒng)設(shè)計)、編、綜(系統(tǒng)實現(xiàn))軟件生命周期每個階段:1.問題定義2.可行性研究3.需求分析4.總體設(shè)計5.詳細設(shè)計6.編碼和單元測試7.綜合測試8.軟件維護
1.4軟件過程
軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。
1.4瀑布模型瀑布模型
一直是唯一被廣泛采用的生命周期模型,有下述的幾個特點:1.階段間具有順序性和依賴性(1)必須等前一階段的工作完成之后,才能開始后一階段的工作(2)前一階段的輸出文檔就是后一段的輸入文檔,因此,前一階段的輸出文檔必須正確。2.推遲實現(xiàn)的觀點;3.質(zhì)量保證的觀點(1)每個階段都必須完成規(guī)定的文檔,沒有交出合格的文檔就是沒有完成該階段的任務(wù),(2)每個階段結(jié)束前都要對所完成的文檔進行評審,以便盡早發(fā)現(xiàn)問題改正錯誤。
優(yōu)點:可強迫開發(fā)人員采用規(guī)范的方法;嚴格地規(guī)定每個階段必須提交的文檔;要求每個階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細驗證。缺點:瀑布模型是由文檔驅(qū)動的
2.可行性研究: 可行性研究的目的,就是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。
2.1可行性研究的任務(wù)
可行性研究的目的不是解決問題,而是確定問題是否值得去解決??尚行匝芯繉嵸|(zhì)上是要進行一次大大壓縮簡化了的系統(tǒng)分析和設(shè)計的過程,也就是在較高層次上以較抽象的方式進行的系統(tǒng)分析和設(shè)計的過程。在澄清了問題定義之后,分析員應(yīng)該導出系統(tǒng)的邏輯模型。然后從系統(tǒng)邏輯模型出發(fā),探索若干種可供選擇的主要解法(即系統(tǒng)實現(xiàn)方案)。對每種解法都應(yīng)該仔細研究它的可行性,一般說來,至少應(yīng)該從下述3個方面研究每種解法的可行性。
1)技術(shù)可行性 使用現(xiàn)有的技術(shù)能實現(xiàn)這個系統(tǒng)嗎?
2)經(jīng)濟可行性 這個系統(tǒng)的經(jīng)濟效益能超過它的開發(fā)成本嗎? 3)操作可行性 系統(tǒng)的操作方式在這個用戶組織內(nèi)行得通嗎?
必要時還應(yīng)該從法律、社會效益等更廣泛的方面研究每種解法的可行性??尚行匝芯啃枰臅r間長短取決于工程的規(guī)模。一般來說,可行性研究的成本只是預(yù)期的工程總成本的5%-10%。
2.2可行性研究的過程
步驟:1.復(fù)查系統(tǒng)規(guī)模和目標2.研究目前正在使用的系統(tǒng)3.導出新系統(tǒng)的高層邏輯模型4.進一步定義問題5.導出和評價供選擇的解法6.推薦行動方針7.草擬開發(fā)計劃8.書寫文檔提交審查
2.3數(shù)據(jù)流圖
數(shù)據(jù)流圖(DFD)是一種圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換。在數(shù)據(jù)流圖中沒有任何具體的物理部件,它只是描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程。數(shù)據(jù)流圖有四種基本符號:
正方形(或立方體)表示數(shù)據(jù)的源點或終點; 圓角矩形(或圓形)代表變換數(shù)據(jù)的處理; 開口矩形(或兩條平行橫線)代表數(shù)據(jù)存儲; 箭頭表示數(shù)據(jù)流,即特地數(shù)據(jù)的流動方向。
在數(shù)據(jù)流圖中應(yīng)該描繪所有可能的數(shù)據(jù)流向,而不應(yīng)該描繪出現(xiàn)某個數(shù)據(jù)流的條件。數(shù)據(jù)存儲和數(shù)據(jù)流都是數(shù)據(jù),僅僅所處的狀態(tài)不同。數(shù)據(jù)存儲是處于靜止狀態(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運動中的數(shù)據(jù)。數(shù)據(jù)流圖的基本要點是描繪“做什么”,而不是“怎么做”。數(shù)據(jù)流圖的4種成分:源點或終點,處理,數(shù)據(jù)存儲,數(shù)據(jù)流數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具,另一個主要用途是作為分析和設(shè)計的工具。
3.需求分析
3.1.1確定對系統(tǒng)的綜合需求1.功能需求2.性能需求3.可靠性和可用性需求4.出錯處理需求5.接口需求6.約束7.逆向需求8.將來可能提出的需求
4.形式化說明技術(shù)
PSL/PSA系統(tǒng)的主要優(yōu)點是它改進了文檔質(zhì)量,能保證文檔具有完整性、一致性和無二義性,從而可以減少管理和維護的費用。數(shù)據(jù)存放在數(shù)據(jù)庫中,便于增加、刪除和更改,這也是它的一個優(yōu)點。
5.模塊設(shè)計
模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。開發(fā)具有獨立功能而且和其他模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨立。
1.耦合:
耦合是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強弱取決于模塊間接口的復(fù)雜程度因此,模塊間的耦合程度強烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護性。公共環(huán)境耦合的復(fù)雜程度隨耦合的模塊個數(shù)而變化,當耦合的模塊個數(shù)增加時復(fù)雜程度顯著增加。如果只有兩個模塊有公共環(huán)境,那么這種耦合有下面兩種可能。1.一個模塊往公共環(huán)境送數(shù)據(jù),另一個模塊從公共環(huán)境取數(shù)據(jù)。這是數(shù)據(jù)耦合的于一種形式,是比較松散的耦合。2.兩個模塊都既往公共環(huán)境送數(shù)據(jù)又從里面取數(shù)據(jù),這種耦合比較緊密,介于數(shù)據(jù)耦合和控制耦合之間。如果兩個模塊共享的數(shù)據(jù)很多,都通過參數(shù)傳遞可能很不方便,這時可以利用公共環(huán)境耦合。最高程度的耦合是內(nèi)容耦合。如果出現(xiàn)下列情況之一,兩個模塊間就發(fā)生了內(nèi)容耦合。一個模塊訪問另一個模塊的內(nèi)部數(shù)據(jù)。一個模塊不通過正常入口而轉(zhuǎn)到另二個模塊的內(nèi)部。兩個模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編程序中)。一個模塊有多個入口(這意味著一個模塊有幾種功能)。應(yīng)該堅決避免使用內(nèi)容耦合。事實上許多高級程序設(shè)計語言已經(jīng)設(shè)計成不允許在程序中出現(xiàn)任何形式的內(nèi)容耦合。總之,耦合是影響軟件復(fù)雜程度的一個重要因素。應(yīng)該采取下述設(shè)計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。
2.內(nèi)聚
內(nèi)聚標志著一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴展。簡單地說,理想內(nèi)聚的模塊只做一件事情。內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。內(nèi)聚和耦合都一是進行模塊化設(shè)計的有力工具,但是實踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度上。低內(nèi)聚:偶然內(nèi)聚、時間內(nèi)聚、邏輯內(nèi)聚;中內(nèi)聚主要有兩類:過程內(nèi)聚和通信內(nèi)聚;高內(nèi)聚也有兩類:順序內(nèi)聚和功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。
6.詳細設(shè)計
詳細設(shè)計階段的根本目標是確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個階段的設(shè)計工作,應(yīng)該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設(shè)計語言書寫的程序。詳細設(shè)計階段的任務(wù)還不是具體地編寫程序,而是要設(shè)計出程序的“藍圖”,以后程序員將根據(jù)這個藍圖寫出實際的程序代碼。因此,詳細設(shè)計的結(jié)果基本上決定了最終的程序代碼的質(zhì)量。考慮程序代碼的質(zhì)量時必須注意,程序的“讀者”有兩個,那就是計算機和人。在軟件的生命周期中,設(shè)計測試方案、診斷程序錯誤、修改和改進程序等都必須首先讀懂程序。實際上對于長期使用的軟件系統(tǒng)而言,人讀程序的時間可能比寫程序的時間還要長得多。因此,衡量程序的質(zhì)量不僅要看它的邏輯是否正確.性能是否滿足要求,更主要的是要看它是否容易閱讀和理解。詳細設(shè)計的目標不僅僅是邏輯上正確地實現(xiàn)每個模塊的功能,更重要的是設(shè)計出的處理過程應(yīng)該盡可能簡明易懂。結(jié)構(gòu)程序設(shè)計技術(shù)是實現(xiàn)上述目標的關(guān)鍵技術(shù),因此是詳細設(shè)計的邏輯基礎(chǔ)。
6.1結(jié)構(gòu)程序設(shè)計
如果一個程序的代碼塊僅僅通過順序,選擇和循環(huán)這3種基本控制結(jié)構(gòu)進行連接,并且每個代碼塊只有一個入口和一個出口,則稱為程序的結(jié)構(gòu)化。
6.2人機界面設(shè)計
人機界面設(shè)計是接口設(shè)計的一個重要的組成部分。在設(shè)計人機界面過程會遇到下面4個問題:系統(tǒng)響應(yīng)時間,用戶幫助設(shè)施,出錯信息處理和命令交互。用戶界面設(shè)計過程是一個迭代的過程,首先創(chuàng)建設(shè)計模型,再用原型實現(xiàn)這個設(shè)計模型,并由用戶試用和評估,然后根據(jù)用戶意見進行修改。為了支持上述迭代過程,各種用于界面設(shè)計和原型開發(fā)的軟件工具產(chǎn)生。它們?yōu)楹喕翱?,菜單,設(shè)備交互,出錯信息,命令及交互環(huán)境的許多其它元素的瘡癤提供各種歷程或?qū)ο?。用戶界面評估周期如下,完成初步設(shè)計之后就創(chuàng)建第一級原型,用戶使用并評估該原型,直接向設(shè)計者表述對界面的評價,設(shè)計中根據(jù)用戶意見修改設(shè)計并實現(xiàn)下一級原型。
7.軟件測試
7.1軟件測試的目標
1.測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。2.好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案。3.成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。從上述規(guī)則可以看出,測試的正確定義是“為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程”。這和某些人通常想象的“測試是為了表明程序是正確的”,“成功的
測試是沒有發(fā)現(xiàn)錯誤.的測試”等是完全相反的。正確認識測試的目標是十分重要的,測試目標決定了測試方案的設(shè)計。如果為了表明程序是正壑耍進行測試,就會設(shè)計一些不易暴露錯誤的測試方案;相反,如果測試是為了發(fā)現(xiàn)程序中的錯誤,就會力求設(shè)計出最能暴露錯誤的測試方案。由于測試的目標是暴露程序中的錯誤,從心理學角度看,由程序的編寫者自己進行測試是不恰當?shù)?。因此,在綜合測試階段通常由其他人員組成測試小組來完成測試工作。此外,應(yīng)該認識到測試決不能證明程序是正確的。即使經(jīng)過了最嚴格的測試之后,仍然可能還有沒被發(fā)現(xiàn)的錯誤潛藏在程序中。測試只能查找出程序中的錯誤,不能證明程序中沒有錯誤。關(guān)于這個結(jié)論下面還要討論。
7.2軟件側(cè)試準則
怎樣才能達到軟件測試的目標呢?為了能設(shè)計出有效的測試方案,軟件工程師必須深人理解并正確運用指導軟件測試的基本準則。下面講述主要的測試準則。1.所有測試都應(yīng)該能追溯到用戶需求。2.應(yīng)該遠在測試開始之前就制定出測試計劃。3.把Paret原理應(yīng)用到軟件測試中。Pareto原理說明,測試發(fā)現(xiàn)的錯誤中的80%很可是由程序中20%的模塊造成的。當然,問題是怎樣找出這些可疑的模塊并徹底地測試它們。4.應(yīng)該從“小規(guī)模”測試開始,并逐步進行“大規(guī)模”測試。通常,首先重點測試單個程序模塊,然后把測試重點轉(zhuǎn)向在集成的模塊簇中尋找錯誤,最后在整個系統(tǒng)中尋找錯誤。5.窮舉測試是不可的。所謂窮舉測試就是把程序所有可能的執(zhí)行路徑都檢查一遍的測試。即使是一個中等規(guī)模的程序,其執(zhí)行旋的排列數(shù)也十分龐大,由于受時間、人力以及其他資源的限制,在測試過程中不可能執(zhí)行每個可能的路徑。囚此,測試只能證明程序中有錯誤,不能證明程序中沒有錯誤。但是,精心地設(shè)計測試方案,有可能充分覆蓋程序邏輯并使程序達到所要求的可靠性。6.為了達到最佳的測試效果,應(yīng)該由獨立的第三方從事測試工作。所謂“最佳效果”是指有最大可能性發(fā)現(xiàn)錯誤的測試。由于前面已經(jīng)講過的原因,開發(fā)軟件的軟件工程師并不是完成全部測試工作的最佳人選(通常他們主要承擔模塊測試工作)。
7.3測試方法
測試任何產(chǎn)品都有兩種方法:如果已經(jīng)知道了產(chǎn)品應(yīng)該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用瑯口果知道產(chǎn)品的內(nèi)部工作過程,可以通過測試來檢驗產(chǎn)品內(nèi)部動作是否按照規(guī)格說明書的規(guī)定正乒進行。前一種方法稱為黑盒測試,后一種方法稱為白盒測試。對于軟件測試而言,黑盒測試法把程序看作一個黑盒子,完全不考慮程序的內(nèi)部結(jié)均和處理過程。也就是說,黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序否能適當?shù)亟邮蛰斎藬?shù)據(jù)并產(chǎn)生正確的輸出信息,程序運行過程中能否保持外部信息(例如,數(shù)據(jù)庫或文件)的完整性。黑盒測試又稱為功能測試。白盒測試法與黑盒測試法相反,它的前提是可以把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結(jié)構(gòu)和處理算法。這種方法按測程序中的主要執(zhí)行通路是否都能按預(yù)定要求正確工作。照程序內(nèi)部的邏輯測試程序,白盒測試又稱為結(jié)構(gòu)測試。
8.軟件可靠性
可靠性定義:軟件可靠性是程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功的運行的概率可用性定義:軟件可用性是程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功的運行的概率基本假定 1.在測試之前每1000條指令中大約有5~20個錯誤 2.失效率正比于剩余的錯誤數(shù),平均無故障時間MTTF與剩余錯誤數(shù)成反比3.為了簡化討論假設(shè)發(fā)現(xiàn)的每一個錯誤都立即正確地改正了。
8.1軟件質(zhì)量
概括地說,軟件質(zhì)量就是“軟件與明確地和隱含地定義的需求相一致的程度”。更具體地說,軟件質(zhì)量是軟件與明確地敘述的功能和性能需求、文檔中明確描述的開發(fā)標準以及任何專業(yè)開發(fā)的軟件產(chǎn)品都應(yīng)該具有的隱含特征相一致的程度。上述定義強調(diào)了下述的6個要點: 1.正確性(它按我的需要工作嗎?)系統(tǒng)滿足規(guī)格說明用戶目標的程度,即,在預(yù)定環(huán)境下能正確的完成預(yù)期功能的程度。
2.健壯性(對息外環(huán)境它能適當?shù)仨憫?yīng)嗎?)在硬件發(fā)生故障、輸入的數(shù)據(jù)無效或操作錯誤等意外環(huán)境下,系統(tǒng)能做出適當?shù)捻憫?yīng)程度。
3.效率〔完成預(yù)定功能時它需要的計算機資源多嗎?)為了完成預(yù)定的功能,系統(tǒng)需要的計算資源的多少。
4.完整性(安全性)(它是安全的嗎?)對未經(jīng)授權(quán)的人使用軟件或數(shù)據(jù)的企圖,系統(tǒng)能夠控制(禁止)的程度。
5.可用性(我能使用它嗎?)系統(tǒng)在完成預(yù)定應(yīng)該完成的功能時令人滿意的程度。6.風險(能按預(yù)定計劃完成它嗎?)按預(yù)定的成本和進度把系統(tǒng)開發(fā)出來,并且為用戶所滿意的概率。
第三篇:軟件工程期末復(fù)習總結(jié)
軟件工程期末復(fù)習總結(jié)
第一章 軟件工程學概述
1.軟件危機:是指在計算機軟件開發(fā)、使用與維護過程中遇到的一系列嚴重問題和難題。包括如何開發(fā)軟件,如何維護數(shù)量不斷膨脹的已有軟件。
2.軟件生命周期的定義及劃分
3.軟件從定義、開發(fā)、使用和維護,直到最終廢棄的過程稱為生命周期
4.按照軟件生命周期全過程應(yīng)完成的任務(wù)性質(zhì),在概念上可以把軟件生命周期劃分成問題定義、可行性研究、需求分析(定義時期)、總體設(shè)計、詳細設(shè)計(系統(tǒng)設(shè)計)、編碼和單元測試、綜合測試以及運行維護(系統(tǒng)實現(xiàn))共8個階段
5.最基本的測試是集成測試和驗收測試
6.軟件配置主要包括:程序+數(shù)據(jù)+文檔
7.軟件工程的定義軟件工程是把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運行和維護過程,也就是把工程應(yīng)用于軟件;并研究其中提到的途徑。
8.軟件工程的基本原理
1.用分階段的生命周期計劃嚴格管理
2.堅持進行階段評審
3.實行嚴格的產(chǎn)品控制
4.采用現(xiàn)代程序設(shè)計技術(shù)
5.結(jié)果應(yīng)能清楚地審查
6.開發(fā)小組的人員應(yīng)該小而精
7.承認不斷改進軟件工程實踐的必要性
9.軟件工程方法學包含3要素:方法、工具和過程。
分成傳統(tǒng)方法學和面向?qū)ο蠓椒▽W,其中傳統(tǒng)方法學采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來完成軟件開發(fā)的各項任務(wù)。
10.軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定各項任務(wù)的工作步驟(who,when,what,how)
11.軟件過程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型
12.瀑布模型優(yōu)點
1.階段間具有順序性和依賴性
2.推遲實現(xiàn)的觀點
3.質(zhì)量保證的觀點
13.軟件工程由方法、(工具)和過程三部分組成,稱軟件工程的三要素。
14.從工程管理的角度軟件設(shè)計可分為概要設(shè)計和(詳細)設(shè)計兩大步驟。
15.基于計算機系統(tǒng)的軟件要素中的軟件由程序、數(shù)據(jù)和(文檔)組成。
16.軟件設(shè)計也可看作將需求規(guī)格說明逐步轉(zhuǎn)換為軟件源代碼的過程。()
17.軟件生存周期(名詞解釋)軟件從定義、開發(fā)、使用和維護,直到最終廢棄的過程稱為生命周期
18.軟件危機(名詞解釋)是指在計算機軟件開發(fā)、使用與維護過程中遇到的一系列嚴重問題和難題 原型法模型一般適應(yīng)哪些場合?
它適合于那些不能預(yù)先確切定義需求的軟件系統(tǒng)的開發(fā),更適合于那些項目組成員(包括分析員、設(shè)計員、程序員和用戶)不能很好交流或通信有困難的情況。
瀑布模型一般適應(yīng)哪些場合?
瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。例如操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件的開發(fā)。應(yīng)用有一定的局限性。
第二章 可行性研究
1.可行性研究的目的,就是用最小的代價盡可能短的時間內(nèi)確定問題是否能夠解決
2.至少包含下述3個方面:
1.技術(shù)可行性
2.經(jīng)濟可行性
3.操作可行性
3.數(shù)據(jù)流圖的用途
1.交流信息的工具
2.作為分析與設(shè)計的工具
4.數(shù)據(jù)字典的內(nèi)容由4類元素組成1.數(shù)據(jù)流
2.數(shù)據(jù)流分量(即數(shù)據(jù)元素)
3.數(shù)據(jù)存儲
4.處理
5..系統(tǒng)流程圖是物理系統(tǒng)模型
數(shù)據(jù)流圖和數(shù)據(jù)字典是系統(tǒng)邏輯模型
5.成本/效益分析的方法:1.貨幣的時間價值,2投資回收期3純收入4投資回收率
6.數(shù)據(jù)字典:是關(guān)于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合.第三章 需求分析
1.需求分析是軟件定義時期的最后一個階段,它的基本任務(wù)是準備地回答“系統(tǒng)必須做什么”這個問題
2.需求分析的任務(wù)
1.確定對系統(tǒng)的綜合要求
2.分析系統(tǒng)的數(shù)據(jù)要求
3.導出系統(tǒng)的邏輯模型
4.修正系統(tǒng)開發(fā)計劃
3.需求分析的結(jié)果是軟件需求規(guī)格說明書
4.需求分析的方法
1.訪談
2.面向數(shù)據(jù)流自頂向下求精
3.簡易的應(yīng)用規(guī)格說明技術(shù)
4.快速建立軟件原型,5…實踐表明,快速建立軟件原型是最準確、最有效和最強大的需求分析技術(shù)
6需求分析建模的工具
1.E-R圖
2.層次方框圖,描繪數(shù)據(jù)的層次結(jié)構(gòu)
3.Warnier圖
4.IPO圖
7.驗證軟件需求應(yīng)該從下面4個方面驗證
1.一致性
2.完整性
3.現(xiàn)實性
4.有效性
第五章 總體設(shè)計
1.總體設(shè)計的基本目的就是回答“概括地說,系統(tǒng)該如何實現(xiàn)?”
2.總體設(shè)計也稱概要設(shè)計或初步設(shè)計
3.總體設(shè)計的重要任務(wù)
1.劃分系統(tǒng)元素和邊界
2.設(shè)計軟件的結(jié)構(gòu),即系統(tǒng)的模塊組成和模塊間的關(guān)系。
4.總體設(shè)計通常由兩個階段組成:
系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案
結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)
5.模塊是構(gòu)成程序的基本構(gòu)件。
6.模塊化就是把程序分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構(gòu)成一個整體,可以完成指定的功能滿足用戶需求
7.模塊化的根據(jù)就是分解復(fù)雜的問題容易解決
8.軟件設(shè)計原理
1.模塊化
2.抽象
3.逐步求精
4.信息隱藏和局部化
5.模塊獨立
9.模塊設(shè)計的原則是高內(nèi)聚,低耦合耦合是衡量不同模塊彼此間互相依賴的緊密程度
內(nèi)聚是衡量一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度
10.耦合的類型及設(shè)計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合內(nèi)聚:使用功能內(nèi)聚和順序內(nèi)聚
11.設(shè)計的啟發(fā)式規(guī)則
1.提高獨立性
2.模塊適中
3.深度、寬度、扇入和扇出適當
4.模塊作用域應(yīng)該在控制域之內(nèi)
5.降低模塊接口的復(fù)雜度
6.設(shè)計單入口單出口的模塊
7.模塊功能可以預(yù)測
12.據(jù)流的設(shè)計方法的兩種不同類型的設(shè)計:變換分析和事務(wù)分析
優(yōu)化方法的格言:先使它能工作,然后再使它快起來
第六章 詳細設(shè)計
設(shè)計階段的根本目錄是確定應(yīng)該怎樣具體地實質(zhì)所要求的系統(tǒng)。
詳細設(shè)計不是編碼,而是設(shè)計出程序的“藍圖”
結(jié)構(gòu)程序設(shè)計最早由Dijkstra提出
只要3種基本的控制結(jié)構(gòu)就能實現(xiàn)任何單入口單出口的程序,這3種基本的控制結(jié)構(gòu)是“順序”、“選擇”和“循環(huán)”
1.程序設(shè)計的經(jīng)典定義:如果一個程序的代碼塊僅僅透過順序、選擇和循環(huán)這3中基本控制結(jié)構(gòu)進行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結(jié)構(gòu)化的結(jié)構(gòu)程序設(shè)計是盡可能少用GOTO語句的程序設(shè)計方法,最好僅在檢測出錯誤時才使用GOTO語句,而且應(yīng)該總是使用前向GOTO語句
人機界面的設(shè)計質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價
設(shè)計人機界面總會遇到下述四個問題:
1.系統(tǒng)響應(yīng)時間
2.用戶幫助設(shè)備
3.出錯信息處理
4.命令交互
人機界面設(shè)計指南:
1.置用戶于控制之下
2.減少用戶的記憶負擔
3.保持界面一致
判定表可用作軟件測試
Jackson圖包含3類邏輯數(shù)據(jù)結(jié)構(gòu),順序結(jié)構(gòu),選擇結(jié)構(gòu),重復(fù)結(jié)構(gòu)
第七章 實現(xiàn)
通常把編碼和測試統(tǒng)稱為實現(xiàn)
編碼就是把軟件設(shè)計結(jié)構(gòu)翻譯成某種程序設(shè)計語言書寫的程序
測試的目的就是在軟件投入生產(chǎn)性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤
軟件測試的工作量往往占軟件開發(fā)總工作量的40%以上
調(diào)試是測試階段最困難的工作
G.Myers測試的目標或定義:
1.測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程
2.好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案
3.成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試
軟件測試準則
1.所有測試都應(yīng)該能追溯到用戶需求
2.應(yīng)該遠在測試開始之前就制定出測試計劃
3.把Pareto原理應(yīng)用到軟件測試中
4.應(yīng)該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)模”測試【(8020)測試發(fā)現(xiàn)的錯誤80%很可能是由程序中20%的模塊造成的】
5.窮舉測試是不可能的6.第三方測試(A編寫,B測試)
V字型模型
測試分為白盒測試(結(jié)構(gòu)測試)和黑盒測試(功能測試)
具體的測試方法{【(測試用例)()】【(覆蓋條件)()】}
測試步驟:1.模塊測試.2子系統(tǒng)測試 3.系統(tǒng)測試 4.驗收測試 5.平行運行
軟件可靠性:是程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運行的概率
軟件可用性:是程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功地運行的概率
第八章 維護
軟件工程的主要目的是提高軟件的可維護性,減少軟件維護所需要的工作量,降低軟件系統(tǒng)的總成本
所謂維護就是在軟件已經(jīng)交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。
四類維護
1.改正性維護糾正使用過程中暴露出來的錯誤
2.適應(yīng)性維護適應(yīng)外部環(huán)境變化
3.完善性維護改進原有軟件
4.預(yù)防性維護改進將來的可維護性和可靠性
軟件維護的特點
1.結(jié)構(gòu)化維護與非結(jié)構(gòu)化維護差別巨大
2.維護的代價高昂
3.維護的問題很多
決定軟件可維護性的因素
1.可理解性
2.可測試性
3.可修改性
4.可移植性
5.可重用性
文檔是影響軟件可維護性的決定因素
軟件系統(tǒng)的文檔可以分為用戶文檔和系統(tǒng)文檔兩類
1.用戶文檔主要描述系統(tǒng)功能和使用方法
2.系統(tǒng)文檔指從問題定義,需求說明驗收測試計劃這樣一系列實現(xiàn)有關(guān)的文檔
Miller:“把今天的方法學應(yīng)用到昨天的系統(tǒng)上,以支持明天的需求?!?/p>
第四篇:軟件工程期末復(fù)習題
1、軟件定義:問題定義、可行性研究,需求分析
2、軟件開發(fā):總體設(shè)計,詳細設(shè)計,編碼和單元測試,綜合測試
3、軟件維護:改正性維護、適應(yīng)性維護、完善性維護、預(yù)防性維護
4、軟件過程:瀑布模型,快速原型模型,增量模型,螺旋模型,噴泉模型,Rational統(tǒng)一過程,敏捷過程與極限編程,微軟過程
5、從3個方面研究每種解決的可行性:技術(shù)可行性、經(jīng)濟可行性、操作可行性
6、軟件需求分析階段的工作:可以分為以下4個方面:對問題的識別、分析與綜合、編寫需求分析文檔以及需求分析評審
7、設(shè)計原理:模塊化、抽象、逐步求精、信息隱藏和局部化、模塊獨立性(耦合、內(nèi)聚)
8、決定軟件可維護性的因素:可理解性、可測試性、可修改性、可移植性、可重用性
一、假設(shè)要求你開發(fā)一個軟件,該軟件的功能是把讀入的浮點數(shù)開平方,所得到的結(jié)果應(yīng)該精確到小數(shù)點后4位。一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄。你打算選用哪些軟件生命周期模型?請說明你作出選擇的理由。
答:對這個軟件的需求很明確,實現(xiàn)開平方功能的算法也很成熟,因此,既無須通過原型來分析需求也無須用原型來驗證設(shè)計方案。此外,一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄,因此也無須使用有助于提高軟件可維護性的增量模型或螺旋模型來開發(fā)該軟件。綜上所述,為了開發(fā)這個簡單的軟件,使用大多數(shù)人所熟悉的瀑布模型就可以了
二、假設(shè)你被任命為一家軟件公司的項目負責人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場競爭激烈,公司規(guī)定了嚴格的完成期限并且已對外公布。你打算采用哪種軟件生命周期模型?為什么?。
答:對這個項目的一個重要要求是,嚴格按照已對外公布了的日期完成產(chǎn)品開發(fā)工作,因此,選擇生命周期模型時應(yīng)該著重考慮哪些模型有助于加快產(chǎn)品開發(fā)的進度。使用增量模型開發(fā)軟件時可以并行完成開發(fā)工作,因此能夠加快開發(fā)進度。
這個項目是開發(fā)該公司已被廣泛應(yīng)用的字處理軟件的新版本,從上述事實至少可以得出3點結(jié)論:第一,舊版本相當于一個原型,通過收集用戶對舊版本的反映,較容易確定對新版本的需求,沒必要再專門建立一個原型系統(tǒng)來分析用戶的需求;第二,改公司的軟件工程師對字處理軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗,具有采用增量模型開發(fā)新版字處理軟件所需要的技術(shù)水平;第三,該軟件受到廣大用戶的喜愛,今后很可能還要開發(fā)更新的版本,因此,應(yīng)該把該軟件的體系結(jié)構(gòu)設(shè)計成開放式的,以利于今后的改進和擴充。綜上所述,采用增量模型來完成這個項目比較恰當。
三、考慮一個修改磁帶上主文件的系統(tǒng)。文件管理員把修改信息穿孔在卡片上,系統(tǒng)讀入穿孔卡片上的信息并按照記錄號把修改信息順序排列好。然后系統(tǒng)逐個讀入主文件上的記錄,根據(jù)記錄上的校驗碼校核每個讀入的記錄,丟掉出錯的記錄,按照修改信息修改余下的記錄,產(chǎn)生的新文件存儲在磁盤上。最后,系統(tǒng)輸出一份修改報告供文件管理員參閱。請分層次地畫出上述主文件修改系統(tǒng)的數(shù)據(jù)流圖。
答:本系統(tǒng)的數(shù)據(jù)源點和終點都是文件管理員,他既向系統(tǒng)提供修改信息,又接收系統(tǒng)生成的修改報告。系統(tǒng)功能主要有:接收修改信息,讀主文件,校核記錄,修改原始記錄和產(chǎn)生報告。注意,問題陳述中所描述的“系統(tǒng)安裝記錄號把修改信息順序排列好”,是具體的實現(xiàn)方法。在數(shù)據(jù)流圖中無須描述具體實現(xiàn)方法,因此,在本系統(tǒng)的數(shù)據(jù)流圖中不需要包含“排序”功能。類似地,“文件管理員把修改信息穿孔在卡片上,系統(tǒng)讀入穿孔卡片上的信息”,是系統(tǒng)接收修改信息的具體方法。在數(shù)據(jù)流圖中無須描繪這個具體的實現(xiàn)方案,因此,在本系統(tǒng)的數(shù)據(jù)流圖中不需要包含“穿卡片”和“讀卡片”的功能。
本系統(tǒng)包含的數(shù)據(jù)存儲是:修改信息,主文件和修改后的主文件。圖2.6是本系統(tǒng)的基本系統(tǒng)模型,圖2.7是功能級數(shù)據(jù)流圖。
四、用Jackson圖描繪下述的一列火車的構(gòu)成:
一列火車最多有兩個火車頭。只有一個火車頭時則位于列車最前面,若還有第二個火車頭時,則第二個火車頭位于列車最后面?;疖囶^既可能是內(nèi)燃機車也可能是電氣機車。車廂分為硬座車廂、硬臥車廂和軟臥車廂等3種。硬座車廂在車內(nèi)所有車廂的前面部分,軟臥車廂在所有車廂的后面部分。此外,在硬臥車廂和軟臥車廂之間還有一節(jié)餐車。
答:Jackson圖善于描繪復(fù)雜事物的組成。用Jackson圖描繪一列火車的構(gòu)成的方法至少有兩種,一種方法是把火車分為一個車頭和兩個車頭兩類,另一種方法是把后車頭作為可選的。圖3.29給出了描繪一列火車的構(gòu)成的Jackson圖。
解法1(b)解法2
五、為方便出乎,某銀行擬開發(fā)計算機儲蓄系統(tǒng),儲戶填寫的存款單或取款單由業(yè)務(wù)員輸入系統(tǒng),如果是存款,系統(tǒng)記錄存款人姓名、住址、存款類型、存款日期、利率等信息,并印出存款單給儲戶,如果是取款,系統(tǒng)計算利息并印出利息清單給儲戶。寫出問題定義并分析系統(tǒng)的可行性。
答:技術(shù)上的可行性:開發(fā)系統(tǒng)的計算機硬件已經(jīng)非常普及,完全沒有問題;現(xiàn)在的計算機各方面的技術(shù)都非常成熟,相對來說開發(fā)此系統(tǒng)的技術(shù)也要求比較簡單,因此在技術(shù)方面是可行的;同時銀行還必須有一定量的系統(tǒng)管理和維護的專業(yè)人員,在這方面可以通過培訓原來的技術(shù)人員成為新的需要的技術(shù)人員,也可以雇用所需這方面的專業(yè)技術(shù)員;若按計劃,在規(guī)定的期限內(nèi),本系統(tǒng)的開發(fā)是可以完成的。
操作可行性:開發(fā)的系統(tǒng)操作要非常簡單,以便適合大人小孩老人各類人們都可以很方便操作使用。還有,要有經(jīng)過培訓的專業(yè)人員在指導,以便當儲戶有什么疑難問題時能及時得到正確的答復(fù) 社會、政策允許的可行性:全部軟件購買正版,機器設(shè)置通過正當途徑購得
六、分析圖3.1所示的層次圖,確定每個模塊的內(nèi)聚類型。分析圖3.2,確定模塊之間的耦合類型
圖3.1 計算多地點日平均溫度的程序
答:從圖3.1所示的層次圖可以看出,這個程序的功能是計算若干個指定地點的每日平均溫度。變量sum保存某地一天之內(nèi)在指定的時間取樣點的溫度之和。程序運行時首先初始化變量sum并打開文件,然后讀取地點、時間和溫度等原始數(shù)據(jù),創(chuàng)建用于保存這些數(shù)據(jù)的溫度記錄,接下來計算特定地點的日平均溫度,存儲溫度記錄。重復(fù)調(diào)用“讀取地點、時間和溫度”、“創(chuàng)建新的溫度記錄”、“計算特定地點的日平均溫度”和“存儲溫度記錄”等模塊,直至計算出并保存好所有指定地點的日平均溫度。最后,打印平均溫度并關(guān)閉文件。
從上述敘述可知,“計算多個地點的日平均溫度”、“讀取地點、時間和溫度”、“創(chuàng)建新的溫度記錄”、“計算特定地點的日平均溫度”和“存儲溫度記錄”等5個模塊,每個都完成一個單一的功能,模塊內(nèi)所有元素都為完成同一個功能服務(wù),彼此結(jié)合的十分緊密,因此,這5個模塊的內(nèi)聚類型都是功能內(nèi)聚。
初看起來,由于初始化變量sum和打開文件這兩個操作都是在程序運行的初始階段完成的,“初始化變量sum和打開文件” 這個模塊的內(nèi)聚類型似乎是時間內(nèi)聚。但是,初始化變量sum是本程序特有的操作,而打開文件是硬件要求的操作,是任何使用文件的程序都包含的一個操作,并非本程序特有的操作。當可以分配兩個或更多個不同級別的內(nèi)聚類型給一個模塊時,規(guī)則是分配最低級別的內(nèi)聚類型給該模塊。因此,“初始化變量sum和打開文件”這個模塊的內(nèi)聚類型都是偶然內(nèi)聚。同理,“關(guān)閉文件并打印平均溫度” 這個模塊的內(nèi)聚類型也是偶然內(nèi)聚。
分析圖3.2,確定模塊之間的耦合類型。
圖3.2 一個程序的模塊互連圖 在圖3.2中已經(jīng)給模塊之間的接口編了號碼,表3.1描述了模塊間的接口。表3.1 模塊接口描述
綜合分析圖3.2和表3.1所提供的信息可知各個模塊之間的耦合情況。例如,當模塊p調(diào)用模塊 q時(接口1),它傳遞一個參數(shù)----飛機類型。當模塊q把控制返還給模塊p時,它傳回一個狀態(tài)標志。
某些模塊之間的耦合類型是明顯的,例如,模塊p和q之間(接口1)、模塊r和t之間(接口5)及模塊s和u之間(接口6)都是數(shù)據(jù)耦合,因為它們傳遞的都是一個簡單變量。
如果兩個模塊中的一個模塊給另一個模塊傳遞控制元素,也就是說,如果一個模塊明顯地控制另一個模塊的邏輯,則它們之間具有控制耦合。例如,當給具有邏輯內(nèi)聚的模塊傳遞功能代碼時就傳遞了控制元素。另一個控制耦合的例子是把控制開關(guān)作為一個參數(shù)傳遞。圖3.2中模塊q調(diào)用模塊r時(接口3)傳遞一個功能代碼,因此,這兩個模塊之間是控制耦合。
圖3.2右側(cè)文字說明,模塊p、t和u更新同一個數(shù)據(jù)庫,因此,它們之間具有公共環(huán)境耦合。
當模塊p調(diào)用模塊s時(接口2),如果模塊s使用或更新模塊p傳遞給它的零件清單中的所有元素,則模塊p和s之間的耦合是數(shù)據(jù)耦合;但是,如果模塊s只訪問該清單中的一部分元素,則模塊p和s之間的耦合是特征耦合。模塊q和s之間(接口4)的耦合情況與此類似。由于圖3.2和表3.1中給出的信息尚不足以準確地描述各個模塊的功能,所以不能確定這兩對模塊之間的耦合是數(shù)據(jù)耦合還是特征耦合。
第五篇:軟件工程期末小結(jié)
第一章 軟件工程概述
1.對“引入同一變動付出的代價隨時間變化的趨勢”:在軟件開發(fā)的不同階段進行修改需要付出的代價是很不相同的,在早期引入變動,涉及的面較少,因而代價也比較低;而在開發(fā)的中期,軟件配置的許多成分已經(jīng)完成,引入一個變動要對所有已完成的配置成分都做相應(yīng)的修改,不僅工作量大,而且邏輯上也更復(fù)雜,因此付出的代價劇增;在軟件“已經(jīng)完成”是再引入變動,當然需要付出更高的代價。根據(jù)美國一些軟件公司的統(tǒng)計資料,在后期引入一個變動比在早期引入相同的變動所需付出的代價高2~3個數(shù)量級。
2.軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。程序是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠適當?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu);文檔是開發(fā)、使用和維護程序所需要的圖文資料。
3.為了解決軟件危機,既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。軟件工程正是從管理和技術(shù)兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。
4.軟件工程是:(1)把系統(tǒng)的、規(guī)范的、可度量的途徑盡快應(yīng)用于軟件開發(fā)、運行和維護過程,也就是把工程應(yīng)用于軟件;(2)研究(1)中提到的途徑。
5.軟件工程本質(zhì)特性(理解,判斷):軟件工程關(guān)注與大型程序的構(gòu)造,軟件工程的中心課題是控制復(fù)雜性,軟件經(jīng)常變化,開發(fā)軟件的效率非常重要,和諧地合作是開發(fā)軟件的關(guān)鍵,軟件必須有效地支持它的用戶,在軟件工程領(lǐng)域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品。
6.軟件工程方法學包含3個要素:方法、工具和過程。
7.軟件生命周期由軟件定義、軟件開發(fā)和運行維護3個時期組成。軟件定義時期的任務(wù)是:確定軟件開發(fā)的工程必須完成的總目標;確定工程的可行性;導出實現(xiàn)工程目標應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計完成該項工程需要的資源和成本,并且制定工程進度表。這個時期的工作通常又稱為系統(tǒng)分析,有系統(tǒng)分析員負責完成。軟件定義時期通常進一步劃分成3個階段,即問題定義、可行性研究和需求分析。這個時期產(chǎn)生的文檔有可行性研究報告、需求規(guī)格說明書。開發(fā)時期具體設(shè)計和實現(xiàn)在前一個時期定義的軟件,它通常由下述4個階段組成:總體設(shè)計,詳細設(shè)計,編碼和單元測試,綜合測試。其中前兩個階段又稱為系統(tǒng)設(shè)計,后兩個階段又稱為系統(tǒng)實現(xiàn)。這個階段需要的人員為高級技術(shù)人員和初級程序員。產(chǎn)生的文檔有:軟件結(jié)構(gòu)圖,軟件說明書,數(shù)據(jù)庫。維護時期的主要任務(wù)是使軟件持久的滿足用戶的需要。
8.軟件一個生命周期包括:問題定義、可行性研究、需求分析、總體設(shè)計、詳細設(shè)計、編碼和單元測試、綜合測試。
9.軟件維護階段的關(guān)鍵任務(wù)是,通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。通常有4類維護活動:改正性維護,也就是診斷和改正正在使用過程中發(fā)現(xiàn)的軟件錯誤;適應(yīng)性維護,即修改軟件以適應(yīng)環(huán)境的變化;完善性維護,即根據(jù)用戶的要求改進或擴充軟件使它更完善;預(yù)防性維護,即修改軟件,為將來的維護活動預(yù)先做準備。
第二章 可行性研究
1.可行性研究包括以下:技術(shù)可行性、經(jīng)濟可行性、操作可行性、法律可行性。
2.系統(tǒng)流程圖的概括地描繪物理系統(tǒng)的傳統(tǒng)工具。
3.在數(shù)據(jù)流圖中沒有任何具體的物理部件,它只是描繪數(shù)據(jù)在軟件中流動和被處理的邏輯過程。數(shù)據(jù)流圖是系統(tǒng)邏輯功能的圖形表示。
4.數(shù)據(jù)字典有下列元素的定義組成:數(shù)據(jù)流、數(shù)據(jù)流分量(即數(shù)據(jù)元素)、數(shù)據(jù)存儲。
5.成本估計技術(shù)有:代碼行技術(shù)、任務(wù)分解技術(shù)、自動估計成本技術(shù)。