課件—UML系統(tǒng)建模與分析設(shè)計(jì)(1)_第1頁(yè)
課件—UML系統(tǒng)建模與分析設(shè)計(jì)(1)_第2頁(yè)
課件—UML系統(tǒng)建模與分析設(shè)計(jì)(1)_第3頁(yè)
課件—UML系統(tǒng)建模與分析設(shè)計(jì)(1)_第4頁(yè)
課件—UML系統(tǒng)建模與分析設(shè)計(jì)(1)_第5頁(yè)
已閱讀5頁(yè),還剩100頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、UMLUML系統(tǒng)建模系統(tǒng)建模 與分析設(shè)計(jì)與分析設(shè)計(jì)1課程內(nèi)容課程內(nèi)容 v本課程闡述基于UML的面向?qū)ο蠓治雠c設(shè)計(jì)的基本概念,詳細(xì)介紹統(tǒng)一建模語(yǔ)言UML及其開(kāi)發(fā)過(guò)程,以一個(gè)集成案例貫穿可行性研究、需求分析、系統(tǒng)分析與系統(tǒng)設(shè)計(jì)的全過(guò)程。v使學(xué)生快速地掌握面向?qū)ο蟮南到y(tǒng)分析、設(shè)計(jì)方法。教學(xué)目的:教學(xué)目的:v全面掌握采用面向?qū)ο蟮能浖_(kāi)發(fā)分析設(shè)計(jì)的基本步驟與方法.v掌握軟件開(kāi)發(fā)工具ROSE的使用方法與技巧,使同學(xué)們能夠掌握采用面向?qū)ο蠹夹g(shù)獨(dú)立開(kāi)發(fā)一個(gè)軟件項(xiàng)目的過(guò)程和建模方法,對(duì)開(kāi)發(fā)面向?qū)ο筌浖?xiàng)目的過(guò)程有一個(gè)完整、全面地了解。 課程學(xué)時(shí)、考核方式課程學(xué)時(shí)、考核方式 v課程學(xué)時(shí)(36學(xué)時(shí))n課堂講授:課

2、堂講授:20學(xué)時(shí)學(xué)時(shí)n上機(jī):上機(jī): 16學(xué)時(shí)學(xué)時(shí)v考核方式分考試與報(bào)告和平時(shí)三部分。n考試考試: :閉卷考試閉卷考試 n報(bào)告報(bào)告: :課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告報(bào)告 每個(gè)同學(xué)期末上交一個(gè)完整的采用面向?qū)ο蠹夹g(shù)進(jìn)行每個(gè)同學(xué)期末上交一個(gè)完整的采用面向?qū)ο蠹夹g(shù)進(jìn)行軟件開(kāi)發(fā)的軟件開(kāi)發(fā)的課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告,根據(jù)報(bào)告的內(nèi)容給出報(bào)告,根據(jù)報(bào)告的內(nèi)容給出成績(jī)。成績(jī)。n平時(shí)平時(shí):出勤、作業(yè):出勤、作業(yè) 教材和參考書:教材和參考書:教材教材UML系統(tǒng)建模與分析設(shè)計(jì)系統(tǒng)建模與分析設(shè)計(jì)機(jī)械工業(yè)出版社機(jī)械工業(yè)出版社 刁成嘉刁成嘉UML基礎(chǔ)與基礎(chǔ)與Rose建模教程建模教程人民郵電出版社人民郵電出版社 蔡敏蔡敏UML和模式應(yīng)用

3、面向?qū)ο蠓治雠c設(shè)計(jì)導(dǎo)論和模式應(yīng)用面向?qū)ο蠓治雠c設(shè)計(jì)導(dǎo)論1版機(jī)械工版機(jī)械工業(yè)出版社業(yè)出版社 CraigLarman著著 姚淑珍譯姚淑珍譯參考書參考書UML系統(tǒng)建模與分析設(shè)計(jì)課程設(shè)計(jì)系統(tǒng)建模與分析設(shè)計(jì)課程設(shè)計(jì)機(jī)械工業(yè)出版社機(jī)械工業(yè)出版社 刁成嘉刁成嘉UML基礎(chǔ)與基礎(chǔ)與Rose建模案例建模案例(第第2版版)人民郵電出版社人民郵電出版社 吳吳建建過(guò)程過(guò)程表示法表示法工具工具 系統(tǒng)建模與分析設(shè)計(jì)是研究和應(yīng)用如何以系統(tǒng)化、規(guī)范化和可度量的方法開(kāi)發(fā)、運(yùn)行和維護(hù)軟件的一種層次化技術(shù)。包括過(guò)程、方法和工具三個(gè)要素。 過(guò)程:將用戶的需求轉(zhuǎn)化成有效的軟件解決方案的一系列活動(dòng)。許多軟件組織無(wú)法正確定義和控制這一過(guò)程,

