天天看點

《面向對象分析與設計》一2.2 面向對象分析綜述

系統分析就是研究問題域,産生一個滿足使用者需求的系統分析模型。這個模型應能正确地描述問題域和系統責任,使後續開發階段的有關人員能根據這個模型繼續進行工作。

自軟體工程學問世以來,已出現過多種分析方法,其中有影響的是功能分解法、資料流法、資訊模組化法和20世紀80年代後期興起的面向對象方法。前三種分析方法在曆史上發揮過應有的作用,用它們也建立過許多成功的系統,直到今天仍然被一些開發者所采用。我們在談到這些方法的缺點時不是要否定它們,而是針對具體問題進行讨論。應該指出,面向對象的分析正是在許多方面借鑒了以往的分析方法。

面向對象的分析,強調用對象的概念對問題域中的事物進行完整的描述,刻畫事物的性質和行為,同時也要如實地反映問題域中的事物之間的各種關系,包括分類關系、組裝關系等靜态關系以及動态關系。

自20世紀80年代後期以來,相繼出現了多種流派的ooa及ood方法。各種方法的共同點是,都基于面向對象的基本概念與原則,但是在概念與表示法、系統模型和開發過程等方面又各有差别。統一模組化語言uml的出現,使面向對象模組化概念及表示法趨于統一。我國的軟體行業标準“面向對象的軟體模組化規範——概念與表示法”就是參照uml制定的。下面分别闡述在ooa階段本書所使用的概念與表示法、ooa模型及過程指導。

1概念與表示法

在ooa階段所使用的概念包括對象、屬性、操作、類、繼承、聚合和關聯等,這些概念屬于uml的核心内容,且表示法也是相一緻的。

2ooa模型

ooa模型就是通過面向對象的分析所建立的系統分析模型,表達了在ooa階段所認識到的系統成分及彼此之間的關系。在可視化方面,用模組化概念所對應的表示法繪制相應種類的圖。

目前的各種ooa方法所産生的ooa模型從整體形态、結構架構到具體内容都有較大的差異。ooa模型的差異集中地展現在各種方法所強調的重點和主要特色方面。一般來說,各種方法隻把它認為最重要的資訊放在模型中表示,其他資訊則放到詳細說明中,作為對模型的補充描述和後續開發階段的實施細則。

圖22所示的ooa模型是按照圖加相關文檔這種方式組織的。在第14章要對模型和圖進行詳細闡述。

《面向對象分析與設計》一2.2 面向對象分析綜述

使用用況圖來捕獲與描述使用者的要求,即系統的需求,進而建立系統的需求模型(用況模型)。盡管有關建立用況模型的内容并不是面向對象的,但在uml中詳細地規定了這方面的内容,且用況模型已經被人們普遍地接受,因而本書把建立用況模型的有關知識和技術放在ooa中講述。按照某些做法,也可以在ooa之前利用用況模型對系統的需求進行捕獲與描述。在開發系統時,上述兩種做法是不沖突的,這隻是一個階段劃分問題。

用類圖建構的模型是系統的基本模型,主要是因為類圖為面向對象程式設計提供了最直接的依據。基本模型為系統的靜态模型,它描述系統的結構特征。類圖的主要構成成分是:類、屬性、操作、泛化、關聯和依賴。這些成分所表達的模型資訊可以從以下三個層次來看待:

 對象層:給出系統中所有反映問題域與系統責任的對象。用類符号表達屬于一個類的對象的集合。類作為對象的抽象描述,是構成系統的基本機關。

 特征層:給出每一個類(及其所代表的對象)的内部特征,即給出每個類的屬性與操作。該層要以分析階段所能達到的程度為限給出類的内部特征的細節。

 關系層:給出各個類(及其所代表的對象)彼此之間的關系。這些關系包括泛化、關聯和依賴。該層描述了對象與外部的聯系。

概括地講,ooa基本模型的三個層次分别描述了:1)系統中應設立哪幾類對象;2)每類對象的内部構成;3)每類對象與外部的關系。三個層次的資訊(包括圖形符号和文字)疊加在一起,形成完整的類圖。

按照uml的做法,可以建立對象圖,以作為類圖的補充。

