2、確定應該記錄的數據。對結構化方法,就是細化數據流,并整理出一個一個的表。對面向對象方法,就是尋找和定義對象,并歸納各對象應記錄的屬性。一般O-R關系轉換都是套用流行的方法,可能有些組織對此都有規定。
3、模塊的組織。如果實在是要避免歧義的話,應該說成是“將數據和功能分配到不同的文件中,用文件來合理地組織代碼”。對結構化方法,就是劃分模塊,每個模塊應該包含哪些文件以及每個文件的內容。對面向對象方法,就是在已有對象的基礎上,將功能分配到對象上。相比較結構化方法,面向對象在這里強制要求:將數據和功能分配到不同的文件中時,是以數據為中心。事實上,使用結構化方法劃分模塊時,如果希望模塊具有信息內聚性,那么,也是以數據為中心!坝行畔染坌缘哪K,本質上是抽象數據類型的實現”[P89,《軟件工程JAVA語言實現》]。
4、接下來就應該是編程了。如果都使用JAVA的話,我很難想象出兩種結果的代碼能有多大的區別。
以上列出了兩個例子,其意圖在于說明某些情況下,我們進行系統分析時,當我們希望模塊有信息內聚性時,結構化方法和面向對象的方法得到的過程和結果不會有很大差別。
需要對關于使用這兩個例子作一些說明:
1、在UMLCHINA網站上經?吹揭恍┪恼绿貏e強調面向對象方法中尋找USECASE和結構化方法中功能模塊的劃分不同。在所有的這些文章中,我也一直沒有找到能夠讓我明白為什么不同的文字。當然,不排除以下原因:
1、1:我使用系統分析方法進行進行系統分析并指導編程的時間不長。
1、2:我的理解有問題的原因,比方說,可能在某個環節上鉆入了牛角尖。
1、3:我涉及的行業領域的原因。我一直參與項目,開發數據庫管理應用。
1、4:其他原因。
一個系統必然先得劃分為不同的子系統。子系統如果仍然太大了,那么也必須劃分為不同的子系統。以此類推。面向對象方法中的用例分解和結構化的功能模塊的劃分是對應的。如果用面向對象的觀點來看,系統是由各個級別的對象裝配而成。一個系統就是一個大對象,子系統也是對象。因為完全地從下至上地構造系統是難以想象的,所以需要進行用例分解。對于一個中型系統,像上述的第一個例子,我自問難以找出用例分解和模塊分解的區別。尤其是應用不同方法時如果產生區別的話,應該在思路上會在某一個或多個關鍵點上有重大區別!盾浖こ蘆AVA語言實現》中說:“如果采用面向對象的范型,則在分析階段中有一個確定對象的步驟。因為對象是一種模塊,所以結構化設計是在面向對象范型的分析階段執行的”[P13]。對此我深表贊同。當用例分解得足夠小時,該用例就類似于第二個例子。
在面向對象方法中,尋找用例時引入的對象和用于編程的對象是不同的,而結構化方法中一個功能模塊也不必就對應一個程序模塊。
事實上,老宋也用UML建模,但他堅持他使用的不是面向對象方法。因為他說自己從沒用過面向對象的方法分析問題。
2、前面的論述其實說明了:在給定的限制下,面向對象方法中的對象和結構化方法中的具有信息內聚性的模塊區別很小。但有些情況下則不然。
就我個人的經驗來看,在項目的系統分析和產品的系統分析中,面向對象方法的應用效果很可能不同。
文章來源于領測軟件測試網 http://www.kjueaiud.com/