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

下載本文檔

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

文檔簡(jiǎn)介

1、第1章 軟件工程與面向?qū)ο箝_發(fā)方法學(xué)習(xí)目標(biāo)知識(shí)目標(biāo)技能目標(biāo) 了解軟件的概念。 了解軟件危機(jī)產(chǎn)生的原因。 掌握軟件工程的概念和基本原理。 了解軟件開發(fā)模型與方法。 掌握面向?qū)ο蟮幕靖拍睢?了解面向?qū)ο蟮牡湫烷_發(fā)方法。 了解可行性分析的內(nèi)容。 了解可行性研究報(bào)告的書寫格式。 能夠進(jìn)行系統(tǒng)可行性分析。 能夠撰寫可行性研究報(bào)告。知識(shí)結(jié)構(gòu) 1978年,春天的Boston 一名26歲的Harvard University Business School MBA Student 正在進(jìn)行案例分析直到深夜。在其他學(xué)生用紙計(jì)算它們的財(cái)務(wù)數(shù)據(jù)時(shí),這名擁有MIT計(jì)算機(jī)學(xué)位的學(xué)生已經(jīng)在一臺(tái)DEC小型機(jī)上進(jìn)行計(jì)算以節(jié)

2、省時(shí)間。不過,工作進(jìn)展還是很慢。一旦他要在計(jì)算上做個(gè)小小的改變,他就得重寫整個(gè)程序,從而需要在DEC機(jī)上花費(fèi)更多的時(shí)間。這名MBA學(xué)生覺得應(yīng)該有個(gè)更好的辦法。他同一個(gè)來自MIT的好朋友一起,花了好幾個(gè)月的時(shí)間在他們的“實(shí)驗(yàn)室”中尋求答案。 這兩位年輕的革新家就是Dan Bricklin & Bob Frankston。 他們的答案就是電子表格。數(shù)字可以用行和列組成的矩陣顯示在計(jì)算機(jī)屏幕上。一旦某個(gè)數(shù)字變化了,其他相關(guān)的數(shù)字將自動(dòng)更新。他們將產(chǎn)品命名為VisiCalc。 1979年,引入到Apple型計(jì)算機(jī)。 1996年,IEEE 表彰Bricklin 為“我們今日所知的個(gè)人計(jì)算機(jī)市場(chǎng)興起的催化

3、劑”。Business Weekly “軟件:新的驅(qū)動(dòng)力”21世紀(jì)帶翼的軟件公路上的代碼健康軟件當(dāng)您啟動(dòng)BMW7系列時(shí),您激活了20兆字節(jié)的計(jì)算能力這比阿波羅11號(hào)的登月之旅中所用的還要多。新冠肺炎中軟件的應(yīng)用軟件已經(jīng)成為一種驅(qū)動(dòng)力進(jìn)行商業(yè)活動(dòng)的引擎現(xiàn)代科學(xué)研究和工程問題解決的基礎(chǔ)區(qū)分現(xiàn)代產(chǎn)品和服務(wù)的關(guān)鍵因素現(xiàn)代社會(huì)中不可缺少的應(yīng)用于:交通、醫(yī)藥、通訊、軍事、娛樂、辦公1.1 軟件發(fā)展與軟件工程1.2 軟件開發(fā)模型與方法1.3 面向?qū)ο箝_發(fā)方法概述1.5 面向?qū)ο筌浖_發(fā)1.4 典型的面向?qū)ο箝_發(fā)方法小結(jié)目 錄1.6 面向?qū)ο箝_發(fā)方法的特點(diǎn)1.7軟件工程的最新發(fā)展動(dòng)向1.1 軟件的概念1.1.

4、1 軟件的發(fā)展與特征1.1.2 軟件危機(jī)與軟件工程1.1.3 軟件的分類1.1.1 軟件的發(fā)展與特征軟件(software)是計(jì)算機(jī)系統(tǒng)中與硬件(hardware)相互依存的另一部分 是一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。Software = Program + Data + Document軟 件程序、軟件與軟件產(chǎn)品獨(dú)唱-小合唱-合唱-萬人大合唱 | | |簡(jiǎn)單程序 較復(fù)雜程序 軟件軟件包括程序:按事先設(shè)計(jì)的功能和性能需求執(zhí)行的指令序列數(shù)據(jù):是程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)文檔:與程序開發(fā)、維護(hù)和使用有關(guān)的圖文材料 軟件 軟件特征軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體軟件的生產(chǎn)與

5、硬件不同在軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損,老化問題磨合調(diào)整磨損用壞硬件失效率曲線時(shí)間失效率修改點(diǎn)實(shí)際曲線理想曲線時(shí)間失效率軟件失效率曲線軟件 軟件特征軟件的成本相當(dāng)昂貴軟件技術(shù)的發(fā)展落后于需求時(shí)間軟件復(fù)雜性軟件需求差距軟件技術(shù)硬、軟件成本比例的變化年份成本%軟件1950197019851995硬件4.軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴。5.軟件的開發(fā)至今尚未完全擺脫手工業(yè)的開發(fā)方法。6.軟件是復(fù)雜的,人類能夠創(chuàng)造的最復(fù)雜的產(chǎn)物是計(jì)算機(jī)軟件。7.軟件成本相當(dāng)昂貴。8.相當(dāng)多的軟件工作涉及到社會(huì)因素。軟件 軟件特征軟件 軟件的發(fā)展第一階段面向批處

6、理有限的分布自定義軟件第二階段多用戶實(shí)時(shí)數(shù)據(jù)庫軟件產(chǎn)品第三階段分布式系統(tǒng)嵌入“智能”低成本硬件消費(fèi)者的影響第四階段強(qiáng)大的桌面系統(tǒng)面向?qū)ο蠹夹g(shù)專家系統(tǒng)人工神經(jīng)網(wǎng)絡(luò)并行計(jì)算網(wǎng)路計(jì)算機(jī)2000195019601970198019901960年代出現(xiàn)了軟件危機(jī)軟件工程被正式提出開始注重程序結(jié)構(gòu)的研究程序設(shè)計(jì)語言和編譯系統(tǒng)得到應(yīng)用1970年代程序設(shè)計(jì)方法學(xué)成為研究熱點(diǎn)出現(xiàn)了結(jié)構(gòu)化分析和設(shè)計(jì)方法1980年代軟件開發(fā)方法學(xué)成為研究熱點(diǎn)CASE工具和環(huán)境的研制成為熱點(diǎn)面向?qū)ο蠹夹g(shù)開始出現(xiàn)并逐步流行1990年代軟件復(fù)用和構(gòu)件技術(shù)受到關(guān)注軟件復(fù)用和軟件構(gòu)件技術(shù)被視為解決軟件危機(jī)的一條現(xiàn)實(shí)可行途徑基于構(gòu)件的軟件開發(fā)

7、方法成為主流技術(shù)之一18軟件工程技術(shù)呈多線、并行、交叉發(fā)展每個(gè)線路都有各自的里程碑過程工具軟件開發(fā)工具軟件管理工具軟件工程環(huán)境開放的軟件工程環(huán)境瀑布模型ISO 9000 (ISO9000-3軟件開發(fā)企業(yè)實(shí)施指南 )CMM(組織)CMMI(集成)PSP(個(gè)體)TSP(團(tuán)隊(duì))軟件復(fù)用過程時(shí)間19701980199020002010模型面向?qū)ο笾虚g件構(gòu)件體系結(jié)構(gòu)AspectSOA結(jié)構(gòu)化軟件 軟件的特征第一階段程序設(shè)計(jì)第二階段軟件設(shè)計(jì)第三階段傳統(tǒng)軟件工程第四階段現(xiàn)代軟件工程 程序設(shè)計(jì)面向批處理; 個(gè)體手工生產(chǎn)方式自定義軟件; 主要是匯編語言和機(jī)器語言; 無文檔資料(除程序清單外),主要用于科學(xué)計(jì)算。

