軟件工程理論與實踐 課件全套 廉龍穎 第1-11章 軟件工程概述 - 軟件項目管理_第1頁
軟件工程理論與實踐 課件全套 廉龍穎 第1-11章 軟件工程概述 - 軟件項目管理_第2頁
軟件工程理論與實踐 課件全套 廉龍穎 第1-11章 軟件工程概述 - 軟件項目管理_第3頁
軟件工程理論與實踐 課件全套 廉龍穎 第1-11章 軟件工程概述 - 軟件項目管理_第4頁
軟件工程理論與實踐 課件全套 廉龍穎 第1-11章 軟件工程概述 - 軟件項目管理_第5頁
已閱讀5頁,還剩283頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)理解軟件和軟件工程的相關(guān)概念;(2)了解軟件工程的發(fā)展歷程;(3)理解軟件的生命周期及階段任務(wù);(4)掌握常用的軟件過程模型,能夠根據(jù)實際軟件項目選擇較合適的開發(fā)模型。第1章軟件工程概述1.1軟件

1.1.1軟件的概念程序軟件產(chǎn)品程序文檔數(shù)據(jù)是能夠完成預(yù)定功能的可執(zhí)行的指令序列。是程序能夠適當(dāng)操作的信息。是開發(fā)、使用和維護程序所需要的闡明性資料。程序數(shù)據(jù)文檔軟件可以形式化地表示如下:軟件=程序+數(shù)據(jù)+文檔1.1.1軟件的概念軟件是一種抽象的邏輯實體。1.1.2軟件的特點軟件是一種智力產(chǎn)品。軟件開發(fā)至今尚未擺脫手工開發(fā)方式。軟件需要維護。軟件產(chǎn)品010203按照軟件功能分類系統(tǒng)軟件支撐軟件應(yīng)用軟件按照軟件規(guī)模分類微型軟件小型軟件中型軟件大型軟件超大型軟件按照服務(wù)對象分類通用軟件定制軟件1.1.3軟件的分類1.2軟件工程的產(chǎn)生1.2.1軟件生產(chǎn)的發(fā)展個人程序時代軟件是為某種特定型號的計算機設(shè)備而專門配置的程序。20世紀(jì)50年代201620世紀(jì)60年代軟件工程時代1968年首次提出了“軟件工程”這一概念。軟件作坊時代出現(xiàn)了若干高級程序設(shè)計語言,“軟件危機”現(xiàn)象爆發(fā)。20世紀(jì)70年代至今軟件產(chǎn)品不能滿足用戶的需求。軟件產(chǎn)品成本高,開發(fā)進度難以準(zhǔn)確估計。軟件產(chǎn)品可維護性差。軟件產(chǎn)品質(zhì)量差,可靠性得不到保證。軟件產(chǎn)品文檔不完備。軟件危機定義:軟件危機是指在軟件開發(fā)和軟件維護過程中所遇到的一系列問題。1.2.2軟件危機“軟件工程軟件工程是將系統(tǒng)化的、規(guī)范化的、可度量的途徑應(yīng)用于軟件的開發(fā)、運行和維護的過程,即將工程化應(yīng)用于軟件的方法的研究。1.3軟件工程1.3.1軟件工程概念工具方法過程

軟件工程方法學(xué)有三個要素:方法、工具和過程。方法是指完成軟件開發(fā)任務(wù)的技術(shù)方法;工具是指為方法的運用提供自動或半自動的軟件支撐環(huán)境;過程是指規(guī)定了完成任務(wù)的工作階段、工作內(nèi)容、產(chǎn)品、驗收的步驟和完成準(zhǔn)則。1.3.2軟件工程方法學(xué)結(jié)構(gòu)化方法結(jié)構(gòu)化方法采用自上向下、逐步求精的指導(dǎo)思想,把軟件開發(fā)工作劃分成若干個階段,每個階段相對獨立。面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ú捎米缘紫蛏虾妥皂斚蛳孪嘟Y(jié)合的方法,以對象建模為基礎(chǔ),運用對象、類、消息傳遞、繼承、封裝等概念來構(gòu)造軟件產(chǎn)品。1.3.2軟件工程方法學(xué)1.4軟件過程

國際標(biāo)準(zhǔn)化組織ISO將軟件過程定義為:“把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動”。1.4.1軟件生命周期軟件生命周期是指一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。1.可行性研究:可行性研究是對準(zhǔn)備開發(fā)的軟件項目的可行性進行風(fēng)險評估。一般從技術(shù)可行性、經(jīng)濟可行性和操作可行性等方面進行分析,并形成可行性研究報告,由此決定軟件項目是否繼續(xù)進行下去。2.需求分析:需求分析是一個復(fù)雜的過程,其成功與否直接關(guān)系到軟件開發(fā)的成敗。需求分析以用戶需求為基本依據(jù),從功能、性能、操作等多個方面,給出軟件完整的和準(zhǔn)確的描述,從而形成軟件需求規(guī)格說明書。3.軟件設(shè)計:軟件設(shè)計就是把需求規(guī)格說明書中描述的功能可操作化,它可以分為概要設(shè)計和詳細設(shè)計兩個階段。概要設(shè)計旨在建立系統(tǒng)的總體結(jié)構(gòu),主要體現(xiàn)在模塊的構(gòu)成與模塊接口兩個方面,形成概要設(shè)計說明書。詳細設(shè)計以概要設(shè)計為依據(jù),確定每個模塊的內(nèi)部細節(jié),并形成詳細設(shè)計說明書,為編碼實現(xiàn)階段提供最直接的依據(jù)。4.編碼實現(xiàn):編碼實現(xiàn)就是把詳細設(shè)計文檔中對每個模塊的算法描述轉(zhuǎn)換為使用某種程序設(shè)計語言實現(xiàn)的程序。在編碼實現(xiàn)過程中,必須遵守一定的標(biāo)準(zhǔn)和規(guī)范,這樣可以提高代碼的質(zhì)量,并且便于后期維護。5.軟件測試:

軟件測試一般可以分為單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試和驗收測試等。通過軟件測試可以發(fā)現(xiàn)軟件中存在的缺陷,保證軟件產(chǎn)品的質(zhì)量。6.軟件維護:

軟件產(chǎn)品交付后,還需要進行長期的軟件維護。軟件的維護過程,也是軟件的功能更新、版本升級的過程。通常情況下,軟件產(chǎn)品的質(zhì)量越高,進行維護的工作量越小。1.4.1軟件生命周期1.4.2軟件過程模型定義:過程模型是一個包括軟件產(chǎn)品開發(fā)、運行和維護中有關(guān)過程、活動和任務(wù)的框架,這些過程、活動和任務(wù)覆蓋了從該軟件的需求定義到軟件使用終止的全過程。瀑布模型增量模型螺旋模型噴泉模型演化模型原型模型

瀑布模型是20世紀(jì)80年代之前最受推崇的軟件開發(fā)模型。瀑布模型的適用范圍:(1)適用于項目開始時需求已確定的情況;(2)開發(fā)人員對軟件的應(yīng)用領(lǐng)域很熟悉。1.4.2軟件過程模型增量模型也稱為漸增模型。增量模型的適用范圍:(1)進行已有產(chǎn)品升級或新版本開發(fā);(2)對所開發(fā)的領(lǐng)域比較熟悉而且已有原型系統(tǒng)。增量模型示意圖1.4.2軟件過程模型演化模型是一種有彈性的過程模式。演化模型示意圖1.4.2軟件過程模型

螺旋模型將瀑布模型與演化模型結(jié)合起來,加入了兩種模型均忽略了的風(fēng)險分析。螺旋模型示意圖1.4.2軟件過程模型噴泉模型是典型的面向?qū)ο筌浖_發(fā)模型,著重強調(diào)不同階段之間的重疊。噴泉模型示意圖1.4.2軟件過程模型

原型模型也稱為快速原型模型,它是指快速開發(fā)一個可以運行的原型系統(tǒng)。原型模型示意圖1.4.2軟件過程模型本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)了解可行性研究的內(nèi)容和步驟;(2)理解操作可行性研究與法律可行性研究的任務(wù);(3)掌握技術(shù)可行性研究和經(jīng)濟可行性研究的方法;(4)能夠編寫小型項目的可行性研究報告。第2章可行性研究基本可行,需要對解決方案做出修改。不可行,終止項目。程序可行,按計劃進行??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi),確定該軟件的開發(fā)問題是否能解決,最終決定“做還是不做”的問題。2.1可行性研究內(nèi)容

可行性研究的結(jié)論有以下3種情況。2.1可行性研究內(nèi)容請輸入標(biāo)題請輸入標(biāo)題可行性研究技術(shù)可行性操作可行性經(jīng)濟可行性法律可行性請輸入標(biāo)題請輸入您的標(biāo)題請輸入您的標(biāo)題請請輸入您的標(biāo)題2.2可行性研究步驟步驟1步驟2步驟3步驟5步驟4明確系統(tǒng)目標(biāo)分析研究現(xiàn)有系統(tǒng)設(shè)計新系統(tǒng)的高層邏輯模型獲得并比較可行的方案撰寫可行性研究報告2.3技術(shù)可行性技術(shù)可行性一般要考慮的情況如下:(1)技術(shù)。通過調(diào)查了解當(dāng)前最先進的技術(shù),分析相關(guān)技術(shù)的發(fā)展是否支持系統(tǒng)開發(fā)。(2)資源有效性??紤]是否具備用于建立系統(tǒng)的硬件設(shè)備、軟件、開發(fā)環(huán)境等資源,以及用于開發(fā)項目的人員在技術(shù)和時間上是否存在問題。2.4經(jīng)濟可行性1.成本估算方法(1)代碼行技術(shù):這是最簡單的定量估算方法,它把開發(fā)每個軟件功能的成本和實現(xiàn)這個功能需要的源代碼行數(shù)聯(lián)系起來,一旦估算出源代碼行數(shù)以后,用每行代碼的平均成本乘以行數(shù)就可以確定軟件的成本。(2)任務(wù)分解技術(shù):這種方法首先把軟件開發(fā)過程分解為若干個獨立的任務(wù),再分別估算每個單獨任務(wù)的成本,最后累加起來得出軟件開發(fā)的總成本。(3)自動估算成本技術(shù):這種方法可以減輕人的勞動,但是要有大量的經(jīng)驗數(shù)據(jù)和專家系統(tǒng)知識庫作為支持。任務(wù)估計人力(人月)人力成本(元/人月)成本(元)需求分析51020051000設(shè)計159600144000編碼和單元測試8795063600綜合測試16.587001435502.4經(jīng)濟可行性2.度量效益方法有形效益可以使用貨幣的時間價值、投資回收期、純收入等指標(biāo)進行度量。無形效益很難直接進行度量,主要是從性質(zhì)上、心理上進行衡量。有形效益無形效益(1)貨幣的時間價值:軟件項目投資是現(xiàn)在的,效益是將來獲得的,因此需要考慮貨幣的時間價值。通常用利率表示貨幣的時間價值。假設(shè)年利率為i,投資額P在n年后的價值F為這就是P元錢存到銀行n年后的價值。反之,如果n年后收入F元,那么這些錢現(xiàn)在的價值P為【例2-1】某企業(yè)引入某軟件系統(tǒng)來代替人工作業(yè),每年可節(jié)省5萬元。若軟件可使用7年,開發(fā)系統(tǒng)需要花費16萬元。時間/年第n年產(chǎn)生的效益(萬元)(1+i)n

