06面向對象設計_第1頁
06面向對象設計_第2頁
06面向對象設計_第3頁
06面向對象設計_第4頁
06面向對象設計_第5頁
已閱讀5頁,還剩114頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

10月-23王如龍第6章面向對象設計軟件工程【課程回顧】

21.1關于軟件軟件是一種邏輯產品。邏輯是人的一種抽象思維,是人通過概念、判斷、推理、論證來理解和區分客觀世界的思維過程。產品是指能夠提供給市場,被人們使用和消費,并能滿足人們某種需求的任何東西,包括有形的物品、無形的服務、組織、觀念或它們的組合。P.1【課程回顧】

3P.2軟件的組成要素1.1關于軟件程序是軟件的窗口,它展示著系統的能力;數據是軟件的根本,它決定了系統的價值;文檔是軟件的靈魂,它關系到系統的命運。【課程回顧】

41.1關于軟件軟件發展表1-14個階段的典型技術P.2【課程回顧】

5P.2軟件的發展1.1關于軟件程序是軟件的窗口,它展示著系統的能力;數據是軟件的根本,它決定了系統的價值;文檔是軟件的靈魂,它關系到系統的命運。【課程回顧】

6P.6軟件危機指的是軟件開發和維護過程中遇到的一系列嚴重問題。軟件危機包含下述兩方面的問題:如何開發軟件,怎樣滿足對軟件日益增長的需求;如何維護數量不斷膨脹的已有軟件。軟件危機1.2軟件工程概念【課程回顧】

7P.6軟件危機主要有下列表現:1)產品不符合用戶的實際需要。2)軟件的生產率。3)軟件產品的質量差。4)對軟件開發成本和進度的估計不準確。5)軟件的可維護性差。6)軟件文檔資料既不完整,也不合格。7)軟件的價格昂貴。軟件危機1.2軟件工程概念【課程回顧】

8P.6軟件工程是指導計算機軟件開發和維護的一門學科。采用工程的概念、原理、技術和方法,把經過時間考驗而證明是正確的管理技術和當前能夠得到的最好的技術方法結合起來,用于開發與維護軟件。軟件工程的定義1.2軟件工程概念【課程回顧】

9P.7用分階段的生存周期計劃嚴格管理堅持進行階段評審實行嚴格的產品控制采用現代程序設計技術應能清楚地審查結果合理安排軟件開發小組的人員軟件工程6原則1.2軟件工程概念【課程回顧】

10P.8為了開發出低成本、高質量的軟件產品,軟件工程學應遵守以下4條基本原則。分解抽象和信息隱蔽一致性確定性軟件工程4原則1.2軟件工程概念【課程回顧】

11P.9S1:問題定義S2:可行性研究S3:需求分析S4:概要設計S5:詳細設計S6:編碼S7:測試S8:運行與維護軟件生存周期8階段1.3軟件生存周期與軟件開發模型【課程回顧】

12P.11

瀑布模型演化模型螺旋模型第四代技術模型原型模型構件組裝模型混合模型軟件開發模型1.3軟件生存周期與軟件開發模型【課程回顧】

132.1可行性研究的任務可行性研究的目的是用最小的代價在盡可能短的時間內確定問題是否能夠解決。可行性研究的目的不是解決問題,而是確定問題是否值得去解。一般說來,應從經濟可行性、技術可行性、運行可行性、法律可行性和開發方案等方面研究可行性。P.19【課程回顧】

142.1可行性研究的任務可行性研究最根本的任務是對以后的行動路線提出建議:如果問題沒有可行的解,應該建議停止這項工程的開發;如果問題值得解,應該推薦一個較好的解決方案,并且為工程制訂一個初步的計劃。P.20

152.2可行性研究的步驟復查系統規模和目標研究目前正在使用的系統導出新系統的高層邏輯模型重新定義問題導出和評價供選擇的方案推薦一個方案并說明理由推薦行動方針書寫計劃任務書提交審查P.20【課程回顧】

162.3系統流程圖繪制系統流程圖是描繪物理系統的傳統工具,它的基本思想是用圖形符號以黑盒子形式描繪系統里面的每個部件(程序、文件、數據庫、表格、人工過程等)。系統流程圖表達的是部件的信息流程,而不表示對信息進行加工處理的控制過程。P.22【課程回顧】