8、軟件工程被正式提出,注重程序結(jié)構(gòu)的研究 注重程序結(jié)構(gòu)研究多用戶。 小組軟件作坊軟件產(chǎn)品; 程序設(shè)計(jì)語言和編譯系統(tǒng)的到了廣泛的應(yīng)用; 實(shí)時(shí)系統(tǒng)和DBMS出現(xiàn) 出現(xiàn)了結(jié)構(gòu)化分析與設(shè)計(jì)方法。 CASE工具和環(huán)境的研制成為熱點(diǎn); 出現(xiàn)軟件公司分布式系統(tǒng); 結(jié)構(gòu)化程序設(shè)計(jì),軟件產(chǎn)品化、標(biāo)準(zhǔn)化; 面向?qū)ο蠹夹g(shù)開始出現(xiàn)并流行; 軟件開發(fā)度量受到重視。 Web成為主要應(yīng)用; 異構(gòu)環(huán)境下的分布式軟件應(yīng)用; 軟件復(fù)用和軟件構(gòu)件技術(shù)應(yīng)用; 軟件技術(shù)成熟,人機(jī)物融合; 基于構(gòu)件的軟件開發(fā)方法成為主流技術(shù)之一。20構(gòu)造性 軟件 是 典型的知識(shí)產(chǎn)品 是 客觀世界中 問題空間與解空間的 具體描述 軟件 是有結(jié)構(gòu)的 軟件系統(tǒng)

9、 要 不斷升級(jí) 不斷演化軟件的本質(zhì)特性 演化性 軟件 是 客觀事物的一種反映 是 知識(shí)的提煉 體現(xiàn) 固化 客觀世界 不斷發(fā)展 新需求 新技術(shù) 不斷出現(xiàn)構(gòu)造性 是軟件的本質(zhì)結(jié)構(gòu) 21 實(shí)質(zhì)上,解決概念和處理邏輯之間的映射問題為屏蔽計(jì)算機(jī)硬件的異構(gòu)性,發(fā)展了操作系統(tǒng).NET/COMWeb ServicesJ2EE/EJBUNIXWindows操作系統(tǒng)LinuxC/C+語言Java語言支撐軟件中間件為屏蔽操作系統(tǒng)和編程語言的異構(gòu)性,發(fā)展了支撐軟件和中間件Fortran語言為了彌補(bǔ)應(yīng)用軟件與開發(fā)平臺(tái)之間的距離,發(fā)展了軟件框架、設(shè)計(jì)模式等技術(shù)應(yīng)用系統(tǒng)體系結(jié)構(gòu) 軟件框架 設(shè)計(jì)模式為屏蔽中間件的多樣性和異構(gòu)

10、性,發(fā)展了Web技術(shù)盡可能平滑地橋接異構(gòu)性,增加互操作性軟件技術(shù)的發(fā)展本身就是一個(gè)不斷橋接異構(gòu)性的過程1.1.2 軟件危機(jī)與軟件工程(1) 軟件危機(jī)的定義(2) 軟件危機(jī)產(chǎn)生的原因(3) 解決軟件危機(jī)的途徑1. 軟件危機(jī)個(gè)體化軟件環(huán)境軟件作坊急劇膨脹軟件危機(jī)產(chǎn)生(1) 軟件危機(jī)Frederick P. Brooks, Jr.一本在軟件領(lǐng)域絕無僅有,20余年暢銷不衰的必讀經(jīng)典軟件危機(jī)拉布雷阿的焦油坑(Mural of La Brea Tar Pits)過去幾十年的大型系統(tǒng)開發(fā)就猶如這樣一個(gè)焦油坑,很多大型和強(qiáng)壯的動(dòng)物在其中劇烈地掙扎。在未來的十年內(nèi),無論是在技術(shù)還是管理方法上,都看不出有任何突破

11、性的進(jìn)步,能夠獨(dú)自保證在十年內(nèi)大幅度地提高軟件的生產(chǎn)率、可靠性和簡(jiǎn)潔性。There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.軟件危機(jī)There Is a Silver Bullet “重用和交互的構(gòu)件開發(fā)是解決軟件根本困難的一種方法。” B

12、road Cox“復(fù)雜性是我們行業(yè)的屬性,而且復(fù)雜性是我們的主要限制。軟件開發(fā)式意見棘手的事情,前方并不會(huì)有魔術(shù)般的解決方案。現(xiàn)在是從業(yè)者研究和分析革命性進(jìn)展的時(shí)候,而不是等待或希望他的出現(xiàn)“ Frederick Brooks軟件危機(jī)定義:軟件危機(jī)是計(jì)算機(jī)軟件在它的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。 主要包含兩方面的問題: 如何開發(fā)軟件,怎樣滿足對(duì)軟件日益增長(zhǎng)的需求; 如何維護(hù)數(shù)量不斷膨脹的已有軟件。(1) 軟件危機(jī)的定義軟件危機(jī) 介紹軟件危機(jī)包含兩方面問題:如何開發(fā)軟件,以滿足不斷增長(zhǎng),日趨復(fù)雜的需求;如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。Software depression (軟件蕭條)

13、Software affliction (軟件困擾) “慢性的苦惱”軟件危機(jī)主要有以下表現(xiàn): 對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)常常不準(zhǔn)確。開發(fā)成本超出預(yù)算,實(shí)際進(jìn)度比預(yù)定計(jì)劃一再拖延的現(xiàn)象并不罕見用戶對(duì)“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。 軟件產(chǎn)品的質(zhì)量往往靠不住。Bug一大堆,Patch一個(gè)接一個(gè)軟件的可維護(hù)程度非常之低。 軟件通常沒有適當(dāng)?shù)奈臋n資料。 軟件的成本不斷提高。 軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長(zhǎng)軟件危機(jī) 介紹(2) 軟件危機(jī)產(chǎn)生的原因軟件開發(fā)和維護(hù)的不正確方法主要表現(xiàn)為忽視軟件開發(fā)前期的需求分析開發(fā)過程沒有統(tǒng)一的、規(guī)范的方法論的指導(dǎo),文件資料不齊全,忽視人與人的交流

14、忽視測(cè)試階段的工作,提交用戶的軟件質(zhì)量差輕視軟件的維護(hù)(2) 軟件危機(jī)的原因一方面是與軟件本身的特點(diǎn)有關(guān)另一方面是由軟件開發(fā)和維護(hù)的方法不正確有關(guān) 軟件開發(fā)工作量分配比例 40% 50%10% 20%測(cè)試程序其它引入同一變化付出的代價(jià)隨時(shí)間變化的趨勢(shì)費(fèi)用分配比例55%70% 其它軟件維護(hù)(3) 解決軟件危機(jī)的途徑組織管理工程項(xiàng)目管理方法技術(shù)措施軟件開發(fā)技術(shù)與方法軟件工具2. 軟件工程(1) 軟件工程的概念(3) 軟件工程框架(2) 中國(guó)軟件工程發(fā)展歷程(4) 軟件工程知識(shí)體系(5) 軟件工程基本原理水利工程建筑工程機(jī)械工程 軟件工程傳統(tǒng)工程新興工程氣象工程生物工程工程工程是對(duì)技術(shù)(或社會(huì))實(shí)體

15、的分析、設(shè)計(jì)、建造、驗(yàn)證和管理。(1) 軟件工程概念軟件工程的概念及范疇 “軟件工程”Software Engineering于1968年 NATO 組織在德國(guó)召開的一次會(huì)議上提出 是把軟件當(dāng)作一種工業(yè)產(chǎn)品,要求 “采用工程化的 原理與方法對(duì)軟件進(jìn)行計(jì)劃、開發(fā)和維護(hù) ”。軟件工程 范圍(1)軟件工程 經(jīng)典定義“The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works on real machines.”

16、 Fritz Bauer軟件工程就是為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上高效運(yùn)行的軟件而建立和使用的完善的工程原理。軟件工程 經(jīng)典定義“The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software” IEEE 1990軟件工程是將系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程應(yīng)用于軟件中,并研究上述提到的途徑。軟件工程 經(jīng)典定義(Cont.)“Software engineeri

