全書配套課件:面向?qū)ο筌浖こ膛cUML_第1頁(yè)
全書配套課件:面向?qū)ο筌浖こ膛cUML_第2頁(yè)
全書配套課件:面向?qū)ο筌浖こ膛cUML_第3頁(yè)
全書配套課件:面向?qū)ο筌浖こ膛cUML_第4頁(yè)
全書配套課件:面向?qū)ο筌浖こ膛cUML_第5頁(yè)
已閱讀5頁(yè),還剩791頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2022/7/201面向?qū)ο筌浖こ膛cUML2022/7/202課程安排 本課程采用平時(shí)成績(jī)(包括出勤考核,平時(shí)作業(yè),課堂發(fā)言等)、實(shí)踐(實(shí)驗(yàn)和課程設(shè)計(jì))和理論考試相結(jié)合的考核方法??傇u(píng)成績(jī)中平時(shí)成績(jī)占15%,實(shí)踐成績(jī)占15%,期末考試占70%。課程設(shè)計(jì)要求學(xué)生按小組完成項(xiàng)目設(shè)計(jì),并以軟件驗(yàn)收書面報(bào)告的形式上交。2022/7/203 什么是軟件 軟件的特點(diǎn) 軟件的分類 軟件的發(fā)展和軟件危機(jī) 軟件工程 軟件生存期和軟件開發(fā)模型第1章 軟件工程概述2022/7/204第1章 軟件工程概述1.1 軟件的概念、特點(diǎn)和分類一、 軟件的概念 軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它是包括程序、數(shù)據(jù)及

2、其相關(guān)文檔的完整集合。其中,程序是按事先設(shè)計(jì)的功能和性能要求編寫的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文材料。注:程序并不是軟件,程序只是軟件的組成部分。2022/7/205第1章 軟件工程概述二、軟件的特點(diǎn)(1)軟件是一種邏輯實(shí)體。(2)軟件的開發(fā),是人的智力的高度發(fā)揮,而不是傳統(tǒng)意義上的硬件制造。(3)軟件維護(hù)與硬件的維修有著本質(zhì)的差別。(4)軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性。(5)軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式,使軟件的開發(fā)效率受到很大限制。(6)軟件的開發(fā)是一個(gè)復(fù)雜的過程。(7)軟件的

3、成本非常高昂。2022/7/206第1章 軟件工程概述三、軟件的分類 1.基于軟件功能的劃分 系統(tǒng)軟件 應(yīng)用軟件 支撐軟件 2.基于軟件工作方式的劃分 實(shí)時(shí)處理軟件 分時(shí)軟件 交互式軟件 批處理軟件 2022/7/207根據(jù)規(guī)模進(jìn)行軟件分類軟件規(guī)模類別參加人員數(shù)開發(fā)期限產(chǎn)品規(guī)模(源代碼行數(shù))微型114周0.5k小型116月12k中型2512年550k大型52023年50100k甚大型100100045年1M極大型20005000510年110M2022/7/208例:Windows95有1000萬(wàn)行代碼 Windows2000有5000萬(wàn)行代碼Exchange2000和 Windows2000

4、開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測(cè)試人員350人約3200人2022/7/209第1章 軟件工程概述1.2 軟件的發(fā)展和軟件危機(jī) 一、計(jì)算機(jī)系統(tǒng)的發(fā)展歷程 第一代(20世紀(jì)60年代中期以前):程序設(shè)計(jì)階段。第二代(從20世紀(jì)60年代中期到70年代中期):程序系統(tǒng)階段“軟件工程” 學(xué)科誕生。第三代(從20世紀(jì)70年代中期到80年代中期):軟件工程階段。 第四代(從20世紀(jì)80年代中期至今):軟件產(chǎn)業(yè)在世界經(jīng)濟(jì)中已經(jīng)占有舉足輕重的地位。2022/7/2010第1章 軟件工程概述 二、軟件危機(jī) 20世紀(jì)60年代末70年代初

5、,西方工業(yè)發(fā)達(dá)國(guó)家經(jīng)歷了一場(chǎng)“軟件危機(jī)”。這場(chǎng)軟件危機(jī)表現(xiàn)在:一方面軟件十分復(fù)雜,價(jià)格昂貴,供需差日益增大,另一方面軟件開發(fā)時(shí)又常常受挫,質(zhì)量差,指定的進(jìn)度表和完成日期很少能按時(shí)實(shí)現(xiàn),研制過程很難管理,即軟件的研制往往失去控制。我們稱軟件開發(fā)和維護(hù)過程中所中遇到的這一系列嚴(yán)重問題為軟件危機(jī)。軟件危機(jī)包含下述兩方面的問題:如何開發(fā)軟件,以滿足對(duì)軟件日益增長(zhǎng)的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。2022/7/2011第1章 軟件工程概述 1.3 軟件工程一、軟件工程的定義 軟件工程是指研究軟件生產(chǎn)的一門學(xué)科,也就是將完善的工程原理應(yīng)用于經(jīng)濟(jì)地生產(chǎn)既可靠又能在實(shí)際機(jī)器上有效運(yùn)行的軟件。1983年美

6、國(guó)IEEE軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)對(duì)軟件工程下的定義為:軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法,其中“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)事機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。2022/7/2012第1章 軟件工程概述二、軟件工程方法學(xué)通常把在軟件生命周期全過程中使用的一整套技術(shù)的集合,稱為軟件工程方法學(xué)。軟件工程方法學(xué)包括三個(gè)要素:方法、工具和過程。其中:軟件工程方法是完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,為軟件開發(fā)提供了“如何做”的技術(shù)。軟件工具為軟件工程方法提供了自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境。軟件工程的過程則是將軟件工程的方法和工具綜合起來以達(dá)到合理、及時(shí)地進(jìn)行計(jì)算機(jī)軟件開發(fā)的

7、目的。注:傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)是目前使用得最廣泛的兩種軟件工程方法學(xué)。 2022/7/2013第1章 軟件工程概述1.4 軟件生存期和軟件開發(fā)模型一、軟件生存期 如同任何其他事物一樣,軟件也有一個(gè)孕育、誕生、成長(zhǎng)、成熟、衰亡的生存過程,一般稱之為計(jì)算機(jī)軟件的生存期。一般說來,軟件生命期由軟件定義、軟件開發(fā)和軟件維護(hù)三個(gè)時(shí)期組成,每個(gè)時(shí)期又可進(jìn)一步劃分成若干個(gè)階段。2022/7/2014第1章 軟件工程概述1軟件定義時(shí)期 (1)問題定義:這是軟件生存期的第一個(gè)階段,主要任務(wù)是弄清用戶要計(jì)算機(jī)解決的問題是什么。(2)可行性研究:任務(wù)是為前一階段提出的問題尋求一種至數(shù)種在技術(shù)上可行、且在經(jīng)濟(jì)上

8、有較高效益的解決方案。2022/7/2015第1章 軟件工程概述2軟件開發(fā)時(shí)期 (1)需求分析:弄清用戶對(duì)軟件系統(tǒng)的全部需求,主要是確定目標(biāo)系統(tǒng)必須具備哪些功能。(2)總體設(shè)計(jì):設(shè)計(jì)軟件的結(jié)構(gòu),即確定程序由哪些模塊組成以及模塊間的關(guān)系。(3)詳細(xì)設(shè)計(jì):針對(duì)單個(gè)模塊的設(shè)計(jì)。(4)編碼:按照選定的語(yǔ)言,把模塊的過程性描述翻譯為源程序。(5)測(cè)試:通過各種類型的測(cè)試(及相應(yīng)的調(diào)試)使軟件達(dá)到預(yù)定的要求。2022/7/2016第1章 軟件工程概述3軟件運(yùn)行時(shí)期 是軟件生存周期的最后一個(gè)時(shí)期。軟件人員在這一時(shí)期的工作,主要是做好軟件維護(hù)。維護(hù)的目的,是使軟件在整個(gè)生存周期內(nèi)保證滿足用戶的需求和延長(zhǎng)軟件的

9、使用壽命。2022/7/2017第1章 軟件工程概述二、軟件開發(fā)模型 1.瀑布模型:將軟件生存周期的各項(xiàng)活動(dòng)規(guī)定為依照固定順序連接的若干階段工作,形如瀑布流水,最終得到軟件產(chǎn)品。2022/7/20182022/7/2019第1章 軟件工程概述2.螺旋模型:為了克服瀑布模型的不足,螺旋模型于1988年提出。該模型中加入了風(fēng)險(xiǎn)分析,通常用來指導(dǎo)大型軟件項(xiàng)目的開發(fā)。2022/7/2020螺旋模型螺旋模型沿著螺線旋轉(zhuǎn),在四個(gè)象限上分別表達(dá)四個(gè)方面的活動(dòng),即:制定計(jì)劃確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制風(fēng)險(xiǎn)分析分析所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn)實(shí)施工程實(shí)施軟件開發(fā)客戶評(píng)估評(píng)價(jià)開發(fā)工作,提出修