4、但這恰恰是組織改進(jìn)的關(guān)鍵。 過(guò)程的好壞由結(jié)果狀態(tài)與預(yù)期狀態(tài)的差異決定,也就是目標(biāo)成果質(zhì)量的好壞。 軟件過(guò)程是為了獲得高質(zhì)量軟件產(chǎn)品所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。軟件過(guò)程必須科學(xué)、合理,才能開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品。 軟件過(guò)程又稱軟件生存周期過(guò)程,是軟件生存周期內(nèi)為達(dá)到一定目標(biāo)而必須實(shí)施的一系列相關(guān)過(guò)程的集合什么是什么是UML? ?統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)是描述、構(gòu)造和文檔化系統(tǒng)的語(yǔ)言。 作用: 建立軟件模型 建模語(yǔ)言: 提供交流的詞匯和規(guī)則 可視化: 通過(guò)標(biāo)準(zhǔn)圖符構(gòu)成圖形來(lái)描述模型 建模語(yǔ)言而非編程語(yǔ)言 通用標(biāo)準(zhǔn):

5、 成為軟件建模的標(biāo)準(zhǔn)語(yǔ)言,并且在其他領(lǐng)域也得到應(yīng)用。 如何學(xué)習(xí)如何學(xué)習(xí)UML?按照某種過(guò)程進(jìn)行分析、設(shè)計(jì);用設(shè)計(jì)原則和模式進(jìn)行更好的設(shè)計(jì);用UML表示法記錄、輔助“工具工具”:用:用UML來(lái)表達(dá)來(lái)表達(dá)OOA/DUML的意義就在于為的意義就在于為OOA/D的實(shí)踐規(guī)定了一致的表示法的實(shí)踐規(guī)定了一致的表示法方法方法:運(yùn)用:運(yùn)用OOA/D原則領(lǐng)域分析原則領(lǐng)域分析+職責(zé)分配職責(zé)分配過(guò)程過(guò)程:過(guò)程模型(活動(dòng)套路,開(kāi)發(fā)周期):過(guò)程模型(活動(dòng)套路,開(kāi)發(fā)周期)用例驅(qū)動(dòng),以體系結(jié)構(gòu)為中心,迭代增量式用例驅(qū)動(dòng),以體系結(jié)構(gòu)為中心,迭代增量式 vUML不是OOA/D,也不是方法,它僅僅只是一種圖形表示法v如果不掌握對(duì)象

6、思想,那么UML或任何case工具(如ROSE)將毫無(wú)意義v我們需要一種用于OOA/D的語(yǔ)言,這既是一種思考的工具,也是一種溝通的形式。因此,我們將在OOA/D中應(yīng)用UML。如何應(yīng)用如何應(yīng)用UML進(jìn)行進(jìn)行OOA/D?如何將如何將UML應(yīng)用于應(yīng)用于UP過(guò)程?過(guò)程?第一章第一章 系統(tǒng)建模與分析設(shè)計(jì)技術(shù)的演變系統(tǒng)建模與分析設(shè)計(jì)技術(shù)的演變 11本章目的:v理解軟件的基本概念和特點(diǎn)v了解軟件的發(fā)展過(guò)程及軟件開(kāi)發(fā)過(guò)程v了解軟件開(kāi)發(fā)的方法v掌握面向?qū)ο蠹夹g(shù)的基本概念及開(kāi)發(fā)過(guò)程v了解幾種典型的面向?qū)ο蠓椒?.1 1.1 軟件的概念、特點(diǎn)和分類軟件的概念、特點(diǎn)和分類121現(xiàn)代軟件的概念和特點(diǎn) (1)軟件規(guī)模大。

7、 (2)軟件開(kāi)發(fā)規(guī)范并趨于標(biāo)準(zhǔn)化。 (3)軟件開(kāi)發(fā)方法多,有大量的軟件工具支持。 (4)注重軟件開(kāi)發(fā)的管理。 (5)軟件維護(hù)相對(duì)過(guò)去容易得多。132軟件的分類(1)按軟件的功能劃分 系統(tǒng)軟件。 支撐軟件。 應(yīng)用軟件。(2)按軟件的規(guī)模劃分 微型軟件-不超過(guò)500行。 小型軟件-2000行左右 中型軟件-5000-50000行之間 大型甚至超大型軟件-多個(gè)研發(fā)小組,甚至是成百上千人組成的開(kāi)發(fā)團(tuán)隊(duì)。(3)按軟件工作方式劃分 實(shí)時(shí)處理軟件。 分時(shí)軟件。 交互式軟件。 批處理軟件。14(4)按軟件服務(wù)對(duì)象的范圍劃分 項(xiàng)目軟件。產(chǎn)品軟件。(5)按使用的頻度劃分一次性使用軟件。使用頻度較高的軟件。(6)按