17在開發軟件之前,必須先了解軟件的需求,充分理解設計和使用這個軟件的意圖。軟件需求工程的目的是定義軟件所需要解決的問題。軟件需求是要把一個定義不足和模糊的問題轉換為一個定義良好而準確的問題,進而找到解決問題的方案。P.273.1需求工程概述【課程回顧】

183.1需求工程概述P.30需求工程過程需求工程需求開發獲取需求驗證SRS分析需求編寫SRS需求管理控制變更跟蹤狀態控制版本跟蹤需求圖3-3需求工程過程【課程回顧】

193.2需求獲取方法P.31圖3-4需求獲取過程【課程回顧】

203.3需求分析的任務與原則P.33需求分析的任務繪制系統關聯圖創建用戶接口原型分析需求可行性確定需求的優先級為需求建立模型創建數據字典質量功能調配【課程回顧】

213.4需求建模方法P.37數據流圖數據流圖是描述數據處理過程的工具,應該明確和掌握數據流圖的如下特征。數據流圖的含義數據流圖的特性數據流圖基本符號數據流圖的用途數據流圖的優缺點

.數據流圖的畫法數據流圖的繪制與其他流程圖的差別【課程回顧】

223.4需求建模方法P.41數據流圖與其他流程圖的差別(1)數據流圖與系統流程圖的區別系統流程圖中不僅有數據流,還有物流、資金流。數據流圖將物流與資金流排除在外,或者將它們抽象為數據流的形式。也就是說數據流圖僅以數據流的形態來反映一個組織中整個管理業務的過程。(2)數據流與程序流程圖的區別程序流程圖中的處理框之間時間上有嚴格的順序,而數據流圖只反映數據的流向、處理邏輯和必要的數據存儲,它不反映處理邏輯的先后時間順序。【課程回顧】

233.4需求建模方法P.41數據流圖與其他流程圖的差別(3)數據流與程序結構圖的區別程序結構圖反映模塊之間的控制關系以及模塊之間的調用關系,而數據流圖則不反映控制關系、調用關系、控制流,只畫數據流。(4)數據流與控制流的區別如果某條線上沒有數據(指表示事物的信息,而不是控制信號)流過,則是控制流。【課程回顧】

243.7需求管理P.52需求管理的目標需求管理的目的是在客戶和軟件項目組之間建立對需求的共同理解,需求管理的目標主要有2個。控制軟件需求,并建立軟件工程和管理使用的需求基線。使軟件計劃、產品和活動與軟件需求保持一致。【課程回顧】

25概要設計又稱為總體設計或初步設計,它的基本目的就是回答“概括地說系統應該如何實現?”這個問題。P.574.2概要設計任務與步驟【課程回顧】

264.2概要設計任務與步驟P.62概要設計任務1)系統分析員審查軟件計劃、軟件需求分析提供的文檔,提出候選的最佳推薦方案以及系統流程圖、組成系統物理元素清單、成本效益分析和系統的進度計劃供專家審定,審定后進入設計。2)確定模塊結構,劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確定模塊間的聯系,確定數據結構、文件結構、數據庫模式,確定測試方法與策略。3)編寫概要設計說明書、用戶手冊、測試計劃,選用相關的軟件工具來描述軟件結構,選擇分解功能與劃分模塊的設計原則。【課程回顧】

27P.62概要設計過程設計系統方案選取一組合理的方案推薦最佳實施方案功能分解軟件結構設計數據庫設計與文件結構設計制訂測試計劃編寫概要設計文檔審查與復審概要設計文檔4.2概要設計任務與步驟【課程回顧】

284.3軟件設計的基本概念P.64模塊化模塊是數據說明、可執行語句等程序對象的集合。模塊可以被單獨命名,可通過名字來訪問。例如,過程、函數、子程序、宏等都可作為模塊。模塊化的概念已經出現多年,軟件系統的層次結構就是模塊化的具體體現。模塊化就是把程序劃分成若干模塊,每個模塊具有一個子功能,把這些模塊集合起來組成一個整體,可以完成指定的功能,實現問題的在軟件開發過程中。【課程回顧】

