?? (軟件)設(shè)計(jì)方法(轉(zhuǎn)).txt
字號(hào):
作者:hxfwsk
email: hxfwsk@hotmail.com
日期:2001-6-15 17:09:53
1. 簡(jiǎn)介
2.(軟件)設(shè)計(jì)是什么?
3.(軟件)設(shè)計(jì)過程
4.(軟件)設(shè)計(jì)基礎(chǔ)
5.(軟件)設(shè)計(jì)方法論
6.(軟件)設(shè)計(jì)文檔
7.面向?qū)ο蟮模ㄜ浖┰O(shè)計(jì)
8.結(jié)論
簡(jiǎn)介
您是如何開始一個(gè)新工程的?是不是跳到計(jì)算機(jī)前,打開您喜愛的RAD工具開始輸入代碼?有沒有想過程序會(huì)執(zhí)行些什么或者系統(tǒng)是如何操縱數(shù)據(jù)的?有沒有想過要記下些東西來幫助提醒您或闡明您已經(jīng)開發(fā)的代碼的邏輯實(shí)現(xiàn)?如果您對(duì)第一個(gè)問題答"不",而其他問題答"是"的話,您可以跳過這篇文檔。否則的話,請(qǐng)好好讀讀這篇文章。您應(yīng)該有個(gè)計(jì)劃、藍(lán)圖,并且在手邊有個(gè)對(duì)您的問題解決方案的簡(jiǎn)明安排。"您必須知道您要去哪兒得到一切!"讓我們來看看開發(fā)一個(gè)能實(shí)現(xiàn)您所設(shè)計(jì)的功能的程序時(shí),什么最棘手。
(軟件)設(shè)計(jì)是什么?
E.S. Taylor給設(shè)計(jì)下的定義是:
"…the process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization. "
"…應(yīng)用各種各樣的技術(shù)和原理,并用它們足夠詳細(xì)的定義一個(gè)設(shè)備、一個(gè)程序或系統(tǒng)的物理實(shí)現(xiàn)的過程。 "
對(duì)任意的工程產(chǎn)品或系統(tǒng),開發(fā)階段絕對(duì)的第一步是確定將來所要構(gòu)建的制造原型或?qū)嶓w表現(xiàn)的目標(biāo)構(gòu)思。這個(gè)步驟是由多方面的直覺與判斷力來共同決定的。這些方面包括構(gòu)建類似模型的經(jīng)驗(yàn)、一組引領(lǐng)模型發(fā)展的原則、一套啟動(dòng)質(zhì)量評(píng)價(jià)的標(biāo)準(zhǔn)、以及重復(fù)修改直至設(shè)計(jì)最后定型的過程本身。計(jì)算機(jī)軟件設(shè)計(jì)與其他工程學(xué)科相比還處在幼年時(shí)期,仍在不斷變化中,例如更新的方法、更好的算法分析、以及理解力的顯著進(jìn)化。軟件設(shè)計(jì)的方法論的出現(xiàn)也只有三十年多一點(diǎn),仍然缺乏深度、適應(yīng)性和定量性質(zhì),通常更多的與經(jīng)典工程設(shè)計(jì)學(xué)科相聯(lián)系。盡管如此,現(xiàn)今的軟件技術(shù)已經(jīng)存在、設(shè)計(jì)質(zhì)量的標(biāo)準(zhǔn)也可使用、設(shè)計(jì)符號(hào)亦可以應(yīng)用。帶著這些意見,我們一起來看看什么有助于程序員們找到他們的軟件涅盤(天堂的意思)。
(軟件)設(shè)計(jì)過程
軟件的設(shè)計(jì)是一個(gè)將需求轉(zhuǎn)變?yōu)檐浖愂觯ū磉_(dá))的過程。這種陳述給我們一個(gè)對(duì)軟件的全局觀點(diǎn)。系統(tǒng)通過逐步求精使得設(shè)計(jì)陳述逐漸接近源代碼。這里有兩個(gè)基本步驟;第一步是初步設(shè)計(jì)Preliminary design ,關(guān)注于如何將需求轉(zhuǎn)換成數(shù)據(jù)和軟件框架。第二步是詳細(xì)設(shè)計(jì)Detail design ,關(guān)注于將框架逐步求精細(xì)化為具體的數(shù)據(jù)結(jié)構(gòu)和軟件的算法表達(dá)。發(fā)生中的設(shè)計(jì)行為、數(shù)據(jù)、算法和程序設(shè)計(jì)都需要由現(xiàn)代程序所需的界面設(shè)計(jì)這一清晰的行為來結(jié)合起來。界面設(shè)計(jì)Interface design 建立程序布局和人機(jī)交互機(jī)制。貫穿設(shè)計(jì)過程的質(zhì)量由一系列的正式技術(shù)評(píng)定formal technical reviews 或設(shè)計(jì)排演design walkthroughs 來評(píng)價(jià)。良好的設(shè)計(jì)規(guī)范必須建立在對(duì)設(shè)計(jì)陳述(表達(dá))的評(píng)估之上,以下是一些指導(dǎo)方針:
1. 設(shè)計(jì)應(yīng)該展現(xiàn)層次結(jié)構(gòu)使得軟件各部分之間的控制更明智。
2. 設(shè)計(jì)應(yīng)當(dāng)模塊化;這就是說,軟件應(yīng)在邏輯上分割為實(shí)現(xiàn)特定的功能和子功能的部分。
3. 設(shè)計(jì)應(yīng)當(dāng)由清晰且可分離的數(shù)據(jù)和過程表達(dá)來構(gòu)成。
4. 設(shè)計(jì)應(yīng)使得模塊展現(xiàn)獨(dú)立的功能特性。
5. 設(shè)計(jì)應(yīng)使得界面能降低模塊之間及其與外部環(huán)境的連接復(fù)雜性。
6. 設(shè)計(jì)應(yīng)源自于軟件需求分析期間獲得的信息所定之可重復(fù)方法的使用。
要擁有良好的設(shè)計(jì)特征不是靠碰運(yùn)氣,而在設(shè)計(jì)過程中通過綜合運(yùn)用基礎(chǔ)設(shè)計(jì)原理、系統(tǒng)方法論、徹底的評(píng)定回顧可以有助于良好的設(shè)計(jì)。軟件設(shè)計(jì)方法每天都在進(jìn)化,作為已經(jīng)經(jīng)過測(cè)試和細(xì)化的方法,良好的設(shè)計(jì)應(yīng)具有以下的四種特性,并在所有這些特性之間保持一致。
1. 將信息領(lǐng)域的表達(dá)轉(zhuǎn)換為軟件設(shè)計(jì)的表達(dá)的機(jī)制。
2. 表示功能組件及其界面的符號(hào)。
3. 逐步求精和分割的試探。
4. 質(zhì)量評(píng)估的指導(dǎo)方針。
開發(fā)軟件的時(shí)候,不管采用何種設(shè)計(jì)方法您必須能夠熟練運(yùn)用一套關(guān)于數(shù)據(jù)、算法和程序設(shè)計(jì)的基本原理。
(軟件)設(shè)計(jì)基礎(chǔ)
軟件設(shè)計(jì)方法論的這套基本原理已經(jīng)經(jīng)過了多年的進(jìn)化。每種概念的影響程度不盡相同,但它們都經(jīng)歷了時(shí)間的洗禮。基于這些基本原理設(shè)計(jì)者可以采用更多更成熟的設(shè)計(jì)方法。這些基本原理有助于設(shè)計(jì)者回答以下的問題:
1. 將軟件分割成獨(dú)立的組件時(shí)會(huì)采用何種標(biāo)準(zhǔn)?
2. 怎樣將軟件的原則性表示詳細(xì)分割成函數(shù)或數(shù)據(jù)結(jié)構(gòu)?
3. 有沒有定義一個(gè)軟件設(shè)計(jì)的技術(shù)質(zhì)量的統(tǒng)一標(biāo)準(zhǔn)?
M.A. Jackson曾經(jīng)說過:"對(duì)一個(gè)計(jì)算機(jī)程序員來說,分辨讓程序運(yùn)行和讓程序正確之間的差異是一個(gè)良好的開端。"為了 "使程序正確 ",基本設(shè)計(jì)原理提供了必須的框架。因此讓我們來對(duì)這些基本原理作個(gè)簡(jiǎn)短的檢視。
抽象Abstraction 在最高層次上指的是使用待解決的問題領(lǐng)域內(nèi)的術(shù)語描述的解決方案。相對(duì)較低層次的抽象則更多的面向程序語言,最低層的抽象則是解決方案的可直接實(shí)現(xiàn)的方式描述。軟件設(shè)計(jì)的每一個(gè)步驟都是對(duì)相應(yīng)層次解決方案的抽象的逐步求精。
求精Refinement 又叫做逐步求精指的是通過程序細(xì)節(jié)連續(xù)細(xì)化來開發(fā)程序體系的策略。分步驟的對(duì)程序抽象進(jìn)行分解直至成為編程語言的過程同時(shí)造就了程序的層次結(jié)構(gòu)。在這一點(diǎn)上要對(duì)細(xì)節(jié)多做考慮,這也展示了求精實(shí)際上是個(gè)苦心經(jīng)營的過程。
模塊化Modularity 指的是軟件可被分割為分別命名并可尋址的組件(也叫做模塊),將模塊綜合起來又可以滿足問題的需求的性質(zhì)。"軟件的模塊化是允許智能化管理程序的唯一屬性。"換句話說,當(dāng)您將一個(gè)復(fù)雜問題分解為一些小問題時(shí)會(huì)更容易解決。需要重點(diǎn)解釋的是即使一個(gè)系統(tǒng)必須象"單片機(jī)"一樣來實(shí)現(xiàn),它也可以采用模塊化設(shè)計(jì)。
軟件體系(架構(gòu))Software Architecture 涉及到程序的兩個(gè)重要特性:1)模塊的層次結(jié)構(gòu)。2)數(shù)據(jù)結(jié)構(gòu)。這源自于需求分析時(shí)將真實(shí)世界問題的含蓄定義與軟件解決方案的要素關(guān)聯(lián)起來的分割過程。當(dāng)問題的每個(gè)部分通過一個(gè)或多個(gè)軟件要素得到解決后,與問題的定義和解決相一致軟件和數(shù)據(jù)結(jié)構(gòu)的進(jìn)化就開始了。這個(gè)過程代表了軟件的需求分析和設(shè)計(jì)之間的位置。
控制層級(jí)Control Hierarchy 也稱作程序結(jié)構(gòu),描述程序組件的組織并意味著控制層級(jí)。它并不描述軟件的程序方面,比如進(jìn)程順序、決定的事件/命令、或工作循環(huán)。如下的層級(jí)圖表展示了模塊之間的通信流,并顯示哪些模塊是重復(fù)的(右上角變黑的塊)。這個(gè)圖表描述了一個(gè)能夠讀文件,計(jì)算每個(gè)記錄的值并書寫報(bào)表來顯示記錄的信息和所完成的計(jì)算。
數(shù)據(jù)結(jié)構(gòu)Data structure 描述了單個(gè)數(shù)據(jù)間的邏輯關(guān)系。數(shù)據(jù)結(jié)構(gòu)規(guī)定了數(shù)據(jù)的組織、訪問方法、關(guān)聯(lián)程度、和信息的選擇處理。數(shù)據(jù)結(jié)構(gòu)的組織和復(fù)雜性只受限于設(shè)計(jì)者的靈活性。唯一的限制就是經(jīng)典數(shù)據(jù)結(jié)構(gòu)的數(shù)量阻礙了更多的久經(jīng)考驗(yàn)的結(jié)構(gòu)出現(xiàn)。
軟件程序Software Procedure 著重于處理每個(gè)模塊的細(xì)節(jié)并必須提供一個(gè)精確的處理規(guī)范,包括事件順序、準(zhǔn)確的判定點(diǎn)、重復(fù)操作、甚至數(shù)據(jù)結(jié)構(gòu)。軟件的程序表現(xiàn)是分層的,處理方法應(yīng)該包括其所有子模塊的參考。
信息隱藏Information Hiding 的法則建議由設(shè)計(jì)決定所刻劃的模塊特性應(yīng)該對(duì)其余的模塊不可見。換句話說,模塊應(yīng)被設(shè)計(jì)和指定為包含在模塊內(nèi)部且其他模塊不可訪問的內(nèi)容對(duì)其他模塊來說是無需的。隱藏意味著有效的模塊性能夠通過定義一套獨(dú)立的模塊來實(shí)現(xiàn),這些模塊相互之間的通信僅僅包括實(shí)現(xiàn)軟件功能的所必須的信息。將使用信息隱藏作為設(shè)計(jì)標(biāo)準(zhǔn)在測(cè)試或今后的維護(hù)期間需要修改系統(tǒng)時(shí)帶來了最大的好處。
(軟件)設(shè)計(jì)方法論
讓我們來遍歷設(shè)計(jì)過程中用以促成模塊化設(shè)計(jì)的四個(gè)區(qū)域:模塊Modular、數(shù)據(jù)Data、體系A(chǔ)rchitectural 和程序Procedural 設(shè)計(jì)。
模塊設(shè)計(jì)Modular design 減低了復(fù)雜性、便于修改、且使得支持系統(tǒng)不同部分的并行開發(fā)實(shí)現(xiàn)起來更容易。模塊類型提供的操作特性通過結(jié)合時(shí)間歷史、激活機(jī)制、和控制模式來表現(xiàn)。在程序結(jié)構(gòu)內(nèi)部,模塊可以被分類為:
1. 順序sequential模塊,由應(yīng)用程序引用和執(zhí)行,但不能從表觀上中斷。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -