1. 程式人生 > >《軟體工程》-面向物件技術

《軟體工程》-面向物件技術

【內容】
1.面向物件概念
(1)什麼是面向物件
面向物件=物件+類+繼承+通訊
面向物件是一種對現實世界理解和抽象的方法,是計算機程式設計技術發展到一定階段後的產物;如果一個軟體系統是使用這樣4個概念設計和實現的,則我們認為這個軟體系統是面向物件的。
(2)物件
物件是面向物件開發模式的基本成分,是系統中用來描述客觀事物的一個實體,構成一個系統的基本單位。
標識:每個物件可用它本身的一組屬性和它可以執行的一組操作來定義。
屬性:屬性一般只能通過執行物件的操作來改變。
操作:操作又稱為方法或服務,它描述了物件執行的功能,若通過訊息傳遞,還可以為其它物件使用。
其中,訊息(物件和另一物件的通訊)
是一個物件與另一個物件的通訊單元,是要求某個物件執行類中定義的某個操作的規格說明。
(3)類


類是一組具有相同資料結構和相同操作的物件的集合。
類的定義包括一組資料屬性和在資料上的一組合法操作。
(4)繼承
繼承是使用已存在的定義做為基礎建立新定義的技術。
新類的定義可以是既存類所宣告的資料和新類所增加的宣告的組合。
2.面向物件方法的開發過程
面向物件方法改進了在生存期各個階段之間的介面,因為在生存期各個階段所開發出來的“部件”都是類。
在面向過程生存期的各個階段對各個類的資訊進行細化,類成為分析、設計和實現的基本單元。
(1)面向物件分析(OOA)
在這裡插入圖片描述
(2)論域分析
論域分析開發問題論域的模型,考察問題論域內的一個較寬的範圍,分析覆蓋的範圍應比直接要解決的問題更多;建立大致的系統實現環境。
(3)應用分析

應用分析則根據特定應用的需求進行論域分析。
應用(或系統)分析細化在論域分析階段所開發出來的資訊,把注意力集中於當前要解決的問題。
(4)類
類的定義
一旦標識了一個類,就給出了它的規格說明,其中包括類的例項可執行的操作和它們的資料表示。
類的規格說明定義了施加於物件的資料儲存上的一組操作。
在這裡插入圖片描述
類的實現
通過變數的宣告、操作介面的實現及支援介面操作的函式的實現,可實現一個類的預期行為和狀態。
實現是與語言有關的。一個好的面嚮物件語言應當分離共有介面與其內部實現。
(5)類的測試
如果類的定義提供的介面比較狹窄,那麼窮舉測試就有可能實現。
類的測試在最抽象的層次開始,沿繼承關係繼續向下進行。
已經測試過的部分不需要從新測試。
(6)求精和維護