第n年產(chǎn)生的效益折合成現(xiàn)在價值(萬元)

累計(萬元)

151.05004.76194.7619251.10254.53519.2970351.15764.319313.6163451.21554.113517.7298551.27633.917621.6474651.34013.731125.3785751.40713.553428.9319(2)投資回收期:投資回收期是衡量工程價值的一個經(jīng)濟指標(biāo)。投資回收期是指軟件項目累計的經(jīng)濟效益等于最初投資成本時所需要的時間。投資回收期越短,說明利潤獲取越快,軟件項目越值得投資。例2-1中引入某軟件系統(tǒng)4年后企業(yè)可節(jié)省17.7298萬元,投資已全部回收,并產(chǎn)生贏利1.7298萬元,那么1.7298/4.1135=0.42因此,投資回收期是4-0.42=3.58年。(3)純收入:純收入是衡量工程價值的另一項經(jīng)濟指標(biāo)。純收入指在軟件的使用壽命期內(nèi)累計產(chǎn)生的經(jīng)濟效益(折合成現(xiàn)在價值)與投資成本之差。若某項目的純收入小于0,則該項目是不值得投資的。例2-1中引入某軟件系統(tǒng)7年后,項目的純收入預(yù)計是28.9319-16=12.9319萬元

很明顯,這個軟件項目是值得開發(fā)的?!纠?-2】

本實例要求實現(xiàn)某高校財務(wù)問答系統(tǒng),分為用戶端和管理端。用戶端是手機端子系統(tǒng),主要用于用戶問答,主要包括查詢問題、查看答案、反饋問題等功能。管理端是PC端子系統(tǒng),主要用于財務(wù)問答相關(guān)數(shù)據(jù)的后臺管理,主要包括用戶管理、教職工管理、類別管理、問題管理、統(tǒng)計管理和反饋管理等功能。2.4可行性研究實例本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)理解軟件需求分析的概念和特點;(2)掌握需求分析的具體任務(wù)及過程;(3)掌握需求獲取的方法;(4)能夠編寫小型項目的需求規(guī)格說明書。第3章軟件需求工程3.1.1軟件需求1.什么是需求IEEE軟件工程標(biāo)準(zhǔn)詞匯表中對需求的定義是:(1)用戶解決問題或達到目標(biāo)所需的條件或能力;(2)系統(tǒng)或系統(tǒng)部件要滿足合同、標(biāo)準(zhǔn)、規(guī)范或其它正式規(guī)定文檔所需具有的條件或能力;(3)一種反映上面(1)或(2)所描述的條件或能力的文檔說明。3.1

需求工程概述

3.1

需求工程概述功能性需求

功能性需求主要描述軟件應(yīng)該做什么,即為用戶或其他系統(tǒng)完成的功能、提供的服務(wù)。功能性需求是軟件的一項基本需求,但并不是唯一的需求。非功能性需求

非功能性需求主要描述軟件質(zhì)量屬性的特性,包括易用性、可靠性、執(zhí)行速度以及異常處理能力等。

3.1

需求工程概述軟件產(chǎn)品要滿足用戶所需就要創(chuàng)建良好的需求,一般良好的需求應(yīng)該包含以下9個特性:(1)正確性:技術(shù)可行,內(nèi)容合法,符合軟件設(shè)計實際要求;(2)完整性:能夠表達一個完整的想法;(3)清晰性:不易被錯誤理解,不模棱兩可;(4)一致性:不與其它需求相沖突;(5)可追蹤性:可以唯一識別并進行跟蹤;(6)可驗證性:可驗證軟件能夠滿足用戶需求;(7)可行性:可以在預(yù)期成本和計劃進度內(nèi)完成;(8)模塊化:可單獨變更而不影響其它需求,或不會造成較大影響;(9)獨立于設(shè)計:不包括項目設(shè)計和實現(xiàn)的細節(jié)、計劃信息等。3.1.2需求分析需求分析是研究用戶要求,以得到目標(biāo)系統(tǒng)的需求定義的過程,即理解、分析和表達“系統(tǒng)必須做什么”的過程。

客戶需求的模糊性對問題空間理解的不完備性與不一致性客戶需求的動態(tài)性需求分析過程需求獲取需求提煉需求描述需求驗證角色名稱描述用戶直接操作軟件的人員客戶軟件開發(fā)的委托方或軟件市場的目標(biāo)客戶需求分析人員負責(zé)進行需求搜集,并進行分析形成軟件需求規(guī)格說明書3.2

需求獲取3.2.2需求獲取存在問題(1)分析人員與用戶的溝通問題(2)誤解客戶需求問題(3)需求的不確定性問題(4)獲取方法問題(5)時間問題3.2.3需求獲取方法1.訪談2.問卷調(diào)查3.實地考查4.情景分析5.構(gòu)造原型3.2.4提高獲取的效率

1.主動了解客戶業(yè)務(wù)和相關(guān)知識2.及時整理記錄3.對客戶進行正確分類4.引導(dǎo)客戶,使其充分表達自己的想法5.充分利用需求確認(rèn)會議6.需求是變動的7.及時交流3.2.5需求獲取實例

【例3-1】高校財務(wù)問答系統(tǒng)需求獲取實例1.確定用戶類型2.確定場景3.3需求提煉3.3.1需求分析模型所謂模型,就是為了理解事物而對該事物做出的一種抽象,在軟件工程中的模型由一組圖形符號和組織這些符號的規(guī)則組成。3.3.2需求分析模型分類1.域建模2.用例建模3.組件和服務(wù)建模4.性能建模3.3.3需求分析建模方法

