《軟件工程》學(xué)習(xí)輔導(dǎo)_第1頁
《軟件工程》學(xué)習(xí)輔導(dǎo)_第2頁
《軟件工程》學(xué)習(xí)輔導(dǎo)_第3頁
《軟件工程》學(xué)習(xí)輔導(dǎo)_第4頁
《軟件工程》學(xué)習(xí)輔導(dǎo)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

/《軟件工程》學(xué)習(xí)輔導(dǎo)緒論第一節(jié)軟件工程的產(chǎn)生

軟件:計(jì)算機(jī)程序及其說明程序的各種文檔。"程序"是計(jì)算任務(wù)的處理對象和處理規(guī)則的描述。

軟件的特點(diǎn):

1是一種邏輯產(chǎn)品,與物質(zhì)產(chǎn)品有很大的區(qū)別。

2軟件產(chǎn)品的生產(chǎn)主要是研制,生產(chǎn)本錢主要在開發(fā)和研制,開發(fā)研制完成后,通過復(fù)制就產(chǎn)生了大量軟件產(chǎn)品。

3軟件產(chǎn)品不會(huì)用壞,不存在磨損,消耗。

4生產(chǎn)主要是腦力勞動(dòng),還末完全擺脫手工開發(fā)方式,大局部產(chǎn)品是"定做"的。

5開發(fā)軟件的費(fèi)用不斷增加,致使生產(chǎn)本錢相當(dāng)昂貴按軟件的功能劃分-

系統(tǒng)軟件:能與計(jì)算機(jī)硬件緊密配合在一起,使計(jì)算機(jī)系統(tǒng)各個(gè)部件、相關(guān)的軟件和數(shù)據(jù)協(xié)調(diào)、高效率地工作的軟件。如操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、設(shè)備驅(qū)動(dòng)程序以及通信處理程序等。系統(tǒng)軟件是計(jì)算機(jī)系統(tǒng)中必不可少的一個(gè)組成局部。

應(yīng)用軟件:是在特定的領(lǐng)域內(nèi)開發(fā),為特定目的效勞的一類軟件。如,CAD-CAM計(jì)算機(jī)輔助制造-CAI計(jì)算機(jī)輔助教學(xué),專家系統(tǒng),模式識(shí)別,剎車系統(tǒng)

支撐軟件:是協(xié)助用戶開發(fā)軟件的工具性軟件,其中包括幫助程序人員開發(fā)軟件產(chǎn)品的工具,也包括幫助管理人員控制開發(fā)的進(jìn)程的工具。按規(guī)模劃分:

1、微型--只有一個(gè)人,甚至是半時(shí),在幾天之內(nèi)完成的軟件。寫出的程序不到500行語句。

2、小型--一個(gè)人半年之內(nèi)完成的2千行以內(nèi)的程序。例如,數(shù)值計(jì)算問題或是數(shù)據(jù)處理問題就是這種規(guī)模的課題。這種程序通常沒有與其他程序的接口。

如,有求伯君開發(fā)最初的WPS,單獨(dú)完成BASIC的比爾.蓋茨。

3、中型--5人以內(nèi)在一年多時(shí)間里完成的5千到5萬行的程序。這種課題開始出現(xiàn)了軟件人員之間,軟件人員與用戶之間的聯(lián)系、協(xié)調(diào)和配合關(guān)系的問題。

4、大型--5人至10人在兩年多的時(shí)間里完成5萬行到10萬行的程序。例如編譯程序、小型分時(shí)系統(tǒng)、應(yīng)用軟件包、實(shí)時(shí)控制系統(tǒng)等很可能都是這種軟件。

5、甚大型-100人至1000人參加

6、極大型--2000-5000人參加,如,微軟的windows2000工程就包含了近3000名工程師,他們被分成幾百個(gè)小的團(tuán)隊(duì)。按開發(fā)分軟件產(chǎn)品和軟件工程

軟件產(chǎn)品指的是不局限于特定領(lǐng)域的、可以被廣闊用戶直接使用的軟件系統(tǒng)。如微軟的Windows,Office等。這類系統(tǒng)的特點(diǎn)是技術(shù)含量高,開發(fā)時(shí)要考到各種不同的用戶需求;

軟件工程--也稱定制軟件,是受某個(gè)特定客戶(或少數(shù)客戶)的委托,由一個(gè)或多個(gè)軟件開發(fā)機(jī)構(gòu)在合同的約如我們常說的管理信息系統(tǒng)(MIS)和電子商務(wù)系統(tǒng)。這類軟件的特點(diǎn)是領(lǐng)域知識(shí)所占的比重較大,相對技術(shù)而言工程性更強(qiáng)。例如,軍用防空指揮系統(tǒng)、衛(wèi)星控制系統(tǒng)等均為這類軟件。

針對這兩種不同類型的軟件,應(yīng)該有不同的軟件開發(fā)方法去指導(dǎo)工程開發(fā)過程。

軟件工程的開發(fā),目前比較成熟的軟件開發(fā)方法有軟件成熟度模型(CMM)。這種軟件開發(fā)模型試圖將整個(gè)軟件開發(fā)過程標(biāo)準(zhǔn)化和量化,直到可以對軟件開發(fā)過程進(jìn)行定量的控制和優(yōu)化。

軟件產(chǎn)品的開發(fā),像微軟公司積累了許多成功的經(jīng)驗(yàn)。軟件生產(chǎn)的開展:

1程序設(shè)計(jì)時(shí)代:這個(gè)階段生產(chǎn)方式是個(gè)體勞動(dòng),生產(chǎn)工具是機(jī)器語言,匯編語言。(1946-1956年)

2程序系統(tǒng)時(shí)代:這個(gè)階段生產(chǎn)方式是小集團(tuán)合作生產(chǎn),生產(chǎn)工具是高級語言,開發(fā)方法仍依靠個(gè)人技巧,但開始提出結(jié)構(gòu)化方法。(1956-1968年)

3軟件工程時(shí)代:這個(gè)階段生產(chǎn)方式是工程化的生產(chǎn),使用數(shù)據(jù)庫,開發(fā)工具,開發(fā)環(huán)境,網(wǎng)絡(luò),分布式面向?qū)ο蠹夹g(shù)來開發(fā)軟件。(1968年至今)軟件危機(jī):軟件開發(fā)技術(shù)的進(jìn)步未能滿足開展的要求。在軟件開發(fā)中遇到的問題找不到解決的方法,問題積累起來,形態(tài)鋒利的矛盾,導(dǎo)致了軟件危機(jī)。

軟件危機(jī)的表現(xiàn):

1經(jīng)費(fèi)預(yù)算經(jīng)常突破,完成時(shí)間一再拖延。

2開發(fā)的軟件不能滿足用戶要求。

3開發(fā)的軟件可維護(hù)性差。

4開發(fā)的軟件可靠性差。

軟件危機(jī)產(chǎn)生原因:

1軟件規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜。

2軟件開發(fā)管理困難而復(fù)雜。

3軟件開發(fā)費(fèi)用不斷增加。

4軟件開發(fā)技術(shù)落后。

5生產(chǎn)方式落后,仍采用手工方式。

6開發(fā)工具落后,生產(chǎn)率提高緩慢。軟件工程:用科學(xué)的知識(shí)和技術(shù)原理來定義,開發(fā),維護(hù)軟件的一門學(xué)科。

用工程科學(xué)的觀點(diǎn)進(jìn)行費(fèi)用估算,制定進(jìn)度,制定方案和方案。

用管理科學(xué)的方法和原理進(jìn)行生產(chǎn)的管理。

用數(shù)學(xué)的方法建立軟件開發(fā)中的各種模型和算法。

那么為到達(dá)軟件優(yōu)質(zhì)高產(chǎn)這個(gè)目標(biāo),從技術(shù)到管理做了大量的努力,從而逐漸已形成了"軟件工程學(xué)"這一新學(xué)科。

它包含以下主要內(nèi)容:

1、軟件開發(fā)方法:軟件工程的方法提供了建造軟件在技術(shù)上需要"如何做"。方法涵蓋了一系列的任務(wù):需求分析、設(shè)計(jì)、編程、測試和維護(hù)。

是在60年代后期才逐步形成了一種軟件開發(fā)方法,在不同的軟件開發(fā)階段對應(yīng)有不同的方法,例如在軟件的設(shè)計(jì)階段有"結(jié)構(gòu)化分析與設(shè)計(jì)"方法,在軟件測試階段有"黑盒"與"白盒"測試技術(shù),等等。

象目前又有一種更新的技術(shù)"面向?qū)ο蟮某绦蛟O(shè)計(jì)方法"。在這一方法中,數(shù)據(jù)和數(shù)據(jù)的操作是被封閉在一個(gè)個(gè)稱為"對象(Object)"的統(tǒng)一體中,對象之間則是通過"消息"(message")進(jìn)行相互聯(lián)系的。

從而使由軟件所描述的系統(tǒng)與客觀世界的系統(tǒng)在結(jié)構(gòu)上十分相似,不僅提高了軟件的可修改性與可維護(hù)性,同時(shí)也提高了軟件的可重用性,那么這些都是工程多年來所追求的目標(biāo)。從結(jié)構(gòu)程序設(shè)計(jì)到面向?qū)ο蟪绦蛟O(shè)計(jì),是程序設(shè)計(jì)方法的又一次飛躍。

2、軟件工具:所謂工具,在這里泛指是開發(fā)一切幫助開發(fā)軟件的軟件。為了提高軟件設(shè)計(jì)的質(zhì)量和生產(chǎn)效率,現(xiàn)已經(jīng)開展了許多的幫助開發(fā)和維護(hù)軟件的軟件。例如,我們要用某種語言來開發(fā)一個(gè)應(yīng)用軟件,這就要涉及到"編輯程序、編譯程序、連接程序等,另外在軟件測試階段還要用到

"測試數(shù)據(jù)產(chǎn)生器、排錯(cuò)程序、跟蹤程序、靜態(tài)分析工具和覆蓋監(jiān)視工具等。也就是說在不同的時(shí)期要用到不同的軟件開發(fā)工具。目前,軟件工具開展迅速,許多用于軟件分析和設(shè)計(jì)的工具正在建立,其目標(biāo)就是要實(shí)現(xiàn)軟件生產(chǎn)自動(dòng)化。

3、軟件工程環(huán)境:軟件方法和工具是軟件開發(fā)的兩大支柱,她們之間密切相關(guān)。軟件方法提出了明確的工作步驟和標(biāo)準(zhǔn)的文檔格式,這是設(shè)計(jì)軟件工具的基礎(chǔ),而軟件工具的實(shí)現(xiàn)又將促進(jìn)軟件方法的推廣和開展。

"環(huán)境"一詞,對不同用戶有著不同的含義。對最終用戶(enduser)而言,環(huán)境就是他們運(yùn)行程序所使用的計(jì)算機(jī)系統(tǒng)。這類用戶對環(huán)境的要求,主要是運(yùn)行可靠,操作方便,容易學(xué)習(xí)和使用。而對于軟件開發(fā)人員來說,則就不同了,可以說環(huán)境就是他們進(jìn)行軟件開發(fā)活動(dòng)的舞臺(tái)。(例如,Algo-60,或者資料管理系統(tǒng)(DbaseIIDbaseIII),例如界面只能采用菜單來完成各種功能)

象現(xiàn)在生產(chǎn)數(shù)據(jù)庫管理的軟件的環(huán)境有:大型數(shù)據(jù)庫軟件Sybase,還有能幫助進(jìn)行程序設(shè)計(jì)的PB軟件)

4、軟件工程管理學(xué):大家知道,對于一個(gè)企業(yè)來說,如果只有先進(jìn)的設(shè)備和技術(shù),而沒有完善的管理,是不可能獲得應(yīng)有的經(jīng)濟(jì)效益的(例如海爾的海爾文化就是企業(yè)管理的象征),(例如微軟企業(yè)文化宗旨的一句話)

軟件生產(chǎn)也是一樣的,如果管理不善,是不可能高質(zhì)量、按時(shí)完成任務(wù)的。

"軟件工程管理就是對軟件工程生存期內(nèi)的各階段的活動(dòng)進(jìn)行管理。軟件工程管理的目的是為了能按預(yù)期的時(shí)間和費(fèi)用,成功地完成軟件的開發(fā)和維護(hù)任務(wù)。

軟件工程管理學(xué)的內(nèi)容包括軟件費(fèi)用管理、人員組織、工程方案管理、軟件配置管理等各項(xiàng)方面的內(nèi)容。