8、軟件失效的影響程度劃分一般性軟件。關(guān)鍵性軟件。1.21.2軟件的發(fā)展與軟件工程軟件的發(fā)展與軟件工程15軟件工程的指導(dǎo)性原則: 變動(dòng)的軟件需求。穩(wěn)妥的設(shè)計(jì)方法。高效的軟件開(kāi)發(fā)支持技術(shù)。有效的過(guò)程管理。軟件工程具有里程碑意義的進(jìn)展:結(jié)構(gòu)化軟件開(kāi)發(fā)方法的工具。計(jì)算機(jī)輔助軟件工程(CASE)。面向?qū)ο笳Z(yǔ)言和方法成為主流的軟件開(kāi)發(fā)技術(shù)。v 軟件過(guò)程又稱軟件生存周期過(guò)程,是軟件生存周期內(nèi)為達(dá)到一定目標(biāo)而必須實(shí)施的一系列相關(guān)過(guò)程的集合。早期:立項(xiàng)、需求分析、設(shè)計(jì)、編碼、測(cè)試、交付、維護(hù)、退役v 軟件過(guò)程是人類制作產(chǎn)物的一系列活動(dòng),而過(guò)去的軟件工程師把產(chǎn)物和人分離,只研究產(chǎn)品過(guò)程及其質(zhì)量,假定人力、物力資源是

9、無(wú)限大、無(wú)限好。現(xiàn)在認(rèn)識(shí)到面對(duì)實(shí)際資源實(shí)施軟件過(guò)程學(xué),求相對(duì)最佳質(zhì)量才是有效的。又加入了:管理各種活動(dòng)、質(zhì)量保證環(huán)境基礎(chǔ)設(shè)施配置、文檔管理等。1.3 1.3 軟件開(kāi)發(fā)模型的演變和生存周期軟件開(kāi)發(fā)模型的演變和生存周期171.3.1 軟件開(kāi)發(fā)過(guò)程與模型的演變1. 瀑布模型(waterfall model)(1)慎重使用瀑布模型的情況:v 不能充分理解客戶需求或客戶需求有可能迅速發(fā)生化;v 系統(tǒng)太大太復(fù)雜,不能一次做完所有的事;v 事先擬采用的技術(shù)迅速發(fā)生變化;v 提供的資源有限;v 無(wú)法利用各開(kāi)發(fā)階段的某一中間產(chǎn)品。1. 1. 瀑布模型(瀑布模型(waterfall modelwaterfall

10、model)計(jì)劃階段計(jì)劃階段 問(wèn)題定義及可行性研究問(wèn)題定義及可行性研究1.3 1.3 軟件開(kāi)發(fā)模型的演變和生存周期軟件開(kāi)發(fā)模型的演變和生存周期1.3.1 軟件開(kāi)發(fā)過(guò)程與模型的演變瀑布模型的特點(diǎn)瀑布模型的特點(diǎn)v文檔驅(qū)動(dòng)的模型 v階段間具有順序性和依賴性v推遲實(shí)現(xiàn)的觀點(diǎn)v質(zhì)量保證的觀點(diǎn)瀑布模型的問(wèn)題瀑布模型的問(wèn)題v實(shí)際項(xiàng)目很少按照該模型給出的順序進(jìn)行v用戶常常一開(kāi)始難以清楚地給出所有需求v用戶必須有耐心等待一個(gè)漫長(zhǎng)無(wú)反饋的交付v開(kāi)發(fā)者常常被不必要地耽擱(1)慎重使用瀑布模型的情況:v 不能充分理解客戶需求或客戶需求有可能迅速發(fā)生化;v 系統(tǒng)太大太復(fù)雜,不能一次做完所有的事;v 事先擬采用的技術(shù)迅速

11、發(fā)生變化;v 提供的資源有限;v 無(wú)法利用各開(kāi)發(fā)階段的某一中間產(chǎn)品。(2)使用瀑布模型的情況:v 系統(tǒng)所有的功能、性能要求客戶可以一次性準(zhǔn)確交付時(shí);v 必須是首次開(kāi)發(fā)的新系統(tǒng)并且淘汰全部老系統(tǒng)時(shí)。2. 漸增模型(incremental model)由一組有計(jì)劃的、循環(huán)漸增的、不斷改進(jìn)的過(guò)程版本組成。各個(gè)中間版本可以并行開(kāi)發(fā)。v 例如,使用增量模型開(kāi)發(fā)字處理軟件n基本的文件管理、編輯和文檔生成功能。n更完善的編輯和文檔生成能力。n實(shí)現(xiàn)拼寫和文法檢查功能。n完成高級(jí)的頁(yè)面布局功能。v 第一個(gè)增量往往是核心產(chǎn)品v 每一個(gè)增量均發(fā)布一個(gè)可操作產(chǎn)品v 早期的增量是最終產(chǎn)品的“可拆卸”版本24(1)慎重考

12、慮使用漸增模型的情況:v 不能充分理解客戶需求或客戶需求有可能迅速發(fā)生變化;v 事先擬采用的技術(shù)迅速發(fā)生變化;v 客戶突然提出一些新的功能需求;v 長(zhǎng)時(shí)期內(nèi)僅有有限的資源保證(開(kāi)發(fā)人員和資金)。25使用漸增模型的情況:v 需要在盡短的時(shí)間內(nèi)得到系統(tǒng)基本功能的演示或使用;v 各版本都有中間階段產(chǎn)品可提供使用;v 系統(tǒng)可以被自然地分割成漸增的模式;v 開(kāi)發(fā)人員與資金可以逐步增加。263. 演化模型(evolutionary model)演化模型也稱為原型(prototype)法模型。v快速建立起來(lái)的可以在計(jì)算機(jī)上運(yùn)行的程序,它所能完成的功能往往是最終產(chǎn)品能完成的功能的一個(gè)子集。 原型模型的適用情況

13、v用戶定義了一組一般性目標(biāo),但不能標(biāo)識(shí)出詳細(xì)的輸入、處理及輸出需求;v開(kāi)發(fā)者可能不能確定算法的有效性、操作系統(tǒng)的適應(yīng)性或人機(jī)交互的形式;v使用演化模型時(shí)應(yīng)注意 演化模型也是通過(guò)系統(tǒng)各個(gè)可執(zhí)行的中間版本以漸增的形式來(lái)開(kāi)發(fā)系統(tǒng)的,但是客戶需求可以分步逐漸了解,不用在初始時(shí)就確定。v在模型中,可以預(yù)先定義一部分客戶需求,然后在每個(gè)后繼的中間版本中再逐步增加需求,一點(diǎn)點(diǎn)完善。v在開(kāi)發(fā)每個(gè)中間版本時(shí),開(kāi)發(fā)過(guò)程中的活動(dòng)和任務(wù)可以順序地或部分重疊平行地被加入到這些中間版本中。4. 螺旋模型(spiral model)需求分析驗(yàn)證規(guī)格說(shuō)明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測(cè)試綜合測(cè)試維護(hù)變化的需求驗(yàn)證風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)

