創(chuàng)建情節(jié)
根據(jù)訪問(wèn)者定義,找出能代表大多數(shù)訪問(wèn)者的人,舉例說(shuō)明用戶的真實(shí)網(wǎng)上經(jīng)歷,如何完成一定的任務(wù),就象講述一個(gè)網(wǎng)民上網(wǎng)的故事,可以盡量發(fā)揮想象力去描述。
競(jìng)爭(zhēng)性分析
瀏覽和評(píng)估一至二個(gè)我們主要的競(jìng)爭(zhēng)對(duì)手的網(wǎng)站,嚴(yán)肅客觀地評(píng)價(jià)競(jìng)爭(zhēng)者,分析出該項(xiàng)目在競(jìng)爭(zhēng)上的優(yōu)勢(shì)。
可以使用下表:
網(wǎng)站名
網(wǎng)址
功能描述
優(yōu)勢(shì)分析
本系統(tǒng)的主要功能
根據(jù)上述問(wèn)題描述,需要對(duì)系統(tǒng)的功能做詳細(xì)描述,以構(gòu)造出系統(tǒng)頂層的對(duì)象圖、狀態(tài)圖和數(shù)據(jù)流圖,
項(xiàng)目?jī)?nèi)容和功能的輸入
(1)項(xiàng)目?jī)?nèi)容概述(項(xiàng)目具有哪些內(nèi)容?哪些功能?列出所需的內(nèi)容和功能的清單。)
(2)項(xiàng)目?jī)?nèi)容分組和命名(將內(nèi)容進(jìn)行分組,也即分成若干個(gè)欄目,給每欄起一個(gè)名字,中文英文各取一個(gè),中文的用做導(dǎo)航,英文的作為網(wǎng)站文件目錄的名字。)
(3)功能需求(列出項(xiàng)目中用戶功能性的內(nèi)容)
項(xiàng)目結(jié)構(gòu)
(1)結(jié)構(gòu)列表
建立一個(gè)基于文本形式的項(xiàng)目層次結(jié)構(gòu)圖,結(jié)構(gòu)如下(摘自《云南移動(dòng)門戶網(wǎng)站手機(jī)俱樂(lè)部頻道策劃》):
(2)建立結(jié)構(gòu)藍(lán)圖,定義全局和局部導(dǎo)航。
結(jié)構(gòu)藍(lán)圖是網(wǎng)站結(jié)構(gòu)的可視化表示,顯示網(wǎng)站中的元素如何分組和聯(lián)系的圖表,不同的內(nèi)容(靜態(tài)或是動(dòng)態(tài)的)和功能使用不同的幾何形狀進(jìn)行表示,整個(gè)結(jié)構(gòu)呈現(xiàn)倒樹狀,內(nèi)容要素和功能要素使用不同的方法表示。
可用表的示例:
主線程
分線程
時(shí)間
(天)
所在分線程時(shí)間比
所在總線程時(shí)間比
前
臺(tái)
開
發(fā)
設(shè)計(jì)階段
參考
設(shè)計(jì)框架
設(shè)計(jì)裝飾圖片
完成設(shè)計(jì)整合
制作階段
設(shè)計(jì)CSS
制作框架html
加入代碼
作代碼優(yōu)化
設(shè)計(jì)制作
整合
與策劃人員溝通
在后臺(tái)代碼加入后,根據(jù)項(xiàng)目小組意見(jiàn)進(jìn)行整合
WEB
服
務(wù)
開
發(fā)
WEB
服務(wù)層
開發(fā)
審閱功能規(guī)范
確定模塊化/分層設(shè)計(jì)參數(shù)
分派任務(wù)
編寫代碼
開發(fā)人員測(cè)試(初步調(diào)試)
上傳功能模塊
數(shù)
據(jù)
庫(kù)
開
發(fā)
數(shù)據(jù)庫(kù)開發(fā)
審閱功能規(guī)范
確定表/過(guò)程設(shè)計(jì)參數(shù)
分派任務(wù)
編寫代碼
開發(fā)人員測(cè)試(初步調(diào)試)
上傳功能模塊
備選的分析機(jī)制
項(xiàng)目的分析機(jī)制還包括
? 永久性
? 安全性
? 分布
? 進(jìn)程通訊
? 錯(cuò)誤報(bào)告
? 格式轉(zhuǎn)換
? 消息路由
? 進(jìn)程控制與同步
? 事務(wù)管理
? 信息交換
? 冗余度
系統(tǒng)的架構(gòu)機(jī)制
架構(gòu)機(jī)制采用MVC(Model-View-Control),見(jiàn)設(shè)計(jì)模式,
結(jié)構(gòu)如下圖
定義過(guò)程流
然后定義過(guò)程流(Process Flow)。
使用UML描述,包括以下內(nèi)容;
1,描述設(shè)計(jì)對(duì)象的交互
2,使用子系統(tǒng)簡(jiǎn)化序列圖
3,描述永久性相關(guān)行為
4,改進(jìn)事件流描述
輸入的用例見(jiàn)附錄1表:
對(duì)象交互圖
對(duì)象交互圖包括:請(qǐng)求處理序列圖,事件處理序列圖,使用UML描述。
類設(shè)計(jì)—從分析類到設(shè)計(jì)類
從分析類到設(shè)計(jì)類的過(guò)程:可采用如下表(示例)
詳細(xì)描述:
示例:分析類
LoginInfoScreen身份及口令信息
數(shù)據(jù)庫(kù)設(shè)計(jì)
需要考慮:
對(duì)系統(tǒng)中信息流有嚴(yán)格的順序關(guān)系。
建立強(qiáng)大的查詢和統(tǒng)計(jì)功能,用戶只需要對(duì)要查詢的數(shù)據(jù)進(jìn)行簡(jiǎn)單的選擇和組合即可得到查詢結(jié)果。
靈活的授權(quán)管,用戶權(quán)限分為三級(jí):超級(jí)用戶、部門級(jí)用戶、單據(jù)級(jí)用戶。不同的用戶其權(quán)限不同。
2.3.6基于Web瀏覽器的多層結(jié)構(gòu)開發(fā)模式
主流的軟件架構(gòu)B/S與N Tier模式都有一些缺點(diǎn),所以現(xiàn)在出現(xiàn)了許多B-N Tier的系統(tǒng),就是基于Web瀏覽器的多層結(jié)構(gòu)開發(fā)模式,它吸收了兩者的優(yōu)點(diǎn)。
單純的B/S方式,雖然可以認(rèn)為實(shí)現(xiàn)了最終用戶使用成本幾乎為零,但它存在許多不足,它的功能較弱,無(wú)法非常容易地實(shí)現(xiàn)你的理念。比如你要實(shí)現(xiàn)一種商業(yè)模型,你會(huì)發(fā)現(xiàn)實(shí)際上Web方式是不安全、不可靠的,比如,用戶可通過(guò)頁(yè)面回退或前進(jìn)來(lái)改變你所有希望的結(jié)果、報(bào)表制作能力不足等(當(dāng)然這也取決于業(yè)務(wù)的復(fù)雜程度)。
為什么Web會(huì)造成邏輯實(shí)現(xiàn)上的困難?因?yàn)樗腔赟tateless(無(wú)狀態(tài))的,Stateless就是這樣一種情形:不知道用戶端是什么樣子,接收信息是不可控的,不知道傳遞給他的信息的流向,這就是Stateless。所有基于HTTP的東西都是Stateless的。而Socket的魅力就在于它是有狀態(tài)的。
現(xiàn)在發(fā)展起來(lái)的ASP、JSP、Java技術(shù),雖然彌補(bǔ)了HTTP協(xié)議存在的無(wú)狀態(tài)缺陷,但即使這些技術(shù)再先進(jìn),也無(wú)法解決HTTP協(xié)議基于Stateless的事實(shí)。 以基于IIS的ASP技術(shù)來(lái)說(shuō),它使用Session變量來(lái)實(shí)現(xiàn)State。但是不管什么技術(shù),最終都落在了COOKIE上,也就是使用COOKIE來(lái)保留客戶端狀態(tài)。
Socket目前應(yīng)用十分廣泛,ICQ、QQ等即時(shí)通訊軟件,還有許多網(wǎng)絡(luò)工具,大都基于Socket,因?yàn)镾ocket協(xié)議是有狀態(tài)的,所以才能做到這一點(diǎn)。可以這么說(shuō),是Socket讓網(wǎng)絡(luò)生活更精彩!
目前基于Web的多層結(jié)構(gòu)采用的底層技術(shù)主要有SOAP+State類協(xié)議或者HTTP+State類協(xié)議。從Delphi 6開始引入WebSnap包(一種Web Provider產(chǎn)品)。它同時(shí)支持HTTP與SOAP協(xié)議,也采用了一種類似Session變量的模式來(lái)實(shí)現(xiàn)有狀態(tài)(State)。它可以說(shuō)是目前市面上最強(qiáng)大的基于平臺(tái)的Browse/Server開發(fā)工具之一,不足是它還不能稱為完全的RAD工具,且門檻較高。在Delphi 7中還引入了IntraWeb控件包,它是一種真正意義上的網(wǎng)頁(yè)RAD開發(fā)工具,與WebSnap配合更好。
Web Provider、邏輯組件、多線程處理、交易機(jī)制、消息流轉(zhuǎn)等組合在一起是N Tier開發(fā)的高境界,所以是大型商業(yè)軟件架構(gòu)的首選。
另外還需要考慮消息機(jī)制,消息機(jī)制并不一定在所有的多層結(jié)構(gòu)中都存在,而且,如果要實(shí)現(xiàn)消息機(jī)制,必須尋找實(shí)現(xiàn)手段(比如使用Socket),否則,如果在程序中強(qiáng)制實(shí)施大量消息流轉(zhuǎn)(比如使用定時(shí)器監(jiān)控和消息數(shù)據(jù)表方式),無(wú)論是效率還是實(shí)現(xiàn)的復(fù)雜性來(lái)講都是要考慮的問(wèn)題。
概要設(shè)計(jì)
架構(gòu)設(shè)計(jì)的描述—概要設(shè)計(jì)說(shuō)明
概要設(shè)計(jì)的目的
概要設(shè)計(jì)的目的主要即設(shè)計(jì)系統(tǒng)架構(gòu),包括:
1,將軟件系統(tǒng)需求轉(zhuǎn)換為未來(lái)系統(tǒng)的設(shè)計(jì);
2,逐步開發(fā)強(qiáng)壯的系統(tǒng)架構(gòu);
3,使設(shè)計(jì)適合于實(shí)施環(huán)境,為提高性能而進(jìn)行設(shè)計(jì);
4,結(jié)構(gòu)應(yīng)該被分解為模塊和類。
概要設(shè)計(jì)的任務(wù)
概要設(shè)計(jì)的任務(wù)包括:
1,制定規(guī)范
制訂項(xiàng)目組的代碼體系、接口規(guī)約、命名規(guī)則。這是項(xiàng)目小組今后共同作戰(zhàn)的基礎(chǔ),有了開發(fā)規(guī)范和程序模塊之間和項(xiàng)目成員彼此之間的接口規(guī)則、方式方法,大家就有了共同的工作語(yǔ)言、共同的工作平臺(tái),使整個(gè)軟件開發(fā)工作可以協(xié)調(diào)有序地進(jìn)行。
2,總體結(jié)構(gòu)設(shè)計(jì)
功能(加工)->模塊:每個(gè)功能用那些模塊實(shí)現(xiàn),保證每個(gè)功能都有相應(yīng)的模塊來(lái)實(shí)現(xiàn);
模塊層次結(jié)構(gòu):某個(gè)角度的軟件框架視圖;
模塊間的調(diào)用關(guān)系:模塊間的接口的總體描述;
模塊間的接口:傳遞的信息及其結(jié)構(gòu);
處理方式設(shè)計(jì):滿足功能和性能的算法
3,用戶界面設(shè)計(jì)
(略)
4,數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
詳細(xì)的數(shù)據(jù)結(jié)構(gòu):表、索引、文件;
算法相關(guān)邏輯數(shù)據(jù)結(jié)構(gòu)及其操作;
上述操作的程序模塊說(shuō)明(在前臺(tái)?在后臺(tái)?用視圖?用過(guò)程?······)
接口控制表的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則
5,其他性能設(shè)計(jì)
主要是壓力性能的考慮。
概要設(shè)計(jì)的原則
總體原則和方法:由粗到細(xì)的原則,互相結(jié)合的原則,定性分析和定量分析相結(jié)合的方法,分解和協(xié)調(diào)的方法和模型化方法。
要系統(tǒng)考慮系統(tǒng)的一般性、關(guān)聯(lián)性、整體性和層次性。
分解協(xié)調(diào):目的是為了創(chuàng)造更好的系統(tǒng)。系統(tǒng)分解是指將一個(gè)復(fù)雜的系統(tǒng)分解為若干個(gè)子系統(tǒng),系統(tǒng)協(xié)調(diào)一是系統(tǒng)內(nèi)協(xié)調(diào),即根據(jù)系統(tǒng)的總結(jié)構(gòu)、總功能、總?cè)蝿?wù)和總目標(biāo)的要求,使各個(gè)子系統(tǒng)之間互相協(xié)調(diào)配合,在各個(gè)子系統(tǒng)局部?jī)?yōu)化基礎(chǔ)上,通過(guò)內(nèi)部平衡的協(xié)調(diào)控制,實(shí)現(xiàn)系統(tǒng)的整體優(yōu)化;
屏蔽抽象:從簡(jiǎn)單的框架開始,隱含細(xì)節(jié);
一致性:統(tǒng)一的規(guī)范、統(tǒng)一的標(biāo)準(zhǔn)、統(tǒng)一的文件模式;
每個(gè)模塊應(yīng)當(dāng)有一個(gè)統(tǒng)一命名的容易理解的名字;
編碼:由外向內(nèi)(界面->核心);
面向用戶:概要設(shè)計(jì)是對(duì)于按鈕按下后系統(tǒng)“怎么做”的簡(jiǎn)要說(shuō)明;
模塊、組件的充分獨(dú)立性、封閉性;
同時(shí)考慮靜態(tài)結(jié)構(gòu)與動(dòng)態(tài)運(yùn)行;
每個(gè)邏輯對(duì)象都應(yīng)當(dāng)說(shuō)明其所處物理對(duì)象(非一一對(duì)應(yīng));
每個(gè)物理對(duì)象都有合適的開發(fā)人員,并且利于分工與組裝。(詳細(xì)說(shuō)明見(jiàn)本人另一篇文章:系統(tǒng)架構(gòu)設(shè)計(jì)應(yīng)考慮的因素);
確立每個(gè)架構(gòu)視圖的整體結(jié)構(gòu):視圖的詳細(xì)組織結(jié)構(gòu)、元素的分組以及這些主要分組之間的接口;
軟件架構(gòu)與使用的技術(shù)平臺(tái)密切相關(guān),目前常用的平臺(tái)有J2EE、.NET、CORBA等等,因此具體的軟件架構(gòu)人員應(yīng)當(dāng)具備使用這些平臺(tái)的軟件開發(fā)經(jīng)驗(yàn);
通過(guò)需求功能與設(shè)計(jì)模塊之間的列表對(duì)應(yīng),檢查每個(gè)需求功能是否都有相應(yīng)的模塊來(lái)實(shí)現(xiàn),保證需求功能的可追溯性和需求實(shí)現(xiàn)(模塊)的完整性,同時(shí)可以檢查重復(fù)和不必要的模塊。
在需求調(diào)研分析過(guò)程中對(duì)業(yè)務(wù)處理過(guò)程了解的完整性和準(zhǔn)確性非常重要。調(diào)查了解清楚所有的業(yè)務(wù)流程才能設(shè)計(jì)出適合各流程業(yè)務(wù)節(jié)點(diǎn)用戶業(yè)務(wù)特點(diǎn)和習(xí)慣的軟件,使開發(fā)出來(lái)的軟件更受歡迎。當(dāng)然在進(jìn)行軟件概要設(shè)計(jì)時(shí),要盡量排除業(yè)務(wù)流程的制約,即把流程中的各項(xiàng)業(yè)務(wù)結(jié)點(diǎn)工作作為獨(dú)立的對(duì)象,設(shè)計(jì)成獨(dú)立的模塊,充分考慮他們與其他各種業(yè)務(wù)對(duì)象模塊的接口,在流程之間通過(guò)業(yè)務(wù)對(duì)象模塊的相互調(diào)用實(shí)現(xiàn)各種業(yè)務(wù),這樣,在業(yè)務(wù)流程發(fā)生有限的變化時(shí)(每個(gè)業(yè)務(wù)模塊本身的業(yè)務(wù)邏輯沒(méi)有變的情況下),就能夠比較方便地修改系統(tǒng)程序模塊間的調(diào)用關(guān)系而實(shí)現(xiàn)新的需求。如果這種調(diào)用關(guān)系被設(shè)計(jì)成存儲(chǔ)在配置庫(kù)的數(shù)據(jù)字典里,則連程序代碼都不用修改,只需修改數(shù)據(jù)字典里的模塊調(diào)用規(guī)則即可。
概要設(shè)計(jì)的內(nèi)容
1. 系統(tǒng)概述
(1)說(shuō)明本系統(tǒng)“是什么”,(2)描述本系統(tǒng)的主要功能。
2. 設(shè)計(jì)約束
(1)需求約束。體系結(jié)構(gòu)設(shè)計(jì)人員從需求文檔(如《用戶需求說(shuō)明書》和《軟件需求規(guī)格說(shuō)明書》)中提取需求約束,例如:本系統(tǒng)應(yīng)當(dāng)遵循的標(biāo)準(zhǔn)或規(guī)范,軟件、硬件環(huán)境(包括運(yùn)行環(huán)境和開發(fā)環(huán)境)的約束,接口/協(xié)議的約束,用戶界面的約束,軟件質(zhì)量的約束,如正確性、健壯性、可靠性、效率(性能)、易用性、清晰性、安全性、可擴(kuò)展性、兼容性、可移植性等等。
(2)隱含約束。有一些假設(shè)或依賴并沒(méi)有在需求文檔中明確指出,但可能會(huì)對(duì)系統(tǒng)設(shè)計(jì)產(chǎn)生影響,設(shè)計(jì)人員應(yīng)當(dāng)盡可能地在此處說(shuō)明。例如對(duì)用戶教育程度、計(jì)算機(jī)技能的一些假設(shè)或依賴,對(duì)支撐本系統(tǒng)的軟件硬件的假設(shè)或依賴等。
3. 設(shè)計(jì)策略
體系結(jié)構(gòu)設(shè)計(jì)人員根據(jù)產(chǎn)品的需求與發(fā)展戰(zhàn)略,確定設(shè)計(jì)策略(Design Strategy)。例如:擴(kuò)展策略。說(shuō)明為了方便本系統(tǒng)在將來(lái)擴(kuò)展功能,現(xiàn)在有什么措施。復(fù)用策略。說(shuō)明本系統(tǒng)在當(dāng)前以及將來(lái)的復(fù)用策略。折衷策略。說(shuō)明當(dāng)兩個(gè)目標(biāo)難以同時(shí)優(yōu)化時(shí)如何折衷,例如“時(shí)-空”效率折衷,復(fù)雜性與實(shí)用性折衷。
4. 系統(tǒng)總體結(jié)構(gòu)
(1)將系統(tǒng)分解為若干子系統(tǒng),繪制物理圖和邏輯圖,說(shuō)明各子系統(tǒng)的主要功能。
(2)說(shuō)明“如何”以及“為什么”(how and why)如此分解系統(tǒng)。
(3)說(shuō)明各子系統(tǒng)如何協(xié)調(diào)工作,從而實(shí)現(xiàn)原系統(tǒng)的功能。接口設(shè)計(jì):說(shuō)明外部用戶、軟、硬件接口;內(nèi)部模塊間接口。
5. 子系統(tǒng)的結(jié)構(gòu)與功能
(1)將子系統(tǒng)分解為模塊(Module),繪制邏輯圖(如果物理圖和邏輯圖不一樣的話,應(yīng)當(dāng)繪制物理圖),說(shuō)明各模塊的主要功能。
(2)說(shuō)明“如何”以及“為什么”(how and why)如此分解子系統(tǒng)N。
(3)說(shuō)明各模塊如何協(xié)調(diào)工作,從而實(shí)現(xiàn)子系統(tǒng)的功能。每個(gè)模塊“做什么”、簡(jiǎn)要說(shuō)明“怎么做”(輸入、輸出、處理邏輯、與其它模塊的接口,與其它系統(tǒng)或硬件的接口),處在什么邏輯位置、物理位置;
6. 開發(fā)環(huán)境的配置
說(shuō)明本系統(tǒng)應(yīng)當(dāng)在什么樣的環(huán)境下開發(fā),有什么強(qiáng)制要求和建議?
計(jì)算機(jī)硬件,軟件,網(wǎng)絡(luò)通信,
7. 運(yùn)行環(huán)境的配置
說(shuō)明本系統(tǒng)應(yīng)當(dāng)在什么樣的環(huán)境下運(yùn)行,有什么強(qiáng)制要求和建議?
8. 測(cè)試環(huán)境的配置
說(shuō)明本系統(tǒng)應(yīng)當(dāng)在什么樣的環(huán)境下測(cè)試,有什么強(qiáng)制要求和建議?
(1)一般地,單元測(cè)試、集成測(cè)試環(huán)境與開發(fā)環(huán)境相同。
(2)一般地,系統(tǒng)測(cè)試、驗(yàn)收測(cè)試環(huán)境與運(yùn)行環(huán)境相同或相似(更加嚴(yán)格)。
概要設(shè)計(jì)的輸出
編碼規(guī)范:信息形式、接口規(guī)約、命名規(guī)則;
物理模型:組件圖、配置圖;
不同角度的架構(gòu)視圖:用例視圖、邏輯視圖、進(jìn)程視圖、部署視圖、實(shí)施視圖、數(shù)據(jù)視圖(可選);
系統(tǒng)總體布局:哪些部分組成、各部分在物理上、邏輯上的相互關(guān)系;
兩個(gè)不可忽視的輸出:
與需求功能的關(guān)系:對(duì)于需求中的每一個(gè)功能,用哪一層、哪個(gè)模塊、哪個(gè)類、哪個(gè)對(duì)象來(lái)實(shí)現(xiàn)(一對(duì)多關(guān)系);反過(guò)來(lái),應(yīng)當(dāng)說(shuō)明將要?jiǎng)?chuàng)建的系統(tǒng)每一層、每個(gè)模塊、每個(gè)對(duì)象、每一個(gè)類“做什么”,他們是為了幫助實(shí)現(xiàn)哪些功能(一對(duì)多關(guān)系)。(需求的顆粒度在一開始往往是比較粗的,因此根據(jù)功能點(diǎn)對(duì)于整體項(xiàng)目規(guī)模的估計(jì)或得到項(xiàng)目WBS其誤差范圍也是比較大的。更為重要的原因是,需求往往不是編碼工作分解的準(zhǔn)確依據(jù),因?yàn)橐粋€(gè)需求的功能點(diǎn)可能對(duì)應(yīng)多個(gè)代碼模塊,而多個(gè)需求的功能點(diǎn)也可能只對(duì)應(yīng)一個(gè)或少數(shù)代碼模塊,同時(shí)還有軟件復(fù)用等因素要考慮,因此只有在概要設(shè)計(jì)完成以后才能準(zhǔn)確地得到詳細(xì)設(shè)計(jì)或編碼階段的二次WBS,并估計(jì)較為準(zhǔn)確的整體項(xiàng)目規(guī)模。)
邏輯與物理位置:每個(gè)對(duì)象在邏輯上分別落在哪一層、哪個(gè)模塊、哪個(gè)類;在物理上每個(gè)模塊、每個(gè)對(duì)象、每一個(gè)類放在哪個(gè)應(yīng)用服務(wù)器或客戶端的哪個(gè)目錄、哪個(gè)文件(庫(kù)),或者是建立在數(shù)據(jù)庫(kù)管理系統(tǒng)中的什么東東(過(guò)程、函數(shù)、視圖、觸發(fā)器等等)。
數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)的內(nèi)容
數(shù)據(jù)庫(kù)環(huán)境說(shuō)明
(1)說(shuō)明所采用的數(shù)據(jù)庫(kù)系統(tǒng),設(shè)計(jì)工具,編程工具等
(2)詳細(xì)配置
數(shù)據(jù)庫(kù)的命名規(guī)則
(1)完整并且清楚的說(shuō)明本數(shù)據(jù)庫(kù)的命名規(guī)則。
(2)如果本數(shù)據(jù)庫(kù)的命名規(guī)則與機(jī)構(gòu)的標(biāo)準(zhǔn)不完全一致的話,請(qǐng)作出解釋。
邏輯設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)人員根據(jù)需求文檔,創(chuàng)建與數(shù)據(jù)庫(kù)相關(guān)的那部分實(shí)體關(guān)系圖(ERD)。如果采用面向?qū)ο蠓椒ǎ∣OAD),這里實(shí)體相當(dāng)于類(class)。
物理設(shè)計(jì)
(1)主要是設(shè)計(jì)表結(jié)構(gòu)。一般地,實(shí)體對(duì)應(yīng)于表,實(shí)體的屬性對(duì)應(yīng)于表的列,實(shí)體之間的關(guān)系成為表的約束。邏輯設(shè)計(jì)中的實(shí)體大部分可以轉(zhuǎn)換成物理設(shè)計(jì)中的表,但是它們并不一定是一一對(duì)應(yīng)的。
(2)對(duì)表結(jié)構(gòu)進(jìn)行規(guī)范化處理(第三范式)。
)表匯總
列出表名,功能說(shuō)明。
每個(gè)表的列名,數(shù)據(jù)類型(精度范圍),空/非空,約束條件,補(bǔ)充說(shuō)明
安全性設(shè)計(jì)
提高軟件系統(tǒng)的安全性應(yīng)當(dāng)從“管理”和“設(shè)計(jì)”兩方面著手。這里僅考慮數(shù)據(jù)庫(kù)的安全性設(shè)計(jì)。
防止用戶直接操作數(shù)據(jù)庫(kù)的方法
用戶只能用賬號(hào)登陸到應(yīng)用軟件,通過(guò)應(yīng)用軟件訪問(wèn)數(shù)據(jù)庫(kù),而沒(méi)有其它途徑操作數(shù)據(jù)庫(kù)。
用戶賬號(hào)密碼的加密方法
對(duì)用戶賬號(hào)的密碼進(jìn)行加密處理,確保在任何地方都不會(huì)出現(xiàn)密碼的明文。
角色與權(quán)限
確定每個(gè)角色對(duì)數(shù)據(jù)庫(kù)表的操作權(quán)限,如創(chuàng)建、檢索、更新、刪除等。每個(gè)角色擁有剛好能夠完成任務(wù)的權(quán)限,不多也不少。在應(yīng)用時(shí)再為用戶分配角色,則每個(gè)用戶的權(quán)限等于他所具有的所有角色的權(quán)限。
包括: 角色,可以訪問(wèn)的表與列,操作權(quán)限
優(yōu)化
分析并優(yōu)化數(shù)據(jù)庫(kù)的“時(shí)-空”效率,盡可能地“提高處理速度”并且“降低數(shù)據(jù)占用空間”。
包括:優(yōu)先級(jí),優(yōu)化對(duì)象(目標(biāo)),措施
(1)分析“時(shí)-空”效率的瓶頸,找出優(yōu)化對(duì)象(目標(biāo)),并確定優(yōu)先級(jí)。
(2)當(dāng)優(yōu)化對(duì)象(目標(biāo))之間存在對(duì)抗時(shí),給出折衷方案。
(3)給出優(yōu)化的具體措施,例如優(yōu)化數(shù)據(jù)庫(kù)環(huán)境參數(shù),對(duì)表格進(jìn)行反規(guī)范化處理等。
數(shù)據(jù)庫(kù)管理與維護(hù)說(shuō)明
在設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候,及時(shí)給出管理與維護(hù)本數(shù)據(jù)庫(kù)的方法,有助于將來(lái)撰寫出正確完備的用戶手冊(cè)。
用戶界面設(shè)計(jì)
用戶界面設(shè)計(jì)的內(nèi)容
1. 應(yīng)當(dāng)遵循的界面設(shè)計(jì)規(guī)范
結(jié)合用戶需求和機(jī)構(gòu)的《軟件用戶界面設(shè)計(jì)指南》,闡述本軟件用戶界面設(shè)計(jì)應(yīng)當(dāng)遵循的規(guī)范(原則、建議等)。
界面的關(guān)系圖和工作流程圖
(1)給所有界面視圖分配唯一的標(biāo)識(shí)符。
(2)繪制各個(gè)界面之間的關(guān)系圖和工作流程圖。
主界面
(1)繪制主界面的視圖;
(2)說(shuō)明主界面中所有對(duì)象的功能和操作方式;
子界面
(1)繪制子界面的視圖;
(2)說(shuō)明子界面中所有對(duì)象的功能和操作方式;
美學(xué)設(shè)計(jì)
(1)闡述界面的布局及理由
(2)闡述界面的色彩及理由
界面資源設(shè)計(jì)
(1) 圖標(biāo)資源
(2) 圖像資源
(3) 界面組件
設(shè)計(jì)過(guò)程
以架構(gòu)為中心的過(guò)程
軟件系統(tǒng)的架構(gòu)是指系統(tǒng)重要組件的組織或結(jié)構(gòu),這些重要組件通過(guò)接口與那些由不斷減小的組件與接口所構(gòu)成的組件進(jìn)行交互。架構(gòu)具有以下作用:
1)理解系統(tǒng)使用UML可視化建模系統(tǒng)的架構(gòu),并以架構(gòu)為中心進(jìn)行開發(fā),這使得開發(fā)人員、管理人員及其他相關(guān)人員能夠詳細(xì)理解所需要做的工作,以利于他們參與系統(tǒng)的開發(fā)。
2)組織開發(fā) 架構(gòu)設(shè)計(jì)師通過(guò)將系統(tǒng)劃分為帶有明確定義接口的子系統(tǒng),并讓開發(fā)小組負(fù)責(zé)每個(gè)子系統(tǒng),可以顯著減少開發(fā)組之間交流的工作量,而且接口雙方的軟件可獨(dú)立地進(jìn)化。
3)鼓勵(lì)重用 好的架構(gòu)為開發(fā)人員提供了可以在其上開展工作的穩(wěn)定的骨架,它有助于開發(fā)人員知道在哪里能有效地找到可重用的元素以及發(fā)現(xiàn)合適的可重用的組件。
4)進(jìn)化系統(tǒng) 一個(gè)具有穩(wěn)定的架構(gòu)的系統(tǒng)在分析和設(shè)計(jì)時(shí)就考慮到系統(tǒng)進(jìn)化的需求,從而具有一定的容變能力,系統(tǒng)可以適度地進(jìn)化。
迭代和增量開發(fā)
迭代(Iteration)是指帶有已建立基準(zhǔn)(Base Line)的計(jì)劃和評(píng)估準(zhǔn)則的獨(dú)特活動(dòng)序列,迭代生成系統(tǒng)的內(nèi)部或外部發(fā)布版(Release)。
增量(Increment)是指在后續(xù)迭代結(jié)束后,兩個(gè)發(fā)布版本之間存在的差異(差值)。一般軟件的生命周期是由一系列迭代組成的,這些迭代都是由軟件項(xiàng)目分解成的許多袖珍項(xiàng)目(mini-project)。每個(gè)迭代都產(chǎn)生以內(nèi)部版本形式交付的實(shí)際結(jié)果,其中每個(gè)內(nèi)部版本會(huì)增加一個(gè)增量并表明所關(guān)注的風(fēng)險(xiǎn)得以降低。這些版本可以展示給客戶,從而獲得有價(jià)值的反饋以確認(rèn)工作成果。早期階段的迭代主要是關(guān)注確定項(xiàng)目的范圍,消除關(guān)鍵風(fēng)險(xiǎn)和建立系統(tǒng)架構(gòu)基準(zhǔn)。后期迭代則不斷增加增量結(jié)果,直至得到一個(gè)可對(duì)外發(fā)布的產(chǎn)品。迭代有助于管理層規(guī)劃、組織、監(jiān)控和控制項(xiàng)目。
迭代和增量開發(fā)具有以下的一些優(yōu)點(diǎn):(1)允許變更需求;(2)允許持續(xù)的集成;(3)及早降低風(fēng)險(xiǎn);(4)有助于組織學(xué)習(xí)和提高;(5)提高復(fù)用性;(6)生成性能更強(qiáng)壯的產(chǎn)品。
開發(fā)規(guī)范概述
應(yīng)用項(xiàng)目開發(fā)過(guò)程簡(jiǎn)述
每個(gè)項(xiàng)目要根據(jù)具體情況拆分成工作階段,即里程碑,以便對(duì)項(xiàng)目進(jìn)度的有效控制與度量。以項(xiàng)目立項(xiàng)為開始標(biāo)志。以項(xiàng)目結(jié)項(xiàng)為結(jié)束標(biāo)志。
(參考表示)
階段
項(xiàng)目計(jì)劃
需求分析
系統(tǒng)分析&設(shè)計(jì)
編碼實(shí)現(xiàn)
測(cè)試/文檔編制
驗(yàn)收/發(fā)布
項(xiàng)目總結(jié)
1
項(xiàng)目立項(xiàng)
資料收集
確定問(wèn)題域
編碼規(guī)范
單元測(cè)試
項(xiàng)目版本化
項(xiàng)目總結(jié)
2
立項(xiàng)申請(qǐng)
需求分析
需求建模
單元編碼
集成測(cè)試
版本發(fā)布
任務(wù)數(shù)度量
3
提交可行性研究報(bào)告或系統(tǒng)建設(shè)方案
需求分析討論
建立分析對(duì)象模型
編碼調(diào)試
系統(tǒng)測(cè)試
項(xiàng)目組驗(yàn)收
維護(hù)計(jì)劃
4
風(fēng)險(xiǎn)評(píng)估
需求分析測(cè)試/修改
系統(tǒng)分析測(cè)試/測(cè)試后修改
單元測(cè)試/修改
文檔編制
客戶驗(yàn)收
輸出成果
5
進(jìn)度計(jì)劃
需求分析評(píng)審
系統(tǒng)分析評(píng)審
編碼聯(lián)調(diào)
開發(fā)文檔整理
項(xiàng)目結(jié)項(xiàng)
6
提交項(xiàng)目總體計(jì)劃
界面設(shè)計(jì)
集成測(cè)試/修改
用戶文檔編制
7
建立設(shè)計(jì)模型/設(shè)計(jì)合并
系統(tǒng)測(cè)試/修改
宣傳資料編寫
8
對(duì)象持久化設(shè)計(jì)
編碼評(píng)審
9
詳細(xì)設(shè)計(jì)
10
系統(tǒng)設(shè)計(jì)測(cè)試/修改
11
系統(tǒng)設(shè)計(jì)評(píng)審
設(shè)計(jì)階段的活動(dòng)
序號(hào)
活動(dòng)名稱
角色
活動(dòng)描述
備注
1
系統(tǒng)分析
架構(gòu)設(shè)計(jì)師
劃分需求的問(wèn)題域,對(duì)每一個(gè)問(wèn)題域進(jìn)行分析和抽象,定義類和對(duì)象的屬性與服務(wù),以及結(jié)構(gòu)、靜態(tài)聯(lián)系和動(dòng)態(tài)聯(lián)系。
最終產(chǎn)生面向?qū)ο蟮姆治瞿P汀?div style="height:15px;">
架構(gòu)設(shè)計(jì)—根據(jù)需求,進(jìn)行分析、設(shè)計(jì)系統(tǒng)架構(gòu),產(chǎn)生架構(gòu)設(shè)計(jì)工件。
發(fā)現(xiàn)和修復(fù)缺陷—根據(jù)同行評(píng)審規(guī)范,評(píng)審架構(gòu)設(shè)計(jì)工件。一致性確認(rèn)—對(duì)架構(gòu)設(shè)計(jì)達(dá)成一致。
將評(píng)審?fù)ㄟ^(guò)的軟件架構(gòu)設(shè)計(jì)工件置于配置管理?;€化架構(gòu)一基線化架構(gòu)設(shè)計(jì),作為詳細(xì)設(shè)計(jì)的基礎(chǔ)。
發(fā)現(xiàn)和修復(fù)缺陷—根據(jù)《同行評(píng)審規(guī)范》,評(píng)審詳細(xì)設(shè)計(jì)工件。一致性確認(rèn)—對(duì)詳細(xì)設(shè)計(jì)達(dá)成一致
基線化詳細(xì)設(shè)計(jì)一對(duì)詳細(xì)設(shè)計(jì)進(jìn)行基線化,作為實(shí)施活動(dòng)的基礎(chǔ)。