顯然,軟件工程管理也可借助計(jì)算機(jī)來實(shí)現(xiàn)。供經(jīng)理人員估算本錢、指定進(jìn)度、生成報(bào)告等管理工具都已經(jīng)在許多公司使用了。一個(gè)理想的軟件工程環(huán)境,應(yīng)該同時(shí)具備支持開發(fā)和支持管理兩個(gè)方面的工具。

以上簡介了軟件工程學(xué)的主要組成成分--軟件工程方法學(xué)、軟件工程環(huán)境以及軟件工程管理的根本內(nèi)容臺(tái)和作用。它們即包括計(jì)算機(jī)科學(xué)家的研究成果,也概括了廣闊軟件工作者的時(shí)間經(jīng)驗(yàn)。還必須指出,軟件開發(fā)技術(shù)可區(qū)分為形式化方法與非形式化方法兩大分支。前者以形式化的程序變化和嚴(yán)整為主要內(nèi)容,目的在于到達(dá)程序設(shè)計(jì)的自動(dòng)化,多用于計(jì)算機(jī)應(yīng)用人員。本課程主要討論的是工程化的軟件開發(fā)技術(shù)。

軟件工程目標(biāo):付出較低開發(fā)本錢;到達(dá)要求的功能;取得較好的性能;開發(fā)的軟件易于移植;只需較低的維護(hù)費(fèi)用;能按時(shí)完成開發(fā)任務(wù),及時(shí)交付使用;開發(fā)的軟件可靠性高。

軟件工程內(nèi)容:研究內(nèi)容包括開發(fā)技術(shù)和開發(fā)管理兩個(gè)方面。

開發(fā)技術(shù)主要研究:軟件開發(fā)方法,開發(fā)過程,開發(fā)工具和環(huán)境。

開發(fā)管理主要研究:軟件管理學(xué),軟件經(jīng)濟(jì)學(xué),軟件心理學(xué)。

軟件工程需要解決的問題:軟件的費(fèi)用,可靠性,可維護(hù)性,軟件生產(chǎn)率和軟件的重用。第二節(jié)軟件工程過程和軟件生存周期

軟件工程:規(guī)定了獲取,供給,開發(fā),操作和維護(hù)軟件時(shí),要實(shí)施的過程,活動(dòng)和任務(wù)。目的是為各種人員提供公共的框架,以便用相同的語言進(jìn)行交流。

包括:獲取過程,供給過程,開發(fā)過程,操作過程,維護(hù)過程,管理過程,支持過程。軟件生存周期:一個(gè)軟件從提出開發(fā)要求開始直到該軟件報(bào)廢為止的整個(gè)時(shí)期。

包括:可行性分析和工程開發(fā)方案,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測試,維護(hù)。第三節(jié)軟件生存周期模型,方法和工具生存周期模型:描述軟件開發(fā)過程中各種活動(dòng)如何執(zhí)行的模型。對軟件開發(fā)提供強(qiáng)有力的支持,為開發(fā)過程中的活動(dòng)提供統(tǒng)一的政策保證,為參與開發(fā)的人員提供幫助和指導(dǎo),是軟件生存周期模型化技術(shù)的基礎(chǔ),也是建立軟件開發(fā)環(huán)境的核心。

生存周期模型作用:確立了軟件開發(fā)中各階段的次序限制,活動(dòng)準(zhǔn)則,所要遵守的規(guī)定和限制,便于各種活動(dòng)的協(xié)調(diào),人員之間的有效通信,有利于活動(dòng)重用和活動(dòng)管理。

生存周期模型準(zhǔn)則:模型能表示各種活動(dòng)的實(shí)際工作方式,能隨情況變化而演化能表示各種活動(dòng)間同步和制約關(guān)系,能表示活動(dòng)的動(dòng)態(tài)特性。容易為開發(fā)人員理解,能適應(yīng)不同軟件工程,具有較強(qiáng)靈活性,能支持軟件開發(fā)環(huán)境的建立。目前有:

1瀑布模型:將軟件生存周期中各活動(dòng)規(guī)定為依線性順序連接的若干階段。包括可行性分析,工程開發(fā)方案,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼,測試和維護(hù)。它是一種理想的線性開發(fā)模式,缺乏靈活,特別是無法解決軟件需求不明確的問題。適合于需求不明確,設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件工程。

2增量模型:軟件在模型中是"逐漸"開發(fā)出來的,開發(fā)一局部,展示一局部,能及早發(fā)現(xiàn)問題?;蛘呦乳_發(fā)一"原型"軟件,完成主要功能,然后逐步完善,最終獲得滿意的軟件產(chǎn)品。

3螺旋模型:將瀑布模型與增量模型結(jié)合起來,參加風(fēng)險(xiǎn)分析,彌補(bǔ)了這兩種模型的缺乏。開發(fā)分四步:制定方案,風(fēng)險(xiǎn)分析,開發(fā)實(shí)施,用戶評估。

4噴泉模型:以用戶需求為動(dòng)力,以對象為驅(qū)運(yùn)動(dòng)模型,適合于面向?qū)ο箝_發(fā)方法,使開發(fā)過程具有迭代性和無間隙性。

迭代性:系統(tǒng)有些局部常常重復(fù)工作屢次,相關(guān)功能在每次迭代中隨之參加演化的系統(tǒng)。

無間隙:在分析,設(shè)計(jì),實(shí)現(xiàn)等開發(fā)活動(dòng)之間不存在明顯邊界。

5基于知識(shí)的模型:瀑布模型與專家模型的結(jié)合。開發(fā)各階段都有利用相應(yīng)專家系統(tǒng)來輔助設(shè)計(jì),使維護(hù)在系統(tǒng)需求一級進(jìn)行。

6變換模型:適合于形式化開發(fā)方法的模型。軟件開發(fā)方法:使用早已定義好的技術(shù)集及符號(hào)表示習(xí)慣來組織軟件生產(chǎn)的過程。

軟件開發(fā)開發(fā)的目標(biāo):通過使用成功的軟件開發(fā)方法,在規(guī)定的投資和時(shí)間內(nèi),開發(fā)出符合用戶需求的高質(zhì)量的軟件。

軟件開發(fā)方法是克服軟件危機(jī)的重要方面之一,對軟件工程及軟件包產(chǎn)業(yè)的開展起了不可估量的作用。已使用的成功方法有:

1、結(jié)構(gòu)化方法:一種面向數(shù)據(jù)流的開發(fā)方法,適合數(shù)據(jù)處理領(lǐng)域。指導(dǎo)指導(dǎo)思想是自頂向下,逐步求精。用數(shù)據(jù)流圖建立系統(tǒng)功能模型,完成需求分析工作。用軟件結(jié)構(gòu)圖建立系統(tǒng)物理模型,實(shí)現(xiàn)概要設(shè)計(jì)。最后將每個(gè)模塊的功能用相應(yīng)標(biāo)準(zhǔn)控制結(jié)構(gòu)表示出來,從而實(shí)現(xiàn)詳細(xì)設(shè)計(jì)。

2、JACKSON方法:一種面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法,適合小規(guī)模工程。首先描述問題的輸入,輸出數(shù)據(jù)結(jié)構(gòu),分析其對應(yīng)性,然后推出相應(yīng)程序結(jié)構(gòu),從而給出問題的軟件過程描述。當(dāng)輸入與輸出數(shù)據(jù)結(jié)構(gòu)無對應(yīng)關(guān)系時(shí),難于應(yīng)用此方法,JSD(一完整的系統(tǒng)開發(fā)方法)對JSP進(jìn)行了擴(kuò)充

3、維也納開發(fā)方法(VDM):一種形式化開發(fā)方法,軟件的需求用嚴(yán)格的形式語言描述,然后把模型逐步變換成目標(biāo)系統(tǒng)。

4、面向?qū)ο蟮拈_發(fā)方法:根本出發(fā)點(diǎn)是盡可能按人類認(rèn)識(shí)世界的方法和思維方式來分析和解決問題。以對象作為最根本的元素,客觀世界中具體的事物,事件,概念和規(guī)則都有可看成對象,它也是分析問題,解決問題的核心。開發(fā)方法包括面向?qū)ο蠓治?,面向?qū)ο笤O(shè)計(jì),面向?qū)ο髮?shí)現(xiàn)。主要有BOOCH方法,Coad方法和OMT方法。為統(tǒng)一這些方法的術(shù)語,概念和模型,(1997年)推出統(tǒng)一建模型語言UML。結(jié)構(gòu)化方法可用:瀑布模型,增量模型,螺旋模型進(jìn)行開發(fā)。

JACKSON方法可用:瀑布模型,增量模型進(jìn)行開發(fā)。

面向?qū)ο蟮拈_發(fā)方法可用:噴泉模型,瀑布模型,增量模型進(jìn)行開發(fā)。

形式化的維也納方法只能用變換模型進(jìn)行開發(fā)。軟件工具:為支持軟件人員開發(fā)和維護(hù)活動(dòng)而使用的軟件。使用軟件工具后,可提高軟件生產(chǎn)率。目前軟件工具發(fā)生了很大變化,目的是生成軟件周期各個(gè)環(huán)節(jié)的自動(dòng)化。主要用于軟件的分析和設(shè)計(jì),使用這些工具軟件開發(fā)人員就能在微機(jī)或工作站上以對話方式建立各種軟件系統(tǒng)。

工具箱:最初的軟件工具是以工具箱形式出現(xiàn)的。但界面不統(tǒng)一,工具內(nèi)部無聯(lián)系,工具切換由人工操作。它們對大型軟件的開發(fā)和維護(hù)的支持能力有限。

軟件開發(fā)環(huán)境:目的是使軟件工具支持整個(gè)生存周期。而且做到不僅支持各階段的技術(shù)工作,還要支持管理和操作工作,保持工程開發(fā)的高度可見性,可控制性和可追蹤性。

計(jì)算機(jī)輔助軟件工程:可簡單定義為軟件開發(fā)的自動(dòng)化,簡稱為CASE。實(shí)質(zhì)是為軟件開發(fā)提供一組優(yōu)化集成的,大量節(jié)省人力的軟件開發(fā)工具。是軟件工具和軟件開發(fā)方法的結(jié)合。目的是實(shí)現(xiàn)軟件生存周期各環(huán)節(jié)的自動(dòng)化,并使之成為一個(gè)整體。CASE工具與以往軟件工具不同表達(dá)在:

1支持專用的個(gè)人計(jì)算環(huán)境;

2使用圖形功能對軟件系統(tǒng)進(jìn)行說明并建立文檔;

3將生存周期各階段的工作連接在一起;

4收集和連接軟件系統(tǒng)從最初的軟件需求到軟件維護(hù)各個(gè)環(huán)節(jié)的所有信息;

5用人工智能實(shí)現(xiàn)軟件開發(fā)和維護(hù)工作的自動(dòng)化。第二章可行研究與工程開發(fā)方案

可行研究的任務(wù):首先需要進(jìn)行概要的分析研究,初步確定工程的規(guī)模,目標(biāo),約束和限制。分析員再進(jìn)行簡要的需求分析,抽象出工程的邏輯結(jié)構(gòu),建立邏輯模型。從邏輯模型出發(fā),經(jīng)過壓縮的設(shè)計(jì),探索出若干種可供選擇的解決方法,對每種解決方法都要研究它的可行性。

主要從三個(gè)方面考慮:

1.技術(shù)可行性一般要考慮的情況包括開發(fā)的風(fēng)險(xiǎn)即設(shè)計(jì)出的系統(tǒng)能否到達(dá)要求的功能和性能;資源的有效性;相關(guān)技術(shù)的開展是否支持;

2.經(jīng)濟(jì)可行性進(jìn)行開發(fā)本錢的估算以及了解取得效益的評估,確定要開發(fā)的工程是否值得投資。

3.社會(huì)可行性要開發(fā)的工程是否存在任何侵權(quán)問題,運(yùn)行方式在用戶組織內(nèi)是否可行,現(xiàn)有管理制度﹑人員素質(zhì)﹑操作方式是否可行。

可行性研究的具體步驟:

1.確定工程規(guī)模和目標(biāo);

2.研究正在運(yùn)行的系統(tǒng);收集﹑研究﹑分析現(xiàn)有系統(tǒng)的文檔資料,實(shí)地考察系統(tǒng)訪問有關(guān)人員,然后描繪現(xiàn)有系統(tǒng)的高層系統(tǒng)流程圖。

3.建立新系統(tǒng)的高層邏輯模型;使用數(shù)據(jù)流圖和數(shù)據(jù)字典描述數(shù)據(jù)在系統(tǒng)中的流動(dòng)和處理情況。