17、ng is that form of engineering that applies the principles of computer science and mathematics to achieving cost-effective solutions to software problems.” CMU/SEI-90-TR-003軟件工程就是應(yīng)用計(jì)算機(jī)科學(xué)和數(shù)學(xué)的原理來經(jīng)濟(jì)有效的解決軟件問題的一種工程。軟件工程概念采用工程的概念、原理、技術(shù)和方法來計(jì)劃、開發(fā)與維護(hù)軟件把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上運(yùn)行的可靠

18、軟件的一系列方法。 簡(jiǎn)言之: 工程方法+管理技術(shù)+技術(shù)方法45(2)中國(guó)軟件工程的發(fā)展歷程為了滿足中國(guó)軟件產(chǎn)業(yè)發(fā)展需求,中國(guó)自1980年啟動(dòng)軟件工程研究與實(shí)踐,其過程和成果與國(guó)際發(fā)展趨勢(shì)一致1980年代開展軟件開發(fā)方法學(xué)研究CASE工具和環(huán)境的研發(fā)1980199020001990年代以構(gòu)件技術(shù)為主線開展前沿研究建立較為全面的軟件工程環(huán)境2000年以后展開網(wǎng)構(gòu)軟件技術(shù)體系的研究建設(shè)軟件構(gòu)件庫體系建立標(biāo)準(zhǔn)和培養(yǎng)人才軟件產(chǎn)業(yè)起步開發(fā)停留在手工作坊式軟件企業(yè)開始使用軟件工具軟件企業(yè)開始嘗試工業(yè)化生產(chǎn)技術(shù)來源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年46(1)軟件自動(dòng)化系統(tǒng)南京大學(xué)徐家福教授領(lǐng)導(dǎo)的科研團(tuán)隊(duì)從規(guī)

19、約到實(shí)現(xiàn),開發(fā)了多個(gè)軟件自動(dòng)化系統(tǒng)軟件自動(dòng)產(chǎn)生系統(tǒng)NDHD軟件自動(dòng)化系統(tǒng)NDAUTO,NDAUTO/SUN元級(jí)轉(zhuǎn)換系統(tǒng)NDTPS算法設(shè)計(jì)自動(dòng)化系統(tǒng)NDADAS歸納程序綜合系統(tǒng)NDIPS自學(xué)習(xí)軟件自動(dòng)化系統(tǒng)NDSAIL層次式面向?qū)ο笮枨竽P蚇DHOOM及其支撐系統(tǒng)基于NDRDL語言的軟件需求分析自動(dòng)化系統(tǒng)面向?qū)ο筌浖枨蠓治鲋蜗到y(tǒng)NDORASS 代表性研究工作47(2)XYZ系統(tǒng) 中科院唐稚松院士領(lǐng)導(dǎo)的科研團(tuán)隊(duì)XYZ系統(tǒng)是由一個(gè)時(shí)序邏輯語言XYZ/E,以及圍繞該語言的一組軟件工具組成XYZ/E:第一個(gè)可執(zhí)行的時(shí)序邏輯語言主要特征是能直接表示自動(dòng)機(jī)狀態(tài)轉(zhuǎn)換機(jī)制具有常見程序語言風(fēng)格,可實(shí)際用于編程

20、運(yùn)行它的統(tǒng)一框架既能表示抽象規(guī)范,又能表示各種新的范型,如面向?qū)ο蟪绦蛟O(shè)計(jì)、可視圖形程序設(shè)計(jì)、多媒體、分布式程序設(shè)計(jì)等1990年獲國(guó)家自然科學(xué)一等獎(jiǎng)來源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年48(3)MLIRF系統(tǒng) 中科院董韞美院士領(lǐng)導(dǎo)的科研團(tuán)隊(duì)形式規(guī)約的獲取與復(fù)用提出基于復(fù)用的文法推斷方法提出一種新的遞歸函數(shù)理論:上下文無關(guān)語言上的遞歸函數(shù)CFRF研究開發(fā)了支持系統(tǒng)MLIRF Requirements Formal Specifications Computer vague informal incomplete precise complete consistent Specificatio

21、n knowledge Human-machine cooperation Validation 來源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年49(4)青鳥工程 北京大學(xué)牽頭的科研團(tuán)隊(duì)軟件生產(chǎn)手段的變革工業(yè)化生產(chǎn)觀念創(chuàng)新機(jī)制創(chuàng)新技術(shù)創(chuàng)新青鳥工程的關(guān)鍵創(chuàng) 新基礎(chǔ)研究工程化工業(yè)化生產(chǎn)技術(shù)實(shí)用化 產(chǎn)品化技術(shù)青鳥工程產(chǎn)業(yè)化道路“六五” 核心支撐環(huán)境BETA85“七五” 集成化軟件工程支撐環(huán)境 青鳥I型系統(tǒng)(JB1)“八五” 大型軟件開發(fā)環(huán)境 青鳥II型系統(tǒng)(JB2)“九五”(一) 青鳥III型系統(tǒng)(JB3)“九五”(二) 青鳥軟件生產(chǎn)線系統(tǒng)基于構(gòu)件構(gòu)架應(yīng)用系統(tǒng)集成組裝環(huán)境(JBAIE)青 鳥 工 程 發(fā)

22、展 歷 史工程化開發(fā)方法工業(yè)化生產(chǎn)技術(shù)標(biāo)準(zhǔn)規(guī)范體系支撐環(huán)境與工具手工作坊式TRDC模式市場(chǎng)技術(shù)工程生產(chǎn)、管理工具、標(biāo)準(zhǔn)軟件產(chǎn)業(yè)建設(shè)的共性、基礎(chǔ)性工作“十五”青鳥軟件生產(chǎn)線系統(tǒng)基于Internet、以構(gòu)件庫為核心的軟件開發(fā)平臺(tái)50北京大學(xué)北京航空航天大學(xué)中科院軟件所中科院數(shù)學(xué)所中科院計(jì)算所中科院自動(dòng)化所清華大學(xué)中軟公司吉林大學(xué)遼寧大學(xué)西北大學(xué)電子科技大學(xué)復(fù)旦大學(xué)上海軟件中心上海交通大學(xué)南京大學(xué)東南大學(xué)中山大學(xué)“八五”青鳥工程共22家單位338人參與成都天津長(zhǎng)春南京南開大學(xué)來源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年51青鳥工程概念模式圖借鑒傳統(tǒng)產(chǎn)業(yè)經(jīng)驗(yàn)探索軟件生產(chǎn)規(guī)律提出軟件生產(chǎn)線概念支持軟件工業(yè)化

23、生產(chǎn)改善軟件開發(fā)過程提升軟件企業(yè)能力促進(jìn)軟件產(chǎn)業(yè)合理分工1990年提出A1A2A3A4基礎(chǔ)構(gòu)件B1B2B3B4功能構(gòu)件C1C2接口構(gòu)件A1A2ABCDRA3A4B1B2B3B4C1C2D1D2DA1B1C1A2B2應(yīng)用系統(tǒng)標(biāo)準(zhǔn)規(guī)范標(biāo)準(zhǔn)規(guī)范與與質(zhì)量保證質(zhì)量保證應(yīng)用構(gòu)架庫應(yīng)用構(gòu)架庫構(gòu)件生產(chǎn)車間構(gòu)件生產(chǎn)車間組裝車間組裝車間應(yīng)用構(gòu)架應(yīng)用構(gòu)架提取車間提取車間構(gòu)件庫構(gòu)件庫界面構(gòu)件D1D2應(yīng)用系統(tǒng)應(yīng)用系統(tǒng)再工程再工程52資源管理層接口標(biāo)準(zhǔn):UDDIBIDM構(gòu)件庫管理系統(tǒng)JBCLMS 基于Internet、以構(gòu)件庫為核心的開發(fā)平臺(tái)(20012005)軟件配置管理系統(tǒng)JBCM 公共軟件構(gòu)件庫 企業(yè)軟件構(gòu)件庫 構(gòu)

