2009-10-08 74 views
0

是否嚴格基於OOD /接口的設計/面向方面的設計在軟件應用程序開發的情況下是可取的?軟件應用程序設計

或者是優選混合所有的人都爲便於編碼的?

全部中標,高維護的軟件應用程序嚴格的面向對象的,或者,嚴格接口定向的,或嚴格面向方面,或者是它們的組合?

如果他們是那麼嚴格,我應該遵循的方法,而在這三種情況下實現一個非常強大的設計,避免分析癱瘓?

如果您認爲基於接口的編程和AOP只是OOP的擴展,那麼您可以這樣思考,在基於接口編程和AOP的概念出現之前軟件是如何設計的?

而且AOP可能需要一個AOP容器。

+0

這是非常令人困惑,因爲接口和AOP設計通常被視爲面向對象設計的變體。你能否通過解釋「嚴格」和「混合」的含義來澄清你的問題? – 2009-10-08 11:13:39

+0

AOP容器?這樣的事情不存在 - 我猜你聽說過一個叫'IoC容器'的東西。請不要爲了它而拋開流行語 - 這會讓你的編程比忽略它們更糟糕。 – 2009-10-08 11:23:55

回答

1

全部中標,高維護的軟件應用程序嚴格的面向對象的,或者,嚴格接口定向的,或嚴格面向方面,或他們的混合?

一些應用是成功的,有些是非常維護。我能想到的一個例子是Artisan Studio,一個早期採用的SysML工具,但當我去面試時遇到了可維護性非常低的問題。它的設計是組件樣式OO C++ - 分佈式OO數據庫並使用COM來允許將特徵添加爲組件;但他們承認在大型遺留代碼庫上工作時遇到了很多麻煩。我懷疑現在更便宜,更靈活的Enterprise Architect UML工具有一個SysML產品,成功將會被侵蝕。我沒有和EA的設計師談過,但EA建立在SQL數據庫的後端,而自動化API顯然不是純粹的面向對象的解決方案 - 例如,你必須更新UML的同一屬性的不同部分對象使用不同的API(一個UML包由一個Package對象和一個Element元素來表示,如果你在一個API中改變了包的名字,你必須記住在另一個API中改變它,否則它會有不同的名稱在包樹和任何圖中)。考慮到功能添加到EA的速度以及應用程序感覺的總體質量,我認爲它比Artisan採用的「更好的OO」模型更敏捷,但不容易重構。

我沒有發現可維護性和成功之間的緊密聯繫,或嚴格的OO和成功。做需要和重構軟件的能力可能對成功更重要。那是一個好的市場部門。

(重構事情是保持一些相反 - 在重構你改變架構,但功能集是靜態的;維護包括增加從現有架構的新功能或刪除錯誤)

0

混合,也許根本沒有。根據一個非面向對象的語言(例如C)

任何將具有難以滿足由OO定義所規定的標準。

功能語言中的項目不符合上述任何一種。

所有這些'面向'的設計方法就是這樣。 方向。您應該能夠識別每種方法的優缺點,並根據適當性,複雜性,預算,時間尺度,可維護性等學習混合匹配。

1

您的問題將軟件項目的目標與實現它們的手段。物聯網/像基於接口的設計AOP流行語可以是非常有益的(不要誤會我的意思:我真的很喜歡他們),但他們也可能導致災難性的後果,如果他們使用,他們不是適當。

如果你有一個釘子,然後用錘子。如果您有螺絲,請使用螺絲刀。如果他們沒有,那麼沒有兩個工具是有用的......