4.導(dǎo)出和評價(jià)各種方案;導(dǎo)出若干較高層次的物理解決方法,根據(jù)技術(shù)可行性﹑經(jīng)濟(jì)可行性﹑社會(huì)可行性進(jìn)行評估,得到可行的解決方法。

5.推薦可行方案;進(jìn)行本錢~效益分析,決定該工程是否值得開發(fā),若值得開發(fā)那么解決方案是什么,并且說明該方案可行的原因和理由。

6.編寫可行性研究報(bào)告;將上述可行性過程的結(jié)果寫成相應(yīng)文檔,即可行性研究報(bào)告。

系統(tǒng)流程圖:描述系統(tǒng)工程物理模型的工具,用圖形符號(hào)來表示系統(tǒng)中各個(gè)元素,表達(dá)各元素之間的信息流動(dòng)情況。

投資回收率:通常用貨幣的時(shí)間價(jià)值進(jìn)行估算。可用利率來表示貨幣的時(shí)間價(jià)值。

設(shè)年利率為I,現(xiàn)存入P元,n年后可得錢數(shù)為F,若不計(jì)復(fù)利則F=P*(1+n*I)

反之,若n年能收入F元,那么這些錢現(xiàn)在的價(jià)值是:P=F/(1+n*I)

通常把建立系統(tǒng)若干年后能取得的收益折算成現(xiàn)在的價(jià)值和開發(fā)系統(tǒng)所需的費(fèi)用進(jìn)行比較得出投資回收率。

投資回收期:就是使累計(jì)的經(jīng)濟(jì)效益等于最初的投資費(fèi)用所需的時(shí)間。

純收入:整個(gè)生存周期之內(nèi)的累計(jì)經(jīng)濟(jì)效益(折成現(xiàn)在值)與投資之差。(例題見書2.3本錢--效益分析)工程開發(fā)方案:包括

1.工程概述:說明工程的各項(xiàng)主要工作;說明軟件的功能﹑性能;為完成工程應(yīng)具有的條件;用戶及合同承包者承當(dāng)?shù)墓ぷ魍瓿傻钠谙藜捌渌麠l件限制;應(yīng)交付的程序名稱;所使用的語言及程儲(chǔ)形式;應(yīng)交付的文檔。

2.實(shí)施方案:說明任務(wù)的劃分,各任務(wù)責(zé)任人,工程開發(fā)進(jìn)度,工程的預(yù)算,各階段的費(fèi)用支出,各階段應(yīng)完成的任務(wù),用圖表說明每項(xiàng)任務(wù)的開始和完成時(shí)間。

3.人員組織及分工:所需人員類型﹑數(shù)量﹑組成結(jié)構(gòu)。

4.交付期限:最后完工日期。第三章軟件需求分析

需求分析:開發(fā)人員準(zhǔn)確地理解用戶的要求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應(yīng)的需求規(guī)格說明的過程。

它有以下幾難點(diǎn):

⑴問題的復(fù)雜性。由用用戶需求涉及的因素繁多引起,如運(yùn)行環(huán)境和系統(tǒng)功能

⑵交流障礙。需求分析涉及人員較多,這些人具備不同的背景知識(shí),處于不同角度,扮演不同角色,造成相互之間交流困難。

⑶不完備性和不一致性。用戶對問題的陳述往往是不完備的,各方面的需求可能還存在矛盾,需求分析要消除矛盾,形成完備及一致的定義。

⑷需求易變性。

近幾年來已提出多種分析和說明方法,但都必須適用以下原則:

⒈必須能夠表達(dá)和理解問題的數(shù)據(jù)域和功能域。數(shù)據(jù)域包括數(shù)據(jù)流(數(shù)據(jù)通過一個(gè)系統(tǒng)時(shí)的變化方式)數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu),功能域反映上述三方面的控制信息。

⒉可以把一個(gè)復(fù)雜問題按功能進(jìn)行分解并可逐層細(xì)化。

⒊建模??筛玫乩斫廛浖到y(tǒng)的信息,功能,行為。也是軟件設(shè)計(jì)的基礎(chǔ)。

需求分析的任務(wù):

⒈問題識(shí)別:雙方確定對問題的綜合需求,這些需求包括功能需求,性能需求,環(huán)境需求,用戶界面需求。

⒉分析與綜合,導(dǎo)出軟件的邏輯模型

⒊編寫文檔:包括編寫"需求規(guī)格說明書""初步用戶使用手冊""確認(rèn)測試方案""修改完善軟件開發(fā)方案"結(jié)構(gòu)化分析:簡稱SA,面向數(shù)據(jù)流進(jìn)行數(shù)據(jù)分析的方法。采用自頂向下逐層分解的分析策略。頂層抽象地描述整個(gè)系統(tǒng),底層具體地畫出系統(tǒng)工程的每個(gè)細(xì)節(jié)。中間層則是從抽象到具體的過渡。使用數(shù)據(jù)流圖,數(shù)據(jù)字典,作為描述工具,使用結(jié)構(gòu)化語言,判定表,判定樹描述加工邏輯。

結(jié)構(gòu)化(SA)分析步驟:

⑴了解當(dāng)前系統(tǒng)的工作流程,獲得當(dāng)前系統(tǒng)的物理模型。

⑵抽象出當(dāng)前系統(tǒng)的邏輯模型。

⑶建立目標(biāo)系統(tǒng)的邏輯模型。

⑷作進(jìn)一步補(bǔ)充和優(yōu)化。數(shù)據(jù)流圖(DFD)

以圖形的方式描述數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過程。只反映系統(tǒng)必須完成的邏輯功能,是一種功能模型。

畫數(shù)據(jù)流圖的步驟:

⑴首先畫系統(tǒng)的輸入輸出,即先畫頂層數(shù)據(jù)流圖。頂層圖只包含一個(gè)加工,用以表示被開發(fā)的系統(tǒng)。

⑵畫系統(tǒng)內(nèi)部,即畫下層數(shù)據(jù)流圖。將層號(hào)從0號(hào)開始編號(hào),采用自頂向下,由外向內(nèi)的原則。畫更下層數(shù)據(jù)流圖時(shí),則分解上層圖中的加工,一般沿著輸出入流的方向,凡數(shù)據(jù)流的組成或值發(fā)生變化的地方則設(shè)置一個(gè)加工,一直進(jìn)行到輸出數(shù)據(jù)流。如果加工的內(nèi)部還有數(shù)據(jù)流,則繼續(xù)分解,直到每個(gè)加工足夠簡單,不能再分解為止。不能分解的加工稱為根本加工。

⑶重點(diǎn)事項(xiàng):

⒈命名。不能使用缺乏具體含義的名字,加工名應(yīng)能反映出處理的功能。

⒉畫數(shù)據(jù)流而不是控制流。數(shù)據(jù)流名稱只能是名詞或名詞短語,整個(gè)圖中不反映加工的執(zhí)行順序。

⒊一般不畫物質(zhì)流。

⒋每個(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流,反映出此加工數(shù)據(jù)的來源與加工的結(jié)果。

⒌編號(hào)。某個(gè)加工分解成加一張數(shù)據(jù)流圖時(shí),上層圖為父圖,下層圖為子圖。子圖應(yīng)編號(hào),子圖上的所有加工也應(yīng)編號(hào),子圖的編號(hào)應(yīng)與父圖的編號(hào)相對應(yīng)。

⒍父圖與子圖的平衡。子圖的輸入輸出數(shù)據(jù)流同父圖相應(yīng)加工的輸入輸出數(shù)據(jù)流必須一致

⒎局部數(shù)據(jù)存儲(chǔ)。當(dāng)某數(shù)據(jù)流圖中的數(shù)據(jù)存儲(chǔ)不是父圖中向外部接口,而只是本圖中某些加工之間的數(shù)據(jù)接口,則稱這些數(shù)據(jù)存儲(chǔ)為局部數(shù)據(jù)存儲(chǔ)。

⒏提高數(shù)據(jù)流圖的易理解性。為使數(shù)據(jù)流圖便于在計(jì)算機(jī)上輸入和輸出,給出了描述數(shù)據(jù)流圖的另一套圖形符號(hào)表示數(shù)據(jù)流,只能水平或垂直畫

數(shù)據(jù)字典(DD)用來定義數(shù)據(jù)庫流圖中的各個(gè)成分的具體含義。有以下四類條目:數(shù)據(jù)流,數(shù)據(jù)項(xiàng),數(shù)據(jù)存儲(chǔ),根本加工。

⒈數(shù)據(jù)流條目,內(nèi)容及舉例如下:

數(shù)據(jù)流名稱:訂單

別名:無

簡述:顧客訂貨時(shí)填寫的工程

來源:顧客

去向:加工1"檢驗(yàn)訂單"

數(shù)據(jù)流量:1000份/每周(單位時(shí)間內(nèi)的傳輸次數(shù))

組成:編號(hào)+訂貨日期+顧客編號(hào)+地址+電話+銀行帳號(hào)+貨物名稱+規(guī)格+數(shù)量⒉數(shù)據(jù)存儲(chǔ)條目,內(nèi)空及舉例

數(shù)據(jù)存儲(chǔ)名稱:庫存記錄

別名:無

簡述:存放庫存所有可供貨物的信息

組成:貨物名稱+編號(hào)+生產(chǎn)廠家+單價(jià)+庫存量

組織方式:索引文件,以貨物編號(hào)為關(guān)鍵字

查詢要求:要求能立即查詢⒊數(shù)據(jù)條目,內(nèi)容及舉例

數(shù)據(jù)項(xiàng)名稱:貨物編號(hào)

別名:G-No,G-num,Goods-No

簡述:本公司所有貨物的編號(hào)

類型:字符串

長度:10

取值范圍及含義:

第一位:進(jìn)口/國產(chǎn)

第2-4位:類別

第5-7位:規(guī)格

第8-10位:品名編號(hào)⒋加工條目,內(nèi)容及舉例

加工名:查閱庫存

編號(hào):1﹒2

激發(fā)條件:接收到合格訂單時(shí)

優(yōu)先級:普通

輸入:合格合格訂單

輸出:可供貨訂單,缺貨訂單

加工邏輯:根據(jù)庫存記錄

IF訂單工程數(shù)量<該工程庫存量臨界值

THEN可供貨處理

ELSE此訂單缺貨,登錄,待進(jìn)貨后再處理

ENDIF數(shù)據(jù)字典的實(shí)現(xiàn):

⑴手工建立:數(shù)據(jù)字典的內(nèi)容用卡片形式存放

⑵利用計(jì)算機(jī)輔助建立并維護(hù)加工邏輯的描述:一般用結(jié)構(gòu)化語言,判定表,判定樹結(jié)構(gòu)化語言是介于自然語言和形式語言之間的一種半形式化語言。它的結(jié)構(gòu)可分里層和內(nèi)層

⑴外層:用來描述控制結(jié)構(gòu),采用順序,選擇,重復(fù)三種根本結(jié)構(gòu)。

①順序結(jié)構(gòu):是一組祈使語句,選擇語句,重復(fù)語句的順序排列

②選擇結(jié)構(gòu):一般用IF-THEN-ELASE-ENDIF,CASE-OF-ENDCASE等關(guān)鍵詞。

③重復(fù)結(jié)構(gòu):一般用DO-WHILE-ENDDO,REPEAT-UNTIL等關(guān)鍵詞。

⑵內(nèi)層:一般采用祈使語句的自然語言短語,使用數(shù)據(jù)字典中的名詞和有限的自定義詞,其

動(dòng)詞含義要具體,盡量不使用形容詞和副詞來修飾。判定表由四個(gè)局部組成:條件定義條件取值的組合

動(dòng)作定義在各種取值的組合下應(yīng)執(zhí)行的動(dòng)作例:加工邏輯描述為,如果申請者的年齡在21歲以下,要額外收費(fèi);如果申請者是21歲以上并是26歲以下的女性,適用于A類保險(xiǎn);如果申請者是26歲以下的已婚男性,或者是26歲以上的男性,適用于B類保險(xiǎn);如果申請者是21歲以下的女性或是26歲以下的單身C類保險(xiǎn)。除此之外的其他申請者都適用于A類保險(xiǎn)。

條件取值表

判定表能把在什么條件下系統(tǒng)應(yīng)做什么動(dòng)作準(zhǔn)確無誤地表示出來,但不能描述循環(huán)的處理特性,循環(huán)處理還需結(jié)構(gòu)化語言。

判定樹,是判定表的變形,比判定表更直觀,更易于理解和使用。

下面的判定樹與所舉例的判定表等價(jià):

第4章軟件概要設(shè)計(jì)

學(xué)習(xí)本章,我們要考慮以下幾個(gè)問題:

軟件概要設(shè)計(jì)指的是什么?

軟件概要設(shè)計(jì)要做的事情是什么?

用什么來評價(jià)軟件設(shè)計(jì)的技術(shù)質(zhì)量?

軟件結(jié)構(gòu)優(yōu)化的準(zhǔn)則是什么?

如何進(jìn)行軟件概要設(shè)計(jì)?

以上問題就是本章所要討論的內(nèi)容。

一、軟件概要設(shè)計(jì)指的是什么?

我們知道,軟件設(shè)計(jì)是把一個(gè)軟件需求轉(zhuǎn)換為軟件表示的過程,而概要設(shè)計(jì)(又稱結(jié)構(gòu)設(shè)計(jì))就是軟件設(shè)計(jì)最初形成的一個(gè)表示(這里的表示是一個(gè)名詞),它描述了軟件的總的體系結(jié)構(gòu)。簡單地說軟件概要設(shè)計(jì)就是設(shè)計(jì)出軟件的總體結(jié)構(gòu)框架。而后對結(jié)構(gòu)的進(jìn)一步細(xì)化的設(shè)計(jì)就是軟件的詳細(xì)設(shè)計(jì)或過程設(shè)計(jì)。本章所學(xué)內(nèi)容主要就是軟件的概要設(shè)計(jì)內(nèi)容。

二、軟件概要設(shè)計(jì)的根本任務(wù)

軟件概要設(shè)計(jì)階段要做的事情是什么呢?總的來看有四個(gè)方面:它們是

1、設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)(軟件結(jié)構(gòu))