14、險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析螺旋模型螺旋模型-簡(jiǎn)化:使用原型及其他方法來(lái)盡量降低風(fēng)險(xiǎn)。簡(jiǎn)化:使用原型及其他方法來(lái)盡量降低風(fēng)險(xiǎn)。螺螺旋旋模模型型決定目標(biāo)、決定目標(biāo)、方案和限制方案和限制評(píng)價(jià)方案、評(píng)價(jià)方案、識(shí)別風(fēng)險(xiǎn)、識(shí)別風(fēng)險(xiǎn)、弱化風(fēng)險(xiǎn)弱化風(fēng)險(xiǎn)開(kāi)發(fā)、驗(yàn)證、開(kāi)發(fā)、驗(yàn)證、下一級(jí)產(chǎn)品下一級(jí)產(chǎn)品 計(jì)劃下一階段計(jì)劃下一階段集成測(cè)試螺旋模型將螺旋模型將瀑布模型與快速原形瀑布模型與快速原形模型結(jié)合起來(lái),并且加入兩種模型均忽略了的風(fēng)險(xiǎn)分模型結(jié)合起來(lái),并且加入兩種模型均忽略了的風(fēng)險(xiǎn)分析。螺旋模型沿著螺線旋轉(zhuǎn),自內(nèi)向外每旋轉(zhuǎn)一圈便開(kāi)發(fā)出更完善的一個(gè)新版本。析。螺旋模型沿著螺線旋轉(zhuǎn),自內(nèi)向外每旋轉(zhuǎn)一圈便開(kāi)發(fā)出更完善的一個(gè)新版本

15、。 v優(yōu)點(diǎn)n對(duì)可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開(kāi)發(fā)的一個(gè)重要目標(biāo);n減少了過(guò)多測(cè)試或測(cè)試不足;n維護(hù)和開(kāi)發(fā)之間并沒(méi)有本質(zhì)區(qū)別。v特點(diǎn)n風(fēng)險(xiǎn)驅(qū)動(dòng)的v主要適用于內(nèi)部開(kāi)發(fā)的大規(guī)模軟件項(xiàng)目325 . 智能模型(intelligent model)6.RUPv現(xiàn)在軟件產(chǎn)業(yè)界普遍認(rèn)為,開(kāi)發(fā)復(fù)雜軟件項(xiàng)目必須采用基于UML的、以構(gòu)架為中心、用例驅(qū)動(dòng)與風(fēng)險(xiǎn)驅(qū)動(dòng)相結(jié)合的迭代式增量開(kāi)發(fā)過(guò)程,他是世界公認(rèn)的開(kāi)發(fā)復(fù)雜軟件項(xiàng)目的最好過(guò)程,已經(jīng)成為軟件界的“圣經(jīng)”。這一開(kāi)發(fā)過(guò)程目前已經(jīng)穩(wěn)定、成熟。v這就是:RUP (Rational Unified Process),統(tǒng)一軟件開(kāi)發(fā)過(guò)程

