




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
軟件定義需求分析第1頁,課件共99頁,創作于2023年2月需求分析的任務
1、確定對系統的綜合要求
1)系統功能要求
2)系統性能要求
3)運行要求
4)將來可能提出的要求
2、分析系統的數據要求
數據結構表示數據元素之間的邏輯關系
3、導出系統的邏輯模型
導出系統的詳細的邏輯模型,通常用數據流圖、數據字典和主要的處理算法描述這個邏輯模型。
4、修正系統開發計劃
5、開發原型系統第2頁,課件共99頁,創作于2023年2月需求分析的特點
1、問題的復雜性。
2、交流障礙
3、不完備性和不一致性
4、需求易變性需求分析的原則
1、必須能夠表達相理解問題的數據域和功能域。
2、可以把一個復雜問題按功能進行分解并可逐層細化3、建模第3頁,課件共99頁,創作于2023年2月需求分析的方法1、功能分解方法2、結構化分析方法3、信息建模方法4、面向對象分析方法第4頁,課件共99頁,創作于2023年2月需求說明書的主要內容
(1)前言:說明項目的目的、范圍,所用的術語的定義;用到的縮略語和縮寫詞;資料。
(2)項目概述:產品的描述;產品的功能;用戶的特點,一般的約束等。
(3)具體需求:說明每個功能的輸入、處理和輸出;外部接口需求,包括用戶接口、軟件接口、硬件接口相通信接口;性能需求;設計約束;共他需求,包括數據庫、操作等第5頁,課件共99頁,創作于2023年2月第二節SA分析過程結構化分析方法(簡稱SA方法)就是面向數據流自頂向下逐步求精進行需求分析的方法。1、沿數據流圖回溯2、用戶復查3、細化數據流圖4、修正開發計劃5、書寫文檔6、審查和復審第6頁,課件共99頁,創作于2023年2月需求分析示例—教材購銷管理系統(1)問題描述:學校教材科根據業務的需要,建立一個學校教材購銷管理系統,提高教材采購、銷售和信息管理的效率。學生張秘書購書申請王會計李出納趙保管學生購書證明購書申請購書申請書學生審查有效性購書單開發票開領書單發書學生有效購書單發票領書單書學生審查并開發票購書單開領書單發書學生發票領書單書2)去掉具體模型中的非本質因素,抽象出當前系統的邏輯模型1)通過對現實環境的調查研究,獲得當前系統的具體模型3)分析當前系統與目標系統的差別,建立目標系統的邏輯模型。第7頁,課件共99頁,創作于2023年2月需求分析示例—教材購銷管理系統(2)學生審查并開發票購書單開領書單學生發票領書單無效書單4)對目標系統進行補充和完善,并寫出完整的需求說明。學生1審查并開發票購書單2開領書單學生發票領書單無效書單各班學生用書表教材存量表5)對需求說明進行復審,直到確認文檔齊全,并且符合用戶的全部需求為止第8頁,課件共99頁,創作于2023年2月需求分析示例—教材購銷管理系統(3)學生教材購銷管理系統書庫保管員1.教材購銷管理系統的頂層DFD學生書庫保管員2.第二層DFD圖—教材購銷系統購書單領書單缺書單進書通知購書單領書單1銷售2采購進書通知F2:缺書登記表F1:教材存量表缺書單進書通知第9頁,課件共99頁,創作于2023年2月需求分析示例—教材購銷管理系統(4)1.1審查有效性1.2開發票有效購書單1.3領書并開領書單發票1.4登記缺書1.5補售教材F2:缺書登記表學生學生無效書單領書單領書單F3:各班學生用書表F4:售書登記表
補售書單
暫缺書單采購3.第三層DFD圖—銷售子系統F1:教材存量表第10頁,課件共99頁,創作于2023年2月需求分析示例—教材購銷管理系統(5)2.3修改教材庫存和待購量2.1按書號匯總缺書F2:缺書登記表銷售子系統書庫保管員F1:教材存量表進書通知3.第三層DFD圖—采購子系統2.2按出版社統計缺書F5:待購教材表F6:教材一覽表進書通知第11頁,課件共99頁,創作于2023年2月需求分析示例—教材購銷管理系統(6)數據字典(DataDirectory-DD)領書單=學院+專業+班級+學號+姓名+{書號+[書名]+數量}+日期有效購書單=領書單發票=學號+姓名+{書號+[書名]+單價+數量+總價}+書費合計教材存量表={書號+單價+數量}暫缺書單=學號+姓名+{書號+數量}補售書單=學號+姓名+{書號+數量}第12頁,課件共99頁,創作于2023年2月第三節概念模型和規范化用戶的數據要求----需要哪些數據,數據之間有哪些聯系,數據本身有哪些性質,數據的結構等)。用戶的處理要求---對數據進行哪些處理,每個處理的邏輯功能。
概念性模型(信息模型)---一種面向問題的數據模型,是按照用戶的觀點來對數據和信息建模。表示概念性數據模型的最常用方法是實體-聯系方法,采用用ER圖的方式,這種表示又稱為ER模型。
ER模型
實體:客觀世界中存在的且可區分的事物。聯系:客觀事物之間的聯系(三類--1:1,1:N,M:N)屬性:實體或聯系所具有的性質。教師姓名性別職稱職務教師號教1課程N課程號課名學時學分學M學生N學號姓名性別系年級成績范式通常用范式定義消除數據的冗余度(略)第13頁,課件共99頁,創作于2023年2月ER關系圖與數據庫映射關系描述第14頁,課件共99頁,創作于2023年2月關系數據庫數據以2維表的形式進行表示,每個表的列表示字段、行表示數據庫表的一個記錄
Primarykey(主鍵):字段的唯一標識Foreignkey(外鍵):其它表的主鍵在該表的參考SQL(結構化查詢語言):可以進行數據庫表記錄的操作.第15頁,課件共99頁,創作于2023年2月E-R與數據庫映射E-R模型映射為數據庫表:屬性的映射每個實體映射為一個表實體的每個屬性映射為一個字段每個實體的個體映射為數據庫的一個記錄N:M關系映射為一個單獨的表1:N關系利用外鍵進行映射第16頁,課件共99頁,創作于2023年2月例子:E-R關系模型與數據庫表的映射ICitycityNameAirportairportCodeairportName**ServescityNameHoustonAlbanyMunichHamburgCityTablecityNameHoustonHoustonAlbanyMunichHamburgServesTableairportCodeIAHHOUALBMUCHAMAirportTableairportCodeIAHHOUALBMUCHAMairportNameIntercontinentalHobbyAlbanyCountyMunichAirportHamburgAirportPrimaryKey
N:M(多對多關系):將關系映射為單個表SeparateTable第17頁,課件共99頁,創作于2023年2月例子:E-R關系模型與數據庫表的映射II
會議transactionID職員portfolioID...NportfolioID...PortfolioTabletransactionIDTransactionTableportfolioIDForeignKey1:N或N:1關系:隱藏外鍵的處理1第18頁,課件共99頁,創作于2023年2月例子:E-R關系模型與數據庫表的映射Ⅲ
doordoorIDskyskyID...*doorIDTransactionTabledoorID1-To-1關系門與鑰匙關系第19頁,課件共99頁,創作于2023年2月習題教師姓名性別職稱職務教師號教1課程N課程號課名學時學分學M學生N學號姓名性別系年級成績第20頁,課件共99頁,創作于2023年2月第四節.圖形工具層次方框圖:用樹形結構的一系列多層次的矩形框描繪數據的層次結構。產品硬件軟件服務處理機存儲器外部設備系統軟件應用軟件軟件服務硬件維修培訓操作系統編譯程序軟件工具層次方框圖的一個例子注意:層次方框圖即可以表示數據的層次結構,也可以表示程序的層次結構第21頁,課件共99頁,創作于2023年2月4.圖形工具(續)
Warnier圖:用樹形結構描繪數據的層次結構。軟件產品系統軟件操作系統(P1)編譯程序(P2)軟件工具編輯程序(P3)測試驅動程序(P4)設計輔助程序(P5)應用軟件⊕第22頁,課件共99頁,創作于2023年2月4.圖形工具(續)
IPO圖:輸入/處理/輸出圖的簡稱-IBM。舊的主文件事務文件1、校驗主記錄2、校驗事務記錄3、更新主記錄1、校驗主記錄2、有效的事務記錄3、更新后的主文件改進的IPO圖的形式(P47)第23頁,課件共99頁,創作于2023年2月5.驗證軟件需求
從哪幾個方面驗證軟件需求的正確性(四個方面)一致性:任何一條需求不能和其他需求互相矛盾。完整性:規格說明書應該包括用戶需要的每一個功能和性能。現實性:指定的需求是用現有的硬件、軟件技術可以實現的。有效性:需求是正確有效的,確實能解決用戶面對的問題。
驗證軟件需求的方法一致性:人工審查---》形式化描述軟件需求,軟件工具自動驗證。現實性:參考以往的開發經驗,分析,仿真或模擬完整性和一致性:原型系統第24頁,課件共99頁,創作于2023年2月第四章總體設計總體設計的基本目的就是回答“概括地說,系統應該如何實現?”這個問題。總體設計又稱為概要設計或初步設計,其任務:(1)劃分出組成系統的物理元素----程序、文件、數據庫、人工過程和文檔通過這個階段的工作將劃分出組成系統的物理元素——程序、文件、數據庫、人工過程和文檔等等,但是每個物理元素仍然處于黑盒子級,這些黑盒子里的具體內容將在以后仔細設計。(2)總體設計階段的另一項重要任務是設計軟件的結構,也就是要確定系統中每個程序是由哪些模塊組成的,以及這些模塊相互間的關系。第25頁,課件共99頁,創作于2023年2月1總體設計的過程(兩個主要階段):系統設計:確定系統的具體實現方案。結構設計:確定軟件結構。設想供選擇的方案選取合理的方案推薦最佳方案功能分解設計軟件結構數據庫設計制訂測試計劃書寫文檔數據流圖系統流程圖組成系統的物理元素清單成本/效益分析實現系統的進度計劃
系統說明用戶手冊測試計劃詳細的實現計劃數據庫設計結果審查和復審第26頁,課件共99頁,創作于2023年2月2軟件設計的概念和原理模塊是數據說明、可執行語句等程序對象的說明。(1)模塊化:把程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊集總起來組成一個整體,可以完成指定的功能,滿足問題的功能。C(P1+P2)>C(P1)+C(P2)E(P1+P2)>E(P1)+E(P2)成本模塊數目成本/模塊接口成本最小成本區
(2)抽象(3)信息隱蔽和局部化
信息隱蔽原理指出:使得一個模塊內包含的信息(過程和數據)對于不需要這些信息的模塊來說,是不能訪問的。所謂局部化是指把一些關系密切的軟件元素物理地放得彼此靠近。模塊化和軟件成本第27頁,課件共99頁,創作于2023年2月耦合:一個軟件結構內不同模塊之間互連程度的度量,耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數據。數據耦合:模塊之間通過參數交換數據信息。控制耦合:模塊之間傳遞的參數含有控制信息。公共環境耦合:兩個或多個模塊通過一個公共數據環境相互作用。內容耦合:如果出現下列情況之一,兩個模塊間就發生了內容耦(1)一個模塊訪問另一個模塊的內部數據;2)一個模塊不通過正常入口而轉到另一個模塊的內部;3)兩個模塊有一部分程序代碼重疊4)一個模塊有多個入口。設計原則:盡量使用數據耦合,少用控制耦合,限制公共環境耦合,完全不用內容耦合。數據耦合控制耦合公共環境耦合內容耦合低高(4)模塊獨立----每個模塊完成一個相對獨立的子功能,并且和其他模塊之間的關系很簡單。模塊獨立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結果,獨立的優點:(1)有效的模塊化的軟件比較容易開發
(2)獨立的模塊比較容易測試和維護模塊的獨立程度兩個定性標準度量:內聚和耦合耦合衡量不同模塊彼此間互相依賴的緊密程度;內聚衡量一個模塊內部各個元素彼此結合的緊密程度。第28頁,課件共99頁,創作于2023年2月2軟件設計的概念和原理----耦合非直接耦合數據耦合特征耦合控制耦合外部耦合公共耦合內容耦合弱耦合中耦合較強耦合強耦合模塊1模塊2模塊3模塊4數據耦合通過簡單變量交換數據特征耦合通過數據結構交換數據非直接耦合模塊之間沒有信息傳遞模塊A模塊B模塊C模塊D模塊L模塊N全局性數據結構公共耦合Flag=1?S1S2模塊1控制耦合模塊之間傳遞的是控制信息TF全局性簡單變量外部耦合模塊A模塊B內容耦合
訪問其它模塊的內部數據直接跳到其他模塊內部執行第29頁,課件共99頁,創作于2023年2月2軟件設計的概念和原理(續1)內聚:一個模塊內各個元素彼此結合的緊密程度。偶然內聚:一個模塊完成一組任務,任務之間的關系很松散。公共語句。邏輯內聚:若干個邏輯功能類似的任務組成一個模塊。(如模板函數)時間內聚:若干個任務必須在同一段時間內執行。如初始化工作。低內聚中內聚高內聚過程內聚:模塊內的處理元素是相關的,且必須以特定次序執行。通信內聚:模塊中所有元素都使用同一個輸入數據,和/或產生同一個輸出數據。順序內聚:模塊中所有處理元素和同一個功能密切相關,且這些處理必須順序執行。功能內聚:所有處理元素屬于一個整體,完成一個單一的功能。模塊A模塊B模塊CS1;S2;模塊A模塊B模塊C模塊A模塊B模塊C模塊D第30頁,課件共99頁,創作于2023年2月2軟件設計的概念和原理(續2)改進軟件結構提高模塊獨立性模塊規模應該適中深度、寬度、扇入、扇出都應適當扇入:一個模塊的扇人表明有多少個上級模塊直接調用它,扇入越大則共享該模塊的上級模塊數目越多。扇出:扇出是一個模塊直接控制(調用)的模塊數目,扇出過大意味著模塊過分復雜,需要控制和協調過多的下級模塊。模塊的作用域應該在控制域之內模塊的作用域:為受該模塊內一個判定影響的所有模塊的集合。模塊的控制域:這個模塊本身以及所有直接或間接從屬于它的模塊的集合。力爭降低模塊接口的復雜程度設計單入口單出口的模塊模塊的功能應該可以預測3啟發式規則第31頁,課件共99頁,創作于2023年2月4圖形工具
層次圖和HIPO圖層次圖用來描述軟件結構,層次圖+IPO圖=HIPO圖正文加工系統輸入輸出編輯加標題存儲檢索編目錄格式化添加刪除插入修改合并列表
結構圖方框之間的箭頭表示模塊的調用關系,帶注釋的箭頭表示模塊間來回傳遞的信息:空心圓—數據,實心圓—控制信息。結構圖還可以表示模塊的選擇調用或循環調用參見:P64第32頁,課件共99頁,創作于2023年2月第33頁,課件共99頁,創作于2023年2月5面向數據流的設計方法1)變換流2)事務流3)設計過程時間輸入流輸出流變換流外部表示內部表示信息變換流:信息沿輸入通路進入系統,同時由外部形式變換成內部形式,進入系統的信息通過變換中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統。當數據流圖具有這些持征時,這種信息流就叫作變換流。第34頁,課件共99頁,創作于2023年2月這種數據流是“以事務為中心的”.也就是說,數據沿輸入通路到達一個處理T,這個處理根據輸入數據的類型在若干個動作序列中選出一個來執行。這類數據流應該劃為一類特殊的數據流,稱為事務流。事務T事務中心活動通路事務中心T完成下述任務:接受輸入數據(事務)分析每個事務以確定它的類型根據事務類型選取一條活動通路第35頁,課件共99頁,創作于2023年2月變換流與事務流三要素變換流三要素輸入、輸出、變換中心
事務流三要素事務、事務中心、活動通路第36頁,課件共99頁,創作于2023年2月5面向數據流的設計方法(續)精化數據流圖流類型區分事務中心和數據接收通路映射成事務結構區分輸入和輸出分支映射成變換結構用啟發式設計規則精化軟件結構導出接口描述和全程數據結構復查詳細設計事務分析變換分析第37頁,課件共99頁,創作于2023年2月5面向數據流的設計方法(續)變換分析:汽車數字儀表板功能:
1)通過A/D轉換實現傳感器和微處理器接口,
2)在發光二極管面板上顯示數據,
3)指示每小時英里數(mph),行駛的里程,每加倫油行駛的英里數(mpg)等等。
4)指示加速或減速;
5)超速警告:如果車速超過55英里/小時,則發出超速警告鈴聲。A/D轉數計數器流量傳感器微處理機里程表車速表油效表油管系統加速/減速指示超速報警第38頁,課件共99頁,創作于2023年2月5面向數據流的設計方法(續)讀旋轉信號收集和求平均轉換成轉/分(rpm)計算里程確定加速/減速產生加速/減速顯示產生里程顯示計算mph和超速值計算燃料消耗發出鈴聲產生mph顯示產生mpg顯示讀和校核計算gph旋轉信號信號/秒SPS△SPSSPSrpmrpm箭頭指示上箭頭⊕⊕水平線下箭頭英里超速值顯示鈴聲mphmphmpggph燃料流燃料流傳感器信號Mpg顯示數字儀表板控制接受傳感器信號數據轉換控制驅動儀表板輸入控制變換控制輸入控制第39頁,課件共99頁,創作于2023年2月5面向數據流的設計方法(續)設計步驟:復查基本系統模型復查并精化數據流圖確定數據流圖具有變換特性還是事務特性確定輸入流和輸出流的邊界,劃分變換或事務中心完成“第一級分解”CmCaCtCe第一級分解的方法第40頁,課件共99頁,創作于2023年2月5面向數據流的設計方法(續)ADBCCmCaCBDA接受傳感器信號轉換成rpm收集SPS讀旋轉信號計算gph讀燃料流數字儀表板控制確定加/減速計算mph計算gpg計算里程驅動儀表板加速/減速顯示顯示mpg顯示mph顯示里程發出鈴聲發光二極管顯示第41頁,課件共99頁,創作于2023年2月5面向數據流的設計方法(續)數字儀表板控制接受傳感器信號轉換成rpm讀旋轉信號計算gph讀燃料流數字儀表板控制確定加/減速計算mph計算gpg計算里程驅動儀表板加速/減速顯示顯示mpg顯示mph顯示里程發出鈴聲發光二極管顯示數字儀表板軟件系統經過調整后的結構圖注意:紅色模塊的位置有所調整第42頁,課件共99頁,創作于2023年2月5面向數據流的設計方法(續)事務分析432總控接收通路C通路B通路A通路調度A_CTL1
4
2+1
3
2
1B_CTLC_CTL設計優化設計優化應該力求做到在有效的模塊化的前提下使用最少量的模塊,以及在能夠滿足信息要求的前提下使用最簡單的數據結構。‘數據流圖軟件結構第43頁,課件共99頁,創作于2023年2月總體設計說明書的主要內容如下:(1)引言:編寫目的,背景,定義,參考資料。(2)總體設計:需求規定,運行環境,基本設計概念和處理流程,結構。(3)接口設計:用戶接口,外部接口,內部接口。(4)運行設計:運行模塊組合.運行控制,運行時間。(5)系統數據結構設計:邏輯結構設計,物理結構設計,數據結構與程序的關系,(6)系統出錯處理設計:出錯信息,補救措施.系統恢復設計。第44頁,課件共99頁,創作于2023年2月第五章詳細設計詳細設計:過程設計設計方法:結構程序設計結構序設計:一種程序設計技術,它采用自頂向下逐步求精的設計方法和單入口單出口的控制結構詳細設計階段的目標:確定應該怎樣具體地實現所要求的系統。精確地描述整個目標系統,從而在編碼階段可以把這個描述翻譯成用某種程序設計語言書寫的程序。第45頁,課件共99頁,創作于2023年2月詳細設計的基本任務1.算法設計用某種圖形、表格、語言等工具將每個模塊處理過程的詳細算法描述出來2.數據結構設計對于需求分析、概要設計確定的概念性的數據類型進行確切的定義。
3.物理設計對數據庫進行物理設計,即確定數據庫的物理結構。物理結構主要指數據庫的存儲記錄格式、存儲記錄安排和存儲方法,這些都依賴于具體所使用的數據庫系統。
4.其他設計根據軟件系統的類型,還可能要進行以下設計:(1)代碼設計;為了提高數據的輸入、分類、存儲及檢索等操作的效率空間,對數據庫中的某些數據項的值要進行代碼設計。(2)輸入/輸出格式設計。(3)人機對話設計:對于一個實時系統,用戶與計算機顛蟹對話,因此要進行對話方式、內容及格式的具體設計。5.編寫詳細設計說明書詳細設計說明書有下列的主要內容:(1)引言:包括編寫目的、背景、定義(2)程序系統的組織結構。(3)程序l(標識符)設計說明:(4)程序2(標識符)設計說明。(5)程序N(標識符)設計說明6.評審第46頁,課件共99頁,創作于2023年2月結構程序設計順序、選擇、循環三種基本結構BexpAABexpAAexpTFTTFF順序結構選擇結構循環結構1)“While”型循環2)Do….Until型循環第47頁,課件共99頁,創作于2023年2月結構程序設計技術好處:(1)自頂向下逐步求精的方法符合人類解決復雜問題的普遍規律。(2)先全局后局部、先整體后細節、先抽象后具體的逐步求精過程開發出的程序有清晰的層次結構,容易閱讀和理解。
(3)不使用GoTo語句僅使用單入口單出口的控制結構.使得程序的靜態結構和它的動態執行情況比較一致。
(4)控制結構有確定的邏輯模式,編寫程序代碼只限于使用很少幾種直截了當的方式,因此源程序清晰流暢,易讀易懂而且容易測試。(5)程序清晰和模塊化使得在修改和重新設計一個軟件時可以重用的代碼量最大。(6)程序的邏輯結構清晰,有利于程序正確性證明。第48頁,課件共99頁,創作于2023年2月習題1.For(inti=0;i<n;i++){A}2.while(i<100){A}3.Do{A}While(i<100)第49頁,課件共99頁,創作于2023年2月非結構化程序轉換方法:1、設置標志位2、變換結構第50頁,課件共99頁,創作于2023年2月1結構程序設計經典的結構程序設計:順序,選擇,當型循環擴展的結構程序設計:順序,選擇+多分支,當型循環+直到型循環修正的結構程序設計:順序,選擇+多分支,當型循環+直到型循環,break結構詳細設計的工具程序流程圖開始或停止準備選擇多分支選擇注釋預先定義的處理,子程序循環下界循環上界處理控制流第51頁,課件共99頁,創作于2023年2月2詳細設計的工具----盒圖(N_S圖)S1S2S3條件FTElse部分Then部分Case條件值1值2。。。值nCase1部分Case2部分Casen部分循環條件Do-While
部分循環條件Do-Until
部分A特點:1)功能域(既一個特定控制結構的作用域)明確
2)不可能任意轉移控制
3)很容易確定局部和全程數據的作用域
4)很容易表現嵌套關系,也可以表示模塊的層次結構Nassi&Shneiderman第52頁,課件共99頁,創作于2023年2月2詳細設計的工具----PAD圖P1P2P1P2條件CPnP2P1WHILECPUNTILCPdef順序選擇Case型多分支選擇當型循環直到型循環語句標號定義第53頁,課件共99頁,創作于2023年2月2詳細設計的工具----PAD圖P1P2P3P4CP5P2defP6P3P8CUntilC3UNTILC2P9P10PAD圖的主要優點:使用PAD符號設計的程序必然是結構化的程序.PAD圖所描繪的程序結構十分清晰.用PAD圖表現程序邏輯,易讀,易記,易懂.容易將PAD圖轉換成高級語言源程序.可用軟件工具實現自動轉換.即可以表示程序邏輯,也可以描繪數據結構.支持自頂向下,逐步求精方法的使用.第54頁,課件共99頁,創作于2023年2月2詳細設計的工具----判定表程序流程圖、N-S圖、PAD圖或過程設計語言(PDL)都不易清楚的描述含有多重嵌套的條件選擇。判定表可以清晰的表示復雜的條件組合與其對應的處理之間的關系。例子假設某航空公司規定,乘客可以免費托運重量不超過30公斤的行李。當行李重量超過30公斤時,對頭等艙的國內乘客超重部分每公斤收費4元,對其它艙的國內乘客超重部分每公斤收費6元,對外國乘客超重部分每公斤收費比國內乘客多一倍,對殘疾乘客超重部分每公斤收費比正常乘客少一半。用判定表來表示與上述每種條件組合相對應的動作。所有條件條件組合矩陣與每種條件組合所對應的動作表所有可能的動作列表國內乘客頭等艙殘疾乘客行李≤30kg免費(W-30)*2(W-30)*3(W-30)*4(W-30)*6(W-30)*8(W-30)*2TTTFTTTTTTTTTTFFFFFFFFFFFFFFFFFFF×××××××××第55頁,課件共99頁,創作于2023年2月2詳細設計的工具----判定樹行李費算法行李重量
W>30國內乘客外國乘客頭等艙其它艙殘疾乘客----(W-30)*2正常乘客----(W-30)*4殘疾乘客----(W-30)*3正常乘客----(W-30)*6頭等艙其它艙殘疾乘客----(W-30)*4正常乘客----(W-30)*8殘疾乘客----(W-30)*6正常乘客----(W-30)*12行李重量
W≤30免費第56頁,課件共99頁,創作于2023年2月過程設計語言(PDL)
PDL應該具有下述特點:
(1)關鍵字的固定語法,它提供了結構化控制結構、數據說明和模塊化的待點。為了使結構清晰和可讀性好,通常在所有可能嵌套使用的控制結構的頭和尾都有關鍵字,例如:if...fi(或endif)等等。
(2)自然語言的自由語法,它描述處理待點。
(3)數據說明的手段。應該既包括簡單的數據結構(例如純量和數組),又包括復雜的數據結構(例如,鏈表或層次的數據結構)。
(4)模塊定義和調用的技術,應該提供各種接口描述模式。第57頁,課件共99頁,創作于2023年2月PDL作為一種設計工具的優點:
(1)可以作為注釋直接插在源程序中間。這樣做能促使維護人員在修改程序代碼的同時也相應地修改PDL注釋,因此有助于保持文檔和程序的一致性,提高了文檔的質量。
(2)可以使用普通的正文編輯程序或文字處理系統,很方便池完成PDL的書寫和編輯工作。
(3)已經有自動處理程序存在,而且可以自動由PDL生成程序代碼。
PDL的缺點是不如圖形工具形象直觀,描述復雜的條件組合百動作間的對應關系時,不如判定表清晰簡單。第58頁,課件共99頁,創作于2023年2月Jackson程序設計方法特點:面向數據結構的設計方法,也就是用數據結構作為程序設計的基礎方法:首先需要分析確定數據結構,并且用適當的工具清晰地描繪數據結構。第59頁,課件共99頁,創作于2023年2月Jackson圖數據元素彼此間的邏輯關系只有順序、選擇和重復三類順序結構順序結構的數據由一個或多個數據元素組成,每個元素按確定次序出現一次。第60頁,課件共99頁,創作于2023年2月選擇結構選擇結構的數據包含兩個或多個數據元素,每次使用這個數據時按一定條件從這些數據元素中選擇一個。第61頁,課件共99頁,創作于2023年2月重復結構重復結構的數據,根據使用時的條件由一個數據元素出現零次或多次構成。Jackson圖優點:·便于表示層次結構,而且是對結構進行自頂向下分解的有力工具;·形象直觀可瀆性好;·既能表示數據結構也能表示程序結構第62頁,課件共99頁,創作于2023年2月改進的Jackson圖第63頁,課件共99頁,創作于2023年2月Jackson方法Jackson結構程序設計方法基本上由下述五個步騾組成:1.分析并確定輸入數據和輸出數據的邏輯結構,并用Jackson圖描繪這些數據結構。
2.找出輸入數據結構和輸出數據結構中有對應關系的數據單元。
3.用下述三條規則從描繪數據結構的Jackson圖導出描繪程序結構的Jackson:第一,為每對有對應關系的數據單元,按照它們在數據結構圖中的層次在程序結構圖的相應層次畫一個處理框第二,根據輸入數據結構中剩余的每個數據單元所處的層次,分別為它們面上對應的處理框;第三,根據輸出數據結構中剩余的每個數據單元所處的層次,次分別為它們畫上對應的處理框。總之,描繪程序結構的Jackson圖應該綜合輸入數據結構和輸出數據結構的層次關系而導出來。
4.列出所有操作和條件(包括分支條件和循環結束條件),并且把它們分配到程序結構圖的適當位置。
5.用偽碼表示程序。第64頁,課件共99頁,創作于2023年2月例子:
一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統計每個記錄中空格字符的個數,以及文件中空格字符的總個數。要求的輸出數據格式是,每復制一行輸入字符串之后,另起一行印出這個字符串中的空格數,最后印出文件中空格的總個數。第65頁,課件共99頁,創作于2023年2月第66頁,課件共99頁,創作于2023年2月第67頁,課件共99頁,創作于2023年2月第68頁,課件共99頁,創作于2023年2月第69頁,課件共99頁,創作于2023年2月5詳細設計的工具----程序復雜度的定量度量利用軟件設計的基本原理和概念可以定性的衡量軟件模塊的質量。但定量的度量程序復雜程度的方法很有價值:估算程序中軟件故障的數量;估算軟件開發的工作量;比較兩個不同的設計或兩個不同算法的友劣;作為模塊規模的精確上限。程序定量度量方法是一個有待進一步研究的重要領域。1)McCabe方法程序圖–把程序流程圖中每個處理符號都退化成一個點,原來連接不同處理符號的箭頭變成連接不同點的有向弧,這樣得到的有向圖就稱為程序圖。程序圖僅僅描述程序內部的控制流程,完全不表現對數據的具體操作以及分支或循環的具體條件。入口點:程序圖中開始點后面的那個節點。出口點:程序圖中停止點前面的那個節點。用McCabe方法度量得出的結果稱為程序的環形復雜度。程序的環形復雜度=強連通圖中線性無關的有向環的個數。第70頁,課件共99頁,創作于2023年2月5詳細設計的工具----程序復雜度的定量度量2)環形復雜度的計算方法在一個強連通的有向圖中,線性無關環的個數由以下公式確定:
V(G)=m–n+p
其中:V(G)----有向圖G中的環數。
m----有向圖G中的弧數。
n----有向圖G中的節點數。
p----有向圖G中的分離部分的數目。(對于正常的程序,p=1)一般來說,由于程序圖不是強連通的,要直接應用以上結論到程序圖中還不行,因此要對程序圖進行擴展,從其出口點到入口點增畫一條虛弧,則原程序圖必然成為強連通圖。這樣就可以應用以上公式來計算環形復雜度。3)環形復雜度的用途:程序的環形復雜度與程序控制流的復雜程度,也就是與程序結構的復雜程度有關。程序內分支數或循環個數增加時,環形復雜度就增加,因此它是對測試難度的一種度量,也能對軟件最終的可靠性給出某種預測。
McCabe發現:環形復雜度高的程序往往是最困難、最容易出問題的程序。實踐表明:模塊規模以V(G)≤10為宜。也就是說,V(G)=10是模塊規模的一個更科學更精確的上限。第71頁,課件共99頁,創作于2023年2月5詳細設計的工具----程序復雜度的定量度量開始K=0L=0TOTAL=0輸入ADowhileTOTAL≤1000andA≠0A>0TOTAL=TOTAL+AK=K+1輸入AL=L+1輸出K,L,TOTAL停止abcdefghijkabcdefghjikV(G)=13-11+1=313條弧11
個節點1
個獨立部分第72頁,課件共99頁,創作于2023年2月第六章編碼程序設計語言:人與計算機通信的基本工具,指揮計算機按人的意志工作。
1946—1954:機器語言和匯編語言,與計算機硬件操作一一對應。
1954:第一個高級語言FORTRAN語言。
高級語言的種類:基礎語言----Fortran,Basic,Cobol,Algol
結構化語言----Pl/1,Pascal,C,Ada
專用語言-------特殊應用如LISP,Prolog.
程序設計語言的特點:名字說明:類型說明:初始化:程序對象(語句,存儲,過程)的局部性:程序模塊:循環控制結構:分支選擇結構:異常處理:獨立編譯:選擇程序設計語言的原則:系統用戶的要求;可以使用的編譯程序;可以使用的軟件工具;工程規模;程序員的知識;軟件可移植要求;軟件的應用領域。在這個階段的任務是:把軟件設計的結果翻譯成計算機可以“理解”的形式
—用計算機語言表示的程序。第73頁,課件共99頁,創作于2023年2月第六章編碼(續)程序設計途徑寫程序的風格程序內部的文檔----恰當的意義明確的標識符,注解,程序的視覺組織(語句布局).數據說明----次序標準化,歸類化.語句構造----每個語句的構造應該簡單、直接和易于理解。一般不要為了節省紙張多個語句寫在一行;避免復雜的條件測試;減少對“非”條件的測試;避免大量使用循環嵌套和條件嵌套;利用括號使邏輯表達式或算術表達式的運算次序清晰直觀。輸入/輸出----效率----程序運行時間、存儲器效率、輸入和輸出的效率。程序設計方法論程序設計自動化----三種途徑(用戶需求形式化精確定義,組件技術,范型)程序設計工具----編譯程序代碼管理系統第74頁,課件共99頁,創作于2023年2月第七章測試基本概念軟件測試的目標或定義(G.Myers):1)測試是為了發現程序中的錯誤而執行程序的過程。
2)好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案。
3)成功的測試是發現了至今為止尚未發現的錯誤的測試。黑盒測試和白盒測試黑盒測試:已經知道了軟件產品應該具有的功能,通過測試來檢驗是否每個功能都能正常使用。這種測試方法又稱功能測試。白盒測試:知道軟件產品內部的工作過程,通過測試來檢驗產品內部動作是否按照規格說明書的規定正常進行。這種測試方法又稱結構測試。不論是每個功能或每個邏輯控制通路,如果對所有的情況都進行測試,這樣的測試成為窮盡測試。窮盡測試在一般情況下是實際不可行的。例一、Sum(inta,intb,intc){return(a+b+c);}假定int類型為16位整數。需要測試216*216*216次。每次1ms,約要1萬年循環20次各種組合,約520種例二:白盒測試第75頁,課件共99頁,創作于2023年2月7.1基本概念(1)軟件測試的步驟:模塊測試子系統測試系統測試平行運行目的:保證每個模塊作為一個單元能夠正確運行,又稱為單元測試集成測試、組裝測試、聯合測試;重點在于測試模塊之間的接口;將經過測試的子系統裝配成一個完整的系統來測試;發現設計和編碼的錯誤,驗證系統是否滿足需求說明所定義的功能及其動態特性;也稱為集成測試。同時運行新舊兩個系統,并且對處理的結果進行比較,以確定新系統是否滿足相關性能指標。驗收測試有用戶參加的系統測試;驗證是否滿足用戶的需要。第76頁,課件共99頁,創作于2023年2月7.1基本概念(2)測試階段的信息流:測試軟件配置測試配置測試結果預期結果評價錯誤錯誤率數據調試可靠性模型正確可靠性預測測試與軟件開發各個階段的關系軟件開發過程是一個自頂向下,逐步細化的過程軟件計劃階段定義軟件作用域軟件需求分析建立軟件信息域、功能和性能需求、約束等軟件設計把設計用某種程序設計語言轉換成程序代碼測試過程是依相反順序安排的自底向上,逐步集成的過程。包括需求說明書、設計說明書、源程序清單等包括測試計劃和測試方案第77頁,課件共99頁,創作于2023年2月7.1基本概念(3)測試與軟件開發各個階段的關系(示意圖)第78頁,課件共99頁,創作于2023年2月7.2單元測試(1)單元測試又稱模塊測試,是針對軟件設計的最小單位─程序模塊,進行正確性檢驗的測試工作。其目的在于發現各模塊內部可能存在的各種差錯。單元測試需要從程序的內部結構出發設計測試用例。多個模塊可以平行地獨立進行單元測試。1.單元測試的內容在單元測試時,測試者需要依據詳細設計說明書和源程序清單,了解該模塊的I/O條件和模塊的邏輯結構,主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,使之對任何合理的輸入和不合理的輸入,都能鑒別和響應。(1)模塊接口測試在單元測試的開始,應對通過被測模塊的數據流進行測試。測試項目包括:調用本模塊的輸入參數是否正確;本模塊調用子模塊時輸入給子模塊的參數是否正確;全局量的定義在各模塊中是否一致;
模塊接口局部數據結構重要的執行通路出錯處理通路影響上述各方面特性的邊界條件第79頁,課件共99頁,創作于2023年2月7.2單元測試(2)
在做內外存交換時要考慮:文件屬性是否正確;
OPEN與CLOSE語句是否正確;緩沖區容量與記錄長度是否匹配;在進行讀寫操作之前是否打開了文件;在結束文件處理時是否關閉了文件;正文書寫/輸入錯誤,
I/O錯誤是否檢查并做了處理。
(2)局部數據結構測試不正確或不一致的數據類型說明使用尚未賦值或尚未初始化的變量錯誤的初始值或錯誤的缺省值變量名拼寫錯或書寫錯不一致的數據類型全局數據對模塊的影響(3)路徑測試選擇適當的測試用例,對模塊中重要的執行路徑進行測試。應當設計測試用例查找由于錯誤的計算、不正確的比較或不正常的控制流而導致的錯誤。對基本執行路徑和循環進行測試可以發現大量的路徑錯誤.(4)錯誤處理測試出錯的描述是否難以理解出錯的描述是否能夠對錯誤定位顯示的錯誤與實際的錯誤是否相符對錯誤條件的處理正確與否在對錯誤進行處理之前,錯誤條件是否已經引起系統的干預等第80頁,課件共99頁,創作于2023年2月7.2單元測試(3)(5)邊界測試注意數據流、控制流中剛好等于、大于或小于確定的比較值時出錯的可能性。對這些地方要仔細地選擇測試用例,認真加以測試。如果對模塊運行時間有要求的話,還要專門進行關鍵路徑測試,以確定最壞情況下和平均意義下影響模塊運行時間的因素2.單元測試的步驟代碼審查:組長+程序設計、編寫、測試者模塊并不是一個獨立的程序,在考慮測試模塊時,同時要考慮它和外界的聯系,用一些輔助模塊去模擬與被測模塊相聯系的其它模塊。
驅動模塊(driver):調用測試單元的“主程序”,它接受測試數據,把這些數據傳送給被測試的模塊并打印有關結果。
樁模塊(stub)──存根模塊:是被測試模塊單元所調用模塊的代替模塊,在模塊調用接口、相關數據處理、控制返回等方面對被代替模塊進行“模擬”。驅動模塊被測模塊樁模塊樁模塊樁模塊測試用例測試結果單元測試的測試環境第81頁,課件共99頁,創作于2023年2月7.3集成測試(1)集成測試是組裝軟件的系統技術;組裝測試、聯合測試通常,在單元測試的基礎上,需要將所有模塊按照設計要求組裝成為系統。這時需要考慮的問題是:在把各個模塊連接起來的時侯,穿越模塊接口的數據是否會丟失;一個模塊的功能是否會對另一個模塊的功能產生不利的影響;各個子功能組合起來,能否達到預期要求的父功能;全局數據結構是否有問題;單個模塊的誤差累積起來,是否會放大,從而達到不能接受的程度。在單元測試的同時可進行組裝測試,發現并排除在模塊連接中可能出現的問題,最終構成要求的軟件系統。子系統的組裝測試特別稱為部件測試,它所做的工作是要找出組裝后的子系統與系統需求規格說明之間的不一致。通常,把模塊組裝成為系統的方式有兩種一次性組裝方式:又稱為非漸增式測試;增殖式組裝方式:其中又分為自頂向下、自底向上和兩種方法混合測試方式。第82頁,課件共99頁,創作于2023年2月7.3集成測試(2)1.一次性組裝方式(bigbang)它是一種非增殖式組裝方式。也叫做整體拼裝。使用這種方式,首先對每個模塊分別進行模塊測試,然后再把所有模塊組裝在一起進行測試,最終得到要求的軟件系統。系統結構圖單元測試整體組裝第83頁,課件共99頁,創作于2023年2月7.3集成測試(3)2.增殖式組裝方式這種組裝方式又稱漸增式組裝首先對一個個模塊進行模塊測試,然后將這些模塊逐步組裝成較大的系統在組裝的過程中邊連接邊測試,以發現連接過程中產生的問題通過增殖逐步組裝成為要求的軟件系統。(1)自頂向下的增殖方式這種組裝方式將模塊按系統程序結構,沿控制層次自頂向下進行組裝。自頂向下的增殖方式在測試過程中較早地驗證了主要的控制和判斷點。選用按深度方向組裝的方式,可以首先實現和驗證一個完整的軟件功能。第84頁,課件共99頁,創作于2023年2月7.3集成測試(4)(2)自底向上的增殖方式這種組裝的方式是從程序模塊結構的最底層的模塊開始組裝和測試。因為模塊是自底向上進行組裝,對于一個給定層次的模塊,它的子模塊(包括子模塊的所有下屬模塊)已經組裝并測試完成,所以不再需要樁模塊。在模塊的測試過程中需要從子模塊得到的信息可以直接運行子模塊得到。自頂向下增殖的方式和自底向上增殖的方式各有優缺點。一般來講,一種方式的優點是另一種方式的缺點。第85頁,課件共99頁,創作于2023年2月7.3集成測試(5)非漸增式和漸增式測試方法的優缺點比較:非漸增式方法要對每個模塊編寫驅動模塊和樁模塊,工作量較大;而漸增式方法可以利用部分已測試過的模塊作為測試軟件;非漸增式方法發現模塊間的接口錯誤較晚,而漸增式方法則要早一些;非漸增式方法發現錯誤后較難定位;而漸增式方法則要容易一些;非漸增式方法可以并行測試所有模塊,可充分利用人力,加快工程進度;漸增式方法接近全真運行環境,需要較多的測試運行時間,但對程序模塊的測試較為徹底。7.4驗收測試—
驗證軟件的有效性
軟件的有效性:如果軟件的功能和性能滿足用戶的需求,則軟件是有效的;軟件有效性的標準:需求分析階段所產生的準確的系統需求文檔;測試方法:一般用黑盒方法;結果:功能和性能均與用戶要求一致,軟件是可以接受的;否則軟件是不可接受的。第86頁,課件共99頁,創作于2023年2月7.5設計測試方案測試方案:包括預定要測試的功能,應該輸入的測試數據和預期的結果。其中最困難的設計測試用的輸入數據(稱為測試用例)。測試用例設計技術:黑盒測試的等價劃分、邊界值分析、錯誤推測法;白盒測試的邏輯覆蓋法;1.邏輯覆蓋語句覆蓋判定覆蓋條件覆蓋判定-條件覆蓋條件組合覆蓋路徑覆蓋。邏輯覆蓋是以程序內部的邏輯結構為基礎的設計測試用例的技術。它屬白盒測試。第87頁,課件共99頁,創作于2023年2月語句覆蓋(A>1)
and
(B=0)(A=2)
or
(X>1)X=X/AX=X+1TTFFbcePROCEDUREExample(A,B:real;X:real);BeginIF(A>1)AND(B=0)THENX:=X/A;IF(A=2)OR(X>1)THENX:=X+1END;a1Sd234567I.A=2,B=0,X=4----sacbed語句覆蓋所有的語句至少執行一次!第88頁,課件共99頁,創作于2023年2月判定覆蓋(A>1)and(B=0)(A=2)or(X>1)X=X/AX=X+1TTFFbcea1Sd234567判定覆蓋每個判定的每種可能都至少執行一次!即每個判定的每個分支都至少執行一次!I:A=3,B=0,X=3:sacbdII:A=2,B=1,X=1:sabed
滿足判定覆蓋的測試用例一定滿足語句覆蓋:判定覆蓋比語句覆蓋強。第89頁,課件共99頁,創作于2023年2月條件覆蓋(A>1)and(B=0)(A=2)or(X>1)X=X/AX=X+1TTFFbcea1Sd234567條件覆蓋每個語句至少執行一次,而且判定表達式中的每個條件都要取得各種可能的結果。(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)II:A=1,B=1,X=1:sabd條件覆蓋一般情況下比判定覆蓋要強,但是也有滿足條件覆蓋但不能滿足判定覆蓋的情況。I:A=2,B=0,X=4:sacbedI:A=2,B=0,X=1:sacbedII:A=1,B=1,X=1:sabed第90頁,課件共99頁,創作于2023年2月判定/條件覆蓋(A>1)and(B=0)(A=2)or(X>1)X=X/AX=X+1TTFFbcea1234567Sd判定條件不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋;事實上同時滿足這兩種標準的判定/條件覆蓋也不會比條件覆蓋更強。(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)II:A=1,B=1,X=1:sabdI:A=2,B=0,X=4:sacbed測試用例I,II既滿足判定覆蓋也滿足條件覆蓋的要求。嚴格來講,合適的條件覆蓋測試用例設計應該作到滿足判定/條件覆蓋的標準:判定/條件覆蓋并不比條件覆蓋更強。第91頁,課件共99頁,創作于2023年2月條件組合覆蓋(A>1)and(B=0)(A=2)or(X>1)X=X/AX=X+1TTFFba1234567Sd條件組合覆蓋要求選取足夠多的測試數據,使得每個判定表達式中條件的各種可能組合都至少出現一次。(A>1)(A≤1)(B=0)(B≠0)(A=2)(A≠2)(X>1)(X≤1)I.A=2,B=0,X=4II.A=2,B=1,X=1III.A=1,B=0,X=2IV.A=1,B=1,X=1滿足條件組合覆蓋標準的測試數據,也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標準。I:sacbedII:sabedIII:sabedIV:sabd覆蓋路徑第92頁,課件共99頁,創作于2023年2月點覆蓋:如果連通圖G的子圖G′是連通的,而且包含G的所有節點,則稱G′是G
的點覆蓋。與語句覆蓋標準相同。邊覆蓋:如果連通圖G的子圖G′是連通的,而且包含G的所有邊,則稱G′是G
的邊覆蓋。通常與判定覆蓋標準相同。路徑覆蓋:選取足夠多的測試數據,使程序的每條可能路徑都至
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外貿英語寫作第一章課件
- 雙十一汽車電商解密
- 南陽職業學院《土建基礎與工程技術經濟》2023-2024學年第二學期期末試卷
- 遼寧商貿職業學院《江蘇民歌欣賞與演唱》2023-2024學年第一學期期末試卷
- 廈門大學嘉庚學院《設計與開發課程設計》2023-2024學年第二學期期末試卷
- 山西省運城市實驗中學2025年初三下學期精英聯賽語文試題含解析
- 四川文軒職業學院《中國文學作品選讀》2023-2024學年第二學期期末試卷
- 四川南充市嘉陵區2024-2025學年初三5月月考試題物理試題含解析
- 山東省齊魯教科研協作體2024-2025學年高三第十次模擬考試語文試題試卷含解析
- 江西省南昌市新建區重點達標名校2025屆初三年級3月聯合考試化學試題含解析
- 廣州小學六年級英語下冊知識點歸納和習題(全冊)
- (正式版)JTT 1482-2023 道路運輸安全監督檢查規范
- MH-T 5035-2017民用機場高填方工程技術規范
- MOOC 英國社會與文化-武漢大學 中國大學慕課答案
- MOOC 數據挖掘-國防科技大學 中國大學慕課答案
- 兒科護理行政查房
- 測溫儀及測振儀的原理及使用 課件
- 船舶操縱與避碰智慧樹知到期末考試答案2024年
- 食品加工肉類行業食品安全培訓
- 2023年中國鐵路遼寧沈陽局集團有限公司招聘考試真題
- 重慶中煙考試題庫2024
評論
0/150
提交評論