第一篇:軟件工程導論(第6版)
第一章、軟件工程學概述
軟件危機:是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。
軟件危機包含下述兩個方面的問題:1.如何開發(fā)軟件,以滿足對軟件日益增長的需求。
2.如何維護數(shù)量不斷膨脹的已有軟件。
具體的說,軟件危機主要有以下一些典型表現(xiàn):1.對軟件開發(fā)成本的進度的估計常常很不準確。
2.用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經常發(fā)生 3.軟件產品的質量往往靠不住。4.軟件常常是不可維護的。
5.軟件通常沒有適當?shù)奈臋n材料。
6.軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。
7.軟件開發(fā)生產率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢。
軟件生命周期:一個軟件從定義、開發(fā)、使用和維護,知道最終被廢棄,要經歷一個漫長的時期,通常把軟件經歷的這個漫長的時期稱為生命周期。軟件配置:程序、文檔和數(shù)據(jù)。
軟件工程學的一個重要的目標:就是提高軟件的可維護性,減少軟件維護的代價。軟件:是程序、數(shù)據(jù)及相關文檔的集合。
程序:是能夠完成預定功能和性能的可執(zhí)行的指令序列。數(shù)據(jù):是使程序能夠適當?shù)靥幚硇畔⒌臄?shù)據(jù)結構。文檔:是開發(fā)、使用和維護程序所需要的圖文資料。軟件工程:指導計算機軟件開發(fā)和維護的一門工程學科。
軟件工程具有下屬的本質特性:1.軟件工程關注于大型程序的構造。2.軟件工程的中心課題是控制復雜性。3.軟件經常變化。4.開發(fā)軟件的效率非常重要。5.和諧地合作是開發(fā)軟件的關鍵。6.軟件必須有效地支持它的用戶。7.在軟件工程領域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產品。
軟件工程的7條基本原理:1.用分階段的生命周期計劃嚴格管理。2.堅持進行階段評審。3.實行嚴格的產品控制4.采用現(xiàn)代程序設計技術。5.結構應能清楚的審查。6.開發(fā)小組的人員應該少而精。7.承認不斷改進軟件工程實踐的必要性。軟件工程:包括技術和管理兩方面的內容,是技術與管理緊密結合所形成的工程學科。通常把在軟件生命周期全過程中使用的一整套技術方法的集合稱為方法學,也稱為泛型。軟件工程方法學(包括傳統(tǒng)方法學、面向對象方法學)包含三個要素:方法、工具和過程。方法:是完成軟件開發(fā)的各項任務的技術方法,回答“怎樣做”的問題。工具:是為運用方法而提供的自動的或半自動的軟件工程支撐環(huán)境。
工程:是為了獲得高質量的軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。
面向對象方法學:把數(shù)據(jù)和行為看成是同等重要的,它是一種以數(shù)據(jù)為主線,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結合起來的方法。
面向對象方法學具有下述四個要點:1.把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構件。
2.把所有對象都劃分成類。
3.按照父類與子類的關系,把若干個相關類組成一個層次結構的系統(tǒng)。4.對象彼此間僅能通過發(fā)送消息互相聯(lián)系。
面向對象方法學的優(yōu)點:降低了軟件產品的復雜性,提高了軟件的可理解性,簡化了軟件的開發(fā)和維護工作。
軟件生命周期:軟件定義、軟件開發(fā)和運行維護。軟件定義:問題定義、可行性研究和需求分析。軟件開發(fā):總體設計,詳細設計,編碼和單元測試,綜合測試。
1.問題定義:問題定義階段必須回答的關鍵問題是:“要解決的問題是什么?”。
2.可行性研究:這個階段回答的關鍵問題是:“對于上一個階段所確定的問題有行得通的解決辦法嗎?” 3.需求分析:確定目標系統(tǒng)必須具備哪些功能。4.總體設計:這個階段必須回答的關鍵問題是:“概括地說,應該怎樣實現(xiàn)目標系統(tǒng)?”總體設計又稱為概要設計。5.詳細設計:這個階段應回答的關鍵問題是:“應該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”
6.編碼和單元測試:這個階段的關鍵任務是寫出正確的容易理解、容易維護的程序模塊。7.綜合測試:這個階段的關鍵任務是通過各種類型的測試使軟件達到預定的要求。8.軟件維護:關鍵任務是通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。軟件工程過程:是為了獲得高質量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。生命周期模型:規(guī)定了把生命周期劃分成哪些階段及各個階段的執(zhí)行順序,因此,也稱為過程模型。生命周期模型包括:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、瀑布模型的特點:1.階段間具有順序性和依賴性。2.推遲實現(xiàn)的觀點。3.質量保證的觀點。
快速原型:是快速建立起來的可以在計算機上運行的程序,它所能完成的功能往往是最終產品能完成功能的一個子集。
增量模型:它分批地逐步向用戶提交產品,整個軟件產品被分解成許多個增量構件,開發(fā)人員一個構件一個構件地向用戶提交產品。
螺旋模型:基本思想是使用原型及其他方法來盡量降低風險。理解這種模型的一個簡單方法,是把它看作在每個階段之前都增加了風險分析過程的快速原型模型。(使用于內部開發(fā)的大規(guī)模軟件項目)
噴泉模型:是典型的面向對象的軟件過程模型之一。
面向對象方法學的四個要點:
面向對象方法 = 對象 + 類 + 繼承 + 用消息通信
第二章、可行性研究
可行性研究的目的:就是用最小的代價在盡可能短的時間內確定問題是否能夠解決。必須記住,可行性研究的目的不是解決問題,而是確定問題是否值得去解決。
對每種解法都應該仔細研究它的可行性,一般說來,至少應該從下述3個方面研究每種解法的可行性: 1)技術可行性 2)經濟可行性 3)操作可行性
可行性研究最根本的任務:是對以后的行動方針提出建議。
典型的可行性研究有下述一些步驟:1.復查系統(tǒng)規(guī)模和目標。2.研究目前正在使用的系統(tǒng)3.導出新系統(tǒng)的高層邏輯模型 4.進一步定義問題 5.導出和評價供選擇的解法 6.推薦行動方針 7.草擬開發(fā)計劃 8.書寫文檔提交審查。
系統(tǒng)流程圖:是概括性地描繪物理系統(tǒng)的傳統(tǒng)工具,它的基本思想是用圖形符號以黑盒子形式描繪組成系統(tǒng)的每個部件。系統(tǒng)流程圖表達的是數(shù)據(jù)在系統(tǒng)各部件之間流動的情況,而不是對數(shù)據(jù)進行加工處理的控制過程,因此盡管系統(tǒng)流程圖的某些符號和程序流程圖的符號形式相同,但是它卻是物理數(shù)據(jù)流圖而不是程序流程圖。數(shù)據(jù)流圖:是一種圖形化技術,它描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經受的變幻。數(shù)據(jù)存儲是處于靜止狀態(tài)的數(shù)據(jù),數(shù)據(jù)流是處于運動中的數(shù)據(jù)。數(shù)據(jù)流圖的基本要點:是描繪“做什么”,而不考慮“怎么做”。
為數(shù)據(jù)流命名:1)名字應代表整個數(shù)據(jù)流的內容,而不是僅僅反映它的某些成分。
2)不要使用空洞的、缺乏具體含義的名字。
3)如果在為某個數(shù)據(jù)流起名字時遇到了困難,則很可能是因為對數(shù)據(jù)流圖分解不恰當造成的,應該試
試重新分解,看是否能克服這個困難。
畫數(shù)據(jù)流圖的基本目的是利用它作為交流通信的工具。
數(shù)據(jù)字典:是關于數(shù)據(jù)的信息的集合,也就是對數(shù)據(jù)流圖中包含的所有元素的定義的集合。數(shù)據(jù)字典的作用:在軟件分析和設計的過程中給人提供關于數(shù)據(jù)的描述信息。
系統(tǒng)的邏輯模型:由數(shù)據(jù)流圖和數(shù)據(jù)字典共同構成,沒有數(shù)據(jù)字典,數(shù)據(jù)流圖就不嚴格,然而沒有數(shù)據(jù)流圖,數(shù)據(jù)字典也難于發(fā)揮作用。
數(shù)據(jù)字典應該由對下列4類元素的定義組成:數(shù)據(jù)流、數(shù)據(jù)流分量、數(shù)據(jù)存儲和處理。由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有下述3種基本類型:順序、選擇、重復和可選。數(shù)據(jù)字典最主要的用途:就是作為分析階段的工具。
成本/效益分析的目標:正式要從經濟角度分析開發(fā)一個特定的新系統(tǒng)是否劃算,從而幫助客戶組織的負責人正確地做出是否投資于這項開發(fā)工程的決定。
系統(tǒng)流程圖:實質上是物理流程圖,它描繪組成系統(tǒng)的主要物理元素以及信息在這些元素間流動和處理的情況。
第三章、需求分析
需求分析的任務是:準確地回答“系統(tǒng)必須做什么”這個問題。
需求分析方法應遵循的準則:1.必須理解并描述問題的信息域,根據(jù)這條準則應該建立數(shù)據(jù)模型。
2.必須定義軟件應完成的功能,這條準則要求建立功能模型。
3.必須描述作為外部事件結果的軟件行為,這條準則要求建立行為模型。
4.必須對描述信息、功能和行為的模型進行分解,用層次的方式展示細節(jié)。
通常對軟件系統(tǒng)有以下幾方面的綜合要求:1.功能需求 2.性能需求 3.可靠性和可用性需求 4.出錯處理需求 5.接口需求6.約束 7.逆向需求 8.將來可能提出的要求
軟件系統(tǒng)本質上是信息處理系統(tǒng),而任何信息處理系統(tǒng)的基本功能都是把輸入數(shù)據(jù)轉變成需要的輸出信息。需求分析的目標之一:就是把數(shù)據(jù)流和數(shù)據(jù)存儲定義到元素級??焖俳④浖褪亲顪蚀_、最有效、最強大的需求分析技術。
快速原型就是快速建立起來的旨在演示目標系統(tǒng)主要功能的可運行的程序??焖僭蛻摼邆涞奶匦裕?.快速
2.容易修改
模型:就是為了理解事務而對事務做出的一種抽象,是對事務的一種無歧義的書面描述。通常,模型由一組圖形符號和組織這些符號的規(guī)則組成。
需求分析過程應該建立三種模型:數(shù)據(jù)模型(實體-聯(lián)系圖)、功能模型(數(shù)據(jù)流圖)和行為模型(狀態(tài)轉換圖)。概念數(shù)據(jù)模型:是一種面向問題的數(shù)據(jù)模型,是按照用戶的觀點對數(shù)據(jù)建立的模型。它描述了從用戶角度看到的數(shù)據(jù),它反應了用戶的現(xiàn)實環(huán)境,而且與在軟件系統(tǒng)中的實現(xiàn)方法無關。
數(shù)據(jù)模型中包含3中相互關聯(lián)的信息:數(shù)據(jù)對象、數(shù)據(jù)對象的屬性及數(shù)據(jù)對象彼此間相互連接的關系。數(shù)據(jù)對象:是對軟件必須理解的復合信息的抽象。
復合信息:是指具有一系列不同性質或屬性的事物,僅有單個值的事物不是數(shù)據(jù)對象。屬性:定義了數(shù)據(jù)對象的性質。
聯(lián)系:數(shù)據(jù)對象彼此之間相互連接的方式稱為聯(lián)系,也稱為關系。聯(lián)系可分為以下三種類型:一對一,一對多和多對多。
第一范式:每個屬性值都必須是原子值,即僅僅是一個簡單值而不含內部結構。第二范式:滿足第一范式條件,而且每個非關鍵字屬性都由整個關鍵字決定。
第三范式:符合第二范式的條件,每個非關鍵字屬性都僅由關鍵字決定,而且一個非關鍵字屬性不能僅僅是對另一個非關鍵字屬性的進一步描述。
狀態(tài)轉換圖:通過描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉換的事件,來表示系統(tǒng)的行為。
事件:是在某個特定時刻發(fā)生的事情,它是對引起系統(tǒng)做動作或從一個狀態(tài)轉換到另一個狀態(tài)的外界事件的抽象。IPO圖:是輸入、處理、輸出圖的簡稱,能方便地描繪輸入數(shù)據(jù)、對數(shù)據(jù)的處理和輸出數(shù)據(jù)之間的關系。
模塊:在程序中是數(shù)據(jù)說明、可執(zhí)行語句等程序對象的集合,或者是單獨命名和編址的元素,在軟件的體系結構中,模塊是可組合、分解和更換的單元。
第四章、形式化說明技術
按照形式化的程度,可以把軟件工程使用的方法劃分成:非形式化、半形式化和形式化3類
形式化方法:是描述系統(tǒng)性質的基于數(shù)學的技術,也就是說,如果一種方法有堅實的數(shù)學基礎,那么它就是形式化的。矛盾:指一組相互沖突的陳述。
二義性:是指讀者可以用不同方式理解的陳述。
不完整性:可能是在系統(tǒng)規(guī)格說明中最常遇到的問題之一。
形式化規(guī)格說明技術的優(yōu)點:形式化的規(guī)格說明技術可以用數(shù)學方法研究、驗證。此外,形式化的規(guī)格說明消除了二義性,而且它鼓勵軟件開發(fā)工程過程的早期階段使用更嚴格的方法,從而可以減少差錯。
第五章、總體設計
總體設計的基本目的:就是回答“概括地說,系統(tǒng)應該如何實現(xiàn)”這個問題,因此總體設計又稱為概要設計或者初步設計。
總體設計的另一項重要任務是:設計軟件的結構,也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關系。
在詳細設計之前先進行總體設計的必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結構,從中選出最佳方案和最合理的軟件結構,從而用較低成本開發(fā)較高質量的軟件系統(tǒng)。總體設計過程通常由兩個主要階段組成:系統(tǒng)設計階段,確定系統(tǒng)的具體實現(xiàn)方案;結構設計階段,確定軟件結構。
典型的總體設計過程包括下述9個步驟:1.設想供選擇的方案 2.選取合理的方案 3.推薦最佳方案 4.功能分解 5.設計軟件結構 6.設計數(shù)據(jù)庫 7.制定測試計劃 8.書寫文檔 9.審查和復審 模塊:是由邊界元素限定的相鄰程序元素的序列,而且有一個總體標識符代表它。
模塊化:就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來夠成一個整體,可以完成指定的功能滿足用戶的需求。
抽象:抽出事物的本質特性而暫時不考慮它們的細節(jié)。
逐步求精:為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮。
為什么模塊獨立很重要呢?主要有兩條理由:第一,有效的模塊化的軟件比較容易開發(fā)出來。第二,獨立的模塊比較容易測試和維護。
模塊的獨立程度可以由兩個定性標準度量,這兩個標準分別稱為內聚和耦合。
耦合:是對一個軟件結構內不同模塊之間互連程度的度量。耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據(jù)。
數(shù)據(jù)耦合:如果兩個模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù),那么這種耦合稱為數(shù)據(jù)耦合。控制耦合:如果傳遞的信息中有控制信息,則這種耦合稱為控制耦合。
數(shù)據(jù)耦合是低耦合??刂岂詈鲜侵械瘸潭鹊鸟詈希黾恿讼到y(tǒng)的復雜程度。
特征耦合:當把整個數(shù)據(jù)結構作為參數(shù)傳遞而被調用的模塊只需要使用其中一部分數(shù)據(jù)元素時,就出現(xiàn)了特征耦合。最高程度的耦合是內容耦合,如果出現(xiàn)下列情況之一,兩個模塊間就發(fā)生了內容耦合。1.一個模塊訪問另一個模塊的內部數(shù)據(jù)。
2.一個模塊不通過正常入口而轉到另一個模塊的內部。3.兩個模塊有一部分程序代碼重疊。4.一個模塊有多個入口。
應該采用下述設計原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內容耦合。
內聚:標志著一個模塊內各個元素彼此結合的緊密程度,它是信息隱藏和局部化概念的自然擴展。低內聚有如下幾類:
偶然內聚:如果一個模塊完成一組任務,這些任務彼此間即使有關系,關系也是很松散的,就叫做偶然內聚。邏輯內聚:如果一個模塊完成的任務在邏輯上屬于相同或相似的一類,則稱為邏輯內聚。時間內聚:如果一個模塊包含的任務必須在同一段時間內執(zhí)行,就叫時間內聚。中內聚主要有以下兩類:
過程內聚:如果一個模塊內的處理元素時相關的,而且必須以特定次序執(zhí)行,則稱為過程內聚。通信內聚:如果模塊中所有元素都使用同一個輸入數(shù)據(jù)和產生同一個輸出數(shù)據(jù),則稱為通信內聚。高內聚也有兩類:
順序內聚:如果一個模塊內的處理元素和同一個功能密切相關,而且這些處理必須順序執(zhí)行,則稱為順序內聚。
功能內聚:如果模塊內所有處理元素屬于一個整體,完成一個單一的功能,則稱為功能內聚。功能內聚是最高程度的內聚。
面向數(shù)據(jù)流的設計方法的目標:是給出設計軟件結構的一個系統(tǒng)化的途徑。信息流有下述兩種類型:變換流和事務流。
第六章、詳細設計
詳細設計的根本目標:是確定應該怎樣具體地實現(xiàn)所要求的系統(tǒng),也就是說,經過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言書寫的程序。
詳細設計階段的任務還不是具體地編寫程序,而是要設計出程序的“藍圖”,以后程序員將根據(jù)這個“藍圖”寫出實際的程序代碼。
三種基本的控制結構:順序、選擇和循環(huán)。
結構程序設計的經典定義如下所述:“如果一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本控制結構進行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結構化的。”
在設計人機界面的過程中,幾乎總會遇到下述4個問題:系統(tǒng)響應時間、用戶幫助設施、出錯信息處理和命令交互。系統(tǒng)響應時間是指:從用戶完成某個控制動作,到軟件給出預期響應之間的這段時間。系統(tǒng)響應時間有兩個重要屬性:長度和易變。
3類人際界面設計指南:一般交互指南、信息顯示指南和數(shù)據(jù)輸入指南。
描繪程序處理過程的工具稱為過程設計的工具,它們可以分為圖形、表格和語言3類。圖形:程序流程圖、盒圖、PAD圖。表格:判定表、判定樹。語言:過程設計語言。
面向數(shù)據(jù)結構的設計方法的最終目標是:得出對程序處理過程的描述。最著名的兩個面向數(shù)據(jù)結構的設計方法:Jockson和Warnier方法。Jockson方法的邏輯關系包括:順序、選擇和重復。程序復雜度的定量度量:McCabe方法和Halstead方法
McCade方法:根據(jù)程序控制流的復雜程度定量度量程序的復雜程度,這樣度量出的結果稱為程序的環(huán)形復雜度。Halstead方法:是一個著名的方法,它根據(jù)程序中運算符和操作數(shù)的總數(shù)來度量程序的復雜程度。
第七章、實現(xiàn)
通常把編碼和測試統(tǒng)稱為實現(xiàn)。
所謂編碼:就是把軟件設計結果翻譯成用某種程序設計語言書寫的程序。
測試的目的:就是在軟件投入生產性運行之前,盡可能多地發(fā)現(xiàn)軟件中的錯誤。
軟件工程的根本目標:是開發(fā)出高質量的完全符合用戶需要的軟件,因此,通過測試發(fā)現(xiàn)錯誤之后還必須診斷并改正錯誤,這就是調試的目的。
源程序代碼的邏輯簡明清晰、易讀易懂是好程序的一個重要標準,為了做到這一點,應該遵循下列規(guī)則:
1.程序內部的文檔 2.數(shù)據(jù)說明 3.語句構造 4.輸入輸出 5.效率
程序內部的文檔:包括恰當?shù)臉俗R符、適當?shù)淖⒔夂统绦虻囊曈X組織等。效率:主要指處理機時間和存儲器容量兩個方面。
測試階段的根本目標是:盡可能多地發(fā)現(xiàn)并排除軟件中潛藏的錯誤,最終把一個高質量的軟件系統(tǒng)交給用戶使用。軟件的目標或定義:
1)測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。
2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案。3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。測試的正確定義是“為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程”。軟件測試的準則:
1)所有測試都應該能追溯到用戶需求。
2)應該遠在測試開始之前就制定出測試計劃。3)把Pareto原理應用到軟件測試中。
4)應該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)?!睖y試。5)窮舉測試是不可能的。
6)為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。測試任何產品都有兩種方法:
黑盒測試(功能測試,在測試過程的早期進行):如果已經知道了產品應該具有的功能,可以通過測試來檢查是否每個功能都能正常使用。
白盒測試(結構測試,主要用于測試過程的后期):如果知道產品的內部工作過程,可以通過測試來檢驗產品內部動作是否按照規(guī)格說明書的規(guī)定正常進行。
設計白盒測試方案的技術主要有,邏輯覆蓋和控制結構測試;設計黑盒測試方案的技術主要有,等價劃分、邊界值分析和錯誤推測。
大型軟件系統(tǒng)的測試過程基本上由下述幾個步驟組成:
1.模塊測試:模塊測試的目的是保證每個模塊作為一個單元能正確運行,所以模塊測試通常又稱為單元測試。2.子系統(tǒng)測試:子系統(tǒng)測試是把經過單元測試的模塊放在一起形成一個子系統(tǒng)來測試。模塊相互間的協(xié)調和通信是這個測試過程中的主要問題,因此,這個步驟著重測試模塊的接口。3.系統(tǒng)測試:是把經過測試的子系統(tǒng)裝配成一個完整的系統(tǒng)來測試。
4.驗收測試:把軟件系統(tǒng)作為單一的實體進行測試,測試內容與系統(tǒng)測試基本類似,但是它是用戶積極參與下進行的,而且可能主要使用實際數(shù)據(jù)進行測試。驗收測試的目的是驗證系統(tǒng)確實能夠滿足用戶的需要,在這個測試步驟中發(fā)現(xiàn)的往往是系統(tǒng)需求說明書的錯誤。驗收測試也稱為確認測試。
5.平行運行:就是同時運行新開發(fā)出來的系統(tǒng)和將被它取代的舊系統(tǒng),以便比較新舊兩個系統(tǒng)的處理結果。單元測試集中檢測軟件設計的最小單元——模塊。
可以應用人工測試和計算機測試這樣兩種不同類型的測試方法,完成單元測試工作。通常,單元測試主要使用白盒測試技術,而且對多個模塊的測試可以并行地進行。在單元測試期間著重從下述5個方面對模塊進行測試:
1)模塊接口
2)局部數(shù)據(jù)結構
3)重要的執(zhí)行通路
4)出錯處理通路
5)邊界條件 集成測試:是測試和組裝軟件的系統(tǒng)化技術,主要目標是發(fā)現(xiàn)與接口有關的問題。由模塊組裝成程序時有兩種方法:
1)非漸增式測試方法:先分別測試每個模塊,再把所有模塊按設計要求放在一起結合成所要的程序。
2)漸增式測試:把下一個要測試的模塊同已經測試好的那些模塊結合起來進行測試,測試完以后再把下一個應該測試的模塊結合進來測試。
當使用漸增方式把模塊結合到程序中去時,有自頂向下和自底向上兩種集成策略。
回歸測試:是指重新執(zhí)行已經做過的測試的某個子集,以保證上述這些變化沒有帶來非預期的副作用。
回歸測試就是用于保證由于調試或其他原因引起的變化,不會導致非預期的軟件行為或額外錯誤的測試活動。確認測試也稱為驗收測試,它的目標是驗證軟件的有效性。
通常,驗證指的是保證軟件正確地實現(xiàn)了某個特定要求的一系列活動,而確認指的是為了保證軟件確實滿足了用戶需求而進行的一系列活動。
軟件有效性的一個簡單定義是:如果軟件的功能和性能如同用戶所合理期待的那樣,軟件就是有效的。
需求分析階段產生的軟件需求規(guī)格說明書,準確地描述了用戶對軟件的合理期望,因此是軟件有效性的標準,也是進行確認測試的基礎。
確認測試通常使用黑盒測試法。
復查的目的是:保證軟件配置的所有成分都齊全,質量符合要求,文檔與程序完全一致,具有完成軟件維護所必須的細節(jié),而且已經編好目錄。
測試用例:把測試數(shù)據(jù)和預期的輸出結果稱為測試用例。
一般說來,有下列3種調試途徑可以采用:1.蠻干法
2.回溯法
3.原因排除法 測試的根本目標是:消除錯誤,保證軟件的可靠性。
軟件的可靠性是:程序在給定的時間間隔內,按照規(guī)格說明書的規(guī)定成功地運行的概率。
軟件可用性的一個定義是:軟件可用性是程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功地運行的概率。
第八章、維護
維護階段的基本任務是:保證軟件在一個相當長的時期能夠正常運行。
軟件工程的主要目的:就是要提高軟件的可維護性,減少軟件維護所需要的工作量,降低軟件系統(tǒng)的總成本。軟件維護:就是在軟件已經交付使用之后,為了改正錯誤或滿足新的需要而修改軟件的過程。改正性維護:為了糾正在使用過程中暴露出來的錯誤。適應性維護:為了適應外部環(huán)境的變化。完善性維護:為了改進原有的軟件。
預防性維護:為了改進將來的可維護性和可靠性。它實質上是軟件再工程。
可以把軟件的可維護性定性的定義為:維護人員理解、改正、改動或改進這個軟件的難易程度。決定軟件可維護性的因素主要有下述5個:可理解性、可測試性、可修改性、可移植性和可重用性。文檔是影響軟件可維護性的決定因素。
文檔類型:1.用戶文檔,主要描述系統(tǒng)功能和使用方法,并不關心這些功能是怎樣實現(xiàn)的 2.系統(tǒng)文檔,描述系統(tǒng)設計、實現(xiàn)和測試等各方面的內容??偟貋碚f,軟件文檔應該滿足下述要求:
1)必須描述如何使用這個系統(tǒng),沒有這種描述時即使是最簡單的系統(tǒng)也無法使用。2)必須描述怎樣安裝和管理這個系統(tǒng)。3)必須描述系統(tǒng)需求和設計。
4)必須描述系統(tǒng)的實現(xiàn)和測試,以便使系統(tǒng)稱為可維護的。用戶文檔應該至少包括下述5個方面的內容:
1.功能描述 2.安裝文檔 3.使用手冊 4.參考手冊 5.操作員指南 下述3類活動有可能成為預防性維護的對象: 1.預定將使用多年的程序 2.當前正在成功地使用著的程序 3.在最近的將來可能要做重大修改或增強的程序。
典型的軟件再工程過程模型定義了庫存目錄分析、文檔重構、逆向工程、代碼重構、數(shù)據(jù)重構和正向工程6類活動。
第九章、面向對象方法學引論
人們把客觀世界中的實體抽象為問題域中的對象。
與傳統(tǒng)的方法相反,面向對象方法是一種以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理相結合的方法。面向對象方法把對象作為由數(shù)據(jù)及可以施加在這些數(shù)據(jù)上的操作所構成的統(tǒng)一體。
面向對象 = 對象 + 類 + 繼承 + 對象之間僅能通過傳遞消息實現(xiàn)彼此通信
面向對象方法學的優(yōu)點:1.與人類習慣的思維方法一致.穩(wěn)定性好
3.可重用性好
4.較易開發(fā)大型軟件產品
5.可
維護性好。
面向對象的設計方法的基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。
面向對象方法學的基本原則是:按照人類習慣的思維方法建立問題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方
法的軟件系統(tǒng)。
對象是對問題域中某個實體的抽象,設立某個對象就反映了軟件系統(tǒng)具有保存有關的信息并且與它進行交互的能力。對象:是封裝了數(shù)據(jù)結構及可以施加在這些數(shù)據(jù)結構上的操作的封裝體,這個封裝體有可以唯一地標識它的名字,而且向外界提供一組服務。對象有如下一些基本特點:
1.以數(shù)據(jù)為中心 2.對象是主動的 3.實現(xiàn)了數(shù)據(jù)封裝 4.本質上具有并行性 5.模塊獨立性好
類:是對具有相同屬性和行為的一個或多個對象的描述,通常在這種描述中也包括對怎樣創(chuàng)建該類的新對象的說明。類是支持繼承的抽象數(shù)據(jù)類型,而對象就是類的實例。實例就是由某個特定的類所描述的一個具體的對象。
類是具有相同屬性和行為的一組相似的對象的抽象,類在現(xiàn)實世界中并不能真正存在。消息:就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。
通常,一個消息由下述3部分組成:1.接收消息的對象
2.消息選擇符
3.零個或多個變元 方法:就是對象所能執(zhí)行的操作,也就是類中所定義的服務。
屬性:就是類中所定義的數(shù)據(jù),它是對客觀世界實體所具有的性質的抽象。封裝:就是把某個事物包起來,使外界不知道該事物的具體內容。
對象具有封裝性的條件如下:1.有一個清晰的邊界
2.有確定的接口
3.受保護的內部實現(xiàn)
繼承:是指能夠直接獲得已有的性質和特征,而不必重復定義它們。在面向對象的軟件技術中,繼承是子類自動地共享基類中定義的數(shù)據(jù)和方法的機制。
多態(tài)性:是指子類對象可以像父類對象那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象。
動態(tài)聯(lián)編:虛函數(shù)機制使得程序員能在一個類等級中使用相同函數(shù)的多個不同版本,在運行時刻才根據(jù)接收消息的對象所屬于的類,決定到底執(zhí)行哪個特定的版本,這稱為動態(tài)聯(lián)編,也叫滯后聯(lián)編。
函數(shù)重載:是指在同一作用域內的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。運算符重載:是指同一個遠算符可以施加于不同類型的操作數(shù)上面。
模型:就是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。建模的目的主要是為了減少復雜性。
用面向對象方法開發(fā)軟件,通常需要建立3種形式的模型,它們分別是描述系統(tǒng)數(shù)據(jù)結構的對象模型,描述系統(tǒng)控制結構的動態(tài)模型和描述系統(tǒng)功能的功能模型。對象模型始終都是最重要、最基本、最核心的。
為類命名時應該遵守以下幾條準則:1.使用標準屬于 2.使用具有確切含義的名詞 3.必要時用名詞短語做名字 動態(tài)模型:表示瞬時的、行為化的系統(tǒng)的“控制”性質,它規(guī)定了對象模型中的對象的合法變化序列。所謂狀態(tài),是對對象屬性值的一種抽象。
功能模型:表示變化的系統(tǒng)的“功能”性質,它指明了系統(tǒng)應該“做什么”,因此更直接地反映了用戶對目標系統(tǒng)的需求。
功能模型指明了系統(tǒng)應該“做什么”;動態(tài)模型明確規(guī)定了什么時候做;對象模型則定義了做事情的實體。
統(tǒng)一建模語言UML是國際對象管理組織OMG批準的基于面向對象技術的標準建模語言。通常,使用UML的類圖來建立對象模型,使用UML的狀態(tài)圖來建立動態(tài)模型,使用數(shù)據(jù)流圖或UML的用例圖來建立功能模型。
第九章、面向對象分析
分析就是提取系統(tǒng)需求并建立問題域精確模型的過程,它包括理解、表達和驗證3項主要工作內容。
分析過程得出的最重要的文檔資料是軟件需求規(guī)格說明(在面向對象分析中,主要由對象模型、動態(tài)模型和功能模型組成)。
面向對象分析:就是抽取和整理用戶需求并建立問題域精確模型的過程。
面向對象建模得到的模型包含系統(tǒng)的3個要素:即靜態(tài)結構(對象模型)、交互次序(動態(tài)模型)和數(shù)據(jù)變換(功能模型)。
復雜問題的對象模型通常由下述5個層次組成:主體層、類與對象層、結構層、屬性層和服務層。
上述5個層次對應著在面向對象分析過程中建立對戲那個模型的5項主要活動:找出類與對象,識別結構,識別主題,定義屬性,定義服務。
在概念上可以認為,面向對象分析大體上按照下列順序進行:尋找類與對象,識別結構,識別主題,定義屬性,建立動態(tài)模型,建立功能模型,定義服務。
需求陳述應該闡明“做什么”而不是“怎樣做”。它應該描述用戶的需求而不是提出解決問題的方法。絕大多數(shù)需求陳述都是有二義性的、不完整的、甚至不一致的。
對象模型描述了現(xiàn)實世界中的“類與對象”以及它們之間的關系,表示了目標系統(tǒng)的靜態(tài)結構。對象是對問題域中有意義的事物的抽象,它們既可能是物理實體,也可能是抽象概念。關聯(lián):兩個或多個對象之間的相互依賴、相互作用的關系就是關聯(lián)。一般說來,可以使用兩種方式建立繼承關系:
1)自底向上:抽象出現(xiàn)有類的共同性質泛化出父類,這個過程實質上模擬了人類歸納思維過程。2)自頂向下:把現(xiàn)有類細化成更具體的子類,這模擬了人類的演繹思維過程。建立動態(tài)模型:
第一步,是編寫典型交互行為的腳本。
第二步,從腳本中提取出事件,確定觸發(fā)每個事件的動作對象以及接受時間的目標對象。
第三步,排列事件發(fā)生的次序,確定每個對象可能有的狀態(tài)及狀態(tài)間的轉換關系,并用狀態(tài)圖描繪它們。最后,比較各個對象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。腳本:是指系統(tǒng)在某一執(zhí)行期間內出現(xiàn)的一系列事件。
編寫腳本的目的:是保證不遺漏重要的交互步驟,它有助于確保整個交互過程的正確性和清晰性。
功能模型:表明了系統(tǒng)中數(shù)據(jù)之間的依賴關系,以及有關的數(shù)據(jù)處理功能,它由一組數(shù)據(jù)流圖組成。其中的處理功能可以用IPO圖(或表)、偽碼等多種方式進一步描述。通常在建立了對象模型和動態(tài)模型之后再建立功能模型。
第十一章、面向對象的設計
設計則是把分析階段得到的需求轉變成符合成本和質量要求的、抽象的系統(tǒng)實現(xiàn)方案的過程。面向對象的設計就是用面向對象觀點建立求解域模型的過程??梢园衙嫦驅ο笤O計再細分為系統(tǒng)設計和對象設計。系統(tǒng)設計:確定實現(xiàn)系統(tǒng)的策略和目標系統(tǒng)的高層結構。
對象設計:確定解空間中的類、關聯(lián)、接口形成及實現(xiàn)服務的算法。
面向對象設計的準則:模塊化、抽象、信息隱藏、弱耦合、強內聚、可重用。
耦合:是指一個軟件結構內不同模塊之間互連的緊密程度。包括交互耦合和繼承耦合。
內聚:衡量一個模塊內各個元素彼此結合的緊密程度。包括服務內聚、類內聚、一般-特殊內聚。軟件重用:是提高軟件開發(fā)生產率和目標系統(tǒng)質量的重要途徑。
重用有兩方面的含義:一是盡量使用已有的類,二是如果確定需要創(chuàng)建新類,則在設計這些新類的協(xié)議時,應該考慮將來的可重復使用性。
重用也叫再用或復用,是指同一事物不做修改或稍加改動就多次重復使用。
廣義地說,軟件重用可分為以下3個層次:1)知識重用
2)方法和標準的重用
3)軟件成分的重用 軟件成分的重用級別:1.代碼重用
2.設計結果重用 3.分析結果重用
類構件:面向對象技術中的“類”,是比較理想的可重用軟構件,稱為類構件。可重用軟構件應該具備的特點:1.模塊獨立性強
2.具有高度可塑性
3.接口清晰、簡明、可靠 類構件的重用方式:1.實例重用
2.繼承重用
3.多態(tài)重用
大多數(shù)系統(tǒng)的面向對象設計模型,在邏輯上都由4大部分組成。這4大部分對應于組成目標系統(tǒng)的4個子系統(tǒng),它們分別是問題域子系統(tǒng)、人機交互子系統(tǒng)、任務管理子系統(tǒng)和數(shù)據(jù)管理子系統(tǒng)。
在軟件系統(tǒng)中,子系統(tǒng)之間的交互有兩種可能的方式,分別是客戶-供應商關系(應盡量使用)和平等伙伴關系。把子系統(tǒng)組織成完整的系統(tǒng)時,有水平層次組織(封閉式和開放式)和垂直塊組織兩種方案可供選擇。
設計任務管理子系統(tǒng)時常見的任務有:事件驅動型任務、時鐘驅動型任務、優(yōu)先任務、關鍵任務和協(xié)調任務。
數(shù)據(jù)管理子系統(tǒng):是系統(tǒng)存儲或檢索對象的基本設施,它建立在某種數(shù)據(jù)存儲管理系統(tǒng)之上,并且隔離了數(shù)據(jù)存儲管理模式的影響。
數(shù)據(jù)存儲管理模式:1.文件管理系統(tǒng):是操作系統(tǒng)的一個組成部分,使用它長期保存數(shù)據(jù)具有成本低和簡單等特點。
2.關系數(shù)據(jù)庫管理系統(tǒng),優(yōu)點:1)提供了各種最基本的數(shù)據(jù)管理功能。
2)為多種應用提供了一致的接口。
3)標準化的語言。
3.面向對象的數(shù)據(jù)庫管理系統(tǒng)。
第十二章、面向對象實現(xiàn)
面向對象的實現(xiàn)主要包括兩項工作:把面向對象設計結果翻譯成用某種程序語言書寫的面向對象程序;測試并調試面向對象的程序。
面向對象測試的目標:也是用盡可能低的測試成本發(fā)現(xiàn)盡可能多的軟件錯誤。
面向對象語言的技術特點:1.支持類與對象概念的機制 2.實現(xiàn)整體-部分結構的機制 3.實現(xiàn)一般-特殊結構的機制 4.實現(xiàn)屬性和服務的機制(動態(tài)聯(lián)編)5.類型檢查 6類庫 7.效率 8.持久保存對象 9.參數(shù)化類 10.開發(fā)環(huán)境
所謂動態(tài)聯(lián)編:是指應用系統(tǒng)在運行過程中,當需要執(zhí)行一個特定服務的時候,選擇實現(xiàn)該服務的適當算法的能力。為適應面向對象方法所特有的概念而必須遵循的一些新準則:提高可重用性、提高可擴充性、提高健壯性。測試軟件的經典策略是,從“小型測試”開始,逐步過渡到“大型測試”。測試策略:面向對象的單元測試、面向對象的集成測試、面向對象的確認測試。
第十三章、軟件項目管理
度量軟件規(guī)模的常用技術主要有:代碼行技術和功能點技術。根據(jù)軟件規(guī)??梢怨浪愠鐾瓿稍擁椖克璧墓ぷ髁浚S玫墓浪隳P蜑殪o態(tài)單變量模型、動態(tài)多變量模型和COCOMO2模型。
軟件質量保證措施主要有基于非執(zhí)行的測試、基于執(zhí)行的測試和程序正確性證明。
軟件配置管理是應用于整個軟件過程中的保護性活動,是在軟件整個生命期內管理變化的一組活動。
軟件配置管理的目的是,使變化能夠更正確且更容易被適應,在需要修改軟件時減少為此而花費的工作量。
第二篇:《軟件工程導論》講稿
《軟件工程導論》講稿
主講教師:楊懷洲 郵箱:hzyang@xsyu.edu.cn
電話:***
第1章 軟件工程學概述
1.1軟件危機
1.1.1軟件危機的介紹 1.1.2產生軟件危機的原因
圖1.1引入同一變動付出的代價隨時間變化的趨勢
1.1.3消除軟件危機的途徑
1.2軟件工程
1.2.1軟件工程的介紹
1.軟件工程關注于大型程序的構造 2.軟件工程的中心課題是控制復雜性 3.軟件經常變化
4.開發(fā)軟件的效率非常重要 5.和諧地合作是開發(fā)軟件的關鍵 6.軟件必須有效地支持它的用戶
7.在軟件工程領域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產品
1.2.2軟件工程的基本原理
1.用分階段的生命周期計劃嚴格管理 2.堅持進行階段評審 3.實行嚴格的產品控制 4.采用現(xiàn)代程序設計技術 5.結果應能清楚地審查
6.開發(fā)小組的人員應該少而精
7.承認不斷改進軟件工程實踐的必要性
1.2.3軟件工程方法學
1.傳統(tǒng)方法學 2.面向對象方法學
1.3軟件生命周期
1.問題定義 2.可行性研究 3.需求分析 4.總體設計 5.詳細設計
6.編碼和單元測試 7.綜合測試 8.軟件維護
1.4軟件過程
1.4.1瀑布模型
圖1.2傳統(tǒng)的瀑布模型
1.階段間具有順序性和依賴性 2.推遲實現(xiàn)的觀點 3.質量保證的觀點
圖1.3實際的瀑布模型
1.4.2快速原型模型
圖1.4快速原型模型 1.4.3增量模型
圖1.5增量模型
圖1.6風險更大的增量模型
1.4.4螺旋模型
圖1.7簡化的螺旋模型
圖1.8完整的螺旋模型
1.4.5噴泉模型
圖1.9噴泉模型 1.4.6 Rational統(tǒng)一過程
1.最佳實踐
2.RUP軟件開發(fā)生命周期
圖1.10 RUP軟件開發(fā)生命周期
1.4.7敏捷過程與極限編程
1.敏捷過程 2.極限編程
圖1.11 XP項目的整體開發(fā)過程
圖1.12 XP迭代開發(fā)過程
1.4.8微軟過程
1.微軟過程準則 2.微軟軟件生命周期
圖1.13微軟軟件生命周期階段劃分和主要里程碑
3.微軟過程模型
圖1.14微軟過程的生命周期模型
第2章 可行性研究
2.1可行性研究的任務 2.2可行性研究過程
1.復查系統(tǒng)規(guī)模和目標 2.研究目前正在使用的系統(tǒng) 3.導出新系統(tǒng)的高層邏輯模型 4.進一步定義問題
5.導出和評價供選擇的解法 6.推薦行動方針 7.草擬開發(fā)計劃 8.書寫文檔提交審查
2.3系統(tǒng)流程圖
2.3.1符號 2.3.2例子
圖2.1基本符號
圖2.2系統(tǒng)符號
圖2.3庫存清單系統(tǒng)的系統(tǒng)流程圖 2.3.3分層
2.4數(shù)據(jù)流圖
2.4.1符號
圖2.4數(shù)據(jù)流圖的符號 2.4.2例子
圖2.5定貨系統(tǒng)的基本系統(tǒng)模型
圖2.6定貨系統(tǒng)的功能級數(shù)據(jù)流圖
圖2.7把處理事務的功能進一步分解后的數(shù)據(jù)流圖 2.4.3命名
1.為數(shù)據(jù)流(或數(shù)據(jù)存儲)命名 2.為處理命名
2.4.4用途
圖2.8這種劃分自動化邊界的方法暗示以
圖2.9另一種劃分自動化邊界的方法建議 2.5數(shù)據(jù)字典
2.5.1數(shù)據(jù)字典的內容
2.5.2定義數(shù)據(jù)的方法 2.5.3數(shù)據(jù)字典的用途
2.5.4數(shù)據(jù)字典的實現(xiàn)
2.6成本/效益分析
2.6.1成本估計
1.代碼行技術 2.任務分解技術
3.自動估計成本技術
2.6.2成本/效益分析的方法
1.貨幣的時間價值
2.投資回收期 3.純收入 4.投資回收率
第3章 需求分析
3.1需求分析的任務
3.1.1確定對系統(tǒng)的綜合要求
1.功能需求 2.性能需求
3.可靠性和可用性需求 4.出錯處理需求 5.接口需求 6.約束 7.逆向需求
8.將來可能提出的要求
3.1.2分析系統(tǒng)的數(shù)據(jù)要求 3.1.3導出系統(tǒng)的邏輯模型 3.1.4修正系統(tǒng)開發(fā)計劃
3.2與用戶溝通獲取需求的方法
3.2.1訪談
3.2.2面向數(shù)據(jù)流自頂向下求精
圖3.1面向數(shù)據(jù)流自頂向下求精過程 3.2.3簡易的應用規(guī)格說明技術 3.2.4快速建立軟件原型
3.3分析建模與規(guī)格說明
3.3.1分析建模 3.3.2軟件需求規(guī)格說明
3.4實體聯(lián)系圖
3.4.1數(shù)據(jù)對象 3.4.2屬性 3.4.3聯(lián)系
圖3.2某校教學管理ER圖 3.4.4實體聯(lián)系圖的符號
3.5數(shù)據(jù)規(guī)范化
3.6狀態(tài)轉換圖
3.6.1狀態(tài)
3.6.2事件
3.6.3符號
圖3.3狀態(tài)圖中使用的主要符號
3.6.4例子
圖3.4電話系統(tǒng)的狀態(tài)圖 3.7其他圖形工具
3.7.1層次方框圖
圖3.5層次方框圖的一個例子
3.7.2 Warnier圖
圖3.6 Warnier圖的一個例子
3.7.3 IPO圖
圖3.7 IPO圖的一個例子
圖3.8改進的IPO圖的形式
3.8驗證軟件需求
3.8.1從哪些方面驗證軟件需求的正確性 3.8.2驗證軟件需求的方法
1.驗證需求的一致性 2.驗證需求的現(xiàn)實性
3.驗證需求的完整性和有效性
3.8.3用于需求分析的軟件工具 第4章 形式化說明技術
4.1概述
4.1.1非形式化方法的缺點 4.1.2形式化方法的優(yōu)點 4.1.3應用形式化方法的準則
4.2有窮狀態(tài)機
4.2.1概念
圖4.1保險箱的狀態(tài)轉換圖
4.2.2例子
圖4.2電梯按鈕的狀態(tài)轉換圖
圖4.3樓層按鈕的狀態(tài)轉換圖
圖4.4電梯的狀態(tài)轉換圖
4.2.3評價
4.3 Petri網(wǎng)
4.3.1概念
圖4.5 Petri網(wǎng)的組成
圖4.6帶標記的Petri網(wǎng)
4.3.2例子
1.電梯按鈕
2.樓層按鈕
圖4.7圖4.6的Petri網(wǎng)在轉換t1被激發(fā)后的情況
圖4.8圖4.7的Petri網(wǎng)在轉換t2被激發(fā)后的情況
圖4.9含禁止線的Petri網(wǎng)
圖4.10 Petri網(wǎng)表示的電梯按鈕
4.4 Z語言4.4.1簡介
1.給定的集合 2.狀態(tài)定義
3.初始狀態(tài) 4.操作
圖4.11Petri網(wǎng)表示樓層按鈕
圖4.12Z格S的格式
圖4.13Z格Button_State
圖4.14操作Push_Button的Z規(guī)格說明
圖4.15操作Floor_Arrival的Z規(guī)格說明
4.4.2評價
第5章 總體設計
5.1設計過程
1.設想供選擇的方案 2.選取合理的方案 3.推薦最佳方案 4.功能分解 5.設計軟件結構 6.設計數(shù)據(jù)庫 7.制定測試計劃 8.書寫文檔 9.審查和復審
5.2設計原理
5.2.1模塊化
圖5.1模塊化和軟件成本
5.2.2抽象 5.2.3逐步求精 5.2.4信息隱藏和局部化 5.2.5模塊獨立
1.耦合 2.內聚
5.3啟發(fā)規(guī)則
1.改進軟件結構提高模塊獨立性 2.模塊規(guī)模應該適中
3.深度、寬度、扇出和扇入都應適當 4.模塊的作用域應該在控制域之內
圖5.2模塊的作用域和控制域
5.力爭降低模塊接口的復雜程度 6.設計單入口單出口的模塊 7.模塊功能應該可以預測
5.4描繪軟件結構的圖形工具
5.4.1層次圖和HIPO圖
圖5.3正文加工系統(tǒng)的層次圖
圖5.4帶編號的層次圖(H圖)5.4.2結構圖
圖5.5結構圖的例子——產生最佳解的一般結構
圖5.6判定為真時調用A,為假時調用B
圖5.7模塊M循環(huán)調用模塊A、B、C 5.5面向數(shù)據(jù)流的設計方法
5.5.1概念
1.變換流 2.事務流
3.設計過程
圖5.8變換流
圖5.9事務流
圖5.10面向數(shù)據(jù)流方法的設計過程
5.5.2變換分析
1.例子 2.設計步驟
圖5.11數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖
圖5.12具有邊界的數(shù)據(jù)流圖
圖5.13第一級分解的方法
圖5.14數(shù)字儀表板系統(tǒng)的第一級分解
圖5.15第二級分解的方法
圖5.16未經精化的輸入結構
圖5.17未經精化的變換結構
圖5.18未經精化的輸出結構
圖5.19精化后的數(shù)字儀表板系統(tǒng)的軟件結構
5.5.3事務分析
圖5.20事務分析的映射方法
5.5.4設計優(yōu)化
第6章 詳細設計
6.1結構程序設計
圖6.1 3種基本的控制結構
圖6.2其他常用的控制結構
6.2人機界面設計
6.2.1設計問題
1.系統(tǒng)響應時間 2.用戶幫助設施 3.出錯信息處理 4.命令交互 6.2.2設計過程 6.2.3人機界面設計指南
1.一般交互指南 2.信息顯示指南 3.數(shù)據(jù)輸入指南
6.3過程設計的工具
6.3.1程序流程圖 6.3.2盒圖
圖6.3程序流程圖中使用的符號
圖6.4盒圖的基本符號
6.3.3PAD圖
圖6.5PAD圖的基本符號
圖6.6使用PAD圖提供的定義功能來逐步求精的例子 6.3.4判定表
6.3.5判定樹 6.3.6過程設計語言
圖6.7用判定樹表示計算行李費的算法 6.4面向數(shù)據(jù)結構的設計方法
6.4.1Jackson圖
1.順序結構 2.選擇結構
圖6.8A由B、C、D 3個元素順序組成
圖6.9根據(jù)條件A是B或C或D中的某一個
3.重復結構
圖6.10A由B出現(xiàn)N次(N≥0)組成
6.4.2改進的Jackson圖
圖6.11改進的Jackson圖 6.4.3Jackson方法
圖6.12表示輸入輸出數(shù)據(jù)結構的Jackson圖
圖6.13描繪統(tǒng)計空格程序結構的Jackson圖
圖6.14把操作和條件分配到程序結構圖的適當位置
6.5程序復雜程度的定量度量
6.5.1McCabe方法
1.流圖
圖6.15把程序流程圖映射成流圖
圖6.16由PDL翻譯成的流圖
圖6.17由包含復合條件的PDL映射成的流圖
2.計算環(huán)形復雜度的方法 3.環(huán)形復雜度的用途
6.5.2 Halstead方法
6.6小結
第7章 實現(xiàn)
7.1編碼
7.1.1選擇程序設計語言 7.1.2編碼風格
1.程序內部的文檔 2.數(shù)據(jù)說明 3.語句構造 4.輸入輸出 5.效率
7.2軟件測試基礎
7.2.1軟件測試的目標 7.2.2軟件測試準則 7.2.3測試方法 7.2.4測試步驟
1.模塊測試 2.子系統(tǒng)測試 3.系統(tǒng)測試 4.驗收測試 5.平行運行 7.2.5測試階段的信息流
圖7.1測試階段的信息流
7.3單元測試
7.3.1測試重點
1.模塊接口 2.局部數(shù)據(jù)結構 3.重要的執(zhí)行通路 4.出錯處理通路 5.邊界條件
7.3.2代碼審查 7.3.3計算機測試
圖7.2正文加工系統(tǒng)的層次圖 7.4集成測試
7.4.1自頂向下集成
圖7.3自頂向下結合
7.4.2自底向上集成
圖7.4自底向上結合 7.4.3不同集成測試策略的比較 7.4.4回歸測試
7.5確認測試
7.5.1確認測試的范圍 7.5.2軟件配置復查 7.5.3Alpha和Beta測試
7.6白盒測試技術
7.6.1邏輯覆蓋
1.語句覆蓋
圖7.5被測試模塊的流程圖
2.判定覆蓋 3.條件覆蓋
4.判定/條件覆蓋 5.條件組合覆蓋 6.點覆蓋 7.邊覆蓋 8.路徑覆蓋 7.6.2控制結構測試
1.基本路徑測試
圖7.6求平均值過程的流圖
2.條件測試 3.循環(huán)測試
圖7.73種循環(huán) 7.7黑盒測試技術
7.7.1等價劃分
7.7.2邊界值分析 7.7.3錯誤推測
7.8調試 7.8.1調試過程
圖7.8調試過程
7.8.2調試途徑
1.蠻干法 2.回溯法 3.原因排除法
7.9軟件可靠性
7.9.1基本概念
1.軟件可靠性的定義 2.軟件的可用性
7.9.2估算平均無故障時間的方法
1.符號 2.基本假定
3.估算平均無故障時間 4.估計錯誤總數(shù)的方法
第8章 維護
8.1軟件維護的定義 8.2軟件維護的特點
8.2.1結構化維護與非結構化維護差別巨大
1.非結構化維護 2.結構化維護
8.2.2維護的代價高昂 8.2.3維護的問題很多
8.3軟件維護過程
1.維護組織 2.維護報告 3.維護的事件流
圖8.1維護階段的事件流
4.保存維護記錄 5.評價維護活動
8.4軟件的可維護性
8.4.1決定軟件可維護性的因素
1.可理解性
2.可測試性
3.可修改性
4.可移植性
5.可重用性
8.4.2文檔
1.用戶文檔 2.系統(tǒng)文檔
8.4.3可維護性復審
8.5預防性維護 8.6軟件再工程過程
圖8.2軟件再工程過程模型
1.庫存目錄分析 2.文檔重構 3.逆向工程 4.代碼重構 5.數(shù)據(jù)重構 6.正向工程 第9章 面向對象方法學引論
9.1面向對象方法學概述
9.1.1面向對象方法學的要點 9.1.2面向對象方法學的優(yōu)點
1.與人類習慣的思維方法一致 2.穩(wěn)定性好 3.可重用性好
4.較易開發(fā)大型軟件產品 5.可維護性好
9.2面向對象的概念
9.2.1對象
1.對象的形象表示
圖9.1對象的形象表示
2.對象的定義
圖9.2用自動機模擬對象
3.對象的特點 9.2.2其他概念
1.類(class)2.實例(instance)3.消息(message)4.方法(method)5.屬性(attribute)6.封裝(encapsulation)7.繼承(inheritance)
圖9.3實現(xiàn)繼承機制的原理
8.多態(tài)性(polymorphism)9.重載(overloading)9.3面向對象建模 9.4對象模型
9.4.1類圖的基本符號
1.定義類
圖9.4表示類的圖形符號
2.定義屬性 3.定義服務
9.4.2表示關系的符號
1.關聯(lián)
圖9.5普通關聯(lián)示例
第三篇:卷-軟件工程導論
21.系統(tǒng)流程圖是描述物理模型的傳統(tǒng)工具,用圖形符號表示系統(tǒng)中各個元素表達了系統(tǒng)中各種元素之間的(信息流動)情況。
[解析]系統(tǒng)流程圖是描述物理系統(tǒng)的傳統(tǒng)工具,用圖形符號表示系統(tǒng)中的各個元素,如人工處理、數(shù)據(jù)處理、數(shù)據(jù)庫、文件、設備等,表達了元素之間的信息流動的情況。22.成本效益分析的目的是從(經濟)角度評價開發(fā)一個項目是否可行。[解析]成本效益分析首先是估算將要開發(fā)的系統(tǒng)的開發(fā)成本,然后與可能取得的效益進行比較和權衡,其目的是從經濟角度評價開發(fā)一個新的軟件項目是否可行。
23.自頂向下結合的漸增式測試法,在組合模塊時有兩種組合策略:深度優(yōu)先策略和(寬度優(yōu)先策略)。
[解析]漸增式測試法有自頂向下結合和自底向上結合兩種組裝模塊的方法,其中自頂向下集成是構造程序結構的一種增量式方式,不需要編寫驅動模塊,只需要編寫樁模塊。它從主控模塊開始,按照軟件的控制層次結構,以深度優(yōu)先或寬度優(yōu)先的策略,逐步把各個模塊集成在一起。
24.獨立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,一條獨立路徑是至少包含有一條(在其他獨立路徑中未有過)的邊的路徑。[解析]在基本路徑測試中,以詳細設計或源程序為基礎,導出控制流程圖的拓撲結構——程序圖,在計算了程序圖的環(huán)路復雜性之后,確定只包含獨立路徑的基本路徑圖,其中獨立路徑是包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,一條獨立路徑是至少包含有一條在其他獨立路徑中未有過的邊的路徑。
25.匯編語言是面向(機器)的,可以完成高級語言無法完成的特殊功能,如與外部設備之間的一些接口工作。
[解析]匯編語言屬于低級語言,是一種面向機器的語言,它與高級語言相比有許多優(yōu)越性:如操作靈活,可以直接作用到硬件的最下層,完成與外部設備的接口工作等,是能夠利用計算機硬件特性直接控制硬件設備的唯一語言。
26.在JSP方法中解決結構沖突的具體辦法是(中間數(shù)據(jù)結構或中間文件)。
[解析]JSP方法是面向數(shù)據(jù)結構的設計方法。它定義了一組以數(shù)據(jù)結構為指導的映射過程,根據(jù)輸入、輸出的數(shù)據(jù)結構,按一定的規(guī)則映射成軟件的過程描述,在JSP方法中解決結構沖突的具體辦法是引入中間數(shù)據(jù)結構或中間文件,將沖突部分分隔開來,建立多個程序結構,再利用中間文件把它們聯(lián)系起來,構成一個系統(tǒng)的整體。
27.詳細設計的任務是確定每個模塊的內部特性,即模塊的算法、(使用的數(shù)據(jù))。[解析]詳細設計的基本任務是為每個模塊進行詳細的算法設計,為模塊內的數(shù)據(jù)結構進行設計,確定每個模塊的內部特性,包括模塊的算法和使用的數(shù)據(jù)。對數(shù)據(jù)庫進行物理設計等。28.所有軟件維護申請報告要按規(guī)定方式提出,該報告也稱(軟件問題)報告。[解析]在軟件維護的流程中,第一步就是制定維護申請報告,也稱為軟件問題報告,它是維護階段的一種文檔,由申請維護的用戶填寫。
29.有兩類維護技術:在開發(fā)階段使用來減少錯誤、提高軟件可維護性的面向維護的技術;在維護階段用來提高維護的效率和質量的(維護支援)技術。[解析]面向維護的技術涉及軟件開發(fā)的所有階段,能夠減少軟件錯誤,提高軟件的可維護性。而維護支援技術則包含信息收集,錯誤原因分析,維護方案評價等項,是在軟件維護階段用來提高維護效率和質量的技術。
30.科學工程計算需要大量的標準庫函數(shù),以便處理復雜的數(shù)值計算,可供選擇的語言有:(FORTRAN語言)、PASCAL語言、C語言和PL/1語言。
[解析]計算機語言根據(jù)不同行業(yè)的需求,使用的側重點也不盡相同,在辦公管理方面,一些數(shù)據(jù)庫語言如FOXPRO、ORICAL有很多的應用,在工程行業(yè),計算機語言的科學計算能力就顯得格外重要,如MATLAB、PL/
1、FORTRAN語言都是工程計算中常用的語言。
解:投資回收期就是使累計的經濟效益等于最初的投資費用所需的時間。[解析]通常我們用投資回收期來衡量一個開發(fā)項目的價值,投資回收期越短,就越快獲得利潤。34.對應關系
解:即有直接因果關系在程序中可以同時處理。[解析]對應關系是指數(shù)據(jù)單元在數(shù)據(jù)內容上、數(shù)量上和順序上有直接的因果關系,對于重復的數(shù)據(jù)單元,重復的次序和次數(shù)都相同才有對應關系。35.結構沖突
解:輸入數(shù)據(jù)與輸出數(shù)據(jù)結構找不到對應關系的情況,稱為結構沖突。
[解析]使用JSP方法時會遇到此類結構沖突問題,對此,Jackson提出了引入中間數(shù)據(jù)結構或中間文件的辦法,將沖突部分分隔開來,建立多個程序結構,再利用中間文件把它們聯(lián)系起來,構成一個系統(tǒng)的整體。
40.請使用PAD圖和PDL語言描述在數(shù)組A(1)~A(10)中找最大數(shù)的算法。解:PDL語言: N=1 WHILE N<=10 DO IF A(N)<=A(N+1)MAX =A(N+1);ELSE MAX =A(N)ENDIF;N=N+1;ENDWHILE;PAD圖:
42.某電器集團公司下屬的廠包括技術科、生產科等基層單位。現(xiàn)在想建立一個計算機輔助企業(yè)管理系統(tǒng),其中: 生產科的任務是:
(1)根據(jù)銷售公司轉來的內部合同(產品型號、規(guī)格、數(shù)量、交獲日期)制定車間月生產計劃。
(2)根據(jù)車間實際生產日報表、周報表調整月生產計劃
(3)以月生產計劃為以及,制定產品設計(結構、工藝)及產品組裝月計劃。(4)將產品的組裝計劃傳達到各科,將組裝月計劃分解為周計劃,下達給車間 技術科的任務是:
(1)根據(jù)生產科轉來的組裝計劃進行產品結構設計,產生產品裝配圖給生產科,產生外購需求計劃給供應科,并產生產品自制物料清單。
(2)根據(jù)組裝計劃進行產品工藝設計,根據(jù)產品自制物料清單產生工藝流程圖給零件廠。試寫出以上系統(tǒng)中生產科和技術科處理的軟件結構圖。解
[解析]軟件結構圖是軟件系統(tǒng)的模塊層次結構,反映了整個系統(tǒng)的功能實現(xiàn),即將來程序的控制層次體系,軟件結構往往用樹狀或網(wǎng)狀結構的圖形來表示,其主要內容有模塊及模塊的控制關系,根據(jù)題意,可繪制出生產科和技術科的軟件結構圖,其中生產科的結構圖深度和寬度均為4,技術科的結構圖的深度和寬度均為3
填空題
1.在信息處理和計算機領域內,一般認為軟件是 _程序、_文檔____ 和_數(shù)據(jù)
2.數(shù)據(jù)流圖的基本組成部分有 數(shù)據(jù)的源點與終點、數(shù)據(jù)流_、加工、數(shù)據(jù)文件。3.數(shù)據(jù)流圖和數(shù)據(jù)字典共同構成了系統(tǒng)的邏輯模型,是需求規(guī)格說明書的主要組成部分。4.劃分模塊時盡量做到__高內聚、低耦合,保持模塊的獨立性,盡量使用公共模塊。5.類的實例化是_對象_______。
6.人們常用硬件可靠性的定量度量方法來度量軟件的可靠性和可用性,常用的度量軟件可靠性的兩個指標是_成功地運行的概率_______和_平均故障時間_______。8.將待開發(fā)的軟件細化,分別估算每一個子任務所需要的開發(fā)工作量,然后將它們加起來,將得到軟件的總開發(fā)量。這種成本估算方法稱為_自底向上_______。
9.如果一個模塊被 n 個模塊調用,其中直接的上級模塊的個數(shù)是 m 個(m<=n)那么該模塊的扇入數(shù)是 ____N_______ 個。
10.結構化設計以 __數(shù)據(jù)流圖_________ 為基礎,按一定的步驟映射成軟件結構。
11.軟件的風險分析可包括風險識別、風險預測 和風險駕馭(或風險管理)等3項活動。12.軟件著作權登記的3種主要類型:(1)著作權登記;(2)著作權延續(xù)登記;(3)權利轉移備案登記。
13.軟件工程管理的主要內容有:項目經費管理,軟件質量管理,項目進度管理和人員管理。15.面向對象分析的目的是對客觀世界的系統(tǒng)進行 ___建模_______________。16.軟件維護工作的生產性活動包括分析評價、修改設計和 ____編寫程序代碼等。17.為了使應用軟件適應計算機環(huán)境的變化而 ___修改軟件的過程稱為適應性維護。18.一個進行學生成績統(tǒng)計的模塊其功能是先對學生的成績進行累加,然后求平均值,則該模塊的內聚性是 __________順序內聚________。
19.投資回收期就是使累計的經濟效益等于 __最初的投資費用_所需的時間。
20.軟件生存周期是指一個軟件從提出開發(fā)要求開始直到 _軟件廢棄_為止的整個時期。21.曾被譽為“程序設計方法的革命”的 結構化 程序設計,使程序設計從主要依賴于程序員個人的自由活動變成為有章可循的一門科學。
22.從結構化程序設計到 面向對象程序設計,是程序設計方法的又一次飛躍。23.在單元測試時,需要為被測模塊設計___測試用例_______。
三、應用題
1.商店業(yè)務處理系統(tǒng)的業(yè)務描述及數(shù)據(jù)流圖如下:
顧客到商店購物時,在經過挑選之后填寫了一張訂單,詳細列出了想要購買的物品名稱、規(guī)格和數(shù)量等。商店接到訂單后首先查商品庫存,看是否有足夠的存貨。若有,則出庫且修改商品庫存文件,然后給顧客開發(fā)貨票,讓顧客交款、給顧客開收據(jù)并取貨,最后登記銷售歷史。若存貨不足,則暫存顧客訂單并向采購部門發(fā)出訂貨通知。采購部門根據(jù)商品庫存和暫存訂單信息向供應商訂貨。待接到供應商發(fā)來的相應商品時,通知財務部門向供應商付款,并向銷售部門發(fā)出到貨通知,同時,采購部門要修改商品庫存和暫存訂單信息。當銷售部門接到到貨通知時,應通知顧客來付款取貨。財務部門依據(jù)供應商送來的收據(jù)記賬。
試求解下列問題: 1).針對處理1,給出該處理的一級細化的DFD(要求給出合適的數(shù)據(jù)流與數(shù)據(jù)存儲說明); 2).針對處理2,給出該處理的一級細化的DFD(要求給出合適的數(shù)據(jù)流與數(shù)據(jù)存儲說明); 3).給出“發(fā)貨單”的DD定義; 4).給出“訂貨單”的DD定義; 5).根據(jù)你對問題的理解,給出“商品庫存”這個數(shù)據(jù)存儲的數(shù)據(jù)結構描述。6).根據(jù)你對問題的理解,給出“銷售歷史”這個數(shù)據(jù)存儲的數(shù)據(jù)結構描述。
第一章:軟件工程學概述 一.填空題
1.計算機科學中的研究成果均可用于軟件工程,但計算機科學更側重于_____________、而 軟件工程側重于_____________。
2.計算機程序及其說明程序的各種文檔稱為_____________。計算任務的處理圖像對象和處 理規(guī)則的描述稱為_____________。有關計算機程序功能、設計、編制、使用的文字或圖形資
料稱為_____________。
3.軟件開發(fā)環(huán)境是相關一組_____________的集合,它支持一定的軟件開發(fā)方法或按照一定 的軟件開發(fā)模型組織而成的。
4.CASE這一術語的英文是_____________。
5._____________是指工具運行在相同的硬件/操作系統(tǒng)平臺上。_____________是指工具使 用共享數(shù)據(jù)模型來操作。_____________是指工具提供相同的用戶界面。
6.根據(jù)支持的范圍,CASE工具可分為_____________、_____________和_____________工具。
7.軟件危機的主要原因有_____________和_____________。8._____________模型是一種非整體開發(fā)的模型。軟件在該模型中是“逐漸”開發(fā)處理的,開發(fā)出一部分,向用戶展示一部分,可讓用戶及早看到部分軟件,及早發(fā)現(xiàn)問題。或者先開 發(fā)一個“原型”軟件,完成部分主要功能,展示給用戶并征求意見,然后逐步完善,最終獲 得滿意的軟件產品。
9.結構化方法總得指導思想是_____________。它的基本原則是功能的_____________與___ __________。它是軟件工程中最早出現(xiàn)的開發(fā)方法,特別適用于數(shù)據(jù)處理領域的問題。10.面向對象開發(fā)方法包括_____________、_____________、_____________、三部分。11.瀑布模型是將軟件生存周期各個活動規(guī)定為依線性順序連接的若干階段的模型。它包括_____________、項目開發(fā)計劃、_____________、_____________、_____________、_ ____________、_____________、_____________,它規(guī)定了由前至后、相互銜接的固定次序,如同瀑布流水,逐級下落。12.瀑布模型本質上是一種_____________順序模型。
13.構造原型時,必須注意_____________取舍,忽略一切暫時不關心的部分。
14.屬性指的是類中對象所具有的_____________。不同對象的同一屬性可以具有相同或不同 的_____________。
15.結構化方法和原型化方法是軟件開發(fā)中常使用的兩種方法,在實際的應用中,它們之間 的關系表現(xiàn)為_____________。解答: 1.原理和理論、如何建造一個軟件系統(tǒng) 2.文件、程序、文檔; 3.軟件工具; 4.Computer Aided Software Engineering;5.平臺集成、數(shù)據(jù)集成、表示集成; 6.窄支持、較寬支持、一般支持; 7.軟件本身的特點、缺乏好的開發(fā)方法和手段; 8.增量; 9.自頂而下逐步求精、分解、抽象; 10.面向對象分析、面向對象設計、面向對象實現(xiàn); 11.可行性分析、需求分析、概要設計、詳細設計、編碼、測試、維護; 12.線性; 13.功能性能; 14.性質(數(shù)據(jù)值)、屬性值; 15.相互補充;第二章: 可行性研究 一.填空題
1.數(shù)據(jù)詞典中四種類型的條目是_____________、_____________、_____________和加工。2._____________的目的就是用最小的代價在盡可能短的時間內確定該軟件項目是否能夠開 發(fā),是否值得開發(fā)。
3.可行性研究的目的不是去開發(fā)一個軟件項目,而是研究這個軟件項目是否_____________。
4.可行性研究實質上是要進行一次簡化、壓縮了的_____________和_____________過程,要在較高層次上以較抽象的方式進行需求分析和設計過程。
5.可行性研究需要從_____________可行性、_____________可行性、_____________可行性 三個方面分析研究每種解決方法的可行性。
6.成本-效益分析首先是估算將要開發(fā)的系統(tǒng)的_____________,然后與可能取得的效益進 行_____________。
7.投資回收期就是使累計的經濟效益等于最初的投資費用所需要的時間。項目的_________ ____是指在整個生命周期之內的累計經濟效益(折合成現(xiàn)在值)與投資之差。8.軟件工程有兩種效益,它們是_____________和_____________。
9.成本-效益分析的目的是從_____________評價開發(fā)一個新的軟件項目是否可行。10.研究開發(fā)資源的有效性是進行_____________可行性研究的一方面。
11.在軟件的可行性研究中,可以從不同的角度對軟件進行研究,其中是從軟件的功能可行 性角度考慮的是_____________。12.制定軟件計劃的目的在于盡早對欲開發(fā)的軟件進行合理估價,軟件計劃的任務是_______ ______。
13.數(shù)據(jù)流圖是常用的進行軟件需求分析的圖形工具,其基本符合是_____________、______ _______、_____________和_____________。
14.決定大型程序模型組織基本原則的兩種交替設計策略為_____________和_____________。
15.軟件系統(tǒng)可行性分析應考慮_____________、_____________、_____________和________ _____等方面因素。解答: 1.數(shù)據(jù)流、數(shù)據(jù)存儲、數(shù)據(jù)項、加工2.軟件可行性研究 3.值得去開發(fā)且其中的問題能否解決; 4.需求分析、設計 5.技術、經濟、社會 6.開發(fā)成本、比較和權衡 7.純收入 8.無形效益、有形效益 9.經濟角度 10.技術 11.技術可行性 12.規(guī)劃與調度 13.加工、數(shù)據(jù)流、數(shù)據(jù)存儲、外部實體 14.數(shù)據(jù)分解、算法分解 15.經濟、技術、社會環(huán)境和人。第三章: 需求分析 一.填空題
1.軟件需求分析過程應該建立_____________、_____________和_____________ 三種模型。2.需求分析的基本任務是要準確地定義_____________,為了滿足用戶需要,回答系統(tǒng)必須 做什么的問題。
3.數(shù)據(jù)流圖有4個基本成分:_____________、_____________、_____________和_________ ____。
4.流向數(shù)據(jù)存儲的數(shù)據(jù)流可理解為_____________文件或_____________文件,從數(shù)據(jù)存儲 流出的數(shù)據(jù)可理解為從文件_____________數(shù)據(jù)或得到_____________結果。
5.需求分析的困難主要體現(xiàn)在4個方面:問題的復雜性、_____________、_____________需
求易變性。
6.由于數(shù)據(jù)流是流動中的數(shù)據(jù),所以必須有_____________。除了與_____________之間的 數(shù)據(jù)流不用命名外,數(shù)據(jù)流應該用名詞或名詞短語命名。
7.結構化分析方法是面向_____________進行需求分析的方法。8.經過需求分析,開發(fā)人員已經基本上理解了用戶的要求,確定了目標系統(tǒng)的功能,定義 了系統(tǒng)數(shù)據(jù),描述了處理這些數(shù)據(jù)的基本策略。將這些共同的理解進行了整理,最后形成文 檔_____________。
9.在數(shù)據(jù)流圖中,有名字及方向的成分是_____________。
10.在軟件需求分析中,開發(fā)人員要從用戶那里解決的最重要的問題是_____________。11.需求分析的最終結果是產生_____________。12.SA方法用DFD描述_____________。13.SA方法的基本思想是_____________。
14.常用的需求分析方法有面向數(shù)據(jù)流的結構化分析方法,_____________,面向數(shù)據(jù)結構 的
分析方法等。
15.通過_____________可以完成數(shù)據(jù)流圖的細化。解答: 1.數(shù)據(jù)模型、功能模型、行為模型 2.新系統(tǒng)的目標 3.數(shù)據(jù)流、加工(又稱數(shù)據(jù)處理)、數(shù)據(jù)存儲、數(shù)據(jù)源點和終點 4.寫入、查詢、讀、查詢 5.交流障礙、不完備性和不一致性 6.流向、數(shù)據(jù)存儲 7.數(shù)據(jù)流 8.需求說明書 9.數(shù)據(jù)流 10.要讓軟件做什么 11.需求規(guī)格說明書 12.系統(tǒng)的功能 13.自頂向下逐步分解 14.面向對象的分析方法 15.功能分解 第五章: 總體設計 一.填空題
1.過程設計語言的重復結構有_____________結構、_____________結構_____________、結 構三種。
2.結構化程序設計方法的基本要點是:(1)采用_____________、_____________、的程序 設計方法;(2)使用_____________構造程序;(3)主程序員組的組織形式。
3.在詳細設計階段,為了提高數(shù)據(jù)的輸入、存儲、檢索等操作的效率并節(jié)約存儲空間,對 某些數(shù)據(jù)項的值要進行_____________設計。
4.任何程序都可由_____________、_____________和_____________三種基本控制結構構造。這三種基本結構的共同點是_____________、_____________。
5.在詳細設計階段,除了對模塊內的算法進行設計,還應對模塊內的_____________進行設 計。
6.在詳細設計階段,經常采用的工具有_____________、PDL、PAD等。7.在單元測試中,測試一個模塊時,需要設計_____________。
8.軟件產品在交付使用之前一般要經過以下4步測試_____________、_____________、____ _________、_____________。
9.軟件測試用例由_____________和_____________組成。10.用黑盒技術設計測試用例的方法有_____________、_____________、_____________和__ ___________。
11.源程序中加注釋是幫助理解程序的重要手段,注釋分為_____________、_____________ 兩類。
12.近年來,推出了許多面向對象的語言,如_____________、_____________等。
13.匯編語言是面向_____________的,可以完成_____________語言無法滿足要求的特殊功 能,如與外部設備之間的一些接口操作。
14.語句構造的原則是簡單直接,不能為了追求效率而使代碼_____________ 15._____________是指程序從一個計算機環(huán)境移植到另一個計算機環(huán)境的容易程度 解答: 1.for、while、until 2.自頂向下、逐步求精、三種基本控制結構 3.代碼 4.順序、選擇、重復、單入口、單出口 5.數(shù)據(jù)結構 6.程序流程圖 7.驅動模塊和樁模塊 8.單元測試、集成測試、確認測試、系統(tǒng)測試 9.測試輸入數(shù)據(jù)和對應的預期輸出 10.等價類劃分、邊界值分析、錯誤推斷、因果圖 11.序言行注釋、功能性注釋 12.C++、JAVA 13.機器、高級 14.復雜化; 15.可移植性。
第四篇:軟件工程導論試題
軟件工程導論試題
一.選擇
1、瀑布模型把軟件生命周期劃分為八個階段:問題的定義、可行性研究、軟件需求分析、系統(tǒng)總體設計、詳細設計、編碼、測試和運行、維護。八個階段又可歸納為三個大的階段:計劃階段、開發(fā)階段和(C)。A、詳細計劃 B、可行性分析
C、運行階段 D、測試與排錯
2、從結構化的瀑布模型看,在它的生命周期中的八個階段中,下面的幾個選項中哪個環(huán)節(jié)出錯,對軟件的影響最大(C)。A、詳細設計階段 B、概要設計階段
C、需求分析階段 D、測試和運行階段
3、在結構化的瀑布模型中,哪一個階段定義的標準將成為軟件測試中的系統(tǒng)測試階段的目標(A)。
A、需求分析階段 B、詳細設計階段
C、概要設計階段 D、可行性研究階段
4、軟件工程的出現(xiàn)主要是由于(C)。
A.程序設計方法學的影響 B.其它工程科學的影響
C.軟件危機的出現(xiàn) D.計算機的發(fā)展
5、軟件工程方法學的目的是:使軟件生產規(guī)范化和工程化,而軟件工程方法得以實施的主要保證是(C)A、硬件環(huán)境 B、軟件開發(fā)的環(huán)境
C、軟件開發(fā)工具和軟件開發(fā)的環(huán)境 D、開發(fā)人員的素質
6、軟件開發(fā)常使用的兩種基本方法是結構化和原型化方法,在實際的應用中,它們之間的關系表現(xiàn)為(B)A、相互排斥 B、相互補充
C、獨立使用 D、交替使用
7、UML是軟件開發(fā)中的一個重要工具,它主要應用于哪種軟件開發(fā)方法(C)A、基于瀑布模型的結構化方法 B、基于需求動態(tài)定義的原型化方法 C、基于對象的面向對象的方法 D、基于數(shù)據(jù)的數(shù)據(jù)流開發(fā)方法
8、在下面的軟件開發(fā)方法中,哪一個對軟件設計和開發(fā)人員的開發(fā)要求最高(B)A、結構化方法 B、原型化方法 C、面向對象的方法 D、控制流方法
9、結構化分析方法是一種預先嚴格定義需求的方法,它在實施時強調的是分析對象的(B)A、控制流 B、數(shù)據(jù)流 C、程序流 D、指令流
10、軟件開發(fā)的結構化生命周期方法將軟件生命周期劃分成(A)A、計劃階段、開發(fā)階段、運行階段 B、計劃階段、編程階段、測試階段 C、總體設計、詳細設計、編程調試 D、需求分析、功能定義、系統(tǒng)設計
11、軟件開發(fā)中常采用的結構化生命周期方法,由于其特征而一般稱其為(A)A、瀑布模型 B、對象模型 C、螺旋模型 D、層次模型
12、軟件開發(fā)的瀑布模型,一般都將開發(fā)過程劃分為:分析、設計、編碼和測試等階段,一般認為可能占用人員最多的階段是(C)A、分析階段 B、設計階段 C、編碼階段 D、測試階段 二.填空
21.系統(tǒng)流程圖是描述物理模型的傳統(tǒng)工具,用圖形符號表示系統(tǒng)中各個元素表達了系統(tǒng)中各種元素之間的(信息流動)情況。
[解析]系統(tǒng)流程圖是描述物理系統(tǒng)的傳統(tǒng)工具,用圖形符號表示系統(tǒng)中的各個元素,如人工處理、數(shù)據(jù)處理、數(shù)據(jù)庫、文件、設備等,表達了元素之間的信息流動的情況。
22.成本效益分析的目的是從(經濟)角度評價開發(fā)一個項目是否可行。
[解析]成本效益分析首先是估算將要開發(fā)的系統(tǒng)的開發(fā)成本,然后與可能取得的效益進行比較和權衡,其目的是從經濟角度評價開發(fā)一個新的軟件項目是否可行。23.自頂向下結合的漸增式測試法,在組合模塊時有兩種組合策略:深度優(yōu)先策略和(寬度優(yōu)先策略)。
[解析]漸增式測試法有自頂向下結合和自底向上結合兩種組裝模塊的方法,其中自頂向下集成是構造程序結構的一種增量式方式,不需要編寫驅動模塊,只需要編寫樁模塊。它從主控模塊開始,按照軟件的控制層次結構,以深度優(yōu)先或寬度優(yōu)先的策略,逐步把各個模塊集成在一起。
24.獨立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,一條獨立路徑是至少包含有一條(在其他獨立路徑中未有過)的邊的路徑。
[解析]在基本路徑測試中,以詳細設計或源程序為基礎,導出控制流程圖的拓撲結構——程序圖,在計算了程序圖的環(huán)路復雜性之后,確定只包含獨立路徑的基本路徑圖,其中獨立路徑是包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,一條獨立路徑是至少包含有一條在其他獨立路徑中未有過的邊的路徑。
25.匯編語言是面向(機器)的,可以完成高級語言無法完成的特殊功能,如與外部設備之間的一些接口工作。
[解析]匯編語言屬于低級語言,是一種面向機器的語言,它與高級語言相比有許多優(yōu)越性:如操作靈活,可以直接作用到硬件的最下層,完成與外部設備的接口工作等,是能夠利用計算機硬件特性直接控制硬件設備的唯一語言。
26.在JSP方法中解決結構沖突的具體辦法是(中間數(shù)據(jù)結構或中間文件)。
[解析]JSP方法是面向數(shù)據(jù)結構的設計方法。它定義了一組以數(shù)據(jù)結構為指導的映射過程,根據(jù)輸入、輸出的數(shù)據(jù)結構,按一定的規(guī)則映射成軟件的過程描述,在JSP方法中解決結構沖突的具體辦法是引入中間數(shù)據(jù)結構或中間文件,將沖突部分分隔開來,建立多個程序結構,再利用中間文件把它們聯(lián)系起來,構成一個系統(tǒng)的整體。
27.詳細設計的任務是確定每個模塊的內部特性,即模塊的算法、(使用的數(shù)據(jù))。
[解析]詳細設計的基本任務是為每個模塊進行詳細的算法設計,為模塊內的數(shù)據(jù)結構進行設計,確定每個模塊的內部特性,包括模塊的算法和使用的數(shù)據(jù)。對數(shù)據(jù)庫進行物理設計等。
28.所有軟件維護申請報告要按規(guī)定方式提出,該報告也稱(軟件問題)報告。
[解析]在軟件維護的流程中,第一步就是制定維護申請報告,也稱為軟件問題報告,它是維護階段的一種文檔,由申請維護的用戶填寫。
29.有兩類維護技術:在開發(fā)階段使用來減少錯誤、提高軟件可維護性的面向維護的技術;在維護階段用來提高維護的效率和質量的(維護支援)技術。
[解析]面向維護的技術涉及軟件開發(fā)的所有階段,能夠減少軟件錯誤,提高軟件的可維護性。而維護支援技術則包含信息收集,錯誤原因分析,維護方案評價等項,是在軟件維護階段用來提高維護效率和質量的技術。
30.科學工程計算需要大量的標準庫函數(shù),以便處理復雜的數(shù)值計算,可供選擇的語言有:(FORTRAN語言)、PASCAL語言、C語言和PL/1語言。
[解析]計算機語言根據(jù)不同行業(yè)的需求,使用的側重點也不盡相同,在辦公管理方面,一些數(shù)據(jù)庫語言如FOXPRO、ORICAL有很多的應用,在工程行業(yè),計算機語言的科學計算能力就顯得格外重要,如MATLAB、PL/
1、FORTRAN語言都是工程計算中常用的語言。三.判斷
1.軟件的開發(fā)與運行經常受到硬件的限制和制約。(√)
2.模塊內的高內聚往往意味著模塊間的松耦合。(√)3.Jackson圖只能表達程序結構,不能表達數(shù)據(jù)結構。(X)
上述數(shù)據(jù)流圖表示數(shù)據(jù)A和B同時輸入變換成C。(X)
5.軟件的質量好壞主要由驗收人員負責,其他開發(fā)人員不必關心。(X)
6.判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋。(√)
7.應該盡量使用機器語言編寫代碼,提高程序運行效率,而減少高級語言的使用。(X)
8.UML只能應用于軟件系統(tǒng)模型的建立。(X)
9.容錯就是每個程序采用兩種不同的算法編寫。(X)
10.軟件測試的目的是為了無一遺漏的找出所有的錯誤。(X)
四、名詞解釋題(本大題共5小題,每小題3分,共15分)
31.軟件開發(fā)環(huán)境
32.錯誤推測法
33.黑盒測試法
34.軟件質量保證
35.瀑布模型 31.經濟可行性
解:進行開發(fā)成本的估算以及了解取得效益的評估,確定要開發(fā)的項目是否值得投資開發(fā)。
[解析]對于一個系統(tǒng)所必須要衡量的是經濟上是否合算,經濟可行性的范圍很廣,包括效益分析、潛在市場前景等。
32.社會可行性
解:要開發(fā)的項目是否存在任何侵犯、妨礙等責任問題,要開發(fā)項目目的運行方式在用戶組織內是否行得通,現(xiàn)有管理制度、人員素質、操作方式是否可行。
[解析]社會可行性包括合同、責任、侵權等技術人員不甚了解的諸多問題。
33.投資回收期
解:投資回收期就是使累計的經濟效益等于最初的投資費用所需的時間。
[解析]通常我們用投資回收期來衡量一個開發(fā)項目的價值,投資回收期越短,就越快獲得利潤。
34.對應關系
解:即有直接因果關系在程序中可以同時處理。
[解析]對應關系是指數(shù)據(jù)單元在數(shù)據(jù)內容上、數(shù)量上和順序上有直接的因果關系,對于重復的數(shù)據(jù)單元,重復的次序和次數(shù)都相同才有對應關系。
35.結構沖突
解:輸入數(shù)據(jù)與輸出數(shù)據(jù)結構找不到對應關系的情況,稱為結構沖突。
[解析]使用JSP方法時會遇到此類結構沖突問題,對此,Jackson提出了引入中間數(shù)據(jù)結構或中間文件的辦法,將沖突部分分隔開來,建立多個程序結構,再利用中間文件把它們聯(lián)系起來,構成一個系統(tǒng)的整體。
五、圖 a 中,模塊 G 為判定,判斷涉及到模塊 B、F、G,請指出設計中的錯誤,再根據(jù) 改進模 塊圖的基本原則,畫出 1~2 個改進方案(不改變模塊 G 的判斷關系),并說明是按照
哪條基本 原則進行改進的。
解:圖 b 為一個改進方案,將模塊 G 的位置提高,使其作用范圍為控制范圍的子集,減 少模塊 之間的聯(lián)系。
40.請使用PAD圖和PDL語言描述在數(shù)組A(1)~A(10)中找最大數(shù)的算法。
解:PDL語言:
N=1
WHILE N<=10 DO
IF A(N)<=A(N+1)MAX =A(N+1);
ELSE MAX =A(N)ENDIF;
N=N+1;
ENDWHILE;
PAD圖:
[解析]人工查找時,是從第一個元素開始查找,用當前元素與下一個元素比較,將較大者作為當前元素又與下一元素比較,如此循環(huán),直到數(shù)組末尾。
41.根據(jù)下列條件使用等價類劃分法設計測試用例。
某一8位微機,其八進制常數(shù)定義為:以零開頭的數(shù)是八進制整數(shù),其值的范圍是-177~177,如05,0127,-065
解:(1)劃分等價類并編號,如下表示:(4分)
(2)為合理等價類設計測試用例,表中有兩個合理等價類,設計兩個例子(2分)
(3)為不合理等價類測試用例,至少設計一個測試用例(2分)
[解析]等價類劃分屬于黑盒測試的一種,它將輸入數(shù)據(jù)域按有效的或無效的劃分成若干個等價類,測試每個等價類的代表值就等于對該類其他值的測試,這樣用少量有代表性的例子代替大量測試目的相同的例子,可以有效提高測試效率。本題劃分了3個合理等價類,9個不合理等價類進行測試,取到了預期的效果。
42.某電器集團公司下屬的廠包括技術科、生產科等基層單位?,F(xiàn)在想建立一個計算機輔助企業(yè)管理系統(tǒng),其中:
生產科的任務是:
(1)根據(jù)銷售公司轉來的內部合同(產品型號、規(guī)格、數(shù)量、交獲日期)制定車間月生產計劃。
(2)根據(jù)車間實際生產日報表、周報表調整月生產計劃
(3)以月生產計劃為以及,制定產品設計(結構、工藝)及產品組裝月計劃。
(4)將產品的組裝計劃傳達到各科,將組裝月計劃分解為周計劃,下達給車間
技術科的任務是:
(1)根據(jù)生產科轉來的組裝計劃進行產品結構設計,產生產品裝配圖給生產科,產生外購需求計劃給供應科,并產生產品自制物料清單。
(2)根據(jù)組裝計劃進行產品工藝設計,根據(jù)產品自制物料清單產生工藝流程圖給零件廠。試寫出以上系統(tǒng)中生產科和技術科處理的軟件結構圖。
解:
畫出生產科圖的給6分,畫出技術科的給4分。
[解析]軟件結構圖是軟件系統(tǒng)的模塊層次結構,反映了整個系統(tǒng)的功能實現(xiàn),即將來程序的控制層次體系,軟件結構往往用樹狀或網(wǎng)狀結構的圖形來表示,其主要內容有模塊及模塊的控制關系,根據(jù)題意,可繪制出生產科和技術科的軟件結構圖,其中生產科的結構圖深度和寬度均為4,技術科的結構圖的深度和寬度均為3。
第五篇:教案軟件工程導論
授課日期: 11月13日
課程名稱: 軟件工程導論
教學目的:讓學生了解軟件以及軟件危機的概念
了解軟件危機出現(xiàn)的原因以及解決途徑
熟悉軟件工程產生的原因以及其生命周期各個階段的任務 教學重點:軟件危機的出現(xiàn)原因、軟件工程的基本原理、軟件生命周期 教學難點:生命周期各個階段的任務 教學過程:講解軟件的概念
通過軟件危機的表現(xiàn)及原因分析引入軟件工程的基本概念 分析消除軟件危機的途徑 講解軟件工程的基本原理
計算機系統(tǒng)發(fā)展迅速,但是人們仍然沒有徹底擺脫“軟件危機”的困擾,軟件已經成為限制計算機系統(tǒng)發(fā)展的瓶頸。計算機軟件工程學就是為了研究如何消除軟件危機而發(fā)展起來的。那么什么是軟件危機呢?
在開始講軟件危機時我要先提出一個概念:什么是軟件?(板書:軟件危機、什么是軟件)簡單來舉例像我們平時用的word、excel都是計算機軟件。
軟件就是計算機系統(tǒng)中與硬件相互依存的另一部分,它包括程序、相關數(shù)據(jù)及其說明文檔。(軟件的英文名為Software板書:software=program+data+document)
那它具有什么特性呢?在這里我向大家繪制兩幅圖,大家可以比較討論一下
硬件的失效率剛開始是降低的,這個階段就是磨合調整,通過調整失效率降低并達到一定時期的穩(wěn)定,那為什么會失效率增高呢,硬件是物理實體它存在磨損用壞的問題。再來看軟件的失效圖像,我繪制了兩條,一條是理想情況下,另一天是實際情況下。大家可以看出來嗎?沒錯,開發(fā)出來的軟件并不是永遠有效的,隨著用戶的需求增大等情況失效率會增高。從圖中我們還可以看出在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題。因為軟件是一種邏輯實體,并非具體的物理實體。
另外呢,軟件復雜性很高,軟件技術的發(fā)展落后于需求,成本也相當昂貴。
講完軟件的概念,那么軟件危機就比較容易理解了,軟件危機就是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。那么大家思考一下,能夠正常運行的軟件可能會存在軟件危機嗎?答案是可能會。實際上,幾乎所有軟件都不同程度地存在這些問題。比方說,你在用QQ軟件時,它不能與你的計算機硬件環(huán)境兼容或是不能滿足你的要求。
總結下來,軟件危機需要應對兩方面的問題:
(1)如何開發(fā)軟件,以滿足對軟件日益增長的需求(2)如何維護數(shù)量不斷膨脹的已有軟件
軟件危機又有哪些典型表現(xiàn)呢?我們在進行一項工程時是不是經常會有一個工程預算,軟件工程也不例外,如果對軟件開發(fā)成本和進度的估計不準確,那么就很容易使用戶不滿。再來如果沒有和用戶進行很好的溝通就著手編寫程序,那么人家也不會滿意;軟件質量靠不住、軟件開發(fā)出來是不可維護的,也可以說是不能夠對其功能進行修改適應用戶需求;軟件開發(fā)供不應求都是軟件危機的表現(xiàn)。
那么出現(xiàn)軟件危機的原因是什么?在分析原因時我們就通常從內因外因來說,在前面我有講到軟件的特征,軟件復雜度高,成本昂貴等都與軟件危機的出現(xiàn)有關,外因則是由軟件開發(fā)和維護的方法不正確有關。
下面我將引入一個問題,大家思考一下,假設你是軟件公司的總工程師,當你告訴自己手下的工程師們及時發(fā)現(xiàn)并改正錯誤的重要性時,有人不同意這個觀點,認為要求在錯誤進入軟件之前就清楚它們是不現(xiàn)實的,并且還舉了一個例子:“如果一個故障是編碼錯誤造成的,那么,一個人又怎么能再設計階段就清除他呢?”你同意他的觀點嗎?
答:在軟件開發(fā)的不同階段進行修改需要付出的代價是很不一樣的,在早期引入變動,涉及的面比較少,代價也比較低當進入開發(fā)中期,軟件配置的許多東西都已經完成,引入一個變動要對所有已完成的配置成分都做相應地修改,不僅工作量大,而且邏輯上海很復雜,代價劇增啊,在軟件已經完成時在引入變動,當然需要付出更大的代價。況且軟件的開發(fā)是團體合作,并不是一個人,早發(fā)現(xiàn)早解決很重要!
那么如何消除軟件危機呢?這也是我們這門課永恒的課題啊
首先呢我們要對計算機軟件有一個正確的認識,軟件并不等于程序,這是很多學生出的問題
必須充分認識到軟件開發(fā)不是某種個體勞動的產物,而應該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目。也就是我們所說的團隊合作
推廣使用在實踐中總結出來的開發(fā)軟件的成功技術和方法 開發(fā)和使用更好的軟件工具
那么軟件危機我們就講到這,下面開始介紹軟件工程:
什么是工程?我們平時經常聽到水利工程,建筑工程,工程就是對技術實體的分析、設計、建造、驗證和管理。那么我們知道軟件是一種邏輯產品,看不到摸不著而軟件工程就是把軟件當做一種工業(yè)產品,要求采用工程化的原理與方法對軟件進行計劃、開發(fā)和維護。是一種新興工程。
如何定義它呢?軟件工程就是為了經濟地獲得可靠地且能再實際機器上高效運行的軟件,而建立和使用完善的工作原理;另一個更全面更具體的定義:軟件工程是把系統(tǒng)的、規(guī)范的、可度量的途徑應用于軟件開發(fā)、運行和維護過程,也就是把工程應用于軟件。
下面就是本節(jié)課的重點,請大家認真聽講。軟件工程的基本原理:
1、用分階段的生命周期計劃嚴格管理 在軟件開發(fā)和維護的漫長的生命周期中,需要完成各種任務。因而就應該吧軟件生命周期劃分為若干個階段,并相應地制定出切實可行的計劃,并嚴格計劃開發(fā),維護。
2、堅持進行階段評審
軟件的質量保證工作不能等到編碼階段結束后再進行,那么在每個階段都進行嚴格的評審可以更早的發(fā)現(xiàn)在開發(fā)過程中的錯誤,及時改正
3、實行嚴格的產品控制
大家都知道軟件開發(fā)成本很高,那就意味著不能隨意更改需求。要必須按照嚴格的規(guī)程進行評審,獲得批準以后才能實施修改。
4、采用現(xiàn)代程序設計技術
采用先進的技術不僅可以提高軟件開發(fā)和維護的效率,而且可以提高軟件產品的質量。
5、結果應能清楚的審查
軟件是看不到摸不著的邏輯產品,應該根據(jù)軟件開發(fā)項目的總目標及完成期限,規(guī)定產品的標準,從而使得所得到的的結果更容易被審查
6、開發(fā)小組的人員應該少而精 大家不是都在說人多力量大嗎,何況軟件開發(fā)是團隊協(xié)作嗎?在這里要注意到人員多交流情況討論問題也會增加,耗時耗力。所以軟件開發(fā)小組的組成人員應該要素質高,且不宜過高。
7、承認不斷改進軟件工程實踐的必要性
就是要積極主動的采納新的軟件技術,且要不斷總結經驗。大家可以想象一下,如果開發(fā)小組組長是一個固步自封的頑固派,那么后果將不堪設想 下面進行另一個知識點:軟件生命周期
概括地說,軟件生命周期由軟件定義、軟件開發(fā)和運行維護3個時期組成,但每個時期又進一步劃分成若干個階段;這里我?guī)痛蠹铱偨Y了一下: 計劃---需求分析---設計---編碼---測試---運行、維護 在這里我解釋一下,在開發(fā)軟件時我們要制定計劃,做需求分析了解用戶想利用計算機軟件幫他們解決什么問題然后進行設計它類似于工程師經常使用的工程藍圖,它包含了詳細的設計每個模塊,確定實現(xiàn)模塊功能。接下來就是編碼實現(xiàn)功能,而測試則是使軟件達到預訂的要求,在這里并不是結束我們還要對其進行運行維護持續(xù)滿足用戶的需求。
那現(xiàn)在我們來說一下具體的軟件過程
軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。這就好比我們要建一棟房子,必須要有廚房,臥室吧,那么我們就需要有一個任務表,第一步干什么第二步干什么來完成。軟件過程也是這樣。那有的同學會問我們前面不是講過軟件周期嗎,它不是也規(guī)定了先干什么后干什么嗎,對,沒錯,它也是一種過程模型。但實際上要根據(jù)項目的特點來劃分階段,這也就引出了我們下面要研究的瀑布模型
大家可以比較一下它和生命周期模型的異同,在下節(jié)課我希望大家能夠在課堂上舉手發(fā)言。
歸納小結:這節(jié)課呢,我們主要講了什么是軟件,軟件具有什么特性,有四點:邏輯實體、成本昂貴、技術落后于需求、復雜度高。在就是軟件危機的相關概念以及為什么出現(xiàn)軟件危機,以及解決軟件危機的途徑,也引入了軟件的生命周期等知識點,望同學課下做好復習。
課后作業(yè):素材32 1、3