16、 341.3.2 軟件開(kāi)發(fā)模型的選擇 要綜合考慮以下幾個(gè)因素: (1)軟件規(guī)模 (2)軟件類型 n系統(tǒng)軟件的開(kāi)發(fā)。系統(tǒng)軟件的開(kāi)發(fā)。n實(shí)時(shí)軟件的開(kāi)發(fā)。實(shí)時(shí)軟件的開(kāi)發(fā)。n商業(yè)應(yīng)用軟件的開(kāi)發(fā)。商業(yè)應(yīng)用軟件的開(kāi)發(fā)。n嵌入式軟件的開(kāi)發(fā)。嵌入式軟件的開(kāi)發(fā)。n人工智能軟件的開(kāi)發(fā)。人工智能軟件的開(kāi)發(fā)。35(3)軟件質(zhì)量要求(4)交付工期(5)客戶需求明確度(6)投資(7)可復(fù)用性(8)開(kāi)發(fā)者掌握的資源361.3.3 軟件生存周期37軟件定義(1)軟件系統(tǒng)的可行性研究-確定開(kāi)發(fā)軟件開(kāi)發(fā)系統(tǒng)的總目標(biāo),給出功能、性能、可靠性和接口等方面的要求。 1)經(jīng)濟(jì)可行性研究-成本效益分析。 2)技術(shù)可行性研究-技術(shù)風(fēng)險(xiǎn)評(píng)價(jià)。

17、 3)法律可行性研究-可能導(dǎo)致的任何侵權(quán)、社會(huì)安全。 4)方案的選擇-評(píng)價(jià)候選方案。 形成可行性研究報(bào)告 項(xiàng)目背景、管理概要、候選方案、系統(tǒng)描述、經(jīng)濟(jì)可行性、法律可行性,用戶使用可行性等。(2)需求分析-為設(shè)計(jì)做準(zhǔn)備 ,即對(duì)開(kāi)發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)的定義。給出軟件需求說(shuō)明書和系統(tǒng)功能說(shuō)明書。 1)任務(wù)-確定待開(kāi)發(fā)軟件的功能,性能需求和運(yùn)行環(huán)境約束,編制軟件需求規(guī)格說(shuō)明、軟件系統(tǒng)的確認(rèn)測(cè)試準(zhǔn)則和用戶手冊(cè)概要。 軟件功能需求: 軟件性能需求: 軟件系統(tǒng)運(yùn)行環(huán)境: 2)按需求建模。 3)軟件需求規(guī)格說(shuō)明(Software Requirements Specification,簡(jiǎn)稱SRS)

18、-指明軟件系統(tǒng)的功能需求、性能需求、接口需求、設(shè)計(jì)需求、基本結(jié)構(gòu)以及開(kāi)發(fā)標(biāo)準(zhǔn)和驗(yàn)收原則。39軟件開(kāi)發(fā)軟件開(kāi)發(fā)軟件開(kāi)發(fā)階段:概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)、組裝測(cè)試和確認(rèn)測(cè)試五個(gè)階段組成。軟件開(kāi)發(fā)是軟件需求規(guī)格說(shuō)明由抽象到具體并逐步生成軟件的過(guò)程。(1)概要設(shè)計(jì)-確立模塊和需求的對(duì)應(yīng)建立系統(tǒng)總體結(jié)構(gòu)和各模塊之間的關(guān)系;定義各個(gè)功能模塊的接口;設(shè)計(jì)全局?jǐn)?shù)據(jù)庫(kù)或數(shù)據(jù)結(jié)構(gòu);規(guī)定設(shè)計(jì)約束;制定組裝測(cè)試計(jì)劃。(2)詳細(xì)設(shè)計(jì)對(duì)概要設(shè)計(jì)模塊進(jìn)行細(xì)化,形成可編程的程序模塊;建立文檔資料。40(3)實(shí)現(xiàn)選擇合適的編程語(yǔ)言;制定測(cè)試方案、測(cè)試案例;保存文檔資料。(4)組裝測(cè)試(5)確認(rèn)測(cè)試3軟件使用、維護(hù)和更新?lián)Q代軟件使