10、正建議2022/7/20212022/7/2022第1章 軟件工程概述3.噴泉模型:體現(xiàn)了軟件創(chuàng)建所固有的迭代和無(wú)間隙的特征。2022/7/2023噴泉模型迭代 重復(fù) 演進(jìn)無(wú)間隙 各階段間無(wú)明顯界限2022/7/20242022/7/2025第2章 需求分析 2.1 需求分析 2.2 需求分析的過程 2.3 數(shù)據(jù)流圖 2.4 數(shù)據(jù)字典 2.5 結(jié)構(gòu)化需求分析的若干技術(shù) 2.6 驗(yàn)證軟件需求 2.7 小結(jié) 為什么需要需求分析:開發(fā)人員往往急于求成希望對(duì)開發(fā)進(jìn)行指導(dǎo)希望開發(fā)人員理解用戶的要求希望用戶理解開發(fā)人員測(cè)試部門有理可依2.1 需 求 分 析需求分析的任務(wù) 需求分析的主要任務(wù)就是要通過軟件開

11、發(fā)人員與用戶的交流和討論,準(zhǔn)確地獲取用戶對(duì)系統(tǒng)的具體要求。準(zhǔn)確地定義未來系統(tǒng)的目標(biāo)確定為了滿足用戶的需求系統(tǒng)必須做什么用需求規(guī)格說明書 規(guī)范的形式準(zhǔn)確地表達(dá)用戶的需求。什么是用戶需求思考、涉及的幾個(gè)問題如何識(shí)別、獲取需求? 你能夠采取何種手段與用戶進(jìn)行交流溝通?何為需求建模? 你如何理解模型與建模? 用戶對(duì)系統(tǒng)的需求通常可分為如下兩類: (1) 功能性需求:主要說明了待開發(fā)系統(tǒng)在功能上實(shí)際應(yīng)做到什么,是用戶最主要的需求。通常包括系統(tǒng)的輸入、系統(tǒng)能完成的功能、系統(tǒng)的輸出及其他反應(yīng)。 (2) 非功能性需求:從各個(gè)角度對(duì)所考慮的可能的解決方案的約束和限制。主要包括: 過程需求(如交付需求、實(shí)現(xiàn)方法需

12、求等)、產(chǎn)品需求(如可靠性需求、可移植性需求、安全保密性需求等)和外部需求(如法規(guī)需求、費(fèi)用需求等)等。需求分析的步驟問題分析問題評(píng)估和方案綜合建模規(guī)約復(fù)審 系統(tǒng)分析員的主要焦點(diǎn)是 “做什么(what)” ,不是 “怎樣做(how)”需求獲取面臨的挑戰(zhàn) 客戶說不清楚需求 需求易變性問題的復(fù)雜性和對(duì)問題空間 理解的不完備性與不一致性需求獲取的常用方法建立分析小組 領(lǐng)域?qū)<遥?主角 系統(tǒng)分析員:導(dǎo)演客戶訪談問題分析與確認(rèn) 現(xiàn)場(chǎng)提問題的類別第一類:關(guān)注客戶、整體目標(biāo)和收益誰(shuí)是本工作的最初請(qǐng)求者?誰(shuí)將使用該解決方案?成功的解決方案的經(jīng)濟(jì)收益是什么?存在另外一個(gè)需要解決的問題嗎?第二類:便于分析員更好的

13、理解、并使得客戶更好的表達(dá)觀點(diǎn)對(duì)正在開發(fā)中的系統(tǒng)能夠帶來的好處有什么看法?該解決方案強(qiáng)調(diào)了什么問題?能向我演示或者描述本方案應(yīng)用的環(huán)境嗎?存在影響本方案的特殊性能問題或約束嗎?第三類:所謂的“元問題”你是回答這些問題的合適人員嗎?你的回答是“正式的”嗎?我的提問和你想解決的問題相關(guān)嗎?還有其他人員可以提供附加信息嗎?還有其他我應(yīng)該問你的問題嗎?常用的提問詞誰(shuí)什么哪里何時(shí)為什么如何(怎樣)某出版社系統(tǒng)調(diào)查表編號(hào)提出問題1您在哪個(gè)部門工作?2出版業(yè)務(wù)流程是什么?3您每日都處理那些文件、數(shù)據(jù)、報(bào)表?4工作中手工處理特別麻煩的事情是什么?5工作中手工處理什么問題解決不了?影響效率的問題有哪些?6您認(rèn)為

14、提高工作效率,節(jié)省工作時(shí)間,減輕工作強(qiáng)度可采取哪些辦法?某出版社系統(tǒng)調(diào)查表編號(hào)提出問題7您的部門需要成本核算和統(tǒng)計(jì)的內(nèi)容有哪些?8您的部門采用計(jì)算機(jī)管理工作情況如何?9如何改進(jìn)業(yè)務(wù)流程使之更合理?10哪些問題是目前傳統(tǒng)手工方法根本無(wú)法解決的?11出版社計(jì)算機(jī)管理信息系統(tǒng)需要解決什么問題?客戶的需求觀誰(shuí)是客戶?客戶是指直接或間接從產(chǎn)品中獲得利益的個(gè)人或組織 軟件客戶包括提出要求、支付款項(xiàng)、選擇、具體說明或使用軟件產(chǎn)品的項(xiàng)目風(fēng)險(xiǎn)承擔(dān)者( stakeholder )或是獲得產(chǎn)品所產(chǎn)生的結(jié)果的人??蛻襞c開發(fā)人員之間的合作關(guān)系高質(zhì)量的需求來源于客戶與開發(fā)人員之間有效的交流與合作 通常,開發(fā)人員與客戶或客

15、戶代理人成為一種對(duì)立關(guān)系只有當(dāng)雙方參與者都明白要成功自己需要什么,同時(shí)也應(yīng)知道要成功合作方需要什么時(shí),才能建立起一種合作關(guān)系。軟件客戶需求權(quán)利書(1)客戶有如下權(quán)利:1. 要求分析人員使用符合客戶語(yǔ)言習(xí)慣的表達(dá)。2. 要求分析人員了解客戶系統(tǒng)的業(yè)務(wù)及目標(biāo)。3. 要求分析人員組織需求獲取期間所介紹的信息,并編寫軟件需求規(guī)格說明。4. 要求開發(fā)人員對(duì)需求過程中所產(chǎn)生的工作結(jié)果進(jìn)行解釋說明。5. 要求開發(fā)人員在整個(gè)交流過程中保持和維護(hù)一種合作的職業(yè)態(tài)度。軟件客戶需求權(quán)利書(2)6. 要求開發(fā)人員對(duì)產(chǎn)品的實(shí)現(xiàn)及需求都要提供建議,拿出主意。7. 描述產(chǎn)品使其具有易用、好用的特性。8. 可以調(diào)整需求,允許

16、重用已有的軟件組件。9. 當(dāng)需要對(duì)需求進(jìn)行變更時(shí),對(duì)成本、影響、得失( trade - off)有個(gè)真實(shí)可信的評(píng)估。10. 獲得滿足客戶功能和質(zhì)量要求的系統(tǒng),并且這些要求是開發(fā)人員同意的。 軟件客戶需求義務(wù)書 (1)客戶有下列義務(wù):1. 給分析人員講解業(yè)務(wù)及說明業(yè)務(wù)方面的術(shù)語(yǔ)等專業(yè)問題。2. 抽出時(shí)間清楚地說明需求并不斷完善。3. 當(dāng)說明系統(tǒng)需求時(shí),力求準(zhǔn)確詳細(xì)。4. 需要時(shí)要及時(shí)對(duì)需求做出決策。5. 要尊重開發(fā)人員的成本估算和對(duì)需求的可行性分析。軟件客戶需求義務(wù)書(2)6. 對(duì)單項(xiàng)需求、系統(tǒng)特性或使用實(shí)例劃分優(yōu)先級(jí)。7. 評(píng)審需求文檔和原型。8. 一旦知道要對(duì)項(xiàng)目需求進(jìn)行變更,要馬上與開發(fā)人

17、員聯(lián)系。9. 在要求需求變更時(shí),應(yīng)遵照開發(fā)組織確定的工作過程來處理。10. 尊重需求工程中開發(fā)人員采用的流程(過程)。 需求分析的原則 目前存在著許多需求分析的方法,雖然各種方法都有其獨(dú)特的描述方法,但不論采用何種方法,需求分析都必須遵循以下基本原則: (1) 能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域。 (2) 能夠?qū)?fù)雜問題分解化簡(jiǎn)。 (3) 能夠給出系統(tǒng)的邏輯表示和物理表示。 高質(zhì)量的需求過程帶來的好處開發(fā)后期和整個(gè)維護(hù)階段的重做的工作大大減少 強(qiáng)調(diào)需求質(zhì)量并不能引起某些人的重視,他們錯(cuò)誤地認(rèn)為在需求上消耗多少時(shí)間就會(huì)導(dǎo)致產(chǎn)品開發(fā)推遲多少時(shí)間將選定系統(tǒng)的需求明確地分配到各軟件子系統(tǒng),強(qiáng)調(diào)采用產(chǎn)品

