面向對象的系統分析(三)-面向對象分析基本方法

OOA方法共分爲五大步驟:標識對象,標識結構,標識主題,定義屬性及定義服務。下面分別作一簡要介紹。

    1.標識對象

    OOA中的對象實質上是類,它可定義爲對數據和在其上執行操作的抽象,反映出一個系統爲現實世界的事物保存信息及與其發生相互作用的能力;同時它也是屬性的值以及這些屬性上專有操作的封裝。

    可以用單個名詞或形容詞名詞作爲對象名,當然採用問題空間的標準名稱作爲對象名更好。如何定義對象來自於該領域的實踐和經驗。首先應仔細觀察問題空間,研究用戶世界,然後主動和用戶交談;可以參考一下以前OOA的成果以及別的系統的做法;手頭的些文字和圖片資料也需仔細閱讀;最後給出一個原型。

    爲尋找可能的對象,可以從以下幾個方面尋找:結構,與正在考慮的系統發生相互作用的其它系統和設備,問題空間中應記憶的事件,系統中的人員以及操作過程、地點、組織等。最後,還需要對這些已找出的對象進行整理,去掉那些沒有必要爲它保存信息和提供服務的對象,也不要把派生結果當作對象。

    2.標識結構

    結構是問題空間裏複雜事物和複雜關係的表示。這裏結構分爲兩種:分類結構和組裝結構。分類結構用於刻劃問題空間的類--成員層次,它通過蒐集公共特性並把這種特性擴充到特例中來顯示現實世界事件的通用性及專用性。組裝結構刻劃一個整體及其組成部分。

    分類結構和組裝結構能使分析人員和領域專家的注意力集中在具有多個類和對象的複雜問題上。而且,使用結構能使分析人員考慮到問題的邊緣,並指示那些尚未發現的類和對象。除此之外,分類結構還具有繼承性。認定一個分類結構時,首先認爲對象具有最一般的含義,然後檢查它的各種可能的專用特性是否在問題空間和系統範圍內,是否是繼承下列的,是否在類-對象鎖考慮的範圍中.同樣的,在把對象看成是專用的,對於它的各種可能的通用特性作上述類似的檢查。分類結構最常見的形式就是泛化-特化層次了,因此在命名時要注意,以避免由於繼承而發生的衝突。

    認定組裝結構時,要考慮以下因素:整體 部分、容器  內容、集體 成員。然後把一個對象看成是整體,檢查它的各種可能的潛在部分,是否在問題空間和系統範圍內,是否僅僅有一個狀態值(如果是的話,就在整體中加上一個相應的屬性),是否提供的是一個有用的問題空間內的抽象。同樣地,再把對象看成是一個部分,對它的各種可能的整體作上述類似的考慮。

    3.標識主題

    主題提供了一個引導讀者(分析員,問題領域的專家,管理者或客戶)在一個時間內所能考慮和理解模型的多少部分的機制,主題同時也給出了OOA 模型的概貌.

    選擇主題時,首先把每一個結構中最上面的類的名字作爲一個主題,再把每一個不在結構中的對象的名字作爲一個主題。然後以結構、屬性和服務 個層爲指導,考慮問題的子領域,最小相互依賴性和相互作用性,以提煉主題。在主題層,畫一個簡單的方框,裏面寫上主題的名字和編號以表示一個主題。在別的層,則通過這些編了號的主題引導讀者從一個主題到另一個主題。對於大型模型,爲了便於通訊,每一層都可組織成按主題劃分的圖。只要對指導讀者有利,一個類 對象可以不只在一個主題中出現,而主題也可以嵌套。

    4.定義屬性

    屬性是描述對象或分類結構實例的數據單元。通過對抽象模型增加更多的細節,屬性明確了一個對象的名字意味着什麼。在OOA中,對屬性的定義分爲以下步驟:認定屬性,確定屬性的位置;識別實例的關聯;檢查特例;說明屬性。

    認定屬性有個基本原則:首先,要確認它對相應的對象或分類結構的每一個實例都是適用的。其次,一個屬性即使對某種對象的實例都是適用的,也還要考慮在現實世界中它與這種事物的關係是不是最密切的。第三,認定的屬性應當是一種相對的原子概念,也就是說,不依賴於並列的其它屬性就可以被理解。

    確定屬性的位置主要是針對分類結構而言,採用的是繼承的觀點,低層對象的共有屬性應在上層對象中定義,而自己只定義特有的屬性。

    實例的關聯指的是問題空間中的一種映射,它反映了對象相互需要的關係,先對對象添加連線,再定義其是單重、多重以及是強制的還是任選的。

    接下來應檢查一些特殊情況,如不能適用於對象所有實例的屬性,只有一個屬性的對象;值的數目不定的屬性;適配參數,使目標系統適應不同的運行環境或要求。最後,用名字和描述說明屬性,還可以增加一定的屬性約束(如允許的取值、範圍、限制、計量單位和精度)

    5.定義服務

    一個服務就是收到一條消息之後所執行的處理。服務進一步細化了現實的抽象表示,它表明某個類的對象能提供什麼處理。

    定義服務,首先是要定義每一種對象和分類結構爲應用所要求的行爲。其次,還要定義對象的實例之間必要的通信,這裏,通信的基本方式是消息傳遞,所以定義通信就是定義實例之間的消息關聯。定義服務分爲以下幾步:標識對象陳述、認定需要的服務、認定消息關聯、對服務進行規格說明。

    首先檢查屬性中可能的值以及系統中是否存在相應的服務,然後用對象陳述圖來描述。需要的服務分爲兩類:簡單的和複雜的。簡單的包括對象的建立和對象之間的連接,訪問對象屬性的值,以及刪除對象及其連接。複雜的包括根據對象屬性值的計算類服務以及對別的系統的輸入/輸出和設備的管理類服務。

    消息關聯是事件-響應和數據流的一種結合,每一種消息關聯都表示着一條要發出的消息和收到這條消息要作出的一個響應,它也是實例之間的一種映射關係。認定消息關聯,首先在已經用實例關聯聯繫起來的那些實例之間增加消息關聯。然後檢查那些需要其他實例進行的加工,考慮增加其它必要的消息關聯。

    對服務給出規格說明,重點是那些要求使外部可觀察到的行爲,目的是強調可測試部分,作爲將來對系統需求進行驗證,對系統進行驗收和測試的基準。因此,對於每一個服務首先要考慮的是,它所決定的系統行爲是不是外界可見的或者可測試的。

整個分析結果的規格說明在給出服務的說明後即告完成。接着,用模板和對象陳述圖,服務列表圖來描述服務和附加的約束,對於那些依賴於陳述的服務,使用服務/陳述表。

    最後,彙集所有文檔,它包括OOA模型、對象說明書、補充的文檔、關鍵運行路徑表、附加的系統限制以及服務/陳述表。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章