freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]軟件工程第六章復(fù)習(xí)資料(編輯修改稿)

2025-02-05 14:39 本頁面
 

【文章內(nèi)容簡介】 ∕ 未來需求 類的分類法 復(fù)用標(biāo)準 功能模型 論域語言 10 ② 分類從論域抽取的項 :對所有的項進行歸類并定義各個種類的一般定義特征。提出種類的分類模式并定義每個項的命名慣例。適當(dāng)?shù)臅r候建立分類的層次。 ③ 收集論域中各個應(yīng)用的有代表性的樣例 :為了完成這個活動,必須保證在問題中的應(yīng)用具有適合已定義的某些種類的項。 ④ 分析樣例中的每一個應(yīng)用 :分析員接下來要做的事情是: ? 標(biāo)識候選的可復(fù)用的對象; ? 指 明標(biāo)識對象為可復(fù)用的理由; ? 定義可復(fù)用對象的適合性; ? 估計在論域中可做到對象復(fù)用的應(yīng)用的百分比; ? 用名字標(biāo)識對象并使用配置管理技術(shù)控制它們。一旦標(biāo)識了對象,分析員應(yīng)當(dāng)估計一個典型的應(yīng)用能夠使用可復(fù)用對象構(gòu)造的百分比。 此外,論域分析員還應(yīng)建立一組復(fù)用指南,并給出一個例子,說明如何使用論域?qū)ο髞斫⑿碌膽?yīng)用。 總之,論域分析 實際上是一種學(xué)習(xí),涉及與應(yīng)用論域有關(guān)的所有知識。論域的邊界可能很模糊,很多是憑借經(jīng)驗和實際考慮 (如可用資源 )。主要思想是想把考慮的論域放寬一些,把相關(guān)的概念都標(biāo)識到,以幫助更好 地掌握應(yīng)用的核心知識。當(dāng)用戶改變他們對系統(tǒng)的需求時,范圍廣泛的分析可以幫助預(yù)測這些變化。 (4) 應(yīng)用分析 應(yīng)用分析的依據(jù)是在論域分析時建立起來的論域 分析 模型,并把它用于當(dāng)前正在建立的應(yīng)用當(dāng)中??蛻魧ο到y(tǒng)的需求可以當(dāng)做限制來使用,用它們縮減論域的信息量。就這一點來說,保留的信息受到論域分析視野的影響。論域分析產(chǎn)生的模型并不需要用任何基于計算機系統(tǒng)的程序設(shè)計語言來表示,而應(yīng)用分析階段產(chǎn)生影響的條件則伴隨著某種基于計算機系統(tǒng)的程序設(shè)計語言的表示。響應(yīng)時間需求、用戶界面需求和某些特殊的需求,如數(shù)據(jù)安全等,都在這一 層分解抽出。 許多模型識別的要求是針對不止一個應(yīng)用的。通常我們著重考慮兩個方面:應(yīng)用視圖和類視圖。必須對每個類的規(guī)格說明和操作詳細化,還必須對形成應(yīng)用結(jié)構(gòu)的類之間的相互作用加以表示。 4. 面向?qū)ο笤O(shè)計( OOD) OOA 和 OOD 之間有密切的銜接關(guān)系,從 OOA 到 OOD 是一個逐漸擴充模型的過程。分析處理以問題為中心,可以不考慮任何與特定計算機有關(guān)的問題,而 OOD 則把我們帶進了面向計算機的“實地”開發(fā)活動中去。通常, OOD 分為兩個階段,即高層設(shè)計和低層設(shè)計。高 層設(shè)計 建立應(yīng)用的體系結(jié)構(gòu) 。低層設(shè)計集中于類的詳細設(shè)計。 (1) 高層設(shè)計 高層設(shè)計階段開發(fā) 軟件的體系 結(jié)構(gòu),構(gòu)造 軟件 的總 體 模型。在這個階段,標(biāo)識在計算機環(huán)境中進行問題解決工作所需要的概念,并增加了一批需要的類。這些類包括那些可使應(yīng)用軟件與系統(tǒng)的外部世界交互的類。此階段的輸出是適合應(yīng)用軟件要求的類、類間的關(guān)系、應(yīng)用的子系統(tǒng)視圖規(guī)格說明。通常,利用面向?qū)ο笤O(shè)計得到的系統(tǒng)框架如 圖 所示。 ① 高層設(shè)計模型 一個典型的高層設(shè)計模型即客戶 -服務(wù)器模型,它構(gòu)造起應(yīng)用軟件的總體模型,這個模型導(dǎo)出的體系結(jié)構(gòu)既可在過程性系統(tǒng)中使用,又可在面向?qū)ο蟮南到y(tǒng)中使用。 客戶-服務(wù)器 模型的想法是讓系統(tǒng)的一個部分 (服務(wù)器子系統(tǒng) )提供一組服務(wù)給系統(tǒng)的另一個部分 (客戶子系統(tǒng) )。請求服務(wù)的對象都歸于客戶子系統(tǒng),而接受請求提供服務(wù)的部分就是服務(wù)器。 X- window 系統(tǒng)在用戶界面設(shè)計時就使用了客戶 — 服務(wù)器方法來構(gòu)造它的圖形 11 交互界面。一個應(yīng)用的核心“引擎”是服務(wù)器子系統(tǒng)的客戶,如用戶界面、打印服務(wù)器、數(shù)據(jù)庫服務(wù)器等。 圖 OOD 設(shè)計導(dǎo)出的體系結(jié)構(gòu) 在 Smalltalk 中使用的軟件體系結(jié)構(gòu)是模型/視圖/控制器 (MVC, Model/ View/Controller),參看 圖 。在這個結(jié)構(gòu)中,模型是軟件中的應(yīng)用論域的各種對象,它們的操作獨立于用戶界面;視圖則管理用戶界面的輸出;而控制器處理軟件的輸入。輸入事件給出要發(fā)送給模型的消息。一旦模型改變了它的狀態(tài),就立即通過關(guān)聯(lián)機制通知視圖,讓視圖刷新顯示。這個關(guān)聯(lián)機制定義了在模型與各個視圖之間的關(guān)系,它允許模型的運行獨立于與它相關(guān)聯(lián)的視圖。類似地,控制器在輸入事件發(fā)生時將對視圖及模型進行控制與調(diào)度。 此外,在軟件體系結(jié)構(gòu)中還使用了許多其它配置。類的配置表示的多是子系統(tǒng)的體系結(jié)構(gòu)而不是系統(tǒng)的總體結(jié)構(gòu)。它們是一些抽 象類的集合,可以定義這些抽象類的新的 派生類,并 把它們實例化,以實現(xiàn)所要求的特定行為,籍此構(gòu)造要求的應(yīng)用軟件。對于 MVC 來說,可以通過開發(fā)模型的一個 派生類 ,履行與應(yīng)用相關(guān)聯(lián)的處理,建立這個應(yīng)用軟件。用戶界面通過定義視圖和控制器的 派生類 來建立,這些 派生類中 許多是可復(fù)用的既存類,像按鈕和對話框等在多數(shù) Smalltalk 系統(tǒng)中已經(jīng)存在。這樣就導(dǎo)致了新子系統(tǒng)的建立。 ② 高層設(shè)計的規(guī)則 ? 最小化各構(gòu)件間的通信 :在子系統(tǒng)的各個高層構(gòu)件之間的通信量應(yīng)當(dāng)達到最小。一個用戶界面應(yīng)當(dāng)能夠自行處理交互、錯誤改正 和硬件控制,而不需打擾主應(yīng)用。 ? 隱藏復(fù)雜性 :子系統(tǒng)應(yīng)當(dāng)把那些成組的類打包,形成高度的內(nèi)聚。 ? 邏輯功能分組 :雖然輸入和輸出設(shè)備可能相互間不通信,但邏輯上把它們歸組到一個處理輸入/輸出的子系統(tǒng)中。這樣比較容易識別并定位問題論域中的事件。 類與通過概念封裝的子系統(tǒng)十分類似。事實上,每個子系統(tǒng)都可以被當(dāng)做一個類來實現(xiàn),這個類聚集它的構(gòu)件,提供了一組操作。類和子系統(tǒng)的結(jié)構(gòu)是正交的,一個單個類的實例可能是不止一個子系統(tǒng)的一部分。 高層設(shè)計階段增加了一批必要的類,主要包括了那些可使應(yīng)用軟件與系統(tǒng)的外部世界交互的類 。這些交互則包括與其它軟件系統(tǒng) (如數(shù)據(jù)庫管理系統(tǒng)、鼠標(biāo)和鍵盤 )的界面,與使用來進行數(shù)據(jù)收集或者負責(zé)控制的硬件設(shè)備的界面等。 高層設(shè)計可以表征為標(biāo)識和定義模塊的過程。但這種模塊可以是單個的類,還可以是由一些類組合成的子系統(tǒng)。定義過程是職責(zé)驅(qū)動的。 圖 MVC 框架結(jié)構(gòu) 12 高層設(shè)計和類設(shè)計這兩個階段是相對封閉的。在這種情況下,應(yīng)用軟件中的每一個事物都是一個對象,包括應(yīng)用軟件自身在內(nèi) ! 根據(jù)這個思想,這兩個階段又是連接的。應(yīng)用軟件的設(shè)計是大類的設(shè)計,這種類設(shè)計考察應(yīng)用軟件所期望的每一個行為,并利用這些行為形成應(yīng)用類的界面。 (2) 類設(shè) 計的目標(biāo)和方針 類設(shè)計的第一步是標(biāo)識應(yīng)用所需的概念。應(yīng)用分析過程包括了對問題論域所需的類的模型化;但在最終實現(xiàn)應(yīng)用時不只有這些類,還需要追加一些類。在類設(shè)計的過程中應(yīng)當(dāng)做這些工作。類設(shè)計的主要目標(biāo)如下: ① 單一概念的模型 :在分析與高層設(shè)計階段 , 常常需要使用多個類來表示一個“概念”。一般人們在使用面向?qū)ο?方法開發(fā)軟件時,常常把 一個概念進行分解,用一組類來表示這個概念。當(dāng)然,也可以只用一個獨立的類來表示一個概念。 ② 可復(fù)用的“插接相容性”構(gòu)件 :我們希望所開發(fā)的構(gòu)件可以在未來的應(yīng)用中使用。因此,需要一些 附加特性。例如,在相關(guān)的類的集合中界面的標(biāo)準化,在一個集合內(nèi)部的類的“插接相容性”等。 ③ 可靠的構(gòu)件 :應(yīng)用軟件必須是可靠的 (健壯的和正確定義的 )軟件。而這種可靠性與它的構(gòu)件有關(guān)。每個構(gòu)件必須經(jīng)過充分的測試。但由于成本關(guān)系,往往測試不夠完備。然而,如果我們要建立可復(fù)用的類,則通過測試確保構(gòu)件的可靠性是絕對必要的。 ④ 可集成的構(gòu)件 :我們希望把類的實例用到其它類的開發(fā)和應(yīng)用中,這要求類的界面應(yīng)當(dāng)盡可能小,一個類所需要的數(shù)據(jù)和操作都定義在類定義中。因此,類的設(shè)計應(yīng)當(dāng)盡量減少命名沖突。面向?qū)ο笳Z言的消息語法可 通過鑒別帶有實例名的操作名來減少可能的命名沖突。 類結(jié)構(gòu)提供的封裝使得把概念集成到應(yīng)用的工作變得很容易。封裝特性保證了把一個概念的所有細節(jié)都組合在一個界面下,而信息隱蔽則保證了實現(xiàn)級的名字將不會其它類的名字互相干擾。 我們討論的方針是類的模塊設(shè)計的方針,還要給出類設(shè)計質(zhì)量的度量。 ① 信息隱蔽 :軟件設(shè)計通過信息隱蔽可增強抽象,并可保護 類 的存儲表示不被抽象數(shù)據(jù)類型實例的用戶直接存取。對其表示的唯一存取途徑只能是界面。 ② 消息限制 :類的設(shè)計者應(yīng)當(dāng)為類的命令設(shè)計一個明確的界面,該類實例的用戶應(yīng)當(dāng)只使 用界面提供的操作。 ③ 狹窄界面 :不是所有的操作都是公共的。只有對其它類的實例是必要的操作才放到界面上 ,其它操作 應(yīng)是隱蔽實現(xiàn)的部分。 ④ 強內(nèi)聚 :模塊內(nèi)部各個部分之間應(yīng)有較強的 關(guān)系 ,它們不能分別標(biāo)識。 ⑤ 弱耦合 :一個單獨模塊應(yīng)盡量不依賴于其它模塊。如果在類 A 的實例中建立了類 B的實例,或者如果類 A 的操作需要類 B 的實例做為參數(shù),或者如果類 A 是類 B 的一個 派生類 ,則稱類 A“依賴于”類 B。一個類應(yīng)當(dāng)盡可能少地依賴于其它類。 耦合程度部分依賴于所使用的分解方法。類 A 之所以依賴于類 B,是因為類 A 要求類 B提供服務(wù) 。這個依賴性可通過復(fù)制類 A 中的類 B 的功能來消除。但代碼的復(fù)制減少了系統(tǒng)的靈活性并增加了維護的困難。繼承結(jié)構(gòu)損害了弱耦合的概念。因為在建立 一般化 特殊化關(guān)系 的時候,繼承引入了依賴。 ⑥ 顯式信息傳遞 :除了依賴于最少的類外,還應(yīng)該明確在這些類之間的信息流。在類之間全局變量的共享隱含了信息的傳遞,并且是一種依賴形式。 因此, 兩個類之間的交互應(yīng)當(dāng)僅涉及顯式信息傳遞。顯式信息傳遞是通過參數(shù)表來完成的。 ⑦ 派生類 當(dāng)做 派生類 型 :繼承結(jié)構(gòu)的使用是面向?qū)ο?開發(fā)方法 的一大特色。每個 派生類 應(yīng)該當(dāng)做基類的 特殊化 來開發(fā),而基類所 具有的公共界面成為 派生類 的共有界面的一個子 13 圖 建立子類 集。 C++允許設(shè)計者選擇類的 基類 是共有的或私有的。如果 基類 是共有的,則其共有界面將成為新的 派生類 的共有界面部分,這表明 基類 的行為成為 派生類 的行為部分。這類似于類型與 派生類 型之間的關(guān)系。如果 基類 是私有的,它的行為將不是繼承類的公共行為部分而是實現(xiàn)部分。它的提出是為了提供實現(xiàn)新類的服務(wù)。 ⑧ 抽象類 :某些語言提供了一個類,用它做為繼承結(jié)構(gòu)的開始點,所有用戶定義的類都直接或間接以這個類為 基類 。 Smalltalk 提供了一個類 Object 做為所有類的繼承樹的根,而C++則支 持多重繼承結(jié)構(gòu)。每一種結(jié)構(gòu)都包含了一組類,它們是 (或應(yīng)該是 )某種概念的 特殊化 。這個概念應(yīng)抽象地由結(jié)構(gòu)的根類來表示。因此,每個繼承結(jié)構(gòu)的根類應(yīng)當(dāng)是目標(biāo)概念的一個抽象模型。這個抽象模型生成一個類,它不用于產(chǎn)生實例。它定義了一個最小的共有界面,許多 派生類 可以加到這個界面上以給出概念的一個特定視圖。 (3) 通過復(fù)用設(shè)計類 利用既存 類 來設(shè)計類,有 4 種方式:選擇,分解,配置和演變。這是面向?qū)ο蠹夹g(shù)的一個重要優(yōu)點。許多類的設(shè)計都是基于既存類的復(fù)用。 ① 選擇 : 設(shè)計類最簡單的方法是從既存構(gòu)件中簡單地選擇合乎需要的構(gòu)件。 這就是開發(fā)軟件庫的目的。一個 OO 開發(fā)環(huán)境應(yīng)提供常用構(gòu)件庫,大多數(shù)語言環(huán)境都帶有一個原始構(gòu)件庫 (如整數(shù)、實數(shù)和字符 ),它是基礎(chǔ)層。任一基本構(gòu)件庫 (如“基本數(shù)據(jù)結(jié)構(gòu)”構(gòu)件 )都應(yīng)建立在這些原始層上。這些都是些一般的和可復(fù)用的類。這個層還包括一組提供其它應(yīng)用 論域 服務(wù)的一般類,如窗口系統(tǒng)和圖形圖元。表 顯示了建立在這些層上面的特定域的庫。最低層的 論域 庫包括了應(yīng)用論域的基礎(chǔ)概念并支持廣泛的應(yīng)用開發(fā)。特定項目和特定組的庫包括一些論域庫,它包含為相應(yīng)層所定義的信息。 表 一個面向?qū)ο髽?gòu)件庫的層次 特定組的構(gòu)件 ─ 一個小組為他們自己組內(nèi)所有成員使用而開發(fā) 特定項目的構(gòu)件 ─ 一個小組為某一個項目而開發(fā) 特定問題論域的構(gòu)件 ─ 購自某一個特定論域的軟件銷售商 一般構(gòu)件 ─ 購自專門提供構(gòu)件的銷售商 特定語言原操作 ─ 購自一個編譯器的銷售商 ② 分解 :最初標(biāo)識的“類”常常是幾個概念的組合。在設(shè)計時,可能會發(fā)現(xiàn)所標(biāo)識的操作落在分散的幾個概念中,或者會發(fā)現(xiàn) ,數(shù)據(jù)屬性被分開放到模型中拆散概念形成的幾個組內(nèi)。這樣我們必須把一個類分成幾個類,希望新標(biāo)識的類容易實現(xiàn),或者它們已經(jīng)存在。 ③ 配置 : 在設(shè)計類時,可能會要求由既存類的實例提供類的某些特性。通過把相應(yīng)類的實例聲明為新類的屬性來配置新類。例如,一種仿真服務(wù)器可能要求使用一個計時器來跟蹤服務(wù)時間。設(shè)計者不必開發(fā)在這個行為中所需的數(shù)據(jù)和操作,而是應(yīng)當(dāng)找到計時器類,并在服務(wù)器類的定義中聲明它。 ④ 演變 : 要開發(fā)的新類可能與一個既存類非常類似,但不完全相同。此時,不適宜采用“選擇”操作,但可以從一個既存類 演變 成一個新類 ,可以 利用繼承機制來表示 一般化 特殊化 的 關(guān)系 。 特殊化 處理有三種可能的方式。 ? 由既存類建立子類 :現(xiàn)要建立一個新類“起重車”。它的許多屬性和服務(wù)都在既存類“汽車”中。關(guān)系如圖 所示。新類是既存類的特殊情形。這時直接讓“起重車”類作為“汽車”類的子類即可。 ② 建立繼承層次由既存類建立新類 : 現(xiàn)要增加一個新類“拖拉機”。它的屬性與服務(wù)有的與“汽車”類相同,有的與“汽車”類不同。關(guān)系如圖 所示。這時,調(diào)整繼承結(jié)構(gòu)。汽車類 起重車 類 14 建立一個
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1