24、件庫互連機(jī)制Internet 構(gòu)件化軟件, Internet 計(jì)算環(huán)境軟件質(zhì)量評(píng)價(jià)、軟件再工程構(gòu)件化再工程工具FDReengineer 逆向工程工具PKU OBRET OO設(shè)計(jì)度量系統(tǒng) PKU OODMS構(gòu)件接口變異測(cè)試工具JUTO 軟件變更管理系統(tǒng)JBCCM 軟件復(fù)用項(xiàng)目管理系統(tǒng)PKU PM軟件故障管理系統(tǒng)FRACAS軟件復(fù)用過程管理模型交換 XMI 工具集成 MDA開發(fā)整體方法 ABC method集成環(huán)境軟件建模組裝部署特征建模工具PKU_FODM UML 2.0建模工具JBOO 4.0組裝部署工具集元建模工具M(jìn)emt外部工具集成Rational RoseEclipse青鳥工程成果舉例本

25、平臺(tái)包括16項(xiàng)支持系統(tǒng)/工具;涉及構(gòu)件化軟件開發(fā)的8個(gè)技術(shù)領(lǐng)域。53普適計(jì)算人機(jī)交互資源共享網(wǎng) 格軟件形態(tài)網(wǎng) 構(gòu)Internet環(huán)境及其應(yīng)用:基礎(chǔ)平臺(tái)的開放性、動(dòng)態(tài)性和多變性共享資源的多樣性(信息、計(jì)算、服務(wù))產(chǎn)業(yè)模式的服務(wù)化Internet平臺(tái)和環(huán)境的出現(xiàn) 對(duì)軟件形態(tài) 技術(shù)發(fā)展 理論研究 提供了 新的契機(jī) 提出了新的問題網(wǎng)構(gòu)軟件成為下一代軟件的基本形態(tài)來源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年54傳統(tǒng)軟件形態(tài)分解確定目標(biāo)、有序控制自頂向下 逐步分解軟件運(yùn)行平臺(tái)站點(diǎn)元素站點(diǎn)元素站點(diǎn)元素站點(diǎn)元素站點(diǎn)元素服務(wù)服務(wù)無序有序服務(wù)無序有序動(dòng)態(tài)目標(biāo)、漸趨穩(wěn)態(tài)新的軟件形態(tài)自底向上 逐步組合網(wǎng)構(gòu)軟件的基本形態(tài)來

26、源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年55我國(guó)軟件發(fā)展存在問題 我國(guó)軟件企業(yè) 自主創(chuàng)新能力還不強(qiáng) 缺少品牌產(chǎn)品 還沒有形成 面向領(lǐng)域的專業(yè)化軟件企業(yè)集團(tuán)2005年中美軟件企業(yè)前三強(qiáng)軟件銷售額對(duì)比(單位:億美元)中國(guó)軟件企業(yè) 前三強(qiáng) 華為 海爾 中興 19.0 9.5 7.9美國(guó)軟件企業(yè) 前三強(qiáng) IBM Microsoft EDS 613 339 206資料來源:中國(guó)軟件產(chǎn)業(yè)年鑒2006來源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年56協(xié)調(diào)發(fā)展模式政產(chǎn)學(xué)研結(jié)合政府組織管理軟件企業(yè)項(xiàng)目開發(fā)技術(shù)改造技術(shù)支持實(shí)踐反饋管理監(jiān)督經(jīng)驗(yàn)、實(shí)踐成果資源支持技術(shù)成果技術(shù)引入 扶持培養(yǎng)學(xué)術(shù)界軟件產(chǎn)業(yè)結(jié)構(gòu)模式軟件產(chǎn)業(yè)組織模

27、式軟件生產(chǎn)方式產(chǎn)學(xué)研軟件人才需求軟件人才結(jié)構(gòu)軟件人才培養(yǎng)科研投入體系自主創(chuàng)新體系政政策環(huán)境宏觀管理來源:楊芙清:中國(guó)中國(guó)軟件工程-二十六年 (3)軟件工程框架開發(fā)范型設(shè)計(jì)方法支持過程管理過程需求設(shè)計(jì)實(shí)現(xiàn)確認(rèn)支持可用性正確性合算性軟件工程活動(dòng)維軟件工程目標(biāo)維軟件工程原則維軟件工程的框架是由軟件工程目標(biāo)、軟件工程活動(dòng)和軟件工程原則三個(gè)方面的內(nèi)容構(gòu)成的。軟件工程目標(biāo)目標(biāo):生產(chǎn)具有正確性、可用性以及開銷適宜的軟件產(chǎn)品。正確性:軟件產(chǎn)品達(dá)到預(yù)期功能的程度??捎眯裕很浖窘Y(jié)構(gòu)、實(shí)現(xiàn)及文檔為用戶可用的程度。開銷適宜:軟件開發(fā)、運(yùn)行的整個(gè)開銷滿足用戶要求的程度。目標(biāo)決定了:軟件過程、過程模型和工程方法的選擇

28、。軟件工程活動(dòng)活動(dòng):生產(chǎn)一個(gè)最終滿足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟。1、需求: 問題分析:需求獲取和定義,又稱軟件需求規(guī)約。 需求分析:生成軟件功能規(guī)約。2、設(shè)計(jì): 概要設(shè)計(jì):建立整個(gè)軟件的體系結(jié)構(gòu),包括子系統(tǒng)、模 塊以及相關(guān)層次的說明、每一模塊的接口定 義等。 詳細(xì)設(shè)計(jì):產(chǎn)生程序員可用的模塊說明,包括每一模塊 中數(shù)據(jù)結(jié)構(gòu)說明及加工描述。3、實(shí)現(xiàn): 把設(shè)計(jì)結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。4、確認(rèn): 貫穿整個(gè)開發(fā)過程,對(duì)完成的結(jié)果進(jìn)行確認(rèn),保證產(chǎn)品 滿足用戶的要求。5、支持: 修改和完善活動(dòng)。軟件工程原則軟件工程的四條基本原則:采取適宜的開發(fā)模型:控制易變的需求;采用合適的設(shè)計(jì)方法:需要軟

29、件模塊化、抽象與信息隱藏、局部化、一致性以及適應(yīng)性等,需要合適的設(shè)計(jì)方法的支持。提供高質(zhì)量的工程支持:軟件工具和環(huán)境對(duì)軟件過程的支持。重視開發(fā)過程的管理:有效利用可用的資源、生產(chǎn)滿足目標(biāo)的軟件產(chǎn)品、提高軟件組織的生產(chǎn)能力等。軟件工程層次圖質(zhì)量焦點(diǎn)過程方法工具軟件工程層次圖軟件工程的基層過程定義了一組關(guān)鍵過程區(qū)域的框架(KPAs)關(guān)鍵過程區(qū)域構(gòu)成了軟件項(xiàng)目的管理控制的基礎(chǔ)規(guī)定了技術(shù)方法的采用,工程產(chǎn)品(模型、文檔、數(shù)據(jù)、報(bào)告等)的產(chǎn)生,checkpoint的設(shè)立、質(zhì)量的保證以及變更的管理提供了建造軟件在技術(shù)上需要“如何做”。方法涵蓋了以下任務(wù)需求分析、設(shè)計(jì)、編程、測(cè)試、維護(hù)軟件工程方法依賴于一組

30、基本原則,這些原則控制了每一個(gè)技術(shù)區(qū)域,包括建模技術(shù)和其他描述技術(shù)(4) 軟件工程的基本原理著名的軟件工程專家B.W.Boehm提出了軟件工程的七條基本原理。1)這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合。2)這七條原理是互相獨(dú)立的,缺一不可又是相當(dāng)完備的。 用分階段的生命周期計(jì)劃嚴(yán)格管理 不成功的軟件項(xiàng)目中有一半左右是由于計(jì)劃不周造成的 。 堅(jiān)持進(jìn)行階段評(píng)審 軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再進(jìn)行。 實(shí)行嚴(yán)格的產(chǎn)品控制 在軟件開發(fā)過程中不應(yīng)隨意改變需求,因?yàn)楦淖円豁?xiàng)需求往往需要付出較高的代價(jià)。 采用現(xiàn)代程序設(shè)計(jì)技術(shù) 采用先進(jìn)的技術(shù)既可提高軟件開發(fā)的效率,又可提高軟件維護(hù)