結(jié)構(gòu)化分析建模方法是從數(shù)據(jù)流進行分析,用數(shù)據(jù)流程圖把要開發(fā)的軟件功能結(jié)構(gòu)表示出來,這種圖形是軟件的功能模型,所以它是一種建?;顒?。面向?qū)ο蠓治鼋2粌H僅是新的編程語言的匯總。它是一種新的思維方式,一種關(guān)于計算和信息結(jié)構(gòu)化的新思維。面向?qū)ο蟮姆治鼋?梢砸暈槭且粋€包含抽象、封裝、模塊化、層次、分類、并行、穩(wěn)定、可重用和可擴展性等元素概念的框架。3.4需求描述3.4.1需求描述方法通常有三種方法進行需求描述:(1)用好的結(jié)構(gòu)化和自然語言編寫文本型文檔;(2)建立圖形化模型,這些模型可以描繪轉(zhuǎn)換過程、系統(tǒng)狀態(tài)和它們之間的變化、數(shù)據(jù)關(guān)系、邏輯流或?qū)ο箢惡退鼈兊年P(guān)系;(3)編寫形式化規(guī)模說明,可以通過使用數(shù)學(xué)上精確的形式化邏輯語言來定義需求。盡管形式化規(guī)格說明具有很強的嚴(yán)密性和精確度,但由于其所使用的形式化語言只有極少數(shù)專業(yè)人員才熟悉,所以,這一方法一直沒有在工業(yè)界得到普遍使用。3.4.2軟件需求規(guī)格說明軟件需求規(guī)格說明書(SoftwareRequirementSpecification,SRS)是需求分析的結(jié)果,它具有廣泛的使用范圍,并成為客戶、分析人員和設(shè)計人員之間進行理解和交流的手段。客戶通過需求規(guī)格說明書指定需求,檢查需求描述是否滿足原來的期望;設(shè)計人員通過需求規(guī)格說明書了解軟件需要開發(fā)的內(nèi)容,將其作為軟件設(shè)計的基本出發(fā)點;測試人員根據(jù)軟件需求規(guī)格說明書中對產(chǎn)品行為的描述,制定測試計劃、測試用例和測試過程;產(chǎn)品發(fā)布人員根據(jù)軟件需求規(guī)格說明書和用戶界面設(shè)計編寫用戶手冊等文檔。3.4.3需求描述的編寫原則(1)句子和段落要短。使用正確的語法、拼寫、標(biāo)點。使用術(shù)語,要保持一致性,并在術(shù)語表或數(shù)據(jù)字典中定義它們。(2)要檢查需求是否被有效地定義。換句話說,作為軟件需求規(guī)格說明的編寫者,是否需要說明書以外的解釋,來幫助開發(fā)人員很好地理解需求,以便于設(shè)計和實現(xiàn)?如果是的話,說明書需求還需要精化。(3)需求編寫者還要努力正確地把握細化程度。要避免包含多個需求的冗長的敘述段落。盡量編寫?yīng)毩⒌目蓽y試的需求,如果一小部分測試就可以驗證一個需求的正確性,那么它已經(jīng)正確地被細化了。如果預(yù)想到多種不同的測試,則幾個需求可能已關(guān)聯(lián)在一起,需要拆分開。(4)密切關(guān)注合成了多個需求的單個需求。一個需求中的連接詞“和”與“或”表示了幾個需求的合并。盡量避免在一個需求中使用“和”與“或”。(5)通篇文檔細節(jié)上要保持一致。在多處包含相同的需求可以使文檔更易于閱讀,但也會給文檔的維護增加困難。文檔涉及的多份文本要在同一時間內(nèi)全部更新,避免不一致性。3.5需求驗證需求分析的最后一步是驗證以上需求分析成果。需求分析階段的工作成果是后續(xù)軟件開發(fā)的基礎(chǔ),為了提高軟件開發(fā)質(zhì)量,降低軟件開發(fā)的成本,必須對需求的正確性進行嚴(yán)格的驗證,確定需求的一致性、完整性和有效性。確保設(shè)計與實現(xiàn)過程中的需求可回溯,并進行需求變更管理。3.5.1需求驗證標(biāo)準(zhǔn)1.正確性2.無歧義性3.完整性4.可驗證性5.一致性6.可修改性7.可追蹤性3.5.2如何做好需求驗證1.分層次和分階段評審用戶的需求可以分層次,一般而言可以分成如下的層次:(1)目標(biāo)性需求:定義了整個系統(tǒng)需要達到的目標(biāo);(2)功能性需求:定義了整個系統(tǒng)必須完成的任務(wù);(3)操作性需求:定義了完成每個任務(wù)時具體的人機交互。2.正式評審與非正式評審結(jié)合3.精心挑選和培訓(xùn)評審員4.建立標(biāo)準(zhǔn)的評審流程和充分準(zhǔn)備評審5.做好評審后的跟蹤工作3.6需求管理3.6.1需求變更控制1.需求變更的原因(1)對需求的理解存在分歧(2)系統(tǒng)實施時間過長(3)用戶業(yè)務(wù)需求改變(4)系統(tǒng)正常升級2.需求變更流程變更控制是在一定的流程下有效地實施整個變更過程,需求變更流程如圖3-3所示,應(yīng)該包括以下4個部分:(1)仔細評估已建議的變更;(2)挑選合適的人選對變更做出決定;(3)變更應(yīng)及時通知所涉及的人員;(4)項目要按一定的流程實施需求變更。3.6.2需求跟蹤一個管理系統(tǒng)的需求跟蹤通常應(yīng)該滿足,第一,能夠完整地定義需求之間的各種關(guān)系,并提供可視化表示方式;第二,在需求變更時,系統(tǒng)能夠按照所定義的需求跟蹤鏈,跟蹤到所有受影響的需求。同時,管理人員也需要進行需求狀態(tài)跟蹤,以了解項目工程進行到了何種程度,從而對項目進度進行控制。3.7應(yīng)用案例——高校財務(wù)問答系統(tǒng)需求描述3.7.1引言本文檔是軟件開發(fā)者和客戶之間簽訂的一份契約,保證客戶需求的穩(wěn)定性,為軟件開發(fā)者提供軟件開發(fā)過程的憑據(jù)。1.項目目的和目標(biāo)本系統(tǒng)的目的在于創(chuàng)建一個財務(wù)問答平臺,有助于解決大部分教職工的常見財務(wù)相關(guān)問題,減少財務(wù)部門工作人員回答咨詢問題的工作量。2.用戶簡介本系統(tǒng)面向的是各類高校,隨著計算機技術(shù)的不斷發(fā)展,需要為一些工作開發(fā)管理系統(tǒng)幫助減輕工作人員工作量。3.參考文獻略4.版本更新信息3.7.2綜合描述1.組織結(jié)構(gòu)與職責(zé)本系統(tǒng)用戶的組織結(jié)構(gòu)與角色。2.角色定義組織結(jié)構(gòu)圖中各用戶類型的職責(zé)說明。3.7.3目標(biāo)系統(tǒng)功能需求3.7.4目標(biāo)系統(tǒng)性能需求1.時間需求(1)檢查輸入資料合法性的時間應(yīng)少于1秒;(2)查詢的最長等待時間應(yīng)少于5秒;(3)更新信息的時間應(yīng)少于3秒;(4)信息上傳和下載的時間應(yīng)少于10秒。2.空間需求(1)支持的終端數(shù):<=1500;(2)支持的并行操作的使用者數(shù):<=300。3.7.5目標(biāo)系統(tǒng)界面與接口需求1.界面需求本系統(tǒng)的界面遵循風(fēng)格統(tǒng)一,兼容常用移動端系統(tǒng)和管理端瀏覽器。2.接口需求點列表/接口模型無接口。3.7.6目標(biāo)系統(tǒng)其他需求1.安全性(1)用戶端和管理端必須登錄后才可以使用。(2)任何等級的用戶登錄時需要填寫正確的驗證碼。2.可靠性(1)不會因為一些錯誤而導(dǎo)致系統(tǒng)崩潰或數(shù)據(jù)丟失,保證系統(tǒng)長時間運行不會出現(xiàn)任何錯誤。(2)設(shè)計過程充分考慮惡意代碼等非法入侵行為,盡量達到安全性最高。3.培訓(xùn)需求鑒于本系統(tǒng)使用比較簡單、方便,僅提供用戶端和管理端操作視頻和用戶使用手冊,無需培訓(xùn)服務(wù)。本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)理解結(jié)構(gòu)化分析過程;(2)掌握數(shù)據(jù)模型、功能模型和行為模型的建模方法;(3)能夠利用結(jié)構(gòu)化分析描述工具編寫軟件需求文檔。第4章結(jié)構(gòu)化分析4.1結(jié)構(gòu)化分析概述4.1.1結(jié)構(gòu)化分析過程要對一個系統(tǒng)進行結(jié)構(gòu)化分析,首先要明確這一階段的任務(wù)是要搞清楚“做什么”。結(jié)構(gòu)化分析的過程可以分為如下4個步驟。1.建立當(dāng)前系統(tǒng)的物理模型2.抽象出當(dāng)前系統(tǒng)的邏輯模型3.建立目標(biāo)系統(tǒng)的邏輯模型4.進一步補充和優(yōu)化4.1.2結(jié)構(gòu)化分析模型結(jié)構(gòu)化分析方法用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞和變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能需求的所有可實現(xiàn)的軟件元素為止。結(jié)構(gòu)化分析模型,如圖4-1所示,分為數(shù)據(jù)模型、功能模型和行為模型。為了定義軟件的功能,建立功能模型;為了理解和表示問題的信息域,建立數(shù)據(jù)模型;為了表示軟件的行為,建立行為模型。結(jié)構(gòu)化分析模型的核心是數(shù)據(jù)字典,用來描述軟件使用或產(chǎn)生的所有數(shù)據(jù)對象。功能模型使用數(shù)據(jù)流圖進行描述;數(shù)據(jù)模型使用實體-關(guān)系圖進行描述;行為模型使用狀態(tài)轉(zhuǎn)換圖進行描述。4.2數(shù)據(jù)流圖4.2.1數(shù)據(jù)流圖的基本成分1.?dāng)?shù)據(jù)的源點/終點2.加工3.文件4.?dāng)?shù)據(jù)流4.2.2數(shù)據(jù)流圖的實現(xiàn)1.?dāng)?shù)據(jù)流圖表示2.?dāng)?shù)據(jù)流圖實現(xiàn)方法(1)找出系統(tǒng)的輸入和輸出(2)繪制系統(tǒng)的內(nèi)部(3)繪制加工的內(nèi)部3.數(shù)據(jù)流圖實例【例4-1】某高校教材管理系統(tǒng)。某高校教材管理系統(tǒng)工作過程如下:教師填寫領(lǐng)書單,經(jīng)主管審查簽名批準(zhǔn)后,教師到教材科領(lǐng)取教材;教材科管理員檢查領(lǐng)書單是否符合審批手續(xù),不合格的領(lǐng)書單退還教師,領(lǐng)書單合格則辦理領(lǐng)書手續(xù),進行登記,修改庫存量并發(fā)放教材;當(dāng)某種教材的庫存量低于事先規(guī)定的臨界值時,登記需求采購教材的訂貨信息,為教材科采購員提供一張訂書單。(1)繪制數(shù)據(jù)流圖頂層把整個系統(tǒng)視為一個大的加工,然后根據(jù)數(shù)據(jù)系統(tǒng)從哪些外部實體接收數(shù)據(jù)流,以及系統(tǒng)發(fā)送數(shù)據(jù)流到哪些外部實體,就可以繪制出輸入輸出圖,這張圖也就是數(shù)據(jù)流圖頂層圖。列出教材管理系統(tǒng)的全部數(shù)據(jù)源點和數(shù)據(jù)終點。源點包括教師;終點包括教材科管理員和教材科采購員。然后將系統(tǒng)加工處理過程作為一個整體,可以得到頂層數(shù)據(jù)流圖。教材管理系統(tǒng)頂層數(shù)據(jù)流圖。(2)繪制各層數(shù)據(jù)流圖

把頂層圖的加工分解成若干個加工,并用數(shù)據(jù)流將這些加工連接起來,使得頂層圖的輸入數(shù)據(jù)經(jīng)過若干加工處理后,變成頂層圖的輸出數(shù)據(jù)流。這張圖被稱為第1層數(shù)據(jù)流圖。從輸入端開始,根據(jù)教材科業(yè)務(wù)工作流程,繪制出數(shù)據(jù)流流經(jīng)的各加工框,逐步繪制出輸出端,得到1層數(shù)據(jù)流圖。教材管理系統(tǒng)1層數(shù)據(jù)流圖。

