軟件工程自考復(fù)習(xí)資料-全.doc_第1頁
軟件工程自考復(fù)習(xí)資料-全.doc_第2頁
軟件工程自考復(fù)習(xí)資料-全.doc_第3頁
軟件工程自考復(fù)習(xí)資料-全.doc_第4頁
軟件工程自考復(fù)習(xí)資料-全.doc_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章 緒論一、 軟件的基本概念1. 軟件是計(jì)算機(jī)系統(tǒng)中的程序及其文檔。2. 程序是計(jì)算機(jī)任務(wù)的處理對象和處理規(guī)則的描述;文檔是為了理解程序所需的闡述性的文書和資料。3. 文檔一般主要面向管理人員、開發(fā)人員、用戶、使用維護(hù)人員。4. 文檔在軟件工程中的作用:(1)提高軟件開發(fā)過程的能見度。(2)提高開發(fā)效率。(3)作為開發(fā)人員階段工作成果和結(jié)束標(biāo)志。(4)記錄開發(fā)過程有關(guān)信息便于使用和維護(hù)。(5)提供軟件運(yùn)行、維護(hù)和培訓(xùn)等資料。(6)便于用戶了解軟件功能、性能。5. 軟件的生產(chǎn)經(jīng)歷了三個(gè)階段:* 程序設(shè)計(jì)時(shí)代:生產(chǎn)方式是個(gè)體手工勞動(dòng),使用工具是機(jī)器、匯編語言,主要通過匯編來實(shí)現(xiàn),不注重程序設(shè)計(jì)方法。* 程序系統(tǒng)時(shí)代:生產(chǎn)方式是作坊式小集團(tuán)合作生產(chǎn),生產(chǎn)工具是高級語言,開始提出結(jié)構(gòu)化方法。* 軟件工程時(shí)代:生產(chǎn)方式是工程化生產(chǎn),使用數(shù)據(jù)庫、網(wǎng)絡(luò)、先進(jìn)的開發(fā)技術(shù)和方法。6. 軟件既是知識性(邏輯性)工業(yè)產(chǎn)品,具有一些獨(dú)特的特性是:* 軟件是邏輯產(chǎn)品,具無形性,通過計(jì)算機(jī)的執(zhí)行才能體現(xiàn)它的功能和作用。 * 軟件只會(huì)退化,不存在磨損和消耗問題。* 成本主要體現(xiàn)在軟件的開發(fā)和研制上,可進(jìn)行大量的復(fù)制。* 主要靠腦力勞動(dòng)生產(chǎn),開發(fā)和維護(hù)成本高。7. 軟件的主要結(jié)構(gòu)和功能是在分析設(shè)計(jì)階段決定的。8. 軟件的復(fù)雜性主要體現(xiàn)在程序的復(fù)雜性,即模塊內(nèi)程序的復(fù)雜性。直接關(guān)聯(lián)到軟件的簡單和可理解性、開發(fā)費(fèi)用多少、開發(fā)周期長短和軟件潛伏錯(cuò)誤的多少。二、 軟件危機(jī)1. 軟件危機(jī)是指在軟件開發(fā)和維護(hù)時(shí)遇到的一系列難以控制的問題導(dǎo)致的供需矛盾。出現(xiàn)在軟件發(fā)展的第二階段末期,隨著第三代計(jì)算機(jī)的誕生之際。2. 軟件危機(jī)主要體現(xiàn)在: * 軟件發(fā)展速度跟不上硬件的發(fā)展和用戶需求。 * 軟件成本和開發(fā)進(jìn)度不能預(yù)先預(yù)算,用戶不滿意。 * 軟件產(chǎn)品質(zhì)量差,成本高,可靠性沒有保證。 * 軟件可維護(hù)性差,產(chǎn)品沒有配套文檔。3. 軟件危機(jī)產(chǎn)生原因:(1)軟件規(guī)模變大,結(jié)構(gòu)更加復(fù)雜。(2)軟件開發(fā)管理困難。(3)軟件開發(fā)技術(shù)和工具落后。(4)軟件開發(fā)費(fèi)用增加。(5)采用落后的個(gè)體手工生產(chǎn)方式開發(fā)。4. 解決途徑:(1) 糾正對軟件開發(fā)的錯(cuò)誤觀念。(2) 提高軟件工程管理水平,重視文檔重要性。(3) 使用好的軟件開發(fā)工具,研究軟件開發(fā)技術(shù),規(guī)范軟件開發(fā)流程,提高開發(fā)效率。5. 為了克服軟件危機(jī),人們首先想到要用形式化方法來開發(fā)軟件。三、 軟件開發(fā)1. 軟件開發(fā)的本質(zhì)是實(shí)現(xiàn)問題空間的概念和處理邏輯到運(yùn)行平臺的概念和處理邏輯間的映射。2. 軟件開發(fā)基本途徑:先通過需求建模,把問題域的概念和處理邏輯向需求(抽象)層次進(jìn)行映射,再把需求層的概念和處理邏輯向設(shè)計(jì)(抽象)層進(jìn)行映射,依次進(jìn)行,直到映射到運(yùn)行平臺這一抽象層為止。3. 軟件開發(fā)涉及的技術(shù):過程方向(即求解軟件的開發(fā)邏輯)和過程途徑(即求解軟件的開發(fā)手段,基本手段是問題建模)。4. 軟件開發(fā)方法:是一種使用早已定義好的技術(shù)集及符號表示習(xí)慣來組織軟件生產(chǎn)的過程。5. 問題建模是指運(yùn)用所掌握的知識,通過抽象,給出該問題的一個(gè)結(jié)構(gòu)。建模手段有結(jié)構(gòu)化方法、面向?qū)ο蠓椒ê椭T多面向數(shù)據(jù)結(jié)構(gòu)的方法。6. 模型是待建系統(tǒng)的任意抽象,包括所有的基本能力、特性或其他一些方面,而沒有任何冗余的細(xì)節(jié),是在特定意圖下所確定的角度和抽象層次上對物理系統(tǒng)的描述,通常包含對該系統(tǒng)邊界的描述、對系統(tǒng)內(nèi)各模型元素以及它們之間關(guān)系的語義描述。7. 軟件系統(tǒng)模型大體分為概念模型和軟件模型,而軟件模型進(jìn)一步分為設(shè)計(jì)模型、實(shí)現(xiàn)模型、部署模型。四、 軟件開發(fā)環(huán)境1. 軟件開發(fā)環(huán)境是相關(guān)的一組軟件工具的集合,支持一定的軟件開發(fā)方法或按照一定的軟件開發(fā)模型組織而成,與軟件生存期、軟件開發(fā)方法、軟件處理模型密切相關(guān)。l 按解決問題分類:程序設(shè)計(jì)環(huán)境、系統(tǒng)合成環(huán)境、項(xiàng)目管理環(huán)境。l 按演變趨向分類:以語言為中心的環(huán)境、工具箱環(huán)境、基于方法的環(huán)境(分為支持軟件開發(fā)周期特定階段的管理和開發(fā)過程管理。后者即項(xiàng)目計(jì)劃和控制、任務(wù)管理)。2. 軟件開發(fā)環(huán)境是高度集成的一體化系統(tǒng),主要目標(biāo)是提高軟件開發(fā)的生產(chǎn)率、降低軟件成本。五、 軟件工具1. 軟件工具是指為支持計(jì)算機(jī)軟件的開發(fā)、維護(hù)、模擬、移植或管理而研制的程序系統(tǒng),是為了支持軟件人員開發(fā)和維護(hù)活動(dòng)而使用的軟件。2. 軟件工具由工具、工具接口、工具用戶接口組成,主要目的是提高軟件生產(chǎn)率和改善軟件質(zhì)量。3. 發(fā)展特點(diǎn):(1) 由單個(gè)工具到多個(gè)工具集成化方向發(fā)展。(2) 重視用戶界面設(shè)計(jì),不斷采用新理論技術(shù)。(3) 它的商品化推動(dòng)軟件產(chǎn)業(yè)的發(fā)展,進(jìn)而增加了對軟件工具的需求,促進(jìn)了軟件工具的商品化過程。 4. 分為6類:模擬工具、開發(fā)工具、測試和評估工具、運(yùn)行和維護(hù)工具、性能測試工具、程序設(shè)計(jì)支持工具。六、 軟件工程1. 由于軟件危機(jī),產(chǎn)生了以軟件開發(fā)技術(shù)(主要研究軟件開發(fā)方法、過程、工具和環(huán)境)和軟件工程管理(主要研究軟件管理學(xué)、心理學(xué)、經(jīng)濟(jì)學(xué))為研究內(nèi)容的軟件工程學(xué)科,以達(dá)到軟件開發(fā)工程化的最終目標(biāo)。2. 軟件工程是用科學(xué)知識、技術(shù)以及工程管理原則和方法來定義、開發(fā)、維護(hù)軟件,按預(yù)算和進(jìn)度實(shí)現(xiàn)滿足用戶要求的軟件產(chǎn)品的一門綜合性的交叉學(xué)科。3. 軟件工程是一種自頂向下分階段實(shí)現(xiàn)的軟件程序開發(fā)方法,著重于建造軟件系統(tǒng),要用管理科學(xué)的方法和原理進(jìn)行軟件生產(chǎn)的管理。4. 軟件工程的概念于1968年提出,涉及計(jì)算機(jī)科學(xué)、工程科學(xué)、管理科學(xué)、數(shù)學(xué)等領(lǐng)域。5. 軟件工程面臨的問題有:軟件費(fèi)用、軟件可靠性、軟件可維護(hù)性、軟件生產(chǎn)率和軟件重用。6. 軟件工程過程是指規(guī)定了獲取、供應(yīng)、開發(fā)、操作、維護(hù)、管理、支持過程時(shí),要實(shí)施的過程、活動(dòng)和任務(wù)。7. 軟件工程的縱向分解是把軟件生產(chǎn)分為幾個(gè)階段。七、 計(jì)算機(jī)輔助軟件工程1. 計(jì)算機(jī)輔助軟件工程(CASE),英文是 Computer Aided Software Engineering,是一組工具和方法的集合,可以輔助軟件開發(fā)生命周期各階段進(jìn)行軟件開發(fā)。2. 較早期的CASE是結(jié)構(gòu)的基于圖形的CASE。3. CASE領(lǐng)域是一個(gè)應(yīng)用、集成和綜合的領(lǐng)域。它把軟件開發(fā)技術(shù)、軟件工具和軟件開發(fā)方法集成到一個(gè)統(tǒng)一而一致的框架,吸收了CAD、網(wǎng)絡(luò)、軟件工程、數(shù)據(jù)庫、操作系統(tǒng)和許多其他計(jì)算機(jī)領(lǐng)域的原理和技術(shù)。4. 根據(jù)支持的范圍,CASE工具可分為窄支持(支持單個(gè)過程任務(wù)的工具)、較寬支持(工作臺支持某一過程所有活動(dòng)或某些活動(dòng))、一般支持(環(huán)境軟件過程所有活動(dòng)或至少大部分活動(dòng))工具。另外還可根據(jù)支持過程和功能進(jìn)行分類。5. CASE生存期步驟:CASE需求、CASE剪裁、CASE引入、CASE操作、CASE演化、CASE廢棄。6. CASE系統(tǒng)所涉及的技術(shù)有:支持軟件開發(fā)過程本身的技術(shù)、支持軟件開發(fā)過程管理的技術(shù)。從CASE系統(tǒng)產(chǎn)生方式看還有一種生成CASE系統(tǒng)的生成器所采用的技術(shù):元-CASE技術(shù)。7. 集成化CASE的五級模型:l 平臺集成:工具運(yùn)行在相同的硬件/操作系統(tǒng)平臺上。l 數(shù)據(jù)集成:不同軟件工程能相互交換數(shù)據(jù),工具使用共享數(shù)據(jù)模型來操作。分為三個(gè)級別:共享文件、共享數(shù)據(jù)結(jié)構(gòu)、共享倉庫。l 表示集成:工具使用相同的用戶界面。分為三個(gè)級別:窗口系統(tǒng)集成、命令集成、交互集成。l 控制集成:工具激活后能控制其它工具的操作。l 過程集成:工具在一個(gè)過程模型和“過程機(jī)”的指導(dǎo)下使用。即CASE系統(tǒng)嵌入了關(guān)于過程活動(dòng)、階段、約束和支持這些活動(dòng)所需的工具的知識。第二章 軟件需求和軟件需求規(guī)約一、 可行性研究1. 可行性研究是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定該軟件項(xiàng)目是否能夠開發(fā),是否值得開發(fā),給出“行或不行”的回答。實(shí)質(zhì)是以較抽象的方式進(jìn)行一次簡化的、壓縮了的需求分析、設(shè)計(jì)過程。它是系統(tǒng)方案實(shí)現(xiàn)的必要性。2. 可行性研究任務(wù):(1)先進(jìn)行概要的分析研究,初步確定項(xiàng)目的規(guī)模和目標(biāo)、約束和限制,把它們清楚的列出來。(2)分析員進(jìn)行簡要的需求分析,抽象出項(xiàng)目邏輯結(jié)構(gòu),建立邏輯模型。(3)經(jīng)壓縮設(shè)計(jì),探索出若干種可選的解決方法,對每種方法研究其可行性。3. 可行性研究主要考慮開發(fā)風(fēng)險(xiǎn)、資源有效性和技術(shù)等情況,具體分為: 技術(shù)可行性:指在現(xiàn)有條件下估算開發(fā)項(xiàng)目的技術(shù)風(fēng)險(xiǎn)。對項(xiàng)目的功能、性能、限制條件進(jìn)行分析,要解決技術(shù)風(fēng)險(xiǎn)問題,研究硬件等開發(fā)資源的有效性。研究內(nèi)容為:成本-效益分析、公司經(jīng)營長期策略、開發(fā)所需成本和資源、潛在的市場前景。 經(jīng)濟(jì)可行性:指進(jìn)行開發(fā)成本的估算及預(yù)期取得經(jīng)濟(jì)效益的評估。研究范圍是效益分析。 社會(huì)可行性:涉及范圍有合同、責(zé)任、侵權(quán)、用戶組織的管理模式、規(guī)范及其他一些技術(shù)人員常不了解的陷阱。4. 可行性研究步驟:(1)確定項(xiàng)目規(guī)模和目標(biāo)。(2)研究正在運(yùn)行的系統(tǒng)。(3)建立新系統(tǒng)的高層邏輯模型。(4)導(dǎo)出和評價(jià)各種方案。(5)推薦可行的方案。(6)編寫可行性研究報(bào)告。5. 可行性研究報(bào)告的主要內(nèi)容有:引言、可行性研究前提、對現(xiàn)有系統(tǒng)的分析、所建議系統(tǒng)的技術(shù)可行性分析、所建議系統(tǒng)的經(jīng)濟(jì)可行性分析、社會(huì)因素可行性分析、其他可供選擇的方案、結(jié)論意見。6. 項(xiàng)目開發(fā)計(jì)劃是一種管理性文檔,內(nèi)容包括:項(xiàng)目概述、實(shí)施計(jì)劃、人員組織和分工、交付期限。7. 與“可行性研究報(bào)告”、“項(xiàng)目開發(fā)計(jì)劃”文檔有關(guān)的人員是管理人員和開發(fā)人員。與“程序維護(hù)手冊”文檔有關(guān)的人員是管理人員和維護(hù)人員。8. 可行性分析中,系統(tǒng)流程圖用于描述當(dāng)前運(yùn)行系統(tǒng)。二、 效益分析1. 成本-效益分析首先估算開發(fā)系統(tǒng)的開發(fā)成本,再與可能取得的效益進(jìn)行比較和權(quán)衡。目的是從經(jīng)濟(jì)角度評價(jià)開發(fā)一個(gè)新的軟件項(xiàng)目是否可行。2. 效益分為有形效益(用貨幣的時(shí)間價(jià)值、投資回收期、純收入等指標(biāo)度量)和無形效益(從性質(zhì)和心理上衡量)。 純收入:是軟件生存周期內(nèi)系統(tǒng)的累計(jì)經(jīng)濟(jì)效益和投資之差。投資回收期:是累計(jì)的經(jīng)濟(jì)效益等于最初的投資費(fèi)用所需的時(shí)間。貨幣的時(shí)間價(jià)值:通常用利率表示貨幣的時(shí)間價(jià)值。設(shè)年利率為i,現(xiàn)存入P元,n年后的價(jià)值為F=P*(1+n*i)。3. 一個(gè)軟件開發(fā)成本為5萬元,壽命為3年。未來3年的每年收入預(yù)計(jì)為22000元、24000元、26620元。銀行年利率為10%。試對此項(xiàng)目進(jìn)行成本效益分析,以決定其經(jīng)濟(jì)可行性。解:3年后,5萬的價(jià)值為50000*(1+3*10%)=65000元。 3年軟件總獲利為22000*(1+2*10%)+24000*(1+1*10%)+26620=79420元65000元,所以此項(xiàng)目盈利,經(jīng)濟(jì)可行。4. 系統(tǒng)的經(jīng)濟(jì)效益是因使用新的系統(tǒng)而增加的收入和使用新的系統(tǒng)可以節(jié)省的運(yùn)行費(fèi)用之和。三、 需求和需求分析1. 軟件需求以一種技術(shù)形式,描述了一個(gè)產(chǎn)品/系統(tǒng)應(yīng)具有的功能、性能和其他性質(zhì)。如功能要求、環(huán)境需求、用戶界面要求。2. 需求的性質(zhì):必要的、無歧義的、可測的、可跟蹤的、可測量的。3. 需求分為:功能需求:規(guī)約系統(tǒng)或系統(tǒng)構(gòu)件必須執(zhí)行的功能的一類需求,是整個(gè)需求的主體。非功能需求:指軟件產(chǎn)品為滿足用戶業(yè)務(wù)需求而必須具有的除功能需求以外的特性,包括性能需求、外部接口需求、設(shè)計(jì)約束需求和質(zhì)量屬性需求。4. 需求分析是指開發(fā)人員要準(zhǔn)確理解用戶需求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式的需求轉(zhuǎn)化成完整的需求定義,再由需求定義轉(zhuǎn)化到相應(yīng)的需求規(guī)格說明的過程。可概括成“理解,分解,表達(dá)”六字。5. 需求分析是軟件開發(fā)工作的基礎(chǔ),基本任務(wù)是準(zhǔn)確定義新系統(tǒng)的目標(biāo),為滿足用戶的需要,回答系統(tǒng)必須做什么的問題。首要任務(wù)是確定軟件系統(tǒng)功能,定義需求并建立系統(tǒng)功能模型。6. 需求分析階段需編寫的文檔有:需求規(guī)格說明書:是軟件設(shè)計(jì)、驗(yàn)收的依據(jù),雙方對軟件要做什么的共同理解,也是需求分析的最終結(jié)果。內(nèi)容包括對主要數(shù)據(jù)、功能、用戶界面和運(yùn)行環(huán)境、軟件性能的描述。一般伴隨可行性分析報(bào)告產(chǎn)生。初步用戶使用手冊、確認(rèn)測試計(jì)劃。7. 需求分析之前要進(jìn)行必要的可行性分析,研究對象是用戶要求,用戶和分析設(shè)計(jì)人員雙方確定對問題的功能需求、性能需求、環(huán)境需求、用戶界面需求。此階段建立原型的目的是確定系統(tǒng)的功能和性能需要求。8. 需求分析的難點(diǎn):(1)問題的復(fù)雜性。(2)交流障礙。(3)用戶需求易變性。(4)用戶陳述的不一致性和不完備性。 解決途徑:(1)與用戶充分交流。(2)合同約束需求的變更。(3)選用適當(dāng)?shù)拈_發(fā)模型。(4)用戶參與需求評審。(5)需求規(guī)格說明由用戶確認(rèn)。(6)研究需求分析的方法和自動(dòng)化工具(如CASE技術(shù))。9. 各種需求分析方法都有共同適用的基本原則:(1)能表達(dá)和理解問題的數(shù)據(jù)域和功能域。(2)可把一個(gè)復(fù)雜問題按功能分解并可逐 層細(xì)化(描述軟件主要處理的數(shù)據(jù)域,并給軟件開發(fā)提供一種可轉(zhuǎn)化為數(shù)據(jù)設(shè)計(jì)、結(jié)構(gòu)設(shè)計(jì)、過程設(shè)計(jì)的數(shù)據(jù)與功能表示)。(3)建模。10. 需求分析階段可用的工具有:數(shù)據(jù)流圖、判定表、數(shù)據(jù)字典等。11. 需求分析階段的工作:對問題的識別和分解、分析和綜合:(1)確定對系統(tǒng)的綜合要求。(2)分析系統(tǒng)的數(shù)據(jù)要求。(3)導(dǎo)出系統(tǒng)的邏輯模型。(4)修正系統(tǒng)開發(fā)計(jì)劃。導(dǎo)出軟件邏輯模型、制定規(guī)格說明書、需求分析評審。12. 初始需求發(fā)現(xiàn)技術(shù):自悟、交談、觀察、小組會(huì)、提煉。13. 常用的軟件需求分析方法有:結(jié)構(gòu)化分析方法(SA)、功能分解法、信息建模法、面向?qū)ο蟮姆治龇椒?OOA)。四、 需求規(guī)約1. 需求規(guī)約是一個(gè)系統(tǒng)/產(chǎn)品所有需求陳述的正式文檔,它表達(dá)了一個(gè)系統(tǒng)/軟件產(chǎn)品的概念模型。2. 需求規(guī)約的性質(zhì):(1)重要性和穩(wěn)定性程度。(2)可修改的。(3)完整的。(4)一致的。3. 需求規(guī)約的三種表達(dá)風(fēng)格: 非形式化的需求規(guī)約:以一種自然語言來表達(dá)。 半形式化的需求規(guī)約:以半形式化符號體系(包括術(shù)語表、標(biāo)準(zhǔn)化的表達(dá)格式等)表達(dá)。 形式化的需求規(guī)約:以一種基于良構(gòu)數(shù)學(xué)概念的符號體系來編制。4. 需求規(guī)約和項(xiàng)目需求是兩個(gè)不同的概念。需求規(guī)約是開發(fā)組織和用戶之間一份事實(shí)上的技術(shù)合同書, 關(guān)注產(chǎn)品需求,回答“交付給客戶的產(chǎn)品/系統(tǒng)是什么”;而項(xiàng)目需求是客戶和開發(fā)者之間對產(chǎn)品/系統(tǒng)需求的理解,關(guān)注項(xiàng)目工作與管理,回答“開發(fā)組要做的是什么”。5. 需求規(guī)約的內(nèi)容包括:引言、信息描述、功能描述、行為描述、檢驗(yàn)標(biāo)準(zhǔn)、參考書目和附錄。6. 需求規(guī)約的作用:1)需求規(guī)約是軟件開發(fā)組織和用戶之間事實(shí)上的技術(shù)合同書,是產(chǎn)品功能及其環(huán)境的體現(xiàn)。2)對于項(xiàng)目的其余大多數(shù)工作,需求規(guī)約是一個(gè)管理控制點(diǎn)。3)對于產(chǎn)品/系統(tǒng)的設(shè)計(jì),需求規(guī)約是一個(gè)正式的、受控的起始點(diǎn)。4)需求規(guī)約是創(chuàng)建產(chǎn)品驗(yàn)收測試計(jì)劃和用戶指南的基礎(chǔ)。第三章 結(jié)構(gòu)化方法一、 結(jié)構(gòu)化分析方法1. 軟件系統(tǒng)/產(chǎn)品的需求工作中的三大挑戰(zhàn):問題空間的理解、人與人之間的通信、需求的變化性。2. 在軟件需求分析和設(shè)計(jì)工程的對象是數(shù)據(jù)和程序,按實(shí)施原則的處理是先數(shù)據(jù)后程序。每一種分析方法必須能夠表達(dá)和理解問題的數(shù)據(jù)域(包括數(shù)據(jù)流、數(shù)據(jù)內(nèi)容、數(shù)據(jù)結(jié)構(gòu))和功能域(反映數(shù)據(jù)域的控制信息)。3. 結(jié)構(gòu)化分析方法(SA)是面向數(shù)據(jù)流進(jìn)行需求分析的方法。是一種建?;顒?dòng),使用簡單易讀符號,根 據(jù)軟件內(nèi)部數(shù)據(jù)傳遞、變更的關(guān)系,以“分解”和“抽象”為基本原則,以自頂向下逐層分解的分析策略,描繪滿足功能要求的軟件模型。4. SA分析步驟:(1)了解當(dāng)前系統(tǒng)的工作流程,活得當(dāng)前系統(tǒng)的物理模型。(2)抽象出當(dāng)前系統(tǒng)的邏輯模型。(3)建立目標(biāo)系統(tǒng)的邏輯模型。(4)做進(jìn)一步的補(bǔ)充和優(yōu)化。5. SA方法優(yōu)點(diǎn):適用于開發(fā)數(shù)據(jù)處理類型軟件的需求分析,利用半形式化工具表達(dá)需求,簡明易懂。缺點(diǎn):(1)是一個(gè)靜態(tài)模型,不反映處理順序,不能控制模型,不適合描述實(shí)時(shí)控制系統(tǒng)。(2)只有和E-R圖結(jié)合才能較完整描述用戶對系統(tǒng)的需求。(3)只有和形式化方法結(jié)合才能精確描述軟件需求。(4)不適合描述人機(jī)界面系統(tǒng)的要求。(5)要借助需求分析工具,提高需求分析質(zhì)量和效率。6. SA方法特征:(1)嚴(yán)格定義需求。(2)劃分開發(fā)階段。(3)制定規(guī)范文檔。(4)分析控制流程是其主要特征。7. SA是早期的軟件工程方法,主要用于數(shù)據(jù)處理方面的問題。二、 結(jié)構(gòu)化方法描述工具1. 數(shù)據(jù)流圖(DFD圖),以圖形方式描繪數(shù)據(jù)在系統(tǒng)中的流動(dòng)和處理過程,只反映系統(tǒng)必須完成的邏輯功能,是一種功能模型。體現(xiàn)系統(tǒng)“做什么”的功能,通過功能分解可完成對其細(xì)化,描述系統(tǒng)的分解。基本元素有:數(shù)據(jù)流:是數(shù)據(jù)的流動(dòng),具有名字和方向。加工:又稱數(shù)據(jù)處理,是數(shù)據(jù)的變換單位,接受輸入的數(shù)據(jù)內(nèi)容或數(shù)據(jù)結(jié)構(gòu) ,進(jìn)行處理并產(chǎn)生輸出,必須有名字。數(shù)據(jù)存儲:是數(shù)據(jù)的靜態(tài)結(jié)構(gòu),也叫文件,指暫時(shí)保存的數(shù)據(jù),是數(shù)據(jù)庫文件或任何形式的數(shù)據(jù)組織,必須用名詞或名詞短語命名。數(shù)據(jù)源:是數(shù)據(jù)流的起點(diǎn),必須有名字; 數(shù)據(jù)潭:是數(shù)據(jù)流的歸宿地,不能作為計(jì)算機(jī)處理的成分,必須有名字,和數(shù)據(jù)源統(tǒng)稱外部實(shí)體。 “數(shù)據(jù)流”表示 “加工”表示 “數(shù)據(jù)存儲”表示 “數(shù)據(jù)源”和“數(shù)據(jù)潭”表示使用這些基本元素應(yīng)注意的問題:數(shù)據(jù)流起到連接其它實(shí)體的作用;在應(yīng)用中,數(shù)據(jù)流和數(shù)據(jù)存儲一般需要給出標(biāo)識,但對流入或流出數(shù)據(jù)存儲的數(shù)據(jù)流,在語義比較清晰的情況下可省略;加工之間可以有多個(gè)數(shù)據(jù)流,這些數(shù)據(jù)流可以沒有直接關(guān)系,數(shù)據(jù)流圖也不表明他們的先后次序。2. 數(shù)據(jù)字典(DD)是用來定義數(shù)據(jù)流圖各個(gè)成分的具體含義,以準(zhǔn)確、無二義性的說明方式為系統(tǒng)的分 析、設(shè)計(jì)、維護(hù)提供有關(guān)因素的一致的定義和詳細(xì)的描述。 建立形式有:手工建立、利用計(jì)算機(jī)輔助建立并維護(hù)。它和數(shù)據(jù)流圖共同構(gòu)成系統(tǒng)的邏輯模型,是需求說明書重要組成部分。 四類基本條目:數(shù)據(jù)流、數(shù)據(jù)項(xiàng)、數(shù)據(jù)存儲、基本加工條目。 數(shù)據(jù)字典定義數(shù)據(jù)流或數(shù)據(jù)存儲組成時(shí)使用的符號: = 被定義為 + 與 |或 重復(fù) mn重復(fù) ()可選 “”數(shù)據(jù)元素 .連接符3. 加工邏輯是只指對數(shù)據(jù)流圖中的數(shù)據(jù)處理進(jìn)行邏輯上的說明,詳細(xì)描述數(shù)據(jù)流圖中不能再分解的每一個(gè)加工,采用三種工具:結(jié)構(gòu)化語言:介于自然語言和形式化語言間的一種半形式語言。非為外層(采用順序、選擇、重復(fù)三種基本結(jié)構(gòu),描述控制結(jié)構(gòu))和內(nèi)層。判定表:構(gòu)成如下:條件類別條件組合操作操作執(zhí)行判定樹:是判定表的變形,更直觀易懂。與判定表主要用于描述存在多個(gè)條件復(fù)雜組合的判斷問題。4. 另外還有結(jié)構(gòu)化英語等工具。三、 數(shù)據(jù)流圖的繪制1. 繪圖方法有:自頂向下、分層繪制、初步求精等。2. 步驟:(1)先畫出系統(tǒng)的輸入輸出,即先畫頂層數(shù)據(jù)流圖。頂層數(shù)據(jù)流圖包括一個(gè)加工以表示被開發(fā) 的系統(tǒng)。 (2)畫系統(tǒng)內(nèi)部,即畫下層數(shù)據(jù)流圖。將層號從0號開始編號,采用自頂向下、由外向內(nèi)德原則。畫更下層數(shù)據(jù)流圖時(shí),則分解上層圖中的加工,一般沿輸入流方向,凡數(shù)據(jù)流的組成或值發(fā)生變化的地方則設(shè)置一個(gè)加工,一直進(jìn)行到輸出流。如果加工的內(nèi)部還有數(shù)據(jù)流則繼續(xù)分解,直到每個(gè)加工足夠簡單,不能分解為止。不能分解的加工叫基本加工。3. 注意問題:(1)命名:不能使用缺乏具體含義的名字,加工名應(yīng)能反映處理的功能。 (2)畫數(shù)據(jù)流而不是控制流:數(shù)據(jù)流名稱只能是名詞或名詞短語,整個(gè)圖中不反映加工的執(zhí)行順序。一般不畫物質(zhì)流。 (3)每個(gè)加工至少有一個(gè)輸入數(shù)據(jù)流和一個(gè)輸出數(shù)據(jù)流,反映出此加工的來源和結(jié)果。 (4)編號:某個(gè)加工分解成一張數(shù)據(jù)流圖時(shí),上層圖為父圖,下層圖為子圖。子圖和其上的所有加工應(yīng)編號,子圖編號和父圖編號相對應(yīng)。 (5)父圖和子圖的平衡。子圖的輸入輸出數(shù)據(jù)流同父圖加工的輸入輸出數(shù)據(jù)流必須一致。 (6)當(dāng)局部數(shù)據(jù)存儲作為某些加工的數(shù)據(jù)接口或某些加工特定的輸入輸出時(shí),就把它畫下來,有助于實(shí)現(xiàn)信息隱蔽性。 (7)提高數(shù)據(jù)流圖的易理解性。四、 數(shù)據(jù)流圖的基本類型1 數(shù)據(jù)流圖一般分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖。兩者的區(qū)別在于前者具有明顯變換特征的數(shù)據(jù)流圖,后者適用于具明顯事物特征的數(shù)據(jù)流圖。2. 變換型數(shù)據(jù)流圖是一個(gè)順序結(jié)構(gòu),由輸入、變換、輸出三部分組成。工作過程分為:取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù)。事務(wù)型數(shù)據(jù)流圖是將它的輸入流分離成許多發(fā)散的數(shù)據(jù)流,形成許多加工路徑,并根據(jù)輸入的值選擇其中一個(gè)路徑來執(zhí)行。3. 變換型數(shù)據(jù)流圖設(shè)計(jì)步驟:(1)確定DFD的變換中心、邏輯輸入和邏輯輸出。(2)設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第一層:變換結(jié)構(gòu)。(3)設(shè)計(jì)中、下層模塊。(4)設(shè)計(jì)的優(yōu)化。4. 事務(wù)型數(shù)據(jù)流圖設(shè)計(jì)步驟:(1)確定DFD的事務(wù)中心和加工路徑。(2)設(shè)計(jì)軟件結(jié)構(gòu)的頂層和第一層:事務(wù)結(jié)構(gòu)。(3)設(shè)計(jì)中、下層模塊、優(yōu)化等工作,與變換型流程圖設(shè)計(jì)一致。五、 結(jié)構(gòu)化設(shè)計(jì)和總體設(shè)計(jì)1. 軟件設(shè)計(jì)是應(yīng)用各種各樣的技術(shù)和原理,定義一個(gè)系統(tǒng)或部件的框架、組成、接口或其他特征的過程或“該過程的結(jié)果”,是將軟件需求變換成軟件表示的過程。2. 模塊在程序中是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募希蚴菃为?dú)命名和編址的元素,在軟件體系結(jié)構(gòu)中,模塊是可組合、分解和更換的單元?;緦傩杂薪涌?、功能、邏輯(反映內(nèi)部特性)、狀態(tài)。5. 軟件設(shè)計(jì)基本原理是:抽象:即抽出事物本質(zhì)的共同特性而暫不考慮細(xì)節(jié)和其它因素,能確定組成軟件的過程實(shí)體。模塊化:解決一個(gè)復(fù)雜問題時(shí)自頂向下逐層把軟件系統(tǒng)劃分為若干模塊的過程。信息隱藏:在設(shè)計(jì)和確定模塊時(shí),使一個(gè)模塊內(nèi)包含的信息,對于不需要這些信息的其他模塊來說,是不能訪問的。定義和實(shí)施對模塊過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制。模塊獨(dú)立性(最主要的原理):每個(gè)模塊指完成系統(tǒng)要求的獨(dú)立的子功能,且與其他模塊的聯(lián)系最少且接口簡單。4. 軟件設(shè)計(jì)基本任務(wù): 軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫設(shè)計(jì)、網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)、軟件總體設(shè)計(jì)文檔、評審。5. 結(jié)構(gòu)化設(shè)計(jì)(SD)又叫面向數(shù)據(jù)流的設(shè)計(jì),是以需求分析階段產(chǎn)生的數(shù)據(jù)流圖為基礎(chǔ),按一定步驟映射成軟件結(jié)構(gòu)。6. 結(jié)構(gòu)化設(shè)計(jì)分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì),它們是全局和局部的關(guān)系。主要任務(wù)是在需求分析的基礎(chǔ)上,定義滿足需求要的結(jié)構(gòu),即針對給定的問題,給出該問題的軟件解決方案,確定“怎么做”的問題。7. 總體設(shè)計(jì)階段的工具:模塊結(jié)構(gòu)圖、層次圖、HIPO圖。8. 總體設(shè)計(jì)基本步驟:先將系統(tǒng)DFD圖轉(zhuǎn)化成初始的模塊結(jié)構(gòu)圖,再基于“高內(nèi)聚低耦合”軟件設(shè)計(jì)原則,通過模塊化,將初始的模塊結(jié)構(gòu)圖轉(zhuǎn)化為最終的、可供詳細(xì)設(shè)計(jì)使用的模塊結(jié)構(gòu)圖(MSD)。9. 根據(jù)數(shù)據(jù)流的特性,將數(shù)據(jù)流圖分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖。 變換流指DFD具有明顯的輸入、變換、輸出界面。事務(wù)流指DFD中輸入流被分離成許多數(shù)據(jù)流,形成許多加工路徑,并根據(jù)輸入值選擇其中一條路徑來執(zhí)行。10. 模塊結(jié)構(gòu)圖是軟件系統(tǒng)的模塊層次結(jié)構(gòu),反映整個(gè)系統(tǒng)的功能實(shí)現(xiàn),用網(wǎng)狀或樹狀結(jié)構(gòu)的圖形表示。形態(tài)特征:深度(模塊的層數(shù))、寬度(一層中最大的模塊個(gè)數(shù))、扇入(一個(gè)模塊直接上屬模塊的個(gè)數(shù))、扇出(一個(gè)模塊直接調(diào)用下屬模塊的個(gè)數(shù))。畫圖注意事項(xiàng):同一名字的模塊在結(jié)構(gòu)圖中只出現(xiàn)一次;調(diào)用關(guān)系只能從上到下;模塊調(diào)用次序一般從左到右。11. 模塊的控制域指這個(gè)模塊本身以及所有直接或間接從屬它的模塊的集合。模塊的作用域是受該模塊內(nèi)一個(gè)判定所影響的所有模塊的集合。當(dāng)一個(gè)模塊的作用域不在其控制域內(nèi),或把該模塊移到上一層次,或把在作用域內(nèi)但不在控制域內(nèi)的模塊移到控制域內(nèi),盡量使模塊的作用域是其控制域的子集。六、 耦合性和內(nèi)聚性1. 耦合性也叫塊件關(guān)系,根據(jù)模塊外部特征提出的,是對軟件系統(tǒng)結(jié)構(gòu)中各模塊間相互聯(lián)系緊密程度的一種度量。按耦合程度由低到高分為:l 無直接耦合:兩個(gè)模塊間無直接關(guān)系,分別從屬不同模塊的控制和調(diào)用,不傳遞任何信息。l 數(shù)據(jù)耦合:兩個(gè)模塊間有調(diào)用關(guān)系,傳遞簡單數(shù)據(jù)值,相當(dāng)于高級語言的值傳遞。l 標(biāo)記耦合:兩個(gè)模塊間傳遞數(shù)據(jù)結(jié)構(gòu)。l 控制耦合:傳遞控制變量,如開關(guān)、標(biāo)志。l 公共耦合:傳遞在公共數(shù)據(jù)環(huán)境中的數(shù)據(jù)。l 內(nèi)容耦合:傳遞的是一個(gè)模塊的內(nèi)部數(shù)據(jù),往往出現(xiàn)在匯編語言中。2. 影響模塊間耦合程度的最主要因素是模塊間傳遞信息的復(fù)雜性,另外還受接口的復(fù)雜性和調(diào)用方式的影響。模塊間耦合性越強(qiáng),聯(lián)系越緊密,獨(dú)立性越差。提高模塊間獨(dú)立性的措施有:* 在耦合方式上降低模塊間接口的復(fù)雜性:包括模塊的接口方式、接口信息和參數(shù)個(gè)數(shù)。* 在傳遞信息類型上盡量使用數(shù)據(jù)耦合,避免控制耦合,慎用或有控制地使用公共耦合。3. 內(nèi)聚性又叫塊內(nèi)聯(lián)系,根據(jù)模塊內(nèi)部特征提出的指模塊功能強(qiáng)度的度量,即一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。按內(nèi)聚程度由低到高分為:l 偶然內(nèi)聚:一個(gè)模塊內(nèi)的各處理元素間沒有任何聯(lián)系。l 邏輯內(nèi)聚:模塊內(nèi)執(zhí)行的幾個(gè)邏輯上相似的功能,通過參數(shù)確定該模塊完成那一個(gè)功能。l 時(shí)間內(nèi)聚:需要同時(shí)執(zhí)行的動(dòng)作組合在一起形成的模型。l 通信內(nèi)聚:都要在同一數(shù)據(jù)結(jié)構(gòu)上操作,緊密相關(guān)于同一數(shù)據(jù)結(jié)構(gòu)。l 順序內(nèi)聚:緊密相關(guān)于同一功能,且必須按順序完成,某成分的輸入是另一成分的輸出。l 功能內(nèi)聚:共同完成同一功能,缺一不可,模塊不可再分割。3. 影響內(nèi)聚程度的最主要因素是模塊內(nèi)各成分之間相關(guān)于同一功能的緊密程度。模塊內(nèi)聚性越高,獨(dú)立性越強(qiáng),有利于軟件重用。七、 詳細(xì)設(shè)計(jì)1. 詳細(xì)設(shè)計(jì)主要確定每個(gè)模塊具體執(zhí)行過程和內(nèi)部特性,也稱過程設(shè)計(jì)。結(jié)果是基本決定了最終程序代碼的質(zhì)量。2. 結(jié)構(gòu)圖(SC圖)是總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)銜接的圖形工具,主要內(nèi)容有:模塊、模塊的控制關(guān)系、模塊的信息傳遞。3. 詳細(xì)設(shè)計(jì)基本任務(wù):為每個(gè)模塊進(jìn)行詳細(xì)的算法設(shè)計(jì);為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì);對數(shù)據(jù)庫進(jìn)行物理設(shè)計(jì);其他設(shè)計(jì);編寫詳細(xì)設(shè)計(jì)說明書(內(nèi)容包括引言、軟件結(jié)構(gòu)、模塊設(shè)計(jì)說明);評審(針對處理過程的算法和數(shù)據(jù)庫的物理結(jié)構(gòu))。4. 詳細(xì)設(shè)計(jì)目標(biāo)是邏輯上正確實(shí)現(xiàn)每個(gè)模塊的功能,還應(yīng)使設(shè)計(jì)出的處理過程通過結(jié)構(gòu)化程序設(shè)計(jì)清晰易讀,指導(dǎo)開發(fā)出易于理解、易于驗(yàn)證的程序。5. 結(jié)構(gòu)化程序設(shè)計(jì)是面向數(shù)據(jù)流的軟件總體設(shè)計(jì)方法,主要強(qiáng)調(diào)的是程序的易讀性?;疽c(diǎn)有:(1)采用自頂向下,逐步求精的程序設(shè)計(jì)方法。(2)使用三種基本控制結(jié)構(gòu)(共同點(diǎn)是只有單入口和單出口)構(gòu)造程序。(3)采用工作方式為主程序員組的組織形式,突出了主程序員的領(lǐng)導(dǎo)(包括一個(gè)住程序員、后備程序員、程序管理員,一些專家和其他技術(shù)人員)。6. 詳細(xì)設(shè)計(jì)的工具:圖形(程序流程圖、盒圖N-S圖、PAD圖、IPO圖)、表格(判定表)、語言(類程序設(shè)計(jì)語言PDL,也叫偽碼)。7. 流程圖,是描述程序邏輯結(jié)構(gòu)的工具。優(yōu)點(diǎn)是:直觀清晰、易使用。缺點(diǎn)是:(1)可隨心所欲畫出控制流程的流向,易造成非結(jié)構(gòu)化的程序結(jié)構(gòu)。(2)不易反映逐步求精過程,往往反映最后結(jié)果。(3)不易表示數(shù)據(jù)結(jié)構(gòu)。(4)對大型軟件過于瑣碎,不易閱讀和修改。結(jié)構(gòu)化流程圖由三種基本控制結(jié)構(gòu)順序組合和完整嵌套而成,不能相互交叉,克服流程圖最大缺陷。8. 問題分析圖(PAD圖),描述的是算法,是由左往右展開的二維樹形結(jié)構(gòu),控制流程為自上而下,從左到右執(zhí)行。優(yōu)點(diǎn)是:(1)清晰反映程序?qū)哟谓Y(jié)構(gòu)(圖中的豎線為程序的層次線)。(2)支持逐步求精設(shè)計(jì)方法。(3)易讀易寫,使用方便。(4)支持結(jié)構(gòu)化程序設(shè)計(jì)原理。(5)可自動(dòng)生成程序,由軟件工具自動(dòng)生成相應(yīng)源代碼。9. 類程序設(shè)計(jì)語言PDL,是描述模塊算法設(shè)計(jì)和處理細(xì)節(jié)的語言。分為內(nèi)外兩層,外層語法符合一般程序設(shè)計(jì)語言常用語法規(guī)則,內(nèi)層語法用簡單句子、短語、通用數(shù)學(xué)符號來描述程序應(yīng)執(zhí)行的功能??梢员硎镜某绦蚪Y(jié)構(gòu)有:順序結(jié)構(gòu)(采用自然語言描述)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、出口結(jié)構(gòu)、模塊定義和調(diào)用、數(shù)據(jù)定義、輸入/輸出。特點(diǎn):(1)所有關(guān)鍵字有固定語法,以便提供結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊特征。(2)描述處理過程的說明性語言沒有嚴(yán)格語法。(3)具有簡單或復(fù)雜的數(shù)據(jù)說明機(jī)制。(4)具有模塊定義和調(diào)用機(jī)制。 優(yōu)點(diǎn):(1)總體結(jié)構(gòu)和一般程序完全相同。(2)提供的機(jī)制比圖形全面,為保證詳細(xì)設(shè)計(jì)與編碼的質(zhì)量創(chuàng)造有利條件。(3)可作為注釋嵌入源程序中一起作為程序的文檔,并可同高級程序設(shè)計(jì)語言一樣進(jìn)行編輯、修改,有利于軟件維護(hù)。(4)可自動(dòng)生成程序代碼,提高軟件生產(chǎn)率。八、 Jackson方法1. Jackson方法是以Jackson結(jié)構(gòu)圖(上下層間是組成關(guān)系)為描述工具,用三種基本結(jié)構(gòu)來表示,是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。不僅可以表示程序結(jié)構(gòu),還可表示數(shù)據(jù)結(jié)構(gòu)。主要分為:l JSP:用于開發(fā)規(guī)模較小的數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)。定義一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的映射過程,根據(jù) 輸入、輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過程描述,即程序結(jié)構(gòu)。適用于詳細(xì)設(shè)計(jì)階段。l JSD:主要以活動(dòng)事件為中心,通過由一串活動(dòng)順序組合構(gòu)成進(jìn)程,建立系統(tǒng)模型,最后實(shí)現(xiàn)該 模型。2. Jackson特點(diǎn):能對結(jié)構(gòu)進(jìn)行自頂向下的分解,可表示層次結(jié)構(gòu);結(jié)構(gòu)易讀,形象直觀;既能表示數(shù)據(jù)結(jié)構(gòu)也能表示程序結(jié)構(gòu)等組成關(guān)系。3. Jackson設(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)和輸出結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元(對應(yīng)關(guān)系指數(shù)據(jù)單元在數(shù)據(jù)內(nèi)容、數(shù)量、順序上有直接的因果關(guān)系,重復(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)用偽碼寫出程序。 4. 在Jackson方法中,如果輸入數(shù)據(jù)和輸出數(shù)據(jù)結(jié)構(gòu)之間找不到對應(yīng)關(guān)系,稱為結(jié)構(gòu)沖突。解決方法:引入中間數(shù)據(jù)結(jié)構(gòu)或中間文件,將沖突部分分隔開來,建立多個(gè)程序結(jié)構(gòu),再利用中間文件將它們聯(lián)系起來,構(gòu)成一個(gè)系統(tǒng)的整體。第四章 面向?qū)ο蠓椒ㄒ弧?面向?qū)ο蠓椒▽W(xué)1. 傳統(tǒng)方法學(xué)的缺點(diǎn):生產(chǎn)效率低、不能滿足用戶需要、軟件復(fù)用程度低、軟件仍然很難維護(hù)。產(chǎn)生問題的原因:結(jié)構(gòu)化技術(shù)本身問題、預(yù)先定義的需求可能會(huì)過時(shí)、語言鴻溝、系統(tǒng)需求的模糊性。2. 面向?qū)ο蟮幕靖拍睿?對象:是問題域或?qū)崿F(xiàn)域中某些事物的一個(gè)抽象,反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮作用,是一組屬性和有權(quán)對這些屬性進(jìn)行操作的一組服務(wù)的封裝體。它是封裝的基本單位,也是類的實(shí)例化,具有很強(qiáng)的表達(dá)和描述能力。 類:是具有相同屬性和服務(wù)的一組對象的集合,為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)。是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。 繼承:特殊類的對象擁有其一般類的全部屬性和服務(wù),稱作特殊類對一般類的繼承。是子類自動(dòng)共享父類的屬性和操作的機(jī)制。 封裝:把對象的屬性服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。 消息:是對象間進(jìn)行通信的構(gòu)造。如通過執(zhí)行對象的操作改變對象的屬性。 連接:實(shí)例連接(反映對象間的靜態(tài)聯(lián)系)、消息連接(描述對象間的動(dòng)態(tài)聯(lián)系)描述對象間的關(guān)系。 多態(tài)性:指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性引用具有動(dòng)態(tài)類型(程序執(zhí)行期間在實(shí)例間進(jìn)行變化)和靜態(tài)類型(在程序上下文中由實(shí)體說明決定)。3. 面向?qū)ο蟪绦蛟O(shè)計(jì)語言和其他設(shè)計(jì)語言的主要差別是它具有繼承性。面向?qū)ο箝_發(fā)方法子概念和表示上的一致性保證了分析和設(shè)計(jì)的平滑過渡。一個(gè)面向?qū)ο笙到y(tǒng)的體系結(jié)構(gòu)通過它的成分對象和對象間的關(guān)系確定,具有設(shè)計(jì)穩(wěn)定的優(yōu)點(diǎn)。4. 面向?qū)ο蟮哪P头譃椋?對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu),是表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì)。描述工具是對象圖。是核心模型。建立模型時(shí)用到的符號:表示類的符號、表示對象的符號、表示繼承關(guān)系的符號、表示類和對象間其他關(guān)系的符號。對象建模過程:確定類、準(zhǔn)備數(shù)據(jù)字典、確定關(guān)聯(lián)、確定屬性、使用繼承來細(xì)化類、完善對象模型。 動(dòng)態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu),是表示瞬時(shí)的、行為化的系統(tǒng)的“控制”性質(zhì),把腳本表示成事件跟蹤表,其中對象為表中的列。使用狀態(tài)圖(描述類中某個(gè)對象的行為,反映了狀態(tài)和事件關(guān)系)做為描述工具,描述的系統(tǒng)屬性是觸發(fā)事件、事件序列、狀態(tài)、事件和狀態(tài)的組織。表示了對象的相互行為。 動(dòng)態(tài)建模過程:準(zhǔn)備腳本、確定事件、準(zhǔn)備事件跟蹤表、構(gòu)造狀態(tài)圖。 功能模型:描述系統(tǒng)功能,由多張數(shù)據(jù)流圖按層次結(jié)構(gòu)組成,指出發(fā)生了什么。說明了對象模型中操作和約束的含義、動(dòng)態(tài)模型中動(dòng)作的意義。 功能建模過程:確定輸入值和輸出值、建立數(shù)據(jù)流圖。5. 在面向?qū)ο蠓椒ㄖ校畔㈦[蔽通過對象的封裝性來實(shí)現(xiàn)。類結(jié)構(gòu)分離了接口和實(shí)現(xiàn),從而支持了信息隱蔽。6. 面向?qū)ο笥腥齻€(gè)基本要素:抽象、封裝性(信息隱蔽)、共享性。面向?qū)ο蠹夹g(shù)在三個(gè)級別上促進(jìn)了共享:同一個(gè)類中的共享(如同一類中有相同的數(shù)據(jù)結(jié)構(gòu))、在同一個(gè)應(yīng)用中的共享、在不同應(yīng)用中的共享(如庫類這種機(jī)制)。7. 在確定屬性時(shí),所有修飾性名詞詞組是侯選定屬性。在確定類時(shí),所有名詞是候選的類。常用動(dòng)詞或動(dòng)詞詞組來表示關(guān)聯(lián)。與時(shí)間聯(lián)系在一起的瞬時(shí)操作是動(dòng)作,有時(shí)間間隔的操作是活動(dòng)。8. 在類的層次結(jié)構(gòu)中,上層稱作父類或超類,下層成為子類。9. 面向?qū)ο蟮闹饕卣鳎簩ο笪┮恍裕▽ο蟊旧砦┮坏臉?biāo)識,通過這種標(biāo)識可找到相應(yīng)對象)、分類性(具有一致的數(shù)據(jù)結(jié)構(gòu)和行為的對象抽象成類)、繼承性、多態(tài)性。二、 面向?qū)ο蠓治?. 面向?qū)ο蠓治鼍褪浅槿『驼碛脩粜枨蟛⒔栴}域精確模型的過程。目的是對客觀世界的系統(tǒng)進(jìn)行建模。2. 面向?qū)ο蠓治鲋械亩x結(jié)構(gòu):一般-特殊結(jié)構(gòu):也稱分類結(jié)構(gòu),是“或”、“is a”的關(guān)系。整體-部分結(jié)構(gòu):也稱組裝結(jié)構(gòu),是“與”、“has a”的關(guān)系。3. 面向?qū)ο蠓治瞿P偷淖饔茫好鞔_問題要求,為用戶和開發(fā)人員提供明確需求、為用戶和開發(fā)人員提供一個(gè)協(xié)商基礎(chǔ)、作為后繼的設(shè)計(jì)和實(shí)現(xiàn)的框架。三、 面向?qū)ο笤O(shè)計(jì)1. 重用也叫再用或復(fù)用,指同一事物不作修改或稍加改動(dòng)就可多次重復(fù)使用。 軟件復(fù)用的范圍:數(shù)據(jù)復(fù)用、模塊復(fù)用、結(jié)構(gòu)復(fù)用、設(shè)計(jì)復(fù)用、規(guī)格說明復(fù)用。 軟件復(fù)用技術(shù):合成技術(shù)、生成技術(shù)、面向?qū)ο蟮能浖?fù)用技術(shù)。2. 面向?qū)ο笤O(shè)計(jì)分為:系統(tǒng)設(shè)計(jì):內(nèi)容包括:系統(tǒng)分解、確定并發(fā)性、處理及其任務(wù)分配、數(shù)據(jù)存儲管理、全局資源的處理、選擇軟件控制機(jī)制、人機(jī)交互接口設(shè)計(jì)。對象設(shè)計(jì):內(nèi)容包括:獲得操作、確定操作的目標(biāo)對象、算法設(shè)計(jì)、優(yōu)化設(shè)計(jì)、控制的實(shí)現(xiàn)、調(diào)整繼承、關(guān)聯(lián)的設(shè)計(jì)。3. 面向?qū)ο笤O(shè)計(jì)準(zhǔn)則:模塊化、抽象、信息隱蔽、低耦合、高內(nèi)聚。4. 面向?qū)ο笤O(shè)計(jì)中的三種內(nèi)聚:操作內(nèi)聚、類內(nèi)聚、一般-具體內(nèi)聚。5. 面向?qū)ο蟮拈_發(fā)方法:Booch方法(原是面向Ada語言的,并處于面向?qū)ο箝_發(fā)方法的奠基性地位)、Coad方法、OMT方法、OOSE方法。6. 面向程序設(shè)計(jì)中提高重用性的準(zhǔn)則:(1)提高方法的內(nèi)聚。(2)減小方法的規(guī)模。(3)保持方法的一致性。(4)把策略與實(shí)現(xiàn)分開。(5)全面覆蓋。(6)盡量不使用全局信息。7. 面向程序設(shè)計(jì)中提高擴(kuò)充性的準(zhǔn)則:(1)封裝實(shí)現(xiàn)策略。(2)不要用一個(gè)方法遍歷多條關(guān)聯(lián)鏈。(3)避免使用多分支語句。(4)精心確定公有方法。8. 面向程序設(shè)計(jì)中提高健壯性的準(zhǔn)則:(1)預(yù)防用戶的操作錯(cuò)誤。(2)檢查參數(shù)的合法性。(3)不要預(yù)先確定限制條件。(4)先測試后優(yōu)化。9. 保持設(shè)計(jì)結(jié)果清晰易讀的主要因素:(1)用詞一致。(2)使用已有的協(xié)議。(3)減少消息模式的數(shù)目。(4)避免模糊的定義。10. 面向?qū)ο筌浖臏y試分為算法層、類層、模塊層、系統(tǒng)層四個(gè)層次進(jìn)行。11. 面向?qū)ο笤O(shè)計(jì)的啟發(fā)規(guī)則:(1)設(shè)計(jì)結(jié)果清晰易懂。(2)一般-具體結(jié)構(gòu)的深度應(yīng)適當(dāng)。(3)設(shè)計(jì)簡單的類。(4)使用簡單協(xié)議。(5)使用簡單操作。(6)把設(shè)計(jì)變動(dòng)減到最小。 設(shè)計(jì)簡單的類應(yīng)注意:(1)避免包含過多的屬性。(2)有明確定義。(3)盡量簡化對象間的合作關(guān)系。(4)不要提供太多操作。 四、 形式化方法1. 形式化規(guī)約的目標(biāo)是無二義性、一致性和完整性。形式化規(guī)約語言由語法、語義、一組關(guān)系組成。集合論是維也納開發(fā)方法等形式化方法的基礎(chǔ)。語義指出語言如何表示系統(tǒng)需求。經(jīng)典的語義定義方法有:指稱語義、代數(shù)語義、操作語義方法。2. 有限狀態(tài)機(jī)是實(shí)時(shí)系統(tǒng)設(shè)計(jì)中的一種數(shù)學(xué)模型,由一個(gè)有限的狀態(tài)集合、一個(gè)有限的輸入集合、一個(gè)變遷函數(shù)組成。優(yōu)點(diǎn):簡單易用,狀態(tài)間的關(guān)系能直觀看到。缺點(diǎn):任何時(shí)刻系統(tǒng)只能有一個(gè)狀態(tài),無法表示并發(fā)性,不能描述異步并發(fā)系統(tǒng)。3. Petri網(wǎng)是在軟件分析中,用一種系統(tǒng)的數(shù)學(xué)和圖形的描述和分析的方法。使用圖形工具,可以表示系統(tǒng)結(jié)構(gòu)和動(dòng)態(tài)行為方面的信息。4. Petri網(wǎng)理論認(rèn)為,任何系統(tǒng)是由表示狀態(tài)的元素和表示狀態(tài)變化的元素組成。用位置表示狀態(tài)的元素,符號為“”。用轉(zhuǎn)移表示狀態(tài)變化的元素,符號為“”或 “|”。5. Petri網(wǎng)的行為特征分析方法有可覆蓋性樹、矩陣方程求解、分層或簡化三類。Petri網(wǎng)到程序結(jié)構(gòu)的轉(zhuǎn)換方法:流程圖方法、編程語言的方法、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。6. 凈室是一種以合理的成本開發(fā)高質(zhì)量軟件的基于理論、面向工作組的方法。凈室過程強(qiáng)調(diào)規(guī)約和設(shè)計(jì)上的嚴(yán)格性,凈室軟件工程使用盒結(jié)構(gòu)規(guī)約的方法來遵從操作分析原則。7. 凈室方法未廣泛使用的原因:(1)凈室方法太理論、太數(shù)學(xué)化,一直難以在真實(shí)的軟件開發(fā)中使用。(2)不需要進(jìn)行單元測試,與大多數(shù)軟件開發(fā)方式背離。(3)軟件開發(fā)產(chǎn)業(yè)的成熟度。8. 客戶/服務(wù)器模式的系統(tǒng)結(jié)構(gòu)中的服務(wù)器:文件服務(wù)器、數(shù)據(jù)庫服務(wù)器、事務(wù)服務(wù)器、組件服務(wù)器。五、 面向?qū)ο蠓椒?UML1. UML是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語言,統(tǒng)一了Booch方法、OMT方法、OOSE方法的表示方法,融入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設(shè)計(jì),還支持從需求分析開始的軟件開發(fā)全過程。2. 為表達(dá)客觀事物之間的關(guān)系,UML給出了以下基本術(shù)語: 關(guān)聯(lián):是類目之間的一種結(jié)構(gòu)關(guān)系,是對一組具有相同結(jié)構(gòu)、相同鏈的描述。其中鏈?zhǔn)菍ο笾g具有特定語義關(guān)系的抽象。 泛化:是一般性類目(或稱超類或父類)和它的較為特殊型類目(稱為子類)之間的一種關(guān)系。 細(xì)化:是類目間的語義關(guān)系,其中一個(gè)類目規(guī)約了保證另一個(gè)類目執(zhí)行的契約。依賴:是一種使用關(guān)系,用于描述一個(gè)類目使用另一類目的信息和服務(wù)。它們的關(guān)系:關(guān)聯(lián)、泛化和細(xì)化都是一類特定的依賴。3. 為表達(dá)客觀事物,UML給出的基本術(shù)語:類與對象、接口、協(xié)作、用況、主動(dòng)類、構(gòu)件、制品、節(jié)點(diǎn)。4. 聚合是滿足“一個(gè)類是另一個(gè)類的一部分”這一性質(zhì)的關(guān)聯(lián),是關(guān)聯(lián)的一種特殊形式。5. 對象由對象名、對象屬性和對象操作組成,用具有3個(gè)欄目的矩形表示,上欄目表示對象名(加下劃線)、中間欄目表示屬性、下欄目表示操作。6. 類圖的構(gòu)成成分:類、接口、關(guān)聯(lián)、泛化和依賴關(guān)系等。7. 狀態(tài)圖的構(gòu)成成分:狀態(tài)、轉(zhuǎn)移及其相關(guān)的事件和動(dòng)作、消息等。8. 順序圖的構(gòu)成成分:參與交互的對象、基本的交互方式(同步和異步)以及消息等。六、 面向?qū)ο蠓椒?RUP1. RUP的特點(diǎn):(1)以用況為驅(qū)動(dòng)。(2)以體系結(jié)構(gòu)為中心。(3)迭代、增量式開發(fā)。第五章 軟件測試一、 軟件質(zhì)量與質(zhì)量保證1. 軟件質(zhì)量定義即3個(gè)一致性:與所確定的功能和性能需求、與所成文的開發(fā)標(biāo)準(zhǔn)、與所有專業(yè)開發(fā)的軟件所期望的隱含特性的一致性。2 影響軟件質(zhì)量的因素:可直接度量因素和只能間接度量的因素。3. 軟件質(zhì)量保證是指確定、達(dá)到、維護(hù)所需的軟件質(zhì)量而進(jìn)行的所有有計(jì)劃、有系統(tǒng)的管理活動(dòng)。從產(chǎn)品計(jì)劃和設(shè)計(jì)開始(必須加以保證),直到投入使用和售后服務(wù)的軟件生存期的每一階段的每一步驟。其工作重點(diǎn)放在過程管理上,對制造的每一道工序進(jìn)行質(zhì)量控制。 為提高軟件質(zhì)量和效率,主要任務(wù):力爭不重復(fù)勞動(dòng)、掌握開發(fā)新軟件方法、用戶要求定義、組織外部力量協(xié)助排除無效勞動(dòng)、發(fā)揮每個(gè)開發(fā)者的能力、提高軟件開發(fā)的工程能力、提高計(jì)劃和管理質(zhì)量。4. 質(zhì)量保證策略發(fā)展的三個(gè)時(shí)期:以檢測為重、以過程管理為重、以新產(chǎn)品開發(fā)為重。5. 質(zhì)量度量模型:McCall質(zhì)量度量模型、ISO質(zhì)量度量模型(分為質(zhì)量特征層、質(zhì)量子特征層、度量層)。 McCall質(zhì)量度量模型有11個(gè)特性:面向軟件產(chǎn)品操作的特性有:正確性、可靠性、效率、可用性。 面向軟件產(chǎn)品修改的特性有:可維護(hù)性、可測量性、適應(yīng)性。 面向軟件產(chǎn)品適應(yīng)的特性有:可移植性、可重用性、可互操作性。 其中,正確性是指軟件滿足設(shè)計(jì)規(guī)格說明及用戶預(yù)期目標(biāo)的程度??煽啃允侵杠浖丛O(shè)計(jì)要求,在規(guī)定時(shí)間和條件下不出故障,持續(xù)運(yùn)行的時(shí)間。完整性是指對非授權(quán)人訪問軟件或數(shù)據(jù)行為的控制程度??捎眯允侵赣脩羰煜ぁ⑹褂眉皽?zhǔn)備輸入和解釋輸出所需工作量的大小。6. 度量軟件復(fù)雜度使用代碼行度量法和基于程序控制流的McCabe度量法。McCabe

溫馨提示

  • 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)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論