2、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì)

3、編寫概要設(shè)計(jì)文檔

4、評審

在需求分析階段,已經(jīng)把系統(tǒng)分解成層次結(jié)構(gòu),而在概要設(shè)計(jì)階段,需要進(jìn)一步分解,劃分為模塊以及模塊的層次結(jié)構(gòu)。劃分的具體過程是:

(1)采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊。

(2)確定每個(gè)模塊的功能。

(3)確定模塊之間的調(diào)用關(guān)系。

(4)確定模塊之間的接口,即模塊之間傳遞的信息。

(5)評價(jià)模塊結(jié)構(gòu)的質(zhì)量。

對于大型數(shù)據(jù)處理的軟件系統(tǒng),還要對數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫進(jìn)行設(shè)計(jì)。

在概要設(shè)計(jì)階段,還要編寫概要設(shè)計(jì)文檔,我們初學(xué)者有一個(gè)不是很好的做法,就是在編程序時(shí),往往不注意文檔的編寫,導(dǎo)致以后軟件修改和升級很不方便,用戶使用時(shí)也得不到幫助。所以應(yīng)該在軟件設(shè)計(jì)的每個(gè)階段編寫相應(yīng)文檔,在概要設(shè)計(jì)階段,主要有以下文檔需要編寫:

(1)概要設(shè)計(jì)說明書。

(2)數(shù)據(jù)庫設(shè)計(jì)說明書。

(3)用戶手冊,

(4)修訂測試方案。

最后一個(gè)任務(wù)就是評審,在概要設(shè)計(jì)中,對設(shè)計(jì)局部是否完整地實(shí)現(xiàn)了需求中規(guī)定的功能、性能等要求,設(shè)計(jì)方案的可行性,關(guān)鍵的處理及內(nèi)外部接口定義正確性、有效性,各局部之間的一致性等都要進(jìn)行評審,以免在以后的設(shè)計(jì)中發(fā)現(xiàn)大的問題而返工。

以上就是軟件概要設(shè)計(jì)的四個(gè)根本任務(wù),總結(jié)一下用八個(gè)字表示:兩類結(jié)構(gòu)文檔評審。(兩類結(jié)構(gòu)就是指軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì))

在了解了軟件概要設(shè)計(jì)的根本任務(wù)之后,我們來看看軟件設(shè)計(jì)的根本原理,也就是用于衡量軟件設(shè)計(jì)的技術(shù)質(zhì)量的一些標(biāo)準(zhǔn)。

三、軟件設(shè)計(jì)的根本原理

1、模塊化

模塊就是指在程序中的數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?或者是單獨(dú)命名和編址的元素。如高級語言中的過程,函數(shù)、子程序等。每個(gè)模塊可以完成一個(gè)特定的子功能,各個(gè)模塊可以按一定方法組裝起來成為一個(gè)整體。從而實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。

模塊化就是指解決一個(gè)復(fù)雜問題時(shí)自頂向下逐層把軟件系統(tǒng)劃分成若干模塊的過程。

為了解決復(fù)雜的問題,在軟件設(shè)計(jì)中就必須把整個(gè)問題進(jìn)行分解來降低復(fù)雜性,這樣就可以減少開發(fā)工作量并降低開發(fā)本錢和提高軟件生產(chǎn)率。但是劃分模塊并不是越多越好,因?yàn)檫@會(huì)增加模塊之間接口的工作量。所以劃分模塊的層次和數(shù)量應(yīng)該防止過多或過少。

2、抽象

抽象這個(gè)詞本身也比較抽象,(老師要小明用抽象和具體造一個(gè)句子,可是他不懂,就問媽媽,什么是抽象,什么是具體?媽媽告訴他:抽象就是看不見摸不著的,具體就是看得見摸得著的。小明懂了,很快造好了一個(gè)句子,是這樣的:今天我很早起床,看見具體的媽媽在炒具體的菜,我翻開窗戶,抽象的新鮮空氣呼地一下跑進(jìn)來,真舒服啊。)呵呵,事實(shí)上,抽象并不是這么簡單的意思,它是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié),比方說我們可以把把男人女人老人小孩的共同本質(zhì)特性抽出來之后形成一個(gè)概念"人",這個(gè)概念就是抽象的結(jié)果。在軟件工程中就是這樣,在每個(gè)階段中,抽象的層次逐步降低,在軟件結(jié)構(gòu)設(shè)計(jì)中的模塊分層也是由抽象到具體的分析和構(gòu)造出來的。比方上一層的模塊所進(jìn)行的加工是一個(gè)抽象的操作"銷售統(tǒng)計(jì)",分解到最后一層,就可能是具體"打印報(bào)表"的操作了。

3、信息隱蔽

信息隱蔽的意思就是指,在設(shè)計(jì)和確定模塊時(shí),使得一個(gè)模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。舉個(gè)例子吧,假設(shè)我是程序中的一個(gè)模塊,電話機(jī)是另一個(gè)模塊,我在使用電話機(jī)時(shí),對電話機(jī)的控制是通過幾個(gè)按鍵來確定的,輸入的數(shù)據(jù)是我的語音,輸出的數(shù)據(jù)是對方的語音,而這些輸入、輸出的數(shù)據(jù)變換以及控制在電話機(jī)內(nèi)部是怎么實(shí)現(xiàn)的我不需要知道,同時(shí)也不能加以直接控制,這樣,如果電話機(jī)壞了,修復(fù)或更換后對我的使用是沒有任何影響的。所以說,電話機(jī)這個(gè)模塊的信息隱蔽是十分完善的。在軟件設(shè)計(jì)中,模塊的劃分也要采取措施使它實(shí)現(xiàn)信息隱蔽。

4、模塊獨(dú)立性

模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。這個(gè)概念就是上面說的三個(gè)根本原理的直接產(chǎn)物,在概要設(shè)計(jì)過程中,就是要求設(shè)計(jì)出具有良好模塊獨(dú)立性的軟件結(jié)構(gòu)。

那么如何來衡量軟件的模塊獨(dú)立性呢?這里有兩個(gè)定性的度量標(biāo)準(zhǔn)。

(1)耦合性:就是指模塊之間的聯(lián)系緊密程度。模塊之間聯(lián)系越緊密,其耦合性越強(qiáng),獨(dú)立性就越差。

模塊的耦合性從低到高可分為以下幾種類型:(假設(shè)某人為一模塊)

無直接耦合(比方陌生人之間的聯(lián)系)

數(shù)據(jù)耦合(比方去售貨員與顧客之間的聯(lián)系)

標(biāo)記耦合(比方兩個(gè)人下棋)

控制耦合(領(lǐng)導(dǎo)和下屬之間的聯(lián)系)

公共耦合(比方圖書館的所有借書者之間的聯(lián)系)

內(nèi)容耦合(比方小兩口之間的聯(lián)系)

在軟件設(shè)計(jì)中,提高模塊的獨(dú)立性,建立模塊間盡可能松散的系統(tǒng),是模塊化設(shè)計(jì)的目標(biāo)。為了降低模塊間的耦合度,可以采取以下措施:

(1)在耦合方式上降低模塊間接口的復(fù)雜性。

(2)在傳遞信息類型上盡量采用數(shù)據(jù)耦合,防止使用控制耦合,慎用或有控制地使用公共耦合。在實(shí)踐中要根據(jù)實(shí)際情況綜合考慮。

(2)內(nèi)聚性

內(nèi)聚性是指模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。根據(jù)內(nèi)聚性的從低到高可分為以下六種類型:

偶然內(nèi)聚:指一個(gè)模塊內(nèi)的各處理元素之間沒有任何聯(lián)系。(公共汽車內(nèi)的人群)

邏輯內(nèi)聚:指模塊內(nèi)執(zhí)行幾個(gè)邏輯上相似的功能,通過參數(shù)確定該模塊完成哪一個(gè)功能。(警察局里的警察)

時(shí)間內(nèi)聚:把需要同時(shí)執(zhí)行的動(dòng)作組合在一起形成的模塊為時(shí)間內(nèi)聚模塊。(交響樂團(tuán)的演奏員)

通信內(nèi)聚:指模塊內(nèi)所有處理元素都在同一個(gè)數(shù)據(jù)結(jié)構(gòu)上的操作?;蛘咧父魈幚硎褂孟嗤妮斎霐?shù)據(jù)或者產(chǎn)生相同的輸出數(shù)據(jù)。(建筑工地上的工人)

順序內(nèi)聚:指一個(gè)模塊中各個(gè)處理元素都密切相關(guān)于同一功能且必須順序執(zhí)行,前一功能的元素的輸出就是下一功能元素的輸入。(我們可以想像紡織廠中從紡紗到織布的各個(gè)操作形成的一個(gè)模塊,就是一種順序內(nèi)聚)

功能內(nèi)聚:這是最強(qiáng)的內(nèi)聚,指模塊內(nèi)所有元素共同完成一個(gè)功能,缺一不可,模塊已不可再分。(就如兩個(gè)人演獅子舞,要完成獅子形象的再現(xiàn),兩個(gè)人缺一不可.)

耦合性與內(nèi)聚性是模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn),將軟件系統(tǒng)劃分模塊時(shí),盡量做到高內(nèi)聚,低耦合,提高模塊的獨(dú)立性。在內(nèi)聚性與耦合性發(fā)生矛盾的時(shí)候,最好優(yōu)先考慮耦合性,也就是先保證耦合性低一些。

四、軟件結(jié)構(gòu)的優(yōu)化準(zhǔn)則

首先應(yīng)學(xué)會(huì)用圖形表示軟件結(jié)構(gòu),軟件結(jié)構(gòu)圖反映了整個(gè)系統(tǒng)的功能實(shí)現(xiàn),即將來編好程序中的控制層次體系。軟件結(jié)構(gòu)往往用樹狀或網(wǎng)狀結(jié)構(gòu)的圖形來表示。

請大家對照課本的解釋來看軟件結(jié)構(gòu)圖包括哪些內(nèi)容。

我們已經(jīng)知道了軟件概要設(shè)計(jì)的主要任務(wù)就是軟件結(jié)構(gòu)的設(shè)計(jì),為了提高設(shè)計(jì)的質(zhì)量,可以根據(jù)下面的設(shè)計(jì)優(yōu)化準(zhǔn)則進(jìn)行優(yōu)化:在這些準(zhǔn)則中,都是針對模塊及模塊間關(guān)系來提出的。

1、模塊的劃分:要做到高內(nèi)聚,低耦合,保持相對獨(dú)立性。

2、模塊的控制:模塊的作用范圍要在他的控制范圍內(nèi),判定所在的模塊應(yīng)與受其影響的模塊在層次上盡量靠近)

3、形成的結(jié)構(gòu);軟件結(jié)構(gòu)的深度、寬度、扇出、扇入要適當(dāng)

4、模塊的大小:要適中。

5、模塊的接口:模塊的接口要簡單、清晰、含義明確,便于理解、易于實(shí)現(xiàn)、測試與維護(hù))。五、概要設(shè)計(jì)的設(shè)計(jì)方法。

