第1章
軟件:計算機(jī)程序及說明程序的各種文檔?!俺绦颉笔怯嬎闳蝿?wù)的處理對象和處理規(guī)則的描述;
“文檔”是有關(guān)計算機(jī)程序功能、設(shè)計、編制、使用的文字或圖形資料。
軟件生產(chǎn)的發(fā)展:程序設(shè)計時代,程序系統(tǒng)時代,軟件工程時代。
軟件工程:用科學(xué)知識和技術(shù)原理來定義、開發(fā)、維護(hù)軟件的一門學(xué)科。
軟件工程性質(zhì):它涉及計算機(jī)科學(xué)、工程科學(xué)、管理科學(xué)、數(shù)學(xué)等領(lǐng)域,計算機(jī)科學(xué)著重于原理
和理論,而軟件工程著重于如何建造一個軟件系統(tǒng)。軟件工程要用工程科學(xué)中的觀點來進(jìn)行費用
估算、制定進(jìn)度、制定計劃和方案。軟件工程要用管理科學(xué)中的方法和原理進(jìn)行軟件生產(chǎn)的管
理。軟件工程要用數(shù)學(xué)的方法建立軟件開發(fā)中的各種模型和各種算法,如可靠性模型,說明用戶
需求的形式化模型等。
軟件工程研究的主要內(nèi)容是軟件開發(fā)技術(shù)和軟件開發(fā)管理兩個方面。在軟件開發(fā)技術(shù)中,主要研
究軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境。在軟件開發(fā)管理中, 主要是研究軟件管
理學(xué)、軟件經(jīng)濟(jì)學(xué)、軟件心理學(xué)等。
軟件工程面臨的問題:軟件費用;軟件可靠性;軟件維護(hù);軟件生產(chǎn)率;軟件重用。
軟件工程過程:獲取過程;供應(yīng)過程;開發(fā)過程;操作過程;維護(hù)過程;管理過程;支持過程。
軟件生存周期:可行性分析和項目開發(fā)計劃;需求分析;概要設(shè)計;詳細(xì)設(shè)計;編碼;測試;維
護(hù)。
軟件生存周期模型是描述軟件開發(fā)過程中各種活動如何執(zhí)行的模型。
瀑布模型是將軟件生存周期各個活動規(guī)定為依線性順序連接的若干階段的模型。
增量模型是一種非整體開發(fā)的模型。瀑布模型是一種整體開發(fā)的模型
螺旋模型將瀑布模型與增量模型結(jié)合起來,加入了風(fēng)險分析,用于復(fù)雜的大型軟件開發(fā);分為幾
個螺旋周期:第一,制定計劃;第二,風(fēng)險分析;第三,開發(fā)實施;第四,用戶評估。
噴泉模型是一種以用戶需求為動力,以對象作為驅(qū)動的模型,適合于面向?qū)ο蟮拈_發(fā)方法。噴泉
模型使開發(fā)過程具有迭代性和無間隙性。
基本知識的模型又稱智能模型,它把瀑布模型和專家系統(tǒng)結(jié)合在一起。
變換模型是一種適合于形式化開發(fā)方法的模型。從軟件需求形式化說明開始,經(jīng)過一系列變換,
最終得到系統(tǒng)的目標(biāo)程序。
軟件開發(fā)方法:
結(jié)構(gòu)化方法由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計、結(jié)構(gòu)化程序設(shè)計構(gòu)成。它是一種面向數(shù)據(jù)流的開發(fā)方
法。結(jié)構(gòu)化方法總的指導(dǎo)思想是自頂向下、逐步求精。它的基本原則是功能的分解與抽象,它是
軟件工程中最早出現(xiàn)的開發(fā)方法,特別適合于數(shù)據(jù)處理領(lǐng)域的問題。
Jackson方法是一種面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法。
維也納開發(fā)方法(VDM)是一種形式化的開發(fā)方法,軟件的需求用嚴(yán)格的形式語言描述。
面向?qū)ο蟮拈_發(fā)方法包括面向?qū)ο蠓治觥⒚嫦驅(qū)ο笤O(shè)計、面向?qū)ο髮崿F(xiàn)。面向?qū)ο箝_發(fā)方法有
Booch方法、Coad方法
第2章
軟件可行性研究的目的就是用最小的代價在盡可能短的時間內(nèi)確定該軟件項目是否能夠開發(fā),是
否值得去開發(fā)。注意,可行性研究的目的不是去開發(fā)一個軟件項目,而是研究這個軟件項目是否
值得去開發(fā),其中的問提能否解決。可行性研究實質(zhì)上是要進(jìn)行一次簡化、壓縮了的需求分析、
設(shè)計過程,要在較高層次上以較抽象的方式進(jìn)行需求分析和設(shè)計過程。
可行性研究的任務(wù)
技術(shù)可行性:對要開發(fā)項目的功能、性能、限制條件進(jìn)行分析,確定在現(xiàn)有的資源條件下,技術(shù)
風(fēng)險有多大,項目是否能實現(xiàn)。包括:開發(fā)的風(fēng)險;資源的有效性;技術(shù);開發(fā)人員在評估技術(shù)
可行性時,一旦估計錯誤,將會出現(xiàn)災(zāi)難性后果。
經(jīng)濟(jì)可行性包括成本――效果分析、公司經(jīng)營長期策略、開發(fā)所需的成本和資源、潛在的市場前
景。
社會可行性包括:合同、責(zé)任、侵權(quán)、用戶組織的管理模式及規(guī)范,其他一些技術(shù)人員常常不了
解的陷阱等。
典型的可行性研究有下列步驟:確定項目規(guī)模和目標(biāo);研究正在運行的系統(tǒng);建立新系統(tǒng)的高層
邏輯模型;導(dǎo)出和評價各種方案;推薦可行的方案;編寫可行性研究報告。
可行性研究報告的主要內(nèi)容:引言;可行性研究前提;對現(xiàn)有系統(tǒng)的分析;所建議系統(tǒng)的技術(shù)可
行性分析;所建議系統(tǒng)的經(jīng)濟(jì)可行性分析;社會因素可行性分析;其他可供選擇方案;結(jié)論意
見。
成本――效益分析首先是估算將要開發(fā)的系統(tǒng)的開發(fā)成本,然后與可能取得的效益進(jìn)行比較和權(quán)
衡。效益分有形效益和無形效益兩種。有形效益可以用貨幣的時間價值、投資回收期、純收入等
指標(biāo)進(jìn)行度量;無形效益主要從性質(zhì)上、心理上進(jìn)行衡量,很難直接進(jìn)行量的比較。
投資回收期就是使累計的經(jīng)濟(jì)效益等于最初的投資費用所需的時間。
項目的純收入,也就是在整個生存周期之內(nèi)的累計經(jīng)濟(jì)效益(折合成現(xiàn)在值)與投資之差。
項目開發(fā)計劃:項目概述;實施計劃;人員組織及分工;交付期限。
第3章
在進(jìn)行可行性研究和軟件計劃以后,如果確認(rèn)開發(fā)一個新的軟件系統(tǒng)是必要的而且是可能的,那
么就進(jìn)入需求分析階段。
需求分析是指,開發(fā)人員要準(zhǔn)確理解用戶的要求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式的需求陳
述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應(yīng)的形式功能規(guī)約(需求規(guī)格說明)的過程。
它的難點主要體現(xiàn)在以下幾個方面:問題的復(fù)雜性;交流障礙;不完備性和不一致性。需求易變
性。
需求分析的基本任務(wù)是要準(zhǔn)確地定義新系統(tǒng)的目標(biāo),為了滿足用戶需要,回答系統(tǒng)必須“做什
么”的問題。
本階段要進(jìn)行以下幾方面的工作:
問題識別:功能需求;性能需求;環(huán)境需求;用戶界面需求
分析與綜合,導(dǎo)出軟件的邏輯模型
編寫文檔:需求規(guī)格說明書;初步用戶使用手冊;確認(rèn)測試計劃;修改完善軟件開發(fā)計劃。
結(jié)構(gòu)化分析(SA)是面向數(shù)據(jù)流進(jìn)行需求分析的方法。
SA方法利用圖形等半形式化的描述方式表達(dá)需求,簡明易懂,用它們形成需求說明書中的主要部
分。這些描述工具是:數(shù)據(jù)流圖;數(shù)據(jù)字典;描述加工邏輯的結(jié)構(gòu)化語言,判定表、判定樹。
“數(shù)據(jù)流圖(DFD)”描述的分解,即描述系統(tǒng)由哪幾部分組成,各部分之間有什么聯(lián)系等等。
“數(shù)據(jù)字典”定義了數(shù)據(jù)流圖中每一個圖形元素。結(jié)構(gòu)化語言、判定表或判定樹則詳細(xì)描述數(shù)據(jù)
流圖中不能被再分解的每一個加工。
數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,因此由一組成分固定的數(shù)據(jù)項組成。
加工(又稱數(shù)據(jù)處理)。對數(shù)據(jù)流進(jìn)行某些操作或變換。
數(shù)據(jù)存儲(又稱文件),指暫時保存的數(shù)據(jù),它可以是數(shù)據(jù)庫文件或任何形式的數(shù)據(jù)組織。
數(shù)據(jù)源點或終點:是本軟件系統(tǒng)外部環(huán)境中的實體,統(tǒng)稱外部實體。
數(shù)據(jù)字典(DD)就是用來定義數(shù)據(jù)流圖中的各個成分的具體含義的,它和數(shù)據(jù)流圖共同構(gòu)成了系
統(tǒng)的邏輯模型,是需求規(guī)格說明書的主要組成部分。
數(shù)據(jù)字典的內(nèi)容及格式
數(shù)據(jù)項是組成數(shù)據(jù)流和數(shù)據(jù)存儲的最小元素。
數(shù)據(jù)流條目;數(shù)據(jù)存儲條目;數(shù)據(jù)項條目;加工條目
數(shù)據(jù)字典中的加工邏輯主要描述該加工“做什么”,即實現(xiàn)另工的策略,而不是實現(xiàn)加工的細(xì)
節(jié),它描述如何把輸入數(shù)據(jù)流變換為輸出數(shù)據(jù)流的加工規(guī)則。
加工邏輯也稱為“小說明”,描述加工邏輯一般用以下三種工具:結(jié)構(gòu)化語言、判定表、判定
樹。
結(jié)構(gòu)化語言是介于自然語言和形式語言之間的一種半形式語言。它的結(jié)構(gòu)可分成外層和內(nèi)層兩
層:外層用來描述控制結(jié)構(gòu),采用順序、選擇、重復(fù)三種基本結(jié)構(gòu);內(nèi)層
對于順序執(zhí)行和循環(huán)執(zhí)行的動作,用結(jié)構(gòu)化語言描述。對于存在多個條件復(fù)雜組合的判斷問題,
用判定表和判定樹。
IDEF0:用來描述系統(tǒng)的功能活動及其聯(lián)系,建立系統(tǒng)的功能模型。
IDEF1:用來描述系統(tǒng)的信息及其聯(lián)系,建立系統(tǒng)的信息模型。
IDEF2:用來進(jìn)行系統(tǒng)模擬,建立系統(tǒng)的動態(tài)模型。
傳統(tǒng)的SA方法主要用于數(shù)據(jù)處理方面的問題,主要工具DFD體現(xiàn)了系統(tǒng)“做什么”的功能,但它僅
是一個靜態(tài)模型,沒有反映處理的順序,即控制流程。
形式化方法是將需求規(guī)格說明用形式規(guī)約語言來描述。典型的有基于模型的Z語言及VDM開發(fā)方
法。
kingwang
2004-7-20
17:13:33 第4章
在軟件需求分析階段,已經(jīng)搞清楚了軟件“做什么”的問題,并把這些需求通過規(guī)格說明書描述了出來,這也是目標(biāo)系統(tǒng)的邏輯模型。進(jìn)入了設(shè)計階段,要把軟件“做什么”的邏輯模型變換為“怎么做”的物理模型,即著手實現(xiàn)
軟件的需求,并將設(shè)計的結(jié)果反映在“設(shè)計規(guī)格說明”文檔中,軟件設(shè)計是一個把軟件需求轉(zhuǎn)換為軟件表示的過程,最初這種表示只是描述了軟件的總的體系結(jié)構(gòu),稱為軟件概要設(shè)計或結(jié)構(gòu)設(shè)計。然后對結(jié)構(gòu)進(jìn)一步細(xì)分,稱為詳
細(xì)設(shè)計或過程設(shè)計。
概要設(shè)計的基本任務(wù):
1設(shè)計軟件系統(tǒng)結(jié)構(gòu)(簡稱軟件結(jié)構(gòu))――采用某種設(shè)計方法,將一個復(fù)雜的系統(tǒng)按功能劃分成模塊;確定每個模塊的功能;確定模塊之間的接口,即模塊之間傳遞的信息;評價模塊結(jié)構(gòu)的質(zhì)量。
軟件結(jié)構(gòu)設(shè)計是以模塊為基礎(chǔ)的,在需求分析階段,已經(jīng)把系統(tǒng)分解為層次結(jié)構(gòu)。設(shè)計階段,以需求分析的結(jié)果為依據(jù),從實現(xiàn)的角度進(jìn)一步劃分為模塊,并組成模塊的層次結(jié)構(gòu)。
2數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫的設(shè)計指數(shù)據(jù)存儲文件的設(shè)計(概念設(shè)計、邏輯設(shè)計、物理設(shè)計)
數(shù)據(jù)庫的“概念設(shè)計”、“邏輯設(shè)計”分別對應(yīng)于系統(tǒng)開發(fā)中的“需求分析”與“概要設(shè)計”,而數(shù)據(jù)庫的“物理設(shè)計”與模塊的“詳細(xì)設(shè)計”相對應(yīng)。
3編寫概要設(shè)計文檔(概要設(shè)計說明書、數(shù)據(jù)庫設(shè)計說明書、用戶手冊、修訂測試計劃,對測試策略、方法、步驟提出明確要求。)
4評審:對設(shè)計部分是否完整地實現(xiàn)了需求中規(guī)定的功能、性能等要求,設(shè)計方案的可行性,關(guān)鍵的處理及內(nèi)外部接口定義正確性、有效性,各部分之間的一致性等等都一一進(jìn)行評審。
模塊的基本屬性:接口指模塊的輸入與輸出;功能指模塊實現(xiàn)什么功能;邏輯描述內(nèi)部如何實現(xiàn)要求的功能及所需的數(shù)據(jù);狀態(tài)指該模塊的運行環(huán)境,即模塊的調(diào)用與被調(diào)用關(guān)系。
功能、狀態(tài)與接口反映模塊的外部特性,邏輯反映它的內(nèi)部特性。
模塊化是指解決一個復(fù)雜問題時自頂向下逐層把軟件系統(tǒng)劃分為若干模塊的過程。模塊完成一個特定的子功能,所有的模塊按某種方法組裝起來,成為一個整體,完成整個系統(tǒng)所要求的功能。
開發(fā)一個大而復(fù)雜的軟件系統(tǒng),將它進(jìn)行適當(dāng)?shù)姆纸?,不但可降低其?fù)雜性,還可減少開發(fā)工作量,從而降低開發(fā)成本,提高軟件生產(chǎn)率,這就是模塊化的依據(jù)。
抽象是認(rèn)識復(fù)雜現(xiàn)象過程中使用的思維工具,即抽出事物本質(zhì)的共同的特性而暫不考慮它的細(xì)節(jié),不考慮其他因素。
通過抽象,可以確定組成軟件的過程實體。通過信息隱蔽,可以定義和實施對模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制。信息隱蔽指在設(shè)計和確定模塊時,使得一個模塊內(nèi)部包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的
其他模塊來說,是不能訪問的。
模塊獨立性指每個模塊只完成系統(tǒng)要求的獨立子功能,并且與其他模塊的聯(lián)系最少且接口簡單,兩個定性的度量標(biāo)準(zhǔn)――耦合性和內(nèi)聚性。
耦合性也稱塊間聯(lián)系。指軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。模塊之間聯(lián)系越緊密,其耦合性就越強(qiáng),模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復(fù)雜性、調(diào)用的方式及傳遞的信息。
無直接耦合 數(shù)據(jù)耦合 標(biāo)記耦合 控制耦合 公共耦合 內(nèi)容耦合(低――高)
1無直接耦合
2數(shù)據(jù)耦合指兩個模塊之間有調(diào)用關(guān)系,傳遞的是簡單的數(shù)據(jù)值,相當(dāng)于高級語言的值傳遞。
3標(biāo)記耦合指兩個模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu),如高級語言中的數(shù)組名、記錄名、文件名等這些名字即標(biāo)記,其實傳遞的是這個數(shù)據(jù)結(jié)構(gòu)的地址。
4控制耦合指一個模塊調(diào)用另一個模塊時,傳遞的是控制變量(如開關(guān)、標(biāo)志等),被調(diào)模塊通過該控制變量的值有選擇地執(zhí)行塊內(nèi)某一功能。
5公共耦合指通過一個公共數(shù)據(jù)環(huán)境相互作用的那些模塊間的耦合。
公共耦合的復(fù)雜程序隨耦合模塊的個數(shù)增加而增加。
6內(nèi)容耦合:這是最高程度的耦合,也是最差的耦合。當(dāng)一個模塊直接使用另一個模塊的內(nèi)部數(shù)據(jù),或通過非正常入口而轉(zhuǎn)入另一個模塊內(nèi)部。
內(nèi)聚性又稱塊內(nèi)聯(lián)系。指模塊的功能強(qiáng)度的度量,即一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。若一個模塊內(nèi)各元素(語名之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就越高。
偶然內(nèi)聚 邏輯內(nèi)聚 時間內(nèi)聚 通信內(nèi)聚 順序內(nèi)聚 功能內(nèi)聚(低――高)
1偶然內(nèi)聚指一個模塊內(nèi)的各處理元素之間沒有任何聯(lián)系。
2邏輯內(nèi)聚指模塊內(nèi)執(zhí)行幾個邏輯上相似的功能,通過參數(shù)確定該模塊完成哪一個功能。
3時間內(nèi)聚:把需要同時執(zhí)行的動作組合在一起形成的模塊為時間內(nèi)聚模塊。
4通信內(nèi)聚指模塊內(nèi)所有處理元素都在同一個數(shù)據(jù)結(jié)構(gòu)上操作(有時稱之為信息內(nèi)聚),或者指各處理使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的輸出數(shù)據(jù)。
5順序內(nèi)聚指一個模塊中各個處理元素都密切相關(guān)于同一功能且必須順序執(zhí)行,前一功能元素輸出就是下一功能元素的輸入。
6功能內(nèi)聚:這是最強(qiáng)的內(nèi)聚,指模塊內(nèi)所有元素共同完成一個功能,缺一不可。與其他模塊的耦合是最弱的。
耦合性與內(nèi)聚性是模塊獨立性的兩個定性標(biāo)準(zhǔn),將軟件系統(tǒng)劃分模塊時,盡量做到高內(nèi)聚低耦合,提高模塊的獨立性,為設(shè)計高質(zhì)量的軟件結(jié)構(gòu)奠定基礎(chǔ)。
軟件結(jié)構(gòu)圖主要內(nèi)容有:模塊、模塊的控制關(guān)系、模塊間的信息傳遞、兩個附加符號
結(jié)構(gòu)圖的形態(tài)特征:深度指結(jié)構(gòu)圖控制的層次;寬度指一層中最大的模塊個數(shù);扇出指一個模塊直接下屬模塊的個數(shù);扇入指一個模塊直接上屬模塊的個數(shù)。
如果若干模塊之間耦合強(qiáng)度過高,每個模塊內(nèi)功能不復(fù)雜,可將它們合并,以減少信息的傳遞和公共區(qū)的引用。若有多個相關(guān)模塊,應(yīng)對它們的功能進(jìn)行分析,消去重復(fù)功能。
一個模塊的作用范圍應(yīng)在其控制范圍這內(nèi),且判定所在的模塊應(yīng)與受其影響的模塊在層次上盡量靠近。
一個模塊的作用范圍指受該模塊內(nèi)一個判定影響的所有模塊的集合。一個模塊的控制范圍指模塊本身以及其所有下屬模塊(直接或間接從屬于它的模塊)的集合。
要把數(shù)據(jù)流圖(DFD)轉(zhuǎn)換成軟件結(jié)構(gòu),首先必須研究DFD的類型,一般可分為變換型和事務(wù)型兩類。
變換型DFD是由輸入、變換(或稱處理)和輸出三部分組成。
變換型數(shù)據(jù)處理的工作過程一般分為三步:取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),這三步體現(xiàn)了變換型DFD的基本思想。變換是系統(tǒng)的主加工,變換輸入端的數(shù)據(jù)流為系統(tǒng)的邏輯輸入,輸出端為邏輯輸出。而直接從外部設(shè)備輸入數(shù)
據(jù)稱為物理輸入,反之稱為物理輸出。
若某個加工將它的輸入流分離成許多發(fā)散的數(shù)據(jù)流,形成許多加工路徑,并根據(jù)輸入的值選擇其中一個路徑來執(zhí)行,這種特征的DFD稱為事務(wù)型的數(shù)據(jù)流圖,這個加工稱為事務(wù)處理中心。
基于iDEF0圖的設(shè)計也是結(jié)構(gòu)化設(shè)計技術(shù)之一,它以系統(tǒng)的功能模型和信息結(jié)構(gòu)為基礎(chǔ)設(shè)計系統(tǒng)的軟件結(jié)構(gòu)。
HIPO圖是表示軟件系統(tǒng)結(jié)構(gòu)的工具。它既可以描述軟件總的模塊層次結(jié)構(gòu)-H圖(層次圖),又可以描述每個模塊輸入/輸出數(shù)據(jù)、處理功能及模塊調(diào)用的詳細(xì)情況-IPO圖。
kingwang
2004-7-20
17:13:56 第5章
詳細(xì)設(shè)計是軟件設(shè)計的第二階段,主要確定每個模塊具體執(zhí)行過程,故也稱“過程設(shè)計”
詳細(xì)設(shè)計的基本任務(wù):為每個模塊進(jìn)行詳細(xì)的算法設(shè)計;為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計;對數(shù)據(jù)庫進(jìn)行物理設(shè)計,即確定數(shù)據(jù)庫的物理結(jié)構(gòu);其他設(shè)計(代碼設(shè)計、輸入輸出格式設(shè)計、人機(jī)對話設(shè)計、編寫詳細(xì)設(shè)計說明書、評審
)
處理過程設(shè)計中采用的典型方法是結(jié)構(gòu)化程序設(shè)計(SP)方法。詳細(xì)設(shè)計的目標(biāo)不僅是邏輯上正確地實現(xiàn)每個模塊的功能,還應(yīng)使設(shè)計出的處理過程清晰易讀。結(jié)構(gòu)化程序設(shè)計是實現(xiàn)該目標(biāo)的關(guān)鍵技術(shù)之一,它指導(dǎo)人們用良好
的思想方法開發(fā)易于理解、易于驗證的程序。
結(jié)構(gòu)化程序設(shè)計方法的基本要點是:
1采用自頂向下、逐步求精的程序設(shè)計方法
2使用三種基本控制結(jié)構(gòu)構(gòu)造程序
任何程序都可由順序、選擇、重復(fù)三種基本控制結(jié)構(gòu)構(gòu)造。這三種基本結(jié)構(gòu)的共同點是單入口、單出口。
3主程序員組的組織形式。
詳細(xì)描述處理過程常用三種工具:圖形、表格和語言。
程序流程圖又稱為程序框圖,都應(yīng)由三種基本控制結(jié)構(gòu)順序組合和完整嵌套而成,不能有相互交叉的情況,這樣的流程圖是結(jié)構(gòu)化的流程圖。
PAD圖指問題分析圖,它是一種自左往右展開的二維樹型結(jié)構(gòu)??刂屏鞒虨樽陨隙?、從左到右的執(zhí)行。由機(jī)器自動通過走樹的辦法生成相應(yīng)的源代碼,大大提高了軟件的生產(chǎn)率。
過程設(shè)計語言(PDL),也稱程序描述語言,又稱偽碼。它是一種用于描述模塊算法設(shè)計和處理細(xì)節(jié)的語言。偽碼的結(jié)構(gòu)一般分為內(nèi)外兩層,外層語法應(yīng)符合一般程序設(shè)計語言常用的語法規(guī)則,而內(nèi)層語法則用一些簡單的句子
、短語和通用的數(shù)學(xué)符號,來描述程序應(yīng)執(zhí)行的功能,具有嚴(yán)格的關(guān)鍵字外層語法,用于定義控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和模塊接口,而它表示實際操作和條件的內(nèi)層語語法又是靈活自由的,使用自然語言的詞匯。
JACKSON方法是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,70年代中期出了“面向數(shù)據(jù)結(jié)構(gòu)”的設(shè)計方法,其中有代表性的是由英國M.JACKSON提出的JACKSON方法和由法國人J.WARNIER提出的WARNIER
方法。
JACKSON在JSP的基礎(chǔ)上擴(kuò)展成了一種系統(tǒng)的開發(fā)方法,簡稱JSD。JSD主要以活動事件為中心,通過由一串活動順序組合構(gòu)成的進(jìn)程,建立系統(tǒng)模型,最后實現(xiàn)該模型。JSP方法定義了一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的
映射過程,它根據(jù)輸入、輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過程描述,即程序結(jié)構(gòu),而不是軟件的體系結(jié)構(gòu),因此該方法適用于詳細(xì)設(shè)計階段。
JACKSON方法提供了自己的描述工具――-JACKSON結(jié)構(gòu)圖。無論數(shù)據(jù)結(jié)構(gòu)還是程序結(jié)構(gòu),都限于三種基本結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、重復(fù)結(jié)構(gòu))及它們的組合。
JACKSON結(jié)構(gòu)圖的特點:
1能對結(jié)構(gòu)進(jìn)行自頂向下分解,因此可以表示層次結(jié)構(gòu)。
2結(jié)構(gòu)易讀,形象直觀。
3既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu),且表示的是組成關(guān)系。
JSP方法一般通過以下五個步驟來完成設(shè)計:
1分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用JACKson結(jié)構(gòu)圖表示這些數(shù)據(jù)結(jié)構(gòu)。
2找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。“對應(yīng)關(guān)系”指這些數(shù)據(jù)單元在數(shù)據(jù)內(nèi)容上、數(shù)量上和順序上有直接的因果關(guān)系,對于重復(fù)的數(shù)據(jù)單元,重復(fù)的次序和次數(shù)都相同才有對應(yīng)關(guān)系。
3按一定的規(guī)則由輸入、輸出的數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)
4列出基本操作與條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。
5用偽碼寫出程序。
kingwang
2004-7-20
17:14:36 第6章
將詳細(xì)設(shè)計得到的處理過程的描述轉(zhuǎn)換為基于某種計算機(jī)語言的程序,即源程序代碼。
程序設(shè)計語言特性:
1心理特性指影響程序員心理的語言性能,許多這類特性是作為程序設(shè)計的結(jié)果而出現(xiàn)的。
歧義性:有些語法規(guī)則容易使人用不同的方式來解釋語言,這就產(chǎn)生了心理上的二義性。
簡潔性,人們必須記住的語言成分的數(shù)量越多,簡潔性越差。
局部性和順序性:局部性是指語言的聯(lián)想性,在編碼過程中,由語句組合成模塊,由模塊組裝成系統(tǒng)結(jié)構(gòu),并在組裝過程實現(xiàn)模塊的高內(nèi)聚,低耦合,使局部性得到加強(qiáng)。
傳統(tǒng)性:傳統(tǒng)性容易影響人們學(xué)習(xí)新語種的積極性。
2工程特性
可移值性:指程序從一個計算機(jī)環(huán)境移植到另一個計算機(jī)環(huán)境的容易程度。
開發(fā)工具的可利用性
軟件的可重用性
可維護(hù)性。
3技術(shù)特性
為開發(fā)一個特定項目選擇程序設(shè)計語言時,必須從技術(shù)特性、工程特性和心理特性幾方面考慮。通常,考慮選用語言的因素有:
1項目的應(yīng)用領(lǐng)域:科學(xué)工程計算(需要大量的標(biāo)準(zhǔn)庫函數(shù),以便處理復(fù)雜的數(shù)值計算,可供選用的語言有:FORTRAN Pascal C PL/1);數(shù)據(jù)處理與數(shù)據(jù)庫應(yīng)用(CoBol SQL 4GL);實時處
理(匯編語言 Ada);系統(tǒng)軟件(匯編語言 C語言 Pascal語言和Ada語言);人工智能(Lisp是一種函數(shù)型語言 Prolog是一種邏輯型語言)
2軟件開發(fā)的方法:有時編程語言的選擇依賴于開發(fā)的方法,如果要用快速原形模型來開發(fā),要求能快速實現(xiàn)原形,宜采用4GL。如果是面向?qū)ο蠓椒?,宜采用面向?qū)ο蟮恼Z言編程(C++ JAVA)
3軟件執(zhí)行的環(huán)境
4算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性
5軟件開發(fā)人員的知識。
程序設(shè)計風(fēng)格指一個編制程序時所表現(xiàn)出來的特點、習(xí)慣、邏輯思想等。
語句構(gòu)造的原則是:簡單直接,不能為了追求效率而使代碼復(fù)雜化。
效率指處理機(jī)時間和存儲空間的使用:效率是一個性能要求,目標(biāo)在需求分析給出;追求效率建立在不損害程序可讀性或可靠性基礎(chǔ)之上;提高程序效率的根本途徑在于選擇良好的設(shè)計方法、良好的數(shù)據(jù)結(jié)構(gòu)與算法,而不是靠編
程時對程序語句做調(diào)整。 第7章
軟件測試的目的:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;一個好的測試用例能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤;一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。測試階段的基本任務(wù)應(yīng)該是根據(jù)軟件開發(fā)各階段的文檔資料
和程序的內(nèi)部結(jié)構(gòu),精心設(shè)計一組“高產(chǎn)”的測試用例,利用這些實例執(zhí)行程序,找出軟件中潛在的各種錯誤和缺陷。
軟件測試中,應(yīng)注意以下指導(dǎo)原則:測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的輸出數(shù)據(jù)兩部分組成;測試用例不僅選用合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù)。這樣能更多的發(fā)現(xiàn)錯誤,提高程序的可靠性。對不合理的輸入數(shù)據(jù),程
序應(yīng)拒絕接受,并給出相應(yīng)提示。
軟件測試方法一般分為兩大類:動態(tài)測試方法與靜態(tài)測試方法。靜態(tài)測試指被測試程序不在機(jī)器上運行,而是采用人工檢測和計算機(jī)輔助靜態(tài)分析的手段對程序進(jìn)行檢測。
動態(tài)測試指通過運行程序發(fā)現(xiàn)錯誤,分為黑盒測試法和白盒測試法。
黑盒法:把被測試對象看成一個黑盒子,測試人員完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,只在軟件的接口處進(jìn)行測試,依據(jù)需求規(guī)格說明書,檢查程序是否滿足功能要求。因此,黑盒測試又稱為功能測試或數(shù)據(jù)驅(qū)動測試。
白盒法:把測試對象看作一個打開的盒子,測試人員須了解程序的內(nèi)部結(jié)構(gòu)和處理過程,以檢查處理過程的細(xì)節(jié)為基礎(chǔ),對程序中盡可能多的邏輯路徑進(jìn)行測試,檢驗內(nèi)部控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)是否有錯,實際的運行狀態(tài)與預(yù)期的
狀態(tài)是否一致。
由于白盒測試是結(jié)構(gòu)測試,所以被測對象基本上是源程序,以程序的內(nèi)部邏輯為基礎(chǔ)設(shè)計測試用例。
1邏輯覆蓋
語句覆蓋是指設(shè)計足夠的測試用例,使被測程序中的每個語句至少執(zhí)行一次,語句覆蓋是比較弱的覆蓋標(biāo)準(zhǔn)。
判定覆蓋指設(shè)計足夠的測試用例,使得被測程序中每個判定表達(dá)式至少獲得一次“真”值和“假”值,從而使程序的每一個分支至少都通過一次,因此判定覆蓋也稱分支覆蓋。
條件覆蓋指設(shè)計足夠的測試用例,使得判定表達(dá)式中每個條件的各種可能的值至少出現(xiàn)一次。
判定/條件覆蓋指設(shè)計足夠的測試用例,使得判定表達(dá)式中的每個條件的所有可能取值至少出現(xiàn)一次,并使每個判定表達(dá)式所有可能的結(jié)果也至少出現(xiàn)次。
條件組合覆蓋是比較強(qiáng)的覆蓋標(biāo)準(zhǔn),它是指設(shè)計足夠的測試用例,使得每個判定表達(dá)式中條件的各種可能的值的組合至少出現(xiàn)一次,滿足條件組合覆蓋的測試一定滿足“判定覆蓋”、“條件覆蓋”和“判定/條件覆蓋”。
路徑覆蓋是指設(shè)計足夠的測試用例,覆蓋被測程序中所有可能的路徑。語句覆蓋發(fā)現(xiàn)錯誤能力最弱。判定覆蓋包含了語句覆蓋,但它可能會使一些條件得不到測試。P87
2循環(huán)覆蓋
3基本路徑測試是在程序控制流程圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本路徑集合,從而設(shè)計測試用例,保證這些路徑至少通過一次。
獨立路徑是指包括一組以前沒有處理的語句或條件的一條路徑。從程序圖來看,一條獨立路徑是至少包含有一條在其他獨立路徑中未有過的邊的路徑。P89
黑盒測試是功能測試,因此設(shè)計測試用例時,需要研究需求規(guī)格說明和概要設(shè)計說明中有關(guān)程序功能或輸入、輸出之間的關(guān)系等信息,從而與測試后的結(jié)果進(jìn)行分析比較。
1等價類劃分:它將輸入數(shù)據(jù)域按有效的或無效的(也稱合理的或不合理的)劃分為若干個等價類,測試每個等價類的代表值就等于對該類其他值的測試。
用等價類劃分的方法設(shè)計測試用例的步驟為:
劃分等價類
確定測試用例的步驟:為每一個等價類編號;設(shè)計一個測試用例,使其盡可能多地覆蓋尚未被覆蓋過的合理等價類。重覆這步,直到所有合理等價類被測試用例覆蓋;設(shè)計一個測試用例,使其只覆蓋一個不合理等價類。重覆這一
步,直到所有不合理等價類被覆蓋。
2邊界值分析
使用邊界值分析方法設(shè)計測試用例時一般與等價類劃分結(jié)合起來。但它不是從一個等價類中任選一個例子作為代表,而將測試邊界情況作為重點目標(biāo),選取正好等于、剛剛大于或剛剛小于邊界值的測試數(shù)據(jù)。
3錯誤推測:在測試程序時,人們可能根據(jù)經(jīng)驗或直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的測試用例,這就是錯誤推測法。
4因果圖:因果圖能有效地檢測輸入條件的各種組合可能會引起的錯誤。因果圖的基本原理是通過畫因果圖,把用自然語言描述的功能說明轉(zhuǎn)換為判定表,最后為判定表的每一列設(shè)計一個測試用例。
kingwang
2004-7-20
17:15:2 5綜合策略
軟件測試時需要三類信息:
1軟件配置:指需求規(guī)格說明書、設(shè)計說明書、源程序等。
2測試配置:指測試方案、測試用例、測試驅(qū)動程序等
3測試工具:指計算機(jī)輔助測試的有關(guān)工具。
軟件產(chǎn)品在交付使用之前要經(jīng)過哪些測試呢?一般要經(jīng)過以下四步測試:單元測試、集成測試、確認(rèn)測試和系統(tǒng)測試。
軟件測試的步驟及與各開發(fā)階段的關(guān)系
單元測試指對源程序中每一個程序單元進(jìn)行測試,檢查各個模塊是否正確實現(xiàn)規(guī)定的功能,從而發(fā)現(xiàn)模塊在編碼中或算法中的錯誤。該階段涉及編碼和詳細(xì)設(shè)計的文檔。各模塊經(jīng)過單元測試后,將各模塊組裝起來進(jìn)行集成測試,
以檢查與設(shè)計相關(guān)的軟件體系結(jié)構(gòu)的有關(guān)問題。確認(rèn)測試主要檢查已實現(xiàn)的軟件是否滿足需求規(guī)格說明書中確定了的各種需求。系統(tǒng)測試指把已確認(rèn)的軟件與其他系統(tǒng)元素結(jié)合在一起進(jìn)行測試。
單元測試主要針對模塊的以下五個基本特征進(jìn)行測試:模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、重要的執(zhí)行路徑、錯誤處理、邊界條件。
在單元測試時,需要為被測模塊設(shè)計驅(qū)動模塊和樁模塊。
驅(qū)動模塊的作用是用來模擬被測模塊的上級調(diào)用模塊,它只完成接受測試數(shù)據(jù),以上級模塊調(diào)用被測模塊的格式驅(qū)動被測模塊,接收被測模塊的測試結(jié)果并輸出。
樁模塊用來代替被測試模塊所調(diào)用的模塊。它的作用是返回被測試模塊所需的信息。
集成測試是指在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計要求組裝成一個完整的系統(tǒng)進(jìn)行的測試,故也稱組裝測試或聯(lián)合測試。
集成測試的方法主要有兩種:非漸增式測試和漸增式測試。
非漸增式方法把單元測試和集成測試分成兩個不同的階段。P97
漸增式測試有以下兩種不同的組裝模塊的方法:自頂向下結(jié)合(深度優(yōu)先策略、寬度優(yōu)先策略);自底向上結(jié)合
確認(rèn)測試又稱有效性測試。它的任務(wù)是檢查軟件的功能與性能是否與需求規(guī)格說明書中確定的指標(biāo)相符合,確認(rèn)測試階段有兩項工作:進(jìn)行確認(rèn)測試與軟件配置審查。
確認(rèn)測試一般是在模擬環(huán)境下運用黑盒測試方法,由專門測試人員和用戶參加的測試。
軟件配置審查的任務(wù)是檢查軟件的所有文檔資料的完整性、正確性。如發(fā)現(xiàn)遺漏和錯誤,應(yīng)補充和改正。
軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤,而調(diào)試則是在進(jìn)行了成功的測試之后才開始的工作,因此調(diào)試也稱為糾錯。
歸納法調(diào)試從測試結(jié)果發(fā)現(xiàn)的線索入手,分析它們之間的聯(lián)系,導(dǎo)出錯誤原因的假設(shè),然后再證明或否定這個假設(shè)。
步驟:收集有關(guān)數(shù)據(jù);組織數(shù)據(jù);提出假設(shè);證明假設(shè)
演繹法調(diào)試是列出所有可能的錯誤原因的假設(shè),然后利用測試數(shù)據(jù)排除不適當(dāng)?shù)募僭O(shè),最后再測試數(shù)據(jù)驗證余下的假設(shè)確實是出錯的原因。
步驟:列出所有可能的錯誤原因的假設(shè);排除不適當(dāng)?shù)募僭O(shè);精化余于的假設(shè);證明余于的假設(shè)。
回溯法調(diào)試:該方法從程序產(chǎn)生錯誤的地方出發(fā),人工沿程序的邏輯路徑反向搜索,直到找到錯誤原因為止。
第8章
軟件維護(hù)的內(nèi)容有四種:校正性維護(hù),適應(yīng)性維護(hù),完善性維護(hù)和預(yù)防性維護(hù)。
校正性維護(hù):為了識別和糾正錯誤,修改軟件性能上的缺陷,應(yīng)進(jìn)行確定和修改錯誤的過程,這個過程就稱為校正性維護(hù)。
適應(yīng)性維護(hù):為了使應(yīng)用軟件適應(yīng)硬件和軟件環(huán)境的變化而修改軟件的過程稱為適應(yīng)性維護(hù)。
完善性維護(hù):增加軟件功能、增強(qiáng)軟件性能、提高軟件運行效率而進(jìn)行的維護(hù)活動稱為完善性維護(hù)。
預(yù)防性維護(hù):為了提高軟件的可維護(hù)性和可靠性而對軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。
軟件的開發(fā)過程對軟件的維護(hù)有較大的影響。若不采用軟件工程的方法開發(fā)軟件,則軟件只有程序而無文檔,維護(hù)工作非常困難,這是一種非結(jié)構(gòu)化的維護(hù)。若采用軟件工程的方法開發(fā)軟件,則各階段都有相應(yīng)的文檔,容易進(jìn)行
維護(hù)工作,這是一種結(jié)構(gòu)化的維護(hù)。
用于軟件維護(hù)工作的活動可分為生產(chǎn)性活動和非生產(chǎn)性活動兩種。生產(chǎn)性活動包括分析評價、修改設(shè)計和編寫程序代碼等。非生產(chǎn)性活動包括理解程序代碼功能、解釋數(shù)據(jù)結(jié)構(gòu)接口特點和設(shè)計約束。P106
維護(hù)的流程:制定維護(hù)申請報告;審查申請報告并批準(zhǔn);進(jìn)行維護(hù)并做詳細(xì)記錄;覆審。
維護(hù)申請報告是一種由用戶生產(chǎn)的文檔,它用作計劃維護(hù)任務(wù)的基礎(chǔ)。
不管維護(hù)類型如何,大體上要開展相同的技術(shù)工作。這些工作包括修改軟件設(shè)計、必要的代碼修改、單元測試、集成測試、確認(rèn)測試以及復(fù)審。
有兩類維護(hù)技術(shù),它們是面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。面向維護(hù)的技術(shù)是在軟件開發(fā)階段用來減少錯誤、提高軟件可維護(hù)性的技術(shù)。維護(hù)支援技術(shù)是在軟件維護(hù)階段用來提高維護(hù)作業(yè)的效率和質(zhì)量的技術(shù)。這些技術(shù)方法都能
減少軟件錯誤,提高軟件的可維護(hù)性。
因修改軟件而造成的錯誤或其他不希望出現(xiàn)的情況稱為維護(hù)的副作用。(編碼副作用、數(shù)據(jù)副作用、文檔副作用)在軟件交付這前對整個軟件配置進(jìn)行評審,以減少文檔副作用。
軟件可維護(hù)性的定義:軟件能夠被理解、校正、適應(yīng)及增強(qiáng)功能的容易程度。
軟件的可維護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量的幾個主要特性。軟件的可維護(hù)性可用下面七個質(zhì)量特性可來衡量,即可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。對不同類型的維護(hù),這七種特性
的側(cè)重點也不相同。
提高可維護(hù)性的方法:建立明確的軟件質(zhì)量目標(biāo);利用先進(jìn)的軟件開發(fā)技術(shù)和工具;建立明確的質(zhì)量保證工作;選擇可維護(hù)的程序設(shè)計語言;改進(jìn)程序文檔。
為了保證可維護(hù)性,以下四類檢查是非常有用的:在檢查點進(jìn)行檢查;驗收檢查;周期性的維護(hù)檢查;對軟件包的檢查。
kingwang
2004-7-20
17:15:25 第9章
傳統(tǒng)的瀑布模型本質(zhì)上是一種線性順序模型,各階段之間存在著嚴(yán)格的順序性和依賴性,特別強(qiáng)調(diào)預(yù)先定義需求的重要性。
瀑布模型屬于整體開發(fā)模型,它規(guī)定在開始下一個階段的工作之前,必須完成前一階段的所有細(xì)節(jié)。而增量模型屬于非整體開發(fā)模型,它推遲某些階段或所有階段中的細(xì)節(jié),從而較早的產(chǎn)生工作軟件。
增量模型是在項目的開發(fā)過程中以一系列的增量方式開發(fā)系統(tǒng)。增量方式包括增量開發(fā)和增量提交。增量開發(fā)是指在項目開發(fā)周期內(nèi),以一定的時間間隔開發(fā)部分工作軟件;增量提交是指在項目開發(fā)周期內(nèi),以一定的時間間隔增
量方式向用戶提交工作軟件及相應(yīng)文檔。
根據(jù)增量的方式和形式的不同,分為漸增模型和原型模型。
漸增模型是瀑布模型的變種,有兩類漸增模型:
1增量構(gòu)造模型:它在瀑布模型基礎(chǔ)上,對一些階段進(jìn)行整體開發(fā),對另一些階段進(jìn)行增量開發(fā)。前面的開發(fā)階段按瀑布模型進(jìn)行整體開發(fā),后面的開發(fā)階段按增量方式開發(fā)。
2演化提交模型:它在瀑布模型的基礎(chǔ)上,所有階段都進(jìn)行增量開發(fā),也就是說不僅是增量開發(fā),也是增量提交。
原形模型又稱快速原形模型,它是增量模型的另一種形式。根據(jù)原型的不同作用,有三類原型模型:
1探索型原型:這種類型的原型模型是把原型用于開發(fā)的需求分析階段,目的是要弄清用戶的需求,確定所期望的特性,并探索各種方案的可行性。它主要針對開發(fā)目標(biāo)模糊,用戶與開發(fā)都對項目都缺乏經(jīng)驗的情況,通過對原型
的開發(fā)來明確用戶的需求。
2實驗型原型:主要用于設(shè)計階段,考核實現(xiàn)方案是否合適,能否實現(xiàn)。
3演化型原型:主要用于及早向用戶提交一個原型系統(tǒng),該原型系統(tǒng)或者包含系統(tǒng)的框架,或者包含系統(tǒng)的主要功能,在得到用戶的認(rèn)可后,將原型系統(tǒng)不斷擴(kuò)充演變?yōu)樽罱K的軟件系統(tǒng)。它將原型的思想擴(kuò)展到軟件開發(fā)的全過程
。
軟件開發(fā)中的原型是軟件的一個早期可運行的版本,它反映了最終系統(tǒng)的重要特性。
快速原型是利用原型輔助軟件開發(fā)的一種新思想。經(jīng)過簡單快速分析,快速實現(xiàn)一個原型,用戶與開發(fā)者在試用原型過程中加強(qiáng)通信與反饋,通過反覆評價和改進(jìn)原型,減少誤解,彌補遺漏,適應(yīng)變化,最終提高軟件質(zhì)量。
由于運用原形的目的和方式不同,在使用原型時也采取不同的策略,有拋棄策略和附加策略。
1拋棄策略:用于開發(fā)過程某一階段(探索型和實驗型快速原型就是采用此策略)
2附加策略:由基本核心開始(演化型快速原型就采用此策略)
對于探索型,用原型過程來代替需求分析,把原型作為需求說明的補充形式,運用原型盡可能使需求說明完整、一致、準(zhǔn)確、無二義性,但在整體上仍采用瀑布模型。
對于實驗型,用原形過程來代替設(shè)計階段,即在設(shè)計階段引入原型,快速分析實現(xiàn)方案,快速構(gòu)造原形,通過運行,考察設(shè)計方案的可行性與合理性,原型成為設(shè)計的總體框架或設(shè)計結(jié)果的一部分。
對于演化型,用原型過程來代替全部開發(fā)階段,這是典型的演化提交模型的形式,它是有強(qiáng)有力的軟件工具和環(huán)境支持下,通過原型過程的反覆循環(huán),直接得到軟件系統(tǒng)。
原形開發(fā)步驟:快速分析、構(gòu)造原形、運行原型、評價原型、修改
構(gòu)造原型的技術(shù):可執(zhí)行的規(guī)格說明;基于腳本的設(shè)計;采用非常高級語言或?qū)iT語言;能重用軟件。
kingwang
2004-7-20
17:15:49 第10章
對象具有狀態(tài)。一個對象用數(shù)據(jù)值來描述它的狀態(tài)。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為。對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作封裝于對象的統(tǒng)一體中。
具有相同或相似性質(zhì)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。
類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。
在客觀世界中有若干類,這些類之間有一定的結(jié)構(gòu)關(guān)系。通常有兩種主要的結(jié)構(gòu)關(guān)系,即一般――具體結(jié)構(gòu)關(guān)系,整體――部分結(jié)構(gòu)關(guān)系。
一般――具體結(jié)構(gòu)稱為分類結(jié)構(gòu),也可以說是“或”關(guān)系,或者是“is a”關(guān)系。
整體――部分結(jié)構(gòu)稱為組裝結(jié)構(gòu),它們之間的關(guān)系是一種“與”關(guān)系,或者是“has a”關(guān)系。
在類的層次結(jié)構(gòu)中,通常上層類稱為父類或超類,下層類稱為子類。
對象之間進(jìn)行通信的構(gòu)造叫做消息。在對象的操作中,當(dāng)一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。接收消息的對象經(jīng)過解釋,然后給予響應(yīng)。這種通信機(jī)制稱為消息傳遞。
類中操作的實現(xiàn)過程叫做方法,一個方法有方法名、參數(shù)、方法體。當(dāng)一個對象接收一條消息后,它所包含的方法決定對象怎樣動作。
面向?qū)ο蟮奶卣鳎簩ο笪┮恍裕环诸愋?;繼承性;多態(tài)性(多形性)。
子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)方法,則稱為單重繼承。
子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承。
面向?qū)ο蟮囊兀?
1抽象:是指強(qiáng)調(diào)實體的本質(zhì)、內(nèi)在的屬性,忽略一些無關(guān)緊要的屬性。類實現(xiàn)了對象的數(shù)據(jù)(即狀態(tài))和行為的抽象,它是對象的共性的抽象。
2封裝性:是指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。每個軟件部件都有友好的界面接口,軟件部件的內(nèi)部實現(xiàn)與外部可訪問性分離。
3共享性(3個級別):面向?qū)ο蠹夹g(shù)在不同級別上促進(jìn)了共享。同一個類中的共享――同一個類中的對象有著相同數(shù)據(jù)結(jié)構(gòu),也有著相同的行為特征。在同一個應(yīng)用中共享――在同一應(yīng)用的類層次結(jié)構(gòu)中,存在繼承關(guān)系的各相
似子類中,存在數(shù)據(jù)結(jié)構(gòu)和行為的繼承,使各相似子類共享共同的結(jié)構(gòu)和行為。在不同應(yīng)用中的共享。
面向?qū)ο箝_發(fā)方法有coad方法、booch方法、omt方法和oose方法等。
Booch方法通過分析正文描述,將其中的名詞映射為對象,將其中的動詞映射為方法,從而為對象和方法的認(rèn)定提供了一種簡單的策略。雖然booch方法原是面向ada語言的,但仍處于面向?qū)ο箝_發(fā)的奠基性地位。
Coad方法完成了從需求角度出發(fā)的對象和分類結(jié)構(gòu)的認(rèn)定工作,面向?qū)ο笤O(shè)計可以在此基礎(chǔ)上,從設(shè)計的角度進(jìn)一步進(jìn)行類和類層次結(jié)構(gòu)的認(rèn)定。
Omt方法是一種新興的面向?qū)ο蟮拈_發(fā)方法,開發(fā)工作的基礎(chǔ)是對真實世界的對象建模,然后圍繞這些對象使用分析模型來進(jìn)行獨立于語言的設(shè)計。
Uml語言不公統(tǒng)一了booch方法、omt方法、oose方法的表示方法,而且對其作了進(jìn)一步的發(fā)展,最終統(tǒng)一為大眾所接受的標(biāo)準(zhǔn)建模語言。
對象模型表示了靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)數(shù)據(jù)性質(zhì),描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),它是從客觀世界實體的對象關(guān)系角度來描述。表現(xiàn)了對象的相互關(guān)系。該模型主要關(guān)心系統(tǒng)中對象的結(jié)構(gòu),屬性和操作,使用了對象圖的工具來刻劃,它
是分析階段三個模型的核心。
屬性指的是類中對象所具有的性質(zhì)(數(shù)據(jù)值)。不同對象的同一屬性可以具有相同或不同的屬性值。
操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作。方法是類的操作的實現(xiàn)步驟。
鏈表示對象間的物理與概念聯(lián)結(jié),關(guān)聯(lián)表示類之間的一種關(guān)系,就是一些可能的鏈的集合,鏈?zhǔn)顷P(guān)聯(lián)的實例,關(guān)聯(lián)是鏈的抽象。兩個類之間的關(guān)聯(lián)稱為二元關(guān)聯(lián),三個類之間的關(guān)聯(lián)稱為三元關(guān)聯(lián)。
1聚集關(guān)系。聚集是一種“整體――部分”關(guān)系。在這種關(guān)系中,有整體類和部分類之分。聚集最重要的性質(zhì)是傳遞性,也具有逆對性。
2一般化關(guān)系
一般化關(guān)系是在保留對象差異的同時共享對象相似性的一種高度抽象方法。它是“一般--具體”的關(guān)系,一般化類又稱父類,具體類又稱子類。
繼承有單重繼承和多重繼承。單重繼承指的是子類只有一個父親,在一個類層次結(jié)構(gòu)中,若只有單重繼承,則該類層次結(jié)構(gòu)是樹型層次結(jié)構(gòu)。多重繼承指的是子類繼承了多個父類的性質(zhì),在一個類層次結(jié)構(gòu)中,若有多重繼承,則
該類層次結(jié)構(gòu)是網(wǎng)狀層次結(jié)構(gòu)。
動態(tài)模型是與時間和變化有關(guān)的系統(tǒng)性質(zhì)。該模型描述了系統(tǒng)的控制結(jié)構(gòu),它表示了瞬時的、行為化的系統(tǒng)控制性質(zhì),它關(guān)心的是系統(tǒng)的控制,操作的執(zhí)行順序,它從對象的事件和狀態(tài)的角度出發(fā),表現(xiàn)了對象的相互行為。
該模型描述的系統(tǒng)懺屬性是觸發(fā)事件、事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。
現(xiàn)實世界中,各對象之間相互觸發(fā),一個觸發(fā)行為就是一個事件。對事件的響應(yīng)取決于接受該觸發(fā)的對象的狀態(tài),響應(yīng)包括狀態(tài)的改變或形成一個新的觸發(fā)。事件可以看成是信息從一個對象到另一個對象的單向傳遞。各事件將信
息從一個對象傳到另一個對象中去,因此要確定各事件的發(fā)送對象和接收對象。事件跟蹤圖用來表示事件、事件的接收對象和發(fā)送對象。
狀態(tài)是對象屬性值的抽象,狀態(tài)指明了對象對輸入事件的響應(yīng)。
狀態(tài)圖反映了狀態(tài)與事件的關(guān)系,狀態(tài)圖確定了由事件序列引起的狀態(tài)序列。
活動是一種有時間間隔的操作,它是依附于狀態(tài)的操作。
動作是一種瞬時操作,它是與事件聯(lián)系在一起的操作。
功能模型描述了系統(tǒng)的所有計算。功能模型指出發(fā)生了什么,動態(tài)模型確定什么時候發(fā)生,而對象模型確定發(fā)生的客體。功能模型由多張數(shù)據(jù)流圖組成。
數(shù)據(jù)流圖中包含有處理、數(shù)據(jù)流、動作對象和數(shù)據(jù)存儲對象。
功能模型用來說明值是如何計算的,表明值之間的依賴關(guān)系及其相關(guān)的功能,數(shù)據(jù)流圖有助于表示功能依賴關(guān)系,其中的處理對應(yīng)于狀態(tài)圖的活動和動作,其中的數(shù)據(jù)流對應(yīng)于對象圖中的對象或?qū)傩浴?
操作與對象模型中屬性和關(guān)聯(lián)的查詢有關(guān),與動態(tài)模型的事件有關(guān),與功能模型的處理有關(guān)。
瀑布模型把設(shè)計進(jìn)一步劃分成概要設(shè)計和詳細(xì)設(shè)計兩個階段,類似地,也可以把面向?qū)ο笤O(shè)計再細(xì)分為系統(tǒng)設(shè)計和對象設(shè)計。系統(tǒng)設(shè)計確定實現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)。對象設(shè)計確定解空間中的類、關(guān)聯(lián)、接口形式及
實現(xiàn)操作的算法。
面向?qū)ο笤O(shè)計的準(zhǔn)則:模型化;抽象;信息隱蔽;低耦合;高內(nèi)聚(操作內(nèi)聚、類內(nèi)聚、一般――具體內(nèi)聚)
在面向?qū)ο蠓椒ㄖ?,信息隱蔽通過對象的封裝性來實現(xiàn)。類結(jié)構(gòu)分離了與實現(xiàn),從而支持了信息隱蔽。
kingwang
2004-7-20
17:16:11 第11章
軟件質(zhì)量定義:
1與所確定的功能和性能需求的一致性。〕
2與所成文的開發(fā)標(biāo)準(zhǔn)的一致性。
3與所有專業(yè)開發(fā)的軟件所期望的隱含特性的一致性。
軟件質(zhì)量保證就是向用戶及社會提供滿意的高質(zhì)量的產(chǎn)品,確保軟件產(chǎn)品從誕生到消亡為止的所有階段的質(zhì)量的活動,即確定、達(dá)到和維護(hù)需要的軟件質(zhì)量而進(jìn)行的所有有計劃、有系統(tǒng)的管理活動。
軟件質(zhì)量保證應(yīng)從產(chǎn)品計劃和設(shè)計開始,直到投入使用和售后服務(wù)的軟件生存期的每一階段中的每一步驟。
為了提高軟件的質(zhì)量,軟件質(zhì)量保證的任務(wù)大致可歸結(jié)為以下幾點:
1正確定義用戶要求
2技術(shù)方法的應(yīng)用
3提高軟件開發(fā)的工程能力
4軟件的復(fù)用
5發(fā)揮每個開發(fā)者的能力
6組織外部力量協(xié)作
7排除無效勞動
8提高計劃和管理質(zhì)量。
軟件質(zhì)量必須在設(shè)計和實現(xiàn)過程中加以保證,為了確保每個開發(fā)過程的質(zhì)量,防止把軟件差錯傳遞到下一個過程,必須進(jìn)行質(zhì)量檢驗。因此須在軟件開發(fā)工程的各個階段實施檢驗,檢驗的實施有兩種形式:實際運行檢驗(即白盒
測試和黑盒測試)和鑒定。可在各開發(fā)階段中結(jié)合起來使用。
針對面向軟件產(chǎn)品的運行、修正、轉(zhuǎn)移,軟件質(zhì)量概念包括11個特性:(面向軟件產(chǎn)品操作)正確性、可靠性、效率、完整性、可性。(面向軟件產(chǎn)品修改)可維護(hù)性、可測試性、適應(yīng)性。(面向軟件產(chǎn)品適應(yīng))可移植性、可
重用性、可互操作性
ISO三層次中的第一層為質(zhì)量特性,第二層為質(zhì)量子特性、第三層為度量。
軟件復(fù)雜性主要表現(xiàn)在程序的復(fù)雜性。程序的復(fù)雜性主要指模塊內(nèi)程序的復(fù)雜性。它直接關(guān)聯(lián)到軟件開發(fā)費用的多少、開發(fā)周期長短和軟件內(nèi)部潛伏錯誤的多少。
軟件可靠性是指在給定的時間內(nèi),在規(guī)定的環(huán)境條件下系統(tǒng)完成所指定的功能的概率。
通常,把“質(zhì)量”理解為“用戶滿意程序”。
1設(shè)計的規(guī)格說明書要符合用戶的要求。
2程序要按照設(shè)計規(guī)格說明所規(guī)定的情況正確執(zhí)行。
我們把上述條件1稱為“設(shè)計質(zhì)量”,把條件2稱為“程序質(zhì)量”。
軟件的規(guī)格說明分為外部規(guī)格說明和內(nèi)部規(guī)格說明。外部規(guī)格說明是從用戶角度來看的規(guī)格,包括硬件/軟件系統(tǒng)設(shè)計(在分析階段進(jìn)行)、功能設(shè)計(在需求分析階段與概要設(shè)計階段進(jìn)行)。而內(nèi)部規(guī)格說明是為了實現(xiàn)外部規(guī)
格的更詳細(xì)的規(guī)格,即軟件模塊結(jié)構(gòu)與模塊處理過程的設(shè)計(在概要設(shè)計與詳細(xì)設(shè)計階段進(jìn)行)。因此,內(nèi)部規(guī)格說明是從開發(fā)者角度來看的規(guī)格說明。將上述兩概念聯(lián)系起來,因此,設(shè)計質(zhì)量是由外部規(guī)格說明決定的,程序質(zhì)
量是由內(nèi)部規(guī)格說明決定的。
設(shè)計質(zhì)量評審的對象是在需求分析階段產(chǎn)生的軟件需求規(guī)格說明、數(shù)據(jù)需求規(guī)格說明,在軟件概要設(shè)計階段產(chǎn)生的軟件概要設(shè)計說明書等。
程序質(zhì)量評審?fù)ǔK菑拈_發(fā)者的角度進(jìn)行評審,直接與開發(fā)技術(shù)有關(guān)。它是著眼于軟件本身的結(jié)構(gòu)、與運行環(huán)境的接口、變更帶來的影響而進(jìn)行的評審活動。
提高軟件質(zhì)量和可靠性的技術(shù)大致可分為兩類,一類是避開錯誤技術(shù),即在開發(fā)的過程中不讓差錯潛入軟件的技術(shù);另一類是容錯技術(shù),即對某些無法避開的差錯,使其影響減到最小的技術(shù)。避開錯誤技術(shù)是進(jìn)行質(zhì)量管理,實現(xiàn)
產(chǎn)品應(yīng)有質(zhì)量所必不可少的技術(shù)。
實現(xiàn)容錯技術(shù)的主要手段是冗余。冗余是指實現(xiàn)系統(tǒng)規(guī)定功能是多余的那部分資源,包括硬件、軟件、信息和時間。(結(jié)構(gòu)冗余、信息冗余、時間冗余、冗余附加技術(shù))
第12章
軟件工程管理的具體內(nèi)容包括對開發(fā)人員、組織機(jī)構(gòu)、用戶、文檔資料等方面的管理。
軟件開發(fā)人員一般分為:項目負(fù)責(zé)人、系統(tǒng)分析員、高級程序員、初級程序員、資料員和其他輔助人員。
軟件開發(fā)的組織機(jī)構(gòu)沒有統(tǒng)一的模式:主程序員組織機(jī)構(gòu);專家組織機(jī)構(gòu);民主組織機(jī)構(gòu)。
控制包括進(jìn)度控制、人員控制、經(jīng)費控制和質(zhì)量控制。
在軟件項目管理過程中一個關(guān)鍵的活動是制定項目計劃,它是軟件開發(fā)工作的第一步。軟件項目計劃是由系統(tǒng)分析員與用戶共同經(jīng)過“可行性研究與計劃”階段后制定的。所以軟件項目計劃是可行性研究階段的結(jié)果產(chǎn)品。但由于
可行性研究是在高層次進(jìn)行系統(tǒng)分析,未能考慮軟件系統(tǒng)開發(fā)的細(xì)節(jié)情況,因此軟件項目計劃一般在需求分析階段完成后才定稿的。軟件項目計劃包括兩個任務(wù):研究與估算。即通過研究確定該軟件項目的主要功能、性能和系統(tǒng)
界面。
軟件工程規(guī)范可選用現(xiàn)成的各種規(guī)范,也可自己制定。目前軟件工程規(guī)范可分為三級:國家標(biāo)準(zhǔn)與國際標(biāo)準(zhǔn);行業(yè)標(biāo)準(zhǔn)與工業(yè)部門標(biāo)準(zhǔn);企業(yè)級標(biāo)準(zhǔn)與開發(fā)小組級標(biāo)準(zhǔn)。
風(fēng)險分析實際上就是貫穿在軟件工程中的一系列風(fēng)險管理步驟,其中包括風(fēng)險識別、風(fēng)險估計、風(fēng)險管理策略、風(fēng)險解決和風(fēng)險監(jiān)督。
軟件配置管理,簡稱SCM,它用于整個軟件工程過程。其主要目標(biāo)是:標(biāo)識變更;控制變更;確保變更正確地實現(xiàn);報告有關(guān)變更。SCM是一組管理整個軟件生存期各階段中變更的活動。軟件配置項(SCI)是軟件工程中
產(chǎn)生的信息項。
軟件工程過程中某一階段的變更,均要引起軟件配置的變更,這種變更必須嚴(yán)格加以控制和管理,保持修改信息,并把精確、清晰的信息傳遞到軟件工程過程的下一步驟。
變更控制包括建立控制點和建立報告與審查制度。其中“檢出”和“登入”處理實現(xiàn)了兩個重要的變更控制要素,即存取控制和同步控制。存取控制管理各個用戶存取和修改一個特定軟件配置對象的權(quán)限。同步控制可用來確保由
不同用戶所執(zhí)行的并發(fā)變更。
軟件工程標(biāo)準(zhǔn)的類型也是多方面的。它可能包括過程標(biāo)準(zhǔn)(如方法、技術(shù)、度量等)、產(chǎn)品標(biāo)準(zhǔn)(如需求、設(shè)計、部件、描述、計劃報告等)、專業(yè)標(biāo)準(zhǔn)(如職別、道德、準(zhǔn)則、認(rèn)證、特許、課程等),以及記法標(biāo)準(zhǔn)(如術(shù)語、
表示法、語言等)。
根據(jù)軟件工程標(biāo)準(zhǔn)制定的機(jī)構(gòu)與適用的范圍,它分為國際標(biāo)準(zhǔn)、國家標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)、企業(yè)規(guī)范及項目(課題)規(guī)范五個等級。
kingwang
2004-7-20
17:16:31 第13章
軟件開發(fā)環(huán)境是指相關(guān)的一組軟件工具集合,它支持一定的軟件開發(fā)方法或按照一定的軟件開發(fā)模型組織而成。
軟件開發(fā)環(huán)境的目標(biāo)是提高軟件開發(fā)的生產(chǎn)率和軟件產(chǎn)品的質(zhì)量。因而理想的軟件開發(fā)環(huán)境應(yīng)是能支持整個軟件生存期階段的開發(fā)活動,并能支持各種處理模型的軟件方法學(xué),同時實現(xiàn)這些開發(fā)方法的自動化。
按解決的問題分類:程序設(shè)計環(huán)境;系統(tǒng)合成環(huán)境;項目管理環(huán)境。
按軟件開發(fā)環(huán)境的演變趨向分類:以語言為中心的環(huán)境;工具箱環(huán)境;基于方法的環(huán)境。
按集成化程度分類:第一代;第二代;第三代。
軟件工具是指為支持計算機(jī)軟件的開發(fā)、維護(hù)、模擬、移植或管理而研制的程序系統(tǒng)。開發(fā)軟件工具的主要目的是為了提高軟件生產(chǎn)率和改善軟件的質(zhì)量。
軟件工具通常由工具、工具接口和工具用戶接口三部分構(gòu)成。工具通過工具接口與其他工具、操作系統(tǒng)或網(wǎng)絡(luò)操作系統(tǒng),以及通信接口、環(huán)境信息庫接口等進(jìn)行交互作用。當(dāng)工具需要與用戶進(jìn)行交互作用時則通過工具的用戶接口
。
軟件工具的發(fā)展有以下特點:
1軟件工具由單個工具向多個工具集成化方向發(fā)展。
2重視用戶界面的設(shè)計
3不斷地采用新理論和新技術(shù)。
4軟件工具的商品化推動了軟件產(chǎn)業(yè)的發(fā)展,而軟件產(chǎn)業(yè)的發(fā)展,又增加了對軟件工具的需求,促進(jìn)了軟件工具的商品化進(jìn)程。
CASE是一組工具和方法的集合,可以輔助軟件開發(fā)生命周期各階段進(jìn)行軟件開發(fā)。CASE把軟件開發(fā)技術(shù)、軟件工具和軟件開發(fā)方法集成到一個統(tǒng)一而一致的框架中,并且吸收了CAD、軟件工程、操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)
絡(luò)和許多其他計算機(jī)領(lǐng)域的原理和技術(shù)。
CASE系統(tǒng)所涉及到的技術(shù)有兩類:一類是支持軟件開發(fā)過程本身的技術(shù),如支持規(guī)約、設(shè)計、實現(xiàn)、測試等;另一類是支持軟件開發(fā)過程管理的技術(shù),如支持建模、過程管理等。
CASE集成:
1平臺集成:工具運行在相同的硬件/操作系統(tǒng)平臺上。
2數(shù)據(jù)集成:工具使用共享數(shù)據(jù)模型來操作。
3表示集成:工具提供相同的用戶界面。
4控制集成:工具激活后能控制其他工具的操作。
5過程集成:工具在一個過程模型和“過程機(jī)“的指導(dǎo)下使用。
數(shù)據(jù)集成指不同軟件工程能相互交換數(shù)據(jù)。因而,一個工具的結(jié)果能作為另一個工具的輸入。有許多不同級別的數(shù)據(jù)集成:1共享文件;2共享數(shù)據(jù)結(jié)構(gòu);3共享倉庫。
表示集成或用戶界面集成意指一個系統(tǒng)中的工具使用共同的風(fēng)格,以及采用共同的用戶交互標(biāo)準(zhǔn)集。工具有一個相似的外觀。目前,表示集成有如下三種不同級別:1窗口系統(tǒng)集成;命令集成;交互集成。
控制集成支持工作臺或環(huán)境中一個工具對系統(tǒng)中其他工具的訪問。
過程集成意指CASE系統(tǒng)嵌入了關(guān)于過程活動、階段、約束和支持這些活動所需的工具的知識。
一個CASE工作臺是一組工具集,支持像設(shè)計、實現(xiàn)或測試等特定的軟件開發(fā)階段。工作臺工具能通過共享文件、共享倉庫或共享數(shù)據(jù)結(jié)構(gòu)來集成。
原作者: 中國系統(tǒng)分析員
來 源: 中國系統(tǒng)分析員