18、工程的系統(tǒng)方法。這樣能簡(jiǎn)化硬軟件的集成 優(yōu)秀需求具有的特性1. 完整性 2. 正確性 3. 可行性 4. 必要性 5. 劃分優(yōu)先級(jí) 6. 無(wú)二義性 7. 可驗(yàn)證性 需求獲取的內(nèi)容用戶需求分類 (1)功能性需求: 定義了系統(tǒng)做什么(描述系統(tǒng)必須支持 的功能和過程) (2)非功能性需求(技術(shù)需求): 定義了系統(tǒng)工作時(shí)的特性 (描述操作環(huán)境和性能目標(biāo))兩類需求包括的內(nèi)容(1) 功能(2) 性能(3) 環(huán)境(4) 界面(5) 用戶或人的因素(6) 文檔 (7) 數(shù)據(jù)(8) 資源(9) 安全保密(10)軟件成本消耗與開發(fā)進(jìn)度(11)質(zhì)量保證(1) 功能需求 系統(tǒng)做什么? 系統(tǒng)何時(shí)做什么? 系統(tǒng)何時(shí)及如何

19、修改 或升級(jí)?(2) 性能需求軟件開發(fā)的技術(shù)性指標(biāo)例如: 存儲(chǔ)容量限制 執(zhí)行速度、響應(yīng)時(shí)間 吞吐量(3) 環(huán)境需求硬件設(shè)備:機(jī)型、外設(shè)、接口、 地點(diǎn)、分布、溫度、 濕度、磁場(chǎng)干擾等軟件: 操作系統(tǒng) 網(wǎng)絡(luò) 數(shù)據(jù)庫(kù)(4) 界面需求 有來自其它系統(tǒng)的輸入嗎? 到自其它系統(tǒng)的輸出嗎? 對(duì)數(shù)據(jù)格式有規(guī)定嗎? 對(duì)數(shù)據(jù)存儲(chǔ)介質(zhì)有規(guī)定嗎?(5) 用戶或人的因素 用戶類型? 各種用戶熟練程度? 需受何種訓(xùn)練? 用戶理解、使用系統(tǒng)的難度? 用戶錯(cuò)誤操作系統(tǒng)的可能性?(6) 文檔需求 需哪些文檔? 文檔針對(duì)哪些讀者?(7) 數(shù)據(jù)需求 輸入、輸出數(shù)據(jù)的格式? 接收、發(fā)送數(shù)據(jù)的頻率? 數(shù)據(jù)的準(zhǔn)確性和精度? 數(shù)據(jù)流量?

20、數(shù)據(jù)需保持的時(shí)間?(8) 資源需求 軟件運(yùn)行時(shí)所需的數(shù)據(jù)、軟件。 內(nèi)存空間等資源。 軟件開發(fā)、維護(hù)所需的人力、 支撐軟件、開發(fā)設(shè)備等。(9) 安全保密要求 需對(duì)訪問系統(tǒng)或系統(tǒng)信息加以控制嗎? 如何隔離用戶之間的數(shù)據(jù)? 用戶程序如何與其它程序和操作系統(tǒng)隔離? 系統(tǒng)備份要求?(10) 軟件成本消耗與開發(fā)進(jìn)度需求開發(fā)有規(guī)定的時(shí)間表嗎?軟硬件投資有無(wú)限制?什么限制?(11) 質(zhì)量保證 系統(tǒng)的可靠性要求? 系統(tǒng)必須監(jiān)測(cè)和隔離錯(cuò)誤嗎? 規(guī)定系統(tǒng)平均出錯(cuò)時(shí)間? 出錯(cuò)后,重啟系統(tǒng)允許的時(shí)間? 系統(tǒng)變化如何反映到設(shè)計(jì)中? 維護(hù)是否包括對(duì)系統(tǒng)的改進(jìn)? 系統(tǒng)的可移植性?2.2 需求分析的過程當(dāng)前系統(tǒng)目標(biāo)系統(tǒng)物理模型

21、邏輯模型邏輯模型物理模型模型化抽象化具體化實(shí)例化怎么做做什么當(dāng)前系統(tǒng)目標(biāo)系統(tǒng)需求定義邏輯模型和物理模型模型是對(duì)對(duì)象系統(tǒng)的形式化的特征 抽象,概括性或近似地表示構(gòu)造模型的過程是一個(gè)抽象、分 析的過程。對(duì)象系統(tǒng)模型系統(tǒng)抽象(映射)模型應(yīng)用模型構(gòu)造的過程 邏輯模型 物理模型 (本質(zhì)模型、概念模型) (實(shí)施模型、技術(shù)模型)現(xiàn)行系統(tǒng)目標(biāo)系統(tǒng)描述重要的業(yè)務(wù)功能,無(wú)論系統(tǒng)是如何實(shí)施的。描述現(xiàn)實(shí)系統(tǒng)是如何在物理上實(shí)現(xiàn)的。描述新系統(tǒng)的主要業(yè)務(wù)功能和用戶新的需求,無(wú)論系統(tǒng)應(yīng)如何實(shí)施。描述新系統(tǒng)是如何實(shí)施的(包括技術(shù))。2.4.1 數(shù)據(jù)流圖 在需求分析階段,數(shù)據(jù)流(也稱信息流)是系統(tǒng)分析的基礎(chǔ)。數(shù)據(jù)流圖(DFD,D

22、ata Flow Diagram)是描述軟件系統(tǒng)中數(shù)據(jù)處理過程的一種有力的圖形工具。數(shù)據(jù)流圖從數(shù)據(jù)傳遞和加工的角度出發(fā),刻畫數(shù)據(jù)流從輸入到輸出的移動(dòng)和變換過程。外部實(shí)體外部實(shí)體外部實(shí)體外部實(shí)體目標(biāo)系統(tǒng)輸入信息輸入信息輸出信息輸出信息數(shù)據(jù)流圖的基本符號(hào)數(shù)據(jù)流圖中的基本符號(hào)或或符 號(hào)含 義數(shù)據(jù)流的源點(diǎn)和終點(diǎn)數(shù)據(jù)流文件(數(shù)據(jù)存儲(chǔ))加工(數(shù)據(jù)處理)數(shù)據(jù)流與加工之間的關(guān)系 在數(shù)據(jù)流圖中,可以有兩個(gè)以上的數(shù)據(jù)流進(jìn)入同一個(gè)加工,也可以有兩個(gè)以上的數(shù)據(jù)流從同一個(gè)加工中流出,這樣的多個(gè)數(shù)據(jù)流之間往往存在一定的關(guān)系。在下表中列出了加工中常見的幾種關(guān)系的表示方法。加工中常見關(guān)系的符號(hào)表示符 號(hào)含 義由數(shù)據(jù)A和B共同

23、變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B和數(shù)據(jù)C由數(shù)據(jù)A或B,或者數(shù)據(jù)A和B共同變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B或C,或者同時(shí)變換為數(shù)據(jù)B和C由數(shù)據(jù)A或B其中之一變換為數(shù)據(jù)C由數(shù)據(jù)A變換為數(shù)據(jù)B或C其中之一分層數(shù)據(jù)流模型的建立方法: 1. 建立頂層數(shù)據(jù)流圖頂層流圖僅包含一個(gè)加工,它代表被開發(fā)系統(tǒng)。它的輸入流是該系統(tǒng)的輸入數(shù)據(jù),輸出流是系統(tǒng)所輸出數(shù)據(jù) 2. 數(shù)據(jù)流圖的分層細(xì)化底層流圖是指其加工不需再做分解的數(shù)據(jù)流圖,它處在最底層中間層流圖則表示對(duì)其上層父圖的細(xì)化。它的每一加工可能繼續(xù)細(xì)化,形成子圖。 數(shù)據(jù)流模型的建立方法畫數(shù)據(jù)流圖規(guī)則:由外向里畫畫系統(tǒng)的輸入輸出畫系統(tǒng)的內(nèi)部畫加工的內(nèi)部結(jié)構(gòu)化分析方法功能

24、建模的步驟 商店業(yè)務(wù)處理系統(tǒng)這個(gè)數(shù)據(jù)流圖只是一個(gè)高層的系統(tǒng)邏輯模型,它反映了目標(biāo)系統(tǒng)要實(shí)現(xiàn)的功能數(shù)據(jù)流圖繪制步驟 首先確定系統(tǒng)的輸入和輸出 根據(jù)商店業(yè)務(wù),畫出頂層數(shù)據(jù)流圖,以反映最主要業(yè)務(wù)處理流程 經(jīng)過分析,商店業(yè)務(wù)處理的主要功能應(yīng)當(dāng)有銷售、采購(gòu)、會(huì)計(jì)三大項(xiàng)。主要數(shù)據(jù)流輸入的源點(diǎn)和輸出終點(diǎn)是顧客和供應(yīng)商。 然后從輸入端開始,根據(jù)商店業(yè)務(wù)工作流程,畫出數(shù)據(jù)流流經(jīng)的各加工框,逐步畫到輸出端,得到第一層數(shù)據(jù)流圖第一層數(shù)據(jù)流圖加細(xì)每一個(gè)加工框 銷售細(xì)化采購(gòu)細(xì)化 工資計(jì)算系統(tǒng)的頂層(0層)數(shù)據(jù)流圖 工資計(jì)算系統(tǒng)第一層數(shù)據(jù)流圖 工資計(jì)算系統(tǒng)的第二層數(shù)據(jù)流圖“計(jì)算工資”子數(shù)據(jù)流圖“工資轉(zhuǎn)存”子數(shù)據(jù)流圖工資檔