然后需要分解和細化各加處理過程,可以得到分解數(shù)據(jù)流圖。教材管理系統(tǒng)加工1分解數(shù)據(jù)流圖。(3)繪制總體數(shù)據(jù)流圖將各層數(shù)據(jù)流圖進行合并,形成總體數(shù)據(jù)流圖。教材管理系統(tǒng)總體數(shù)據(jù)流圖。4.3實體-關(guān)系圖4.3.1數(shù)據(jù)對象數(shù)據(jù)對象是對軟件必須理解的復(fù)合信息的表示。所謂復(fù)合信息是指具有一系列不同性質(zhì)或?qū)傩缘氖聞?wù),僅有單個值的事務(wù)不是數(shù)據(jù)對象,例如長度、寬度等。數(shù)據(jù)對象只封裝了數(shù)據(jù)而沒有對作用于數(shù)據(jù)上的操作的引用,這是數(shù)據(jù)對象與面向?qū)ο蠓椒ㄖ兴枋龅摹邦悺被颉皩ο蟆钡娘@著區(qū)別。數(shù)據(jù)對象可以是外部實體、事物、行為、事件、角色、單位、地點、結(jié)構(gòu)等。例如,學(xué)生成績管理系統(tǒng)中的教師、學(xué)生和課程都可以認(rèn)為是數(shù)據(jù)對象,它們都可以由一組屬性來定義?!皵?shù)據(jù)對象描述”中包含了數(shù)據(jù)對象及它們的所有屬性,數(shù)據(jù)對象彼此之間是有關(guān)聯(lián)的。4.3.2屬性屬性定義了數(shù)據(jù)對象的性質(zhì)。一個數(shù)據(jù)對象往往具有很多屬性,應(yīng)該根據(jù)對所要解決問題的理解,來確定數(shù)據(jù)對象的一組合適的屬性。例如,教材管理系統(tǒng)中描述數(shù)據(jù)對象“教師”的屬性包括工號、姓名和密碼等。但如果在教師信息管理系統(tǒng)中,同樣的“教師”這個數(shù)據(jù)對象,但是用上述這些屬性描述就不滿足系統(tǒng)需求了,應(yīng)該添加一些屬性,例如職稱、年齡、籍貫、身份證號等。4.3.3關(guān)系數(shù)據(jù)對象彼此之間是有關(guān)聯(lián)的,也被稱為關(guān)系。例如,數(shù)據(jù)對象“教師”和“教材”之間的連接關(guān)系是“領(lǐng)用”。這種關(guān)聯(lián)的形態(tài)有以下3種:(1)一對一關(guān)聯(lián)。例如,一個高校只有一個教材科,而一個教材科只能屬于某一所高校,所以高校與教材科的聯(lián)系是一對一的。(2)一對多關(guān)聯(lián)。例如,一個出版社可以出版多本教材,但某一本教材只能由一個出版社出版發(fā)行,所以出版社與教材之間的聯(lián)系是一對多的。(3)多對多關(guān)聯(lián)。例如,一名教師可以領(lǐng)用多門課程的教材,一門課程的教材也可以被多名教師領(lǐng)用,所以教師與教材之間的聯(lián)系是多對多的。4.3.4實體-關(guān)系圖的實現(xiàn)1.實體-關(guān)系圖表示E-R圖有以下3個要素:(1)實體:就是現(xiàn)實世界的事物,用矩形表示。(2)屬性:定義了實體的性質(zhì),用橢圓形表示。(3)關(guān)系:是實體之間相互連接的方式,用菱形表示。實體之間存在著三種關(guān)系類型,分別是一對一、一對多、多對多,它們反映到E-R圖中就是相應(yīng)的關(guān)系類型,即1:1、1:n和m:n。2.實體-關(guān)系圖實現(xiàn)方法實體關(guān)系圖是以迭代的方式構(gòu)造出來的,可以采用以下步驟實現(xiàn)。(1)在需求獲取的過程中,要求用戶列出業(yè)務(wù)流程中涉及的“事物”,將這些“事物”演化為一組輸入和輸出的數(shù)據(jù)對象,以及生產(chǎn)和消費信息的外部實體。(2)一次考慮一個對象,檢查這個對象和其他對象間是否存在連接。(3)當(dāng)連接存在時,應(yīng)創(chuàng)建一個或多個實體-關(guān)系對。(4)對每個實體-關(guān)系對考察其基數(shù),并將基數(shù)改成關(guān)聯(lián)的形態(tài)。(5)迭代地進行步驟(2)到步驟(4),直到定義了所有的實體-關(guān)系對。在這個過程中發(fā)現(xiàn)遺漏是正常的。進行若干次迭代時,將會不斷地增加新的實體和關(guān)系。(6)定義每個實體的屬性。(7)繪制并審核實體-關(guān)系圖。(8)重復(fù)步驟(1)到步驟(7),直到數(shù)據(jù)建模完成。3.實體-關(guān)系圖實例【例4-2】高校教材績管理系統(tǒng)實體-關(guān)系設(shè)計。通過對某高校教材管理系統(tǒng)進行調(diào)研分析,其中共有教師、管理員、教材、課程、專業(yè)共5個實體。教師實體的屬性包括工號、密碼和姓名;管理員實體的屬性包括編號、密碼和用戶名;教材實體的屬性包括教材編號、教材名稱、出版社編號、出版社名稱和庫存量;課程實體的屬性包括課程編號和課程名稱;專業(yè)實體的屬性包括專業(yè)編號和專業(yè)名稱;領(lǐng)用關(guān)系有時間和領(lǐng)書數(shù)量屬性,訂購關(guān)系具有訂書數(shù)量屬性。教師與教材是領(lǐng)用關(guān)系,每種教材可以由多位教師領(lǐng)用,每位教師可以領(lǐng)用多本教材,因此領(lǐng)用是多對多關(guān)系;管理員與教材是訂購關(guān)系,每種教材允許多位管理員訂購,且每位管理員可以訂購多種教材,因此訂購是多對多關(guān)系;專業(yè)與課程是開設(shè)關(guān)系,每個專業(yè)可以開設(shè)多門課程;課程與教材是選用關(guān)系,每門課程只可以選用一本教材。高校教材管理系統(tǒng)實體-關(guān)系圖。4.4狀態(tài)轉(zhuǎn)換圖行為模型可用狀態(tài)轉(zhuǎn)換圖(StatusTransferDiagram,STD)描述。狀態(tài)轉(zhuǎn)換圖是一種描述系統(tǒng)對內(nèi)部或外部事件響應(yīng)的行為模型。并不是所有的實體都需要繪制狀態(tài)轉(zhuǎn)換圖,有些實體有一些意義明確的狀態(tài),并且其行為在不同的狀態(tài)時有所改變,此時才需要繪制狀態(tài)轉(zhuǎn)換圖。例4-1中,教材管理系統(tǒng)領(lǐng)書過程狀態(tài)轉(zhuǎn)換圖。首先找出教師領(lǐng)書過程的所有狀態(tài),然后分析引起每種狀態(tài)轉(zhuǎn)換的具體行為,最后繪制出狀態(tài)轉(zhuǎn)換圖。4.5數(shù)據(jù)字典4.5.1數(shù)據(jù)字典的定義與用途數(shù)據(jù)字典(DataDictionary,DD)是結(jié)構(gòu)化分析的一個有力工具。數(shù)據(jù)字典是對數(shù)據(jù)流圖中出現(xiàn)的所有數(shù)據(jù)元素、數(shù)據(jù)流、文件、加工的定義的集合,其中對于加工的描述被稱為“加工邏輯說明”。1.?dāng)?shù)據(jù)字典的定義數(shù)據(jù)字典是關(guān)于數(shù)據(jù)信息的集合,是數(shù)據(jù)流圖中所有元素嚴(yán)格定義的場所,每個元素要對應(yīng)數(shù)據(jù)字典中的一個條目。數(shù)據(jù)字典中的條目應(yīng)按一定次序排列,以方便查閱。2.?dāng)?shù)據(jù)字典的用途數(shù)據(jù)字典的作用是在軟件分析和設(shè)計過程中提供數(shù)據(jù)描述,是數(shù)據(jù)流圖必不可少的輔助資料。數(shù)據(jù)流圖和數(shù)據(jù)字典一起構(gòu)成了系統(tǒng)的邏輯模型。沒有數(shù)據(jù)字典,數(shù)據(jù)流圖就不嚴(yán)格;沒有數(shù)據(jù)流圖,數(shù)據(jù)字典就沒有作用。數(shù)據(jù)字典的重要用途就是作為分析階段的工具。在數(shù)據(jù)字典中建立嚴(yán)密一致的定義有助于分析人員和用戶之間的交流。同樣,將數(shù)據(jù)流圖中的每個元素的精確定義放在一起,就構(gòu)成了系統(tǒng)的、完整的需求規(guī)格說明的主體。在軟件設(shè)計階段,數(shù)據(jù)字典是存儲文件或數(shù)據(jù)庫設(shè)計的基礎(chǔ)。在實施階段,還可參照數(shù)據(jù)字典描述數(shù)據(jù)。隨著系統(tǒng)的改進,字典中的信息也會發(fā)生變化,新的信息會隨時加入進來。4.5.2數(shù)據(jù)字典的內(nèi)容和格式1.數(shù)據(jù)流詞條

