1. 程式人生 > >面向物件系統分析與設計

面向物件系統分析與設計

OOA概述

面向物件分析方法(Object-Oriented Analysis, OOA),是在一個系統的開發過程中進行了系統業務調查之後,按照面向物件的思想來分析問題。

1. 分析與設計

什麼是分析

強調的是對問題和需求的調查研究,而不是解決方案。

  • 需求分析:通常簡稱需求或分析,調查研究系統要成功所必須滿足的需求。
  • 面向物件分析:調查研究領域物件以發現重要資訊來滿足需求。

什麼是設計

強調的是滿足需求的概念上的解決方案(在軟體或硬體方面)。設計不是實現,雖然一個好的設計在完成後可以被(程式設計)實現。

總結

  • 分析:做正確的事(do the right thing)——確定做什麼事?
  • 設計:正確地做事(do the thing right)——怎樣把確定的事情做好?
分析 設計
使用者視角 計算機視角
賣的視角 做的視角
具體 抽象
產品當專案做 專案當產品做

2. 面向物件

什麼是面向物件的設計

面向物件是一種對現實世界理解和抽象的方法。 面向物件的分析(Object Oriented Analysis,OOA)強調的是在問題域內發現和描述物件(或概念類)。 什麼是OOA

面向物件的優點

  • 複用:通過抽象、繼承、關聯、封裝等手段
  • 應變:彈性應對需求變化
  • 溝通:開發人員、使用者、管理人員
  • 市場:應付市場的變化
  • 士氣:員工的士氣

UML

統一建模語言(Unified Modeling Language,UML)是用於指定、構造和記錄系統工件的一種視覺化語言。 The Unified Modeling Language is a visual language for specifying, constructing and documenting the artifacts of systems. UML圖元素

3. 軟體開發

軟體過程

軟體過程:定義了軟體開發、部署和維護的步驟。 軟體過程本身就是軟體:軟體過程是一種被由人構成的虛擬機器執行的軟體。

軟體過程的譜系

  • 迭代式開發
  • 統一過程(Unified Process)
  • 敏捷UP

迭代式開發

  • 瀑布生命週期 在瀑布生命週期過程中,試圖在編寫程式碼之前定義幾乎所有的需求,以及明確詳盡的時間表。
  • 迭代式的生命週期 通過多次的迭代獲得週期性的反饋,以這些反饋為驅動力,對系統進行不斷的擴充套件和精化。 迭代式開發將軟體開發過程分解為一系列小的,固定週期的(比如,4個星期)的小專案,每個小專案成為一個迭代。

統一過程(UP)

UP專案將工作和迭代組織分為4個主要的階段:

  • 初始(Inception) = 需求
  • 細化(Elaboration) = 設計
  • 構造(Construction) = 實現
  • 移交(Transition)

用例圖

一個用例模型由若干個用例圖(use case diagram)描述。用例圖是顯示一組用例參與者以及它們之間關係的圖。說明的是誰要使用系統,以及他們使用該系統可以做些什麼。 用例圖是從使用者的角度來描述對軟體產品的需求,分析產品的功能和行為。用例圖定義和描述了系統的外部可見行為,是分析、設計直至組裝測試的重要依據。

  • 參與者(actor):系統以外的,在使用系統與系統互動中所扮演的角色。
  • 用例(use case):對包括變數在內的一組動作序列的描述,系統執行這些動作,併產生傳遞特定參與者的價值的可觀察結果。簡單來說,用例是參與者想要系統做的事情
  • 系統邊界:用來表示正在建模系統的邊界。

用例之間的關係

  • 包含關係:用例可以簡單地包含其他用例具有的行為。箭頭由基礎(Base)用例指向被包含(Inclusion)用例。 用例圖:包含關係
  • 拓展關係:在一定條件下,把新的行為加入到已有的用例中,獲得的新用例叫做擴充套件用例,原有的用例叫做基礎用例,從擴充套件用例到基礎用例的關係就是擴充套件關係。 用例圖:擴充套件關係
  • 泛化關係:用例的泛化指的是一個父用例可以被特化形成多個子用例,而父用例和子用例之間的關係就是泛化關係。子用例繼承了父用例所有的結構、行為和關係,並且可以新增、覆蓋、改變繼承的行為。三角箭頭從子用例指向父用例。 用例圖:泛化關係 例如: 用例圖:泛化關係例圖1

要點:用例的粒度

“四輪馬車”:

  • C(Create)
  • R(Read)
  • U(Update)
  • D(Delete)

類圖

類圖與用例圖

用例圖:外觀 類圖:內部機理 類圖與用例圖 類圖(class diagram):用來表達業務領域或系統內部的靜態結構。 分析人員通過類圖進行業務建模,描述業務領域內概念類機器之間關係的靜態結構。設計人員通過類圖進行系統設計,將數以萬計的程式程式碼分門別類,構成了系統內部的靜態結構。

概念類

概念類是思想、事物或類(物件)。概念類可以從其符號、內涵和外延來考慮。

  • 符號:表示概念類的詞語或圖形
  • 內涵:概念類的定義
  • 外延:概念類所適用 抽象是從眾多的事物中抽取出共同的、本質性的特徵,而捨棄其非本質的特徵。 概念類 如何找到概念類
  • 重用和修改現有模型
  • 使用分類列表
  • 確定名次短語:將對領域的文字描述中的名詞和名詞短語作為候選的概念類或屬性。——關鍵抽象 確定關鍵抽象的方法
  • 從軟體需求規格說明書或用例及用例描述中將所有名詞抽取出來,填入“候選關鍵抽象”表格,從而識別出所有的關鍵抽象。
  • 用CRC(Class-Responsibility-Collaborator)分析法確定最基本的一組關鍵抽象。 候選的關鍵抽象表格 三個屬性:
  • 候選的關鍵抽象:包含了所有從軟體需求說明書中找出來的名詞
  • 排除的原因
  • 選定的名字:填寫被提取出來作為關鍵抽象的類名 候選的關鍵抽象表格 CRC(Class-Responsibility-Collaborator)分析法 CRC分析法

領域模型

領域模型:也稱為域模型、概念模型、領域物件模型和分析物件模型,是對領域內的概念類或現實中物件的視覺化表示。 應用UML表示法,領域模型被描述為一組沒有定義操作的類圖。是OO分析中最重要的和經典的模型。