19、用、維護(hù)和更新?lián)Q代(1)軟件使用(2)系統(tǒng)維護(hù)(3)系統(tǒng)更新?lián)Q代1.4 1.4 軟件開(kāi)發(fā)方法簡(jiǎn)介軟件開(kāi)發(fā)方法簡(jiǎn)介42程序設(shè)計(jì)方法:1. 結(jié)構(gòu)化程序設(shè)計(jì)方法其控制結(jié)構(gòu)僅由順序、選擇與重復(fù)等有限的基本控制結(jié)構(gòu)表示。2. 模塊化程序設(shè)計(jì)方法模塊之間的接口應(yīng)盡可能簡(jiǎn)明清晰: 單獨(dú)模塊的修改不影響其它模塊的功能;模塊化應(yīng)具有可修改性、易讀性和可驗(yàn)證性。3. 面向?qū)ο蟪绦蛟O(shè)計(jì)方法1.4.1 結(jié)構(gòu)化軟件開(kāi)發(fā)方法v是現(xiàn)有的軟件開(kāi)發(fā)方法中最成熟,應(yīng)用最廣泛的方法,主要特點(diǎn)是快速,自然和方便。v結(jié)構(gòu)化方法總的指導(dǎo)思想自頂向下、逐步求精。它的基本原則是功能的分解與抽象。 結(jié)構(gòu)化程序設(shè)計(jì)方法 SP法(Structur

20、ed Program) 結(jié)構(gòu)化設(shè)計(jì)方法 SD法(Structured Design) 結(jié)構(gòu)化分析方法 SA法(Structured Analysis) SA,SD,SP 法相互銜接,形成了一整套開(kāi)發(fā)方法。44 1結(jié)構(gòu)化分析的步驟 構(gòu)造數(shù)據(jù)流模型。構(gòu)建控制流模型。生成數(shù)據(jù)字典(DD)。生成可選方案,建立需求規(guī)約。452結(jié)構(gòu)化設(shè)計(jì)步驟v首先研究、分析和審查數(shù)據(jù)流圖。從軟件的需求規(guī)格說(shuō)明中弄清數(shù)據(jù)流加工的過(guò)程。v然后根據(jù)數(shù)據(jù)流圖決定問(wèn)題的類型。v由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。v優(yōu)化軟件結(jié)構(gòu)。v描述模塊接口。v修改和補(bǔ)充數(shù)據(jù)詞典。v制定測(cè)試計(jì)劃。1.4.2 模塊化軟件開(kāi)發(fā)方法 (1)模塊可分解性。

21、(2)模塊可組裝性。(3)模塊可理解性。(4)模塊連續(xù)性。(5)模塊保護(hù)。471.4.3 面向數(shù)據(jù)結(jié)構(gòu)軟件開(kāi)發(fā)方法1建立JSD( Jackson System Development)的系統(tǒng)進(jìn)程模型2JSD方法的步驟(1)JSD需求分析步驟標(biāo)識(shí)系統(tǒng)中的實(shí)體與相應(yīng)動(dòng)作;生成實(shí)體結(jié)構(gòu)圖;初建系統(tǒng)模型。(2)JSD系統(tǒng)設(shè)計(jì)步驟擴(kuò)充功能過(guò)程。系統(tǒng)定時(shí)。系統(tǒng)實(shí)現(xiàn)。48面向數(shù)據(jù)結(jié)構(gòu)的開(kāi)發(fā)方法的特點(diǎn):v將分析結(jié)果作為設(shè)計(jì)基礎(chǔ),無(wú)明顯分界;v都必須標(biāo)識(shí)關(guān)鍵實(shí)體和動(dòng)作;v信息具有層次性;v提供一組將層次化的數(shù)據(jù)結(jié)構(gòu)映射到程序結(jié)構(gòu)的步驟;v數(shù)據(jù)結(jié)構(gòu)由順序、選擇和重復(fù)3種構(gòu)造成分表示。491.4.3 面向?qū)ο筌浖_(kāi)

22、發(fā)方法面向?qū)ο蠓椒ǖ囊饬x:(1)一種新的思考方式。(2)將數(shù)據(jù)和行為結(jié)合成為對(duì)象。(3)核心是封裝。(4)面向?qū)ο蠓椒ń⒌幕A(chǔ)是:n軟件工程概念;軟件工程概念;n計(jì)算機(jī)科學(xué)概念;計(jì)算機(jī)科學(xué)概念;n工程管理;工程管理;n數(shù)據(jù)庫(kù)信息模型;數(shù)據(jù)庫(kù)信息模型;n傳統(tǒng)軟件開(kāi)發(fā)方法傳統(tǒng)軟件開(kāi)發(fā)方法。50面向?qū)ο蠓椒ㄓ袔资N,綜合起來(lái),其基本觀點(diǎn)如下:v現(xiàn)實(shí)客觀世界由對(duì)象組成。v相同的數(shù)據(jù)和操作的對(duì)象歸并為類。v類可以繼承。v對(duì)象之間通過(guò)消息進(jìn)行聯(lián)系。面向?qū)ο?= 對(duì)象 + 類 + 繼承 + 通信511.4.4 軟件開(kāi)發(fā)方法的評(píng)價(jià)與選擇綜合考慮以下幾方面因素:v人員素質(zhì)。v時(shí)間進(jìn)度。v掌握資源。v可行性。v