數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳播的路徑。一個數(shù)據(jù)流詞條應(yīng)有以下幾項內(nèi)容。數(shù)據(jù)流名稱:要求與數(shù)據(jù)流圖中出現(xiàn)的名稱一致;描述:簡要介紹該數(shù)據(jù)流在系統(tǒng)中的作用;數(shù)據(jù)流來源:數(shù)據(jù)流來自哪個加工或哪個外部實體;數(shù)據(jù)流去向:數(shù)據(jù)流流向哪個加工或哪個外部實體;數(shù)據(jù)流組成(定義):描述該數(shù)據(jù)流的數(shù)據(jù)結(jié)構(gòu);注釋:相關(guān)事項。例如,“教材管理系統(tǒng)”中對數(shù)據(jù)流“訂書單”可用以下詞條進行定義和描述。2.數(shù)據(jù)存儲詞條數(shù)據(jù)存儲文件是保存數(shù)據(jù)的地方,一個數(shù)據(jù)存儲詞條應(yīng)有以下幾項內(nèi)容。數(shù)據(jù)存儲名稱:要求與數(shù)據(jù)流圖中出現(xiàn)的名稱一致;編號:該數(shù)據(jù)存儲在數(shù)據(jù)流圖中的編號;描述:簡要介紹該數(shù)據(jù)存儲存放的是什么數(shù)據(jù);數(shù)據(jù)存儲組成(定義):描述該數(shù)據(jù)存儲的數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)存儲方式:索引文件。例如,“教材管理系統(tǒng)”中對數(shù)據(jù)存儲文件“庫存信息”可用以下詞條進行定義和描述。3.數(shù)據(jù)元素詞條數(shù)據(jù)流圖中每一個數(shù)據(jù)結(jié)構(gòu)都是由數(shù)據(jù)元素構(gòu)成的,數(shù)據(jù)元素是數(shù)據(jù)處理中最小的、不可再分的單位,它直接反映事物的某一特征。組成數(shù)據(jù)結(jié)構(gòu)的這些數(shù)據(jù)元素也必須在數(shù)據(jù)字典中給出描述,一個數(shù)據(jù)元素詞條應(yīng)有以下幾項內(nèi)容。數(shù)據(jù)元素名稱;描述:簡要介紹該數(shù)據(jù)元素的含義;數(shù)據(jù)元素類型:字符型、數(shù)值型、布爾型等;數(shù)據(jù)元素長度(或精度):數(shù)據(jù)元素的大??;數(shù)據(jù)元素取值范圍:例如取值范圍定義為1至60,表示為1..60;數(shù)據(jù)元素缺省值:例如定義數(shù)據(jù)元素“領(lǐng)書日期”的初始值默認(rèn)為系統(tǒng)的當(dāng)前日期;數(shù)據(jù)元素組成(定義):描述該數(shù)據(jù)元素的相關(guān)數(shù)據(jù)元素及數(shù)據(jù)結(jié)構(gòu)。例如,“教材管理系統(tǒng)”中對數(shù)據(jù)元素“教材編號”可用以下詞條進行定義和描述。4.數(shù)據(jù)加工詞條加工可以使用諸如判斷表、判定樹和結(jié)構(gòu)化語言等形式表達,一個數(shù)據(jù)加工詞條應(yīng)有以下幾項內(nèi)容。加工名稱:要求與數(shù)據(jù)流圖中出現(xiàn)的名稱一致;加工編號:要求與數(shù)據(jù)流圖中出現(xiàn)的編號一致;描述:簡要介紹該加工的處理功能;輸入:指明該加工的輸入數(shù)據(jù)流;輸出:指明該加工的輸出數(shù)據(jù)流;加工邏輯:簡述該數(shù)據(jù)加工的處理邏輯(此項描述也可以單獨形成一份“數(shù)據(jù)加工邏輯說明”。例如,“教材管理系統(tǒng)”中對數(shù)據(jù)加工“處理合格領(lǐng)書單”可用以下詞條進行定義和描述。

4.6數(shù)據(jù)加工邏輯說明4.6.1結(jié)構(gòu)化語言【例4-3】某系統(tǒng)教師津貼費處理。某校對不同職稱的教師,根據(jù)其是本校專職教師還是外聘兼職教師,決定其課時津貼費用。本校專職教師每課時津貼費:教授100元,副教授80元,講師60元,助教50元。外聘兼職教師每課時津貼費:教授120元,副教授100元,講師80元,助教60元。4.6.2判定表4.6.3判定樹4.7應(yīng)用案例——高校財務(wù)問答系統(tǒng)結(jié)構(gòu)化分析4.7.1功能需求4.7.2高校財務(wù)問答系統(tǒng)數(shù)據(jù)流圖4.7.3高校財務(wù)問答系統(tǒng)數(shù)據(jù)字典1.數(shù)據(jù)流(1)數(shù)據(jù)流名稱:教職工信息描述:用戶端用戶信息定義:教職工信息=工號+用戶名+密碼(2)數(shù)據(jù)流名稱:問題信息描述:用于傳遞問題及答案信息定義:問題信息=問題類型+問題內(nèi)容+答案內(nèi)容+文件名+文件路徑+視頻路徑(3)數(shù)據(jù)流名稱:類別信息描述:用于傳遞問題類別信息定義:類別信息=類型名稱(4)數(shù)據(jù)流名稱:反饋信息描述:用于傳遞教職工在用戶端提交的反饋信息定義:反饋信息=姓名+單位+電話+問題+時間(5)數(shù)據(jù)流名稱:統(tǒng)計信息描述:用于統(tǒng)計教職工在用戶端查詢某問題的次數(shù)定義:統(tǒng)計信息=問題內(nèi)容+查詢次數(shù)2.?dāng)?shù)據(jù)存儲(1)數(shù)據(jù)存儲名稱:教職工信息編號:D01描述:用于存儲教職工數(shù)據(jù)定義:教職工信息=ID+工號+用戶名+密碼存儲方式:數(shù)據(jù)庫表,以“ID”為主鍵(2)數(shù)據(jù)存儲名稱:問題信息編號:D02描述:用于存儲問題及答案數(shù)據(jù)定義:問題信息=ID+問題類型+問題內(nèi)容+答案內(nèi)容+文件名+文件路徑+視頻路徑+查詢次數(shù)存儲方式:數(shù)據(jù)庫表,以“ID”為主鍵(3)數(shù)據(jù)存儲名稱:類別信息編號:D03描述:用于存儲問題類別數(shù)據(jù)定義:類別信息=ID+類別名稱存儲方式:數(shù)據(jù)庫表,以“ID”為主鍵(4)數(shù)據(jù)存儲名稱:反饋信息編號:D04描述:用于存儲教職工反饋的問題數(shù)據(jù)定義:反饋信息=ID+姓名+單位+電話+問題+時間+工號存儲方式:數(shù)據(jù)庫表,以“ID”為主鍵3.?dāng)?shù)據(jù)項(1)數(shù)據(jù)項名稱:工號描述:用于唯一標(biāo)識教職工類型:整型長度:10定義:工號=10{數(shù)字字符}10(2)數(shù)據(jù)項名稱:時間描述:用于表示提交反饋信息的當(dāng)前系統(tǒng)時間類型:日期時間型定義:時間=年+月+日+時4.7.4高校財務(wù)問答系統(tǒng)E-R圖本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)了解結(jié)構(gòu)化的設(shè)計原則;(2)掌握數(shù)據(jù)設(shè)計、軟件結(jié)構(gòu)設(shè)計、接口設(shè)計、過程設(shè)計的方法和過程;(3)能夠利用軟件設(shè)計工具編寫設(shè)計文檔。第5章結(jié)構(gòu)化設(shè)計5.1結(jié)構(gòu)化設(shè)計任務(wù)(1)數(shù)據(jù)設(shè)計:數(shù)據(jù)設(shè)計是根據(jù)需求階段所建立的實體-關(guān)系圖確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)庫表r結(jié)構(gòu)。(2)軟件結(jié)構(gòu)設(shè)計:軟件結(jié)構(gòu)設(shè)計定義軟件模塊及其之間的關(guān)系,因此通常稱為模塊設(shè)計。軟件結(jié)構(gòu)設(shè)計表示可以從數(shù)據(jù)流圖導(dǎo)出。(3)接口設(shè)計:接口設(shè)計包括外部接口設(shè)計和內(nèi)部接口設(shè)計。外部接口設(shè)計依據(jù)分析模型的頂層數(shù)據(jù)流圖,外部接口包括用戶界面、本系統(tǒng)與其他硬件系統(tǒng)、軟件系統(tǒng)的外部接口;內(nèi)部接口是指系統(tǒng)內(nèi)部各種元素之間的接口。(4)過程設(shè)計:過程設(shè)計是確定軟件各個組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選取某種表達形式來描述各種算法。從工程管理的角度來看,軟件設(shè)計分為兩個階段。第一階段是概要設(shè)計,將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件結(jié)構(gòu),并建立接口;第二階段是詳細設(shè)計,即過程設(shè)計,是對概要設(shè)計的一個細化,詳細設(shè)計每個模塊實現(xiàn)的算法等。結(jié)構(gòu)化設(shè)計包含如下7個具體步驟。(1)從需求分析階段的數(shù)據(jù)流圖出發(fā),制定幾個方案,從中選擇合理的方案。(2)將一個復(fù)雜的系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)。(3)確定每個模塊的功能、模塊間的調(diào)用關(guān)系,建立與已確定的軟件需求的對應(yīng)關(guān)系。(4)系統(tǒng)接口設(shè)計,確定模塊間的接口信息。(5)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計,確定實現(xiàn)軟件的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫模式。(6)依據(jù)分析模型中的處理(加工)規(guī)格說明、狀態(tài)轉(zhuǎn)換圖等進行過程設(shè)計。(7)確定測試計劃。(7)撰寫軟件設(shè)計文檔。5.2數(shù)據(jù)設(shè)計數(shù)據(jù)設(shè)計就是將需求分析階段定義的數(shù)據(jù)對象(實體-關(guān)系圖、數(shù)據(jù)字典)轉(zhuǎn)換為設(shè)計階段的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫,包括兩個方面。第一個方面是數(shù)據(jù)結(jié)構(gòu)設(shè)計,采用偽代碼的方式定義數(shù)據(jù)結(jié)構(gòu)。第二個方面是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計,包括概念結(jié)構(gòu)設(shè)計、邏輯結(jié)構(gòu)設(shè)計和物理結(jié)構(gòu)設(shè)計。

【例5-1】高校教材管理系統(tǒng)的E-R圖如圖5-4所示。根據(jù)以上規(guī)則,某高校教材管理系統(tǒng)E-R模型可以映射為如下數(shù)據(jù)庫的邏輯結(jié)構(gòu)。教師表(工號、密碼、姓名)管理員表(編號、密碼、用戶名)教材表(教材編號、教材名稱、出版社編號、出版社名稱、庫存量、選用課程編號)課程表(課程編號、課程名稱、選用教材編號、開設(shè)專業(yè)編號)專業(yè)表(專業(yè)編號、專業(yè)名稱)領(lǐng)用表(教師工號、教材編號、時間、領(lǐng)書數(shù)量)訂購表(管理員編號、教材編號、訂書數(shù)量)5.3軟件結(jié)構(gòu)設(shè)計5.3.1軟件結(jié)構(gòu)設(shè)計基本原理1.模塊模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,是?gòu)成程序的基本構(gòu)件。模塊具有以下幾種基本屬性,其中接口、功能和狀態(tài)反映模塊的外部特性,邏輯反映模塊的內(nèi)部特性。(1)接口:模塊的輸入與輸出。(2)功能:模塊需要完成的任務(wù)。(3)狀態(tài):模塊的運行環(huán)境,即模塊的調(diào)用與被調(diào)用關(guān)系。(4)邏輯:描述內(nèi)部功能實現(xiàn)及所需的數(shù)據(jù)。2.模塊化模塊化是軟件設(shè)計中的一個重要屬性,將軟件設(shè)計模塊化有助于一個軟件被研發(fā)人員理解、設(shè)計、測試和維護。以下論據(jù)可以說明這一點。設(shè)問題M的復(fù)雜性為C(M),解決它所需要的工作量為E(M)。因此,對于問題M1和M2,如果C(M1)>C(M2)即問題M1和M2復(fù)雜,那么E(M1)>E(M2)即問題越復(fù)雜,所需要的工作量越大。根據(jù)解決一般總是的經(jīng)驗可知,C(M1+M2)>C(M1)+C(M2)即一個問題同另一個問題組合而成的復(fù)雜性要大于分別考慮每個問題的復(fù)雜性之和。這樣可以推出E(M1+M2)>C(M1)+C(M2)通過以上得到的結(jié)論可知:如果把軟件模塊進行劃分,那么開發(fā)軟件所需要的工作量將降低很多。3.模塊耦合性4.模塊內(nèi)聚性5.軟件結(jié)構(gòu)特征(1)深度:指模塊的層數(shù),圖5-8示例中深度為5。(2)寬度:指一層中最大的模塊個數(shù),圖5-8示例中寬度為7。(3)扇出:指一個模塊直接下屬模塊的個數(shù),圖5-8示例中模塊M的扇出為3。(4)扇入:指一個模塊直接上屬模塊的個數(shù),圖5-8示例中模塊T的扇入為4。5.3.2軟件結(jié)構(gòu)設(shè)計原則1.提高模塊獨立性2.選擇合適的模塊規(guī)模3.適當(dāng)選擇模塊的深度、寬度、扇入和扇出4.降低模塊接口的復(fù)雜程度5.3.3HIPO圖HIPO圖(HierarchyInputProcessOutput)是層次化的輸入—處理—輸出圖。HIPO圖實際上是層次圖和IPO圖的結(jié)合。

1.IPO圖2.層次圖3.HIPO圖5.3.4結(jié)構(gòu)圖

1.數(shù)據(jù)流圖分類(1)變換型數(shù)據(jù)流圖根據(jù)信息系統(tǒng)的模型,信息一般是以外部形式進入系統(tǒng),通過系統(tǒng)處理后離開系統(tǒng)。從其過程可以得出,變換型的數(shù)據(jù)流圖是一個線性結(jié)構(gòu)。變換型的數(shù)據(jù)流是由邏輯輸入、變換中心(或稱處理)和邏輯輸出三部分組成。