25、案文件F2獎(jiǎng)懲條例文件F1 工資計(jì)算系統(tǒng)的第三層數(shù)據(jù)流圖建立數(shù)據(jù)流模型的原則 建立數(shù)據(jù)流模型要遵循以下的原則: (1) 每個(gè)加工至少應(yīng)有一個(gè)輸入數(shù)據(jù)流(反映被處理數(shù)據(jù)的來源)和一個(gè)輸出數(shù)據(jù)流(反映加工的結(jié)果)。 (2) 數(shù)據(jù)流圖中各構(gòu)成元素的名稱必須具有明確的含義且能夠代表對(duì)應(yīng)元素的內(nèi)容或功能。 (3) 對(duì)數(shù)據(jù)流圖中某個(gè)加工進(jìn)行細(xì)化生成的下層數(shù)據(jù)流圖,稱為其上層圖的子圖。應(yīng)保證分層數(shù)據(jù)流圖中任意對(duì)應(yīng)的父圖和子圖的輸入/輸出數(shù)據(jù)保持一致。 (4) 在數(shù)據(jù)流圖中,應(yīng)按照層次給每個(gè)加工編號(hào),用于表明該加工所處的層次及上、下層的父圖與子圖的關(guān)系。編號(hào)的規(guī)則為:頂層(第0層)加工不用編號(hào);第一層加工的編

26、號(hào)為1,2,n;第二層加工的編號(hào)為1.1,1.2,2.1,n.1,n.2,等,依次類推。如編號(hào)1.2表明該加工處于第二層數(shù)據(jù)流圖中,序號(hào)為2,該圖是對(duì)上層數(shù)據(jù)流圖中編號(hào)為1的加工進(jìn)行細(xì)化得到的子圖。(5) 在父圖中不要出現(xiàn)子圖中涉及的局部數(shù)據(jù)存儲(chǔ)文件。通常除底層數(shù)據(jù)流圖中需標(biāo)明所有數(shù)據(jù)存儲(chǔ)外,為了保持畫面的整潔,各中間層數(shù)據(jù)流圖只需顯示處于加工之間的接口文件即可。(6) 數(shù)據(jù)流圖只能由四種基本符號(hào)組成,是實(shí)際業(yè)務(wù)流程的客觀映象,用于說明系統(tǒng)應(yīng)該“做什么”, 而不需要指明系統(tǒng)“如何做”。(7) 數(shù)據(jù)流圖的分解速度應(yīng)保持適中。通常一個(gè)加工每次可分解為24個(gè)子加工,最多不要超過七個(gè),因?yàn)檫^快的分解會(huì)

27、增加用戶對(duì)系統(tǒng)模型理解的難度。3.4.2 數(shù) 據(jù) 字 典(DD,Data Dictionary) 雖然數(shù)據(jù)流圖能夠形象、清晰地描述數(shù)據(jù)在系統(tǒng)中流動(dòng)、加工、存儲(chǔ)的情況,但數(shù)據(jù)流圖中的許多構(gòu)成元素,如數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、加工,僅依靠名稱并不能反映其本質(zhì)含義,因此必須對(duì)這些構(gòu)成元素進(jìn)行嚴(yán)格的定義。DD是對(duì)所有與系統(tǒng)相關(guān)的數(shù)據(jù)元素的一個(gè)有組織的列表,以及精確的、嚴(yán)格的定義,使得用戶和系統(tǒng)分析員對(duì)于輸入、輸出、存儲(chǔ)成分和中間計(jì)算有共同的理解。2.4.1 數(shù)據(jù)字典的基本符號(hào) 數(shù)據(jù)字典中的基本符號(hào)及其含義符 號(hào)含 義說 明=表示定義為用于對(duì)=左邊的條目進(jìn)行確切的定義+表示與關(guān)系X=a+b表示X由a和b共同構(gòu)成

28、 | , 表示或關(guān)系X=a|b與X=a,b等價(jià),表示X由a或b組成( )表示可選項(xiàng)X=(a)表示a可以在X中出現(xiàn),也可以不出現(xiàn) 表示重復(fù)大括號(hào)中的內(nèi)容重復(fù)0到多次m n表示規(guī)定次數(shù)的重復(fù)重復(fù)的次數(shù)最少m次,最多n次“ ”表示基本數(shù)據(jù)元素“ ”中的內(nèi)容是基本數(shù)據(jù)元素,不可再分.連接符month=1.12表示month可取112中的任意值* *表示注釋兩個(gè)星號(hào)之間的內(nèi)容為注釋信息 符 號(hào) 含 義 舉 例 被定義為 與 x = ab.,. 或 .|. 或 x = a , b,x = a | b . 或 m.n 重復(fù) x = a, x = 3a8(.) 可選 x = (a)“.” 基本數(shù)據(jù)元素 x =

29、 “a” . 連結(jié)符 x = 1.9存折格式存折戶名所號(hào)帳號(hào)開戶日性質(zhì)(印密)1存取行50戶名2字母24所號(hào)“001”.“999” 帳號(hào)“00000001”.“99999999”開戶日年月日性質(zhì)“1”.“6” 注:“1”表示普通戶,“5”表示工資戶等印密“0” 注:印密在存折上不顯示存取行日期(摘要)支出存入余額操作復(fù)核需求建模實(shí)例1:數(shù)據(jù)字典條目的定義預(yù)訂請(qǐng)求客人數(shù)據(jù)住宿期限+客房類別客人數(shù)據(jù)客人姓名+地址+身份證號(hào)碼+護(hù)照號(hào)碼 +支付方式 身份證號(hào)碼=十進(jìn)制15數(shù)字18護(hù)照號(hào)碼字母 + 8數(shù)字8字母“A”“Z”十進(jìn)制數(shù)字“0”“9”需求建模實(shí)例2:數(shù)據(jù)字典條目的定義航班信息文件航空公司名稱

30、航班號(hào)起點(diǎn)終點(diǎn)日期 起飛時(shí)間降落時(shí)間航空公司名稱2字母4航班號(hào)3十進(jìn)制數(shù)字3字母“A”“Z”十進(jìn)制數(shù)字“0”“9”起點(diǎn)終點(diǎn)1漢字10起飛時(shí)間降落時(shí)間時(shí)分 時(shí)“00”“23” 分“00”“59” 日期年月日 年2000200120022004 月“01”“12” 日“01”“31”3.4.2 數(shù)據(jù)字典中的條目及說明格式 數(shù)據(jù)字典是關(guān)于數(shù)據(jù)流圖中各種成分詳細(xì)定義的信息集合,可將其按照說明對(duì)象的類型劃分為四類條目:數(shù)據(jù)流條目數(shù)據(jù)項(xiàng)條目數(shù)據(jù)文件條目數(shù)據(jù)加工條目 1. 數(shù)據(jù)流條目 數(shù)據(jù)流在數(shù)據(jù)流圖中主要用于說明數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)中的作用和流動(dòng)方向,因此數(shù)據(jù)流也被稱作“流動(dòng)的數(shù)據(jù)結(jié)構(gòu)”。數(shù)據(jù)字典中數(shù)據(jù)流條目應(yīng)

31、包括以下幾項(xiàng)主要內(nèi)容:數(shù)據(jù)流流向數(shù)據(jù)流組成數(shù)據(jù)流量數(shù)據(jù)流名稱數(shù)據(jù)流別名說明數(shù)據(jù)流來源數(shù)據(jù)流名稱:出勤表數(shù)據(jù)流別名:無(wú)說明:由人事部門每月月底上報(bào)的職工考勤統(tǒng)計(jì)數(shù)字?jǐn)?shù)據(jù)流來源:人事部門數(shù)據(jù)流流向:加工1.2(計(jì)算應(yīng)發(fā)工資)數(shù)據(jù)流組成:出勤表 = 年份+月份+職工號(hào)+出勤時(shí)數(shù)+病假時(shí)數(shù)+事假時(shí)數(shù)+曠工時(shí)數(shù)數(shù)據(jù)流量:1份/月工資系統(tǒng)中的出勤表數(shù)據(jù)流在數(shù)據(jù)字典中的條目描述: 工資計(jì)算系統(tǒng)的頂層(0層)數(shù)據(jù)流圖2. 數(shù)據(jù)項(xiàng)條目 數(shù)據(jù)流圖中每個(gè)數(shù)據(jù)結(jié)構(gòu)都是由若干個(gè)數(shù)據(jù)項(xiàng)構(gòu)成的,數(shù)據(jù)項(xiàng)是加工中的最小單位,不可再分。數(shù)據(jù)字典的數(shù)據(jù)項(xiàng)條目中應(yīng)包含的主要內(nèi)容有:數(shù)據(jù)項(xiàng)名稱數(shù)據(jù)項(xiàng)別名說明類型長(zhǎng)度取值范圍含義 出勤表