294.3軟件設計的基本概念P.65模塊獨立性模塊獨立性是指軟件系統中每個模塊只涉及軟件要求的具體子功能,而且與其他模塊接口簡單。模塊獨立的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結果。模塊的獨立程度可以由耦合和內聚這兩個定性標準判定。【課程回顧】

304.4面向數據流的設計方法P73面向數據流的設計要解決的任務,就是在上述需求分析的基礎上,把數據流圖(DFD)映射為軟件系統的結構。換句話說,這類設計方法允許把用數據流圖表示的系統邏輯模型方便地轉換成對于軟件結構的初始設計描述。在結構化設計方法中,軟件的結構將用結構圖(SC)來描述。【課程回顧】

315.1詳細設計的任務與原則P.93詳細設計的任務詳細設計的任務是為每一個模塊確定使用的算法和相關的數據結構,并用選定的表達工具清晰地描述。表達工具可以由開發單位或設計人員選擇,但表達工具必須具有描述過程細節的能力,進而在編碼階段能夠直接無歧義地將它翻譯為用程序設計語言書寫的源程序。【課程回顧】

325.2詳細設計工具P.94詳細設計的工具主要有以下幾種。1)圖形工具。利用圖形工具可以把過程的細節用圖形描述出來。2)表格工具。可以用一張表來描述過程的細節,在這張表中列出了各種可能的操作和相應的條件。3)語言工具。用某種高級語言(稱為偽代碼)來描述過程的細節。

33提綱面向對象方法面向對象的分析面向對象設計實時軟件設計軟件復用用戶界面的設計

34對一個系統的認識是一個漸進過程,是在繼承了以往的有關知識的基礎上、多次往復迭代并逐步深化而形成。在這種過程中,既包括了從一般到特殊的演繹,也包括了從特殊到一般的歸納。而目前用于分析、設計和實現一個軟件系統的過程和方法基本上采用瀑布模型,即后一步是實現前一步所提出的需求,或者是進一步發展前一步所得出的結果。P.104

35因此,當越接近系統設計或實現的后期時,對系統設計或實現的前期的結果作修改就越困難,成本也越高。而且往往在系統設計的后期才能發現在前期所形成的一些差錯。當系統越大、問題越復雜時,由于這種對系統的認識過程和對系統的設計或實現過程不一致所引起的問題也就越大。P.104

36為了解決上述這個問題,就應使分析、設計和實現一個系統的方法盡可能地接近認識一個系統的方法。換言之,就是應使描述問題的問題空間和解決問題的方法空間在結構上盡可能一致。P.104

37使分析、設計和實現系統的方法學原理與認識客觀世界的過程盡可能一致,盡可能按照人類認識世界的方法和思維方式來分析和解決問題,這是面向對象方法學的出發點和所追求的基本原則。P.104

386.1面向對象方法P.104面向對象方法已經應用到計算機科學技術的許多領域,由于所涉及的領域非常廣泛,很難確切而清晰地確定它的作用范圍和嚴格而準確地對它進行定義。在20世紀80年代初期認為:面向對象是一種新興的程序設計方法,或者說它是一種新的程序設計范型,其基本思想是使用對象、類、繼承、封裝、消息等基本概念來進行程序設計。

396.1面向對象方法P.104自20世紀80年代以來,面向對象方法已深人到計算機軟件領域的幾乎所有分支,遠遠超出了程序設計語言和編程技術的范疇。同時,面向對象方法也深入到計算機軟件以外的一些領域。因而,面向對象方法有廣闊的應用前景。

406.1面向對象方法P.104從目前看,面向對象方法最主要的應用范圍仍是軟件開發,對軟件生命周期的各個階段(包括分析、設計、編程、測試與維護),以及它所涉及的各個領域(如人機界面、數據庫、軟件復用、形式化方法、CASE工具等),形成了面向對象的理論與技術體系。