(2)事務(wù)型數(shù)據(jù)流圖2.結(jié)構(gòu)圖實施過程結(jié)構(gòu)圖實施過程,如圖5-15所示,設(shè)計包括如下4個步驟。(1)對數(shù)據(jù)流圖進行復(fù)審,必要時修改或細化;(2)根據(jù)數(shù)據(jù)流圖確定軟件結(jié)構(gòu)是變換型還是事務(wù)型;(3)將數(shù)據(jù)流圖映射成結(jié)構(gòu)圖;(4)優(yōu)化并調(diào)整結(jié)構(gòu)圖,使設(shè)計更完善。3.變換型設(shè)計按照下列步驟設(shè)計:(1)確定數(shù)據(jù)流圖中的變換中心、邏輯輸入和邏輯輸出;(2)設(shè)計結(jié)構(gòu)圖的頂層和第一層;(3)設(shè)計輸入模塊、輸出模塊和變換模塊的下屬模塊;(4)根據(jù)設(shè)計準(zhǔn)則對初始結(jié)構(gòu)進行求精和改進。4.事務(wù)型設(shè)計按照下列3個步驟設(shè)計。(1)確定數(shù)據(jù)流圖中的事務(wù)中心和加工路徑;(2)設(shè)計結(jié)構(gòu)圖的頂層和第一層;(3)進行事務(wù)結(jié)構(gòu)中、下層模塊的設(shè)計和優(yōu)化等工作。5.4接口設(shè)計概要設(shè)計中的接口設(shè)計主要包括以下3個方面。(1)用戶界面接口。用戶界面接口設(shè)計即人機接口的設(shè)計,突出用戶如何操作系統(tǒng)以及系統(tǒng)如何向用戶返回信息。(2)外部接口。用于說明系統(tǒng)同外界的所有接口的安排,包括軟件與硬件之間的接口、系統(tǒng)與各支持軟件之間的接口。(3)內(nèi)部接口。用來說明系統(tǒng)之內(nèi)的各個系統(tǒng)元素之間的接口。5.4.1用戶界面接口設(shè)計1.用戶界面設(shè)計原則

(1)界面形式應(yīng)力求簡單、友好。(2)界面設(shè)計應(yīng)提供一定的容錯或糾錯機制。用戶在與系統(tǒng)交互的過程中難免會進行錯誤操作,因此,應(yīng)該提供友好提示并可以以使用戶撤銷錯誤操作。(3)界面設(shè)計應(yīng)符合用戶的實際需求和使用習(xí)慣。2.用戶界面設(shè)計過程5.4.2外部接口設(shè)計和內(nèi)部接口設(shè)計外部接口設(shè)計也稱為部署設(shè)計,描述軟件功能和子系統(tǒng)如何在支持軟件的物理計算環(huán)境(如系統(tǒng)的硬件環(huán)境、軟件環(huán)境和網(wǎng)絡(luò)環(huán)境)內(nèi)分布,以及系統(tǒng)如何部署。內(nèi)部接口設(shè)計與模塊設(shè)計是緊密聯(lián)系的,需要設(shè)計各個模塊之間的通信、協(xié)作。5.5過程設(shè)計5.5.1流程圖1.流程圖表示流程圖表示了程序的操作順序,包括指明實際處理操作的處理符號、根據(jù)邏輯條件確定要執(zhí)行的路徑的符號、指明控制流的流線符號、便于讀寫程序流程圖的特殊符號。2.流程圖基本結(jié)構(gòu)【例5-2】輸入數(shù)組A,計算其最大值MAX并輸出。計算最大值流程圖,如圖5-27所示。5.5.2盒圖【例5-3】輸入數(shù)組A,計算其最大值MAX并輸出。計算最大值N-S圖,如圖5-29所示。5.5.3問題分析圖【例5-4】輸入數(shù)組A,計算其最大值MAX并輸出,計算最大值PAD圖,如圖5-31所示。5.6應(yīng)用案例——高校財務(wù)問答系統(tǒng)結(jié)構(gòu)化設(shè)計5.6.1概要設(shè)計1.功能模塊設(shè)計2.軟件結(jié)構(gòu)設(shè)計5.6.2詳細設(shè)計(1)用戶登錄(2)用戶問答本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)理解面向?qū)ο蠓椒ǖ囊睾蛢?yōu)點;(2)掌握面向?qū)ο蠼5幕靖拍睢⑿g(shù)語及其圖形符號。第6章面向?qū)ο蠓椒▽W(xué)與UML6.1面向?qū)ο蠓椒ǜ攀?.面向?qū)ο蠓椒ǖ囊孛嫦驅(qū)ο缶褪鞘褂脤ο蟆㈩惡屠^承機制,并且對象之間僅能通過傳遞消息實現(xiàn)彼此通信。面向?qū)ο蠓椒ㄓ幸韵滤膫€要素。(1)對象對象是系統(tǒng)中描述客觀事物的一個實體,它是構(gòu)成系統(tǒng)的一個基本單位,由一組屬性和對這組屬性進行操作的一組服務(wù)組成。面向?qū)ο蠓椒ㄕJ(rèn)為客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜對象由簡單對象組成。(2)類類是具有相同屬性和服務(wù)的一組對象的集合。類是一個抽象的概念,可以把所有對象劃分成各種類,每個類都定義了一組數(shù)據(jù)和一組方法。其中,數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息。方法是允許用于類上的操作。(3)繼承按照基類與派生類的關(guān)系,把若干個對象類組成一個層次結(jié)構(gòu)的系統(tǒng)。在層次結(jié)構(gòu)中,下層的派生類具有和上層的基類相同的特性,稱為繼承。(4)消息消息是對象發(fā)出的服務(wù)請求。對象彼此之間僅能通過傳遞消息相互聯(lián)系。對象的消息都被封裝在該對象的類中,必須發(fā)送消息請求它執(zhí)行某個操作,處理某個數(shù)據(jù)。2.面向?qū)ο蠓椒ǖ膬?yōu)點(1)符合人類的思維習(xí)慣。

(2)穩(wěn)定性好。

(3)可復(fù)用性好。

(4)可維護性好。

6.2UML概述6.2.1UML的特點(1)統(tǒng)一標(biāo)準(zhǔn)。UML統(tǒng)一了面向?qū)ο蠼5幕靖拍?、語法以及圖形符號,建立了便于軟件開發(fā)交流的通用語言,已成為面向?qū)ο筌浖5臉?biāo)準(zhǔn)語言。(2)面向?qū)ο蟆ML是一種面向?qū)ο蟮臉?biāo)準(zhǔn)建模語言,模型元素的建立以對象為基礎(chǔ),與人類的思維模式相符,并且易學(xué)易用。(3)圖形建模。UML提供了多種模型圖,以圖形的方式實現(xiàn)系統(tǒng)建模,建模過程清晰、直觀,可用于復(fù)雜軟件系統(tǒng)的建模。(4)獨立于程序設(shè)計語言。UML是一種建模語言,整個建模過程與程序設(shè)計語言無關(guān)。UML的建模不依賴于任何程序設(shè)計語言。6.2.2UML的視圖1.用例視圖2.邏輯視圖3.并發(fā)視圖4.組件視圖5.配置視圖6.2.3UML的建模元素6.2.4UML模型1.用例模型2.靜態(tài)模型3.動態(tài)模型4.實現(xiàn)模型6.3用例建模機制6.4靜態(tài)建模機制6.4.1類圖類圖是與面向?qū)ο蠓椒P(guān)系最為密切的一種UML圖形,它的主體就是系統(tǒng)內(nèi)部處理的事物。類圖主要用于描述系統(tǒng)中所包含的類以及這些類相互之間的關(guān)系。當(dāng)描述類之間關(guān)系時,常省略屬性和方法,只保留類名。類圖示例,教師類與教材類之間是關(guān)聯(lián)關(guān)系;教材類依賴課程類。類圖設(shè)計將在7.3.2中詳細介紹。6.4.2對象圖對象是類的實例。因此,對象圖可以看作是類圖的實例,幫助開發(fā)人員理解比較復(fù)雜的類圖。類圖與對象圖之間的區(qū)別是對象圖中對象的名字下面要加下劃線。對象圖示例,如圖6-5所示,每個方框代表一個對象實例,每個對象實例采用“對象名:類名”的形式標(biāo)識,并在標(biāo)識的下面添加一條下劃線。如果要表示出該對象實例在該時間點上的狀態(tài),可以通過“屬性=值”的形式給出該對象當(dāng)時的屬性值。在對象圖中,對象之間的有關(guān)系用一條直線來表示,關(guān)系的名稱直接在直線上面標(biāo)出。如果不需要區(qū)別同類型的對象,可以省略對象實例的名稱,此類對象稱為匿名對象。6.4.3包圖一個系統(tǒng)往往由很多類組成,為了對類進行管理可以對類進行分組。在UML中,對類進行分組的單位就是包。包類似于文件系統(tǒng)中文件夾的概念。包圖示例,包的圖示符號由兩個矩形組成,包的名字可以寫在小的矩形內(nèi),也可以寫在大的矩形內(nèi)。包與包之間可以建立依賴、泛化等關(guān)系。6.5動態(tài)建模機制6.5.1順序圖順序圖又被稱為序列圖,主要反映用戶、系統(tǒng)、對象之間的交互次序。順序圖的重點是顯示對象之間發(fā)送消息的時間順序。它也顯示對象之間的交互,也就是在系統(tǒng)執(zhí)行時某個指定時間點將發(fā)生的事情。順序圖示例,時間從上到下推移,順序圖顯示對象之間隨著時間的推移而交換的消息或函數(shù)。順序圖設(shè)計將在7.4.1中詳細介紹。6.5.2通信圖通信圖又稱為協(xié)作圖,用于顯示系統(tǒng)的動作協(xié)作,類似順序圖中的交互片段,但通信圖也顯示對象之間的關(guān)系。實際建模中,順序圖和通信圖的選擇需要根據(jù)項目實際需求而定。如果重在時間或順序,那么選擇順序圖;如果重在對象之間的關(guān)系,那么選擇通信圖。通信圖示例,如圖6-8所示,通信圖中可以出現(xiàn)角色,用于指明誰是過程的發(fā)起者。消息的名稱及其具體內(nèi)容一般在關(guān)系連線上直接標(biāo)出,并用箭頭注明消息的方向。為了體現(xiàn)出消息之間存在的先后關(guān)系,在消息名稱的前面加上序號。6.5.3狀態(tài)機圖狀態(tài)機圖用來描述對象對外部響應(yīng)的歷史狀態(tài)序列,即描述對象所有可能的狀態(tài),以及哪些事件將導(dǎo)致狀態(tài)的改變,包括對象在各個不同狀態(tài)間的跳轉(zhuǎn),以及這些跳轉(zhuǎn)的外部觸發(fā)事件,即從狀態(tài)到狀態(tài)的控制流。狀態(tài)機圖示例。不是所有的類都需要畫狀態(tài)機圖,有明確意義的狀態(tài)、在不同狀態(tài)下行為有所不同的類才需要畫狀態(tài)機圖。6.5.4活動圖活動圖是狀態(tài)機圖的一種特殊情況。不需指明任何事件,只要動作被執(zhí)行,活動圖中的狀態(tài)就自動開始轉(zhuǎn)換。如果狀態(tài)轉(zhuǎn)換的觸發(fā)事件是內(nèi)部動作時,可用活動圖描述;當(dāng)狀態(tài)轉(zhuǎn)換的觸發(fā)事件是外部事件時,常用狀態(tài)機圖來表示?;顒訄D示例,在活動圖中,用例和對象的行為中的各個活動之間通常具有時間順序。每個活動用一個圓角矩形表示,判斷點使用菱形框表示?;顒訄D設(shè)計將在7.4.2中詳細介紹。6.6實現(xiàn)建模機制6.6.1組件圖組件圖根據(jù)系統(tǒng)的組件顯示系統(tǒng)代碼的物理結(jié)構(gòu)。組件可以是源代碼組件、二進制組件或一個可執(zhí)行的組件。組件圖示例。根據(jù)組件圖中顯示的組件之間的依賴關(guān)系,可以很容易地分析出其中某個組件的變化將會對其他組件產(chǎn)生什么樣的影響。一般來說,組件圖用于實際的編碼工作中。6.6.2部署圖部署圖用于表示系統(tǒng)中的硬件和軟件的物理結(jié)構(gòu)。部署圖中的表示符號與組件圖基本一致,不同的是,部署圖將組件放到了表示機器節(jié)點的立方體內(nèi),可以直觀地表示組件的具體部署方式。部署圖示例。本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)了解面向?qū)ο蠓治雠c設(shè)計的基本概念;(2)掌握面向?qū)ο蟮挠美?、靜態(tài)建模和動態(tài)建模過程;(3)理解面向?qū)ο蟮南到y(tǒng)設(shè)計和對象設(shè)計;(4)能夠?qū)π⌒蛙浖到y(tǒng)進行用例圖、類圖和順序圖設(shè)計。第7章面向?qū)ο蠓治雠c設(shè)計7.1面向?qū)ο蠓治雒嫦驅(qū)ο蠓治鍪侵咐妹嫦驅(qū)ο蟮母拍詈头椒檐浖枨蠼ㄔ炷P?,使用需求逐步精確化、一致化、完全化的分析過程。面向?qū)ο蠓治鲞^程。這個階段主要是建立用例模型、對象類靜態(tài)模型和對象類動態(tài)模型。7.2用例建模7.2.1用例建模過程1.確定系統(tǒng)的范圍和邊界2.確定系統(tǒng)的參與者3.確定系統(tǒng)的用例4.確定用例之間的關(guān)系5.建立用例圖并定義用例圖的層次結(jié)構(gòu)6.用例描述7.2.2用例圖設(shè)計用例圖(usecasediagram)是表示一個系統(tǒng)中用例與參與者之間關(guān)系的圖。它描述了系統(tǒng)中相關(guān)的用戶和系統(tǒng)對不同用戶提供的功能和服務(wù)。1.參與者參與者也稱為角色。參與者示例。在用例圖中,參與者有兩種表示方法。參與者的圖標(biāo)表示法是一個小人圖形,圖標(biāo)下方顯示參與者的名稱。參與者還可以使用帶有<<actor>>構(gòu)造型的類符號,也就是一個矩形來表示。一般情況下,習(xí)慣用圖標(biāo)表示法來代表人,用類符號表示法來表示事物。2.用例在用例圖中,用例用一個包含名稱的橢圓形來表示。用例示例。其中用例的名稱可以顯示在橢圓內(nèi)部或橢圓下方。3.關(guān)系(1)參與者間的泛化關(guān)系(2)參與者與用例的關(guān)聯(lián)關(guān)系(3)用例間的泛化關(guān)系(4)用例間的包含關(guān)系(5)用例間的擴展關(guān)系7.2.3用例建模實例1.情境說明機票預(yù)訂系統(tǒng)是某航空公司推出的一款網(wǎng)上訂票系統(tǒng)。未實名認(rèn)證的用戶只能查詢航班信息;已實名認(rèn)證的用戶登錄后還可以預(yù)訂機票、退訂機票和查看訂單。系統(tǒng)管理員可以管理用戶信息和航班信息。用戶在登錄時如果忘記密碼,可以通過郵箱找回密碼。2.確定參與者在了解系統(tǒng)使用場景后,首先分析需求確定系統(tǒng)中的參與者。根據(jù)分析系統(tǒng)的情境說明可以得出,系統(tǒng)主要有兩類參與者,分別是用戶與管理員。其中用戶包括普通用戶和注冊用戶,表示為參與者的泛化關(guān)系。因為用戶一定屬于二者其中之一,所以用戶應(yīng)該是一個抽象參與者。確定參與者。3.確定用例分析出系統(tǒng)的參與者之后,就可以通過分析每個參與者是如何使用系統(tǒng)確定系統(tǒng)中的用例。在機票預(yù)訂系統(tǒng)中,普通用戶可以進行實名認(rèn)證和查詢航班信息;注冊用戶可以登錄系統(tǒng)、查詢航班信息、預(yù)訂機票、退訂機票和查看訂單;管理員可以登錄系統(tǒng)、管理用戶信息和管理航班信息。確定用例。4.確定用例之間的關(guān)系在確定完所有用例之后,需要具體考慮每個用例的工作流程從而添加用例之間的依賴關(guān)系。在機票預(yù)訂系統(tǒng)中,用戶在預(yù)訂機票時需要先查詢相關(guān)的航班信息,因此預(yù)訂機票用例與查詢航班信息用例之間可以建立包含關(guān)系。如果用戶在登錄時忘記密碼,可以使用找回密碼功能,由于這一關(guān)系是有條件的,所以二者構(gòu)成擴展關(guān)系。為保證對用例的粒度控制在同一個量級上,可以將管理用戶信息與管理航班信息都