為建立系統的行為模型,需要建立互動圖、活動圖或狀态機圖。互動圖主要有兩種形式:順序圖和通信圖,每種形式強調了同一個互動的不同方面。順序圖表示按時間順序排列的互動,通信圖表示圍繞着角色所組織的互動以及角色之間的鍊。與順序圖不同,通信圖着重表示扮演不同角色的對象之間的連接配接。活動圖展示從活動到活動的控制流和資料流,通常用于對業務過程和操作的算法模組化。狀态機圖展示對象在其生命周期内由于響應事件而經曆的一系列狀态,以及對這些事件做出的反應。

包圖用于組織系統的模型,其中的包是在模型之上附加的控制複雜性的機制。通過對關系密切的元素進行打包,有助于了解群組織系統模型。

相對基本模型來說,系統的行為模型和用包圖建立的系統組織模型,都作為系統的輔助模型。

以圖的方式建立模型是不夠的。對各種圖中的模組化元素,還要按一定的要求進行規約(即較長的描述)。通過用圖表示的模型加上模型規約的方式,構成完整的模型。有關模型規約的具體格式,參見附錄b。

3ooa過程

《面向對象分析與設計》一2.2 面向對象分析綜述

各種ooa方法一般都要規定一些進行實際分析工作的具體步驟,指出每個步驟應該做什麼以及如何做,并給出一些啟發政策,用以告訴使用者對各種情況應該怎樣處理以及從哪些方面去思考能有助于實作自己的目标。

現在還沒有關于面向對象的軟體模組化過程指導方面的國際規範,各種ooa方法在建立模型的過程方面都有差别,且詳簡也有所不同。本書所使用的模組化過程指導,是從由數十家高校、科研院所和軟體企業參加的國家重點科技攻關計劃“青鳥工程”所研發的面向對象軟體開發規範中總結出來的,圖23給出了其具體内容。

圖23給出的是ooa過程模型,其中隻給出了過程中的活動,而沒有展示過程角色和資源等因素。圖中的箭頭表明模組化活動是可以回溯的,也可以交替進行。例如,在發現了一些(并非全部)對象之後,就可以開始定義它們的屬性與操作;此時若認識到某些關系,可以及時建立這些關系;在建立關系時得到某種啟發,聯想到其他對象,又可及時轉到發現對象的活動。在case工具的支援下,各種活動之間的切換可以相當靈活。有些軟體開發組織習慣于規定一個基本的活動次序,使ooa過程按這種次序一步一步地執行,這也是可以的。其實各軟體開發組織應該依據或參照經過檢驗的開發過程,建立适合自己需要的開發過程。

以下是對實施ooa過程的幾點建議:

1)把建立需求模型放在分析工作的開始。通過定義用況和建立用況圖來對使用者需求進行規範化描述。

2)把建立基本模型的三個活動安排得比較接近,根據需要随時從一個活動切換到另一個活動。

3)建立互動圖、狀态機圖或活動圖的活動可以安排在基本模型建立之後,但也可以與基本模型的活動同時進行,即在認識清楚了若幹對象後,就開始繪制反映系統動态行為的模型圖。

4)建立模型規約的活動應該分散地進行,結合在其他活動之中。最後作一次集中的審查與補充。

5)原型開發可反複地進行。在認識了基本模型中一些主要的對象之後就可以做一個最初的原型,随着分析工作的深入不斷地進行增量式的原型開發。原型開發的工作還可以提前到建立需求模型的階段進行。在開發的早期階段建立的原型,主要用于捕獲與證明使用者的需求。

6)在分析較小的系統時可以省略劃分包的活動,或把該活動放在基本模型建立之後進行。在分析大中型系統時,可以按需求先劃分包,根據包進行分工,然後開始通常的分析;在分析的過程中,若需要仍可以用包來組織模型元素。

習題

1簡述ooa模型及ooa過程。

2為什麼要進行ooa?

3簡述問題域與系統責任間的關系。

4 ooa是如何應對需求變化性的?

5為什麼把用類圖建構的模型稱為基本模型?

6你對本章講述的分析面臨的主要問題有過什麼實際感受?請舉例說明。

繼續閱讀