416.1面向對象方法P.1046.1.1面向對象方法概述面向對象不僅是一些具體的軟件開發技術與策略,而且是一整套關于如何看待軟件系統與現實世界的關系,以什么觀點來研究問題并進行求解,以及如何進行系統構造的軟件方法學。面向對象軟件開發方法是一種運用對象、類、繼承、封裝、聚合、消息傳送、多態性等概念來構造系統的軟件開發方法。

426.1面向對象方法P.1046.1.1面向對象方法概述面向對象方法的基本思想是從現實世界中客觀存在的事物出發來構造軟件系統,并在系統構造中盡可能運用人類的自然思維方式。開發一個軟件是為了解決某些問題,這些問題所涉及的業務范圍稱做該軟件的問題域。

436.1面向對象方法P.1046.1.1面向對象方法概述面向對象方法強調直接以問題域(現實世界)中的事物為中心來思考問題、認識問題,并根據這些事物的本質特征,把它們抽象地表示為系統中的對象,作為系統的基本構成單位,而不是用一些與現實世界中的事物相差較遠,并且沒有對應關系的其他概念來構造系統。這樣,可以使系統直接地映射問題域,保持問題域中事物及其相互關系的本來面貌。

446.1面向對象方法P.1056.1.1面向對象方法概述

軟件開發方法應該是與人類在長期進化過程中形成的各種行之有效的思想方法相適應的思想理論體系。

但是,在較早出現的軟件開發方法只是建立在自身獨有的概念、符號、規則、策略的基礎之上,這說明當時的軟件技術處于比較初步的階段。結構化方法采用了許多符合人類思維習慣的原則與策略(如自頂向下、逐步求精)。

456.1面向對象方法P.1056.1.1面向對象方法概述面向對象方法更加強調運用人類在日常的邏輯思維中經常采用的思想方法與原則,如抽象、分類、繼承、聚合、封裝等,使得軟件開發者能更有效地思考問題,并以易懂的方式把自己的認識表達出來。面向對象方法的8大主要特點

466.1面向對象方法P.1056.1.1面向對象方法概述總結以上8大特點可以看出,在用面向對象方法開發的系統中,以類的形式進行描述并通過對類的引用而創建的對象是系統的基本構成單位。這些對象對應著問題域中的各個事物,它們的屬性與服務刻畫了事物的靜態特征和動態特征。對象類之間的繼承關系、聚合關系、消息和關聯如實地表達了問題域中事物之間實際存在的各種關系。因此,無論是系統的構成成分,還是通過這些成分之間的關系而體現的系統結構,都可直接地映射成問題域。

476.1面向對象方法P.1056.1.1面向對象方法概述面向對象的定義1)一種使用對象(它將屬性與操作封裝為一體)、消息傳送、類、繼承、多態和動態綁定來開發問題域模型之解的范型。2)一種基于對象、類、實例和繼承等概念的技術。3)用對象作為建模的原子。

486.1面向對象方法P.1056.1.2面向對象的軟件工程1采用軟件工程學的必要性隨著編程語言由低級向高級的發展,與自然語言之間的鴻溝在逐漸變窄。開發人員從對問題域產生正確的認識,到用一種編程語言把這些認識描述出來所付出的勞動,由計算機代替人完成的工作逐漸增多。

496.1面向對象方法P.1066.1.2面向對象的軟件工程1采用軟件工程學的必要性圖6-1計算機語言發展趨勢

506.1面向對象方法P.1066.1.2面向對象的軟件工程1采用軟件工程學的必要性雖然幾乎人人都會運用自然語言,但不一定都能正確地認識客觀世界,因為需要具有正確的思維方法;在軟件開發過程中,要求對問題域的理解,比日常生活中對它的理解更深刻、更準確,這需要許多以軟件專業知識為背景的思維方法。這些正是軟件工程學所要解決的問題。

516.1面向對象方法P.1066.1.2面向對象的軟件工程1采用軟件工程學的必要性圖6-2傳統的軟件工程方法

圖6-3面向對象的軟件工程方法

526.1面向對象方法P.1066.1.2面向對象的軟件工程2傳統的軟件工程學傳統的軟件工程學指面向對象方法出現之前的各種軟件工程方法,在這里主要指結構化軟件工程學。需求分析概要設計和詳細設計編程和測試軟件維護

