OOD面向对象设计浅谈
來源:http://dev.csdn.net/htmls/59/59377.html
?
OOD面向對象設計淺談
前言
OOD指面向對象設計,在軟件設計生命周期中發生于OOA之后期或者之后,OOA與OOD的不可分割性正好說明了OO思想的強大,即軟件過程階段的無縫連接,在交流與溝通中不會產生鴻溝,這是相對結構化思想的好處,因為從功能模塊到某塊詳細控制邏輯設計兩者之間的聯系不是十分緊密,需要分析人員與設計人員的再溝通。
在OOSE面向對象軟件工程中,OOD是軟件生命周期的一個大的階段,目標是建立可靠的可實現的系統模型;過程是完善OOA的成果,細化分析,結合實現技術、實現環境考慮,包括全局性設計解決策略和局部的模型細化兩個方面;重點是避免回歸到非OO的思想中,引入諸如“模塊”、“單元”等概念,在類方法設計中要考慮結構化方法,要設計程序流圖的設計,總之兩者不能相互混淆。
學習OOD的目的應該是學習OOD的Procedure,使之過程化,工程化,這就需要很強的過程指導,也許是一個過程指導軟件,也許是一套手冊。
需要強調的一點,OOA是在OOD之后誕生的,OOA與OOD的這種融合成就了OO的偉大也迷惑了很多的分析人員,既然問題域描述以及系統責任(系統功能)描述已經建立,形成了OOD應該是OOP的人員負責的觀念。OOD的核心部分包括問題域的設計,在OOA模型基礎上針對編程語言(Java/VB、C++)、復用支持、硬件性能等實現條件對模型進行修改、補充和調整,完善對象的細節,定義對象的實例,建立從OOA到OOD模型之間類的演化關系對照表。
OOA與OOD的關系
“做什么”和“怎么做”,一句傳統的經典的話:分析只解決系統“做什么”的問題,不涉及“怎么做”;設計解決“怎么做”的問題。也描述為“分析是針對問題空間的,設計是針對解空間的”等。
OOD的輸出能夠告訴開發人員怎么做嗎?OOD的結果應該是指導Programmer如何去做,給出了怎么去做的方向,過于具體的基于算法的實現交給程序員來處理。一個優秀的OOD的輸出,對于OOP來說非常地便捷,工作也非常清晰。
我們的現狀是,感覺OOA完成了OOD的工作,而忽略OOD的工作,直接地從OOA跳躍到OOD。缺點就是OOA不夠細化,在OOP中由程序員大量的自由意識地工作,缺少規范性。簡單說我們割裂了OOD,在上下游少量地由局部的人員自由地完成了OOD的部分工作。現在的任何一種OOA方法在分析階段所建立起來的類圖,實際上已經在很大程度上定義了系統如何構造,包括通過對象類體現的系統結構成分,通過類之間的關系刻畫出的系統結構框架。這雖然是一個較高層次抽象的模型概述,但是完全稱之為問題域描述,并不符合實際。
用“做什么”和“怎么做”來區分分析與設計,是從結構化方法中沿襲過來的一種觀點,也就是需求代表“做什么”(功能結構圖),設計代表“怎么做”(程序框圖+數據流圖)。
由于受到學院式的教育影響,某些OOA的方法中不主張在描述中定義對象的服務和屬性,而保留至OOD階段實現。這點雖然嚴格工程化了但是并不符合人的思維方式,有點學術派的味道。
個人理解:分析主要是研究(描述,高層次設計)問題域,目的是產生一個針對問題域和系統責任,與實現條件無關的OOA模型,模型是同領域可復用的。設計目的是根據具體的實現條件對OOA模型進行調整并增加與此有關的類(這點非常重要,針對性,不僅在硬件條件,也可以在業務中,畢竟領域中也有各自的特色)以及對象(有些時候是描述一個特定的輔助對象),產生一個針對具體實現的OOD模型。這樣看來過分地嚴格區分OOA和OOD是不現實的,OOA和OOD的參與人員最好具有連貫性,即人員的變動比率不要太大。而OOA和OOD的階段成果(按照各自的大致理解劃分階段)必須獨立地保存,因為在復用級別上OOA與OOD的產出復用是不同層次的。.
一致的概念與表示方法
在軟件開發生命周期中,位于OOD前段的OOA能夠做到全部采用面向對象的概念建立完整的分析模型;位于OOD后端的OOP可以作用徹底使用OOPL完成整個系統得編程。那么OOD應該是能夠承上啟下地使用OO的概念進行設計(包括概要設計,詳細設計)。從分析、設計到實現甚至測試保持概念和風格的一致性,對于改進軟件開發和維護是十分重要的。
OOD所考慮的具體實現條件包括
?????硬件、操作系統以及網絡配置;
?????數據管理系統(DBMS、FS)
?????圖形用戶界面GUI
?????編程語言的特點;
?????能夠得到復用的可復用構件(在OOA的時候按照正規的分析方法確定的對象類,也許為了滿足某個復用,而在OOD進行修改)。
整個設計包括四個部分:問題域設計、人機交互設計、數據訪問接口設計、控制驅動設計。
?
?
?
作者Blog:http://blog.csdn.net/loconfuse/
總結
以上是生活随笔為你收集整理的OOD面向对象设计浅谈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 索尼 WH-CH520 耳机偷跑:售价
- 下一篇: 钉钉 iOS 版 7.0.10 发布:支