31、的效率。 (4) 軟件工程的基本原理 結(jié)果應(yīng)能清楚地審查 根據(jù)軟件開發(fā)項(xiàng)目的總目標(biāo)及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使得所得到的結(jié)果能夠清楚地審查。 開發(fā)小組的人員應(yīng)該少而精 Adding manpower to a late software project makes it later 承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性 不僅要積極主動(dòng)地采納新的軟件技術(shù),而且要注意不斷總結(jié)經(jīng)驗(yàn)。(4) 軟件工程的基本原理軟件工程項(xiàng)目的基本目標(biāo) 付出較低的成本; 達(dá)到要求的軟件功能; 取得較好的軟件性能; 開發(fā)的軟件易于移植; 需要較低的維護(hù)費(fèi)用; 能按時(shí)完成開發(fā)工作,及時(shí)交付使用。軟件工程的開發(fā)

32、原則抽象(abstraction)(2) 信息隱藏(information hiding)(3) 模塊化(modularity) (4) 局部化(localization)(5) 一致性(consistency) (6) 完整性(completeness) (7) 可預(yù)測(cè)性(verifiability) 1.1.3 軟件的分類1.基于軟件的功能劃分 系統(tǒng)軟件 支撐軟件 應(yīng)用軟件2.基于軟件規(guī)模劃分 微型軟件 小型軟件 中型軟件 大型軟件 甚大型軟件 極大型軟件3.基于軟件工作方式劃分 實(shí)時(shí)處理軟件 交互式軟件 分時(shí)軟件 批處理軟件1.1.3 軟件的分類按軟件的功能進(jìn)行劃分: 系統(tǒng)軟件 操作系統(tǒng)

33、 數(shù)據(jù)庫管理系統(tǒng) 設(shè)備驅(qū)動(dòng)程序 通信處理程序等1.1.3 軟件的分類 支撐軟件文本編輯程序文件格式化程序磁盤向磁帶向數(shù)據(jù)傳輸?shù)某绦虺绦驇煜到y(tǒng)支持需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和支持管理的軟件1.1.3 軟件的分類 應(yīng)用軟件 商業(yè)數(shù)據(jù)處理軟件 工程與科學(xué)計(jì)算軟件 計(jì)算機(jī)輔助設(shè)計(jì)制造軟件 系統(tǒng)仿真軟件 智能產(chǎn)品嵌入軟件 醫(yī)療、制藥軟件 事務(wù)管理、辦公自動(dòng)化軟件 計(jì)算機(jī)輔助教學(xué)軟件按軟件規(guī)模進(jìn)行劃分:類別 參加人員數(shù) 研制期限 源程序行數(shù) 微型 1 14周 0.5k 小型 1 16月 1k2k中型 25 12年 5k50k大型 520 23年 50k100k甚大型 1001000 45年 1M(=100

34、0k)極大型 20005000 510年 1M10M按軟件工作方式劃分: 實(shí)時(shí)處理軟件 分時(shí)軟件 交互式軟件 批處理軟件按軟件服務(wù)對(duì)象的范圍劃分: 項(xiàng)目軟件 產(chǎn)品軟件按使用的頻度進(jìn)行劃分: 一次使用 頻繁使用按軟件失效的影響進(jìn)行劃分: 高可靠性軟件 一般可靠性軟件75面向機(jī)器面向代數(shù)面向過程面向數(shù)據(jù)面向文件面向信息面向應(yīng)用面向功能面向數(shù)據(jù)流面向?qū)ο筌浖茖W(xué)的發(fā)展歷程中出現(xiàn)過許多“面向”1.2 軟件開發(fā)模型與方法1.2 軟件開發(fā)模型與方法1.2.1 軟件開發(fā)模型1.2.2 軟件開發(fā)方法77什么是建模?建模就是認(rèn)識(shí)現(xiàn)實(shí)世界客觀世界主觀世界認(rèn)識(shí)世界改造世界世界是什么樣的呢?78模型是對(duì)現(xiàn)實(shí)世界的認(rèn)識(shí)

35、不同類型的人有不同的世界觀持不同的世界觀就會(huì)得到對(duì)現(xiàn)實(shí)世界的不同認(rèn)識(shí)建立不同的模型模塊,函數(shù),功能類,關(guān)聯(lián),對(duì)象79模型體現(xiàn)現(xiàn)實(shí)世界只存在同一個(gè)現(xiàn)實(shí)世界模型沒有對(duì)錯(cuò)、只有符合建模人目的多少之分1.2.1 軟件開發(fā)模型2 快速原型模型(rapid prototype model)4 增量模型1 瀑布模型(waterfall model)5 噴泉模型3 螺旋模型(spiral model)6 智能模型7 V模型1.瀑布模型 瀑布模型的特點(diǎn):階段間具有順序性和依賴性推遲實(shí)現(xiàn)的觀點(diǎn)質(zhì)量保證的觀點(diǎn)1 瀑布模型1 瀑布模型的缺點(diǎn)各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量;由于開發(fā)模

36、型是線性的,用戶只有等到整個(gè)過程的末期才能見到開發(fā)成果,從而增加了開發(fā)的風(fēng)險(xiǎn);早期的錯(cuò)誤可能要等到開發(fā)后期的測(cè)試階段才能發(fā)現(xiàn),進(jìn)而帶來嚴(yán)重的后果。2 快速原型模型2 快速原型模型3 螺旋模型需求計(jì)劃操作概念軟件需求提交部分確定目標(biāo)方案限制條件費(fèi)用累加風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析原型1原型2原型3可操作原型詳細(xì)設(shè)計(jì)編程模塊測(cè)試組裝測(cè)試確認(rèn)測(cè)試運(yùn)行評(píng)估方案,標(biāo)識(shí)、解決風(fēng)險(xiǎn)軟件產(chǎn)品設(shè)計(jì)設(shè)計(jì)驗(yàn)證和確認(rèn)需求驗(yàn)證開發(fā)計(jì)劃測(cè)試計(jì)劃集成和計(jì)劃下階段工作開發(fā)驗(yàn)證下一級(jí)產(chǎn)品螺旋模型沿著螺線進(jìn)行若干次迭代: (1) 制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制條件; (2) 風(fēng)險(xiǎn)分析:分析評(píng)估所選方案,考慮

37、如何識(shí)別和消除風(fēng)險(xiǎn); (3) 實(shí)施工程:實(shí)施軟件開發(fā)和驗(yàn)證; (4) 客戶評(píng)估:評(píng)價(jià)開發(fā)工作,提出修正建議,制定下一步計(jì)劃。3 螺旋模型特點(diǎn)瀑布模型+快速原型+風(fēng)險(xiǎn)分析迭代過程一個(gè)螺旋式周期 確定目標(biāo),選擇方案,選定完成目標(biāo)的策略 風(fēng)險(xiǎn)角度分析該策略 啟動(dòng)一個(gè)開發(fā)階段 評(píng)價(jià)前一步的結(jié)果,計(jì)劃下一輪的工作 3 螺旋模型螺旋模型也有一定的限制條件,具體如下: (1) 螺旋模型強(qiáng)調(diào)風(fēng)險(xiǎn)分析,但要求許多客戶接受和相信這種分析,并做出相關(guān)反應(yīng)是不容易的,因此,這種模型往往適應(yīng)于內(nèi)部的大規(guī)模軟件開發(fā)。 (2) 如果執(zhí)行風(fēng)險(xiǎn)分析會(huì)大大影響項(xiàng)目的利潤(rùn),那么進(jìn)行風(fēng)險(xiǎn)分析毫無意義,因此,螺旋模型只適合于大規(guī)模軟件

