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