定義為抽象用例,并分別創(chuàng)建其非抽象的子用例。將以上關(guān)系添加到用例圖中,形成最終的用例圖。機票預(yù)訂系統(tǒng)用例圖。5.用例描述用例描述的內(nèi)容可以使用UML中定義的格式,也可以根據(jù)項目實際情況選擇其它格式。下面以機票預(yù)訂系統(tǒng)的“機票預(yù)訂”用例為例,給出一個用例描述的格式和內(nèi)容作為參考,在實際建模過程中可以靈活使用。7.3靜態(tài)建模7.3.1靜態(tài)建模過程1.確定類與對象(1)找出候選的類與對象(2)篩選出正確的類與對象2.確定屬性(1)分析(2)選擇3.確定關(guān)聯(lián)(1)初步確定關(guān)聯(lián)(2)篩選(3)完善關(guān)聯(lián)4.優(yōu)化模型7.3.2類圖設(shè)計類圖(classdiagram)是顯示一組類、接口以及它們之間關(guān)系的圖。一個類圖主要通過系統(tǒng)中的類以及各個類之間的關(guān)系來描述系統(tǒng)的靜態(tài)結(jié)構(gòu)。1.類2.接口接口是一個被命名的操作集合,用于描述類或組件的一個服務(wù)。接口不同于任何類或類型,它不描述任何結(jié)構(gòu),因此不包含任何屬性;也不描述任何實現(xiàn),因此不包含任何實現(xiàn)操作的方法。像類一樣,接口可以有一些操作。接口中沒有對自身內(nèi)部結(jié)構(gòu)的描述,因此,接口沒有私有特性,它的所有內(nèi)容都是公共的。接口代表了一份契約,實現(xiàn)接口的類必須縷履行這份契約。3.關(guān)系(1)關(guān)聯(lián)關(guān)系(2)泛化關(guān)系(3)依賴關(guān)系(4)實現(xiàn)關(guān)系7.3.3靜態(tài)建模實例1.確定類2.添加類的屬性與操作3.確定類圖中的關(guān)系7.4動態(tài)建模7.4.1順序圖設(shè)計1.對象與生命線2.激活3.消息7.4.2活動圖設(shè)計1.動作2.開始與終止3.控制流4.判斷節(jié)點5.合并節(jié)點6.分叉節(jié)點與結(jié)合節(jié)點7.泳道7.4.3動態(tài)建模實例(1)確定交互對象創(chuàng)建順序圖的第一步就是要明確參與對象?!暗卿洝庇美挠脩糇鳛閰⑴c者,是交互過程的發(fā)起者。如果機票預(yù)訂系統(tǒng)采用MVC模式進行設(shè)計,參與交互過程的對象還包括用戶界面、邏輯層和數(shù)據(jù)庫。確定交互對象。(2)添加消息在確定了參與交互的對象之后,就要在對象之間添加消息的傳遞。用戶首先在界面填寫表單并確認(rèn),用戶界面將用戶填寫的表單數(shù)據(jù)發(fā)送給邏輯層,邏輯層向數(shù)據(jù)庫發(fā)送請求來檢查用戶數(shù)據(jù)的合法性,接收到合法的返回消息后,邏輯層再向界面發(fā)送消息顯示出登錄結(jié)果。按照分析的交互過程,向順序圖中添加消息,創(chuàng)建出完整的順序圖。登錄用例順序圖。2.以某機票預(yù)訂系統(tǒng)的預(yù)訂機票用例為例,展示活動圖的設(shè)計過程。(1)確定泳道首先確定參與的對象,即確定活動圖中的泳道,通過分析,預(yù)訂機票用例共有選擇航班、確認(rèn)信息、提示無票、提交、更新機票信息、產(chǎn)生機票訂單等動作。泳道說明了活動的執(zhí)行者,因此,以上動作可以分為用戶和系統(tǒng)兩個泳道。繪制泳道。(2)按邏輯順序完成活動圖在確定泳道后,梳理預(yù)訂機票的業(yè)務(wù)流程。用戶首先選擇航班,如果所選航班已無票,則系統(tǒng)返回提示信息,用戶可以重新選擇航班;如果所選航班有票,則系統(tǒng)請求用戶確認(rèn)訂票信息,此時用戶可以取消訂票,也可以確認(rèn)訂票信息后進行提交,用戶提交后系統(tǒng)將更新機票信息并同時生成機票訂單,然后結(jié)束預(yù)訂機票流程。7.5面向?qū)ο笤O(shè)計7.5.1系統(tǒng)設(shè)計1.問題域子系統(tǒng)設(shè)計(1)調(diào)整需求。如果需求發(fā)生了變化或是分析人員在理解軟件需求上還不完整,需要簡單修改面向?qū)ο蠓治龅慕Y(jié)果,再把這些修改反映到問題域子系統(tǒng)中。(2)重用已有類。軟件設(shè)計時,要考慮如何將已有的類增加到問題域部分中。因此,需要在已有類中找到能被問題域重用的類,然后由重用的類派生出問題域的類,再添加定義問題域的類,最后修改與問題域類相關(guān)的關(guān)聯(lián)。(3)組合問題域類。先分析查找一個能把問題域類組合在一起的類,作為根類,把所有與問題域有關(guān)的類關(guān)聯(lián)到一起,建立類的層次結(jié)構(gòu)。把同一問題域的一些類集合起來存放到類庫中,起到概括每一個類及對象的作用。(4)調(diào)整繼承關(guān)系。面向?qū)ο蠓治瞿P椭邪ǘ嘀乩^承,而設(shè)計語言一般不支持多重繼承,必須對面向?qū)ο蠓治龅慕Y(jié)果做修改,把多重繼承轉(zhuǎn)換為單繼承。2.人機交互子系統(tǒng)設(shè)計人機交互部分是面向?qū)ο笤O(shè)計模型的外圍組成部分之一。在面向?qū)ο蠓治鲞^程中,已經(jīng)對用戶界面需求做了初步分析。在面向?qū)ο笤O(shè)計過程中,則應(yīng)該對系統(tǒng)的人機交互子系統(tǒng)進行詳細設(shè)計,以確定人機交互的細節(jié)。人機交互設(shè)計的質(zhì)量,將直接影響用戶對軟件產(chǎn)品的評價。3.任務(wù)管理子系統(tǒng)設(shè)計任務(wù)是進程的別稱,是執(zhí)行一系列活動的一段程序。當(dāng)系統(tǒng)中有許多并發(fā)行為時,需要依照各個行為的協(xié)調(diào)和通信關(guān)系劃分各種任務(wù),以簡化并發(fā)行為的設(shè)計和編碼。任務(wù)管理的一項重要內(nèi)容是確定哪些是必須同時進行的任務(wù),哪些是相互排斥的任務(wù)。設(shè)計人員根據(jù)以上任務(wù),最后設(shè)計出任務(wù)管理子系統(tǒng)。4.數(shù)據(jù)管理子系統(tǒng)設(shè)計數(shù)據(jù)管理子系統(tǒng)為面向?qū)ο笤O(shè)計模型提供了在特定的數(shù)據(jù)庫管理系統(tǒng)之上,存儲或檢索對象的基本結(jié)構(gòu)。設(shè)計數(shù)據(jù)管理子系統(tǒng)的目的是將目標(biāo)軟件系統(tǒng)中依賴平臺開發(fā)的數(shù)據(jù)存取部分與其他功能分離。7.5.2對象設(shè)計1.對象描述對象是類的一個實例,對象的設(shè)計描述可以采用以下兩種形式之一。(1)協(xié)議描述通過定義對象可以接收到的每個消息和當(dāng)對象接收到消息后完成的相關(guān)操作來建立對象的接口。協(xié)議描述是一組消息和對消息的注釋。(2)實現(xiàn)描述描述由傳送給對象的消息所蘊含的每個操作的實現(xiàn)細節(jié),包括對象名字的定義和類的引用、關(guān)于描述對象的屬性的數(shù)據(jù)結(jié)構(gòu)的定義及操作過程的細節(jié)。2.設(shè)計類中的服務(wù)(1)確定類中應(yīng)有的服務(wù)需要綜合考慮設(shè)計模型才能確定類中應(yīng)有的服務(wù)。(2)設(shè)計實現(xiàn)服務(wù)的方法設(shè)計實現(xiàn)服務(wù)首先應(yīng)設(shè)計實現(xiàn)服務(wù)的算法,考慮算法的復(fù)雜度,如何使算法容易理解、容易實現(xiàn)并容易修改。其次是選擇數(shù)據(jù)結(jié)構(gòu),要選擇能方便、有效地實現(xiàn)算法的數(shù)據(jù)結(jié)構(gòu)。最后定義類的內(nèi)部操作,可能需要添加一些用來存放中間結(jié)果的類。3.設(shè)計類的關(guān)聯(lián)在應(yīng)用系統(tǒng)中,使用關(guān)聯(lián)有兩種可能的方式,即只需單向遍歷的單向關(guān)聯(lián)和需要雙向遍歷的雙向關(guān)聯(lián)。4.鏈屬性的實現(xiàn)鏈屬性的實現(xiàn)要根據(jù)具體情況分別處理。如果是一對一關(guān)聯(lián),鏈屬性可作為其中一個對象的屬性而存儲在該對象中。而一對多關(guān)系,鏈屬性可作為“多”端對象的一個屬性。至于多對多關(guān)系,使用一個獨立的類來實現(xiàn)鏈屬性。5.設(shè)計的優(yōu)化設(shè)計的優(yōu)化需要確定優(yōu)先級,設(shè)計人員必須確定各項質(zhì)量指標(biāo)的相對重要性才能確定優(yōu)先級,以便在優(yōu)化設(shè)計時制訂折中方案。7.6應(yīng)用案例——高校財務(wù)問答系統(tǒng)面向?qū)ο蠓治雠c設(shè)計1.用例模型設(shè)計2.靜態(tài)模型設(shè)計3.動態(tài)模型設(shè)計(2)狀態(tài)模型4.系統(tǒng)設(shè)計本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)理解軟件實現(xiàn)的概念、目標(biāo)、過程和方法;(2)了解編程語言的發(fā)展歷程和主流編程語言;(3)理解編程語言的基本機制;(4)能夠根據(jù)待開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域選擇適合的編程語言。第8章軟件實現(xiàn)8.1軟件實現(xiàn)概述1.軟件實現(xiàn)的概念2.軟件實現(xiàn)的目標(biāo)3.軟件實現(xiàn)的過程4.軟件實現(xiàn)的方法8.2編程語言8.2.1編程語言的發(fā)展8.2.2編程語言的基本機制1.對象說明2.數(shù)據(jù)類型的定義3.子程序和方法4.控制結(jié)構(gòu)8.2.3編程語言簡介8.3軟件編程標(biāo)準(zhǔn)與規(guī)范1.軟件編程標(biāo)準(zhǔn)軟件工程的目標(biāo)是在規(guī)定的時間和費用內(nèi),開發(fā)出滿足用戶需求的、高質(zhì)量的軟件產(chǎn)品。關(guān)于開發(fā)高質(zhì)量軟件產(chǎn)品的編程標(biāo)準(zhǔn),不同人看法不盡相同。以下是目前公認(rèn)的高質(zhì)量軟件產(chǎn)品應(yīng)達到的標(biāo)準(zhǔn)。

