国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
關于軟件設計的幾點思考

關于軟件設計的幾點思考

平時我們常講“軟件設計”,這個詞好像成了一個習慣用語。但是什么是軟件設計,這樣一個本質問題,要說出所以然來還真的是有點不容易。就好比這樣一個問題:軟件開發(fā)者就是工程師嗎?如果沒有弄清什么是軟件設計,回答起來同樣令人頭痛。

但是在這篇文章中我并不計劃就“什么是軟件設計”這一問題作深入的討論,我打算在下文中介紹以下三個方面的內容:1、什么是軟件設計?2、軟件危機與軟件質量。3、面向對象軟件設計原則。

一、什么是軟件設計?

關于“什么是軟件設計”這樣一個問題,Jack W.Reeves 14年前(1992年),就在其撰寫的論文——《What is Software Design》中給出了其個人觀點——“源代碼就是設計”。這一思想將軟件工程活動與傳統(tǒng)的工程活動區(qū)分開來,傳統(tǒng)的工程活動中設計過程中產(chǎn)生的僅僅只是設計文檔,構建過程完全依賴于設計文檔;而軟件的設計活動將源代碼的編寫也包含了進來,其不僅僅只是生產(chǎn)文檔。

這一理論聽起來似乎有些抽象,不妨來個類比:建筑設計行業(yè)中,建筑設計圖的最終完成標識了設計過程的終結,但是軟件設計過程能夠用軟件設計文檔的完成作為其結束標識嗎?顯然這是一個不可能的答案。軟件設計的復雜性與不確定性我想大家都深有體會,很多時候文檔與代碼之間的修改是一個反復的過程。因為需求分析階段中我們不可能全部得到客戶心里真正想要的是什么東西。即使知道客戶想要的是什么,同時也得隨時準備應付客戶不斷變化的新的要求。這是一場殘酷的戰(zhàn)爭,戰(zhàn)爭沒有結束的時候誰也不能確信他就是真正的贏者。

這一理論回答了“軟件開發(fā)者就是工程師嗎?”這一問題,揭示了編程與程序之間的關系:編程不是構建軟件,而是軟件設計。它將編碼這一階段包含在軟件設計過程中,同時又強調了頂層設計的重要性。

從這一理論出發(fā),去思考軟件開發(fā)的幾個模型,我們會很清晰地理解以文檔驅動為核心的瀑布模型在當今開發(fā)過程中存在的先天不足和后天失調,它體現(xiàn)出來的優(yōu)點就是嚴格控制的自頂向下的流程化工程思想。再看以面向對象為指導思想的噴泉模型,它強調的是無間隙、迭代化開發(fā),其重點不再是設計文檔,而是如何面對復雜可變的現(xiàn)實環(huán)境。軟件設計是一個反復的迭代的過程,就目前來講還看不到“銀彈”的希望。

二、軟件危機與軟件質量:

 “軟件危機”的提出使得人們開始對軟件及其特性進行更深一步研究,概括地來講就是解決這兩個方面的內容:如何開發(fā)軟件,怎樣滿足對軟件日益增長的需求;如何維護數(shù)量不斷膨脹的已有軟件。

面對“軟件危機”,與程序設計方法學密切相關的軟件工程在1968年應運而生。軟件工程研究的內容主要包括:軟件質量保證和質量評價;軟件研制和維護的方法、工具、文檔;用戶界面的設計以及軟件管理等。就如何保證軟件質量問題,各國軟件界都給予了廣泛關注與研究。國際標準化組織于2001年重新制定的ISO/IEC 9126標準,為保證軟件質量、評估軟件質量提供了依據(jù)。

ISO/IEC 9126軟件質量模型分為三層:特性、子特性和度量。軟件質量是特性的函數(shù),每一特性又由一些子特性來衡量,而每一子特性又由一些定量化指標的度量來描述。按照影響軟件質量的各特性之間覆蓋最小的原則,可以將軟件質量分為六個特性:功能性、可靠性、易用性、效率、可維護性和可移植性。

三、面向對象軟件設計原則:

軟件設計的目標就是如何實現(xiàn)及保證軟件質量,我們評估軟件設計的好壞也就是通過軟件質量的六個特性作為依據(jù)。為了順利實現(xiàn)及保證軟件質量,業(yè)界經(jīng)過幾十年的發(fā)展與積累,逐漸形成了開發(fā)過程中應遵從的原則。下面是面向對象軟件設計過程中最常用的5個原則:

A.單一職責原則(SRP):

一個類應該有且只有一個改變的理由。也就是解決職責不清的問題,通俗地講,既當?shù)之攱屵@種行為用在軟件設計中是不可取的。采用這一原則進行設計的最大好處是提高軟件的可靠性與可維護性。

B.開放—封閉原則(OCP

在不用修改原有類的基礎上就能擴展一個類的行為。如何正確理解“開放與封閉”,其對誰“開放”對誰“封閉”?這是我們理解這一原則的最大困難之處。它強調的重點在于“對于擴展它是開放的,對于修改它是封閉的”,其實也就是隔離變化,既達到職責單一又達到了擴展的目的。

C.替換原則(LSP):

派生類要與其基類自相容。也就是說“子類型必須能夠替換掉它們的基類型”。這一原則其實是對OCP原則的擴展,它強調的重點其實就是“父為子綱”。沒有父親也就沒兒子,這種繼承關系始終如一,不得改變。這一常理在這一原則中倒是得到了很好的體現(xiàn)。

D.依賴倒置原則(DIP

依賴于抽象而不是實現(xiàn)。還有一種說法:抽象不應該依賴于細節(jié),細節(jié)應該依賴于抽象。就我個人的觀點來講,我不喜歡后面這種說法。它不簡潔也容易讓人誤解。誰的抽象誰的細節(jié)?順藤摸瓜,瓜是抽象,藤是細節(jié)。其實這里面包含了歸納的思想,那就是從細節(jié)上抽象出其本質的東西。我們依賴的就是這個抽象本質,而不是它的具體實現(xiàn)細節(jié)。這又回到我上一原則所講的“父為子綱”。

E.接口隔離原則(ISP):

客戶只要關注它們所需的接口。說得明白一點就是,“不應該強迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層次結構”。如果我們把接口理解成角色,一個接口只是代表一個角色,每個角色都有它特定的一個接口,每個角色都服務于其客戶端對象。那么用“投其所好”這個成語來形容這一原則,我覺得再恰當不過。雖然其意含貶義,但是它定制化服務、個性化服務則值得我們學習。這一原則強調了對軟件實體通信之間的限制,它限制了通信的寬度,同時提供了一個指導化的設計思想,就是說通信要盡可能的窄,只投其所好。遵從這一原則帶給我們的好處是:在軟件系統(tǒng)功能需要擴展時,其修改的壓力會最小。

總之,關于軟件設計這樣一個課題,要思考與研究的東西實在很多,不只是哪一個人的事情。本文的主旨意在與大家交流自己在工作當中的所想所得,所悟到的東西與事實的本質或許有較大出入,但是我已敞開胸襟,愿意接納各位同仁的指正與批評。

(注:版權歸個人所有,如需轉載請注明出處。)

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
面向對象設計準則
面向對象的基本原則
軟件設計中的原則(GRASP) - SealedLove - 博客園
軟件測試中可能忽略的質量特性
軟件設計說明最詳細教案-干貨
軟件設計的六大原則
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服