23、領(lǐng)域知識(shí)。從四個(gè)方面評(píng)價(jià):v技術(shù)特征。v使用特征。v管理特征。v經(jīng)濟(jì)特征。1.5 1.5 面向?qū)ο筌浖_(kāi)發(fā)方法簡(jiǎn)介面向?qū)ο筌浖_(kāi)發(fā)方法簡(jiǎn)介52特點(diǎn):(1)使人們更好地認(rèn)識(shí)客觀世界(2)能很好地適應(yīng)需求變化(3)容易實(shí)現(xiàn)軟件復(fù)用(4)系統(tǒng)易于維護(hù)和修改1.5.1 1.5.1 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍罘庋b性、繼承性和多態(tài)性v對(duì)象v類v抽象v封裝v消息傳遞v繼承v多態(tài)性1.重要的面向?qū)ο蟾拍钪匾拿嫦驅(qū)ο蟾拍铑惡蛯?duì)象類和對(duì)象v在客觀世界中,有一些對(duì)象具有相同的特征,將在客觀世界中,有一些對(duì)象具有相同的特征,將他們稱之為同類對(duì)象。于是出現(xiàn)了他們稱之為同類對(duì)象。于是出現(xiàn)了類類的概念。的概念。

24、“面向?qū)ο竺嫦驅(qū)ο蟆边\(yùn)用到軟件中運(yùn)用到軟件中面向?qū)ο筌浖こ堂嫦驅(qū)ο筌浖こ蹋∣OA/OOD/OOP)v利用這種利用這種“面向?qū)ο竺嫦驅(qū)ο蟆闭J(rèn)知的世界觀來(lái)進(jìn)行軟件認(rèn)知的世界觀來(lái)進(jìn)行軟件開(kāi)發(fā)。程序由類和對(duì)象組成。開(kāi)發(fā)。程序由類和對(duì)象組成。class TreeTree aTree = new Tree();類的作用:類的作用:1. 分類分類:用于區(qū)分不同事物。用于區(qū)分不同事物。2. 是創(chuàng)建對(duì)象的模板:產(chǎn)生對(duì)象。是創(chuàng)建對(duì)象的模板:產(chǎn)生對(duì)象。2.怎么得到類和對(duì)象?怎么得到類和對(duì)象?抽象抽象v把事物共同點(diǎn)抽取出來(lái)把事物共同點(diǎn)抽取出來(lái),以統(tǒng)一的方式進(jìn)行概要描以統(tǒng)一的方式進(jìn)行概要描述的過(guò)程;述的過(guò)程;v從許

25、多事物中舍棄個(gè)別的、非本質(zhì)的特征,抽取從許多事物中舍棄個(gè)別的、非本質(zhì)的特征,抽取共同的、本質(zhì)性共同的、本質(zhì)性的特征;的特征; v過(guò)濾掉對(duì)象的一部分特征和操作直到只剩下過(guò)濾掉對(duì)象的一部分特征和操作直到只剩下你所你所需要的需要的屬性和操作。屬性和操作。是不是現(xiàn)實(shí)世界中類的所有屬性和方是不是現(xiàn)實(shí)世界中類的所有屬性和方法都需要在系統(tǒng)中進(jìn)行抽象呢?法都需要在系統(tǒng)中進(jìn)行抽象呢?v 當(dāng)然不是啦!作為一個(gè)分析人員,要根據(jù)用戶實(shí)際的業(yè)務(wù)當(dāng)然不是啦!作為一個(gè)分析人員,要根據(jù)用戶實(shí)際的業(yè)務(wù)情況進(jìn)行選擇。情況進(jìn)行選擇。v 例如:在例如:在課堂考勤系統(tǒng)課堂考勤系統(tǒng)中,教師類只需要有姓名、職中,教師類只需要有姓名、職稱、

26、性別這些屬性,因?yàn)檫@些是用戶需要的。稱、性別這些屬性,因?yàn)檫@些是用戶需要的。v 而在而在教職工人事管理系統(tǒng)教職工人事管理系統(tǒng)中,教師類就需要姓名、出中,教師類就需要姓名、出生年月、入職時(shí)間、所屬單位、職稱、性別、婚姻狀況等生年月、入職時(shí)間、所屬單位、職稱、性別、婚姻狀況等屬性。屬性。1.從許多事物中舍棄個(gè)別的、非本質(zhì)的特征,抽取共同的、本質(zhì)性的特征; 2.過(guò)濾掉對(duì)象的一部分特征和操作直到只剩下你所需要的屬性和操作。v引入問(wèn)題:現(xiàn)在讓我們來(lái)編寫一個(gè)引入問(wèn)題:現(xiàn)在讓我們來(lái)編寫一個(gè)java小程序,小程序,實(shí)現(xiàn)在命令行模式下輸出以下形式的著名詩(shī)詞實(shí)現(xiàn)在命令行模式下輸出以下形式的著名詩(shī)詞春曉春曉,你會(huì)怎

