如何理解物件導向的系統分析方法,物件導向分析方法的步驟和特點

時間 2021-08-11 17:54:45

1樓:匿名使用者

使用mvc進行專案開發已經有一段時間了,在這段時間裡感觸最深的就是自己對巨集觀性物件導向分析方法的缺乏。物件導向分析是當今流行的系統分析方法之一,下面就談談在做專案的過程中我的一些小經驗。

在面對簡單系統時程式設計師可以很順利的提出問題的解決方案,並且一般情況下都是可行的。這是由於問題域關係簡單,所涉及到的內部構造、聯絡比較容易解釋。而對於當前越來越複雜的系統,其問題域也就顯示的越來越複雜,而且內部的關係也不是很容易解釋,有些大的系統常常超出了人的解決問題的能力。

在這種情況下,以往的面對過程的解決方法已經不能滿足日益增長的複雜系統分析的需要,在這種情況下,物件導向的分析方法就顯得尤為總要了。

在物件導向設計領域中,在橫向上把問題域分為數個不同的、低耦合、高內聚的問題域,而在縱向上又繼續分解各個不同的小的問題域,最後分解為葉節點問題域,從而解決問題。在面對物件分析方法中,用數個物件間的訊息傳遞來完成整個問題。

下面看一看複雜系統的5個屬性:

1. 雜性經常是以層次的形式表現出來,複雜系統是由相互關聯的子系統組成,而這些子系統又是由他們各自的子系統構成,並由此類推到最底層的基本構件。

2. 對系統中最基本的構件的選擇是任意的,而且在很大程度上取決於系統觀察者的判斷力。

3. 一般而言,各構件內的連線總是要強於構件間的連線。在從構件的低頻動態中分離出高頻動態時,這一屬性是相當有用的。這是因為高頻動態涉及到各部件的內部結構,而低頻動態涉及到構件間的互動。

4. 層次系統通常都是由僅僅少數不同的子系統通過不同的排列組合方式組成。

5. 我們發現正執行的複雜系統總是由以前執行的簡單系統演化而來……任何胡亂湊合設計出來的複雜系統都不可能正常運轉,也不可能被修補好。我們必須由執行中的簡單系統開始。

對於第一點,正像我上面所說的那樣,系統是層次結構的。能夠給一個複雜的系統進行正確的層次分析,才能夠保證對系統的正確估計,包括可行性、可維護性、可擴充套件性……等等。而且對於日後對該系統進行維護(maintenance)、演化(evolution)、維持(preservation)都能夠很好的支援。

對於其中的第二點,強調了觀察者的判斷力,其實我認為其中也包括觀察者的身份角度。對於一個系統而言,觀察者並不是只進行分析設計的工程師,編碼階段的程式設計師,還應該包括使用者等所有這些同該系統有關的人員。作為不同的人員,對於系統就有不同的觀察點、觀察角度、身份等特殊因素。

因此在不同身份的人(指參與者)甚至同一身份的人眼中說觀察到的系統特性都是不盡相同的。在大學裡大家都接觸過透明性的概念,這就是不同觀察者所觀察角度不同的直觀反應。對於使用者來說,基本上底層的操作、演算法、通訊對於他們來說都是透明的,他們根本不用理會(其實也不知道)內部用了什麼。

而對於一個負責某模組的程式設計師來說就不會考慮其他模組的實現,對於他們來說其他模組是透明的,他們只需要負責管理好提供的模組介面就ok了。

對於第三點,講的就是面對物件分析設計的方向,在面對物件分析設計系統時,被分解的各個模組一定要做到高內聚、低耦合。有良好高內聚、低耦合系統常常會很容易維護,一個地方改動通常不需要牽扯到大的改動,維護行強。而且對於像vc程式這種更要求效率的程式來說,高內聚、低耦合也可以提高程式的執行期效率,應為物件內部的呼叫一般情況下會相比模組間的呼叫佔用更少的執行時間,這樣將高頻動態封裝在一個物件內部就會一定程度上提高程式執行期執行效率。