38、項(xiàng)目。 (3) 軟件開發(fā)人員應(yīng)該擅長(zhǎng)尋找可能的風(fēng)險(xiǎn),準(zhǔn)確地分析風(fēng)險(xiǎn),否則將會(huì)帶來更大的風(fēng)險(xiǎn)。3 螺旋模型增量時(shí)間增量1第1個(gè)增量發(fā)布增量2第2個(gè)增量發(fā)布增量n第n個(gè)增量發(fā)布分析設(shè)計(jì)編碼測(cè)試分析設(shè)計(jì)編碼測(cè)試分析設(shè)計(jì)編碼測(cè)試4 增量模型缺陷: (1) 由于各個(gè)構(gòu)件是逐漸并入已有的軟件體系結(jié)構(gòu)中的,所以加入構(gòu)件必須不破壞已構(gòu)造好的系統(tǒng)部分,這需要軟件具備開放式的體系結(jié)構(gòu)。 (2) 在開發(fā)過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應(yīng)這種變化的能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而使軟件過程的控制失去整體性。4 增量模型 5 噴泉模型 5 噴泉模型6 智能

39、模型需求分析知識(shí)獲取和表示知識(shí)庫/專家系統(tǒng)推理機(jī)制軟件原型系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)軟件實(shí)現(xiàn)6 智能模型7 V模型開發(fā)模型的選擇傳統(tǒng)的瀑布模型適于以下幾種特點(diǎn)的軟件開發(fā)在開發(fā)時(shí)期內(nèi)沒有或很少有需求變化;對(duì)應(yīng)用領(lǐng)域很熟悉(例如,擴(kuò)充已存在的系統(tǒng));低風(fēng)險(xiǎn)項(xiàng)目(例如,對(duì)項(xiàng)目和開發(fā)環(huán)境很熟悉);除了在早期階段,用戶對(duì)開發(fā)工作參與很少;要求使用面向過程的編程語言。螺旋模型適于以下幾種特點(diǎn)的軟件開發(fā):在項(xiàng)目開發(fā)的早期需求可能有變化;對(duì)應(yīng)用領(lǐng)域較熟悉;中等風(fēng)險(xiǎn)項(xiàng)目(例如,對(duì)目標(biāo)和開發(fā)環(huán)境較熟悉);用戶不同程度地參與整個(gè)項(xiàng)目的開發(fā)過程;使用面向?qū)ο笳Z言或第四代語言。開發(fā)模型的選擇漸增模型適于以下幾種特點(diǎn)的軟件開發(fā):在

40、整個(gè)開發(fā)過程中需求都可能有變化;對(duì)應(yīng)用領(lǐng)域不熟悉;高風(fēng)險(xiǎn)項(xiàng)目;用戶完全參與到整個(gè)開發(fā)過程中;使用面向?qū)ο笳Z言或第四代語言。開發(fā)模型的選擇1.2.2 軟件開發(fā)方法2 面向數(shù)據(jù)結(jié)構(gòu)的軟件開發(fā)方法3 面向問題的分析方法4 原型化開發(fā)方法 1 結(jié)構(gòu)化開發(fā)方法5 面向?qū)ο蟮能浖_發(fā)方法1.2.2 軟件開發(fā)方法1 結(jié)構(gòu)化方法1978E.Yourdon和L.L.Constantine提出SASD方法,也稱為面向功能的軟件開發(fā)方法或面向數(shù)據(jù)流的軟件開發(fā)方法建立在軟件生命周期模型基礎(chǔ)上基本要點(diǎn)自頂向下逐步求精模塊化設(shè)計(jì)結(jié)構(gòu)化方法總的指導(dǎo)思想自頂向下、逐步求精。它的基本原則是功能的分解與抽象。結(jié)構(gòu)化開發(fā)方法的組成

41、結(jié)構(gòu)化分析方法 SA法(Structured Analysis)結(jié)構(gòu)化設(shè)計(jì)方法 SD法(Structured Design)結(jié)構(gòu)化程序設(shè)計(jì)方法 SP法(Structured Program)SA,SD,SP 法相互銜接,形成了一整套開發(fā)方法。1.2.2 軟件開發(fā)方法1.2.2 軟件開發(fā)方法根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)程序處理過程的方法影響程序的結(jié)構(gòu)和程序的處理過程最終目標(biāo)得出對(duì)程序處理的描述指導(dǎo)思想自頂向下逐步求精單入口、單出口基本原則-抽象和功能分解適合詳細(xì)設(shè)計(jì)階段-Jackson、warnier方法2 面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法1.2.2 軟件開發(fā)方法基本思想是考慮到輸入、輸出數(shù)據(jù)結(jié)構(gòu),指導(dǎo)系統(tǒng)的分解,在

42、系統(tǒng)分析指導(dǎo)下逐步綜合。步驟:從輸入、輸出數(shù)據(jù)結(jié)構(gòu)中導(dǎo)出基本處理框;分析這些處理框之間的先后關(guān)系;按先后關(guān)系逐步綜合處理框,直到畫出整個(gè)系統(tǒng)的PAD圖是綜合的自底向上的方法,但在逐步綜合之前已進(jìn)行了有目的的分解,這個(gè)目的就是充分考慮系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)。3 面向問題的分析方法1.2.2 軟件開發(fā)方法4 原型化方法106面向?qū)ο笫擒浖椒▽W(xué)的返璞歸真:面向用戶軟件開發(fā)從過分專業(yè)化的方法、規(guī)則和技巧中回到了客觀世界,回到了人們的日常思維,是軟件理論的返樸歸真面向?qū)ο?.2.2 軟件開發(fā)方法5 面向?qū)ο蟮姆椒?07溝通順應(yīng)人類思維習(xí)慣,讓軟件開發(fā)人員在解空間中直接模擬問題空間中的對(duì)象及其行為PU

43、SH EBXMOV EBX,EDXMOV EDX,EAXSHR EDX,16DIV BXAHare.Run;ALion.Catch(AHare);ALion.Kill(AHare);AHare.Dead;ALion.Eat;ALion.Happy;在計(jì)算機(jī)中模擬現(xiàn)實(shí)世界的事和物1.2.2 軟件開發(fā)方法軟件開發(fā)人員必須從 Think Procedurely轉(zhuǎn)變?yōu)?Think Object-Orientedly10860年代后期:Simul67,基本思想70年代后期:Smalltalk80,實(shí)用化80年代:理論基礎(chǔ),C+等,商業(yè)化90年代:面向?qū)ο笈c設(shè)計(jì)方法學(xué)B.H. Sellers等提出噴泉模型

44、G. Booch提出面向?qū)ο箝_發(fā)方法等P. Coad和E.Yourdon提出OOA和OODJacobson提出OOSE1997年:UML1.2.2 軟件開發(fā)方法5 面向?qū)ο蟮姆椒嫦驅(qū)ο箝_發(fā)方法的組成 OOSD由三部分組成: OOA(Object-Oriented Analysis)面向?qū)ο蟮姆治?OOD(Object-Oriented Design)面向?qū)ο蟮脑O(shè)計(jì) OOP (Object-Oriented Program)面向?qū)ο蟮某绦蛟O(shè)計(jì)OOAOOA強(qiáng)調(diào)的是對(duì)一個(gè)系統(tǒng)中的對(duì)象特征和行為的定義。建立系統(tǒng)的三類模型。OODOODOOD與OOA密切配合順序?qū)崿F(xiàn)對(duì)現(xiàn)實(shí)世界的進(jìn)一步建模。OOPOOP

45、OOP是面向?qū)ο蟮募夹g(shù)中發(fā)展最快的,使用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,進(jìn)行編碼。110 OO成為最重要的軟件開發(fā)方法 OO在GUI、模擬系統(tǒng)、游戲開發(fā)、應(yīng)用框架、軟件構(gòu)件化領(lǐng)域大顯身手 Java、UML 與 RUP 構(gòu)件技術(shù) (CORBA、COM、EJB、.Net) 類庫與設(shè)計(jì)模式。 OO構(gòu)件、設(shè)計(jì)模式的豐富將進(jìn)一步提高軟件開發(fā)的效率和質(zhì)量1.2.2 軟件開發(fā)方法111面向?qū)ο蠓椒ㄊ且环N把面向?qū)ο蟮乃枷脒\(yùn)用于軟件開發(fā)過程,指導(dǎo)開發(fā)活動(dòng)的系統(tǒng)方法,包括分析、設(shè)計(jì)和實(shí)現(xiàn)等活動(dòng)面向?qū)ο蠹夹g(shù)基于對(duì)象概念,以對(duì)象為中心,以類、組合、繼承為構(gòu)造機(jī)制,充分利用接口和多態(tài)提供靈活性,來認(rèn)識(shí)、理解、刻劃客觀世界和設(shè)計(jì)