32、中的職工號(hào)數(shù)據(jù)項(xiàng)在數(shù)據(jù)字典中的條目描述為: 數(shù)據(jù)項(xiàng)名稱:職工號(hào) 數(shù)據(jù)項(xiàng)別名:employee_no 說明:本單位職工的惟一標(biāo)識(shí) 類型:字符串 長(zhǎng)度:6 取值范圍及含義:12位(00.99)為部門編號(hào):36位(XX0001.XX9999)為人員編號(hào)3. 數(shù)據(jù)文件條目 數(shù)據(jù)文件是數(shù)據(jù)流圖中數(shù)據(jù)結(jié)構(gòu)的載體。數(shù)據(jù)字典的數(shù)據(jù)文件條目中應(yīng)包含的主要內(nèi)容有:數(shù)據(jù)文件名稱說明數(shù)據(jù)文件組成組織方式存取方式存取頻率 工資系統(tǒng)中的職工工資檔案文件在數(shù)據(jù)字典中的條目描述為: 數(shù)據(jù)文件名稱:工資檔案 說明:?jiǎn)挝宦毠さ幕竟べY、各項(xiàng)津貼及補(bǔ)貼信息 數(shù)據(jù)文件組成:職工號(hào)+國(guó)家工資+國(guó)家津貼+ 職務(wù)津貼+職齡津貼+交通補(bǔ)貼+

33、部門補(bǔ)貼+其他補(bǔ)貼 組織方式:按職工號(hào)從小到大排列 存取方式:順序 存取頻率:1次/月圖3.7 工資計(jì)算系統(tǒng)的第二層數(shù)據(jù)流圖“計(jì)算工資”子數(shù)據(jù)流圖“工資轉(zhuǎn)存”子數(shù)據(jù)流圖工資檔案文件F2獎(jiǎng)懲條例文件F14. 數(shù)據(jù)加工條目 在數(shù)據(jù)流圖中只簡(jiǎn)單給出了每個(gè)加工的名稱,在數(shù)據(jù)字典中通過數(shù)據(jù)加工條目主要是要說明每個(gè)加工是用來“做什么”的。數(shù)據(jù)字典的數(shù)據(jù)文件條目中應(yīng)包含的主要內(nèi)容有:數(shù)據(jù)加工名稱加工編號(hào)說明輸入數(shù)據(jù)流輸出數(shù)據(jù)流加工邏輯計(jì)算應(yīng)發(fā)工資這個(gè)加工在數(shù)據(jù)字典中的條目描述為: 數(shù)據(jù)加工名稱:計(jì)算應(yīng)發(fā)工資 加工編號(hào):1.2 說明:根據(jù)職工的工資檔案及本月獎(jiǎng)金發(fā)放表數(shù)據(jù)計(jì)算每個(gè)職工的應(yīng)發(fā)工資 輸入數(shù)據(jù)流:獎(jiǎng)

34、金發(fā)放表及工資檔案 輸出數(shù)據(jù)流:應(yīng)發(fā)工資表 加工邏輯(見下頁(yè)) 加工邏輯: DO WHILE 工資檔案文件指針未指向文件尾 從工資檔案中取出當(dāng)前職工工資的各項(xiàng)基本數(shù)據(jù)進(jìn)行累加 在獎(jiǎng)金發(fā)放表中按職工號(hào)查找到該職工的獎(jiǎng)金數(shù) 對(duì)獎(jiǎng)金數(shù)與工資基本數(shù)據(jù)的累加和進(jìn)行求和得到該職工的 應(yīng)發(fā)工資數(shù) ENDDO?2.4.3 加工邏輯的描述 為了能夠直觀、明確地表達(dá)加工邏輯,經(jīng)常采用三種描述方法:結(jié)構(gòu)化語(yǔ)言判定樹判定表 對(duì)數(shù)據(jù)流圖的每一個(gè)基本加工,必須有一個(gè)基本加工邏輯說明基本加工邏輯說明必須描述基本加工如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則加工邏輯說明加工邏輯說明必須描述實(shí)現(xiàn)加工的策略而不是實(shí)現(xiàn)加工的細(xì)節(jié)加

35、工邏輯說明中包含的信息應(yīng)是充足的,完備的,有用的,沒有重復(fù)的多余信息是一種介于自然語(yǔ)言和形式化語(yǔ)言之間的語(yǔ)言語(yǔ)言的正文用基本控制結(jié)構(gòu)進(jìn)行分割,加工中的操作用自然語(yǔ)言短語(yǔ)來表示1、 結(jié)構(gòu)化語(yǔ)言 (1) 順序結(jié)構(gòu):由自然語(yǔ)言中的簡(jiǎn)單祈使語(yǔ)句序列構(gòu)成。 (2) 選擇結(jié)構(gòu):通常采用IFTHENELSEENDIF和CASEOFENDCASE結(jié)構(gòu)。 (3) 循環(huán)結(jié)構(gòu):通常采用DO WHILEENDDO和REPEATUNTIL結(jié)構(gòu)。 2. 判定表 當(dāng)某一加工的實(shí)現(xiàn)需要同時(shí)依賴多個(gè)邏輯條件的取值時(shí),對(duì)加工邏輯的描述就會(huì)變得較為復(fù)雜,很難采用結(jié)構(gòu)化語(yǔ)言清楚地將其描述出來,應(yīng)采用判定表。判定表通常由用雙線分隔開的

36、四個(gè)部分構(gòu)成:條件列表?xiàng)l件組合動(dòng)作列表對(duì)應(yīng)的動(dòng)作以“檢查發(fā)貨單”為例表2.8 “職務(wù)津貼計(jì)算”判定表 要生成上面的判定表,具體的步驟如下: (1) 確定規(guī)則的個(gè)數(shù)。例子中有兩個(gè)條件,每個(gè)條件有三種取值,故規(guī)則個(gè)數(shù)為33=9。 (2) 列出所有的條件和動(dòng)作。 (3) 列出所有的條件組合。 (4) 填寫每種條件組合下對(duì)應(yīng)的動(dòng)作。 (5) 若表中存在不同規(guī)則對(duì)應(yīng)相同動(dòng)作且其條件組合存在某種關(guān)系時(shí),需要對(duì)表進(jìn)行必要的化簡(jiǎn)。3 判定樹判定樹也是用來表達(dá)加工邏輯的一種工具。有時(shí)侯它比判定表更直觀。判定樹邏輯上沒有判定表嚴(yán)格,用戶在使用判定樹時(shí)容易造成個(gè)別條件的遺漏。2.4.4 數(shù)據(jù)字典的建立 1. 建立數(shù)

37、據(jù)字典的方法 (1) 手工建立。 (2) 自動(dòng)建立。(如由美國(guó)密執(zhí)安大學(xué)開發(fā)的PSL/PSA系統(tǒng)) 2. 建立數(shù)據(jù)字典的原則 (1) 所有定義必須嚴(yán)密、精確,不能存在二義性。 (2) 書寫格式應(yīng)簡(jiǎn)潔且嚴(yán)格。 (3) 應(yīng)可方便地實(shí)現(xiàn)對(duì)所需條目的按名查閱。 (4) 應(yīng)便于修改和更新。2.5 結(jié)構(gòu)化需求分析的若干技術(shù) 傳統(tǒng)軟件工程中的需求分析方法主要包括:原型化分析方法結(jié)構(gòu)化分析方法2.5.1 原型化分析方法 一、軟件原型的分類(1)廢棄(throw away)型:先構(gòu)造一個(gè)功能簡(jiǎn)單而且質(zhì)量要求不高的模型系統(tǒng),針對(duì)這個(gè)模型系統(tǒng)反復(fù)進(jìn)行分析和修改,從而形成比較好的設(shè)計(jì)思想,據(jù)此設(shè)計(jì)出更加完整、準(zhǔn)確、一