(一)面向數(shù)據(jù)流的設(shè)計(jì)方法(這是需要我們熟練掌握的方法)

面向數(shù)據(jù)流的設(shè)計(jì)方法是以需求階段產(chǎn)生的數(shù)據(jù)流圖為基礎(chǔ),按一定的步驟映射成軟件結(jié)構(gòu),因此又稱為結(jié)構(gòu)化設(shè)計(jì)(StructuredDesignSD)。這是目前使用最廣泛的軟件設(shè)計(jì)方法之一,應(yīng)該熟練掌握它。

1、首先要研究數(shù)據(jù)流圖(DFD)的類型,無論何種軟件系統(tǒng),DFD一般都可分為變換型和事務(wù)型兩類。

先來看變換型數(shù)據(jù)流圖,顧名思義,變換就是把輸入的數(shù)據(jù)處理后變成另外的數(shù)據(jù)輸出,所以變換型數(shù)據(jù)的工作過程就是三步:取得數(shù)據(jù)、變換數(shù)據(jù)和輸出數(shù)據(jù)。在圖4-6中,可以看到兩股數(shù)據(jù)流經(jīng)過交換中心變成一股數(shù)據(jù)流進(jìn)行輸出。虛線為標(biāo)出的流界。

再來看事務(wù)型數(shù)據(jù)流圖,所謂事務(wù)也是一個(gè)處理,但不是數(shù)據(jù)變換,而是將輸入數(shù)據(jù)流別離成許多發(fā)散的數(shù)據(jù)流,形成許多加工路徑,并根據(jù)值選擇其中一個(gè)路徑來執(zhí)行。舉個(gè)例子,好比有一個(gè)郵件分發(fā)中心,把收進(jìn)的郵件根據(jù)其發(fā)送地址進(jìn)行分流,有的用飛機(jī)郵送,有的用汽車來運(yùn)輸?shù)鹊取?/p>

在大型軟件系統(tǒng)中的DFD數(shù)據(jù)流圖中,這兩種類型特征都有可能存在。

2、SD方法設(shè)計(jì)過程

1)精化DFD。

2)確定DFD類型并進(jìn)行相應(yīng)的映射。

3)分解上層模塊,設(shè)計(jì)中下層模塊結(jié)構(gòu)

4)根據(jù)優(yōu)化準(zhǔn)則對軟件結(jié)構(gòu)求精。

5)描述模塊功能、接口及全局?jǐn)?shù)據(jù)結(jié)構(gòu)

6)復(fù)查,如果有錯(cuò)則轉(zhuǎn)向2)修改完善,否則進(jìn)入詳細(xì)設(shè)計(jì)。

下面我們通過例子來說明變換分析設(shè)計(jì)和事務(wù)分析設(shè)計(jì)方法。

3、變換分析設(shè)計(jì)

以課本頁圖為例說明變換分析設(shè)計(jì)。

根據(jù)面向數(shù)據(jù)流的設(shè)計(jì)方法,第一步是精化DFD,也就是研究分析這個(gè)數(shù)據(jù)流圖,我們可以看到圖中從A到H的數(shù)據(jù)流向和加工,圖形比較簡單。

第二步是確定DFD類型并確定加工中心,在這里已經(jīng)說明為本圖為變換型,在實(shí)際分析中應(yīng)該根據(jù)每個(gè)相關(guān)操作來確定其類型。在圖中,我們可以直觀地看到中間幾股數(shù)據(jù)流的集合處是系統(tǒng)的變換中心。也可以通過雙向?qū)ふ曳▉泶_定,左邊是物理輸入端,從f1沿著單向路徑一直到f3,后面的f4是從C流出的,同時(shí)C還有f5流出,則可見f4,f5不能再看作是系統(tǒng)的輸入,因此可確定f4,f5前一個(gè)數(shù)據(jù)流f3就是系統(tǒng)的邏輯輸入,同樣,我們從右邊的物理輸出端往左邊沿?cái)?shù)據(jù)流的反向?qū)ふ遥梢园l(fā)現(xiàn)f4,f6不能看作是整個(gè)系統(tǒng)的輸出,因此可以確定f7,f8是邏輯輸出端,然后在這兩個(gè)分界處添上虛線,這樣,DFD的三部份就確定了。

第三步設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第一層,根據(jù)變換中心可以對應(yīng)得到主模塊的位置,就可以畫出頂層模塊(即主模塊,在實(shí)際應(yīng)用中,這個(gè)模塊的名字就是系統(tǒng)的名字,如銷售管理系統(tǒng)等)。然后在這個(gè)模塊下方根據(jù)劃分好的三個(gè)局部畫出三個(gè)功能模塊,即輸入、變換和輸出模塊,就是圖中的getf3,將f3變換成f7和f8模塊,putf7及putf8模塊,注意,這里應(yīng)當(dāng)為每個(gè)輸入和輸出設(shè)計(jì)一個(gè)模塊。然后將這些模塊與頂層模塊用連線連上表示所屬控制。畫上相應(yīng)的數(shù)據(jù)傳送箭頭。

第四步分解上層模塊,設(shè)計(jì)中下層模塊。根據(jù)上面的方法,分解輸入模塊,圖中的getf3模塊的功能是向主模塊提供數(shù)據(jù),而在DFD中可以看到f3是數(shù)據(jù)流f2經(jīng)過B操作后流出的,因此這里有兩個(gè)局部,就是接收f2數(shù)據(jù),再通過B轉(zhuǎn)換流出。所以在getf3模塊下畫出兩個(gè)子模塊getf2和B操作模塊。

就這樣一一分解,可以畫出所有的輸入和輸出子模塊,直到物理輸入和輸出為止。

對于變換中心的下屬模塊,根據(jù)數(shù)據(jù)流和變換操作,以每個(gè)根本加工建立一個(gè)功能模塊,可以畫出CDE三個(gè)子模塊。

整個(gè)過程并不復(fù)雜,畫好后根據(jù)實(shí)際情況對軟件結(jié)構(gòu)進(jìn)行優(yōu)化,也就是進(jìn)行必要的合并或分解。以求設(shè)計(jì)出高內(nèi)聚低耦合的模塊組成的、具有良好特性的軟件結(jié)構(gòu)。

4、事務(wù)分析設(shè)計(jì),可以參見圖為例。其設(shè)計(jì)方法大同小異,首先確定DFD類型,這里已指明是事務(wù)型,然后找出DFD中的事務(wù)中心和加式路徑。當(dāng)DFD中時(shí)不要弄錯(cuò),然后在分解子模塊時(shí)在調(diào)度模塊上加一個(gè)菱形符號(hào)表示判斷處理。

5、綜合型數(shù)據(jù)流圖與分層數(shù)據(jù)流圖映射成軟件結(jié)構(gòu)的設(shè)計(jì)

有了上面的基礎(chǔ),對綜合型的數(shù)據(jù)流圖也可以一一分開來進(jìn)行設(shè)計(jì)了。

6、設(shè)計(jì)后的處理,在軟件結(jié)構(gòu)形成之后,我們知道,概要設(shè)計(jì)的根本任務(wù)還有文檔的編寫,在這個(gè)階段就是要編寫一些文檔,包括:

(1)為每個(gè)模塊寫一份處理說明

(2)為每個(gè)模塊提供一份接口說明

(3)數(shù)據(jù)結(jié)構(gòu)說明

(4)給出設(shè)計(jì)約束或限制

(5)進(jìn)行概要評審

(6)設(shè)計(jì)優(yōu)化。

本節(jié)介紹的設(shè)計(jì)方法是本章的重點(diǎn),要求熟練掌握。(二)基于IDEF0圖的設(shè)計(jì)方法

(三)表示軟件結(jié)構(gòu)圖的另一種圖形工具--HIPO圖。

HIPO圖清晰易讀,主要用于編寫概要設(shè)計(jì)文檔中的說明。

本章小結(jié):根據(jù)上面的學(xué)習(xí),我們可以知道,軟件概要設(shè)計(jì)的四個(gè)主要任務(wù),知道評價(jià)軟件結(jié)構(gòu)設(shè)計(jì)質(zhì)量的原理和兩個(gè)標(biāo)準(zhǔn)即軟件模塊的耦合性及內(nèi)聚性,根據(jù)這些原理提出了軟件結(jié)構(gòu)設(shè)計(jì)的優(yōu)化準(zhǔn)則,并且詳細(xì)學(xué)習(xí)了軟件結(jié)構(gòu)的面向數(shù)據(jù)流圖的設(shè)計(jì)方法。第6章_軟件編碼

本章的內(nèi)容比較少且簡單,多為識(shí)記的內(nèi)容,想必每一個(gè)學(xué)到本課程的同學(xué)都已經(jīng)有過編碼(寫程序)的經(jīng)驗(yàn),也積累了一些編程方面的經(jīng)驗(yàn),在本章中,就是從理論的角度來討論一下程序設(shè)計(jì)語言的特色及編碼應(yīng)注意的程序設(shè)計(jì)風(fēng)格。以理解和記憶為主。所以下面就一些記憶要點(diǎn)作一摘要。

一、程序設(shè)計(jì)語言的特性及選擇

程序設(shè)計(jì)語言有三個(gè)特性,他們是:心理特性、工程特性和技術(shù)特性。

1、心理特性:是指影響程序員心理的語言性能,包括歧義性,簡潔性,局部性和順序性,傳統(tǒng)性幾個(gè)方面。

歧義性:是指某些語言雖然在編譯程序中只有一種解釋,但在人們看來卻可能產(chǎn)生兩種或多種不同的解釋。

簡潔性:是指人們必須記住的語言成分的數(shù)量。

局部性和順序性:局部性指語言的聯(lián)想性,模塊的高內(nèi)聚低耦合使局部性得以加強(qiáng),提供異常處理的語言特性則削弱局部性。順序性強(qiáng)則使人們易理解,易接受。

傳統(tǒng)性:由于人們使用語言有一種習(xí)慣性。若新語種的傳統(tǒng)性強(qiáng),則人們學(xué)習(xí)起來容易接受。反之則需要更多時(shí)間來學(xué)習(xí)??梢妭鹘y(tǒng)性容易影響人們學(xué)習(xí)新語種的積極性。

2、工程特性:從軟件工程的觀點(diǎn),程序設(shè)計(jì)語言的特性著重考慮軟件開發(fā)工程的需要,因此對程序編碼有如下要求:可移植性、開發(fā)工具的可利用性、軟件的可重用性及可維護(hù)性。

可移植性:是指程序從一個(gè)計(jì)算機(jī)環(huán)境移植到另一個(gè)計(jì)算機(jī)環(huán)境的容易程度。

開發(fā)工具的可利用性:就是說一個(gè)開發(fā)工具好不好用,功能多不多,強(qiáng)不強(qiáng)。比方VC++就是一個(gè)開發(fā)工具。

軟件的可重用性:指編程語言能否提供可重用的軟件成分,重用時(shí)需要修改調(diào)整的內(nèi)容多不多。

可維護(hù)性:一個(gè)易讀懂,易修改的軟件就是可維護(hù)性好的軟件。

3、技術(shù)特性。二、程序設(shè)計(jì)語言的選擇

這一節(jié)主要要識(shí)記一些語言所適合的需求,考慮選擇語言的因素有:工程的應(yīng)用領(lǐng)域、軟件開發(fā)的方法、軟件執(zhí)行的環(huán)境、算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性以及軟件開發(fā)人員的知識(shí)等。

1、工程應(yīng)用領(lǐng)域

科學(xué)工程計(jì)算:主要有FORTRAN語言,它是世界上第一個(gè)被正式推廣應(yīng)用的計(jì)算機(jī)語言。

Pascal語言,具有很強(qiáng)的數(shù)據(jù)和過程結(jié)構(gòu)化能力,它是第一個(gè)表達(dá)結(jié)構(gòu)化編程思想的語言

C語言:功能強(qiáng)大,它具有匯編語言的某些特征,使程序運(yùn)行效率高。

PL/1語言:適用性廣,但由于太龐大而難以推廣。

數(shù)據(jù)處理與數(shù)據(jù)應(yīng)用,主要有Coble語言,廣泛用于商業(yè)數(shù)據(jù)處理。這種語言中程序說明與硬件環(huán)境說明分開、數(shù)據(jù)描述與算法描述分開。

SQL:結(jié)構(gòu)化查詢語言,用于對數(shù)據(jù)庫進(jìn)行存取管理。

4GL(第4代語言),包括Foxpro、Uniface、PowerBuilderInformix4GL等語言。這種語言有幾個(gè)特征:

(1)友好的用戶界面

(2)兼有過程性和非過程性雙重特性

(3)高效的程序代碼

(4)完備的數(shù)據(jù)庫

(5)應(yīng)用程序生成器

實(shí)時(shí)處理,主要有匯編語言和Ada語言。

系統(tǒng)軟件,主要可用匯編語言、C語言、Pascal和Ada語言。

人工智能,應(yīng)選擇Prolog、Lisp語言。Lisp是一種函數(shù)型語言。Prolog是一種邏輯型語言。

如果用面向?qū)ο蠓椒ㄩ_發(fā)軟件,可采用C++、Java語言。

近年來軟件開發(fā)環(huán)境已進(jìn)入可視化時(shí)代,我們的實(shí)踐課程中,也都需要你有可視化編程工具進(jìn)行程序設(shè)計(jì),可用的如VisualBasic、VisualC++、VisualFoxpro、Delphi等等。我們應(yīng)該去學(xué)習(xí)掌握這些可視化編程工具。三、程序設(shè)計(jì)風(fēng)格

程序設(shè)計(jì)風(fēng)格是指一個(gè)人編制程序時(shí)所表現(xiàn)出來的特點(diǎn)、習(xí)慣、邏輯思路等。

要形成良好的程序設(shè)計(jì)風(fēng)格,應(yīng)注意以下幾個(gè)方面:

源程序文檔化:即給標(biāo)識(shí)符取名和注釋方面養(yǎng)成良好的習(xí)慣,注意寫出易讀易理解的程序文檔。

數(shù)據(jù)說明:注意數(shù)據(jù)說明時(shí)的順序和變量名的排列順序以及必要的注釋。

語句構(gòu)造:特別要注意的是,在寫程序時(shí)要以代碼的易讀易解為先,不要把為了實(shí)現(xiàn)高效率而把一些原本容易理解的語句寫成一個(gè)復(fù)雜的語句。從而降低軟件可維護(hù)性。

輸入輸出效率:要注意的是,追求效率要建立在不損害程序可讀性或可靠性基礎(chǔ)之上,要先使程序正確、再提高效率,要先使程序清晰,再提高程序效率。第七章_軟件測試

本章介紹了軟件測試的有關(guān)概念、方法及測試步驟。對本章提到的概念一定要理解記憶清楚,方法需要領(lǐng)會(huì)和記憶,設(shè)計(jì)測試用例的設(shè)計(jì)應(yīng)該到達(dá)應(yīng)用層次。本章是重點(diǎn)章。

一、軟件測試的目的(識(shí)記)

軟件測試的目的是為了發(fā)現(xiàn)錯(cuò)誤。因此

1、軟件測試就是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。

2、一個(gè)好的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤測試。

3、一個(gè)成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)錯(cuò)誤的測試。二、軟件測試方法(識(shí)記和領(lǐng)會(huì))

軟件測試方法一般分為兩大類:動(dòng)態(tài)測試方法和靜態(tài)測試方法。

靜態(tài)測試是指被測程序不在機(jī)器上運(yùn)行,而是采用人工檢測和計(jì)算機(jī)輔助靜態(tài)分析的手段對程序進(jìn)行檢測。

動(dòng)態(tài)測試是指通過運(yùn)行程序發(fā)現(xiàn)錯(cuò)誤。一般意義的測試多指動(dòng)態(tài)測試。

動(dòng)態(tài)測試分為黑盒法和白盒法兩種。

黑盒法,是指測試人員完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,只在軟件接口處進(jìn)行測試,依據(jù)需求規(guī)格說明書,檢查程序是否滿足功能要求。

舉個(gè)例子,一頭豬就我們的測試對象,輸入它能吃的東東,輸出它的豬肉和豬糞(有的情況下,輸入其他內(nèi)容可以輸出小豬豬)。并且它能自動(dòng)拒絕吃不能吃的東東(如石頭之類),并且不會(huì)直接輸出金元寶之類的東東。那么這個(gè)豬是健康的,正常的。我們的測試不去理會(huì)豬的內(nèi)部有什么花花腸子,怎么把食物變成肉的。這就是黑盒測試法。

白盒法,是指測試人員須了解程序內(nèi)部結(jié)構(gòu)和處理過程,以檢查處理過程的細(xì)節(jié)為基礎(chǔ),對程序中盡可能多的邏輯路徑進(jìn)行測試,檢驗(yàn)內(nèi)部控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)是否有錯(cuò),實(shí)際的運(yùn)行狀態(tài)與預(yù)期的狀態(tài)是否一致。

這就好象是給豬做B超啦,CT啦,胸透啦什么的,把它里面的花花腸子看個(gè)透,并且還要看看吃進(jìn)去的東西都經(jīng)過哪里,怎么出來的,通過這些檢測來確定它每個(gè)臟器的功能是否正常,處理食物的狀態(tài)是否和理論上的一致或者發(fā)現(xiàn)它肚子里長了個(gè)瘤。

呵呵,這種比較太粗俗了,也不完全像。反正就是這樣,一個(gè)是只看輸入和輸出,另一個(gè)是看里面的細(xì)節(jié)。但是兩種測試法都不可能對程序進(jìn)行窮舉測試。三、測試用例的設(shè)計(jì)(簡單應(yīng)用)

首先來了解白盒技術(shù)

白盒測試是結(jié)構(gòu)測試,所以被測對象根本上是源程序,以程序內(nèi)部邏輯為基礎(chǔ)設(shè)計(jì)測試用例。

使用白盒技術(shù),要盡可能覆蓋最多的路徑,當(dāng)程序內(nèi)部存在判定時(shí),就要考慮邏輯覆蓋。

(1)語句覆蓋:就是要設(shè)計(jì)足夠多的測試用例(也就是輸入的數(shù)據(jù)),使被測程序中每個(gè)語句至少執(zhí)行一次。在這里,重點(diǎn)在于每個(gè)語句即每個(gè)語句都要被執(zhí)行過。設(shè)計(jì)時(shí)要記住這一點(diǎn)。

(2)判定覆蓋:指設(shè)計(jì)足夠的測試用例,使得程序中每個(gè)判定表達(dá)式至少獲得一次"真"值和"假"值,從而使程序的每一個(gè)分支至少都通過一次,因此判定覆蓋又稱為"分支覆蓋"。它和語句覆蓋有什么不同呢?

就在于判定,語句覆蓋不管是真是假,只要執(zhí)行過這句就成,而判定覆蓋則必須讓這個(gè)語句的執(zhí)行結(jié)構(gòu)為真和為假都要有測試用例給出。所以判定覆蓋比語句覆蓋嚴(yán)格些。但是判定覆蓋也不能檢查出全部錯(cuò)誤,因?yàn)橛行l件語句即使寫錯(cuò)了,也同樣能夠產(chǎn)生正確真值或假值。

比方(a=2)or(x>1),由于這個(gè)or的存在,那么把x>1錯(cuò)寫成x<1時(shí),如果用例為a=2,語句的值都為"真"。要解決這個(gè)問題,就要看下面的覆蓋。

(3)條件覆蓋:是指設(shè)計(jì)足夠的測試用例,使得判定表達(dá)式中每個(gè)條件的各種可能的值至少出現(xiàn)一次。這就比上面的單是判定覆蓋要嚴(yán)格得多了,如上例,(a=2)

or(x>1);在這里必須使a=2、x>1,a≠2、x≤1均出現(xiàn)一次。

(4)判定/條件覆蓋:上面條件覆蓋也不一定滿足判定該,因?yàn)橹环蠗l件覆蓋的用例可能會(huì)不滿足每個(gè)判定語句均有真值或假值出現(xiàn)。因此要兩者兼顧,判定條件覆蓋就是指設(shè)計(jì)足夠

的測試用例,使得判定表達(dá)式中每個(gè)條件的所有可能取值至少出現(xiàn)一次并且每個(gè)判定表達(dá)式所有可能的結(jié)果也至少出現(xiàn)一次。

(5)條件組合覆蓋:是指設(shè)計(jì)足夠的測試用例,使得每個(gè)判定表達(dá)式中條件的各種或能的值的組合都至少出現(xiàn)一次。這就是前面兩個(gè)覆蓋的組合。

(6)路徑覆蓋:是指測設(shè)計(jì)足夠的測試用例,覆蓋被測試程序中所有可能的路徑。

這六種覆蓋進(jìn)行比較有下面一個(gè)表:

條件組合發(fā)現(xiàn)錯(cuò)誤的能力較強(qiáng),凡滿足其標(biāo)準(zhǔn)的測試用例,也必然滿足前四種覆蓋標(biāo)準(zhǔn)。在實(shí)際的邏輯測試中,一般以條件組合覆蓋為主設(shè)計(jì)測試用例,然后再補(bǔ)充局部用例來到達(dá)路徑覆蓋的測試標(biāo)準(zhǔn)。

2、循環(huán)覆蓋:當(dāng)程序中存在循環(huán)結(jié)構(gòu)時(shí),要覆蓋所有的路徑是不可能的,但是可以通過限制循環(huán)結(jié)構(gòu)來測試。

3、根本路徑測試:由于實(shí)際問題中,程序的路徑是龐大的,因此要將覆蓋的路徑壓縮到一定限度才能解決這個(gè)問題。根本路徑測試就是在程序控制流程圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出根本路徑集合從面設(shè)計(jì)測試用例保證這些路徑至少通過一次。

再來看看黑盒技術(shù)

黑盒測試是功能測試。測試的是程序的接口。在設(shè)計(jì)測試用例時(shí)有以下幾種方法:等價(jià)類的劃分、邊界值分析、錯(cuò)誤推測和因果圖。這幾種方法都不能提供一組完整的測試用例,在實(shí)際測試中應(yīng)把各種方法結(jié)合起來使用。

1、等價(jià)類的劃分:是將輸入數(shù)據(jù)按有效的或無效的(也稱合理的或不合理的)劃分成若干個(gè)等價(jià)類,測試每個(gè)等價(jià)類的代表值就等于對該類其他值的測試。用該法設(shè)計(jì)測試用例的步驟為:

(1)劃分等價(jià)類(列一個(gè)表)

(2)確定測試用例:根據(jù)已劃分的等價(jià)類,按以下步驟設(shè)計(jì)測試用例:

1)為每個(gè)等價(jià)類編號(hào)

2)設(shè)計(jì)一個(gè)測試用例,使其盡可能多的覆蓋尚未被覆蓋過的合理等價(jià)類。重復(fù)這步直到所有合理等價(jià)類被測試用例覆蓋。

3)設(shè)計(jì)一個(gè)測試用例,使其只覆蓋一個(gè)不合理等價(jià)類。重復(fù)這一步直到所有不合理等價(jià)類被覆蓋。

要注意課本上的例子,會(huì)應(yīng)用這種方法設(shè)計(jì)測試用例

2、邊界值分析:也就是在為設(shè)計(jì)測試用例時(shí),在等價(jià)類范圍內(nèi)選擇一些邊界值作為測試用例,這樣可以比單用等價(jià)類劃分法所選的測試用例能查出更多錯(cuò)誤,因?yàn)閷?shí)踐說明,程序更容易在處理邊界值時(shí)發(fā)生錯(cuò)誤。

3、錯(cuò)誤推測:通常根據(jù)經(jīng)驗(yàn)或直覺來推測程序中可能出現(xiàn)錯(cuò)誤的情況,并有針對性的編寫檢查這些錯(cuò)誤的測試用例。

4、因果圖:因果圖能夠有效地檢測輸入條件的各種組合可能會(huì)引起的錯(cuò)誤。它的根本原理是通過畫因果圖,把用自然語言描述的功能說明轉(zhuǎn)換為判定表,最后為判定表的每一列設(shè)計(jì)一個(gè)測試用例。

在以上幾種軟件測試方法,各有所長,但各有所短,在實(shí)際測試中,應(yīng)該采用綜合策略,通常先用黑盒法設(shè)計(jì)根本的測試用例,再用白盒法補(bǔ)充一些必要的測試用例。

本節(jié)具體要掌握的就是等價(jià)類劃分及邊界值的測試用例設(shè)計(jì)。四、軟件測試過程(識(shí)記)

軟件測試的步驟通常有四步:單元測試、集成測試、確認(rèn)測試和系統(tǒng)測試。

1、單元測試主要針對模塊的五個(gè)根本特征進(jìn)行測試:模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、重要的執(zhí)行路徑、錯(cuò)誤處理和邊界條件。單元測試時(shí)要用到"驅(qū)動(dòng)模塊"和"樁"模塊。注意要概念:驅(qū)動(dòng)模塊是用來模擬被測試模塊的上級調(diào)用模塊。樁模塊則用來代替被測試模塊所調(diào)用的模塊。

