需求分析師在需求調研分析工作中經常會用到各種分析方法,但對各種建模方法沒有體系化的認識,經常講概念混淆。本文從常用的結構化分析方法和面向對象分析方法著手,對各種建模方法進行梳理,幫助理解其含義及作用。
  1  建模概述
  1.1  什么是建模?

  建模就是采用表格化、圖形化、公式化的方式,將系統的構成及其構成間的關系呈現給人們的一種技術方法??赡苁且驗檐浖旧淼牟豢梢?,使得軟件的建模也顯得抽象,但在平常生活中,建模隨處可見,比如蓋房子,需要畫圖紙,畫圖紙就是建模的過程,而圖紙就是建模產出的模型。在樓盤預售時,房子都還沒建好,地產商會先做個縮小版的原型出來,甚至做個樣板房讓顧客有直觀的感受,這個也是建模。當房子賣出去了,屋主需要裝修了,找裝修公司設計,設計師根據屋主需要設計一套圖紙,甚至細到水電的走線,這些也是建模。因此將開發軟件比作蓋房子,其建模過程就相當于繪制圖紙的過程。
  可以說對軟件系統進行建模的目的是幫助我們按照實際情況或按我們需求的樣式對系統進行可視化;提供一種詳細說明系統的結構或行為的方法;給出一個知道系統構造的模板;對我們所作出的決策進行文檔化。
  1.2  建模演變歷程
  軟件建模并不是從來就有的,而是隨著軟件工程的發展而不斷演變。主要經過了三個階段。
  第一階段:程序=數據結構+算法
  出現于20世紀50~60年代,軟件開發主要解決的是科學計算問題,Fortran語言是其代表。其建模關鍵點是選擇合適的數據結構和算法。
  第二階段:結構化分析方法
  出現于20世紀60~70年代,將解決一些與數據處理相關的問題,例如計費等。COBOL、C語言是其代表。其建模關鍵點有兩方面,一是確定有哪些數據,格式是什么,如何存儲,主要通過E/R模型表達;二是確定數據的加工、處理過程,主要通過DFD(數據流圖)表達。
  第三階段:面向對象分析方法
  出現于20世紀80~90年代,信息系統覆蓋了更多業務過程,數據不再是唯一的視角,事(業務流程)、人的視角越來越重要,因此加入更多這方面的建模工具。
  目前結構化分析方法和面向對象分析方法仍廣泛應用。
  2  結構化分析方法
  結構化分析方法(Structured Analysis,簡稱SA)是將待解決的問題看做一個系統,從而用系統科學的思想方法(抽象、分解、模塊化)來分析和解決問題,并基于功能分解設計系統結構,通過不斷把復雜的處理逐層分解來簡化問題,其最核心思想是自頂向下的分解。
  結構化分析方法模型如下圖所示:

  ● 數據字典是模型的核心,是關于數據的信息集合,也就是對數據流圖中包含的所有元素定義的集合。對于數據流圖中出現的所有被命名的圖形元素加以定義,使得每個圖形元素的名字都有確切的解釋。
  ● 實體關系圖(ER圖):描述數據對象間的關系,用于數據建模。
  ● 數據流圖(DFD圖):描述了數據流在系統中流動的過程,以及對數據流進行變換的功能,用于功能建模。
  ● 狀態遷移圖(STD圖):描述了對外部事件的響應方式,表示了系統的各種行為模式(稱為狀態)以及在狀態間進行變遷的方式,用于行為建模。
  可見,結構化分析方法包含3層建模,數據建模、功能建模以及行為建模。
  2.1  數據建模——ER圖
  數據模型是為了把用戶的數據要求清晰明確地表達出來所建立的一個概念性的模型,也稱為概念模型,因此數據建模也稱為概念建模。概念性模型是一種面向問題的數據模型,是按照用戶的觀點來對數據和信息進行建模。它描述了從用戶角度看到的數據,也反映了用戶的現實環境。
  數據建模的目標是為了明確下列與數據處理相關的特定問題:
  ● 系統處理哪些主要的數據對象?
  ● 每個數據對象的組成如何?
  ● 哪些屬性描述了這些數據對象?
  ● 這些數據對象當前位于何處?
  ● 數據對象之間的關系?
  ● 數據對象和變換它們的處理之間有哪些關系?
  數據模型常用ER圖表示,ER圖也稱實體關系圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯系的方法。用矩形表示實體型,矩形框內寫明實體名;用橢圓表示實體的屬性,并用無向邊將其與相應的實體型連接起來;用菱形表示實體型之間的聯系,在菱形框內寫明聯系名,并用無向邊分別與有關實體型連接起來,同時在無向邊旁標上聯系的類型(1:1,1:n或m:n)。ER圖示例如下圖所示,具體繪制方法不做詳細說明。

  另外,對于設計方面的數據建模包括概念建模、邏輯建模和物理建模,而需求分析中的數據建模相當于設計中第一階段的概念建模。由于是設計方面的建模方法,這里不再說明,詳細信息可網上查找“詳解數據建模的三個階段”。
  2.2   功能建模——DFD圖
  當數據或信息“流”過信息系統時將會被系統的功能所處理、加工活變換,再將處理或變換后的數據從系統中輸出,DFD圖從數據傳遞和加工角度,以圖形方式來表達系統的邏輯功能、數據在系統內部的邏輯流向和邏輯變換過程。而功能建模正是通過DFD圖將系統所需實現的功能繪制出來的過程。
  DFD圖的基本組成包括數據流、加工、數據存儲和外部實體。通常用箭頭標志數據流,用圓或橢圓表示加工,用雙杠表示數據存儲,用方框表示外部實體,即數據的源點或終點。DFD圖示例如下圖所示。

  2.3  行為建模——STD圖
  STD圖(State Transition Diagram)用于描述系統或對象的狀態,以及導致系統或對象狀態發生改變的事件,從而描述系統的行為。它指明了作為特定事件的結果(狀態),在狀態中包含可能執行的行為。
  STD圖中,用圓圈表示可得到的系統狀態,用箭頭表示從一種狀態向另一種狀態的遷移,在箭頭上要寫上導致遷移的信號或事件的名稱。STD圖示例如下圖所示。

  3  面向對象分析方法
  面向對象方法是從內部結構上模擬客觀世界 ,其基本思想認為對象是對現實世界客觀實體的描述 ,均由其屬性和相關操作組成 ,是系統描述的基本單位。面向對象方法更強調運用人類在日常的邏輯思維中經常采用的思想方法和原則 ,例如抽象、分類、繼承、聚合、封裝等 ,這使得軟件開發者能更有效地思考問題 ,并以其他人也能看得懂的方式把自己的認識表達出來。
  面向對象方法包括面向對象需求分析(OOA)、面向對象設計(OOD)、面向對象編程(OOP)。而面向對象分析方法主要經過3個建模過程,包括結構建模、行為建模和功能建模,3中建模均采用統一建模語言 UML (Unified Modeling Language)。
  根據UML2.0標準,一共定義了13種不同的圖,其功能各有不同,而OOA主要使用到其中的5種,分別是類圖、活動圖、用例圖、構件圖和部署圖。
  3.1  結構建模
  結構建模也叫領域建?;蚋拍罱?,是對業務或系統的某個時刻或某段時間內的狀態進行系統化描述,一般使用結構型的UML圖進行結構建模。結構建模所表示的內容一般是靜態的,在一段時間內是不會變化的。如用類圖表示業務及業務之間的關系,用部署圖、構件圖表示系統的部署及架構設計。
  類圖示例如下圖所示: