物件導向分析方法的七大好處 - iThome

文章推薦指數: 80 %
投票人數:10人

不僅如此,資料流程也有層級的概念,套用功能分解的技術,可以將程序往下細分成次程序。

資訊建模在資訊建模方法中,最赫赫有名的技術便是「實體關聯圖」(Entity ... 移至主內容 文/iThome | 2009-07-17發表 系統分析方法是一種思考工具,可以協助我們思索並表達需求(requirements)。

但是,「系統分析」(systemsanalysis)又是個什麼東西呢?簡單來說,我們在採取行動之前,先對問題(problem)進行瞭解且研究,這個事先研究的過程就是所謂的「系統分析」。

更進一步來說,系統分析是一個挖掘系統需求的過程,它關注的是系統必須做些什麼(what)才能夠滿足客戶,而不是如何(how)實作出系統。

正是因為系統分析關注的焦點是客戶對系統的要求,所以系統分析師開始動手進行系統分析的第一步驟,通常是從研讀客戶提供的文件和訪談客戶,開始著手。

「需求文件」(requirementdocument)是系統分析過程中極為重要的產出,它主要具備下述特色:●許多人士都會需要了解甚至同意需求文件的內容,常見的人士有客戶、問題領域專家、開發人員。

●在需求文件中,系統分析師將詳述系統所需,而這份需求聲明必須是完整的、一致的而且是可行的。

●在需求文件中所記載的需求,在落實之前或之後都必須持續維護且追蹤。

●在需求文件中,系統分析師不僅要記錄系統的功能性需求,還需要記錄非功能性需求。

譬如,資料需求、性能需求、產能需求和測試需求等等,都是十分常見的非功能性需求。

●其他諸如系統必須處理的介面、必須適應的環境,及任何必須遵守的設計限制,都需明確記載在需求文件中。

除了物件導向分析方法外,還有功能分解(FuncationalDecomposition)、資料流程(DataFlow)和資訊建模(InformationModeling)這三種古典且重要的系統分析方法,物件導向分析方法可說是集大成者,它吸取這三種方法的精華,並且剔除其不理想的部分。

功能分解顧名思義,「功能分解」就是把一整個系統細分成數個次系統(sub-system),再把一個次系統往下細分成數個功能,接著再繼續把一個功能往下細分成數個次功能(sub-function),然後再把次功能往下細分成更細小的次次功能;如此細分、細分、再細分…,一直到系統分析師心裡頭覺得可以了為止。

總之,功能分解有著下列幾項主要的缺點,分別為:●系統分析師必須高度仰賴過往開發過相似系統的經驗,才能夠得知該將系統細分成哪些次系統、功能及次功能。

●問題領域無法直接對映成功能,因此需要靠著系統分析師人工的方式來將問題領域對映成功能與次功能。

●也因此,到底要分解成幾個功能,而且又得往下細分到哪個層級,都沒有一定,隨著系統分析師的不同而有不同的決定。

因為自由度太高,所以產出的結果難以理解,也難以形成共識,同時日後也不容易重用與維護。

●整個系統由數個次系統所組成;每一個次系統又由數個功能所組成;每一個功能再由數個次功能所組成…一層一層往下功能分解,再一層一層往上組成整個系統。

由於功能的變動性太高,也因此造成系統的結構不穩定。

因此,物件導向分析不以功能做為系統結構。

主要是因為功能的變動頻率高,所以如果以功能做為系統結構,會導致系統結構經常隨著功能的變動而變動,因此導致系統結構的不穩定。

取而代之的是,物件導向分析把功能分解的技術應用在分解服務上頭,將服務分解成小片的功能,再將這些小功能分派給物件。

同時,還將這些變動頻率高的功能封裝在物件內部,使得功能隨著需求變動而改變時,不會影響到其他物件,而且也就不會導致系統陷入牽一髮而動全身的險境了。

資料流程其實,資料流程方法就是鼎鼎有名的「結構化分析」(structuredanalysis)。

許多人耳熟能詳的「資料流程圖」(DataFlowDiagram),正是結構化分析方法中非常具有代表性的技術。

在套用資料流程方法時,系統分析師將真實世界化成資料流與程序(process),各式的資料會流進或流出不同的處理程序。

請看到圖1,這是張資料流程圖片段,訂單資料隨著資料流的箭頭方向流進結帳程序,待結帳程序執行完畢之後,將輸出另一份名為出貨單的資料,並且繼續流入下一個出貨程序。

圖1:資料流程圖(片段)不僅如此,資料流程也有層級的概念,套用功能分解的技術,可以將程序往下細分成次程序。

資訊建模在資訊建模方法中,最赫赫有名的技術便是「實體關聯圖」(EntityRelationshipDiagram)了。

相信多數使用關聯式資料庫的開發人員,到目前為止,可能都還在使用這項技術呢!請看到圖2,這是一張局部的實體關聯圖,圖中有兩個實體(Entity),分別名為顧客與訂單。

而且,顧客與訂單兩者之間存在著一對多(1:N)的關聯性,也就是說,一個顧客擁有多筆訂單,而每一筆訂單只能被一個顧客所擁有。

再者,以橢圓圖示代表實體的屬性(Attribute),所以顧客有兩個屬性,分別名為:姓名與電話。

訂單實體也有兩項屬性,分別名為:金額與日期。

圖2:實體關聯圖甚至到了1970年代中期,資訊建模還添加了物件概念。

不過,雖說如此,相較於物件導向方法,資訊建模仍舊只是個不完全的方法,因為它缺少了下列幾項在物件導向中非常重要的概念:●服務(Service):也就是「操作」(operation),它會與屬性一塊被封裝在物件中。

●訊息(Messgae):物件之間藉由傳遞訊息來進行溝通,以便協力合作達成特定目標。

●繼承(Inheritance):把數個類別裡頭相同的屬性與操作獨立出來,再透過繼承關係來重用這些相同的部分。

●結構(Structure):諸如一般化-特殊化關係、整體-部分關係,這些人類慣用的組織方法。

物件導向對於想要說服部屬採用物件導向分析方法的主管,以及對於想要說服主管採用物件導向分析方法的部屬而言,物件導向分析可以帶來下列七項好處:1.物件導向分析重視問題領域,因此能夠面對豐富多樣的問題領域。

物件導向分析並沒有鎖定特定的問題領域,可以用來分析各式不同的問題領域。

2.物件導向分析採用人們慣用的組織方法來表達系統分析與規格內容,因此增進了系統分析師與領域專家之間的溝通、互動與了解。

3.物件導向分析將屬性與操作整合在同一個類別中,使得系統內部的資料結構(屬性)與行為結構(操作)一致。

對比於古典的結構化分析方法,以實體關聯圖呈現資料結構,且以結構圖(StructureChart)呈現行為結構,使得系統內部的資料結構與行為結構不一致。

相反地,物件導向分析則將系統內部的資料結構與行為結構整合在一起,並且以類別圖呈現出來。

4.物件導向分析透過繼承概念,明顯地表達出可以共用的相同屬性與操作。

5.物件導向分析以穩定的問題領域結構來封裝易變的部分,以此形成具有彈性的系統結構,使得系統能夠順應需求的變動。

6.物件導向分析採用問題領域做為系統內部結構,因此提升了分析產出的重用(reuse)程度,無論是現在的重用或者是日後的重用。

這是因為問題領域比較穩定,變化速度較為緩慢,所以結構的雷同性高,相對的重用程度當然就會提升。

7.無論是系統分析或系統設計都採用物件導向技術,因此從分析到設計都採用一致性的思維與圖示。

此外,物件導向分析方法由五個主要的活動所組成,分別為:尋找類別與物件、確立結構、確立主題、定義屬性與定義服務。

雖然,這五個活動並不需要依照順序進行,不過後續各回中,會依照此順序來介紹。

熱門新聞 微軟Azure技術長認為應以Rust代替C/C++開發專案 2022-09-20 Chrome與Edge中的拼字檢查功能可能外洩用戶密碼 2022-09-19 Uber疑似被駭,內部多項系統遭取得權限 2022-09-19 以太坊合併後,GPU挖礦已幾乎無利可圖 2022-09-19 全家史上最大規模POS改造,不只砸上億導混合雲,雙模式三大設計一機通吃大小店種和戶外擺攤 2022-09-15 【資安週報】2022年9月12日到9月16日 2022-09-18 Windows11即將支援逾2萬種Android程式 2022-09-21 星巴克22萬新加坡顧客資料遭駭客公開兜售 2022-09-19 Advertisement 2022iThome鐵人賽 專題報導 iThome2022資安大調查(下) iThome2022資安大調查(上) 【iThome2022CIO大調查(下)】各產業數位轉型加速,IT大步邁向雲原生 分散式RAID躍居主流儲存應用 【iThome2022CIO大調查(中)】企業IT新戰力 更多專題報導



請為這篇文章評分?