???????軟件過程的真實目標是完成一個軟件系統(tǒng)的規(guī)格說明生音、設(shè)計、實現(xiàn)和測試窒升。
???????4個基本的過程活動——規(guī)格說明缀遍、開發(fā)、確認(測試)饱须、演化域醇,在瀑布模型中,這些活動被組織成一個序列蓉媳;而在增量式開發(fā)中譬挚,這些活動交織在一起。
軟件規(guī)格說明
軟件設(shè)計和實現(xiàn)
???????軟件開發(fā)的實現(xiàn)階段是開發(fā)一個可執(zhí)行的系統(tǒng)交付給用戶的過程酪呻。有時候軟件設(shè)計和編碼活動會分開减宣。然而,如果使用敏捷方法玩荠,那么設(shè)計和實現(xiàn)是交織在一起的漆腌,不會在此過程中產(chǎn)生正式的設(shè)計文檔。當然姨蟋,仍然需要對軟件進行設(shè)計屉凯,但是設(shè)計是以一種非正式的方式記錄在程序員的電腦上的。
???????軟件設(shè)計是對將要實現(xiàn)的軟件的結(jié)構(gòu)眼溶、系統(tǒng)所使用的數(shù)據(jù)模型和結(jié)構(gòu)、系統(tǒng)構(gòu)件間的接口的描述晓勇,有時候還會包括所用的算法堂飞。設(shè)計者不是立即完成全部設(shè)計的,而是分階段完成設(shè)計的绑咱。設(shè)計者在設(shè)計過程中要不斷添加所需要的細節(jié)绰筛,同時不斷修改先前的設(shè)計方案。
???????下圖是設(shè)計過程的抽象模型描融,顯示了設(shè)計過程的輸入铝噩、過程活動以及過程的輸出。設(shè)計過程活動即存在交織又相互依賴窿克。關(guān)于設(shè)計的新信息不斷生成骏庸,這會影響此前的設(shè)計決策毛甲。因此,設(shè)計的修改是不可避免的具被。
??????? 大多數(shù)軟件都會與其他軟件系統(tǒng)進行交互玻募。這些其他系統(tǒng)包括操作系統(tǒng)、數(shù)據(jù)庫一姿、中間件和其他應(yīng)用系統(tǒng)七咧。這些構(gòu)成了所謂的“軟件平臺”,即軟件將會在其中運行的環(huán)境叮叹。關(guān)于該平臺的信息對于設(shè)計過程是一種重要輸入艾栋,因為設(shè)計者必須決定如何以最好的方式將系統(tǒng)與其他環(huán)境集成在一起。
??????? 不同開發(fā)項目中的設(shè)計過程活動有所相同蛉顽,取決于所開發(fā)的系統(tǒng)類型裹粤。例如,實時系統(tǒng)要求一個額外的時間設(shè)計階段蜂林,但可能不包含數(shù)據(jù)庫遥诉,因此可以沒有數(shù)據(jù)庫設(shè)計階段。在設(shè)計過程的通用模型
圖中顯示了信息系統(tǒng)設(shè)計過程中可能包含的4個活動噪叙。
-
體系結(jié)構(gòu)設(shè)計
:將識別系統(tǒng)的總體結(jié)構(gòu)矮锈,基本的構(gòu)件(有時候也稱為子系統(tǒng)或模塊)、它們之間的關(guān)系以及它們是如何分布的睁蕾。 -
數(shù)據(jù)庫設(shè)計
: 將設(shè)計系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)庫中的數(shù)據(jù)表示方式苞笨。同樣,這里的工作取決于是否要復(fù)用一個已經(jīng)存在的數(shù)據(jù)庫或者創(chuàng)建一個新的數(shù)據(jù)庫子眶。 -
接口設(shè)計
:將定義系統(tǒng)構(gòu)件間的接口瀑凝。接口規(guī)格說明必須是無歧義的。有了精確的接口定義臭杰,一個構(gòu)件就可以在無需了解另一個構(gòu)件的具體實現(xiàn)情況下使用該構(gòu)件粤咪。針對接口的規(guī)格說明達成一致后,各個構(gòu)件就可以獨立進行設(shè)計和開發(fā)了渴杆。 -
構(gòu)件選取和設(shè)計
: 將搜索可復(fù)用的構(gòu)件寥枝,如果沒找到合適的構(gòu)件那么就設(shè)計新的軟件構(gòu)件。此階段的設(shè)計可能只是對構(gòu)件的簡單描述磁奖,而把實現(xiàn)細節(jié)留給程序員囊拜。也可以是確定要對一個可復(fù)用構(gòu)件進行的一個修改列表,或者是UML表示的一個詳細的設(shè)計模型比搭。
??????? 這些活動產(chǎn)生設(shè)計輸出冠跷,在設(shè)計過程的通用模型
圖中也有表示。對于關(guān)鍵性系統(tǒng),設(shè)計過程的輸出是詳細設(shè)計文檔蜜托,其中設(shè)定了精確和準確的系統(tǒng)描述抄囚。如果使用模型驅(qū)動的開發(fā)方法,設(shè)計輸出是設(shè)計圖盗冷。如果使用敏捷開發(fā)方法怠苔,設(shè)計過程的輸出可能不是獨立的規(guī)格說明文檔,而是在程序的代碼中進行表示仪糖。
???????通常柑司,程序員會對已經(jīng)開發(fā)好的代碼進行一些測試。這經(jīng)彻埃可以發(fā)現(xiàn)一些必須從程序中移除的程序缺陷(BUG)攒驰。找到并修復(fù)程序缺陷被稱為調(diào)試(DEBUG)。缺陷測試和調(diào)試是不同的過程:測試確定缺陷的存在故爵;調(diào)試關(guān)注定位并修正這些缺陷玻粪。