536.1面向對象方法P.1086.1.2面向對象的軟件工程3面向對象的軟件工程學

面向對象的軟件工程學是面向對象方法在軟件工程領域的全面運用。面向對象方法早期注重編程理論與技術,現在則發展成為一套較為完整的軟件工程體系。面向對象分析(OOA)面向對象設計(OOD)面向對象的編程(OOP)面向對象的測試(OOT)面向對象的軟件維護

546.1面向對象方法P.1096.1.3面向對象的基本概念和特征

在面向對象的設計方法中,對象和傳遞消息分別是表現事物及事物間相互聯系的概念。

類和繼承是適應人們一般思維方式的描述范式。方法是允許作用于該類對象上的各種操作。

這種對象、類、消息和方法的程序設計范式的基本點在于對象的封裝性和繼承性。

556.1面向對象方法P.1096.1.3面向對象的基本概念和特征通過封裝能將對象的定義和對象的實現分開,通過繼承能體現類與類之間的關系,以及由此帶來的動態聚束和實體的多態性,從而構成了面向對象的各種特征。

566.1面向對象方法P.1096.1.3面向對象的基本概念和特征對象消息和方法類和類層次繼承性封裝性結構與連接多態性主動對象

57提綱面向對象方法面向對象的分析面向對象設計實時軟件設計軟件復用用戶界面的設計

586.2面向對象的分析(OOA)P.116分析的過程是提取系統需求的過程,主要包括理解、表達和驗證。在面向對象分析中,主要由對象模型、動態模型和功能模型組成。由于問題復雜,而且交流帶有隨意性和非形式化的特點,理解過程通常不能一次就達到理想的效果。因此,還必須進一步驗證軟件需求規格說明的正確性、完整性和有效性,如果發現了問題則進行修正。

596.2面向對象的分析(OOA)P.116需求分析過程是系統分析員與用戶及領域專家反復交流和多次修正的過程。也就是說,理解和驗證的過程通常交替進行,反復迭代,而且往往需要利用原型系統作為輔助工具。面向對象分析的關鍵是識別出問題領域內的對象,并分析它們相互間的關系,最終建立起問題域的簡潔、精確、可理解的正確模型。在用面向對象觀點建立起的模型中,對象模型是最基本、最重要、最核心的模型。

606.2面向對象的分析(OOA)P.1166.2.1面向對象分析基本過程及原則1分析問題的層次面向對象建模得到的模型包含對象的3個要素,即靜態結構(對象模型),交互次序(動態模型)和數據變換(功能模型)。大型系統的復雜問題對象模型由主題層(也稱為范疇層)、類&對象層、結構層、屬性層和服務層5個層次組成,如圖6-9所示。

616.2面向對象的分析(OOA)P.1166.2.1面向對象分析基本過程及原則1分析問題的層次圖6-9復雜問題對象模型的5個層次

626.2面向對象的分析(OOA)P.1176.2.1面向對象分析基本過程及原則2OOA主要概念的表示法及OOA主要原則OOA主要概念OOA的主要原則

636.2面向對象的分析(OOA)P.1196.2.1面向對象分析基本過程及原則3OOA過程發現對象、定義它們的類識別對象的內部特征識別對象的外部關系劃分主題,建立主題圖定義usecase,建立交互圖建立詳細說明原型開發

646.2面向對象的分析(OOA)P.1206.2.2確定對象與類1確定對象問題域和系統責任正確地運用抽象原則策略與啟發

656.2面向對象的分析(OOA)P.1226.2.2確定對象與類2對象分類、建立類圖的對象層異常情況的檢查和調整類的命名建立類圖的對象層

666.2面向對象的分析(OOA)P.1236.2.2確定對象與類2對象分類、建立類圖的對象層圖6-12OOA基本模型類圖的3個層次

676.2面向對象的分析(OOA)P.1236.2.3確定屬性1對象的屬性和服務面向對象程序設計以對象為基本單位來組織系統中的數據和操作,形成對問題域中事物的直接映射。面向對象方法用對象表示問題域中的事物,事物的靜態特征和動態特征分別用對象中的一組屬性和一組服務來表達。