46、、構(gòu)建相應(yīng)的軟件系統(tǒng)面向?qū)ο?對(duì)象 + 類 + 消息 + 繼承1.3 面向?qū)ο箝_發(fā)方法概述1.3 面向?qū)ο箝_發(fā)方法概述1.3.1 面向?qū)ο蟮幕靖拍?.3.2 面向?qū)ο蠓椒ǖ幕舅枷?.3.1 面向?qū)ο蠓椒ǖ幕靖拍? 對(duì)象2 類3 封裝或信息隱蔽4 繼承5 多態(tài)6 消息7 關(guān)聯(lián)8 復(fù)用1 對(duì)象(object)對(duì)象是面向?qū)ο箝_發(fā)模式的基本成份每個(gè)對(duì)象可用它本身的一組屬性和它可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對(duì)象的操作來改變。操作又稱為方法或服務(wù),它描述了對(duì)象執(zhí)行的功能,若通過消息傳遞,還可以為其它對(duì)象使用。1 對(duì)象(object)在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事

47、物都可以作為對(duì)象具體的物理實(shí)體的抽象人為的概念任何有明確邊界和意義的東西一名職工、一家公司、一個(gè)窗口、一座圖書館、一本圖書、貸款和借款等,都可以作為一個(gè)對(duì)象。對(duì)象是對(duì)問題域中某個(gè)實(shí)體的抽象,設(shè)立某個(gè)對(duì)象就反映了軟件系統(tǒng)保存有關(guān)它的信息,并具有與它進(jìn)行交互的能力。1 對(duì)象(object)對(duì)象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,這個(gè)封裝體有可以唯一標(biāo)識(shí)它的名字,而且向外界提供一組服務(wù)。屬性表示對(duì)象的性質(zhì),屬性值規(guī)定了對(duì)象所有可能的狀態(tài)。對(duì)象的操作是指該對(duì)象可以展現(xiàn)的外部服務(wù)。例如,大型客機(jī)可視為對(duì)象,它具有位置、速度、顏色、容量等屬性,對(duì)于該對(duì)象可施行起飛、降落、加速、維修等

48、操作,這些操作將或多或少地改變飛機(jī)的屬性值(狀態(tài))。對(duì)象屬性操作1 對(duì)象(object)對(duì)象就像一臺(tái)錄音機(jī),當(dāng)軟件中使用一個(gè)對(duì)象的時(shí)候,只能通過對(duì)象與外界的界面即對(duì)象向外部公開的操作,來操作它。錄音機(jī)中的磁帶很像是一個(gè)對(duì)象中內(nèi)部的狀態(tài)數(shù)據(jù)。當(dāng)錄音機(jī)處于不同位置時(shí)按下“Play”所放的歌曲是不同的,同樣當(dāng)對(duì)象處于不同狀態(tài)時(shí)作同樣的操作所得到的效果是不同的!PlayStop1 對(duì)象(object)對(duì)象的特點(diǎn)以數(shù)據(jù)為中心:操作圍繞對(duì)其數(shù)據(jù)所需要做的處理來設(shè)置,不設(shè)置與這些數(shù)據(jù)無關(guān)的操作,而且操作結(jié)果往往與當(dāng)時(shí)所處的狀態(tài)(數(shù)據(jù)的值)有關(guān)。對(duì)象是主動(dòng)的:它與傳統(tǒng)的數(shù)據(jù)有本質(zhì)的不同,不是被動(dòng)地等待對(duì)它進(jìn)行

49、處理,相反,它是進(jìn)行處理的主體。實(shí)現(xiàn)了數(shù)據(jù)封裝:對(duì)象好像是一只黑盒子,它的私有數(shù)據(jù)完全被封裝在盒子內(nèi)。對(duì)私有數(shù)據(jù)的訪問或處理只能通過公有的操作進(jìn)行。本質(zhì)上具有并行性:不同對(duì)象各自獨(dú)立地處理自身的數(shù)據(jù),彼此通過發(fā)送消息傳遞信息完成通訊。模塊獨(dú)立性好:對(duì)象是OO軟件的基本模塊。2 類(Class)類是具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的一組相似對(duì)象的抽象,即表示某些對(duì)象在屬性和操作方面的共同特征。例如:直升飛機(jī)、大型客機(jī)、轟炸機(jī)可歸為飛行器類共同屬性有:位置、速度和顏色等共同操作有:起飛、降落、加速和維修等類是在對(duì)象之上的抽象,有了類以后,對(duì)象則是類的具體化,是類的實(shí)例。把一組對(duì)象的共同特性加以抽象并存貯

50、在一個(gè)類中的能力,是面向?qū)ο蠹夹g(shù)最重要的一點(diǎn)!類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對(duì)象的集合。類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類定義可以視為一個(gè)具有類似特性與共同行為的對(duì)象的模板,可用來產(chǎn)生對(duì)象。2 類(Class)在一個(gè)類中,每個(gè)對(duì)象都是類的實(shí)例 (Instance),它們都可使用類中提供的函數(shù)。對(duì)象的狀態(tài)則包含在它的實(shí)例變量,即實(shí)例的屬性中。2 類(Class) 類 兩個(gè)四邊形對(duì)象Quadrilateral類的每個(gè)對(duì)象有同樣的一組實(shí)例變量和方法。類Quadrilateral提供了一個(gè)模板,表示了所有四邊形對(duì)象。類常??煽醋鍪且粋€(gè)抽象數(shù)據(jù)類型(ADT)的實(shí)現(xiàn)。但更合適的是把

51、類看做是某種概念的模型。 類 兩個(gè)四邊形對(duì)象類的實(shí)現(xiàn)常常使用其它類的實(shí)例,它們提供了該類所需要的服務(wù)。這些實(shí)例應(yīng)當(dāng)受到保護(hù)不被其它對(duì)象存取,包括同一個(gè)類的其它實(shí)例在四邊形的例子中,定義4個(gè)point類的實(shí)例作為Quadrilateral類的實(shí)例的4個(gè)頂點(diǎn)。這些point對(duì)象不能被其它對(duì)象存取。 類 兩個(gè)四邊形對(duì)象實(shí)例(Instance)類是建立對(duì)象時(shí)使用的“樣板”,按照這個(gè)樣板所建立的一個(gè)個(gè)具體的對(duì)象,就是類的實(shí)例。實(shí)例是某個(gè)具體類所描述的一個(gè)個(gè)具體對(duì)象,如:“張三”、“李四”是類“中國(guó)人”的實(shí)例對(duì)象既可以是一個(gè)具體的對(duì)象,也可以泛指一般的對(duì)象;而實(shí)例只能是一個(gè)具體的對(duì)象。屬性(Attribu

52、te)屬性是類中對(duì)象所具有的數(shù)據(jù)值,是對(duì)客觀世界實(shí)體所具有性質(zhì)的抽象。如對(duì)象Person的屬性有姓名、年齡、體重等不同對(duì)象的同一屬性可以具有相同或不同的屬性值。如張三的年齡為19,李四的年齡為20。張三、李四是兩個(gè)不同的對(duì)象,他們共同屬性“年齡”的值不同。方法(Method)方法就是對(duì)象所能執(zhí)行的操作(Operation)。它描述了對(duì)象執(zhí)行操作的算法,響應(yīng)消息的方法。3 封裝(Encapsulation)在面向?qū)ο蟮某绦蛑校褦?shù)據(jù)和實(shí)現(xiàn)操作的代碼集中起來放在對(duì)象內(nèi)部一個(gè)對(duì)象好像是一個(gè)不透明的黑盒子,表示對(duì)象狀態(tài)的數(shù)據(jù)和實(shí)現(xiàn)操作的代碼與局部數(shù)據(jù)都被封裝在黑盒子里面使用對(duì)象的時(shí)候只需要知道他向外界