第四點則說明了物件導向程式設計對程式設計可複用性的優點。在這點中所「層次系統由僅僅少數不同的子系統構成」那麼多數子系統在不同的複雜系統中都是能夠重複使用的。比如說建築一棟大廈和建築橋樑,雖然兩者都是複雜的系統,但是對於其結構中就會有很多相似甚至相同之處,沒有必要建築好大廈回頭建築橋樑的時候又要重新設計每一快磚瓦。

第五點提醒我們在系統設計時,儘量使用以往能夠正常執行的子系統來重新構件新的系統。這一點不僅說明第四點中的複用性,而且也說明了一個我們常常要犯的錯誤。就是將並沒有通過嚴格測試的子系統,匆忙的加入到大系統中,這樣做不利於對系統的基層,常常引入了其他錯誤,使得系統頻頻崩潰,最嚴重會導致系統的重新分析。

這是我對物件導向的一點心得體會,雖然我們大家在平時工作中所面對的問題、問題域不同,使用的開發工具不同,但是物件導向是一種思維方式,有利於分析、解決問題的一種方法,並不和任何語言掛鉤(當然語言對於物件導向特性的支援程度有所不同)。所以希望各位同事能夠儘量使用科學的方法分析解決問題,形成一種設計模式,以供大家互相交流。

軟體設計是一種藝術,也是一門工程學。

2樓:匿名使用者

這裡所說的物件是對資料及其處理方式的抽象,它反映了系統儲存和處理現實世界中某些事物的資訊的能力。類是多個物件的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新物件的描述。

物件導向分析方法的步驟和特點

3樓:毋星光

使用mvc進行專案開發已經有一段時間了,在這段時間裡感觸最深的就是自己對巨集觀性物件導向分析方法的缺乏。物件導向分析是當今流行的系統分析方法之一,下面就談談在做專案的過程中我的一些小經驗。

在面對簡單系統時程式設計師可以很順利的提出問題的解決方案,並且一般情況下都是可行的。這是由於問題域關係簡單,所涉及到的內部構造、聯絡比較容易解釋。而對於當前越來越複雜的系統,其問題域也就顯示的越來越複雜,而且內部的關係也不是很容易解釋,有些大的系統常常超出了人的解決問題的能力。

在這種情況下,以往的面對過程的解決方法已經不能滿足日益增長的複雜系統分析的需要,在這種情況下,物件導向的分析方法就顯得尤為總要了。

在物件導向設計領域中,在橫向上把問題域分為數個不同的、低耦合、高內聚的問題域,而在縱向上又繼續分解各個不同的小的問題域,最後分解為葉節點問題域,從而解決問題。在面對物件分析方法中,用數個物件間的訊息傳遞來完成整個問題。

下面看一看複雜系統的5個屬性:

1. 雜性經常是以層次的形式表現出來,複雜系統是由相互關聯的子系統組成,而這些子系統又是由他們各自的子系統構成,並由此類推到最底層的基本構件。

2. 對系統中最基本的構件的選擇是任意的,而且在很大程度上取決於系統觀察者的判斷力。

3. 一般而言,各構件內的連線總是要強於構件間的連線。在從構件的低頻動態中分離出高頻動態時,這一屬性是相當有用的。這是因為高頻動態涉及到各部件的內部結構,而低頻動態涉及到構件間的互動。

4. 層次系統通常都是由僅僅少數不同的子系統通過不同的排列組合方式組成。

5. 我們發現正執行的複雜系統總是由以前執行的簡單系統演化而來……任何胡亂湊合設計出來的複雜系統都不可能正常運轉,也不可能被修補好。我們必須由執行中的簡單系統開始。

對於第一點,正像我上面所說的那樣,系統是層次結構的。能夠給一個複雜的系統進行正確的層次分析,才能夠保證對系統的正確估計,包括可行性、可維護性、可擴充套件性……等等。而且對於日後對該系統進行維護(maintenance)、演化(evolution)、維持(preservation)都能夠很好的支援。