2、集成測試有兩種方法:非漸增式測試和漸增式測試。

非漸增式測試是指首先對每個(gè)模塊分別進(jìn)行單元測試,再把所有模塊組裝成一個(gè)完整的系統(tǒng)進(jìn)行的測試。而漸增式測試就是逐個(gè)把未經(jīng)測試的模塊組裝到已經(jīng)過測試的模塊上去進(jìn)行集成測試,每參加一個(gè)新模塊進(jìn)行一次集成測試,重復(fù)此過程直到程序組裝完畢。漸增式測試有兩種不同的組裝方法:自頂向下和自底向上結(jié)合。注意兩者區(qū)別。

3、確認(rèn)測試又稱有效性測試,它的任務(wù)是檢查軟件的功能與性能是否與需求規(guī)格說明書中確定的指標(biāo)相符合。因而需求說明規(guī)格說明是確認(rèn)測試的基礎(chǔ).確認(rèn)測試有兩項(xiàng)工作:進(jìn)行確認(rèn)測試與軟件配置審查。

4、系統(tǒng)測試:即要對軟件所運(yùn)行的整個(gè)系統(tǒng)(包括硬件、外設(shè)、其他軟件和操作人員等)結(jié)合在一起進(jìn)行測試,確定其是否能夠協(xié)調(diào)工作。五、調(diào)試(識(shí)記)

軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤,而調(diào)試則是在進(jìn)行了成功的測試之后才開始的工作。調(diào)試的目的是確定錯(cuò)誤的原因和位置,并改正錯(cuò)誤,因此調(diào)試也稱為糾錯(cuò)(Debug)。

調(diào)試方法有簡單的調(diào)試方法、歸納法、演繹法和回溯法等。第8章_軟件維護(hù)

軟件維護(hù)是軟件工程的一個(gè)重要任務(wù),作為理論,本章的內(nèi)容比較簡單,多為識(shí)記領(lǐng)會(huì)內(nèi)容,主要應(yīng)注意一些概念。其中的軟件可維護(hù)性是本章的重點(diǎn)內(nèi)容。一、軟件維護(hù)的內(nèi)容

有四種:校正性維護(hù),適應(yīng)性維護(hù),完善性維護(hù)和預(yù)防性維護(hù)。

1、校正性維護(hù):指為了識(shí)別和糾正錯(cuò)誤,修改軟件性能上的缺陷,進(jìn)行確定和修改錯(cuò)誤的過程。占整個(gè)維護(hù)工作的21%.

2、適應(yīng)性維護(hù):為了使本軟件適應(yīng)硬件和軟件的變化而修改軟件的過程稱為適應(yīng)性維護(hù)。占整個(gè)維護(hù)活動(dòng)的25%。

3、完善性維護(hù):增加軟件功能、增強(qiáng)軟件性能、提高運(yùn)行效率而進(jìn)行的維護(hù)活動(dòng)稱為完善性維護(hù)。占整個(gè)維護(hù)工作的50%.

4、預(yù)防性維護(hù):為了提高軟件的可維護(hù)性和可靠性而對軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。只占4%。二、維護(hù)的特點(diǎn)

1、非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù):主要是開發(fā)過程是否用軟件工程方法,若各階段均有相應(yīng)的文檔記錄,則容易維護(hù),采用結(jié)構(gòu)化維護(hù)可以大大提高軟件維護(hù)效率。

2、軟件維護(hù)的困難性:是由于軟件需求分析和開發(fā)方法的缺陷。

3、軟件維護(hù)的費(fèi)用:在總費(fèi)用中的比重不斷增加,已經(jīng)上升到了70%~80%或更多,我們看到的軟件不斷升級就是維護(hù)的表達(dá)。三、維護(hù)任務(wù)的實(shí)施

1、維護(hù)工作要建立維護(hù)機(jī)構(gòu),通常是成立維護(hù)小組,有臨時(shí)維護(hù)小組和長期維護(hù)小組之分。

2、維護(hù)的流程是:(1)制定維護(hù)申請報(bào)告。(2)審查申請報(bào)告并批準(zhǔn)。(3)進(jìn)行維護(hù)并做詳細(xì)記錄。(4)復(fù)審。

3、維護(hù)技術(shù):有兩類維護(hù)技術(shù),即面向維護(hù)的技術(shù)和維護(hù)支援技術(shù)。(1)面向維護(hù)技術(shù)是在軟件開發(fā)階段用來減少錯(cuò)誤、提高軟件可維護(hù)性的技術(shù)。(2)維護(hù)支援技術(shù)是在軟件維護(hù)階段用來提高維護(hù)作業(yè)的效率和質(zhì)量的技術(shù)。

4、維護(hù)的副作用:有三種:

(1)編碼副作用:即在修改源代碼時(shí)可能引入錯(cuò)誤。

(2)數(shù)據(jù)副作用:在修改數(shù)據(jù)結(jié)構(gòu)時(shí),有可能造成軟件設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)不匹配,因而導(dǎo)致錯(cuò)誤,數(shù)據(jù)副作用是修改軟件信息結(jié)構(gòu)導(dǎo)致的結(jié)果。

(3)文檔副作用:即對可執(zhí)行軟件的修改沒有反映在文檔中,就會(huì)產(chǎn)生文檔副作用。四、軟件可維護(hù)性

為了使軟件能夠易于維護(hù),必須考慮使軟件具有可維護(hù)性。

1、軟件可維護(hù)性是指軟件能夠被理解、校正、適應(yīng)及增強(qiáng)功能的容易程度。

軟件的可維護(hù)性、可使用性、可靠性是衡量軟件質(zhì)量的幾個(gè)主要特性。

軟件的可維護(hù)性是軟件開發(fā)階段的關(guān)鍵目標(biāo)。

軟件可維護(hù)性的七個(gè)質(zhì)量特征:可理解性、可測試性、可修改性、可靠性、可移植性、可使用性和效率。

2、度量軟件可維護(hù)性的方法:質(zhì)量檢查表、質(zhì)量測試、質(zhì)量標(biāo)準(zhǔn)。

3、提高可維護(hù)性的方法:

(1)建立明確的軟件質(zhì)量目標(biāo)

(2)利用先進(jìn)的軟件開發(fā)技術(shù)和工具

(3)建立明確的質(zhì)量保證工作

(4)選擇可維護(hù)的程序設(shè)計(jì)語言

(5)改良程序文檔

注:本章的習(xí)題及答案根本上就是以上內(nèi)容。在復(fù)習(xí)時(shí),并不一定會(huì)出到這些題目,主要是對整個(gè)維護(hù)工作特點(diǎn)和過程的理解領(lǐng)會(huì),在此基礎(chǔ)上,不需要太多的記憶也能正確答題。第9章_軟件開發(fā)的增量模型

本章介紹了增量模型的根本思想和特點(diǎn)、模型的分類和模型的表示以及快速原型的根本原理。學(xué)習(xí)理論時(shí)還是以識(shí)記為主。實(shí)踐則可能會(huì)在畢業(yè)設(shè)計(jì)時(shí)用到。一、增量模型的根本思想

瀑布模型有其局限性:很難適應(yīng)需求可變、模糊不定的軟件系統(tǒng)的開發(fā),而且在開發(fā)過程中用戶很難參與進(jìn)去,只有到開發(fā)結(jié)束才能看到整個(gè)軟件系統(tǒng)。這種理想的、線性的開發(fā)過程缺乏靈活性,不適應(yīng)實(shí)際的開發(fā)過程。

為了克服瀑布模型的局限性,產(chǎn)生了增量模型,它是在瀑布模型的基礎(chǔ)上加以修改而形成的。

增量模型和瀑布模型的本質(zhì)區(qū)別是:瀑布模型屬于整體開發(fā)模型,它規(guī)定在開始下一個(gè)階段的工作之前,必須完成前一階段的所有細(xì)節(jié)。而增量模型屬于非整體開發(fā)模型,它推遲某些階段或所有階段中的細(xì)節(jié),從而較早的產(chǎn)生工作軟件。

增量模型是在工程的開發(fā)過程中以一系列的增量方式開發(fā)的系統(tǒng)。增量方式包括增量開發(fā)和增量提交。

根據(jù)增量的方式和形式的不同,增量模型的分類分為漸增模型和原型模型。二、漸增模型:又包括增量構(gòu)造模型和演化提交模型。

增量構(gòu)造模型中,需求分析階段和設(shè)計(jì)階段都是按瀑布模型的整體方式發(fā),但是編碼階段是按增量方式開發(fā),在這種模型的開發(fā)中,用戶可以及早看到局部軟件功能,可以及早發(fā)現(xiàn)全面問題,以使在開發(fā)其他軟件功能時(shí)及時(shí)解決問題。

演化提交模型中,工程開發(fā)的各個(gè)階段都是增量方式。該模型是增量開發(fā)的極端形式,它不僅是增量開發(fā)也是增量提交,用戶將最早收到局部工作軟件。三、(快速)原型模型:包括探索原型、實(shí)驗(yàn)原型和演化型原型。

1、原型:是指模擬某種產(chǎn)品的原始模型,軟件開發(fā)中的原形是一個(gè)早期可運(yùn)行的版本,它反映了最終系統(tǒng)的重要特性。

2、快速原型的思想:先用相對少的本錢、較短的周期開發(fā)一個(gè)簡單的、但可以運(yùn)行的系統(tǒng)原型向用戶演示或讓用戶試用,以便及早澄清并檢驗(yàn)一些主要的設(shè)計(jì)謀略,在此基礎(chǔ)上再開發(fā)實(shí)際的軟件系統(tǒng)。

3、快速原型運(yùn)用方式:有拋棄策略和附加策略:

(1)拋棄策略是將原型用于開發(fā)過程的某一階段,促使該階段的開發(fā)結(jié)果更加完整、準(zhǔn)確、一致、可靠,該階段結(jié)束后,原型隨之作廢。探索型和實(shí)驗(yàn)型快速原型就是采用此策略。

(2)附加策略是將原型用于開發(fā)的全過程,原型由最根本的核心開始,逐步增加新的功能和新的需求,反復(fù)修改反復(fù)擴(kuò)充,最后開展為用戶滿意的系統(tǒng),演化型快速原型就采用此策略。

4、快速原型模型表示:

(1)對于探索型,用原型過程來代替需求分析,把原型作為需求說明的補(bǔ)充形式,運(yùn)用原型盡可能使需求說明完整、一致、準(zhǔn)確、無二義性,但整體上仍采用瀑布模型。

(2)對于實(shí)驗(yàn)型,用原形過程來代替設(shè)計(jì)階段,即在設(shè)計(jì)階段引入原理,快速分析實(shí)現(xiàn)方案,快速構(gòu)造原型,通過運(yùn)行,考察設(shè)計(jì)方案的可行性與合理性,原形成為設(shè)計(jì)的總體框架或設(shè)計(jì)結(jié)果的一局部。

(3)對于演化型,用原型過程開代替全部開發(fā)階段。這是典型的演化提交模型的形式,它是在強(qiáng)有力的軟件工具和環(huán)境支持下,通過原型過程的反復(fù)循環(huán),直接得到軟件系統(tǒng)。四、原型開發(fā)過程

1、快速分析

2、構(gòu)造原型

3、運(yùn)行原型

4、評價(jià)原型

5、修改五、其他內(nèi)容:

開發(fā)快速原型不使用通常的軟件開發(fā)工具來實(shí)現(xiàn),采用一些特別的技術(shù)和工具如可執(zhí)行的規(guī)格說明、基于腳本的設(shè)計(jì)、采用非常高級語言或?qū)iT語言和能重用軟件等。

快速原型模型的作用、適用情況及優(yōu)缺點(diǎn)等,注意其要點(diǎn)。第10章面向?qū)ο蟮姆椒?/p>

面向?qū)ο蟮姆椒ㄊ墙窈筌浖_發(fā)方法的主流。學(xué)習(xí)本章,最好是學(xué)過面向?qū)ο蟪绦蛟O(shè)計(jì)語言,這樣可以對對象、類、類的層次結(jié)構(gòu)、方法、消息等概念更容易理解。本章總的要求是,掌握面向?qū)ο蟮母舅枷搿⒏靖拍?、根本原理,掌握三種模型的根本概念和構(gòu)造方法,掌握面向?qū)ο蟮姆治?、設(shè)計(jì)和實(shí)現(xiàn)的過程。一、面向?qū)ο蟮母靖拍?/p>

