




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1第6章 軟件設計2軟件設計設計設計是研究系統(tǒng)的軟件實現(xiàn)問題,即在分析模型的基礎上形成實現(xiàn)環(huán)境下的設計模型。36.1 軟件設計過程軟件設計活動:46.2 軟件設計原則:模塊化模塊化( Modularity )將一個復雜的大系統(tǒng)分解成若干個相對簡單的較小部分,稱 為子系統(tǒng)( Subsystem )。常見的模塊層次5設計原則-模塊化的層次 6為什么要模塊化設待求解的問題為X,則C(X)和E(X)分別為X相應的復雜性和解決問題所需要的工作量。設對于問題P1,P2,若有C(P1) C(P2)則有E(P1) E(P2)而另一方面,人類實踐表明:當P= P1+P2,實踐證明C(P)C(P1)+C(P2)因
2、此:E(P)E(P1)+E(P2)將一個復雜的大系統(tǒng)模塊化(Modularity),即將大系統(tǒng)分解成若干個相對簡單的子系統(tǒng)(Subsystem),分解后系統(tǒng)的復雜性和工作量比一個大系統(tǒng)要小,實現(xiàn)更為容易。 7模塊化的誤區(qū)但模塊的分解并非越多越好,模塊之間存在著交互接口,當模塊過多時,將會增加接口的代價。86.2.1 模塊化和信息隱蔽系統(tǒng)的模塊化設計過程應遵循信息隱蔽的原則每個模塊對其他模塊都隱蔽自己的設計決策。 在設計時列出將來可能發(fā)生變化的因素,并在模塊劃分時將這些因素放到個別模塊的內部 。這樣,在將來由于這些因素變化而需修改軟件時,只需修改這些個別的模塊,其它模塊不受影響。 信息隱蔽原則可
3、以更好支持模塊的并行開發(fā)以及系統(tǒng)的后期維護,使得對一個模塊的設計和代碼的修改對其他模塊的影響降低。96.2.2內聚和耦合內聚( Cohesion )內聚是子系統(tǒng)內部的相關程度。當子系統(tǒng)中彼此相關的多個對象執(zhí)行類似的任務時,則認為 該子系統(tǒng)是高內聚的;反之,當子系統(tǒng)內的多個對象彼此不相關時,則認為是低內聚的。內聚越高越好高內聚的方法做且僅做一件事,這會很容易理解與維護。舉例:如果使用一個方法 changeItem ( ) 完成書目的讀取、增加、 修改和刪除等若干方法的功能,有什么問題嗎?高內聚的類表示且僅表示一種類型的對象。舉例:在大學系統(tǒng)中使用 Professor 而不用 Employee,為
4、什么?106.2.2內聚和耦合內聚度標志一個模塊內部各成分彼此結合的緊密程度。內聚度按其高低程度可分為7級,從低至高分別為偶然內聚(Coincidental cohesion)邏輯內聚(Logical cohesion)時間內聚(Temporal cohesion)過程內聚(Procedural cohesion)通信內聚(Communicational cohesion)順序內聚(Sequential cohesion)功能內聚(Functional cohesion)內聚度越高越好。低級內聚 ,設計時盡量避免中級內聚 高級內聚 11偶然內聚 指一個模塊內容是為了節(jié)約空間,將并無多少邏輯關聯(lián)
5、的代碼和數(shù)據(jù)組合在一起模塊內各部分之間沒有聯(lián)系,或者即使有聯(lián)系也很松散 常見的偶然內聚:寫程序時如一些沒有任何聯(lián)系的語句可能在許多模塊中重復多次,程序員為了節(jié)省存儲,把它們抽出來組成一個新的模塊,這個模塊就是偶然內聚模塊12邏輯內聚、時間內聚和過程內聚邏輯內聚是指個模塊完成的多個任務邏輯上相關這種模塊把幾種功能組合在一起,每次調用時,由傳送給模塊的判定參數(shù)來確定該模塊應執(zhí)行哪一種功能。 例如,一個模塊完成所有類型的數(shù)據(jù)輸出,這類模塊調用時需要傳送控制信息,以便控制輸出什么類型的數(shù)據(jù)如果一個模塊包含的多個任務必須在同一時間段內執(zhí)行,則稱之為時間內聚例如一個系統(tǒng)的初始化模塊和終止模塊 過程內聚則是
6、指模塊內成分彼此邏輯相關,并且必須按特定的次序執(zhí)行 例如我們把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內聚模塊13通信內聚模塊中各成分引用共同的輸入數(shù)據(jù)或產(chǎn)生相同的輸出數(shù)據(jù)則稱為通信內聚,這意味著一個模塊可能包含多個功能,但卻是對相同的數(shù)據(jù)進行操作 14順序內聚如果個模塊內的各處理成分均與同功能相關,且這些處理必須順序執(zhí)行,即模塊中某個成分的輸出是另一成分的輸入則稱順序內聚15功能內聚如果模塊完成單個功能且不易再分解,則稱功能內聚,如求平方根、計算利息等。功能內聚是最高程度的內聚 166.2.2內聚和耦合:耦合耦合( Coupling )耦合表示兩個子系統(tǒng)(或類)
7、之間的關聯(lián)程度。當一個子系統(tǒng)(或類)發(fā)生變化時對另一個子系統(tǒng)(或類) 的影響很小,則稱它們是松散耦合的;反之,如果變化的影響很大時,則稱它們是緊密耦合的。 耦合也可分為7級,從低至高為:非直接耦合(Nondirect coupling)數(shù)據(jù)耦合(Data coupling)標記耦合(Stamp coupling)控制耦合(Control coupling)外部耦合(External coupling)公共耦合(common coupling)內容耦合(Content coupling)耦合度應越低越好。17耦合1:若兩模塊間彼此無任何交互,則稱之為非直接耦合 在非直接耦合中 ,兩個模塊之間的聯(lián)
8、系完全是通過主模塊的控制和調用來實現(xiàn)的例如在實數(shù)的運算中,有兩個模塊分別完成幾個實數(shù)的求和,求乘積功能,這兩個模塊之間沒有直接聯(lián)系,只有在主模塊調用中有執(zhí)行的前后順序而已,這個例子即屬于非直接耦合18耦合2:若兩模塊間僅通過參數(shù)交換輸入,輸出信息則為數(shù)據(jù)耦合 如有兩個模塊,其中A模塊產(chǎn)生的輸出數(shù)據(jù)作為模塊B的某個操作B1的輸入?yún)?shù)即模塊A的運算結果作為一個參數(shù)參加B的運算,這兩個模塊之間即發(fā)生數(shù)據(jù)耦合。數(shù)據(jù)耦合是松散的耦合,模塊間的獨立性比較強。19耦合3:如果模塊間傳送的參數(shù)包含著復合數(shù)據(jù)結構,則為標記耦合,例如含有若干數(shù)據(jù)項的數(shù)據(jù)記錄即模塊間共享了這個記錄,它是某一數(shù)據(jù)結構的子結構,而不是
9、簡單變量4:若傳遞的參數(shù)中含有控制信息則上升為控制耦合, (見圖6.6);20耦合5:當若干模塊與同一個外部環(huán)境關聯(lián),則模塊間存在著外部耦合。如I/O處理使所有I/O模塊與特定的設備、格式和通信協(xié)議相關聯(lián);6:公共耦合則是指模塊間存在著全局變量、公共數(shù)據(jù)區(qū)或可共享的文件等 7:內容耦合1)一個模塊訪問另一個模塊數(shù)據(jù);2)一個模塊不通過正常入口而轉到另一個模塊的內部;3)兩個模塊有一部分代碼重疊;4)一個模塊有多個入口21耦合一般來說,設計時應盡量使用數(shù)據(jù)耦合,減少控制耦合,限制外部環(huán)境耦合和公共耦合,絕對禁止內容耦合。226.2.3抽象和求精抽象是對問題的簡化和概括,它忽略了問題的某些細節(jié),有
10、助于把握問題的本質。抽象是分層次的高層的抽象是概念性的,例如用例模型較低層次的抽象則是具體解決方案和細節(jié),例如類的定義。抽象是自底向上的,是從細節(jié)到概要的過程。求精(Refine)是抽象的逆過程,是對問題自頂向下逐步分解、細化逐漸至細節(jié)的過程。236.2.4 復用復用( Reuse )對于建立軟件系統(tǒng)而言,所謂復用就是利用某些已開發(fā)的、 對建立新系統(tǒng)有用的軟件元素來生成新的軟件系統(tǒng)。 在一個系統(tǒng)中,通常大部分內容是成熟的,小部分內容是創(chuàng)新的。復用的好處在于提高生產(chǎn)效率,提高軟件質量,改善軟件系統(tǒng)的可維護性。復用策略工具包強調在類級別的代碼復用,如類庫;組件強調組件級的復用,如 CORBA、EJ
11、B、DCOM 等;設計強調設計級的復用,如復用設計模式,復用體系結構等246.3.1 什么是體系結構 軟件系統(tǒng)的體系結構主要是指軟件中相對獨立的模塊、這些模塊接口之間的交互機制以及一系列組織管理這些操作的規(guī)則。軟件體系結構的設計是整個軟件開發(fā)過程中一個關鍵的環(huán)節(jié)不同類型的系統(tǒng)要求需要不同類型體系結構,甚至同一個系統(tǒng)中的子系統(tǒng)也可能需要不同的體系結構。體系結構模型主要描述以下屬性:系統(tǒng)的組件,包括功能組件和數(shù)據(jù)組件;系統(tǒng)組件間的連接,包括數(shù)據(jù)流和控制流;組件和連接的約束,包括組件間的通信協(xié)議,組件間的同步等;以及用組件和連接表示的系統(tǒng)整體結構的拓撲關系。因而組件和連接是軟件體系結構的兩大構成部分
12、。 256.3.1 什么是體系結構 :組件組件(Component)是軟件系統(tǒng)的結構塊單元,每個軟件組件都承擔著一定的功能并發(fā)揮著一定的作用,組件可以看作是模塊、類、對象等一個相關功能的集合。組件大都作為一個封裝的實體每個組件至少有個接口(Port)。接口是組件與外界發(fā)生交互的窗口。其他組件與其交互時,只需了解此組件對外的接口和提供的操作服務。266.3.1 什么是體系結構 :組件根據(jù)組件在系統(tǒng)中的作用,組件可以大致分為5類:負責系統(tǒng)運行管理的控制組件;負責組件之間協(xié)作關系的協(xié)調組件;為其他組件提供特定服務功能的服務組件;負責安全檢查和信息轉接傳遞的信息控制組件;負責組件間連接和轉換功能的連接
13、組件。276.3.1 什么是體系結構 :連接連接(Connect):建立和維護組件間行為關聯(lián),和組件間信息傳遞。連接需要兩方面的支持:一是連接發(fā)生和維持的機制;二是連接能夠正確地、無二義、無沖突地進行信息交換的規(guī)則,稱為連接的“協(xié)議”。因此,連接的本質是實現(xiàn)連接機制和信息交換協(xié)議,簡稱機制和協(xié)議。286.3.1 什么是體系結構 :連接計算機硬件提供了實現(xiàn)連接的基礎。 在硬件提供連接機制的基礎上,可以實現(xiàn)不同層次上的連接比如在體系結構模式層,應用層等無論哪層連接,都是基于硬件提供的基本連接機制連接協(xié)議是連接的規(guī)約,是實現(xiàn)有意義連接的保證。 比如網(wǎng)絡七層連接協(xié)議296.3.1 什么是體系結構 :連
14、接當組件間聯(lián)系關系復雜時,除了基本連接方法外,需要建立專門的連接組件以調用和協(xié)調組件間的關聯(lián)關系,實現(xiàn)組件間聯(lián)系的特殊組件稱為連接器(connector)最簡單的連接器可表現(xiàn)為組件之間的直接連接,如功能調用。當情況復雜時,則有專門的連接器,類似于連接硬件設備的特定連接裝置,軟部件之間也需要連接器,如進程間通信所構成的連接器 306.3.2 體系結構設計策略體系結構設計:建立起一個系統(tǒng)的子系統(tǒng)和子系統(tǒng)間通信的基本的結構框架體系結構設計時通常采用現(xiàn)有的體系結構設計策略 常見的體系結構設計策略:管道過濾器結構分層體系結構 倉庫系統(tǒng)結構 客戶/服務器模式 MVC模式 316.3.3 管道過濾器結構管道
15、過濾器結構是由過濾器和管道組成的。代表數(shù)據(jù)加工處理的過濾器是具有一組輸入和一組輸出的部件,它們被代表數(shù)據(jù)傳送的管道連接在一起過濾器從輸入數(shù)據(jù)源接收輸入,經(jīng)過內部加工處理后送到輸出的數(shù)據(jù)池,并被傳送到輸出連接的過濾器。數(shù)據(jù)源、過濾器、數(shù)據(jù)池通過管道順序地連接起來。每個管道只處理臨近過濾器之間的數(shù)據(jù)流。326.3.3 管道過濾器結構過濾器的活動可以通過以下方法激活:(1)后續(xù)的部件從過濾器中取出數(shù)據(jù);(2)前續(xù)的部件向過濾器推入新輸入數(shù)據(jù);(3)過濾器處于活躍狀態(tài),不斷地從前續(xù)部件取出并向后續(xù)部件推入數(shù)據(jù)。前兩種情況產(chǎn)生的是被動式過濾器(passive filter),最后的是主動式過濾器(act
16、ive filter)。被動式過濾器是通過函數(shù)或過程調用激發(fā)的,而主動式過濾器是作為獨立的程序或線程任務激發(fā)工作的。336.3.3 管道過濾器結構管道是過濾器之間的連接器。如果兩個主動式過濾器連接在一起,管道將對它們實施同步控制。管道是一個先進先出的數(shù)據(jù)緩沖。數(shù)據(jù)源是系統(tǒng)的輸入,它提供了同一結構類型的數(shù)據(jù)序列。例如,由文本行組成的文件,提供采集數(shù)值的探測器。數(shù)據(jù)源可主動地把數(shù)據(jù)推向過濾器,或當過濾器需要時被動地提供數(shù)據(jù)。數(shù)據(jù)池從過濾器收集計算結果,有兩類變種,主動式數(shù)據(jù)池從過濾器中“拉”出數(shù)據(jù),被動式數(shù)據(jù)池允許其前續(xù)的過濾器向其推入或寫入結果。346.3.3 管道過濾器結構管道過濾器(Pipe
17、 and Filter)的體系結構最早產(chǎn)生于程序語言的編譯操作和操作系統(tǒng)的進程間通信和任務處理。早期程序語言的編譯被分解為符號掃描、句法分析、語義分析、中間代碼生成、代碼優(yōu)化、代碼生成、連接的多個獨立的處理源程序依次經(jīng)過各個處理最后得到可執(zhí)行的程序。其中,對于輸入數(shù)據(jù),各種處理是過濾器,它的輸出到下個處理的輸入形成了中間數(shù)據(jù)的傳送管道。356.3.3 管道過濾器結構管道過濾器結構結構在信號處理、分布式計算等處理中獲得廣泛使用 366.3.4 分層體系結構層次化是一種概念,它將軟件設計組織成為類或組件的層次或集合,在同一個層次上的類或組件完成一個特定的目的。除了最上層和最下層外,系統(tǒng)中的每一層都
18、要承擔兩個角色。首先,它為結構中的上層提供服務;其次,它調用下層提供的功能函數(shù)。 良好的層次結構可以易于系統(tǒng)的擴展與維護,不同的層次之間通過接口進行通信。三層體系結構( Three-tier Architecture )表示層:窗口、報表等用戶界面元素應用邏輯層:管理業(yè)務過程的任務和規(guī)則存儲層:持久化存儲機構376.3.4 分層體系結構386.3.5倉庫系統(tǒng)結構倉庫或知識庫結構( Repository architecture )倉庫結構是一種以數(shù)據(jù)為中心的體系結構,它包含一個中心數(shù)據(jù)庫和一組相互獨立的處理中心數(shù)據(jù)的子系統(tǒng),主要適合 于數(shù)據(jù)由一個子系統(tǒng)產(chǎn)生而由其他子系統(tǒng)使用的情形。396.3.
19、5倉庫系統(tǒng)結構406.3.6 客戶/服務器模式客戶機服務器結構( Client/Server Architecture )適用于分布式環(huán)境下的系統(tǒng)結構, 在客戶機服務器體系結構中,作為服務器的子系統(tǒng)為其他 客戶機的子系統(tǒng)提供服務,作為客戶機的子系統(tǒng)負責與用戶的交互。瘦客戶機模型所有的應用處理和數(shù)據(jù)管理都是在服務器上執(zhí)行,客戶機只是負責數(shù)據(jù)表示部分。由于繁重的處理負荷全部集中在服務器和網(wǎng)絡上,有可能造成性能上的問題。416.3.6 客戶/服務器模式胖客戶機模型服務器只負責對數(shù)據(jù)的管理,客戶機上的軟件實現(xiàn)應用邏輯與用戶的交互。系統(tǒng)管理更加復雜,因為應用程序的改變必須在客戶機上重 新安裝。三層的客戶
20、機服務器體系結構426.3.7 模型視圖控制器結構(MVC)模型/視圖/控制器結構(Model/View/Controller Architecture)該結構是為同樣的數(shù)據(jù)提供多個視圖的應用程序而設計的,它將交互系統(tǒng)的組成(子系統(tǒng))分解成模型、視圖、控制器三種部件。視圖是應用程序中用戶界面相關的部分,即用戶看到并與之交互 的界面??刂破鞴ぷ骶涂刂普麄€業(yè)務流程,實現(xiàn)View層跟Model層的協(xié)同工作。模型是應用程序的主體部分,用于封裝業(yè)務邏輯和數(shù)據(jù)模型。該結構適合于交互式系統(tǒng),特別是同一個模型需要多個視圖的情況。436.3.7 模型視圖控制器結構44MVC視圖(View)代表用戶交互界面,對于
21、Web應用來說,可以概括為HTML界面(JSP,ASPX),但有可能為XML、WML和Excel。隨著應用的復雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。45MVC控制器(Controller)可以理解為從用戶接收請求, 將模型與視圖匹配在一起,共同完成用戶的請求??刂破鞑⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點擊一個連接(發(fā)送請求),控制器接受請求后, 并不處理業(yè)務信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個模型可能對應多個視圖,一個視圖可能對應多個模型。 46MVC模型(Model):就是業(yè)務流程/狀態(tài)的處理以及數(shù)據(jù)模型的制定。業(yè)務流程的處理過程對其它層
22、來說是黑箱操作,模型接 受視圖請求的數(shù)據(jù),并返回最終的處理結果。模型的設計可以說是MVC最主要的核心。47jsp+servlet+javaBean實現(xiàn)MVCJSP作為視圖,只用于顯示 Servlet作為控制器,所有的請求,跳轉都由servlet完成業(yè)務邏輯部分由javabean完成48jsp+servlet+javaBean實現(xiàn)MVC49BookList(Servlet)bookManage.jsp請求(Book/List)requestrequest(books)例:圖書列表功能MVC實現(xiàn)50OpenModifyBook(Servlet)changeBookInf.jsp請求1(Book/OpenModify)request1request1(book)ModifyBook(Servlet)請求2(Book/Modify)changeBookInfoSucce
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZHCA 025-2023 化妝品抗氧化人體測試方法
- 沈陽生姜種植與市場推廣2025年度聯(lián)合發(fā)展合同
- 2025年度自愿離婚協(xié)議書:子女撫養(yǎng)權及監(jiān)護責任協(xié)議
- 二零二五年度創(chuàng)新型企業(yè)員工股權激勵合同
- 2025年度金融服務違約賠償協(xié)議范本
- 2025年度美容院美容師職業(yè)保險與福利合作協(xié)議
- 二零二五年度國際物流公司總經(jīng)理聘用協(xié)議
- 二零二五年度專業(yè)冷庫租賃與溫控技術支持協(xié)議
- 二零二五年度物流行業(yè)勞動合同法更新及風險防范合同
- 二零二五年度心理咨詢服務連鎖機構心理咨詢師聘用合同
- 蘇教版一年級科學下冊全冊課件
- 26個英文字母大小寫描紅
- 砼彈性模量檢測原始記錄
- 影視文學教程整本書課件完整版電子教案全套課件最全教學教程ppt(最新)
- 室內設計制圖與識圖課件匯總全書電子教案完整版課件最全幻燈片(最新)
- 江蘇版三年級數(shù)學下冊-長方形和正方形的面積計算 PPT
- 《建筑冷熱源》課程教學大綱-
- 12534 安全風險控制與安全工具應用
- 2016年七里塘電站1號機組C級檢修方案
- 公司股權激勵方案(絕對干貨)PPT幻燈片課件(46頁PPT)
- T∕CGMA 033002-2020 壓縮空氣站節(jié)能設計指南
評論
0/150
提交評論