38、致、可靠的最終系統(tǒng)。系統(tǒng)構(gòu)造完成后,原來的模型系統(tǒng)就被廢棄不用。(2)追加(add on)型:先構(gòu)造個(gè)功能簡(jiǎn)單而且質(zhì)量要求不高的模型系統(tǒng),作為最終系統(tǒng)的核心,然后通過不斷地?cái)U(kuò)充、修改、逐步追加新需求,最后發(fā)展成為最終系統(tǒng)。二、快速原型開發(fā)模型原型生存期的模型 模型的細(xì)化 (1)快速分析在系統(tǒng)分析員和用戶的緊密配合下,快速確定軟件系統(tǒng)的基本需求。根據(jù)原型所要體現(xiàn)的特性(或界面形式、或處理功能、或總體結(jié)構(gòu)、或模擬性能等),描述基本規(guī)格說明,以滿足開發(fā)原型的需要。(2)構(gòu)造原型 在快速分析的基礎(chǔ)上,根據(jù)基本規(guī)格說明,盡快實(shí)現(xiàn)一個(gè)可運(yùn)行的系統(tǒng)。此時(shí)主要考慮原型系統(tǒng)應(yīng)充分反映的待評(píng)價(jià)的特性,對(duì)最終系統(tǒng)在

39、某些細(xì)節(jié)上的要求,如安全性、健壯性、異常處理等可忽略。(3)運(yùn)行和評(píng)價(jià)原型這是頻繁通信、發(fā)現(xiàn)問題、消除誤解的重要階段。其目的是驗(yàn)證原型的正確程度,進(jìn)而修改原有的需求并開發(fā)新需求。(4)修正和改進(jìn) 對(duì)原型系統(tǒng)根據(jù)修改意見進(jìn)行修改。若原型運(yùn)行的結(jié)果未能滿足規(guī)格說明中的需求,則反映出對(duì)規(guī)格說明存在著不一致的理解或?qū)崿F(xiàn)方案不夠合理。若因?yàn)閲?yán)重的理解錯(cuò)誤而使正常操作的原型與用戶需求相違背時(shí),則有可能會(huì)產(chǎn)生廢品。如果發(fā)現(xiàn)是廢品應(yīng)當(dāng)立即放棄。(5)判定原型完成經(jīng)過修改或改進(jìn)的原型,如果獲得參與者一致認(rèn)可,則原型開發(fā)的迭代過程可以結(jié)束。為此,應(yīng)判斷有關(guān)應(yīng)用的實(shí)質(zhì)是否已經(jīng)掌握,迭代周期是否可以結(jié)束等。(6)判斷

40、原型細(xì)部是否說明判斷組成原型的細(xì)部是否需要嚴(yán)格地加以說明。原型化方法允許對(duì)系統(tǒng)必要成份進(jìn)行嚴(yán)格的詳細(xì)的說明,例如將需求轉(zhuǎn)化為報(bào)表、給出統(tǒng)計(jì)數(shù)字等。對(duì)于這些不能通過模型進(jìn)行說明的成份,如果必要,需提供說明,并利用屏幕等工具進(jìn)行討論和確定。(7)原型細(xì)部的說明對(duì)于所有那些不能通過原型說明的項(xiàng)目,仍需通過文件加以說明。嚴(yán)格說明的成份要作為原型化方法的模型編入字典,以得到個(gè)統(tǒng)一、連貫的規(guī)格說明。(8)判定原型效果考察用戶新加入的需求信息和細(xì)部說明信息,看其對(duì)模型效果有什么影響?是否會(huì)影響模塊的有效性?如果使模型效果受到影響,甚至導(dǎo)致模型失效,則要進(jìn)行修正和改進(jìn)。(9)整理原型和提供文檔整理原型的目的是

41、為進(jìn)一步開發(fā)提供依據(jù)。原型的初期需求模型是一個(gè)自動(dòng)的文檔。第2章結(jié)束128第3章 概要設(shè)計(jì)129要點(diǎn)(1)如何將分析模型轉(zhuǎn)換為軟件 設(shè)計(jì)?(2)作為軟件工程師在軟件設(shè)計(jì) 方面應(yīng)使用哪些基本原則和 概念?130 軟件設(shè)計(jì)是一個(gè)把軟件需求轉(zhuǎn)換成軟件表示的過程。從工程管理角度來看,軟件設(shè)計(jì)分兩步完成:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。 概要設(shè)計(jì)的目標(biāo)是建立軟件的體系結(jié)構(gòu),軟件體系結(jié)構(gòu)的三要素是程序構(gòu)件(模塊)的層次結(jié)構(gòu)、構(gòu)件之間交互的方式,以及數(shù)據(jù)的結(jié)構(gòu)。 模塊具有3個(gè)基本屬性(1)功能(2)邏輯:描述模塊內(nèi)部怎么做(3)狀態(tài):即該模塊使用時(shí)的環(huán)境和條件。1313.1 概要設(shè)計(jì)的過程 總體設(shè)計(jì)通常由系統(tǒng)設(shè)計(jì)和結(jié)構(gòu)

42、設(shè)計(jì)兩個(gè)階段組成。系統(tǒng)設(shè)計(jì)階段確定系統(tǒng)的具體實(shí)現(xiàn)方案,結(jié)構(gòu)設(shè)計(jì)階段確定軟件的結(jié)構(gòu)。 實(shí)施總體設(shè)計(jì)的過程如下: 1設(shè)想供選擇的方案 2選取合理的方案 3推薦最佳方案 4功能分解 5設(shè)計(jì)軟件結(jié)構(gòu)6數(shù)據(jù)庫(kù)設(shè)計(jì)7制定測(cè)試計(jì)劃 8書寫文檔 9審查和復(fù)審 132軟件設(shè)計(jì)的目標(biāo)和目的 軟件需求:解決“做什么” 軟件設(shè)計(jì):解決“怎么做”軟件設(shè)計(jì)的任務(wù): 問題結(jié)構(gòu)(軟件需求) 軟件結(jié)構(gòu) (從軟件需求規(guī)格說明書出發(fā),形成軟件的具體設(shè)計(jì)方案)。映射將分析模型轉(zhuǎn)換為設(shè)計(jì)數(shù)據(jù)詞典數(shù)據(jù)流圖實(shí)體關(guān)系圖狀態(tài)轉(zhuǎn)換圖加工規(guī)格說明控制規(guī)格說明數(shù)據(jù)對(duì)象描述過程設(shè)計(jì)接口設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)分析模型設(shè)計(jì)模型134軟件設(shè)計(jì)是后續(xù)開發(fā)步

43、驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)135 3.2 概要設(shè)計(jì)中可采用的工具HIPO圖(層次圖IPO圖) 結(jié)構(gòu)圖 1361、HIPO圖IBM公司發(fā)明的HIPO圖:層次圖 + 輸入 / 處理 /輸出圖 (H圖) (IPO圖)(Hiberarchy Input Process Output)137 1) HIPO圖中的H圖 H圖用于在體系結(jié)構(gòu)設(shè)計(jì)過程中描繪軟件的層次結(jié)構(gòu)每一個(gè)矩形框代表一個(gè)模塊最頂層的矩形框表示系統(tǒng)中的主控模塊矩形框之間的連線用于表示模塊之間的調(diào)用關(guān)系可以為除頂層矩形框以外的其他矩形框加上能反映層次關(guān)系的編號(hào)138圖3.3 工資計(jì)算系統(tǒng)的H圖139帶編號(hào)

44、的層次圖(H圖) 正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題 4.0存儲(chǔ)5.0檢索6.0編目錄 7.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6140 2) IPO圖與層次圖中每個(gè)矩形框相對(duì)應(yīng),應(yīng)該有一張IPO圖描述該矩形框所代表的模塊的具體處理過程,作為對(duì)層次圖中內(nèi)容的補(bǔ)充說明。IPO圖的基本形式為:在圖中左邊的框中列出模塊涉及的所有輸入數(shù)據(jù)在中間的框中列出主要的加工在右邊的框中列出處理后產(chǎn)生的輸出數(shù)據(jù);圖中的箭頭用于指明輸入數(shù)據(jù)、加工和輸出結(jié)果之間的關(guān)系。141 計(jì)算工資模塊的IPO圖142傳統(tǒng)的IPO圖舉例輸入處理輸出讀口令請(qǐng)求口令文件1取得輸入2口令確認(rèn)3請(qǐng)求確

45、認(rèn)請(qǐng)求記錄權(quán)限文件4更新處理權(quán)限記錄狀態(tài)報(bào)告響應(yīng)命令監(jiān)控器的IPO圖143 2、 結(jié)構(gòu)圖20世紀(jì)70年代中期由Yourdon等人提出的結(jié)構(gòu)圖(SC,Structure Chart)這種圖形工具來表示。結(jié)構(gòu)圖能夠描述出軟件系統(tǒng)的模塊層次結(jié)構(gòu),清楚地反映出程序中各模塊之間的調(diào)用關(guān)系和聯(lián)系。144結(jié)構(gòu)圖主要成分:模塊用方框表示,方框中寫有模塊的名字,一個(gè)模塊的名字應(yīng)適當(dāng)?shù)胤从尺@個(gè)模塊的功能,這就在某種程度上反映了塊內(nèi)聯(lián)系;調(diào)用從一個(gè)模塊指向另一個(gè)模塊的箭頭表示前一模塊中含有對(duì)后一模塊的調(diào)用;數(shù)據(jù)調(diào)用箭頭邊上的小箭頭表示調(diào)用時(shí)從一個(gè)模塊傳入送給另一個(gè)模塊的數(shù)據(jù),小箭頭也指出了傳送的方向。145結(jié)構(gòu)圖的