1、什么面向?qū)ο?首先了解幾個(gè)概念:

(1)對象:對象是人們要進(jìn)行研究的任何事物。具體一點(diǎn)講就是研究對象。它可以是有形實(shí)體,也可以是作用、事件、性能說明等,當(dāng)然,如果女朋友成為你研究的對象時(shí),對象也可以是你的女朋友。

(2)對象的狀態(tài)和行為:對象有自身的狀態(tài),比方你的女朋友有她的姓名(叫小麗)、年齡(22歲)、工作單位等。對象還有操作,用于改變對象的狀態(tài),對象及其操作就是對象的行為,比方"小麗.跳槽到(某公司)"這個(gè)行為將使她的工作單位這個(gè)狀態(tài)發(fā)生變化。

(3)類:具有相同或相似性質(zhì)的對象的抽象就是類。如桃樹、李樹、樟樹等是具體的樹,抽象之后得到"樹"這個(gè)類。類具有屬性,屬性是狀態(tài)的抽象,如一棵李樹的高度是3米,樟樹是10米,樹則抽象出一個(gè)屬性"高度"。類具有操作,它是對象行為的抽象。

(4)類的結(jié)構(gòu):有兩種,一種是"一般-具體"結(jié)構(gòu),如植物、樹都是類,它們之間是抽象到具體的關(guān)系,即樹是一種(isa)植物。還有一種就是"整體-局部"結(jié)構(gòu),如計(jì)算機(jī)是類、CPU也是類,則計(jì)算機(jī)與CPU之間就是整體與局部的關(guān)系。

(5)消息和方法:對象之間進(jìn)行通信的構(gòu)造叫做消息,比方小麗是一個(gè)對象,上司發(fā)出一個(gè)消息:小麗.出差到(深圳)。這樣,相應(yīng)的對象接收到這個(gè)消息就會(huì)給予響應(yīng),在這個(gè)消息中,小麗是對象名,出差到就是方法名,深圳就是參數(shù)。在類中操作的實(shí)現(xiàn)過程叫做方法。上面的出差到(某地)這個(gè)方法如何實(shí)現(xiàn)呢,就是買車票,乘車到某地。這個(gè)過程就是方法。

總之,面向?qū)ο筮@種思想很符合人們觀察世界的自然思想。在很多時(shí)候我們可以用自然的觀點(diǎn)去理解面向?qū)ο蟆?/p>

2、面向?qū)ο蟮奶卣饔兴狞c(diǎn):對象唯一性、分類性、繼承性和多態(tài)性。

3、面向?qū)ο蟮囊兀撼橄?、封裝性、共享性

4、面向?qū)ο蠹夹g(shù)強(qiáng)調(diào)的是對象結(jié)構(gòu)而不是程序結(jié)構(gòu)。

5、面向?qū)ο蟮拈_發(fā)方法主要有以下幾種:Coad方法、Booch方法、OMT方法和OOSE方法,最新的統(tǒng)一建模語言UML則不僅統(tǒng)一了Booch方法,OMT方法、OOSE方法,而且對其作了進(jìn)一上的開展,最終統(tǒng)一為群眾所接受的標(biāo)準(zhǔn)建模語言。二、面向?qū)ο蟮哪P?簡單應(yīng)用)

面向?qū)ο蟮哪P桶ㄈ齻€(gè),它們分別是:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對象模型、描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型和和描述系統(tǒng)功能的功能模型。這三種模型都涉及到數(shù)據(jù)、控制和操作等共同的概念,只是每種模型描述的側(cè)重點(diǎn)不同。這三種模型從三個(gè)不同但又密切相關(guān)的角度模擬目標(biāo)系統(tǒng),它們各自從不同的側(cè)面反映了系統(tǒng)的實(shí)質(zhì)性內(nèi)容,綜合起來則全面反映了對目標(biāo)系統(tǒng)的需求。

1、對象模型:它表示了靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)數(shù)據(jù)性質(zhì),描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),它是從客觀世界實(shí)體的對象關(guān)系角度來描述,表現(xiàn)了對象的相互關(guān)系。該模型主要關(guān)系的是系統(tǒng)中對象的結(jié)構(gòu)、屬性和操作,使用了對象圖的工具來刻畫,它是分析階段三個(gè)模型的核心,也是其他兩個(gè)模型的框架。涉及及的概念有,對象和類、關(guān)聯(lián)和鏈。

2、動(dòng)態(tài)模型:是與時(shí)間和變化有關(guān)的系統(tǒng)性質(zhì)。該模型描述了系統(tǒng)的控制結(jié)構(gòu),它表示了瞬時(shí)的、行為化的系統(tǒng)控制性質(zhì),它關(guān)系的是系統(tǒng)的控制,操作的執(zhí)行順序,它從對象的事件和狀態(tài)的角度出發(fā),表現(xiàn)了對象的相互行為。該模型描述的系統(tǒng)屬性是觸發(fā)事件,事件序列、狀態(tài)、事件與狀態(tài)的組織。使用狀態(tài)圖作為描述工具。涉及的重要概念是事件、狀態(tài)、操作等。

3、功能模型:描述了系統(tǒng)的所有計(jì)算。功能模型指出發(fā)生了什么,動(dòng)態(tài)模型確定什么時(shí)候發(fā)生,而對象模型確定發(fā)生的客體。功能模型說明一個(gè)計(jì)算如何從輸入值得到輸出值,它不考慮所計(jì)算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖說明數(shù)據(jù)流是如何從外部輸入、經(jīng)過操作和內(nèi)部存儲(chǔ)輸出到外部的。功能模型也包括對象模型中值的約束條件。功能模型說明對象模型中操作的含義、動(dòng)態(tài)模型中動(dòng)作的意義以及對象模型中約束的意義。相關(guān)的概念有:數(shù)據(jù)流圖中的處理、數(shù)據(jù)流、動(dòng)作對象、數(shù)據(jù)存儲(chǔ)對象等。三、面向?qū)ο蟮姆治?簡單應(yīng)用)

面向?qū)ο蠓治龅哪康氖菍陀^世界的系統(tǒng)進(jìn)行建模。分析問題有三種用途:用來明確問題需求;為用戶和開發(fā)人員提供明確需求;為用戶和開發(fā)人員提供一個(gè)協(xié)商的基礎(chǔ),作為后繼的設(shè)計(jì)和實(shí)現(xiàn)的框架。通過分析,建立對象模型、動(dòng)態(tài)模型和功能模型。四、面向?qū)ο蟮脑O(shè)計(jì)(領(lǐng)會(huì))

1、面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則:

(1)模塊化:對象就是模塊,它是把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊。

(2)抽象:包括過程抽象、數(shù)據(jù)抽象、規(guī)格說明抽象及參數(shù)化抽象等。

(3)信息隱蔽:在面向?qū)ο蠓椒ㄖ校畔㈦[蔽通過對象的封裝性來實(shí)現(xiàn)。

(4)低耦合:低耦合是設(shè)計(jì)的一個(gè)重要標(biāo)準(zhǔn),應(yīng)該防止對象之間的高耦合,強(qiáng)調(diào)對象間的低耦合。

(5)高內(nèi)聚:在面向?qū)ο笤O(shè)計(jì)中存在三種內(nèi)聚:操作內(nèi)聚、類內(nèi)聚及一般-具體內(nèi)聚,緊密的繼承耦合與高度的一般--具體內(nèi)聚是一致的。

2、面向?qū)ο笤O(shè)計(jì)的啟發(fā)規(guī)則:

(1)設(shè)計(jì)結(jié)果應(yīng)該清晰易懂

(2)一般--具體結(jié)構(gòu)的深度應(yīng)適當(dāng)

(3)設(shè)計(jì)簡單的類

(4)使用簡單的協(xié)議

(5)使用簡單的操作

(6)把設(shè)計(jì)變動(dòng)減至最小五、面向?qū)ο蟮膶?shí)現(xiàn)(領(lǐng)會(huì))

面向?qū)ο髮?shí)現(xiàn)主要包括兩項(xiàng)工作,把面向?qū)ο笤O(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語言寫成的面向?qū)ο蟪绦颍粶y試并調(diào)試面向?qū)ο蟪绦颉?/p>

在開發(fā)過程,類的實(shí)現(xiàn)是核心問題。在用面向?qū)ο箫L(fēng)格所寫的系統(tǒng)中,所有的數(shù)據(jù)都被封裝在類的實(shí)例中,而整個(gè)程序則被封裝在一個(gè)更高級的類中。第11章軟件質(zhì)量與質(zhì)量保證

本章主要介紹了軟件質(zhì)量的定義、軟件質(zhì)量的度量與評價(jià)、軟件質(zhì)量保證的根本概念;軟件質(zhì)量度量模型、軟件復(fù)雜性、軟件可靠性設(shè)計(jì)質(zhì)量評審和程序質(zhì)量評審的具體內(nèi)容以及軟件容錯(cuò)技術(shù)。以領(lǐng)會(huì)識(shí)記為主。一、軟件質(zhì)量的定義

從實(shí)際應(yīng)用來說,軟件質(zhì)量定義包括三個(gè)一致性:

(1)與所確定的功能和性能需求的一致性;

(2)與所成文的開發(fā)標(biāo)準(zhǔn)的一致性;

(3)與所有專業(yè)開發(fā)的軟件所期望的隱含特性的一致性。

影響軟件質(zhì)量的因素分為可以直接度量的因素(如單位時(shí)間內(nèi)千行代碼中所產(chǎn)生的錯(cuò)誤)和只能間接度量的因素(如可用性和可維護(hù)性)。

軟件質(zhì)量保證是指確定、到達(dá)和維護(hù)所需要的軟件質(zhì)量而進(jìn)行的所有有方案、有系統(tǒng)的管理活動(dòng)。

質(zhì)量保證策略開展經(jīng)歷了三個(gè)階段:

(1)以檢測為重

(2)以過程管理為重

(3)以新產(chǎn)品開發(fā)為重。

由上可知,軟件質(zhì)量保證應(yīng)從產(chǎn)品方案和設(shè)計(jì)開始,直到投入使用和售后效勞的軟件生存期的每一階段中的每一步驟。

質(zhì)量保證的主要任務(wù)包括以下幾點(diǎn):

(1)正確定義用戶的要求。(2)技術(shù)方法的應(yīng)用。

(3)提高軟件開發(fā)的工程能力。(4)軟件的復(fù)用。

(5)發(fā)揮每個(gè)開發(fā)者的能力。(6)組織外部力量協(xié)作。

(7)排除無效勞動(dòng)。(8)提高方案和管理質(zhì)量。

二、質(zhì)量度量模型

本節(jié)主要提到兩個(gè)質(zhì)量度量模型,一個(gè)是McCAll質(zhì)量度量模型,一個(gè)是ISO(國際標(biāo)準(zhǔn)化組織)質(zhì)量度量模型。三、軟件復(fù)雜性

軟件復(fù)雜性度量的參數(shù)主要包括:

(1)規(guī)模,即總共指令數(shù)或源程序行數(shù)。

(2)難度,通常由程序中出現(xiàn)的操作數(shù)的數(shù)目所決定的量來表示。

(3)結(jié)構(gòu),通常與程序結(jié)構(gòu)有關(guān)的度量來表示。

(4)智能度,即算法的難易程度。

軟件復(fù)雜性主要表現(xiàn)在程序的復(fù)雜性。程序的復(fù)雜性主要指模塊內(nèi)程序的復(fù)雜性。

軟件復(fù)雜性的度量方法:

1、代碼行度量法:以源代碼行數(shù)作為程序復(fù)雜性的度量。

2、McCabe度量法:一種基于程序控制流的復(fù)雜性度量方法。四、軟件可靠性

軟件可靠性是指在給定的時(shí)間內(nèi),在規(guī)定的環(huán)境條件下系統(tǒng)完成所指定功能的概率。

衡量軟件可靠性的兩個(gè)常用指標(biāo)是平均失效等待時(shí)間MTTF和平均失效間隔時(shí)間MTBF。

軟件可靠性模型的研究工作尚在初始階段,目前的可靠性模型可分為如下三類:

(1)由硬件可靠性理論導(dǎo)出的模型。

(2)基于程序內(nèi)部特性的模型。

(3)植入模型。五、軟件評審

通常,質(zhì)量被理解為用戶滿意程度。軟件質(zhì)量包括"設(shè)計(jì)質(zhì)量"和"程序質(zhì)量",設(shè)計(jì)質(zhì)量是指設(shè)計(jì)的規(guī)格說明書符合用戶的要求,程序質(zhì)量是指程序要按照設(shè)計(jì)規(guī)格說

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論