53、提供的接口的形式,無須知道它的數(shù)據(jù)結(jié)構(gòu)細(xì)節(jié)和實(shí)現(xiàn)操作的算法。對(duì)象具有封裝的條件如下:有一個(gè)清晰的邊界所有私有數(shù)據(jù)和實(shí)現(xiàn)操作的代碼都被封裝在這個(gè)邊界內(nèi)部,從外面看不見更不可能直接訪問;有確定的接口這些接口就是對(duì)象可以接收的消息,只能通過向?qū)ο蟀l(fā)送消息來使用它。受保護(hù)的內(nèi)部實(shí)現(xiàn)。實(shí)現(xiàn)對(duì)象功能的細(xì)節(jié)(私有數(shù)據(jù)和代碼)不能在定義該對(duì)象的類的范圍外訪問;封裝也就是信息隱藏,通過封裝對(duì)外界隱藏了對(duì)象的實(shí)現(xiàn)細(xì)節(jié);類實(shí)質(zhì)上是抽象數(shù)據(jù)類型。類把數(shù)據(jù)說明和操作說明與數(shù)據(jù)表達(dá)和操作實(shí)現(xiàn)分離開來,使用者只知道它的說明(值域及可對(duì)數(shù)據(jù)施加的操作),就可以使用它。3 封裝(Encapsulation)3 封裝(Encap

54、sulation)廣義地說,繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。在面向?qū)ο蠹夹g(shù)中,繼承是子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語言不同于其他語言的最主要的特點(diǎn)!4 繼承(Inheritance)子類直接繼承父類的數(shù)據(jù)和操作4 繼承(Inheritance)家具桌子椅子衣柜床椅子的實(shí)例繼承的傳遞性,單繼承、多重繼承把類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng),即類等級(jí):一個(gè)類可以有父類,下層可以有子類這種層次結(jié)構(gòu)系統(tǒng)的一個(gè)重要特性就是繼承!實(shí)現(xiàn)繼承機(jī)制的實(shí)現(xiàn)原理。A的操作A的變量類A類AA的實(shí)例變量A的實(shí)例a1從A繼承特性B的操作B的變量類B:A的子類類B繼承來

55、的A的實(shí)例變量B的實(shí)例變量B的實(shí)例b14 繼承(Inheritance)4 繼承 (Inheritance)繼承是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類的定義可以是既存類所聲明的數(shù)據(jù)和新類所增加的聲明的組合。新類復(fù)用既存的定義,而不要求修改既存類。既存類可當(dāng)做基類來引用,則新類相應(yīng)地可當(dāng)做派生類來引用。使用繼承設(shè)計(jì)一個(gè)新類,可以視為描述一個(gè)新的對(duì)象集,它是既存類所描述對(duì)象集的子集合。這個(gè)新的子集合可以認(rèn)為是既存類的一個(gè)特殊化。Quadrilateral類是Polygon類的特殊化Quadrilateral是限制為四條邊的多邊形。我們還可以進(jìn)一步地把類Quadrilateral特殊化為R

56、ectangle4 繼承 (Inheritance)類Quadrilateral的界面可以等同于類Polygon的界面Rectangle類的界面又與Quadrilateral類的界面相同。新類的界面還可以被看做是既存類界面的一個(gè)擴(kuò)充界面。例如,從一個(gè)既存的車輛類派生的四輪驅(qū)動(dòng)車類可能不僅是車輛類子集合定義的特殊化,而且還可能在新類的界面中引入新的能力。4 繼承 (Inheritance)類的繼承層次在類的繼承層次中,Quadrilateral的實(shí)際參數(shù)可以替換Polygon的形式參數(shù)。類Quadrilateral的界面與類Polygon的界面是相容的Quadrilateral的界面可響應(yīng)Pol

57、ygon界面的所有消息。 4 繼承 (Inheritance)繼承具有傳遞性如果類C繼承類B,類B繼承類A,則類C繼承類A。單繼承與多繼承單繼承:一個(gè)子類只允許有一個(gè)父類多繼承:一個(gè)子類允許有多個(gè)父類4 繼承 (Inheritance)繼承使得相似的對(duì)象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余信息。繼承使得對(duì)軟件的修改變得比過去容易多了;繼承使得用戶在開發(fā)新的應(yīng)用系統(tǒng)時(shí)不必完全重新開始,可以繼承原有的相似系統(tǒng)或從類庫中選取需要的類,在派生出新的類以實(shí)現(xiàn)所需要的功能;有了繼承機(jī)制以后,還可以把已有的一般性的解加以具體化,來達(dá)到軟件重用的目的。4 繼承 (Inheritance)5

58、多態(tài)(Polymophism)多態(tài)即在類的等級(jí)的不同層次中可以共享(公用)一個(gè)方法的名稱不同層次中的每個(gè)類卻各自按照需要來實(shí)現(xiàn)這個(gè)行為當(dāng)對(duì)象接收發(fā)送給他的消息時(shí),根據(jù)該對(duì)象所隸屬的類動(dòng)態(tài)選用在該類中定義的實(shí)現(xiàn)算法多態(tài)機(jī)制增加了面向?qū)ο筌浖到y(tǒng)的靈活性,減少了信息冗余顯著提高了軟件的可重用性、可擴(kuò)充性當(dāng)擴(kuò)充系統(tǒng)功能增加新的實(shí)體時(shí),只須派生出與新實(shí)體類相對(duì)應(yīng)的新的子類在新派生出的子類中定義符合該類需要的方法,完全無須修改原有的程序代碼,甚至不需要重新編譯原有程序。5 多態(tài)(Polymophism)6 消息(Message)對(duì)象之間進(jìn)行通訊的一種構(gòu)造叫做消息。 當(dāng)一個(gè)消息發(fā)送給某個(gè)對(duì)象時(shí),包含要求接

59、收對(duì)象去執(zhí)行某些活動(dòng)的信息。接收到消息的對(duì)象經(jīng)過解釋,然后予以響應(yīng)。這種通訊機(jī)制叫做消息傳遞。發(fā)送消息的對(duì)象不需要知道接收消息的對(duì)象如何對(duì)請(qǐng)求予以響應(yīng)。消息是對(duì)象之間建立的一種通信機(jī)制,它統(tǒng)一了數(shù)據(jù)流和控制流。消息是一個(gè)對(duì)象與另一個(gè)對(duì)象的通信單元是要求某個(gè)對(duì)象執(zhí)行類中定義的某個(gè)操作的規(guī)格說明發(fā)送給一個(gè)對(duì)象的消息定義了一個(gè)方法名和一個(gè)參數(shù)表(可能是空的),并指定某一個(gè)對(duì)象。一個(gè)對(duì)象接收的消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。6 消息(Message)通常一個(gè)消息由三部分組成:接收消息的對(duì)象消息標(biāo)識(shí)符(即消息名)零個(gè)或多個(gè)變?cè)L問一個(gè)方法的過程稱為向這個(gè)對(duì)象發(fā)送一個(gè)消

60、息。例如:MyCircle.Show(Green)MyCircle是接收消息的對(duì)象的名字,Show是消息名,Green是消息的變?cè)? 消息(Message)如何要求對(duì)象完成一定的處理動(dòng)作?對(duì)象間如何進(jìn)行聯(lián)系?所有這一切都只能通過消息傳遞來實(shí)現(xiàn)。傳遞消息的對(duì)象稱為發(fā)送者,接受消息的對(duì)象稱為接收者。消息中只包含傳遞者的要求,它告訴接收者需要哪些處理,但并不指示接收者應(yīng)該怎樣完成這些處理消息完全由接收者解釋,接收者獨(dú)立決定采用什么方式完成所需的處理,發(fā)送者對(duì)接收者不起任何控制作用。6 消息(Message)一個(gè)對(duì)象能夠接收不同形式、不同內(nèi)容的多個(gè)消息;相同形式的消息可以送往不同的對(duì)象,不同的對(duì)象對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論