46、主要基本符號(hào)約定:編輯學(xué)生記錄讀學(xué)生記錄學(xué)生數(shù)據(jù)無(wú)此學(xué)生學(xué)號(hào)不加區(qū)分的數(shù)據(jù)數(shù)據(jù)信息控制信息146SC中的四種模塊傳入模塊(a)(b)AA傳出模塊BB變換模塊(c)CD協(xié)調(diào)模塊E(d)EFF147SC中的選擇調(diào)用ACBDA根據(jù)內(nèi)部判斷決定是否調(diào)用BA按另一判定結(jié)果選擇調(diào)用C或D148SC中的循環(huán)調(diào)用ABCA根據(jù)內(nèi)在的循環(huán)重復(fù)調(diào)用B、C等模塊149結(jié)構(gòu)圖(SC)舉例 醫(yī)院管理系統(tǒng)門診管理藥房管理藥庫(kù)管理病房管理財(cái)務(wù)管理處方掛號(hào)處理掛號(hào)費(fèi)總計(jì)掛號(hào)單掛號(hào)費(fèi)總計(jì)出庫(kù)處理進(jìn)藥管理病歷管理處方管理常規(guī)處理1503.3 軟件設(shè)計(jì)中的基本概念和原理 1. 分解模塊化模塊,是指具有相對(duì)獨(dú)立性的,由數(shù)據(jù)說明、執(zhí)行語(yǔ)

47、句等程序?qū)ο髽?gòu)成的集合。每個(gè)模塊都需要單獨(dú)命名,通過名字可實(shí)現(xiàn)對(duì)指定模塊的訪問。如:獨(dú)立的匯編程序C的函數(shù)Pascal過程FORTRAN的子程序匯編的宏151模塊化(Modularization)模塊化是好的軟件設(shè)計(jì)的一個(gè)基本準(zhǔn)則 高層模塊 從整體上把握 問題,隱蔽細(xì)節(jié) 復(fù)雜問題 較小問題 分解 可減小解題所需的總的工作分解152例:將問題(P1+P2)分解為P1,P2設(shè)函數(shù)C(x)定義問題 x 的復(fù)雜程度函數(shù)E(x)確定解決問題 x 需要的工作量對(duì)問題P1和P2,如: C(P1) C(P2)顯然: E(P1) E(P2)有規(guī)律:C(P1+P2) C(P1)+C(P2) E(P1+P2) E(

48、P1)+E(P2) 各個(gè)擊破理論153得到這樣一個(gè)結(jié)論:模塊化可以降低解決問題的復(fù)雜度,從而降低軟件開發(fā)的工作量思考:是不是模塊劃分得越多越好呢?增加程序中的模塊數(shù)可以降低開發(fā)每個(gè)模塊的工作量同時(shí)卻增加了設(shè)計(jì)模塊接口的工作量154 模塊度成本或工作量模塊數(shù)量軟件總成本接口成本成本/模塊M最小成本區(qū)域圖4.7 模塊數(shù)與軟件開發(fā)成本155 2. 抽象抽象是人類在解決復(fù)雜問題時(shí)經(jīng)常采用的一種思維方式將現(xiàn)實(shí)世界中具有共性的一類事物的相似的、本質(zhì)的方面集中概括起來,而暫時(shí)忽略它們之間的細(xì)節(jié)差異156抽象(Abstraction)抽象原則應(yīng)用舉例Windows 一體化的I/O系統(tǒng)設(shè)計(jì)文件管理網(wǎng)絡(luò)管理設(shè)備管

49、理高速緩沖存儲(chǔ)器對(duì)虛擬文件的字節(jié)流,虛擬文件可為任何設(shè)備和實(shí)體抽象157 3. 信息隱蔽 信息隱蔽是指:模塊內(nèi)部的數(shù)據(jù)與過程,應(yīng)該對(duì)不需要了解這些數(shù)據(jù)與過程的模塊隱藏起來。只有那些為了完成軟件的總體功能而必需在模塊間交換的信息,才允許在模塊間進(jìn)行傳遞。模塊之間的信息傳遞只能通過合法的調(diào)用接口來實(shí)現(xiàn)。信息隱蔽對(duì)提高軟件的可讀性和可維護(hù)性都是非常重要的。158 4. 模塊獨(dú)立性 1) 耦合性 耦合性是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)部不同模塊間聯(lián)系緊密程度的度量指標(biāo)。模塊間的聯(lián)系越緊密,耦合性就越高,模塊的獨(dú)立性也就越低。模塊耦合性的高低主要取決于:模塊接口的復(fù)雜程度調(diào)用模塊的方式以及通過模塊接口的數(shù)據(jù)159無(wú)耦

50、合沒有依賴關(guān)系松散耦合有少量依賴關(guān)系緊密耦合有很多依賴關(guān)系160 (1) 數(shù)據(jù)耦合:兩個(gè)模塊之間僅通過模塊參數(shù)交換信息,且交換的信息全部為簡(jiǎn)單數(shù)據(jù)。數(shù)據(jù)耦合的耦合性最低。通常軟件中都包含有數(shù)據(jù)耦合。161數(shù)據(jù)耦合舉例開發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額162(2) 公共耦合:兩個(gè)或多個(gè)模塊通過引用公共數(shù)據(jù)相互聯(lián)系 程序中定義的全局變量,并在多個(gè)模塊中對(duì)全局變量進(jìn)行了引用。 公共耦合的復(fù)雜度隨著耦合的模塊個(gè)數(shù)的增加而顯著增加。在程序設(shè)計(jì)中,若兩個(gè)模塊間需要交換的數(shù)據(jù)較多,僅通過參數(shù)傳遞難以實(shí)現(xiàn)時(shí),可以考慮采用公共耦合完成,但一定注意盡量降低公共耦合的程度。163 一組模塊引用同一個(gè)公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)

51、區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指: 全局?jǐn)?shù)據(jù)結(jié)構(gòu) 共享通訊區(qū) 內(nèi)存公共覆蓋區(qū)等164公共耦合舉例公共數(shù)據(jù)區(qū)CB模塊A、B、C間存在錯(cuò)綜復(fù)雜的聯(lián)系165(1)軟件可理解性降低(2)診斷錯(cuò)誤困難(3)軟件可維護(hù)性差,(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無(wú)保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量!公共耦合存在的問題166(3) 控制耦合模塊之間交換的信息中包含有控制信息(盡管有時(shí)控制信息是以數(shù)據(jù)的形式出現(xiàn)的),則稱這種耦合為控制耦合控制耦合是中等程度的耦合,它會(huì)增加程序的復(fù)雜性167控制耦合舉例A計(jì)算平均分或最高分B平均/最高(控制信號(hào))成績(jī)讀入分?jǐn)?shù)輸出結(jié)果計(jì)算平均分計(jì)算最高分平均/最高?B168控制

52、耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴。去除模塊間控制耦合的方法:(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào) 用模塊中進(jìn)行(2)被調(diào)用模塊分解成若干單一功 能模塊169改控制耦合為數(shù)據(jù)耦合舉例A計(jì)算平均分B1平均成績(jī)最高成績(jī)計(jì)算最高分B2170(4) 內(nèi)容耦合: 一個(gè)模塊對(duì)另一模塊中的內(nèi)容(包括數(shù)據(jù)和程序段)進(jìn)行了直接的引用甚至修改,或通過非正常入口進(jìn)入到另一模塊內(nèi)部,或一個(gè)模塊具有多個(gè)入口,或兩個(gè)模塊共享一部分代碼,這種耦合為內(nèi)容耦合。 內(nèi)容耦合是所有耦合關(guān)系中程度最高的,會(huì)使因模塊間的聯(lián)系過于緊密而對(duì)后期的開發(fā)和維護(hù)工作帶來很大的麻煩。許多高級(jí)程序設(shè)計(jì)語(yǔ)言