對於其中的第二點,強調了觀察者的判斷力,其實我認為其中也包括觀察者的身份角度。對於一個系統而言,觀察者並不是只進行分析設計的工程師,編碼階段的程式設計師,還應該包括使用者等所有這些同該系統有關的人員。作為不同的人員,對於系統就有不同的觀察點、觀察角度、身份等特殊因素。

因此在不同身份的人(指參與者)甚至同一身份的人眼中說觀察到的系統特性都是不盡相同的。在大學裡大家都接觸過透明性的概念,這就是不同觀察者所觀察角度不同的直觀反應。對於使用者來說,基本上底層的操作、演算法、通訊對於他們來說都是透明的,他們根本不用理會(其實也不知道)內部用了什麼。

而對於一個負責某模組的程式設計師來說就不會考慮其他模組的實現,對於他們來說其他模組是透明的,他們只需要負責管理好提供的模組介面就ok了。

對於第三點,講的就是面對物件分析設計的方向,在面對物件分析設計系統時,被分解的各個模組一定要做到高內聚、低耦合。有良好高內聚、低耦合系統常常會很容易維護,一個地方改動通常不需要牽扯到大的改動,維護行強。而且對於像vc程式這種更要求效率的程式來說,高內聚、低耦合也可以提高程式的執行期效率,應為物件內部的呼叫一般情況下會相比模組間的呼叫佔用更少的執行時間,這樣將高頻動態封裝在一個物件內部就會一定程度上提高程式執行期執行效率。

第四點則說明了物件導向程式設計對程式設計可複用性的優點。在這點中所「層次系統由僅僅少數不同的子系統構成」那麼多數子系統在不同的複雜系統中都是能夠重複使用的。比如說建築一棟大廈和建築橋樑,雖然兩者都是複雜的系統,但是對於其結構中就會有很多相似甚至相同之處,沒有必要建築好大廈回頭建築橋樑的時候又要重新設計每一快磚瓦。

第五點提醒我們在系統設計時,儘量使用以往能夠正常執行的子系統來重新構件新的系統。這一點不僅說明第四點中的複用性,而且也說明了一個我們常常要犯的錯誤。就是將並沒有通過嚴格測試的子系統,匆忙的加入到大系統中,這樣做不利於對系統的基層,常常引入了其他錯誤,使得系統頻頻崩潰,最嚴重會導致系統的重新分析。

這是我對物件導向的一點心得體會,雖然我們大家在平時工作中所面對的問題、問題域不同,使用的開發工具不同,但是物件導向是一種思維方式,有利於分析、解決問題的一種方法,並不和任何語言掛鉤(當然語言對於物件導向特性的支援程度有所不同)。所以希望各位同事能夠儘量使用科學的方法分析解決問題,形成一種設計模式,以供大家互相交流。

軟體設計是一種藝術,也是一門工程學。

如何成為系統分析師,如何成為軟體系統分析師?

我昨天才考完系統分師 軟考 說幾點我自已的體會,要成為系統分析師 掌握一種 高階 程式語言,對於其它的也要有所瞭解掌握作業系統基礎知識 對軟體測試有所瞭解 對大型的軟體平臺 net或j2ee 至少會一個掌握資料結構,資料庫基礎 瞭解軟體工程的基礎知識 開發過程 方法 系統開發標準等 數學基礎和英語基...

系統分析師的介紹,什麼是系統分析師?

1 系統分析師是軟考中高階證書 筆試的考試形式 考綜合知識 案例分析和 3 個科目,分為 2 個半天進行,綜合知識科目考試時間為 2.5 小時,案例分析科目考試時間為 1.5 小時,科目考試時間為 2 小時 在一次考試中各科目全部合格,只有單科或雙科合格不予頒發證書。2 通過系統分析師考試的合格人員...

簡述系統分析階段的主要任務,系統分析的主要任務及主要內容

楊子電影 系統分析的主要任務是將在系統詳細調查中所得到的文件資料集中到一起,對組織內部整體管理狀況和資訊處理過程進行分析。它側重於從業務全過程的角度進行分析。分析的主要內容是 業務和資料的流程是否通暢,是否合理 資料 業務過程和實現管理功能之間的關係 老系統管理模式改革和新系統管理方法的實現是否具有...