軟件項目實訓及課程設計指導——軟件系統(tǒng)設計中的概要設計示例
1、什么是軟件應用系統(tǒng)的系統(tǒng)設計
所謂的軟件系統(tǒng)設計其實就是通過某種特定的平臺,而達到完成軟件系統(tǒng)項目的整體軟件的功能和性能。從軟件工程管理的角度來看,軟件系統(tǒng)項目的設計過程主要分為兩步完成。
(1)概要設計
將軟件系統(tǒng)項目的需求轉化為系統(tǒng)的數(shù)據(jù)結構和軟件的系統(tǒng)總體結構——此設計階段的工作重點在于軟件系統(tǒng)項目的靜態(tài)結構設計,并設計出構成軟件系統(tǒng)項目的各個物理組成元素——程序模塊、數(shù)據(jù)庫表結構、測試用例、各種設計文檔文件等。
當然,在軟件系統(tǒng)項目的系統(tǒng)概要設計中所需要的各種信息主要來自于軟件系統(tǒng)項目的需求分析的結果。
(2)詳細設計
在前面的系統(tǒng)概要設計中的軟件系統(tǒng)項目總體結構設計完成的基礎上,通過對軟件系統(tǒng)項目結構中的各個物理組成元素進一步設計細化和完善,最終得到軟件系統(tǒng)項目的更加詳細的數(shù)據(jù)結構和算法、用戶界面設計、關鍵性技術問題(包括開發(fā)環(huán)境和工具、運行環(huán)境和平臺等)的解決方案和對應的實現(xiàn)技術等。
2、軟件系統(tǒng)的概要設計階段中的主要工作重點
(1)設計中所需要的各種信息主要來自于軟件系統(tǒng)項目的需求分析結果。
(2)概要設計工作的重點內(nèi)容:是設計出軟件系統(tǒng)項目的系統(tǒng)體系結構。
(3)系統(tǒng)架構設計工作的基本流程如下,這個階段是軟件系統(tǒng)項目的系統(tǒng)架構師發(fā)揮作用的主要階段。
因此,軟件應用系統(tǒng)在進行系統(tǒng)設計時,軟件系統(tǒng)項目的系統(tǒng)設計人員需要做到如下的三步:
1)對系統(tǒng)需求進行描述;
2)對系統(tǒng)結構進行描述;
3)對系統(tǒng)行為進行描述。
因此,可以看出在這三個步驟中,第1、2步是靜態(tài)的,其建模方式一般稱為靜態(tài)建模;而第3步則是動態(tài)的,其建模方式則稱為動態(tài)建模。在UML的分析和設計的建模技術實現(xiàn)中靜態(tài)建??梢允褂肬ML的例圖、類圖等UML規(guī)范的圖形來表示;而動態(tài)建模則可以用UML中的狀態(tài)圖、時序圖、活動圖等圖形表示。由此可知,靜態(tài)建模機制和動態(tài)建模機制是UML的兩大主要類型。
3、軟件系統(tǒng)的詳細設計階段中的主要工作重點
(1)軟件系統(tǒng)的詳細設計中所涉及的主要工作內(nèi)容
1)用戶界面設計、和各個模塊組件的設計、實現(xiàn)技術等內(nèi)容(給出軟件結構中各模塊的內(nèi)部過程描述)
2)模塊內(nèi)部的算法設計
(2)基本要求—— 一般是做到類的方法和屬性的描述,但這些方法的實現(xiàn)就不必做了。
4、為什么要進行(或者開展)軟件應用系統(tǒng)的設計階段的工作
(1)主要的原因
通過對于軟件應用系統(tǒng)的用例分析,軟件系統(tǒng)的分析和設計人員可以產(chǎn)生出一個系統(tǒng)的分析模型,但是設計人員很少有直接根據(jù)這個分析模型去完成程序的開發(fā)實現(xiàn)。為什么?如下示圖為某個BBS論壇系統(tǒng)的系統(tǒng)后臺管理的用例圖的局部截圖:
首先,我們不要幻想直接把分析類圖畫好后,就直接按照其去編碼。
其次,我們應該了解到從用例圖中得到的分析模型,只是表達了系統(tǒng)中的一些關鍵性的概念,而不能表達系統(tǒng)中的性能和系統(tǒng)的外觀。
最后,系統(tǒng)的分析模型往往對于系統(tǒng)的結構設計來說又往往過于簡單,復用和調(diào)試等等都不能在這個模型中被考慮完成。
因此,我們有必要對前面的分析模型再進一步地進行設計,以最終產(chǎn)生出軟件系統(tǒng)的最終設計模型。
5、開展軟件應用系統(tǒng)的系統(tǒng)設計工作的主要目的
進行或者開展軟件應用系統(tǒng)的系統(tǒng)設計主要的目的是能夠指明一種易轉化成代碼的工作方案,同時也是對前一個階段中的分析工作的進一步的細化—— 即進一步細化軟件系統(tǒng)分析階段所提取的類(包括其操作和屬性),并且增加新類以處理諸如數(shù)據(jù)庫、用戶接口、通信、設備等技術領域方面的問題。
之所以如此,是因為軟件系統(tǒng)的系統(tǒng)設計是對問題域外部可見行為的規(guī)格說明、并增添實際的計算機系統(tǒng)實現(xiàn)所需的細節(jié),包括人機交互、任務管理和數(shù)據(jù)管理的細節(jié)。如下為某個應用系統(tǒng)中的某個數(shù)據(jù)庫表結構定義的局部截圖:
6、軟件應用系統(tǒng)設計時的基本要求
在進行軟件應用系統(tǒng)的系統(tǒng)設計時所應該考慮的主要問題在于:處理什么?怎么處理?如何使用?
因此,軟件應用系統(tǒng)設計時所需要關注的方面,概括起來主要包括以下三個大類:
(1)處理的對象,也就是數(shù)據(jù)。
(2)處理的方式,也就是我們的系統(tǒng)如何來處理系統(tǒng)的邏輯。
(3)如何進行交互,這個交互包括用戶(使用者),以及外部系統(tǒng)。
7、讀者需要區(qū)分軟件設計和軟件的編程實現(xiàn)
(1)軟件設計以面向數(shù)據(jù)為主,以面向功能和面向對象為輔;
(2)而軟件的編程實現(xiàn)則以面向對象為主,以面向數(shù)據(jù)和功能為輔。
8、在進行軟件應用系統(tǒng)設計時所應該要注意的要點
(1)核心問題——能否使用重復的體系結構模式
也就是能否達到結構級的軟件重用——即能否在不同的軟件體系中,使用同一體系結構。比如我們經(jīng)常說的C/S和B/S體系結構等問題。因為體系結構是從更高的層面上考慮問題——關注的問題就體現(xiàn)在"不變"因素上,體系結構一般關心應用程序的模式,更加體現(xiàn)在通過技術去解決這些業(yè)務差異帶來的各種影響。
比如,關心是否是分布式應用程序,關心系統(tǒng)分層是如何設計,也關心性能和安全——因此,在這樣的情況之下,會考慮集群,負載平衡,故障遷移等等一系列技術的使用。如下示圖為某個軟件應用系統(tǒng)在系統(tǒng)架構設計中應用MVC體系結構模式的分層設計結果的局部示圖:
(2)軟件系統(tǒng)設計工作中所應該要遵循的"3W"原則
Who(為誰設計,用戶是誰)
What(要解決用戶的哪些問題—-功能方面、性能方面)
Why(為什么要解決這些問題—-為用戶帶來價值、降低開發(fā)方的成本等)
其實"3W"的本質(zhì),就是要求軟件應用系統(tǒng)的系統(tǒng)設計人員圍繞著"用戶"而不是圍繞著"我們"或者"時髦的技術"來開展軟件應用系統(tǒng)的設計工作的,因此滿足"用戶的需求、便于用戶的使用、同時又能使開發(fā)的技術盡可能簡單而相應地降低軟件應用系統(tǒng)開發(fā)的總體成本",這就是軟件應用系統(tǒng)的設計人員所要追求的設計目標。
9、軟件應用系統(tǒng)設計中的系統(tǒng)概要設計——總體結構設計
(1)在什么時期進行軟件應用系統(tǒng)的系統(tǒng)概要設計
在軟件系統(tǒng)的需求分析明確并對軟件應用系統(tǒng)的系統(tǒng)需求進行域建模之后,需要進一步開展系統(tǒng)概要設計的工作,因為軟件應用系統(tǒng)的系統(tǒng)概要設計對后續(xù)的軟件應用系統(tǒng)的開發(fā)、測試、實施、維護等方面的工作都起到關鍵性的影響。因此,軟件應用系統(tǒng)的設計人員需要重點關注、細心周到地開展相關的工作。
(2)軟件應用系統(tǒng)的概要設計工作的工作重點
如何使得系統(tǒng)概要設計工作能夠適應特定的實施環(huán)境和部署環(huán)境?系統(tǒng)概要設計工作的核心應該是規(guī)劃方案的構造,在揭示實施細節(jié)的基礎上得到設計方案的詳細對象模型。如下示圖為某個軟件應用系統(tǒng)的部署環(huán)境的局部截圖:
(3) 軟件應用系統(tǒng)的概要設計工作的重要性
1)分析和設計模型是交錯并且迭代的
2)軟件應用系統(tǒng)的概要設計的重要性主要體現(xiàn)在它是把軟件應用系統(tǒng)的需求轉化為軟件應用系統(tǒng)的開發(fā)實現(xiàn)過程中的最重要的環(huán)節(jié),并且軟件應用系統(tǒng)的系統(tǒng)設計最終結果的優(yōu)劣在根本上也決定了軟件應用系統(tǒng)的總體質(zhì)量。
10、軟件應用系統(tǒng)設計中的系統(tǒng)概要設計所涉及的主要內(nèi)容
(1)制定開發(fā)規(guī)范
制定本軟件應用系統(tǒng)中的各種開發(fā)規(guī)范是項目開發(fā)小組今后共同開發(fā)的基礎,有了這個開發(fā)規(guī)范和程序模塊之間、項目成員彼此之間的接口規(guī)則、方式和方法,開發(fā)團隊中的各個成員也就有了共同的工作語言、共同的工作平臺,從而使得整個軟件開發(fā)的工作可以協(xié)調(diào)而有序地進行和開展。而制定這些規(guī)范所涉及的主要內(nèi)容包括:
1)代碼體系、接口規(guī)約、命名規(guī)則
2)規(guī)定設計文檔的編制標準。
3)規(guī)定與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則。
(2)軟件系統(tǒng)的體系結構設計(架構設計)
體系結構是對復雜的軟件系統(tǒng)的一種抽象,如客戶/服務器(C/S)和瀏覽器—Web 服務器—數(shù)據(jù)庫服務器(B/W/S)結構等的應用。同時在架構設計中還應該考慮采用什么形式的框架技術和服務器的平臺類型等內(nèi)容。
(3)劃分軟件應用系統(tǒng)中的各個模塊并進行組件類的設計
根據(jù)用戶的需求實現(xiàn)從功能上來劃分各個功能模塊,在模塊設計中應該遵守"功能獨立的單一職責原則(SRP,Single-Responsibility Principle)"是模塊化設計的基本原則。因為,"功能獨立"的模塊可以降低軟件應用系統(tǒng)在開發(fā)、測試、維護等階段的代價。
(4)數(shù)據(jù)結構與算法設計
設計高效率的程序是基于良好的數(shù)據(jù)結構與算法的,而不是基于編程小技巧的。因為數(shù)據(jù)結構與算法就是一類數(shù)據(jù)的表示及其相關的操作。確定軟件系統(tǒng)所涉及的文件系統(tǒng)的結構以及數(shù)據(jù)庫中的數(shù)據(jù)訪問的模式,進行數(shù)據(jù)完整性和安全性的設計,并確定輸入,輸出文件的詳細的數(shù)據(jù)結構是本階段所要考慮的問題。
(5)數(shù)據(jù)庫的邏輯設計及系統(tǒng)數(shù)據(jù)流圖(DFD),如下示圖為藍夢CRM管理系統(tǒng)中的系統(tǒng)數(shù)據(jù)結構設計階段所涉及的系統(tǒng)數(shù)據(jù)流圖(DFD)設計結果局部示圖。
(6)其它如可靠性等方面的設計等
軟件系統(tǒng)在運行過程中,為了能夠適應環(huán)境的變化和用戶新的功能要求,需經(jīng)常對軟件進行改造和修正、完善。在軟件開發(fā)的一開始就要確定軟件可靠性和其它質(zhì)量指標,考慮相應措施,以使得軟件易于修改和易于維護。
11、掌握軟件應用系統(tǒng)的系統(tǒng)概要設計中所涉及的系統(tǒng)設計的一些基本的原則
(1)先進性
在設計思想、系統(tǒng)構架、采用技術和選用平臺上均要有一定的先進性、前瞻性和擴充性。特別要考慮一定時期內(nèi)業(yè)務的增長和應用的變化趨勢。在充分考慮技術上先進性的同時,盡量采用技術成熟、市場占有率比較高的產(chǎn)品,從而保證建成的網(wǎng)站系統(tǒng)具有良好的穩(wěn)定性、可擴展性和安全性。
(2)實用性
在盡量滿足業(yè)務功能需求的前提下,要適應各業(yè)務角色的工作特點,做到簡單、使用和人性化。實現(xiàn)統(tǒng)一身份和資源管理、統(tǒng)一認證、統(tǒng)一內(nèi)容管理、個性化界面和內(nèi)容定制。
(3)可靠性
由于企業(yè)應用中不可避免地要涉及不同的用戶群(操作層、管理層和業(yè)務層等人員),所以建設的信息服務網(wǎng)站系統(tǒng)必須在建設平臺上保證系統(tǒng)的可靠性和安全性。系統(tǒng)設計中,應有適量冗余及其他保護措施,平臺和應用軟件應具有容錯性和容災性。
(4)開放性
在系統(tǒng)架構、采用技術和選用平臺方面都必須要有較好的開放性。特別是在選擇產(chǎn)品上,要符合開放性要求,遵循國際標準化組織的技術標準,對選定的產(chǎn)品既有自己獨特優(yōu)勢,又能與其他多家優(yōu)秀的產(chǎn)品進行組合,共同構成一個開放的、易擴充的、穩(wěn)定的和統(tǒng)一軟件的系統(tǒng)。
(5)可維護性
系統(tǒng)設計應標準化和規(guī)范化,按照分層設計,軟件化實現(xiàn)。對于采用的軟件構件化開發(fā)方式要滿足:一是系統(tǒng)結構分層,業(yè)務與實現(xiàn)分離;二是以統(tǒng)一的服務接口規(guī)范為核心,使用開放標準;三是構件語意描述要形式化;四是提煉封裝構件要規(guī)范化。
(6)可伸縮性
考慮到一般的企業(yè)應用的網(wǎng)站系統(tǒng)的網(wǎng)上業(yè)務建設是一個循序漸進、不斷擴充的過程,系統(tǒng)要采用積木式結構,整體構架的考慮要與現(xiàn)有系統(tǒng)進行無縫連接,為今后系統(tǒng)擴展和集成留有擴充余量。
(7)可移植性
在選擇開發(fā)的應用平臺上,應該考慮能夠建設出一套與平臺無關,以統(tǒng)一的服務接口規(guī)范和與各種數(shù)據(jù)庫相連的應用組件。
12、軟件應用系統(tǒng)的系統(tǒng)概要設計階段最終的重要輸出結果
(1)軟件應用系統(tǒng)的概要設計說明書,一般需要包含如下的主要內(nèi)容:
1)編碼規(guī)范:信息形式、接口規(guī)約、命名規(guī)則;
2)物理模型:組件圖、配置圖;
3)不同角度的構架視圖:用例視圖、邏輯視圖、進程視圖、部署視圖、實施視圖、數(shù)據(jù)視圖(可選);
4)系統(tǒng)總體布局:哪些部分組成、各部分在物理上、邏輯上的相互關系;
(2)數(shù)據(jù)庫設計說明書
(3)用戶手冊
(4)制定初步的測試計劃
版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。