這是一個在軟體生存期中最花費時間的部分。
傳統的維護活動是針對應用的,而求精過程是針對類,針對把類整合在一起的結構。
我們可以標識抽象的抽象,使得繼承結構通過一般化增加新的層次,即在既存的根類之上增加新的層次。
(7)物件模型化技術OMT
物件模型化技術把分析時收集的資訊構造在三類模型中,即物件模型、功能模型和動態模型。這個模型化的過程是一個迭代過程。
在這裡插入圖片描述
其中,
1)物件模型
是三個模型中最關鍵的一個模型,它的作用是描述系統的靜態結構,包括構成系統的類和物件,它們的屬性和操作,及它們之間的關係。
在OMT中,類與類之間的關係叫做關聯。
2)動態模型
動態模型著重於系統的控制邏輯。
它包括兩個圖,一是狀態圖,一是事件追蹤圖。
動態模型由多個狀態圖組成;各個狀態圖併發地執行,並可以獨立地改變狀態。
3)功能模型
功能模型由多個數據流圖組成,它們指明從外部輸入,通過操作和內部儲存,直到外部輸出,這整個的資料流情況。功能模型中所有的資料流圖往往形成一個層次結構。在這個層次結構中,一個數據流圖中的過程可以由下一層的資料流圖做進一步的說明。
(8)類和類之間的關聯:聚合、限定、角色
聚合:代表整體與部分的關係,這是一種特殊形式的關聯。
限定:用以對關聯的含義做某種約束。
角色:用來說明關聯的一端。由於多數關聯具有兩個端點,因而涉及到兩個角色。
(9)面向物件分析(OOA)
1)OOA有兩個任務:
形式地說明我們所面對的應用問題,最終成為軟體系統基本構成的物件,還有系統所必須遵從的,由應用環境所決定的規則和約束。
明確地規定構成系統的物件如何協同合作,完成指定的功能,構造OOA概念模型的層次。
2)構造和評審OOA概念模型的順序和由五個層次組成,每個層次的工作都為系統的規格說明增加了一個組成部分。
這五個層次是:類與物件、屬性、服務、結構和主題。
3)標識結構
一般化—特殊化結構:如果類A具有類B全部屬性和服務,並且具有自身特有的屬性和服務,類A叫做類B的特殊類,類B是類A是一般類。
在這裡插入圖片描述
整體—部分結構:如果物件A是物件B的一個組成部分,則稱B為A的整體物件,A為B的部分物件,兩者之間的關係稱為整體和部分關係、
在這裡插入圖片描述
4)標識一般-特殊結構的方法和策略
它是否在問題論域中?
是否在系統的職責內?
繼承性是否存在?
它是否能夠符合選擇類和物件的標準?
5)標識整體-部分結構的方法和策略
應當尋找什麼?
總體-部分關聯;
包含-內含關聯;
收集-成員關聯
6)標識屬性的方法和策略
找出屬性;
將屬性安放在適當的位置;
找出例項連線;
檢查特殊情況;
描述屬性;
考慮取值範圍、極限值、預設值、建立和存取許可權、精確度、是否會受到其它屬性值等。
7)定義服務的方法和策略
找出每一個物件的所有狀態,在各種狀態需要做的工作。
利用狀態遷移圖;
找出必要的操作;
建立訊息連線;
描述服務:利用狀態轉換圖、指令碼和事件追蹤圖,描述服務的功能。
8)識別主題
主題可以看成是高層的模組或子系統 ;
主題是把一組具有較強聯絡的類組織在一起得到類的集合;對於面向物件分析模型,主題標識此模型的整體框架。
3.面向物件設計(OOD)
(1)高層設計
高層設計階段開發系統的結構,即構造應用軟體的總體模型。
在這裡插入圖片描述
高層設計的特點:
高層設計可以表徵為標識和定義模組的過程。
模組可以是一個單個的類,也可以是由一些類組合成的子系統。
定義過程是職責驅動的。
高層設計應遵循的原則:
應使得子系統的各個高層部件之間的通訊量達到最小;
子系統應當把那些成組的類打包,形成高度的內聚;
邏輯功能分組,提供一個一個單元,識別並定位問題事件。
(2)Coad和Yourdon高層設計方法
Coad和Yourdon在設計階段中繼續採用分析階段中提到的5個層次。
在設計階段中,這五個層次
問題論域部分 執行基本應用功能的物件
人機互動部分 指定了用於系統的某個特定實現的,介面技術
任務管理部分 指定了那些建立系統是必須建立的作業系統部分
資料管理部分 定義了那些與所用資料庫技術介面的物件
4.使用者介面部分的設計
在設計階段必須根據需求把互動細節加入到使用者介面設計中,包括人機互動所必需的實際顯示和輸入。使用者介面部分設計主要由以下幾個方面組成:
(1)使用者分類
按技能層次分類;
按組織層次分類;
按職能分類;
(2)描述人及其任務的指令碼
對以上定義的每一類使用者,列出對一下問題做出的考慮:什麼人、目的、特點、成功的關鍵因素,熟悉程度以及任務指令碼。
(3)設計命令層
研究現行的人機互動活動的內容和準則;建立一個初始的命令層;細化命令層。
(4)設計詳細的互動
使用者介面設計有若干原則,包括:
一致性:採用一致的術語、一致的步驟和一致的活動;操作步驟少;不要“啞播放”。
(5)繼續做原型
使用者介面原型是使用者介面設計的重要工作。
使用快速原型工具做出原型讓使用者使用,通過使用者反饋、修改、演示的迭代,使介面越來越有效。
(6)設計HIC(人機互動)類
視窗需要進一步細化;設計HIC類,首先從組織視窗和部件的使用者介面的設計開始。
5.任務管理部分的設計
任務:程序的別稱,是執行一系列活動的一段程式。
任務管理主要包括任務的選擇和調整:
(1)定義各個任務
定義任務的工作主要包括:它是什麼任務、如何協調工作及如何通訊。
6.資料管理部分的設計
資料管理部分提供了在資料管理系統中儲存和檢索物件的基本結構,包括對永久性資料的訪問和管理。
它分離了資料管理機構所關心的事項,包括檔案、關係型DBMS或面向物件DBMS等。
資料管理方法主要有3種:檔案管理 、關係資料庫管理 和麵向物件資料管理。
7.面向物件環境下的測試策略
(1)單元測試(類測試)
基於定義的測試(黑盒測試功能),基於程式的測試(白盒測試結構);
在面向物件環境下,最小的可測試的單元是封裝了的類或物件,而不是程式模組。面向物件軟體的類測試等價於傳統軟體開發方法中的單元測試。
(2)組裝測試(整合測試)
類組裝
測試一個新類時,需要先測試在定義中所涉及的類,再考慮這些類的組裝。
總體組裝
把所有組成完整軟體的各個部分集合在一起。
(3)基於線索測試
(4)基於應用測試
(5)確認測試