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