686.2面向對象的分析(OOA)P.1236.2.3確定屬性1對象的屬性和服務一個對象就是由這樣一些屬性和服務構成的。對象的屬性和服務描述了對象的內部細節。在OOA過程中,只有給出對象的屬性和服務,才算對這個對象有了確切的認識和定義。屬性和服務也是對象分類的根本依據,一個類的所有對象,應該具有相同的屬性和相同的服務。按照封裝原則,一個對象的屬性和服務是緊密結合的,對象的屬性只能由這個對象的服務存取。

696.2面向對象的分析(OOA)P.1236.2.3確定屬性1對象的屬性和服務對象的服務,可分為內部服務和外部服務,內部服務只供對象內部的其他服務使用,不對外提供;外部服務對外提供一個消息接口,通過這個接口接收對象外部的消息并為之提供服務。

但是在實現中,不同的OOPL對封裝原則的體現只有在屬性與服務的結合這一點是共同的,信息隱蔽的程度則各有差異。

706.2面向對象的分析(OOA)P.1236.2.3確定屬性1對象的屬性和服務服務需要進一步區別的是被動服務和主動服務。被動服務是只有接收到消息才執行的服務,它在編程實現中是一個被動的程序成分,如函數、過程、例程等;主動服務是不需要接收消息就能主動執行的服務,它在程序實現中是一個主動的程序成分,如用于定義進程或線程的程序單位。被動對象的服務都是被動服務,主動對象應該有至少一個主動服務。在定義服務的過程中,對于主動對象應指出它的主動服務。

716.2面向對象的分析(OOA)P.1246.2.3確定屬性2定義屬性為了發現對象的屬性,首先考慮利用以往的OOA結果,看看相同或相似的問題域是否有已開發的OOA模型,盡可能復用其中同類對象的屬性定義。然后,主要的工作是研究當前的問題域和系統責任,針對本系統應該設置的每一類對象,按照問題域的實際情況,以系統責任為目標進行正確的抽象,從而找出每一類對象應有的屬性。

726.2面向對象的分析(OOA)P.1246.2.4定義服務分析員通過分析對象的行為來發現和定義對象的每個服務。但對象的行為規則往往和對象所處的狀態有關。1對象的狀態與狀態轉換圖2行為分類3發現服務的策略與啟發4審查與調整5識別主動對象6服務的命名和定位

736.2面向對象的分析(OOA)P.1276.2.5對象間通信在前面主要討論了系統中的每一類對象以及它們的內部特征。通過認識系統中的對象,對它們進行分類,進而分析和定義它們的內部特征,得到了構成系統的各個基本單位-對象類。現在將從各個單獨的對象轉移到對象以外,分析和認識各類對象之間的關系,以建立OOA基本模型(類圖)的關系層。

746.2面向對象的分析(OOA)P.1276.2.5對象間通信只有定義和描述了對象類之間的關系,各個對象類才能構成一個整體的、有機的系統模型。對象(以及它們的類)與外部的關系,有以下幾種。1)對象之間的分類關系,即對象類之間的一般/特殊關系(繼承關系),用一般/特殊結構表示。2)對象之間的組成關系,即整體/部分關系,用整體/部分結構表示。3)對象之間的靜態聯系,即通過對象屬性反映的聯系,用實例連接表示。4)對象之間的動態關系,即對象行為之間的依賴關系,用消息連接表示。

756.2面向對象的分析(OOA)P.1276.2.5對象間通信1識別結構2識別主題3實例連接

76提綱面向對象方法面向對象的分析面向對象設計實時軟件設計軟件復用用戶界面的設計

776.3面向對象設計(OOD)P.133分析是提取和整理用戶需求,建立問題域精確模型的過程。設計則是把分析階段得到的需求轉變成符合成本和質量要求的、抽象的系統實現方案的過程。從面向對象分析(OOA)到面向對象設計(OOD),是一個逐漸擴充模型的過程。面向對象設計就是用面向對象觀點建立求解域模型的過程。

786.3面向對象設計(OOD)P.133

盡管分析和設計的定義有明顯區別,但是在實際的軟件開發過程中二者的界限是模糊的。許多分析結果可以直接映射成設計結果,而在設計過程中又往往會加深和補充對系統需求的理解,從而進一步完善分析結果。因此,分析和設計是一個多次反復迭代的過程。