(1)功能齊全,能夠達到用戶的使用要求;(2)界面友好且易于操作;(3)結(jié)構(gòu)簡單,容易理解和使用;(4)高可靠性和高安全性;(5)可重用性強,有利于軟件升級;(6)兼容性好;(7)易于維護。2.軟件編程規(guī)范軟件編程規(guī)范有助于編寫正確、高效、易讀的程序,符合軟件設(shè)計結(jié)果。軟件編程規(guī)范主要體現(xiàn)在以下幾方面。(1)源程序文檔化。在編寫程序過程中,注意標(biāo)識符命名、代碼排版和添加注釋等,編寫出易閱讀、易理解的文檔化程序。(2)數(shù)據(jù)說明。為了有利于對數(shù)據(jù)的理解和維護,數(shù)據(jù)說明時可以將同一類型的數(shù)據(jù)編寫在同一段落中;當(dāng)一條語句要聲明多個變量時,將變量名按順序排列。(3)輸入和輸出設(shè)計。輸入操作步驟和輸入格式應(yīng)盡量簡單,提示信息要明確;對輸入數(shù)據(jù)的合法性、有效性應(yīng)進行檢查,報告必要的錯誤信息;交互式輸入時,提供明確的輸入提示信息;設(shè)計必要的輸出格式,使輸出信息清晰簡明。本章小節(jié)XXXXXX大學(xué)軟件工程SOFTWARE

ENGINEERING教師:XXXXX2024教學(xué)目標(biāo):(1)掌握軟件測試的基本概念和測試原則;(2)掌握等價類劃分法,熟悉黑盒測試的其他方法;(3)掌握邏輯覆蓋法,熟悉白盒測試的其他方法;(4)掌握軟件測試的一般步驟,以及每個階段性測試的目的;(5)能夠為小型軟件項目設(shè)計測試用例。第9章軟件測試9.1軟件測試概述1.軟件測試概念軟件測試具有廣義和狹義的理解形式。廣義的軟件測試是指在軟件生命周期內(nèi),所有的檢查、評審、驗證和確認(rèn)活動,如需求評審、功能驗證等;狹義的軟件測試則是指對軟件的檢查和評價,檢查軟件的功能、性能是否符合需求,評價軟件的可靠性和安全性。2.軟件測試中的術(shù)語(1)錯誤。開發(fā)人員在軟件開發(fā)的過程中,通常將某些信息以不正確的形式表示出來或誤解用戶需求,這些稱為錯誤。例如,需求分析人員對一個軟件功能需求的理解錯誤。(2)缺陷。缺陷可以導(dǎo)致軟件不能正常運行。當(dāng)開發(fā)人員在開發(fā)過程中出現(xiàn)錯誤以后,就會在軟件中引入一個或多個缺陷。例如,合法用戶登錄后不能跳轉(zhuǎn)到主頁面。(3)故障。故障是指軟件沒有按照需求規(guī)格說明運行,從而引起軟件行為與用戶需求不一致的現(xiàn)象。故障可能發(fā)生在測試階段,也可能發(fā)生在軟件交付之后的運行階段。(4)測試用例。測試用例是在軟件測試的過程中,為了檢查程序功能和性能是否符合設(shè)計要求,由測試人員設(shè)計的一組測試序列和數(shù)據(jù)的集合。測試用例通常包括測試的操作序列、輸入數(shù)據(jù)和預(yù)期輸出三個部分。3.軟件測試對象軟件測試并不等于程序測試,軟件測試應(yīng)貫穿于軟件定義與開發(fā)的整個期間。因此,需求分析、設(shè)計、實現(xiàn)等各階段所得到的文檔都應(yīng)成為軟件測試的對象。4.軟件測試原則軟件測試的主要任務(wù)是根據(jù)軟件開發(fā)各階段的文檔資料和程序的內(nèi)部結(jié)構(gòu),設(shè)計測試用例,以發(fā)現(xiàn)軟件系統(tǒng)中不同類型的錯誤。在進行軟件測試的過程中,需要掌握以下5個方面的原則。(1)完全測試是不可能的。基于時間、人員、資金等方面的限制,不可能對軟件產(chǎn)品進行完全的測試,即不可能考慮或測試到軟件產(chǎn)品的所有執(zhí)行情況或路徑。(2)軟件產(chǎn)品中所存在的缺陷與已發(fā)現(xiàn)的缺陷數(shù)成正比。軟件測試所發(fā)現(xiàn)的缺陷越多,說明軟件產(chǎn)品中存在的缺陷越多。一般情況下,潛在的缺陷數(shù)與發(fā)現(xiàn)的缺陷數(shù)存在著正比關(guān)系。(3)80/20原則。在軟件測試工作中,存在著二八定律,即80%的缺陷會集中存在于20%的代碼中。為了提高測試的工作效率,應(yīng)該將測試的重點放在缺陷聚集出現(xiàn)的軟件模塊中。(4)測試工作應(yīng)該盡早開始,并且貫穿于整個開發(fā)過程中。測試工作開始的越早,在軟件開發(fā)過程中出現(xiàn)的軟件缺陷就能被及早發(fā)現(xiàn)和糾正。一般來說,越到軟件開發(fā)的后期,糾正同一軟件缺陷所付出的代價就會越大。(5)長期保留測試用例。測試不是一次完成的,在測試出缺陷并修復(fù)后,需要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論