內容
1.系統設計的任務
這一階段的主要任務是從信息系統的總體目標出發,根據系統分析階段對系統的邏輯功能的要求,並考慮到經濟、技術條件、運行環境和進度要求等,確定系統的總體結構和系統各組成部分的技術方案,合理選擇計算機和通信的軟、硬體設備,制訂系統的實施計畫。
設計的主要目的就是為下一階段的系統實現制定藍圖。系統分析階段的工作重點在於了解情況、發現並描述問題,解決“做什麼”的問題,設計階段將重點研究“怎么做”的問題。因此在完成上述各項設計任務的過程中,需要權衡各種技術和實施方法的利弊,從全局出發,通過精心設計選擇最合適的方案,合理地使用各種資源,最終描繪出新系統的詳細設計方案。
2.系統設計的依據
系統設計是在系統分析的基礎上由抽象到具體的過程,同時,還應該考慮到系統實現的內外環境和主客觀條件。通常,系統設計階段工作的主要依據可從以下幾個方面考慮。
1)系統分析的成果。從工作流程來看,系統設計是系統分析的繼續。因此,系統設計人員必須嚴格按照系統分析階段的成果——“系統說明書”所規定的目標、任務和邏輯功能進行設計。對系統邏輯功能的充分理解是系統設計成功的關鍵。
2)現行技術。主要指可供選用的計算機硬體技術、軟體技術、數據管理技術以及數據通信與計算機網路技術。
3)現行的信息管理和信息技術的標準、規範和有關法律制度。
4)用戶的使用要求。對系統的直接評判者是用戶,新系統的設計應充分考慮、理解並尊重用戶的個性化要求。特別是用戶在操作使用方面的要求,如工作習慣、計算機使用技能、人因工程方面的要求等。儘可能方便用戶的操作和使用。
5)系統運行環境。新系統既要匹配企業組織現行的管理水平、管理模式和方法,又要適應組織的變革與發展的需要,促進管理水平的提高。也就是說.要符合當前需要。適應系統的工作環境,如基礎設施的配置情況、直接用戶的空間分布情況、工作地的自然條件及安全保密方面的要求等。在系統設計中還應考慮現行系統的硬、軟體狀況和管理與技術環境的發展趨勢,在新系統的技術方案中既要儘可能保護已有投資,又要有較強的應變能力,以適應未來的發展。
3.系統設計階段的主要活動
系統設計階段的工作是一項技術性強、涉及面廣的活動。設計內容包括兩個方面:總體設計和各部分的詳細設計(物理設計)。在此基礎上,完成系統設計說明書的編制,制訂出系統的實施計畫。
1)系統總體設計。其中包括:系統總體布局方案的確定、軟體系統總體結構的設計、數據存儲的總體設計、計算機和網路系統方案的選擇等。
2)各部分的詳細設計。其中包括:代碼設計、資料庫設計、人—機界面設計(包括輸入設計、輸出設計、人—機對話設計)、處理過程設計等。
3)系統實施進度與計畫的制訂。
4)“系統設計說明書”的編寫。“系統設計說明書”是系統設計階段的重要成果,它是指一系列系統設計的文檔,這些文檔闡述了系統設計的指導思想、採用的技術、方法和設計結果與要求。“系統設計說明書”是系統實施工作的主要依據。
4.設計方法
自頂向下的結構化方法曾被廣泛採用,現在的信息系統設計方法有了很大發展,即使如此,這一方法在一些套用系統開發,特別是中小規模的套用系統開發中仍然是一種常用的方法。結構化方法也吸收了其他方法的一些思想用於提高系統設計的效率和質量。例如,在局部環節上可使用原型方法、面向對象方法。採用“用例(Use Case)”來獲取和理解系統的功能需求等。
面向對象分析的主要任務是分析問題空間的主要目標和功能,尋找存在的對象,分析這些對象的特徵(屬性)和職責(服務),以及對象間的關係,並由此產生一個完整表達系統需求的規格說明,即系統“做什麼”的描述。面向對象設計的主要任務是將分析得到的需求進一步明確和細化,選用有效的設計樣式(Design Pattern)最佳化對象結構,設計系統互動界面,設計資料庫結構等。它強調的是對分析結果的完善和改良,產生一個指導面向對象編程的詳細規格說明,即“怎么做”的描述。儘管理論上系統分析與系統設計有比較明顯的區分,但面向對象方法與傳統方法相比,一個顯著的特點就是在各個階段採用統一的表示模型,從分析到設計,以及後續的程式設計開發,模型的過渡是平滑的,不存在鴻溝。例如,在分析一個訂單類的服務“計算總價”時僅僅描述的是一個動態行為,而做設計時則要定義該服務的詳細接口,否則程式設計師將無法實現該項服務。
在面向對象方法中,階段問的分工並不嚴格,對於簡單的問題可能在分析過程中就直接完成了本屬於設計階段的任務。可以說,面向對象的分析與設計之間不存在嚴格的時間界限和內容分工,設計是對分析的細化和精華過程。
此外。隨著軟體工程技術的發展,一些新的設計思想被逐步引入到系統的設計當中,形成了一些新的設計方法,如基於體系結構的系統設計。
原則
信息系統設計的任務是將信息系統的邏輯模型轉化為物理模型。信息系統設計應遵循以下原則。
(1)系統性原則。信息系統設計要從整個系統的角度進行考慮,系統代碼要統一,設計標準要規範,傳遞語言要一致,實現數據或信息全局共享,提高數據重用性。
(2)靈活性原則。為了維持較長的信息系統生命周期,要求系統具有很好的環境適應性。為此,信息系統應具有較好的開放性和結構的可變性。在信息系統設計中,應儘量採用模組化結構,提高數據、程式模組的獨立性,這樣,既便於模組的修改,又便於增加新的內容,提高信息系統適應環境變化的能力。
(3)可靠性原則。是指信息系統抗干擾的能力及受外界干擾時的恢復能力。一個成功的信息系統必須具有較高的可靠性,如安全保密性、檢錯及糾錯能力、抗病毒能力等。
(4)經濟性原則。是指在滿足系統需求的前提下,儘量節約成本。一方面,在硬體投資上不能盲目追求技術上的先進,而應以滿足套用需要為前提。另一方面,信息系統設計中應儘量避免不必要的複雜化,各模組應儘量簡潔,以便縮短處理流程、減少處理費用。
評價標準
對系統設計方案要進行評價,沒有達到設計標準的方案應當發回重做,而不是因為採用了疊代式開發,就可以縱容設計的缺失和混亂。將不良設計結果帶人下一個開發階段將會大大延長工期,因為在系統實施階段發現設計缺陷往往是在做了大量無用功之後。雖然重構技術可以幫助修正設計階段的問題,但無論對於新手還是有經驗的開發人員來說,大規模重構都是成本高昂且令人望而生畏的舉動。不良的功能設計正是造成大規模重構的首要原因之一,而且大規模的重構對於保持設計文檔和程式代碼框架的同步是非常不利的,甚至可能導致前期設計文檔徹底作廢,因此,必須嚴格審查功能設計的結果,即“磨刀不誤砍柴工”。
功能設計的評價標準和設計質量息息相關,主要包括以下幾個方面。
(一)正確性
必須保證對分析階段提出的所有功能和任務都進行了正確的功能設計,這是對設計結果的最低要求。設計的正確與否主要由有經驗的分析人員評估確定,評估的重點是經過設計階段對系統進行分解之後,原來分析階段的業務邏輯是否仍然可以正確執行。正確性評估往往不是一次完成的,在生成和編寫源程式代碼並運行測試的過程中,一般總能發現設計中的缺陷甚至是錯誤。功能設計中的正確性要求就是在較高層次上力求設計結果(設計框架)不存在重大錯誤,否則後面的疊代將非常困難。
(二)完整性
設計階段的完整性要求主要包括兩個方面:結構的完整性和組成部分的完整性。結構的完整性是指必須對整個系統的各個方面都做出設計,不能有遺漏;組成部分的完整性是指各個組成部分應該含義清晰,責任明確。嚴格遵守面向對象設計中的封裝原則可以避免過多暴露細節,進而有助於完整性的實現。
(三)可靠性
設計中應該利用標準化的設計工具(如UML設計工具),儘可能採用各種常見或已經成功套用過的設計模式,避免使用不規範甚至是怪異的設計方案;同時,應當儘可能利用一切可利用的組件,減少重複開發。只有經過檢驗的,才是可靠的。
(四)類設計的合理性
類是面向對象系統開發的基礎,因此在系統設計工作中需要特別注意。類設計的合理構造涉及類是否明確定義,類和類的關係是否清晰以及類的粒度是否合適等。所謂“合理”並沒有一個絕對的標準,絕大多數情況下是依靠分析和設計人員自身的開發經驗加以判斷的。
(五)接口定義嚴謹
接口設計是面向對象設計中的一個非常重要的任務,同時也是最困難的任務之一。分析階段基本不會考慮物理接口問題,而將此項工作交由設計階段來完成。接口定義要本著寧缺毋濫的原則,可以私有的接口絕不設為公有。接口的命名要反覆推敲,既要準確達意,又要儘可能簡化;同時,還需要注意接口方法的具體參數選擇。
(六)圖表文檔完備
設計圖表和文檔是幫助其他開發人員理解系統的最好手段之一,應儘可能完備且留有歷史記錄,以便於回溯。在對設計方案進行評價時,對於一些重要的或規模比較大的設計,可以根據實際項目的具體要求和特點給各評價指標賦予不同的權重,然後由有經驗的設計員和分析員為方案評分;對於一般的或局部的設計,則可以由設計人員根據經驗自行確定。