796.3面向對象設計(OOD)P.1331面向對象設計的框架6.3.1面向對象設計的基本概念面向對象分析主要模擬問題域和系統任務,而面向對象設計是面向對象分析的擴充,主要是增加各種組成部分。具體來說,面向對象分析識別和定義類&對象。這些類&對象直接反映問題域和系統任務。

806.3面向對象設計(OOD)P.1331面向對象設計的框架6.3.1面向對象設計的基本概念而面向對象設計識別和定義其他附加類&對象,它們反映需求的一種實現。當然,也可以交替地進行這兩個階段的工作。特別是在開發人員較少、環境便于原型開發時,面向對象分析與設計的相互交織更具明顯的優越性。

816.3面向對象設計(OOD)P.1341面向對象設計的框架6.3.1面向對象設計的基本概念

面向對象設計模型由5層組成,在設計期間主要擴充人機交互部分、問題域部分、任務管理部分和數據管理部分4個組成部分,如圖6-20所示。圖6-20多層次、多組成部分模型

826.3面向對象設計(OOD)P.1342對象6.3.1面向對象設計的基本概念客觀世界是由各種對象組成的,任何事物都是對象,復雜的對象可由相對簡單的對象以某種方式組成。傳統意義上的數據單元和處理單元可被統一定義成對象。

836.3面向對象設計(OOD)P.1342對象6.3.1面向對象設計的基本概念在圖書館系統中,有關的實體是書。作為一個對象,每冊書都有標識和可修改的內部狀態。例如,有人借閱書時,就需把它的狀態改為借閱,而從這些狀態的變化可知道每冊書的借閱情況。這些狀態的改變是通過執行方法來完成的。有關一本書的有意義的方法是借書和還書。

846.3面向對象設計(OOD)P.1342對象6.3.1面向對象設計的基本概念方法不僅僅局限于某個對象,還可被多個對象共享。以數據類型作為參數來定義對象的方法及其狀態成分,這些數據類型構成一個值域。值(數據)是無狀態的抽象。在實際問題中,可看做是屬性的內容(狀態成分),復雜屬性的索引(如數組)及方法的參數等。

856.3面向對象設計(OOD)P.1342對象6.3.1面向對象設計的基本概念為了簡單起見,假定所要求的數據類型,如布爾、自然數等,都是已定義的。有些數據類型很重要,它們的值可以標識對象。僅是對象的名字可以在定義對象時使用,而不必知道該對象的內部結構。

866.3面向對象設計(OOD)P.1342對象6.3.1面向對象設計的基本概念一個對象描述可由下列幾部分組成。ObjectohjimportingdatatypesdataconstantsCmethodsMattributesAvaluationVsafetySlivenessLend

876.3面向對象設計(OOD)P.1351面向對象設計的準則模塊化抽象信息隱藏弱耦合強內聚可擴充性6.3.2面向對象設計的方法模塊化·抽象·信息隱藏·弱耦合·強內聚·可擴充性

886.3面向對象設計(OOD)P.1362面向對象的基本設計方法6.3.2面向對象設計的方法面向對象設計范式與過程設計范式兩種范式的比較

89提綱面向對象方法面向對象的分析面向對象設計實時軟件設計軟件復用用戶界面的設計

906.4實時軟件設計P.137實時軟件系統是一種激勵/響應系統。如果輸入一個激勵,系統將產生輸出反映。因此,可由一個激勵序列和相應的響應以及響應的時間來定義實時軟件系統。可將激勵歸納為如下兩類。1)周期性激勵。激勵規則地發生,在每個時間間隔內發生。例如,系統每隔10ms檢測一次傳感器,根據傳感器的值來響應。2)非周期性激勵。激勵不規則地發生。例如中斷處理傳輸完成后,數據就己存在緩沖器中了。