27、么做?,你會(huì)怎么做?* 春曉* 春眠不覺(jué)曉,* 處處聞啼鳥(niǎo)。* 夜來(lái)風(fēng)雨聲,* 花落知多少。3. 3. 信息隱蔽和局部化信息隱蔽和局部化封裝封裝讓對(duì)象細(xì)節(jié)受到保護(hù)讓對(duì)象細(xì)節(jié)受到保護(hù)封裝封裝你可能會(huì)這么寫你可能會(huì)這么寫1. public class ChunXiao12. public static void main(String args)3. System.out.println(* 春曉春曉);4. System.out.println(* 春眠不覺(jué)曉,春眠不覺(jué)曉,);5. System.out.println(* 處處聞啼鳥(niǎo)。處處聞啼鳥(niǎo)。);6. System.out.println(

28、* 夜來(lái)風(fēng)雨聲,夜來(lái)風(fēng)雨聲,);7. System.out.println(* 花落知多少?;渲嗌佟?;8. 9. 很簡(jiǎn)單,但是有時(shí)候并不是越簡(jiǎn)單越好!現(xiàn)在,如果想把*改變?yōu)?,該怎么辦?改5次嗎? 【代碼】 Chunxiao1.java你可能還會(huì)這么寫你可能還會(huì)這么寫v public class ChunXiao2v public String buildStar()vreturn *;v v public static void main(String args)v ChunXiao2 c=new ChunXiao2();v System.out.println(c.buildStar

29、()+ 春曉春曉);v System.out.println(c.buildStar()+ 春眠不覺(jué)曉,春眠不覺(jué)曉,);v System.out.println(c.buildStar()+ 處處聞啼鳥(niǎo)。處處聞啼鳥(niǎo)。);v System.out.println(c.buildStar()+ 夜來(lái)風(fēng)雨聲,夜來(lái)風(fēng)雨聲,);v System.out.println(c.buildStar()+ 花落知多少?;渲嗌佟?;v v 利用方法buildStar()來(lái)產(chǎn)生,這樣每次只用修改一個(gè)地方了我們把產(chǎn)生的功能封裝封裝了起來(lái),對(duì)外界使用者來(lái)講,不需要知道方法內(nèi)部的細(xì)節(jié),只需要知道調(diào)用這個(gè)方法可以產(chǎn)生就

30、行了。【代碼】 Chunxiao2.java讓對(duì)象細(xì)節(jié)受到保護(hù)讓對(duì)象細(xì)節(jié)受到保護(hù)封裝封裝v當(dāng)一個(gè)對(duì)象執(zhí)行自己的操作時(shí)。它對(duì)外界隱藏了當(dāng)一個(gè)對(duì)象執(zhí)行自己的操作時(shí)。它對(duì)外界隱藏了操作的細(xì)節(jié)。操作的細(xì)節(jié)。封裝可以提高重用性,封裝可以提高重用性,并且讓程序易于維護(hù)并且讓程序易于維護(hù)封裝的程度問(wèn)題封裝的程度問(wèn)題v還是春曉。剛才我們將產(chǎn)生*的方法寫在了類ChunXiao2中,根據(jù)前面所講,類中的方法代表的是類的操作,而產(chǎn)生*和春曉沒(méi)有直接關(guān)系,這樣的封裝看起來(lái)好像不合理,怎么改進(jìn)一下呢 ?StarFactoryStarFactoryString build()String build()ChunXiao3

31、【代碼】StarFactory.java Chunxiao3.javav public class StarFactoryvpublic String build()vreturn *;vv v public class ChunXiao3vpublic static void main(String args)vvStarFactory strFac = new StarFactory();vSystem.out.println(strFac.build()+ 春曉春曉);System.out.println(strFac.build()+ 春眠不覺(jué)曉,春眠不覺(jué)曉,);System.out.

32、println(strFac.build()+ 處處聞啼鳥(niǎo)。處處聞啼鳥(niǎo)。);System.out.println(strFac.build()+ 夜來(lái)風(fēng)雨聲,夜來(lái)風(fēng)雨聲,);System.out.println(strFac.build()+ 花落知多少。花落知多少。);v 【代碼】StarFactory.java Chunxiao3.java封裝的不同,重用也不同了封裝的不同,重用也不同了v現(xiàn)在我們不僅可以在現(xiàn)在我們不僅可以在春曉春曉里面用里面用*了,還可了,還可以在以在靜夜思靜夜思 里面用里面用*了了StarFactoryStarFactoryString build()String bu

33、ild()ChunXiao3JingYeSi【代碼】 JingYeSi.javav public class JingYeSivpublic static void main(String args)vvStarFactory strFac = new StarFactory();vSystem.out.println(strFac.build()+ 靜夜思靜夜思);vSystem.out.println(strFac.build()+ 床前明月光,床前明月光,);vSystem.out.println(strFac.build()+ 疑是地上霜。疑是地上霜。);vSystem.out.println(strFac.build()+ 舉頭望明月,舉頭望明月,);vSystem.out.println(strFac.build()+ 低

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論