比較面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的特點
解:分析是問題抽象 (做什么),設計是問題求解 (怎么做),實現(xiàn)是問題的解 (結(jié) 果)。任 何方法學對客觀世界的抽象和求解過程都是如此。 在問題抽象階段, 結(jié)構(gòu)化方法面 向過程, 按照數(shù)據(jù)變換的過程尋找問題的結(jié)點,對問題進行分解。因此,與面向?qū)ο蠓椒?強調(diào)的對象 模型不同,描述數(shù)據(jù)變換的功能模型是結(jié)構(gòu)化方法的重點。如果問題世界的功 能比數(shù)據(jù)更復 雜或者更重要,那么結(jié)構(gòu)化方法仍然應是首選的方法學。如果數(shù)據(jù)結(jié)構(gòu)復雜且變換不多, 那么如果以過程主導分析和設計,一旦有系統(tǒng)變更就會給下游開發(fā)帶來極大 混亂。
由于對過程的理解不同, 面向過程的功能細分所分割出的功能模塊有時會因人而異。 而 面向 對象的對象細分,從同一問題領域的對象出發(fā),不同人得出相同結(jié)論的比率較高。
在設計上, 結(jié)構(gòu)化方法學產(chǎn)生自頂向下、 結(jié)構(gòu)清晰的系統(tǒng)結(jié)構(gòu)。 每個模塊有可能保持較 強的獨立性,但它往往與數(shù)據(jù)庫結(jié)構(gòu)相獨立,功能模塊與數(shù)據(jù)庫邏輯模式間沒有映射關系, 程序與數(shù)據(jù)結(jié)構(gòu)很難封裝在一起。 如果數(shù)據(jù)結(jié)構(gòu)復雜, 則模塊獨立性很難保證。 面向?qū)ο蠓?法抽象的系統(tǒng)結(jié)構(gòu)往往并不比結(jié)構(gòu)化方法產(chǎn)生的系統(tǒng)結(jié)構(gòu)簡單,但它能映射到數(shù)據(jù)庫結(jié)構(gòu) 中,很容易實現(xiàn)程序與數(shù)據(jù)結(jié)構(gòu)的封裝。
在軟件工程 基本原則中有一條 “形式化原則 ” ,即對問題世界的抽象結(jié)論應該以形式化語
言 (圖形語言、偽碼語言等)表述出來。結(jié)構(gòu)化方法可以用數(shù)據(jù)流圖、系統(tǒng)結(jié)構(gòu)圖、數(shù)據(jù) 辭典、 狀態(tài)轉(zhuǎn)移圖、 實體關系圖來進行系統(tǒng)邏輯模型的描述; 而面向?qū)ο蠓椒梢允褂脤ο?模型圖、數(shù)據(jù)辭典、 動態(tài)模型圖、功能模型圖。其中對象模型圖近似系統(tǒng)結(jié)構(gòu)圖與實體關系 圖的結(jié)合,動態(tài)模型圖類似狀態(tài)遷移圖,功能模型圖類似數(shù)據(jù)流圖。
暫無解析