916.4實時軟件設計P.138系統設計要決定系統的軟件和硬件的功能分配問題。硬件的特點是速度快,因此,系統設計過程既包括特殊目的的硬件設計也包括實時軟件的設計。硬件組件比軟件實現的性能要好得多,因此,要將系統處理瓶頸找出來用硬件來實現,這樣可以省去昂貴的軟件優化費用。用硬件完成系統性能方面的需求,在軟件設計中將性能放在第二位,主要考慮用軟件來提供系統適應性方面的要求。6.4.1系統設計

926.4實時軟件設計P.138體系結構設計將系統分解成一些獨立的組件,這些組件既可由硬件實現也可由軟件實現。這樣設計的系統可維護性強。硬件和軟件的分配可以放在設計過程的后面去做。實時系統設計過程不同于其他的軟件系統設計過程,在實時系統響應時必須在設計過程早期加以考慮。6.4.1系統設計

936.4實時軟件設計P.1381實時系統建模2實時程序設計6.4.1系統設計

946.4實時軟件設計P.139數據采集系統也是一種實時系統,這種系統從傳感器收集數據,以便后續的處理和分析。如圖6-23所示的系統模型是一個從流量的傳感器采集數據的系統。傳感器數據被放在一個緩沖器中,經過抽取和處理,最后將平均流量水平顯示在操作控制臺上。6.4.2數據采集系統圖6-23流量監控系統的體系結構

956.4實時軟件設計P.139為了解決速度上的不一致,絕大多數數據采集系統的緩沖器使用循環式或環形緩沖器。產生數據的進程(生產者)把信息加入到緩沖器,使用數據的進程(消費者)從這個緩沖器中取走信息,見圖6-24。6.4.2數據采集系統圖6-24數據采集系統的環型緩沖器

96提綱面向對象方法面向對象的分析面向對象設計實時軟件設計軟件復用用戶界面的設計

976.5軟件復用P.139在軟件開發中,軟件是一種可重復使用的資源,可利用復用來達到降低軟件產品及其維護的成本、加快系統交付速度和提高軟件質量等一系列目的。為了實現軟件復用,需在軟件設計和需求工程中加以考慮。應該在軟件的生命周期的每一個階段,都使用復用技術。

986.5軟件復用P.140在編程階段發現某一個組件能滿足當前需要,這種機會式的復用是有可能的。要系統地使用復用就需要在設計過程中考慮復用的問題,需要考慮現有的設計如何能得到復用,圍繞可用的軟件組件來安排設計。

996.5軟件復用P.1406.5.1軟件復用概念軟件復用類型軟件復用的意義復用具備的條件基于生成器的復用

1006.5軟件復用P.1416.5.2基于組件的開發在基于面向對象的軟件復用方法中,對象類太具體太特殊,還需要在編譯或系統鏈接時與應用捆綁在一起。需要掌握對這些類的詳細知識,而這往往又需要得到所有的源程序代碼,對銷售帶來了困難。基于組件的軟件工程出現于20世紀90年代。組件比對象類更抽象,并且能作為服務供給者。

1016.5軟件復用P.1416.5.2基于組件的開發提供該項服務的組件,不用考慮它在何處執行,也無需了解該組件是用什么語言書寫的。例如,一個非常簡單的組件是一個只需要計算平方根的數學函數。當一個程序需要一個平方根計算時就調用該組件。

1026.5軟件復用P.1416.5.2基于組件的開發可復用組件特性組件接口組件層次應用框架商業產品的復用

103提綱面向對象方法面向對象的分析面向對象設計實時軟件設計軟件復用用戶界面的設計

1046.6用戶界面的設計P.143軟件工程人員既要負責用戶界面設計,又要負責界面的軟件實現。好的用戶界面設計對一個系統的成功至關重要。使用不好的界面,不管系統的功能如何,輕者會造成高層的用戶錯誤;重者用戶將直接拒絕使用該軟件系統。如果信息的表達方式是混亂的或是容易歧義的,那么用戶可能會誤解信息的涵義,所進行的一系列操作就有可能破壞數據,甚至導致災難性的系統失敗。

1056.6用戶界面的設計P.1431圖形用戶界面(GUI)的特征1)窗口:多窗口允許不同的信息被同時顯示在用戶屏幕上。2)圖標:圖標代表了不同類型的信息。

溫馨提示

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

評論

0/150

提交評論