




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
計算機軟件技術第一部分軟件工程計算機軟件技術第一部分軟件工程計算機軟件技術第一部分軟件工程學習指導信息同學們在學習本課程的過程中應當注意基本概念、基本方法、算法的閱讀理解和算法的設計等方面。軟件工程主要涉及基本概念和基本方法;數(shù)據(jù)結構涉及基本概念、基本方法、算法的閱讀理解和算法的設計。在學習過程中可以通過課件的內(nèi)容、例題、習題來理解和掌握。2電子工程學院計算機軟件技術第一部分軟件工程計算機軟件技術第一部分軟件1學習指導信息
同學們在學習本課程的過程中應當注意基本概念、基本方法、算法的閱讀理解和算法的設計等方面。軟件工程主要涉及基本概念和基本方法;數(shù)據(jù)結構涉及基本概念、基本方法、算法的閱讀理解和算法的設計。在學習過程中可以通過課件的內(nèi)容、例題、習題來理解和掌握。2電子工程學院學習指導信息同學們在學習本課程的過程中應當注意基本概第一部分軟件工程第一部分軟件工程3軟件工程的教學目的和要求
掌握軟件生命周期各階段的劃分,各階段的主要任務以及所建立的軟件文檔。能夠采用結構化分析、結構化設計和結構化程序設計的方法開發(fā)軟件,掌握軟件測試的步驟和方法,了解軟件維護的基本概念。4電子工程學院軟件工程的教學目的和要求掌握軟件生命周期各階段的劃分,軟件工程目錄軟件和軟件工程的基本概念軟件生命周期結構化的軟件開發(fā)方法軟件測試
軟件維護
作業(yè)5電子工程學院軟件工程目錄軟件和軟件工程的基本概念5電子工程學院一、軟件和軟件工程的基本概念軟件的特點軟件是一種邏輯產(chǎn)品。軟件產(chǎn)品的生產(chǎn)主要是研制。軟件產(chǎn)品不會損壞,不存在磨損、消耗問題。軟件產(chǎn)品的生產(chǎn)主要是腦力勞動、手工開發(fā)方式,大部分產(chǎn)品是“定做”的。軟件開發(fā)成本不斷提高。6電子工程學院一、軟件和軟件工程的基本概念軟件的特點6電子工程學院故障率磨合磨損時間硬件的故障曲線7電子工程學院故障率磨合磨損時間硬件的故障曲線7電子工程學院硬件的故障曲線軟件的理想曲線與實際故障曲線故障率修改由副作用造成故障率的提高時間實際曲線理想曲線軟件的理想曲線與實際故障曲線8電子工程學院硬件的故障曲線軟件的理想曲線與實際故障曲線故障率修改由副
軟件危機是指在軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。幾乎所有軟件都不同程度地存在以下問題:對軟件開發(fā)成本和進度不可控制。用戶對“已完成的”軟件往往不滿意。軟件產(chǎn)品的質量不可靠。軟件的可維護性差。軟件的文檔資料不齊備。軟件成本在計算機系統(tǒng)總成本中所占的比例過高。軟件開發(fā)的生產(chǎn)率低。軟件危機的含義9電子工程學院軟件危機是指在軟件的開發(fā)和維護過程中所遇到的一
軟件危機的產(chǎn)生一方面與軟件本身的特點有關,另一方面也和軟件開發(fā)與維護的方法不正確有關。消除軟件危機的途徑研究探索軟件開發(fā)的技術措施,采用先進的軟件開發(fā)方法和軟件開發(fā)工具。加強軟件開發(fā)過程中的組織管理措施。軟件工程正是從技術和管理兩個方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。產(chǎn)生軟件危機的原因10電子工程學院軟件危機的產(chǎn)生一方面與軟件本身的特點有關,另一
采用工程的概念、原理、技術和方法來開發(fā)與維護軟件。把經(jīng)過時間考驗而證明正確的管理方法和當前最好的軟件開發(fā)技術結合起來,以較低的成本開發(fā)出高質量的軟件并能夠有效的對軟件進行維護。軟件工程的概念11電子工程學院采用工程的概念、原理、技術和方法來開發(fā)與維護軟將軟件生命周期劃分階段,嚴格管理軟件的開發(fā)與維護。堅持進行階段評審。實行嚴格的產(chǎn)品控制。采用現(xiàn)代化的軟件開發(fā)技術。能夠清楚的審查軟件各個階段的結果。開發(fā)小組的人員應該少而精。承認不斷改進軟件工程實踐的必要性。軟件工程的基本原理12電子工程學院將軟件生命周期劃分階段,嚴格管理軟件的開發(fā)與維護。軟件工程
在軟件生命周期全過程中使用的一整套技術的集合稱為軟件工程方法學。軟件工程方法學包括以下三個要素:方法:完成軟件開發(fā)的各項任務的技術方法。工具:為方法的運用提供自動或半自動的軟件支撐環(huán)境。過程:為了獲得高質量的軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。軟件工程方法學13電子工程學院在軟件生命周期全過程中使用的一整套技術的集合稱
軟件工程方法學分為結構化方法、Jackson方法、維也納方法、面向對象方法。其中結構化方法和面向對象方法使用最為廣泛,又稱為軟件工程的傳統(tǒng)方法學和面向對象方法學。本課程主要介紹結構化方法。常用的軟件工程方法學14電子工程學院軟件工程方法學分為結構化方法、Jackson【例】軟件產(chǎn)品管理包括版本管理和
。答案:開發(fā)過程管理
軟件與物質產(chǎn)品的區(qū)別在于軟件是一種
產(chǎn)品。答案:邏輯
目前經(jīng)常采用的軟件工程方法學,是
和
。答案:傳統(tǒng)方法學、面向對象方法學15電子工程學院【例】軟件產(chǎn)品管理包括版本管理和。1二、軟件生命周期軟件生命周期各階段的劃分,以及各個階段任務:問題定義問題定義階段的任務是確定所要開發(fā)的目標系統(tǒng)應當解決的問題是什么。2.可行性研究在確定了目標系統(tǒng)應當解決的問題之后,從技術、經(jīng)濟和社會因素三個方面分析問題是否能夠解決,以及是否值得解決。16電子工程學院二、軟件生命周期軟件生命周期各階段的劃分,以及各個階段任務
需求分析階段的任務是在充分了解用戶對目標系統(tǒng)的需求之后,確定目標系統(tǒng)應當具有什么功能,而這些功能如何實現(xiàn)在這個階段并不考慮。本階段的另外一項重要任務,是用正式文檔準確地記錄對目標系統(tǒng)的需求,這份文檔通常稱為系統(tǒng)規(guī)格說明書或需求規(guī)格說明書。3.需求分析17電子工程學院需求分析階段的任務是在充分了解用戶對目標系統(tǒng)的這個階段的基本任務是概括地回答怎樣實現(xiàn)目標系統(tǒng)的功能。概要設計又稱為總體設計。概要設計的另一項主要任務就是設計目標系統(tǒng)的模塊結構圖或功能結構圖,確定目標系統(tǒng)由哪些模塊組成以及模塊之間的調用和被調用關系。5.詳細設計詳細設計階段設計模塊內(nèi)部的邏輯和數(shù)據(jù)結構。這個階段的任務還不是編寫程序代碼。4.概要設計18電子工程學院這個階段的基本任務是概括地回答怎樣實現(xiàn)目標系統(tǒng)的功能
這個階段是根據(jù)詳細設計的結果,采用程序設計語言遍寫出程序代碼。7.測試測試階段的任務是通過各種類型的測試及相應的調試,使軟件達到預定的要求。8.維護維護是在系統(tǒng)運行階段進行的,通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。6.
編碼19電子工程學院這個階段是根據(jù)詳細設計的結果,采用程序設計語言
生命周期模型規(guī)定了把生命周期劃分成哪些階段及各個階段進行的順序。1.瀑布模型瀑布模型清楚地區(qū)分系統(tǒng)的邏輯設計與物理設計,盡可能推遲系統(tǒng)的物理實現(xiàn)。每個階段結束前都要對所完成的文檔進行評審,以便盡早發(fā)現(xiàn)問題,改正錯誤。軟件生命周期的模型20電子工程學院生命周期模型規(guī)定了把生命周期劃分成哪些階段及需求分析驗證概要設計驗證詳細設計驗證編碼驗證綜合測試維護變化的需求驗證
當在后面階段發(fā)現(xiàn)前面階段的錯誤時,需要沿圖中左側的反饋線返回前面的階段,修正前面階段的產(chǎn)品之后,再回來繼續(xù)完成后面階段的任務。瀑布模型適合于在用戶需求明確、開發(fā)技術成熟、工程管理嚴格的場合使用。由于任務順序固定,瀑布模型的缺點是軟件研制周期長,糾正前期錯誤的代價高。帶有反饋環(huán)的瀑布模型21電子工程學院需求分析概要設計詳細設計編碼綜合測試維護變化的需求當在瀑布模型的開發(fā)過程22電子工程學院瀑布模型的開發(fā)過程22電子工程學院
快速原型模型是快速建立起可以在計算機上運行的程序,它所具有的功能往往只是最終軟件產(chǎn)品功能的一個子集。快速原型模型首先建立一個能反映用戶主要需求的原型系統(tǒng),讓用戶試用它,通過試用,用戶可以了解目標系統(tǒng)的概貌。軟件人員根據(jù)用戶的意見對原型進行修改,然后再次請用戶試用……,直到能夠滿足用戶的需求為止。這樣所開發(fā)的軟件可以滿足用戶的真實需求??焖僭湍P瓦m合在用戶需求不明確的情況下開發(fā)軟件。2.快速原型模型23電子工程學院快速原型模型是快速建立起可以在計算機上運行的程快速原型模型的開發(fā)過程24電子工程學院快速原型模型的開發(fā)過程24電子工程學院
使用增量模型開發(fā)軟件時,把軟件產(chǎn)品作為一系列的增量構件來設計、編碼、集成和測試。每個構件由多個相互作用的模塊構成,并且能夠完成特定的功能。使用增量模型時,第一個增量構件往往實現(xiàn)軟件的基本需求,提供最核心的功能。下面給出增量模型的開發(fā)過程。3.增量模型25電子工程學院使用增量模型開發(fā)軟件時,把軟件產(chǎn)品作為一系列的需求分析驗證規(guī)格說明驗證概要設計驗證維護針對每個構件,完成詳細設計、編碼和集成,經(jīng)測試后交付給用戶增量模型的開發(fā)過程26電子工程學院需求分析規(guī)格說明概要設計維護針對每個構件,完成詳細設計、編碼【例】軟件生命周期是指一個軟件從提出開發(fā)要求開始直到
為止的整個時期。答案:報廢瀑布模型屬于整體開發(fā)模型,增量模型屬于
開發(fā)模型。答案:非整體
說明軟件文檔的概念。答案:軟件文檔是有關軟件的功能、設計使用的文字和圖形資料。說明快速原型模型的優(yōu)點。答案:能夠及早發(fā)現(xiàn)問題,隨時糾正錯誤;減少技術應用風險,提高生產(chǎn)率;適應需求變化,能夠有效提高系統(tǒng)質量。27電子工程學院【例】軟件生命周期是指一個軟件從提出開發(fā)要求開始直到三、結構化的軟件開發(fā)方法
結構化的軟件開發(fā)方法包括結構化分析(SA方法)、結構化設計(SD方法)和結構化程序設計(SP方法)。
SA方法用于需求分析階段;
SD方法用于總體設計階段;
SP方法用于詳細設計及編碼階段。28電子工程學院三、結構化的軟件開發(fā)方法結構化的軟件開發(fā)方法包括結1.需求分析的任務需求分析是發(fā)現(xiàn)、求精、建模、規(guī)格說明和復審的過程。系統(tǒng)分析員首先要準確地了解用戶當前的情況和需要解決的問題,然后反復求精多次細化。最終以軟件需求規(guī)格說明書的形式完整、準確和具體的表示出用戶對目標系統(tǒng)的要求。軟件需求規(guī)格說明書可以作為軟件開發(fā)人員與用戶之間的軟件開發(fā)合同,又是軟件最終驗收的依據(jù)。3.1需求分析29電子工程學院1.需求分析的任務3.1需求分析29電子工程學院
結構化分析實質上是一種創(chuàng)建模型的活動。通過需求分析而建立的模型必須達到下述的三個基本目標:(1)描述用戶的需求。(2)為軟件設計工作奠定基礎。(3)定義一組需求,一旦開發(fā)出軟件產(chǎn)品之后,就可以用這組需求作為標準驗收軟件。結構化分析所建立的模型包括:描述數(shù)據(jù)對象的實體-關系圖;描述系統(tǒng)邏輯模型的數(shù)據(jù)流圖;描述系統(tǒng)狀態(tài)及狀態(tài)轉換的狀態(tài)轉換圖。2.分析建模30電子工程學院結構化分析實質上是一種創(chuàng)建模型的活動。通過需求
實體-關系圖來建立數(shù)據(jù)模型。其中包含了實體(即數(shù)據(jù)對象)、關系和屬性等三種基本成分。(1)實體(數(shù)據(jù)對象)是具有一組性質或屬性的復合信息,用矩形框表示;(2)實體間的關系用菱形框表示;(3)屬性是實體或關系的性質,即實體或關系的值,用橢圓框表示。實體之間的關系分為1:1、1:N和M:N聯(lián)系。實體-關系圖(E-R圖)31電子工程學院實體-關系圖來建立數(shù)據(jù)模型。其中包含了實體(即【例】學校教學管理的E-R圖32電子工程學院【例】學校教學管理的E-R圖32電子工程學院
信息在系統(tǒng)流動,實質上經(jīng)歷了一系列的變換。數(shù)據(jù)流圖描述了信息從輸入到輸出的一系列變換。數(shù)據(jù)流圖具有四種成份:(1)系統(tǒng)的源點或終點:屬于系統(tǒng)之外的人員或組織,用表示。(2)加工:具有邏輯加工能力,對數(shù)據(jù)進行變換處理,用或圓圈表示。(3)數(shù)據(jù)存儲:用于存儲數(shù)據(jù),用表示。(4)數(shù)據(jù)流:系統(tǒng)中數(shù)據(jù)的流向,用表示。4.數(shù)據(jù)流圖(DFD圖)33電子工程學院信息在系統(tǒng)流動,實質上經(jīng)歷了一系列的變換。數(shù)據(jù)
結構化分析運用了“分解”和“抽象”的手段,采用“自頂向下,逐層分解”的分析思路,將系統(tǒng)的加工邏輯用分層數(shù)據(jù)流圖(分層DFD圖)來表示。S1321.11.2頂層數(shù)據(jù)流圖0層數(shù)據(jù)流圖1層數(shù)據(jù)流圖分層數(shù)據(jù)流圖34電子工程學院結構化分析運用了“分解”和“抽象”的手段,采
接受項目裁判送來的比賽成績單,使用項目文件和運動員文件,將成績錄入到比賽成績文件。成績查詢時根據(jù)運動員文件和比賽成績文件產(chǎn)生項目比賽成績,送大會秘書處。繪制運動會成績處理的0層數(shù)據(jù)流圖?!纠窟\動會成績處理過程如下:35電子工程學院接受項目裁判送來的比賽成績單,使用項目文件和運
數(shù)據(jù)字典用于對數(shù)據(jù)流圖中的成份進行進一步精確、嚴格的定義,數(shù)據(jù)字典中的條目由數(shù)據(jù)流、數(shù)據(jù)存儲和加工的定義組成。數(shù)據(jù)字典中所使用的符號如下:=表示等價于(或定義為)+表示和(即,連接兩個分量)[|]表示或(即,從方括弧內(nèi)列出的若干個分量中選擇一個),通常用“|”號分開供選擇的分量{}表示重復(即,重復花括弧內(nèi)的分量)()表示可選(即,圓括弧里的分量可有可無
..表示數(shù)據(jù)的范圍5.數(shù)據(jù)字典36電子工程學院數(shù)據(jù)字典用于對數(shù)據(jù)流圖中的成份進行進一步精確、(1)描述身份證號的條目。身份證號=省+市+區(qū)(縣)+出生日期+編號出生日期=年+月+日月=1..12日=1..31(2)描述班級考試成績表的條目班級考試成績表={學號+課程號+姓名+課程名+成績}成績=[優(yōu)|良|中|及格|不及格]【例】數(shù)據(jù)字典條目舉例。37電子工程學院(1)描述身份證號的條目。【例】數(shù)據(jù)字典條目舉例。37電子工(1)結構化語言結構化語言是介于自然語言和形式語言之間的一種半形式化語言。它是在自然語言的基礎上增加一些限定,使用有限的詞匯和有限的語句來描述加工邏輯,它的結構可分為外層和內(nèi)層兩層。外層:用來描述控制結構,采用順序、選擇、重復三種基本結構。內(nèi)層:一般采用祈使語句。
對加工條目的描述稱為小說明,可以采用結構化語言、判定表和判定樹等形式。38電子工程學院(1)結構化語言對加工條目的描述稱為小說明,可以采
在有些情況下,每個加工的一組動作依賴于多個邏輯條件的取值。用判定表能夠更清晰、嚴謹?shù)乇硎緩碗s的條件組合與相應動作之間的對應關系。判定表由四個部分組成。列出所有條件所有可能的動作各種條件組合的矩陣每種條件組合相對應的動作(2)判定表39電子工程學院在有些情況下,每個加工的一組動作依賴于多個邏輯
判定樹是判定表的變形,一般情況下它比判定表更直觀,且易于理解和使用?!纠磕彻S對部分職工重新分配工作的政策:
年齡在20歲以下者,初中文化程度脫產(chǎn)學習,高中文化程度當電工;年齡在20歲至40歲之間者,中學文化程度男性當鉗工,女性當車工,大學文化程度當技術員;年齡在40歲以上者,中學文化程度當材料員,大學文化程度當技術員。
分別用結構化語言、判定表和判定樹描述上述問題的加工邏輯。(3)判定樹40電子工程學院判定樹是判定表的變形,一般情況下它比判定表更直IF年齡<20THENIF文化程度=初中THEN脫產(chǎn)學習
ELSE工作為電工
ENDIFELSEIF年齡≤40THENIF文化程度=大學THEN工作為技術員
ELSEIF性別=男THEN工作為鉗工
ELSE工作為車工
ENDIFENDIFELSEIF文化程度=大學THEN工作為技術員
ELSE工作為材料員
ENDIFENDIFENDIF(1)用結構化語言描述41電子工程學院IF年齡<20THEN(1)用結構化語言描述41電子
為了能夠使判定表簡潔,可以先采用條件取值表定義條件取值的符號。(2)用判定表描述42電子工程學院為了能夠使判定表簡潔,可以先采用條件取值表定義(3)用判定表描述43電子工程學院(3)用判定表描述43電子工程學院(3)用判定樹描述44電子工程學院(3)用判定樹描述44電子工程學院需求規(guī)格說明書的作用不包括()。
A.軟件驗收的依據(jù)
B.用戶與開發(fā)人員對軟件要做什么的共同理解
C.軟件可行性研究的依據(jù)
D.軟件設計的依據(jù)答案:C數(shù)據(jù)字典是用來定義__中的各個成份的具體含義的。()
A.流程圖 B.功能結構圖
C.系統(tǒng)結構圖 D.數(shù)據(jù)流圖答案:D【例】45電子工程學院需求規(guī)格說明書的作用不包括()。
A.軟件驗收的依據(jù)
B.民航計算行李托運費的算法行李重量不超過30公斤免費托運,對于超過30公斤部分,按以下規(guī)則收費:(1)國內(nèi)非殘疾頭等艙乘客,每公斤收取4元;國內(nèi)非殘疾非頭等艙乘客,每公斤收取6元。(2)國內(nèi)殘疾頭等艙乘客,每公斤收取2元;國內(nèi)殘疾非頭等艙乘客,每公斤收取3元。(3)國外非殘疾頭等艙乘客,每公斤收取8元;國外非殘疾非頭等艙乘客,每公斤收取12元。(4)國外殘疾頭等艙或非頭等艙乘客,每公斤收取4元?!纠?6電子工程學院民航計算行李托運費的算法行李重量不超過30公斤免費托運,對于用判定表表示計算行李費的算法47電子工程學院用判定表表示計算行李費的算法47電子工程學院用判定樹表示計算行李費的算法48電子工程學院用判定樹表示計算行李費的算法48電子工程學院數(shù)據(jù)流圖(DFD)是()方法中用于表示系統(tǒng)邏輯模型的一種圖形工具。
A.SA B.SDC.SP D.SC答案:A軟件需求分析的主要任務是準確地定義出所要開發(fā)的軟件系統(tǒng)()。
A.如何做 B.怎么做C.做什么 D.對誰做答案:C需求分析是分析員充分了解用戶的要求,認真細致地調研、分析,最終建立目標系統(tǒng)的邏輯模型并寫出()的過程。
A.模塊說明書B.軟件規(guī)格說明
C.項目開發(fā)計劃D.合同文檔 答案:B【例】49電子工程學院數(shù)據(jù)流圖(DFD)是()方法中用于表示系統(tǒng)邏輯模型的一種數(shù)據(jù)流圖中的箭頭表示
。答案:數(shù)據(jù)流數(shù)據(jù)流圖(DFD圖)的作用是
。答案:在SA方法中用于表示系統(tǒng)邏輯模型的一種工具,它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程。結構化分析方法是以數(shù)據(jù)流圖、
和加工說明等描述工具,即用直觀的圖和簡潔的語言來描述軟件系統(tǒng)模型。答案:數(shù)據(jù)字典【例】50電子工程學院數(shù)據(jù)流圖中的箭頭表示?!纠?0電子工程招聘考試考核數(shù)學、英語、計算機三門課程。錄取規(guī)則如下:
(1)總分240分(含)以上錄??;
(2)總分180分(不含)以下,或其中兩門在60分(不含)以下的不錄取;
(3)其它分數(shù)如果全部在60分(含)以上,需要參加面試再決定是否錄??;如果有一門60分(不含)以下,需要復試該課程再決定是否錄取。
畫出錄取規(guī)則判定表?!纠?1電子工程學院招聘考試考核數(shù)學、英語、計算機三門課程。錄取規(guī)則如下:
(1錄取規(guī)則判定表52電子工程學院錄取規(guī)則判定表52電子工程學院1.總體設計的基本任務及文檔在進行軟件結構化設計之前首先進行軟件需求分析,也就是說結構化分析的結果是結構化設計的依據(jù)。3.2總體設計(概要設計)53電子工程學院1.總體設計的基本任務及文檔3.2總體設計(概要設計)(1)設計軟件系統(tǒng)結構將復雜的系統(tǒng)按功能劃分模塊;確定每個模塊的功能;確定模塊之間的調用關系;確定模塊之間的接口,即模塊之間傳遞的信息;評價模塊結構的質量。(2)設計數(shù)據(jù)結構和數(shù)據(jù)庫(3)編寫概要設計文檔(4)評審總體設計的基本任務54電子工程學院(1)設計軟件系統(tǒng)結構總體設計的基本任務54電子工程學院(1)概要設計說明書;(2)數(shù)據(jù)庫設計說明書;(3)進一步補充需求分析階段編寫的用戶手冊;(4)修改測試計劃,對測試策略、方法、步驟提出明確的要求??傮w設計的文檔內(nèi)容55電子工程學院(1)概要設計說明書;總體設計的文檔內(nèi)容55電子工程學院(1)模塊化模塊化就是把程序劃分成獨立命名并且可以獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能,滿足用戶的需求。
模塊數(shù)量與軟件成本之間的關系2.軟件設計的基本原理56電子工程學院(1)模塊化模塊數(shù)量與軟件成本之間的關系2.軟件設計①模塊可分解性:通過模塊分解,可以有效的降低整個系統(tǒng)的復雜性。②模塊可組裝性:模塊化可以有效的提高代碼的重用性。模塊可理解性:每個模塊都是功能相對獨立的單元,從而易于構造、易于修改。模塊可維護性:對個別模塊的修改,不會造成整個系統(tǒng)的修改,減少維護的副作用,提高系統(tǒng)的可維護性。模塊保護性:一個模塊內(nèi)出現(xiàn)異常情況時,其影響僅局限于該模塊內(nèi)部。軟件結構的評價標準57電子工程學院①模塊可分解性:通過模塊分解,可以有效的降低整個系統(tǒng)的復
在對系統(tǒng)進行模塊化分解過程中,體現(xiàn)了由抽象到具體,逐步求精的過程。(3)信息隱蔽一個模塊內(nèi)部的信息(過程和數(shù)據(jù)),在模塊外部是不能訪問的。(4)模塊獨立性模塊的獨立性體現(xiàn)在模塊內(nèi)部各元素聯(lián)系的緊密程度和模塊之間聯(lián)系的緊密程度,分別稱為模塊的內(nèi)聚性和耦合性。為了提高模塊的獨立性,應當做到高內(nèi)聚、低耦合。(2)抽象與求精58電子工程學院在對系統(tǒng)進行模塊化分解過程中,體現(xiàn)了由抽象到具
耦合是對一個軟件結構內(nèi)不同模塊之間相互依賴程度的度量。耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據(jù)。模塊間的耦合度會影響到系統(tǒng)的可理解性、可測試性、可靠性和可維護性。耦合59電子工程學院耦合是對一個軟件結構內(nèi)不同模塊之間相互依賴程度①內(nèi)容型:一個模塊直接引用另一個模塊內(nèi)部的信息,或通過非正常入口而轉入另一個模塊內(nèi)部。例如一個模塊直接訪問另一個模塊的局部變量。②公共型:兩個模塊引用共同的全程數(shù)據(jù)區(qū)。例如模塊之間使用全局變量。③控制型:一個模塊傳送給另一個模塊的信息是用于控制該模塊內(nèi)部邏輯的控制信號。例如傳遞的參數(shù)是控制信號。④標記型:一個模塊傳送給另一個模塊的參數(shù)是一個復合的數(shù)據(jù)結構。例如傳遞的參數(shù)是結構體數(shù)據(jù)或數(shù)組。6種耦合類型(按耦合度由大到小排列)60電子工程學院①內(nèi)容型:一個模塊直接引用另一個模塊內(nèi)部的信息,或通過非正⑤數(shù)據(jù)型:一個模塊傳送給另一個模塊的參數(shù)是單個的數(shù)據(jù)項。例如參數(shù)為簡單的數(shù)據(jù),且采用值傳遞方式。⑥無直接型:模塊之間沒有直接的關系,相互之間不傳遞任何信息。例如模塊之間沒有參數(shù)傳遞,也沒有返回值等。
在設計軟件結構時,通常采用以下耦合原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合,完全不用內(nèi)容耦合。61電子工程學院⑤數(shù)據(jù)型:一個模塊傳送給另一個模塊的參數(shù)是單個的數(shù)據(jù)項。在
內(nèi)聚是衡量一個模塊內(nèi)各個元素彼此結合的緊密程度。模塊的內(nèi)聚性與信息隱蔽和局部化概念直接相關。6種內(nèi)聚類型(按內(nèi)聚性由小到大排列):①偶然型:模塊內(nèi)各元素沒有聯(lián)系,即各元素的功能沒有任何關系。邏輯型:模塊內(nèi)各元素在邏輯上具有相似的功能。內(nèi)聚62電子工程學院內(nèi)聚是衡量一個模塊內(nèi)各個元素彼此結合的緊密程度
時間型:將需要同時執(zhí)行的元素放在同一個模塊中。例如初始化模塊對各變量置初值,打開多個文件等是在同一時間進行的。通信型:模塊中的元素引用共同的數(shù)據(jù)。例如一個模塊中的各元素共享某一數(shù)據(jù)。順序型:模塊中某個元素的輸出是另一個元素的輸入。例如在一個模塊中首先計算n數(shù)之和,再求平均值。63電子工程學院時間型:將需要同時執(zhí)行的元素放在同一個模塊中。63電子工程⑥功能型:模塊中僅包括完成某個具體任務所必需的所有元素。例如一個模塊中的各元素完成某一獨立的功能。
在實際應用中也沒有必要過分追求模塊的內(nèi)聚性,因為模塊的內(nèi)聚性過高,往往會使模塊的數(shù)量增多,增加模塊接口的成本,從而提高軟件的成本。內(nèi)聚和耦合是密切相關的,模塊內(nèi)部的高內(nèi)聚往往意味著模塊之間的低耦合。64電子工程學院⑥功能型:模塊中僅包括完成某個具體任務所必需的所有元素。6
軟件結構圖用于表達軟件內(nèi)部各部分的組織結構和相互關系。圖中一個方框代表一個模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭(或直線)表示模塊的調用關系(如果含有判定調用,用菱形表示;如果含有循環(huán)調用,用弧形箭頭表示)。在結構圖中用帶注釋的箭頭表示模塊調用和返回時傳遞的信息。箭頭尾部是空心圓表示傳遞的是數(shù)據(jù)信息,實心圓表示傳遞的是控制信息。下面給出結構圖中含有判定調用和循環(huán)調用的兩個例子。3.軟件結構圖65電子工程學院軟件結構圖用于表達軟件內(nèi)部各部分的組織結構和相【例】確定是否錄取學生的軟件結構圖(含有判定調用)。66電子工程學院【例】確定是否錄取學生的軟件結構圖(含有判定調用)。66電子其中累計生產(chǎn)值計算模塊被循環(huán)調用;下層三個模塊又被循環(huán)調用?!纠磕彻S生產(chǎn)10種產(chǎn)品。統(tǒng)計員按產(chǎn)品分別記錄每天的生產(chǎn)量,到月末對每種產(chǎn)品分別形成一份生產(chǎn)統(tǒng)計表。共有10份統(tǒng)計表,在每份表中記錄了這個月該產(chǎn)品每天生產(chǎn)量,要求計算每種產(chǎn)品在這個月中的平均日產(chǎn)量。67電子工程學院其中累計生產(chǎn)值計算模塊被循環(huán)調用;下層三個模塊又被循環(huán)調用。
在設計了軟件的初始結構后,需要根據(jù)軟件結構準則對軟件結構進行優(yōu)化。下面給出7條軟件結構準則:(1)改進軟件結構提高模塊獨立性,盡可能做到高內(nèi)聚,低耦合。(2)模塊規(guī)模應該適中,提高模塊的獨立性,增加可理解性。(3)深度、寬度、扇出和扇入都應適當。深度和寬度可反映出系統(tǒng)的復雜程度。深度指軟件結構圖中控制的層次;寬度指軟件結構圖內(nèi)同一層次上模塊個數(shù)的最大值。深度和寬度可反映出系統(tǒng)的復雜程度。4.軟件結構準則68電子工程學院在設計了軟件的初始結構后,需要根據(jù)軟件結構準則
一個模塊擁有的直接下級被調用模塊的個數(shù)叫模塊的扇出數(shù)。如果一個模塊的扇出數(shù)過大,則該模塊往往包含過多的功能,應將其按功能進行分解。一個模塊的直接上級主調模塊的個數(shù)叫模塊的扇入數(shù)。如果扇入數(shù)大,說明模塊的重用率高,這是有好處的,但不能違背模塊的獨立性而單純追求高扇入。(4)模塊的作用范圍應在其控制范圍之內(nèi),且含有判定功能的模塊與受其影響的模塊在層次上盡量靠近。69電子工程學院一個模塊擁有的直接下級被調用模塊的個數(shù)叫模塊的扇出數(shù)
一個模塊的作用范圍就是這個模塊內(nèi)一個判定的作用范圍。一個判定的作用范圍是指所有受這個判定影響的那些模塊,只要模塊中含有一些依賴于這個判定的操作,那么這個模塊就在這個判定的作用范圍之內(nèi)。一個模塊的控制范圍是指該模塊本身及該模塊的所有下屬模塊??刂品秶菑慕Y構方面來考慮的,而作用范圍是從功能方面考慮的。下面是關于模塊的作用范圍、控制范圍的例子。模塊的作用范圍、控制范圍含義70電子工程學院一個模塊的作用范圍就是這個模塊內(nèi)一個判定的作用范【例】模塊的作用范圍、控制范圍的例子71電子工程學院【例】模塊的作用范圍、控制范圍的例子71電子工程學院(5)降低模塊接口的復雜程度,從而含義明確,易于理解、實現(xiàn)、測試和維護。(6)設計單入口單出口的模塊,每個模塊具有一個入口和一個出口。(7)模塊功能應該可以預測。72電子工程學院(5)降低模塊接口的復雜程度,從而含義明確,易于理解、實現(xiàn)、
面向數(shù)據(jù)流的設計方法是把數(shù)據(jù)流圖映射成軟件結構,數(shù)據(jù)流圖分為變換型和事務型兩種類型。數(shù)據(jù)流圖映射成軟件結構圖的方法變換分析事務分析5.面向數(shù)據(jù)流的設計方法73電子工程學院面向數(shù)據(jù)流的設計方法是把數(shù)據(jù)流圖映射成軟件結構將變換型數(shù)據(jù)流圖映射成軟件結構圖f1為物理輸入f2為邏輯輸入f4為物理輸出f2為邏輯輸出74電子工程學院將變換型數(shù)據(jù)流圖映射成軟件結構圖f1為物理輸入f4為物理輸出事務中心將事務型數(shù)據(jù)流圖映射成軟件結構圖75電子工程學院事務中心將事務型數(shù)據(jù)流圖映射成軟件結構圖75電子工程學院當一個模塊直接使用另一個模塊的內(nèi)部數(shù)據(jù),這種模塊之間的耦合為()。
A.數(shù)據(jù)耦合 B.公共耦合
C.標記耦合 D.內(nèi)容耦合答案:D在結構化設計方法中,____方法用于需求分析階段。()
A.SA B.SD
C.SP D.以上3種方法答案:A【例】76電子工程學院當一個模塊直接使用另一個模塊的內(nèi)部數(shù)據(jù),這種模塊之間的耦合為為高質量地開發(fā)軟件項目,在軟件結構設計時,必須遵循_____原則。()
A.信息隱蔽 B.質量控制
C.程序優(yōu)化 D.數(shù)據(jù)共享答案:A數(shù)據(jù)耦合、公共耦合、標記耦合、控制耦合的耦合性從低到高的順序是(
)。
A.數(shù)據(jù)、公共、標記、控制B.數(shù)據(jù)、標記、控制、公共
C.控制、數(shù)據(jù)、標記、公共D.控制、數(shù)據(jù)、公共、標記答案:B【例】77電子工程學院為高質量地開發(fā)軟件項目,在軟件結構設計時,必須遵循_____軟件概要設計結束后得到()。
A.初始化的軟件結構圖 B.優(yōu)化后的軟件結構圖
C.模塊詳細的算法 D.程序編碼答案:B通信內(nèi)聚、邏輯內(nèi)聚、順序內(nèi)聚和時間內(nèi)聚的內(nèi)聚性從高到低順序是()。
A.通信、邏輯、順序、時間B.通信、時間、順序、邏輯
C.順序、通信、時間、邏輯D.順序、通信、邏輯、時間答案:C【例】78電子工程學院軟件概要設計結束后得到()。
A.初始化的軟件結信息隱蔽概念與()這一概念直接的相關。
A.模塊的獨立性B.模塊類型的劃分
C.軟件結構定義D.軟件生命周期答案:A數(shù)據(jù)耦合和控制耦合相比,則()成立。
A.數(shù)據(jù)耦合的耦合性強
B.控制耦合的耦合性強
C.兩者的耦合性相當
D.兩者的耦合性需要根據(jù)具體情況分析答案:B【例】79電子工程學院信息隱蔽概念與()這一概念直接的相關。
A.模軟件概要設計關鍵的一步是
,它直接影響下一階段詳細設計和編碼的工作。答案:軟件結構的設計軟件結構圖的寬度是指一層中___的模塊個數(shù)。答案:最多軟件結構圖的深度是指___。答案:軟件結構圖的層次數(shù)模塊的作用范圍是指___。答案:受該模塊內(nèi)一個判定條件影響的所有模塊。模塊的控制范圍是指___。答案:模塊本身以及所有下屬模塊的集合【例】80電子工程學院軟件概要設計關鍵的一步是,它直接影響下一階段詳一個進行學生成績統(tǒng)計的模塊其功能是先對學生的成績進行累加,然后求平均值,則該模塊的內(nèi)聚性是___。答案:順序型內(nèi)聚某個模塊的主要功能是:保留現(xiàn)場,關閉文件,中止程序運行。那么該模塊的內(nèi)聚性是___。答案:時間型內(nèi)聚控制耦合、內(nèi)容耦合、標記耦合、數(shù)據(jù)耦合,信息隱蔽性能最好的是___。答案:數(shù)據(jù)耦合當A模塊調用B模塊時,若兩個模塊之間傳遞的是單個數(shù)值,則這兩個模塊的耦合方式是
。答案:數(shù)據(jù)耦合【例】81電子工程學院一個進行學生成績統(tǒng)計的模塊其功能是先對學生的成績進行累加,然3.3詳細設計詳細設計的基本任務1.為每個模塊進行詳細的處理過程的算法設計2.為模塊內(nèi)的數(shù)據(jù)結構進行設計。3.對數(shù)據(jù)庫進行物理設計,即確定數(shù)據(jù)庫的物理結構。4.其他設計。包括數(shù)據(jù)信息代碼的設計、輸入輸出格式的設計、人機交互界面的設計等。5.編寫詳細設計說明書。6.評審。82電子工程學院3.3詳細設計詳細設計的基本任務82電子工程學院結構化程序設計
結構化設計是對軟件總體結構的設計,即設計軟件的宏觀結構;結構化程序設計是設計每個模塊內(nèi)部的處理過程,即設計軟件的微觀過程,實現(xiàn)模塊的功能。結構化程序設計應遵循的準則:
(1)使用三種基本邏輯結構(順序、選擇、循環(huán));
(2)用基本邏輯組成的“塊”應容易識別;
(3)每個“塊”具有單入口和單出口;
(4)基本結構可以并列,可以嵌套;
(5)易于轉換成程序代碼,容易修改。83電子工程學院結構化程序設計結構化設計是對軟件總體結構的設計,即設詳細設計的工具
詳細設計的工具是指描述程序處理過程的工具。它們可以分為圖形、表格和語言三類。流程圖84電子工程學院詳細設計的工具詳細設計的工具是指描述程序處理過程的工2.N-S圖(盒圖)85電子工程學院2.N-S圖(盒圖)85電子工程學院3.PAD圖86電子工程學院3.PAD圖86電子工程學院PAD圖的控制流程為自上而下,從左到右的執(zhí)行。采用PAD圖逐步求精定義處理過程87電子工程學院PAD圖的控制流程為自上而下,從左到右的執(zhí)行。采用PAD圖逐4.過程設計語言(PDL)PDL也稱為偽碼,它是用正文形式表示數(shù)據(jù)和處理過程的詳細設計工具。一般說來PDL是一種“混雜”語言,它使用一種語言(通常是某種自然語言)的詞匯,同時卻使用另一種語言(某種結構化的程序設計語言)的語法。88電子工程學院4.過程設計語言(PDL)PDL也稱為偽碼,它是用正【例】將下面用PDL描述的處理過程改用PAD圖描述。WHILEADOIFX>0THENX1ELSEX2ENDIFS1IFZ>0THENZ1IFW>0THENW1ELSEW2ENDIFELSEZ2ENDIFS2ENDWHILE89電子工程學院【例】將下面用PDL描述的處理過程改用PAD圖描述。WHIL用PAD圖進行描述90電子工程學院用PAD圖進行描述90電子工程學院【例】程序的三種基本控制結構的共同特點是()。
A.只能用來描述簡單程序 B.不能嵌套使用
C.單入口,單出口 D.僅用于自動控制系統(tǒng)答案:C結構化程序設計采用的三種基本結構是()。
A.順序、分支、選擇 B.選擇、循環(huán)、重復
C.順序、選擇、重復 D.輸入、變換、輸出答案:C詳細描述處理過程常用的三種工具是()。
A.SA,SD,SP B.程序流程圖,IPO,PAD
C.SA,SC,SD D.圖形,表格,語言答案:D91電子工程學院【例】程序的三種基本控制結構的共同特點是()。
A.只能【例】試比較程序流程圖與PAD圖的特點。
這兩種方法均為詳細設計階段所使用的圖形工具。(1)程序流程圖直觀清晰,易于使用。但控制流程線不易限制,易造成非結構化的程序結構;不易反映逐步求精的過程;不易表示數(shù)據(jù)結構。(2)PAD圖是一種由左往右展開的二維樹型結構,能夠清晰地反映程序的層次結構,支持逐步求精的設計方法,易寫易讀,使用方便;可自動生成程序,支持結構化程序設計原理。92電子工程學院【例】試比較程序流程圖與PAD圖的特點。這兩種方法均【例】簡述程序流程圖的缺點和克服方法。
流程圖的缺點有三個方面,(1)控制流程線不易限制,易造成非結構化的程序結構;(2)不易反映逐步求精的過程;(3)不易表示數(shù)據(jù)結構。為了克服流程圖的缺陷,要求流程圖都應由三種基本結構順序組合或完整嵌套而成,不能出現(xiàn)相互交叉的情況,這樣的流程圖是結構化的流程圖。93電子工程學院【例】簡述程序流程圖的缺點和克服方法。流程圖的缺點有3.4軟件編碼
所謂編碼就是把軟件設計翻譯成計算機可以理解的形式——用某種程序設計語言書寫的程序代碼。程序的質量主要取決于軟件設計的質量。但是,所選用的程序設計語言的特點和編碼風格也會對程序的可靠性、可讀性、可測試性和可維護性產(chǎn)生深遠的影響。94電子工程學院3.4軟件編碼所謂編碼就是把軟件設計翻譯成計算機程序設計語言特性1.心理特性語言的心理特性是指影響程序員心理的語言性能,包括:歧義性、簡潔性、局部性、順序性和傳統(tǒng)性。2.工程特性從考慮軟件開發(fā)項目的需要出發(fā),對軟件編碼有如下要求:可移植性,開發(fā)工具的可利用性,軟件的可重用性,可維護性。3.技術特性根據(jù)項目的特性選擇相應特性的語言,滿足設計的需求。95電子工程學院程序設計語言特性1.心理特性95電子工程學院程序設計風格1.源程序文檔化(1)標識符的命名標識符作為模塊名、變量名、常量名等,其命名應當具有一定的實際意義,做到“見名知義”。(2)程序的注釋源程序中添加必要的注釋,提高程序的可理解性。注釋有以下兩個方面:序言性注釋:位于每個程序模塊的開頭,對模塊的功能、調用形式、參數(shù)等加以說明,以及對模塊的修改記錄。功能性注釋:位于源程序中,用于說明語句或語句塊的功能。96電子工程學院程序設計風格1.源程序文檔化96電子工程學院(3)程序的視覺組織
程序的視覺組織是指源程序中適當加空格、空行和語句行的縮進,這樣有助于分清程序的層次結構,提高程序的可理解性。2.數(shù)據(jù)說明數(shù)據(jù)說明有一定的次序,對于復雜的數(shù)據(jù)結構加以注釋。3.語句結構語句的構造應該簡單、直接,不能為了追求效率而使語句復雜化。97電子工程學院(3)程序的視覺組織程序的視覺組織是指源程序中適當加空4.輸入/輸出風格有關輸入/輸出風格的規(guī)則:對所有輸入數(shù)據(jù)都進行檢驗;檢查輸入項重要組合的合法性;保持輸入格式簡單;使用數(shù)據(jù)結束標記,避免指定輸入數(shù)據(jù)的個數(shù);給出交互式輸入的提示,并詳細說明可用的輸入選擇或邊界值;當程序設計語言對格式有嚴格要求時,應保持輸入格式一致;設計良好的輸出報表;給所有輸出數(shù)據(jù)加標志。98電子工程學院4.輸入/輸出風格有關輸入/輸出風格的規(guī)則:98電子工5.程序的效率
程序的效率主要指程序運行過程中占用處理機的時間和存儲器的容量兩個方面。在保證程序的清晰性和可讀性的前提下,追求程序的時間和空間效率,從而提高軟件的性能?!纠砍绦蛟O計語言的心理特性在語言中的表現(xiàn)不應當包括()。
A.歧義性 B.簡潔性
C.保密性 D.傳統(tǒng)性答案:C99電子工程學院5.程序的效率程序的效率主要指程序運行過程中占用【例】源程序文檔化要求在每個模塊之前加序言性注釋,該注釋內(nèi)容不包括有()。
A.模塊的功能 B.語句的功能
C.模塊的接口 D.開發(fā)歷史答案:B為了具有良好的程序設計風格,應注意哪些方面的問題?答案:源程序文檔化、數(shù)據(jù)說明、語句構造、輸入輸出以及對效率的追求等幾個方面。為增加軟件的可移植性應注意的問題是什么?答案:在軟件結構方面,體現(xiàn)模塊的獨立性高;在編碼方面,在滿足開發(fā)軟件需求的前提下選擇高級語言編寫源程序。100電子工程學院【例】源程序文檔化要求在每個模塊之前加序言性注釋,該注釋內(nèi)容四、軟件測試4.1軟件測試概述軟件開發(fā)總是伴隨著軟件質量保證的活動,而軟件測試是主要活動之一。軟件測試代表了需求分析、設計、編碼的最終復審。大量統(tǒng)計資料表明,軟件測試的工作量往往占軟件開發(fā)總工作量的40%以上。測試的目的是發(fā)現(xiàn)軟件中的各種錯誤,發(fā)現(xiàn)錯誤之后還必須診斷并改正錯誤,這就是調試的目的。101電子工程學院四、軟件測試4.1軟件測試概述101電子工程學院軟件測試的原則1.測試用例應由輸入數(shù)據(jù)和預期的輸出數(shù)據(jù)兩部分組成。2.測試用例不僅選用合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù)。3.除了檢查程序是否做了它應該做的,還應該檢查程序是否做了它不應該做的。4.應制定測試計劃并嚴格執(zhí)行,排除隨意性。5.長期保留測試用例。6.對發(fā)現(xiàn)錯誤較多的程序段,應進行更深入的測試。7.程序員應當避免測試自己的程序。102電子工程學院軟件測試的原則1.測試用例應由輸入數(shù)據(jù)和預期的輸出數(shù)據(jù)兩部4.2軟件測試方法
軟件測試方法一般分為動態(tài)測試方法與靜態(tài)測試方法。動態(tài)測試方法又分為黑盒測試法和白盒測試法。1.靜態(tài)測試靜態(tài)測試是指被測程序不在機器上運行,而是采用人工檢測和計算機輔助靜態(tài)分析的手段對程序進行檢測。
2.動態(tài)測試動態(tài)測試指通過運行程序發(fā)現(xiàn)錯誤。動態(tài)測試一般有兩種方法,分別稱為黑盒測試法和白盒測試法。103電子工程學院4.2軟件測試方法軟件測試方法一般分為動態(tài)測試方黑盒測試法
黑盒測試法把被測對象看成一個黑盒子,完全不考慮被測對象的內(nèi)部結構和處理過程,只是對功能和接口進行的測試,檢查其功能是否能夠按照規(guī)格說明書的規(guī)定正常使用,是否能適當?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息。黑盒測試又稱為功能測試。104電子工程學院黑盒測試法黑盒測試法把被測對象看成一個黑盒子,完全不考慮白盒測試法
白盒測試法是把模塊看成一個透明的白盒子,測試人員必須完全了解模塊內(nèi)部的結構和處理過程,按照模塊內(nèi)部的邏輯設計測試用例進行測試,檢驗邏輯結構中的每條通路是否都能按預定要求正確工作。白盒測試又稱為結構測試。105電子工程學院白盒測試法白盒測試法是把模塊看成一個透明的白盒子,測軟件測試準則(1)所有的測試都應該能追溯到用戶需求。(2)應當在測試開始之前制定出測試計劃。(3)測試中所發(fā)現(xiàn)的80%的錯誤很可能是由程序中20%的模塊造成的。(4)測試應該從“小規(guī)?!遍_始,并逐步進行“大規(guī)?!睖y試。(5)窮舉測試是不可能的。(6)為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。106電子工程學院軟件測試準則(1)所有的測試都應該能追溯到用戶需求。106電程序圖
在設計測試方案時,通常用程序圖描述程序的控制流程,在程序圖中并不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。程序圖可以表示程序控制流程的復雜程度。在程序圖中用圓表示結點,一個圓代表一條或多條語句。程序流程圖中的一個順序處理框序列和一個菱形判定框,可以映射為程序圖中的一個結點。程序圖中的箭頭線稱為邊,它和程序流程圖中的箭頭線類似,代表控制流。在程序圖中一條邊必須終止于一個結點。由邊和結點圍起來的部分稱為區(qū)域。程序圖中區(qū)域的個數(shù)=流程圖中判定框個數(shù)+1107電子工程學院程序圖在設計測試方案時,通常用程序圖描述程序的控制流程,【例】由程序流程圖映射程序圖程序圖中的結點代表流程圖中的判定框和處理框。程序圖中的邊代表流程圖中的控制流向。流程圖中有3個判定框,程序圖中有4個區(qū)域。108電子工程學院【例】由程序流程圖映射程序圖程序圖中的結點代表流程圖中的判定用PDL表示的處理過程(含有復合條件)映射為程序圖109電子工程學院用PDL表示的處理過程(含有復合條件)映射為程序圖109電子4.3
測試用例的設計
每個測試用例包括:(1)具體的測試目的(所要測試的具體功能);(2)應該輸入的測試數(shù)據(jù);(3)預期的輸出結果。通過測試,將實際的輸出結果與預期的輸出結果進行比較,可以知道是否具有錯誤。如果有錯誤,再進行調試,找出產(chǎn)生錯誤的原因和位置,并對錯誤進行修改。110電子工程學院4.3測試用例的設計每個測試用例包括:110電子工程白盒測試技術1.邏輯覆蓋邏輯覆蓋用于測試分支結構。較復雜的分支結構會有比較多的路徑。不同的測試數(shù)據(jù)發(fā)現(xiàn)程序錯誤的能力差別很大,為了提高測試效率降低測試成本,應該選用高效的測試用例。因為不可能進行窮舉測試,應當選用少量“最有效的”測試用例,進行盡可能徹底的測試。按照覆蓋程度不同,可以分為6種邏輯覆蓋,分別是語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。下面通過例子說明6種邏輯覆蓋的含義。111電子工程學院白盒測試技術1.邏輯覆蓋111電子工程學院【例】為下列代碼設計測試用例。…ifA>1andB=0
thenX=X/AifA=2orX>1
thenX=X+1…被測試模塊的流程圖被測試模塊的程序圖112電子工程學院【例】為下列代碼設計測試用例。…被測試模塊的流程圖被測試模塊(1)語句覆蓋
選擇足夠多的測試數(shù)據(jù),使被測程序中每個語句至少執(zhí)行一次。選擇測試數(shù)據(jù):A=2,B=0,X=3能夠覆蓋語句c、e113電子工程學院(1)語句覆蓋選擇足夠多的測試數(shù)據(jù),使被測程序中每個語(2)判定覆蓋
選擇足夠多的測試數(shù)據(jù),使每個判定至少取真、假至少一次。選擇兩組測試數(shù)據(jù):①A=3,B=0,X=1使A>1ANDB=0為真,A=2ORX>1為假(通過路徑1235)②A=2,B=1,X=2使A>1ANDB=0為假,A=2ORX>1為真(通過路徑1345)114電子工程學院(2)判定覆蓋選擇足夠多的測試數(shù)據(jù),使每個判定至少取(3)條件覆蓋
使判定表達式中的每個條件分別取真、假至少一次。上述兩個判定表達式中有4個條件:A>1,B=0,A=2,X>1選擇兩組測試數(shù)據(jù):
①A=2,B=0,X=3使A>1,B=0,A=2,X>1為真,通過路徑12345②A=1,B=1,X=1使A>1,B=0,A=2,X>1為假,通過路徑135115電子工程學院(3)條件覆蓋使判定表達式中的每個條件分別取真、假至滿足條件覆蓋的另外兩組測試數(shù)據(jù)①A=1,B=0,X=3
使B=0,X>1為真,A>1,A=2為假,通過路徑1345②A=2,B=1,X=1
使B=0,X>1為假,A>1,A=2為真,通過路徑1345這兩組測試數(shù)據(jù)均使A>1ANDB=0為假,A=2ORX>1為真,不滿足判定覆蓋。所以滿足條件覆蓋不一定滿足判定覆蓋。116電子工程學院滿足條件覆蓋的另外兩組測試數(shù)據(jù)①A=1,B=0,X=3
使B(4)判定/條件覆蓋
判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,判定/條件覆蓋能同時滿足這兩種覆蓋標準。它的含義是,選取足夠多的測試數(shù)據(jù),使得判定表達式中的每個條件都取到各種可能的值,而且每個判定表達式也都取到各種可能的結果。117電子工程學院(4)判定/條件覆蓋判定覆蓋不一定包含條件覆蓋,條件下面兩組測試用例能夠滿足判定/條件覆蓋①A=2,B=0,X=3使A>1,B=0,A=2,X>1和(A>1)AND(B=0),(A=2)OR(X>1)為真②A=1,B=1,X=1使A>1,B=0,A=2,X>1和(A>1)AND(B=0),(A=2)OR(X>1)為假注意:若將B=0寫為B≠0,而A>1為假,X>1寫為X≤1,而A=2為真,就測試不出來。118電子工程學院下面兩組測試用例能夠滿足判定/條件覆蓋①A=2,B=0,X=(5)條件組合覆蓋
條件組合覆蓋是更強的邏輯覆蓋標準,它要求選取足夠多的測試數(shù)據(jù),使得每個判定表達式中條件的各種可能組合都至少出現(xiàn)一次。
兩個判定表達式中共有4個條件,因此有8種組合:
A>1,B=0A>1,B≠0A≤1,B=0A≤1,B≠0A=2,X>1A=2,X≤1A≠2,X>1A≠2,X≤1119電子工程學院(5)條件組合覆蓋條件組合覆蓋是更強的邏輯覆蓋標準,以下4組測試用例可以滿足條件組合覆蓋①A=2,B=0,X=2滿足A>1,B=0A=2,X>1②A=2,B=1,X=1滿足A>1,B≠0A=2,X≤1③A=1,B=0,X=2滿足A≤1,B=0A≠2,X>1④
A=1,B=1,X=1滿足A≤1,B≠0A≠2,X≤1
120電子工程學院以下4組測試用例可以滿足條件組合覆蓋①A=2,B=0,X=2(6)路徑覆蓋以下4組測試用例可以達到路徑覆蓋:
①A=2,B=0,X=2覆蓋12345②A=2,B=1,X=1覆蓋1345③A=1,B=1,X=1覆蓋135④A=3,B=0,X=1覆蓋1235
但不能覆蓋A≤1,B=0和A≠2,X>1。所以滿足路徑覆蓋不一定滿足條件組合覆蓋。在實際的邏輯測試中,一般以條件組合覆蓋為主設計測試用例,然后補充測試用例,達到路徑覆蓋。選取足夠多的測試數(shù)據(jù),覆蓋所有可能的路徑。121電子工程學院(6)路徑覆蓋以下4組測試用例可以達到路徑覆蓋:在實際的邏輯2.循環(huán)覆蓋
白盒測試技術中的循環(huán)測試用于測試循環(huán)結構的有效性。在結構化的程序中可以構成三種循環(huán)類型,分別是簡單循環(huán)、串接循環(huán)和嵌套循環(huán)。下面分別討論不同類型循環(huán)的測試方法。122電子工程學院2.循環(huán)覆蓋白盒測試技術中的循環(huán)測試用于測試循環(huán)結(1)簡單循環(huán)
使用下列測試集來測試簡單循環(huán),其中n是允許執(zhí)行循環(huán)體的最大次數(shù)。
·跳過循環(huán)。
·只執(zhí)行循環(huán)體一次。
·執(zhí)行循環(huán)體兩次。
·執(zhí)行循體m次,其中m<n-1。
·執(zhí)行循環(huán)體n-1,n,n+1次。123電子工程學院(1)簡單循環(huán)使用下列測試集來測試簡單循環(huán),其中n是【例】n=k;//為測試設置的語句i=1;while(i≤n){……i=i+1;}假設程序中允許循環(huán)的最大次數(shù)為6,測試時k取值分別為:0:跳過循環(huán)1,2:循環(huán)體執(zhí)行1,2次4:循環(huán)體執(zhí)行4次5,6,7:循環(huán)體執(zhí)行5,6,7次124電子工程學院【例】n=k;//為測試設置的語句124電子工程學(2)嵌套循環(huán)
如果把簡單循環(huán)的測試方法直接應用到嵌套循環(huán),可能的測試數(shù)就會隨嵌套層數(shù)的增加按幾何級數(shù)增長,這會導致不切實際的測試數(shù)目。下面介紹一種能減少測試數(shù)目的方法。·從最內(nèi)層循環(huán)開始測試,把所有外層循環(huán)都設置為最小值。對最內(nèi)層循環(huán)使用簡單循環(huán)測試方法,并為越界值或非法值增加一些額外的測試。
·由內(nèi)向外,對下一個循環(huán)層次進行測試,但保持所有外層循環(huán)為最小值,內(nèi)層嵌套循環(huán)為“典型”值。
·繼續(xù)進行下去,直到測試完所有循環(huán)。125電子工程學院(2)嵌套循環(huán)如果把簡單循環(huán)的測試方法直接應用到嵌套(3)串接循環(huán)
如果串接循環(huán)的各個循環(huán)都彼此獨立,則可以使用前面所介紹的測試簡單循環(huán)的方法來測試串接循環(huán)。如果兩個循環(huán)串接,而且第一個循環(huán)的循環(huán)計數(shù)器值是第二個循環(huán)的初始值,則這兩個循環(huán)并不是獨立的。當循環(huán)不獨立時,可以采用測試嵌套循環(huán)的方法來測試串接循環(huán)。126電子工程學院(3)串接循環(huán)如果串接循環(huán)的各個循環(huán)都彼此獨立,則可黑盒測試技術
黑盒測試技術將被測對象(模塊或模塊的組合)看作黑盒子,著重測試其功能和接口,測試人員所設計的測試用例應當能夠充分檢查被測對象是否能夠滿足功能需求。黑盒測試很可能發(fā)現(xiàn)白盒測試不易發(fā)現(xiàn)的錯誤。黑盒測試可以下述類型的錯誤:
①功能不正確或遺漏了功能;
②界面錯誤;
③數(shù)據(jù)結構錯誤或外部數(shù)據(jù)庫訪問錯誤;
④性能錯誤;
⑤初始化和終止錯誤。127電子工程學院黑盒測試技術
黑盒測試技術將被測對象(模塊或模塊的組1.等價類劃分
等價類劃分是將被測對象的輸入域劃分為若干個有效的等價類和若干個無效的等價類??梢院侠淼刈龀黾俣ǎ好總€等價類中的一個典型值在測試中的作用與這一等價類中所有其他值的作用相同。因此,可以從每個等價類中只取一組數(shù)據(jù)作為測試數(shù)據(jù)。所選取的測試數(shù)據(jù)應當具有代表性,發(fā)現(xiàn)被測對象錯誤的可能性最大。在確定輸入數(shù)據(jù)的等價類時,還需要分析輸出數(shù)據(jù)的等價類,以便根據(jù)輸出數(shù)據(jù)的等價類導出對應的輸入數(shù)據(jù)等價類。128電子工程學院1.等價類劃分等價類劃分是將被測對象的輸入域劃分等價類的劃分規(guī)則(1)如果規(guī)定了輸入值的范圍,則可劃分出一個有效的等價類(輸入值在此范圍內(nèi)),兩個無效的等價類(輸入值小于最小值和大于最大值)。(2)如果規(guī)定了輸入數(shù)據(jù)的個數(shù),則可以劃分出一個有效的等價類和兩個無效的等價類。(3)如果規(guī)定了輸入數(shù)據(jù)的一組值,而且程序對不同輸入值做不同處理,則每個允許的輸入值是一個有效的等價類,不允許的輸入值是一個無效的等價類。(4)如果規(guī)定了輸入數(shù)據(jù)為整型,則可以劃分出正整數(shù)、零和負整數(shù)三個有效等價類。129電子工程學院等價類的劃分規(guī)則(1)如果規(guī)定了輸入值的范圍,則可劃分出一個(5)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個符合規(guī)則的有效等價類和若干個從各種不同角度違反規(guī)則的無效等價類。(6)如果程序的處理對象是表格,則應該分別以空表、含一項或多項的表作為等價類。
以上規(guī)則只是測試時可能遇到的很小一部分。要正確劃分等價類,一方面要注意積累經(jīng)驗;另一方面要正確分析被測對象的功能。在劃分無效等價類時,對于編譯程序一定能夠發(fā)現(xiàn)的錯誤,不需要再設計測試用例來暴露這些錯誤。130電子工程學院(5)如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個符合根據(jù)等價類設計測試用例的步驟(1)設計一個新的測試用例,盡可能多地覆蓋尚未被覆蓋的有效等價類。復重這一步驟直到所有有效等價類都被覆蓋為止。(2)設計一個新的測試方案,使它覆蓋一個尚未被覆蓋的無效等價類。重復這一步驟直到所有無效等價類都被覆蓋為止?!纠考僭O有一個把數(shù)字字符串(用字符數(shù)組存儲)轉換成整數(shù)的函數(shù)。所使用的計算機字長為16位,用二進制補碼表示的整數(shù)范圍是-32768~32767。用Delphi語言編寫的函數(shù)說明如下:131電子工程學院根據(jù)等價類設計測試用例的步驟(1)設計一個新的測試用例,盡可functionstrtoint(dstr:shortstr):integer;
函數(shù)的參數(shù)類型是shortstr(長度為6的一維字符數(shù)組類型)
typeshortstr=array[1..6]ofchar;所存放的的數(shù)字串右對齊,如果數(shù)字串不足6個字符,則左邊補空格。如果數(shù)字串是負的,則負號和最高位數(shù)字緊相鄰(負號在最高位數(shù)字左邊一位)。劃分出如下等價類:(1)有效輸入的等價類
·1~6個數(shù)字字符組成的數(shù)字串(最高位數(shù)字不是零),如“12345”·最高位數(shù)字是零的數(shù)字串,如“012345”
·最高位數(shù)字左鄰是負號的數(shù)字串,如“-123”132電子工程學院functionstrtoint(dstr:shortst(2)無效輸入的等價類·空字符串(全是空格),例如:“”·左部填充的字符既不是零也不是空格,如“*123”·最高位數(shù)字右面由數(shù)字和空格混合組成,如“12345”·最高位數(shù)字右面由數(shù)字和其他字符混合組成,如“12#3”·負號與最高位數(shù)字之間有空格,如“-123”(3)合法輸出的等價類·在計算機能表示的最小負整數(shù)和零之間的負整數(shù)·零·在零和計算機能表示的最大正整數(shù)之間的正整數(shù)
133電子工程學院(2)無效輸入的等價類·空字符串(全是空格),例如:“(4)非法輸出的等價類·比計算機能表示的最小負整數(shù)還小的負整數(shù),如-32769·比計算機能表示的最大正整數(shù)還大的正整數(shù),如32768根據(jù)上面劃分出的有效等價類,可以設計出下述測試用例,每個測試用例由測試目的、有效輸入和預期的輸出組成。
·1~6個數(shù)字組成的數(shù)字串,輸出是合法的正整數(shù)輸入:“1”(有效輸入)預期的輸出:1·最高位數(shù)字是零的數(shù)字串,輸出是合法的正整數(shù)輸入:“000001”(有效輸入)預期的輸出:1134電子工程學院(4)非法輸出的等價類·比計算機能表示的最小負整數(shù)還·負號與最高位數(shù)字緊相鄰,輸出合法的負整數(shù)
輸入:“-00001”(有效輸入)預期的輸出:-1·字符串為全零,輸出也是零輸入:“000000”(有效輸入)預期的輸出:0
根據(jù)上面劃分出的無效等價類,可以設計出下述測試用例,每個測試用例由測試目的、無效輸入和預期的輸出組成?!ぬ〉呢撜麛?shù)輸入:“-47561”(無效輸入)預期的輸出:“錯誤——無效輸入”135電子工程學院·負號與最高位數(shù)字緊相鄰,輸出合法的負整數(shù)輸入:“-0·太大的正整數(shù)
輸入:“132767”(無效輸入)
預期的輸出:“錯誤——無效輸入”·空字符串
輸入:“”(無效輸入)
預期的輸出:“錯誤——沒有數(shù)字”·字符串左部字符既不是零也不是空格
輸入:“╳╳╳╳╳1”(無效輸入)
預期的輸出:“錯誤——填充錯”·最高位數(shù)字后面有空格
輸入:“12”(無效輸入)
預期的輸出:“錯誤——無效輸入”136電子工程學院·太大的正整數(shù)輸入:“132767”(無效輸入)
預期·最高位數(shù)字后面有其他字符
輸入:“1╳╳2”(無效輸入)
預期的輸出:“錯誤——無效輸入”·負號和最高位數(shù)字之間有空格
輸入:“-12”(無效輸入)
預期的輸出:“錯誤——負號位置錯”2.邊界值分析經(jīng)驗表明,處理邊界情況時程序最容易發(fā)生錯誤。例如,許多程序錯誤出現(xiàn)在下標、數(shù)據(jù)結構和循環(huán)等的邊界附近。因此,設計使程序運行在邊界情況附近的測試用例,暴露出程序錯誤的可能性更大一些。
137電子工程學院·最高位數(shù)字后面有其他字符輸入:“1╳╳2”邊界的確定
如果輸入條件規(guī)定了值的范圍或者值的個數(shù)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中外歌劇鑒賞知到課后答案智慧樹章節(jié)測試答案2025年春齊魯師范學院
- 海南大學《數(shù)字出版設計》2023-2024學年第一學期期末試卷
- 北京工商大學《基礎日語⑴》2023-2024學年第一學期期末試卷
- 遼寧省朝陽市2025屆高三下學期診斷性考試物理試題含解析
- 華陰市2024-2025學年小升初數(shù)學模擬試卷含解析
- 2025屆河南省開封市重點中學高三考前熱身英語試題解析含解析
- 云南國土資源職業(yè)學院《大學英語Ⅲ(藝體類)》2023-2024學年第二學期期末試卷
- 古老的船屋文化江蘇無錫的世界文化遺產(chǎn)
- 智能農(nóng)業(yè)需求背景調研
- 2025年中考語文文言文總復習:文言文閱讀之對比閱讀(講義)教師版
- 小學美術-湘美版四年級下冊第10課中國龍教學設計學情分析教材分析課后反思
- 一年級下冊勞技教案
- 部編版四年級語文下冊第4單元大單元整體教學作業(yè)設計(教案配套)
- 大一邏輯學全部
- 游戲法緩解小班幼兒入園焦慮的個案研究
- 2023年包頭輕工職業(yè)技術學院單招綜合素質題庫及答案解析
- 地下室頂板裂縫防水處理方案(完整資料)
- 宮頸錐切日間手術臨床路徑(婦科)及表單
- GB/T 23111-2008非自動衡器
- GB/T 18877-2020有機無機復混肥料
- 三大構成之立體構成-課件
評論
0/150
提交評論