53、在設(shè)計(jì)時(shí)就充分考慮到了內(nèi)容耦合的危害,因而在規(guī)定語(yǔ)法時(shí)就已經(jīng)杜絕了任何形式的內(nèi)容耦合。 171內(nèi)容耦合一模塊直接訪問另一模塊的內(nèi)部信息 (程序代碼或數(shù)據(jù))最不好的耦合形式 !ABAB模塊代碼重疊Entry1 Entry1 多入口模塊172模塊化設(shè)計(jì)的原則和目標(biāo) 耦合是影響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的重要因素。目標(biāo):建立模塊間耦合度盡可能松散的系統(tǒng)。173如何降低模塊間耦合度:1、盡量使用數(shù)據(jù)耦合 限制公共耦合的范圍 少用控制耦合 堅(jiān)決避免使用內(nèi)容耦合2、降低接口的復(fù)雜性1742) 內(nèi)聚性 對(duì)一個(gè)模塊內(nèi)部各個(gè)組成元素之間相互結(jié)合的緊密程度的度量指標(biāo)。 設(shè)計(jì)目標(biāo):高內(nèi)聚 (模塊在軟件過程中完成單一的任

54、務(wù))175模塊的內(nèi)聚性和耦合性:兩個(gè)相互對(duì)立且又密切相關(guān)的概念。是同一事物的兩個(gè)方面,模塊的高內(nèi)聚性往往就意味著模塊間的低耦合性。在進(jìn)行模塊化設(shè)計(jì)時(shí),耦合性和內(nèi)聚性都是必須考慮的重要指標(biāo)。但經(jīng)實(shí)踐證明,保證模塊的高內(nèi)聚性比低耦合性更為重要,在軟件設(shè)計(jì)時(shí)應(yīng)將更多的注意力集中在提高模塊的內(nèi)聚性上。176(1) 偶然內(nèi)聚: 一個(gè)模塊由多個(gè)完成不同任務(wù)的語(yǔ)句段組成,各語(yǔ)句段之間的聯(lián)系十分松散或根本沒有任何聯(lián)系,則稱此模塊的內(nèi)聚為偶然內(nèi)聚。偶然內(nèi)聚的模塊由于組成部分之間沒有實(shí)質(zhì)的聯(lián)系,因此難于理解和修改,會(huì)給軟件開發(fā)帶來很大的困擾。偶然內(nèi)聚是內(nèi)聚程度最低的一種,在軟件設(shè)計(jì)時(shí)應(yīng)盡量避免。177偶然內(nèi)聚 模

55、塊內(nèi)各部分間無(wú)聯(lián)系A(chǔ)BCMMOVE O TO RREAD FILE FMOVE S TO T模塊M中的三個(gè)語(yǔ)句沒有任何聯(lián)系缺點(diǎn):可理解性差, 可修改性差例:178(2) 邏輯內(nèi)聚 若一個(gè)模塊可實(shí)現(xiàn)多個(gè)邏輯上相同或相似的一類功能,則稱該模塊的內(nèi)聚為邏輯內(nèi)聚。 邏輯內(nèi)聚模塊的組成部分之間有一定的關(guān)系,但不同功能混在一起并公用模塊中的部分代碼,給修改帶來了一定的麻煩為了在調(diào)用模塊時(shí)能選擇執(zhí)行其中的某個(gè)功能,需要傳遞相應(yīng)的控制參數(shù),造成模塊間的控制耦合,降低模塊的獨(dú)立性。179邏輯內(nèi)聚模塊ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯E、F、G邏輯功能相似,組成新模塊EFG缺點(diǎn):增強(qiáng)了耦合程度

56、(控制耦合) 不易修改,效率低公用代碼段公用代碼段控制耦合180(3) 時(shí)間內(nèi)聚 一個(gè)模塊包含了需要在同一時(shí)間段中執(zhí)行的多個(gè)任務(wù),則稱該模塊的內(nèi)聚為時(shí)間內(nèi)聚。例如: 初始化系統(tǒng)模塊、 系統(tǒng)結(jié)束模塊、 緊急故障處理模塊等均是時(shí)間性聚合模塊.181時(shí)間內(nèi)聚模塊中的各個(gè)部分在時(shí)間上的聯(lián)系,其內(nèi)聚程度比邏輯內(nèi)聚高一些。往往會(huì)和其他相關(guān)模塊有著緊密的聯(lián)系,因而會(huì)造成耦合性的增加。182(4) 過程內(nèi)聚: 一個(gè)模塊中的各個(gè)部分相關(guān),并且必須按特定的次序執(zhí)行,則稱該模塊的內(nèi)聚為過程內(nèi)聚。 在結(jié)構(gòu)化程序中,通常采用程序流程圖作為設(shè)計(jì)軟件和確定模塊劃分的工具,因此,這樣得到的模塊往往具有過程內(nèi)聚的特性 183過

57、程內(nèi)聚模塊讀入成績(jī)單審查成績(jī)單統(tǒng)計(jì)成績(jī)打印成績(jī)讀入并審查成績(jī)單統(tǒng)計(jì)并打印成績(jī)單184(5) 通信內(nèi)聚: 一個(gè)模塊中的各個(gè)部分使用同一個(gè)輸入數(shù)據(jù)或產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱該模塊的內(nèi)聚為通信內(nèi)聚。 由于通信內(nèi)聚模塊中的各個(gè)部分都與某個(gè)共同的數(shù)據(jù)密切相關(guān),因此內(nèi)聚性高于前幾種內(nèi)聚。185通信內(nèi)聚模塊例產(chǎn)生工資報(bào)表計(jì)算平均工資職工工資記錄職工工資報(bào)表平均工資產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊186(6) 順序內(nèi)聚: 一個(gè)模塊中的各個(gè)部分都與同一個(gè)功能密切相關(guān),并且必須按照先后順序執(zhí)行(通常前一個(gè)部分的輸出數(shù)據(jù)就是后一個(gè)部分的輸入數(shù)據(jù)),則內(nèi)聚為順序內(nèi)聚。 根據(jù)數(shù)據(jù)流圖劃分出的模塊通常都是順序內(nèi)聚的模塊

58、。由于順序內(nèi)聚模塊中的各個(gè)部分在功能和執(zhí)行順序上都密切相關(guān),因此內(nèi)聚程度很高且易于理解。187讀入成績(jī)單統(tǒng)計(jì)及格學(xué)生人數(shù)及格學(xué)生人數(shù)計(jì)算學(xué)生及格率讀入并統(tǒng)計(jì)及格學(xué)生人數(shù)讀入并計(jì)算學(xué)生及格率順序內(nèi)聚188(7) 功能內(nèi)聚: 若一個(gè)模塊中各個(gè)組成部分構(gòu)成一個(gè)整體并共同完成一個(gè)單一的功能,該內(nèi)聚為功能內(nèi)聚。 由于功能內(nèi)聚模塊中的各個(gè)部分關(guān)系非常密切,構(gòu)成一個(gè)不可分割的整體,因此功能內(nèi)聚是最高程度的內(nèi)聚。189 內(nèi)聚性的排列 190內(nèi)聚與耦合密切相關(guān),同其它模塊強(qiáng)耦合的模塊意味者弱內(nèi)聚,強(qiáng)內(nèi)聚模塊意味著與其它模塊間松散耦合.設(shè)計(jì)目標(biāo):力爭(zhēng)強(qiáng)內(nèi)聚、弱耦合1913.3.2 自頂向下逐步細(xì)化1、自頂向下設(shè)計(jì)

59、與由底向上設(shè)計(jì)首先,對(duì)所設(shè)計(jì)的系統(tǒng)要有一個(gè)全面的理解;然后,從頂層開始,連續(xù)地逐層向下分解,直到便于掌握為止。目前,在設(shè)計(jì)大型軟件時(shí),幾乎都普遍采用自頂向下的設(shè)計(jì)方法。1922、逐步細(xì)化細(xì)化就是分解。強(qiáng)調(diào)分解的“逐步”性質(zhì),即每一步分解僅較其前一步增加“少量”細(xì)節(jié)。自頂向下逐步細(xì)化,把逐步細(xì)化當(dāng)作自頂向下設(shè)計(jì)的具體體現(xiàn)。1933.3.3 啟發(fā)式規(guī)則 1、改進(jìn)軟件結(jié)構(gòu),提高模塊獨(dú)立性。(降低模塊的耦合性,提高模塊的內(nèi)聚性) 2、保持適中的模塊規(guī)模。 3、模塊應(yīng)具有高扇入和適當(dāng)?shù)纳瘸觯卉浖Y(jié)構(gòu)中的深度和寬度不宜過大。 4、模塊的作用域應(yīng)處于其控制域范圍之內(nèi)。 5、盡量降低模塊的接口復(fù)雜度。 6、設(shè)

60、計(jì)單入口、單出口的模塊。 7、模塊功能應(yīng)該可以預(yù)測(cè)。1941、改進(jìn)軟件結(jié)構(gòu),提高模塊獨(dú)立性。(降低模塊的耦合性,提高模塊的內(nèi)聚性) 盡可能采用內(nèi)聚性高的模塊,最好實(shí)現(xiàn)功能內(nèi)聚;盡量只使用數(shù)據(jù)耦合,限制公共耦合的使用,避免控制耦合的使用,杜絕內(nèi)容耦合的出現(xiàn)。195 2、 保持適中的模塊規(guī)模。程序中模塊的規(guī)模過大,會(huì)降低程序的可讀性而模塊規(guī)模過小,會(huì)導(dǎo)致程序中的模塊數(shù)目過多,增加接口的復(fù)雜性。普遍的觀點(diǎn)是模塊中的語(yǔ)句數(shù)最好保持在10100之間。196 3、 模塊應(yīng)具有高扇入和適當(dāng)?shù)纳瘸?;軟件結(jié)構(gòu)中的深度和寬度不宜過大。(1)模塊的扇入和扇出在模塊調(diào)用中,某個(gè)模塊的上級(jí)模塊數(shù)被稱為該模塊的扇入;某個(gè)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論