第一篇:軟件工程復(fù)習(xí)重點總結(jié)
第一章
軟件過程:需求設(shè)計實現(xiàn)發(fā)布
軟件過程三要素: 過程+方法+工具
瀑布rup scrum Iconix
Scrum是一種迭代式增量軟件開發(fā)過程,通常用于敏捷軟件開發(fā)。Product Owner、Scrum Master、Team Product Backlog、SprintBacklog、Burndown Chart、Sprint、Sprint Planning Meeting、Daily Standup Meeting、Review Meeting、Retrospective Meeting ICONIX軟件開發(fā)過程
愿景、業(yè)務(wù)建模、需求分析、健壯性分析、系統(tǒng)設(shè)計??
思想是重點;過程是方式;方法和工具是載體
第二章
敏捷開發(fā)是一種以人為核心、迭代、循序漸進的開發(fā)方法。敏
捷是一種思想?Scrum是一個框架
敏捷開發(fā)過程知多少?
?Scrum、?極限編程(XP)、?Crystal Methods(水晶方法族)
?特性驅(qū)動開發(fā)(FDD)
?動態(tài)系統(tǒng)開發(fā)(DSDM)
?輕量型統(tǒng)一過程(RUP)
調(diào)查結(jié)果:敏捷開發(fā)方法—Scrum最流行!
Scrum的適用場景
?7人,+or-2
?偏小一些會更適合?最好能坐在一起
?客戶參不度高
?快速移動互聯(lián)網(wǎng)項目
?自主性研發(fā)的產(chǎn)品
第三章
軟件項目是為了改善某個組織的某些方面
–老大就是要改善的組織中最有權(quán)力的干系人。
用戶建模四步曲列出盡可能多的用戶識別關(guān)鍵用戶(購買決策者/主要使用者)分類,合并次要用戶
4添加虛擬和極端用戶
第四章
?產(chǎn)品backlog是Scrum的核心
產(chǎn)品功能列表格式
?ID(標(biāo)示符)
–統(tǒng)一標(biāo)識符
?Name(標(biāo)題)
–簡短的、描述性的故事名
?Story(故事)
–故事內(nèi)容描述
?Priority(重要性)
–產(chǎn)品負責(zé)人評出一個數(shù)值,指示這個故事有多重要
?Initial estimate(初始估計)
–團隊的初步估算,表示不其他故事相比,完成該故事所需的工作量
?How to demo(如何做演示)
–它大略描述了這個故事應(yīng)該如何在sprint 演示上進行示范
?Notes(注解)
–相關(guān)信息、解釋說明和對其它資料的引用等等
產(chǎn)品功能列表由誰來寫?
?思考:由誰來寫?
–主要是Product Owner
–Team也有權(quán)利,但最終由PO進行取舍。
用戶故事是一種敏捷的需求挖掘方式,其側(cè)重點不是將需求書寫出來,而是將需求討論出來。
按“作為一個??,可以??,以便??”樣式和思路寫成的用戶需求,就是用戶故事。
用戶故事的三個變量
范圍,重要性,估算
好故事的準(zhǔn)則
?獨立的(Independ)
?可討論的(Negotiable)
?對用戶戒客戶有價值的(Valuable)
?可估計的(Estimatable)
?小的(Small)
?可測試的(Testable)
Sprint會議如何迚行
–確定Sprint目標(biāo)及長度
–講解Story、估算時間、任務(wù)分解
–決定 sprint 要包含的故事
–一些其他問題
第六章
什么是界面原型
?界面原型指使用工具根據(jù)客戶需求及軟件分析人員的理解,將頭腦中的界面快速的反映到介質(zhì)上。
界面原型的目的?盡早驗證需求
?盡早明確不確定性的因素
?方便溝通交流
?為后續(xù)界面設(shè)計提供基礎(chǔ)
第八章
ICONIX過程
?ICONIX過程的規(guī)模介于RUP和XP之間
?適合中小型的、需求相對明確的軟件項目
?ICONIX核心思想
?開源!節(jié)流!
ICONIX軟件過程是用例驅(qū)動的軟件過程。
ICONIX過程中的第一步:明確愿景
?愿景是確保項目成功的第一步;
?愿景必須來自老大;
?愿景必須是可度量。
如何獲取軟件項目的愿景
?獲取軟件項目愿景的三步曲:
?第一步:找到軟件項目的“老大”;
?第二步:得到“老大”對項目的期望(愿景);
?第三步:描述出愿景的度量指標(biāo);
要點:系統(tǒng)要改善哪個組織的流程?
老大就是要改善的組織中最有權(quán)力的干系人
第九章
業(yè)務(wù)建模的目的:從組織的角度來定位系統(tǒng)的價值。
業(yè)務(wù)建模
?業(yè)務(wù)建模的目的是把視角從系統(tǒng)轉(zhuǎn)向組織,站在客戶角度看問題。
?業(yè)務(wù)用例是對組織為外部業(yè)務(wù)執(zhí)行者提供的價值的建模。
?現(xiàn)狀業(yè)務(wù)序列圖是對組織價值內(nèi)部實現(xiàn)流程(業(yè)務(wù)工人與業(yè)務(wù)實體的協(xié)作)的建模 ?改迚業(yè)務(wù)序列圖是對新系統(tǒng)為組織提供的改良的建模。
業(yè)務(wù)建模的步驟:
1.明確我們?yōu)檎l服務(wù)(選定愿景要改進的組織)。
2.要改進的組織是什么現(xiàn)狀(業(yè)務(wù)用例圖、現(xiàn)狀業(yè)務(wù)序列圖)。
3.我們?nèi)绾胃倪M(改進業(yè)務(wù)序列圖)。
第十章
域建模的步驟
第一步:提取名詞或名詞短語
第二步:排除重復(fù)、相似
第三步:排除系統(tǒng)范圍外
第四步:畫出第一版域模型圖
第五步:整理第一版域模型
域模型之間的關(guān)系
?泛化[Generalization],一般元素和特殊元素的關(guān)系。
?關(guān)聯(lián)[Association],兩個類乊間存在著某種語義上的聯(lián)系。
系統(tǒng)需求分析的目的是把視角轉(zhuǎn)向新系統(tǒng),站在最織
用戶(及其它干系人)的角度看問題。
?系統(tǒng)用例是對(新)系統(tǒng)為系統(tǒng)執(zhí)行者提供的價值的建模
系統(tǒng)用例建模步驟
1.繪制系統(tǒng)用例圖
2.編寫系統(tǒng)用例描述
3.更新域模型
繪制系統(tǒng)用例圖
1.確定系統(tǒng)邊界
2.識別系統(tǒng)執(zhí)行者
3.識別系統(tǒng)用例
4.確定用例間的關(guān)系
用例描述的作用
?用例圖描述總體,用例文檔描述紳節(jié)。
?每個用例必須對應(yīng)有用例描述。
用例描述的基本組成?干系人利益
?基本路徑
?擴展路徑
?業(yè)務(wù)觃則
軟件產(chǎn)品的典型非功能性需求(RUPS)
?可靠性[Reliability]。
?可用性[Usability]。
?性能[Performance]。
?可支持性[Supportability]。
需求獲取的方法
?研究文檔。
?問卷調(diào)查。
?訪談。
?觀察。
?研究競爭對手。
需求分析結(jié)果復(fù)核
?形式:面對面會議。
?參會人:甲乙雙方在需求分析階段的主要參與者。
?被審材料:域模型、用例圖、用例描述、非功能性需求;
?過程:需求分析師主持,最終需求分析成果,所有參與者交流討論,達成統(tǒng)一理解和確認。?結(jié)論:所有參與者簽字確認。(當(dāng)然,也有可能是未達成共識,需要返工。)
?注意:后續(xù)的工作基本不需要用戶的參不了。
第十一章
健壯性分析的步驟
第一步:創(chuàng)建一個空的健壯性圖。
第三步:從基本路徑的第一句話開始畫健壯性圖。
第二步:直接將用例文本粘貼到圖上(基本路徑和擴展路徑)。
第四步:貫串整個用例基本路徑,一次一個句子,畫執(zhí)行者、適當(dāng)?shù)倪吔鐚ο蠛蛯嶓w對象以及控制器,和各元素乊間的連線。
第五步:將每一個擴展路徑畫在健壯性圖上,并以紅色標(biāo)示出。
在用例驅(qū)動的開發(fā)模式中,用例的準(zhǔn)確完整性是關(guān)鍵;
?健壯性分析技術(shù)兩個主要的價值:其一幫助完善用例分析結(jié)果;其二完善域模型,做為需求分析走向系統(tǒng)設(shè)計的過度技術(shù);
?丌要花費太多的精力和時間在本階段,本階段的成果也僅起到過度作用,不納入最終文檔; 第十二章
關(guān)鍵設(shè)計是功能性需求的設(shè)計,成果為類圖和序列圖;
?關(guān)鍵設(shè)計還沒考慮真實實現(xiàn)的平臺相關(guān)因素,因此不能基于這個階段的設(shè)計成果開始編碼; ?關(guān)鍵設(shè)計的方法就是在域模型、用例描述和健壯性分析的基礎(chǔ)上,迭代生成類圖和序列圖;
關(guān)鍵設(shè)計的步驟
?第一步:將現(xiàn)有的域模型直接作為第一版靜態(tài)類模型;
?第二步:基于用例描述和健壯性分析結(jié)果,畫出每個用例的序列圖;
?健壯性圖中的控制類會轉(zhuǎn)化為方法;
?如果也轉(zhuǎn)化為控制類,那么就添加到類圖中(注意:邊界類丌添加到類圖中); ?第三步:整理靜態(tài)類圖和序列圖;
?第四步:關(guān)鍵設(shè)計復(fù)核,迭代更新用例圖、類圖和序列圖;
高內(nèi)聚、低耦合。是判斷設(shè)計好壞的標(biāo)準(zhǔn)。
關(guān)鍵設(shè)計復(fù)核的指導(dǎo)建議
?確保關(guān)鍵設(shè)計的“如何做”和需求階段的“做什么”匹配。也就是說每個用例都要和序列圖匹配,包含了用例的基本流程和分支流程。
?復(fù)核設(shè)計的品質(zhì)。應(yīng)該至少有一個設(shè)計與家在場。
?檢查消息的連貫性。檢查時序圖上消息箭頭的指向,有時我們會發(fā)現(xiàn)對象乊間缺少消息而造成跳躍,我們必須消除這些邏輯跳躍。
?確保方法分配給了適當(dāng)?shù)念悾愐晥D中的每一個類擁有適當(dāng)?shù)姆椒ê蛯傩浴?/p>
第二篇:武漢大學(xué)軟件工程復(fù)習(xí)重點總結(jié)
軟件工程復(fù)習(xí)
一、概論
1、軟件的組成:程序+文檔+數(shù)據(jù);
軟件的特點:更依賴于人、開發(fā)成本進度難以估計、正確性難保證、維護困難、不磨損老化、可長期使用;
軟件開發(fā)的三個時期:程序設(shè)計語言興起時期、結(jié)構(gòu)化程序設(shè)計時期、軟件工程與軟件開發(fā)環(huán)境時期;
2、軟件危機的表現(xiàn):難以控制開發(fā)進度、軟件工作量難以估計、軟件修改維護困難,原因:需求問題、管理問題、方法工具問題、局限性;
3、軟件工程是:(1)把系統(tǒng)化的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運行和維護過程,也就是把工程化應(yīng)用于軟件中;(2)研究(1)中提到的途徑;
軟件工程三要素:以質(zhì)量保證為基礎(chǔ)的過程、方法、工具;
4、軟件生存的三個時期:定義時期、開發(fā)時期、使用和維護時期;
軟件生存的六個階段:軟件計劃、需求分析、軟件設(shè)計、實現(xiàn)編碼、測試、維護;
5、瀑布模型
基本思想:分而治之
優(yōu)點:規(guī)范管理開發(fā)過程、文檔驅(qū)動
缺點:初期系統(tǒng)的需求難以完全確定、文檔驅(qū)動、周期長 V型模型:瀑布模型+質(zhì)量控制
適用范圍:結(jié)構(gòu)化方法、面向過程的軟件開發(fā)方法,需求變化少,開發(fā)人員熟悉應(yīng)用領(lǐng)域,低風(fēng)險項目,使用環(huán)境穩(wěn)定
6、原型模型
針對軟件開發(fā)初期需求難以確定,采用快速原型法 基本思想:快速建立原型,完善用戶需求 優(yōu)點:用戶參與、快速
缺點:快速、對開發(fā)環(huán)境要求高
適用范圍:已有產(chǎn)品、有快速原型開發(fā)工具、進行產(chǎn)品移植或升級
二、軟件質(zhì)量評價
1、良軟件結(jié)構(gòu):具有層次性,無回路塊調(diào)用的軟件結(jié)構(gòu)
2、模塊獨立性測量
耦合:零耦合、數(shù)據(jù)耦合、控制耦合、公共環(huán)境耦合、內(nèi)容耦合,盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境變量耦合的范圍,完全不用內(nèi)容耦合; 內(nèi)聚:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚,內(nèi)聚更重要
3、軟件質(zhì)量定性評價
用戶角度:達到需求、界面友好、簡單易學(xué)
開發(fā)人員角度:良結(jié)構(gòu)、易測試、易維護、可移植
4、軟件質(zhì)量定量評價——軟件度量:軟件復(fù)雜性度量(規(guī)模、文本復(fù)雜性、控制結(jié)構(gòu)的復(fù)雜性)、軟件可靠性度量(系統(tǒng)故障率、軟件修復(fù)與軟件有效性、軟件可靠性估算)
5、軟件質(zhì)量好的宏觀標(biāo)準(zhǔn):可靠性、良軟件結(jié)構(gòu)、文檔齊全
三、軟件計劃
1、任務(wù):弄清開發(fā)項目的性質(zhì)、目標(biāo)、規(guī)模、可行性、成本、風(fēng)險分析、開發(fā)計劃等,并編寫項目任務(wù)說明書(項目計劃書、可行性分析報告)
2、可行性研究的內(nèi)容:經(jīng)濟可行性(成本效益分析)、技術(shù)可行性(風(fēng)險分析、資源分析、技術(shù)分析)、法律可行性、開發(fā)方案的選擇
3、軟件項目的量化估算:成本估算&工作量估算(代碼行成本估算、階段成本估算)、工程進度安排(甘特圖、任務(wù)網(wǎng)絡(luò)圖)
四、軟件需求分析
1、需求分析的任務(wù):問題分析、需求描述、需求評審
2、初步獲取需求技術(shù):調(diào)研、閱讀相關(guān)資料、市場問卷調(diào)查、同類產(chǎn)品用戶手冊等
3、需求內(nèi)容:功能性需求、非功能性需求(技術(shù)需求)
4、需求建模方法
面向數(shù)據(jù)流的分析方法:結(jié)構(gòu)化方法建模、實體關(guān)系圖、數(shù)據(jù)流圖、狀態(tài)轉(zhuǎn)換圖
面向?qū)ο蟮姆治龇椒?面向數(shù)據(jù)結(jié)構(gòu)的分析方法
五、傳統(tǒng)軟件設(shè)計方法
1、設(shè)計啟發(fā)規(guī)則:提高模塊獨立性(水平劃分、垂直劃分)、模塊規(guī)模適中、深度廣度扇入扇出適當(dāng)、作用域在控制域內(nèi)、降低接口的復(fù)雜程度、單出單入避免內(nèi)容耦合、模塊功能可預(yù)測
2、表示軟件結(jié)構(gòu)的圖形工具:層次圖(調(diào)用關(guān)系)、HIPO圖(H圖+IPO圖+IPO表)、結(jié)構(gòu)圖
3、軟件系統(tǒng)設(shè)計技術(shù)
面向數(shù)據(jù)流的設(shè)計方法:DFD的類型決定映射方法(變換流、事務(wù)流、混合型)SA/SD方法優(yōu)點:自頂向下,逐步求精,各模塊可單獨設(shè)計、編碼、測試、修改 SA/SD方法缺點:紙上設(shè)計,長時間偏離軟件實體、開發(fā)周期長、剝離了數(shù)據(jù)/功能的關(guān)系、頂在何方,下到何處
面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法:Jackson方法、Warnier方法 原型法
4、詳細設(shè)計
設(shè)計表示方法:流程圖、PAD、偽碼 流程圖:
5、結(jié)構(gòu)化程序設(shè)計(SP):避免用GOTO語句、自頂向下的程序設(shè)計、一種組織和編程方法、主要作用是使程序正確性的證明易于實現(xiàn)、討論如何將大規(guī)模和復(fù)雜的流程圖轉(zhuǎn)換為一種標(biāo)準(zhǔn)形式,能用幾種標(biāo)準(zhǔn)的控制結(jié)構(gòu)通過嵌套來表示。
6、結(jié)構(gòu)化定理:任何正規(guī)程序都可語義等價于由基集合{順序、條件、循環(huán)}通過嵌套復(fù)合成結(jié)構(gòu)化程序。
正規(guī)程序:有一個入口點和出口點、程序中的任何一個結(jié)點都可以找一條從入口點經(jīng)過該點到出口點的路徑。
六、軟件編碼
1、結(jié)構(gòu)化程序設(shè)計的觀點首要是強調(diào)好的結(jié)構(gòu)而不是效率,它的目的在于編寫結(jié)構(gòu)清晰、易于理解,也易于驗證的程序
七、軟件測試
1、程序正確性證明
2、測試:也是軟件的“建設(shè)性”,為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程,證明程序錯誤,暴露錯誤;分為動態(tài)測試和靜態(tài)測試。
3、動態(tài)測試分為黑盒測試(功能測試法)和白盒測試
黑盒測試方案:等價劃分法、邊界值分析法、錯誤推測法
等價劃分的評價:選用等價類中的任意值/典型值作為用例、沒有選用某些高效率的測試方案;
邊界值分析的評價:邊界值易發(fā)現(xiàn)錯誤,考慮輸出等價類,聯(lián)合使用等價劃分和邊界值分析法
白盒測試方案:語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋
4、軟件測試的步驟與策略 單元測試:模塊、白盒法
集成測試:接口、多以黑盒為主,輔以白盒
增式測試法:
自頂向下集成,深度優(yōu)先策略、寬度優(yōu)先策略
優(yōu)勢:盡早測試主要控制、關(guān)鍵選擇(上層)、盡早實現(xiàn)軟件的完整
功能并驗證、無需driver 缺點:需編寫stub、底層關(guān)鍵模塊測試晚、軟件結(jié)構(gòu)中沒有重要的數(shù)據(jù)自下往上流、并行測試困難 自底向上集成,優(yōu)勢:無需stub、可盡早并行測試、可盡早發(fā)現(xiàn)底層關(guān)鍵模塊的錯誤、易建立測試條件和判定測試結(jié)果
缺點:需編寫driver、接口出錯發(fā)現(xiàn)較遲、系統(tǒng)輪廓形成較晚 混合法
確認測試:驗證軟件的有效性、以用戶為主或用戶積極參與、黑盒法
系統(tǒng)測試:軟件作為計算機系統(tǒng)的一部分,與硬件、外設(shè)等其它系統(tǒng)結(jié)合起來,對計算機系統(tǒng)進行一系列的集成測試和確認測試
5、面向?qū)ο蟮能浖y試:不能孤立測試單個操作,把操作作為類的一部分來測試(不能再‘真空’中孤立地進行測試操作,有必要在每個子類的語境中測試繼承的操作)、OOM易于測試與糾錯
八、軟件維護
1、軟件維護的類型:校正性維護/糾錯性維護、適應(yīng)性維護、完善性維護、預(yù)防性維護
2、提高可維護性的措施
需求分析:清晰、易讀、結(jié)構(gòu)好——易修改
設(shè)計:結(jié)構(gòu)層次清晰、獨立性強——修改局部化、靈活的數(shù)據(jù)邏輯結(jié)構(gòu)——適應(yīng)處理的變化
編碼:編碼規(guī)則、風(fēng)格,SP,通用性高的PL 測試:測試充分 文檔:
3、維護的副作用:修改軟件后導(dǎo)致新錯誤的發(fā)生
編碼的副作用——嚴格執(zhí)行回歸測試、數(shù)據(jù)的副作用——完善的設(shè)計文檔資料、文檔資料的副作用——對整個軟件配置進行評審
九、軟件管理
1、軟件管理的內(nèi)容:開發(fā)計劃與進度管理、成本估算與控制、人員管理與組織管理、質(zhì)量管理、文檔管理
2、軟件管理的原則:軟件生存期、按階段確認、質(zhì)量檢查、自頂向下SP/OOP、職責(zé)分明、人員少而精、不斷充實
3、軟件管理的特點:知識密集,非實物性、單品生產(chǎn),開發(fā)過程不確定、開發(fā)周期長、內(nèi)容復(fù)雜,正確性難保證、勞動密集,自動化程度低、軟件用法繁瑣,維護困難,費用高
十、軟件開發(fā)環(huán)境的基本概念
1、SDE的目標(biāo):支持軟件生產(chǎn)的全生命周期、支持大型軟件項目、支持基本語言、支持配置管理
2、SDE的特征:整體性、開放性、移植性、堅定性、3、SDE的基本組成:中心信息庫、接口界面、工具組,三級結(jié)構(gòu)——核心級、基本級、應(yīng)用級,
第三篇:軟件工程重點總結(jié)
1、什么是軟件危機?
軟件危機泛指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題。
2、軟件危機的主要表現(xiàn)
(1)對軟件開發(fā)成本和進度的估計常常很不準(zhǔn)確
(2)用戶對“已完成的”軟件系統(tǒng)不滿意現(xiàn)象經(jīng)常發(fā)生
(3)軟件產(chǎn)品質(zhì)量往往靠不住
(4)軟件往往是不可維護的(5)軟件通常沒有適當(dāng)?shù)奈臋n資料
(6)軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升
(7)軟件開發(fā)生產(chǎn)效率提高的速度,遠遠跟不上計算機應(yīng)用迅速普及深入的趨勢
3、軟件危機產(chǎn)生的原因
(1)來自軟件自身的特點
是軟件系統(tǒng)的邏輯部件,缺乏可見性,管理和控制軟件開發(fā)過程相當(dāng)困難;規(guī)模龐大、復(fù)雜,修改、維護困難。
(2)軟件開發(fā)與維護的方法不當(dāng)
忽視需求分析;認為軟件開發(fā)等于程序編寫;輕視軟件維護。
4、如何消除軟件危機?
(1)對計算機軟件有一個正確的認識(軟件≠程序)
(2)必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目
(3)推廣使用在實踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法
(4)開發(fā)和使用更好的軟件工具
5、面向?qū)ο蟮娜N模型:對象模型 動態(tài)模型 功能模型 P2166、模塊獨立性的兩個標(biāo)準(zhǔn):耦合 內(nèi)聚 P977、軟件測試方法:黑盒測試 白盒測試 P1518、軟件調(diào)試的途徑:蠻干法 回溯法 原因排除法 P1789、可行性研究:確定問題是否有行得通的解決辦法 P3510、需求分析:準(zhǔn)確地回答“系統(tǒng)必須干什么”這個問題 P5511、軟件成分的重用級別:代碼重用 設(shè)計結(jié)果重用 分析結(jié)果重用
可被重用的軟件成分有:項目計劃,成本估計,體系結(jié)構(gòu),需求模型和規(guī)格說明,設(shè)計,源代碼,用戶文檔和技術(shù)文檔,用戶界面,數(shù)據(jù),測試用例。
12、軟件可靠性的定義:軟件在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功地運行的概率。
軟件可用性的定義:程序在給定的時間點,按照規(guī)格說明書的規(guī)定,成功地運行的概率??煽啃耘c可用性之間的主要差別是,可靠性意味著在0到t這段時間內(nèi)系統(tǒng)沒有失效,而可用性只意味著在時刻t,系統(tǒng)是正常運行的。P17913、白盒測試:邏輯覆蓋 控制結(jié)構(gòu)測試 P162
黑盒測試:等價劃分 邊界值分析 調(diào)試 P171
環(huán)形復(fù)雜度的計算:復(fù)雜度=邊數(shù)-點數(shù)+2P13714、面向?qū)ο蟮?個子模式:對象模型 動態(tài)模型 功能模型 P232
對象模型的5個層次:主題層 類與對象層 結(jié)構(gòu)層 屬性層 服務(wù)層 P23215、軟件定義階段干什么事:確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;導(dǎo)
出實現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計完成該工程需要的資源和成本,并制定工程進度表。
16、類和對象的關(guān)系:類是具有相同數(shù)據(jù)和相同操作的一組相似對象的定義,也就是說,類
是對具有相同屬性和行為的一個或多個對象的描述。類是支持繼承的抽象數(shù)據(jù)類型,而對象就是類的實例。P21117、UML有哪些圖? P2171、用例圖:展示系統(tǒng)外部的各類執(zhí)行者與系統(tǒng)提供的各種用例之間的關(guān)系
2、類圖:展示系統(tǒng)中類的靜態(tài)結(jié)構(gòu)
3、對象圖:是類圖的一種實例化圖
4、狀態(tài)圖:描述一類對象具有的所有可能的狀態(tài)及其轉(zhuǎn)移關(guān)系
5、時序圖:展示對象之間的一種動態(tài)協(xié)作關(guān)系
6、合作圖:從另一個角度展示對象之間的動態(tài)協(xié)作關(guān)系
7、活動圖:展示系統(tǒng)中各種活動的執(zhí)行流程
8、構(gòu)件圖:展示程序代碼的物理結(jié)構(gòu)
9、配置圖:展示軟件在硬件環(huán)境中的配置關(guān)系
18、能力成熟度模型(CMM):初始級 可重復(fù)級 已定義級 已管理級 優(yōu)化級 P31119、什么是軟件生命周期模型?試比較瀑布模型、快速原型模型、增量模型和螺旋模型的優(yōu)
缺點,說明每種模型的適用范圍。P33習(xí)題1.720、軟件的可維護性定義:維護人員理解、改正、改動或改進這個軟件的難易程度。決定可維護性的因素:可理解性 可測試性 可修改性 可移植性 可重用性。
文檔是影響可維護性的決定性因素。P19521、如何評價軟件規(guī)格說明書?
從四個方面:一致性 完整性 現(xiàn)實性 有效性 P7022、層次圖 P10223、深度:軟件結(jié)構(gòu)中控制的層數(shù) P100
寬度:軟件結(jié)構(gòu)中同一個層次上的總數(shù)的最大值
扇出:一個模塊直接控制(調(diào)用)的模塊數(shù)目
散入:一個模塊被多少個上級模塊直接調(diào)用
24、面向數(shù)據(jù)流的設(shè)計方法 P10425、類構(gòu)件的重用方式:實例重用 繼承重用 多態(tài)重用
1.什么是軟件工程?軟件工程和計算機科學(xué)有何區(qū)別?
軟件工程是指導(dǎo)計算機軟件開發(fā)和維護的一門工程學(xué)科。
計算機科學(xué)研究的是構(gòu)成計算機和軟件系統(tǒng)基礎(chǔ)的有關(guān)理論和方法,而軟件工程則是研究軟件制作中的實際問題。
2、流程圖與數(shù)據(jù)流圖有什么主要區(qū)別?
(1)數(shù)據(jù)流圖(date flow diagram , DFD),是SA方法中用于表示系統(tǒng)邏輯模型的一種工具,它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型,是從數(shù)據(jù)的角度來描述一個系統(tǒng)的;而流程圖則是從對數(shù)據(jù)加工的角度來描述系統(tǒng)的;
(2)數(shù)據(jù)流圖中的箭頭是數(shù)據(jù)流,而流程圖中的箭頭則是控制流,它表達的是程序執(zhí)行的次序;
(3)數(shù)據(jù)流圖適合于宏觀地分析一個組織業(yè)務(wù)概況,而程序流程圖只適合于描述系統(tǒng)中某個加工的執(zhí)行細節(jié)。
(4)數(shù)據(jù)流程圖應(yīng)該重點描述了數(shù)據(jù)加工的過程,主要是模塊內(nèi)部,數(shù)據(jù)流圖則是描述模塊之間的關(guān)系。
3.軟件需求分析的任務(wù)是什么?有哪些主要步驟?
需求分析的基本任務(wù)是深入描述軟件的功能和性能、確定軟件設(shè)計的約束和軟件同其它系統(tǒng)元素的接口細節(jié)、定義軟件的其它有效性需求,總之,需求分析的任務(wù)就是借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)的 “做什么” 的問題。
主要步驟:
1.問題識別
(1)功能需求:明確所開發(fā)的軟件必須具備什么樣的功能。
(2)性能需求:明確待開發(fā)的軟件的技術(shù)性能指標(biāo)。
(3)環(huán)境需求:明確軟件運行時所需要的軟、硬件的要求。
(4)用戶界面需求:明確人機交互方式、輸入輸出數(shù)據(jù)格式。
2.分析與綜合,導(dǎo)出軟件的邏輯模型
分析人員對獲取的需求,進行一致性的分析檢查,在分析、綜合中逐步細化軟件功能,劃分成各個子功能。用圖文結(jié)合的形式,建立起新系統(tǒng)的邏輯模型。
3.編寫文檔
(1)編寫“需求規(guī)格說明書”,把雙方共同的理解與分析結(jié)果用規(guī)范的方式描述出來,作為今后各項工作的基礎(chǔ)。
(2)編寫初步用戶使用手冊,著重反映被開發(fā)軟件的用戶功能界面和用戶使用的具體要求,用戶手冊能強制分析人員從用戶使用的觀點考慮軟件。
(3)編寫確認測試計劃,作為今后確認和驗收的依據(jù)。
(4)修改完善軟件開發(fā)計劃。在需求分析階段對待開發(fā)的系統(tǒng)有了更進一步的了解,所以能更準(zhǔn)確地估計開發(fā)成本、進度及資源要求,因此對原計劃要進行適當(dāng)修正。
4.簡述結(jié)構(gòu)化分析、設(shè)計的要點:
結(jié)構(gòu)化分析方法適合于數(shù)據(jù)處理類型軟件的需求分析。
其要點是“自頂向下” 地開發(fā)系統(tǒng),由整體到各組成部分,由表及里,由抽象到具體,逐步求精.(1)模塊化
(2)由頂向下,逐步求精.(3)上層模塊分解為下層模塊,有三種不同的結(jié)構(gòu)形式,即順序結(jié)構(gòu),選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu).5.?dāng)?shù)據(jù)字典包含哪些主要內(nèi)容?
數(shù)據(jù)字典通常包括數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和處理過程五個部分.據(jù)字典內(nèi)容包括:
數(shù)據(jù)庫中所有模式對象的信息,如表、視圖、簇、及索引等。
分配多少空間,當(dāng)前使用了多少空間等。
列的缺省值。
約束信息的完整性。
用戶的名字。
用戶及角色被授予的權(quán)限。
用戶訪問或使用的審計信息。
其它產(chǎn)生的數(shù)據(jù)庫信息。
6.軟件測試的目標(biāo)是什么,有哪幾種主要有測試方法?
軟件測試的目標(biāo):
(1)測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;
(2)好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案;
(3)成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯誤的測試。
軟件測試的方法有黑盒測試、白盒測試。
7.白盒測試主要有哪些覆蓋?
語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、點覆蓋、邊覆蓋、路徑覆蓋
8、選擇一種程序設(shè)計語言的主要有哪些依據(jù)?
為了使程序容易測試和維護以減少生命周期的總成本,選用的高級語言應(yīng)該有理想的模塊化機制,以及可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);為了便于調(diào)試和提高軟件可靠性,語言特點應(yīng)該使編譯程序能夠盡可能多地發(fā)現(xiàn)程序中的錯誤;為了降低軟件開發(fā)和維護的成本,選用的語言應(yīng)該有良好的獨立編譯機制。上述這些要求是選擇語言的理想標(biāo)準(zhǔn),但是在實際選用語言時不能僅僅考慮理論上的標(biāo)準(zhǔn),還必須同時考慮實用方面的各種限制。
(1)系統(tǒng)用戶的要求
(2)可以使用的編譯程序
(3)可以得到的軟件工具
(4)系統(tǒng)規(guī)模
(5)程序員的知識
(6)軟件可移植性要求
(7)軟件的應(yīng)用領(lǐng)域
9.軟件的維護的目標(biāo)是什么,有哪幾種維護類型?
糾正在使用過程中暴露出來的錯誤而進行的改進性維護,適應(yīng)外部環(huán)境的變化而進行的適應(yīng)性維護,改進原有的軟件而進行的完善性維護,以及改進將來的可維護性和可靠性而進行的預(yù)防性維護。
軟件維護主要劃分為糾錯性維護、適應(yīng)性維護和完善性維護。
(1)糾錯性維護。由于前期的測試不可能揭露軟件系統(tǒng)中所有潛在的錯誤,用戶在使用軟件時仍將會遇到錯誤,診斷和改正這些錯誤的過程稱為糾錯性維護。
(2)適應(yīng)性維護。由于新的硬件設(shè)備不斷推出,操作系統(tǒng)和編譯系統(tǒng)也不斷地升級,為了使軟件能適應(yīng)新的環(huán)境而引起的程序修改和擴充活動稱為適應(yīng)性維護。
(3)完善性維護。在軟件的正常使用過程中,用戶還會不斷地提出新的需求。為了滿足用戶新的需求而增加軟件功能的活動稱為完善性維護。
10.簡述提高軟件質(zhì)量的主要措施。
復(fù)審:是在軟件生命周期每個階段結(jié)束之前,都采用一定的標(biāo)準(zhǔn)對該段產(chǎn)生的軟件配置成分進行嚴格的正式或非正式的檢測。
復(fù)查:是檢查已有的材料,以斷定在軟件生命周期某個階段的工作是否能夠開始或繼續(xù)。管理復(fù)審:是向開發(fā)組織或使用部門的管理人員提供有關(guān)項目的總體狀況、成本和進度等方面的情況,以便他們從管理角度對開發(fā)工作進行審查。
測試:包括測試計劃、測試過程和測試結(jié)果3個階段。
11.面向?qū)ο笕绾螌崿F(xiàn)模塊獨立性,其偶合和內(nèi)聚的含義是什么?
因為對象是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作所組成的統(tǒng)一體,而且對象是以數(shù)據(jù)為中心的,操作圍繞對其數(shù)據(jù)所需做的處理來設(shè)置,沒有無關(guān)的操作。因此,對象內(nèi)部各種元素彼此結(jié)合得很緊密。內(nèi)聚性相當(dāng)強,由于完成對象所需要的元素(數(shù)據(jù)和方法)基本上都被封裝在對象內(nèi)部,它與外界的聯(lián)系自然就比較少。因此,對象之間的耦合通常比較松??傊嫦?qū)ο笫褂脤ο蟆㈩?、繼承和消息的方法,既使用類和繼承等機制,而且對象之間僅能通過傳遞消息實現(xiàn)彼此通信來實現(xiàn)模塊的獨立性。
12.面向?qū)ο蠛兔嫦蜻^程軟件工程有哪些區(qū)別?
(1)面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟一步一步實現(xiàn),使用的時候一個一個依次調(diào)用就可以了。面向?qū)ο笫前褬?gòu)成問題事務(wù)分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。(2)面向過程是把一件事一項工程分解成為一個個小的功能,用一個個函數(shù)來實現(xiàn).面向?qū)ο笫前咽虑榭闯墒且粋€個小的對象組成的,或者說一個個小部分組成的,這些對象之間的相互關(guān)系,構(gòu)成了整個項目.在面向?qū)ο蟮乃枷胫校f物皆對象。而“類”,就是對象的抽象或者說是概括。
13.簡述對象、類、消息、方法的基本概念。
(1)對象是人們要進行研究的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。
(2)類是具有相同或相似性質(zhì)的對象的抽象。對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。類具有屬性,它是對象的狀態(tài)的抽象,用數(shù)據(jù)結(jié)構(gòu)來描述類的屬性。類具有操作,它是對象的行為的抽象,用操作名和實現(xiàn)該操作的方法來描述。
(3)對象之間進行通信的結(jié)構(gòu)叫做消息。在對象的操作中,當(dāng)一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的信息。發(fā)送一條消息至少要包括說明接受消息的對象名、發(fā)送給該對象的消息名(即對象名、方法名)。一般還要對參數(shù)加以說明,參數(shù)可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。
(4)類中操作的實現(xiàn)過程叫做方法,一個方法有方法名、參數(shù)、方法體。
14.簡述面向?qū)ο蠓治鲈O(shè)計的三個模型。
答:三個模型:對象模型、動態(tài)模型、功能模型
(1)對象模型描述系統(tǒng)的靜態(tài)結(jié)構(gòu),包括類和對象,它們的屬性和操作,以及它們之間的關(guān)系。構(gòu)造對象模型的目的在于找出與應(yīng)用程序密切相關(guān)的概念。對象模型用包含對象及對象的關(guān)系圖表示。
(2)動態(tài)模型著重于系統(tǒng)的控制邏輯,考察在任何時候?qū)ο蠹捌潢P(guān)系的改變,描述這些涉及時序和改變的狀態(tài)。動態(tài)模型包括狀態(tài)圖和事件跟蹤圖。狀態(tài)圖是一個狀態(tài)和事件的網(wǎng)絡(luò),側(cè)重于描述每一類對象的動態(tài)行為。事件跟蹤圖則側(cè)重于說明系統(tǒng)執(zhí)行過程中的一個特點“場景”,也叫做腳本(scenarios),是完成系統(tǒng)某個功能的一個事件序列。腳本通常起始于一個系統(tǒng)外部的輸入事件,結(jié)束于一個系統(tǒng)外部的輸出事件。
(3)功能模型著重于系統(tǒng)內(nèi)部數(shù)據(jù)的傳送和處理。功能模型表明,通過計算,從輸出數(shù)據(jù)能得到什么樣的輸出數(shù)據(jù),但不考慮參加計算的數(shù)據(jù)按什么時序執(zhí)行。功能模型由多個數(shù)據(jù)流圖組成,它們指明從外部輸出,通過操作和內(nèi)部存儲,直到外部輸出的整個數(shù)據(jù)流情況。功能模型還包括了對象模型內(nèi)部數(shù)據(jù)間的限制。功能模型中的數(shù)據(jù)流圖往往形成一個層次結(jié)構(gòu),一個數(shù)據(jù)流圖的過程可以由下一層的數(shù)據(jù)流圖作進一步的說明。
第四篇:軟件工程復(fù)習(xí)總結(jié)
第1章
1什么是軟件危機,產(chǎn)生軟件危機的原因,消除軟件危機的途徑。
落后的軟件生產(chǎn)方式無法滿足迅速增長的計算機軟件需求,從而導(dǎo)致軟件開發(fā)與維護過程中出現(xiàn)一系列嚴重問題的現(xiàn)象。
軟件維護費用的急劇上升,直接威脅計算機應(yīng)用的擴大;軟件生產(chǎn)技術(shù)進步緩慢,是加劇軟件危機的重要原因。
既要有技術(shù)措施,又要有必要的組織管理措施。2什么是軟件,軟件的精確定義。
軟件是程序以及開發(fā)、使用和維護程序所需的所有文檔.。3軟件工程的精確定義,軟件工程的7個特征,7基本原理。
軟件工程是指導(dǎo)計算機軟件開發(fā)和維護的一門工程學(xué)科。1,軟件工程關(guān)注于大型程序的構(gòu)造; 2,軟件工程的中心課題是控制復(fù)雜性; 3,軟件經(jīng)常化;
4,開發(fā)軟件的效率非常重要; 5,和諧地合作是開發(fā)軟件的關(guān)鍵; 6,軟件必須有效地支持它的用戶;
7,在軟件工程領(lǐng)域中是由一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品。基本原理:
1,用分階段的生命周期計劃嚴格管理; 2,堅持進行階段評審; 3,實行嚴格的產(chǎn)品控制; 4,采用現(xiàn)代程序設(shè)計的技術(shù); 5,結(jié)果應(yīng)能清楚地審查;
6,開發(fā)小組的人員應(yīng)該少而精;
7,承認不斷改進軟件工程實踐的必要性。
4軟件工程方法學(xué)的精確定義,它的三要素。二種方法學(xué),面向結(jié)構(gòu),面向?qū)ο?/p>
3個要素:方法 工具和過程 兩種方法學(xué):1傳統(tǒng)方法學(xué)2面向?qū)ο蠓椒▽W(xué) 5什么是軟件生命周期,它有哪幾個階段(8個階段),各個階段分別做什么,這些階段的重要性。
一個軟件從定義到開發(fā)、使用和維護,直到最終被棄用,要經(jīng)歷一個漫長的時期,通常把軟件經(jīng)歷的這個漫長的時期稱為生存周期。階段:1問題定義2可行性研究3需求分析4總體設(shè)計5詳細設(shè)計6編碼和單元測試7綜合測試8軟件維護
6軟件過程的精確定義,它與軟件工程的關(guān)系,它的各種模型,各種模型的優(yōu)缺點,適用范 圍。
軟件過程為一個為建造高質(zhì)量軟件所需完成的任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。瀑布模型 快速原型模型 增量模型 螺旋模型 噴泉模型 第2章
1什么是可行性研究,它的目的,它的任務(wù),可行性研究是在項目建議書被批準(zhǔn)后,對項目在技術(shù)上和經(jīng)濟上是否可行所進行的科學(xué)分析和論證。目的:用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。任務(wù):對以后的行動方針提出建議。
2從哪幾個方面進行可行性研究,每個方面研究什么,它的目的,它的任務(wù)。
1技術(shù)可行性2經(jīng)濟可行性3操作可行性 3可行性研究的過程,8個階段。
1.復(fù)查系統(tǒng)規(guī)模和目標(biāo)2.研究目前正在使用的系統(tǒng)3.導(dǎo)出新系統(tǒng)的高層邏輯模型4.進一步定義模型5.導(dǎo)出和評價供選擇的解法6.推薦行動方針7.草擬開發(fā)計劃8.書寫文檔提交審查 4系統(tǒng)流程圖,表達什么,它的符號,符號含義 概括地描繪物理系統(tǒng)的傳統(tǒng)工具。
5數(shù)據(jù)流程圖,描繪什么,它的符號,符號含義,畫法,數(shù)據(jù)流程圖的用途(重點)描繪信息流和數(shù)據(jù)從輸入移動到輸出的過程中所經(jīng)受的變換。
6數(shù)據(jù)字典的精確定義,作用,內(nèi)容(4類定義組成)定義數(shù)據(jù)的方法,用途,實現(xiàn)。
數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合。對數(shù)據(jù)流圖中包含的所有元素的定義的集合。
內(nèi)容1.數(shù)據(jù)流2數(shù)據(jù)流分量3數(shù)據(jù)存儲4處理 7成本效益分析,使用的方法 第3章
1需求分析,它的任務(wù),它的重要性,它的結(jié)果,要遵守的4條準(zhǔn)則。
開發(fā)人員準(zhǔn)確地理解用戶的要求,進行細致的調(diào)查分析,將用戶非形式的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)換到相應(yīng)的需求規(guī)格說明的過程。
基本任務(wù): ⑴問題識別:雙方確定對問題的綜合需求,這些需求包括功能需求,性能需求,環(huán)境需求,用戶界面需求。
重要性:需求分析可以使得開發(fā)和測試更能夠了解客戶的需求,把一些技術(shù)難點和可能遇到的難點問題提出來,盡早解決,并且達到一致,便于以后的開發(fā)和測試
需求分析結(jié)果是產(chǎn)生:需求規(guī)格說明書
⑵分析與綜合,導(dǎo)出軟件的邏輯模型
⑶編寫文檔:包括編寫“需求規(guī)格說明書”,“初步用戶使用手冊”,“確認測試計劃”,“修改完善軟件開發(fā)計劃” 任務(wù)的7項要求,與用戶溝通的方法
獲取需求的方法,用到的圖形工具:E_R圖,圖描述什么,使用符號 狀態(tài)轉(zhuǎn)換圖,其他圖形,IPO圖等 驗證需求,4個方面 第5章
1總體設(shè)計的目的,任務(wù)
總體設(shè)計的基本目的就是回答“概括地說,系統(tǒng)應(yīng)該如何實現(xiàn)?”這個問題。任務(wù)是設(shè)計軟件的結(jié)構(gòu),也就是明確系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。必要性:可以站在全局的高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。2設(shè)計過程,二個階段9個步驟
兩個階段:1系統(tǒng)設(shè)計階段,確定系統(tǒng)的具體實現(xiàn)方案2結(jié)構(gòu)設(shè)計階段,確定軟件結(jié)構(gòu)。設(shè)計過程的9個步驟:1設(shè)想供選擇的方案2選取合理的方案3推薦最佳方案4功能分解5設(shè)計軟件結(jié)構(gòu)6設(shè)計數(shù)據(jù)庫7制定測試計劃8書寫文檔9審查和復(fù)審。3設(shè)計原理,模塊化,與模塊化有關(guān)的獨立,度量標(biāo)準(zhǔn):耦合,內(nèi)驟
設(shè)計原理:1模塊化2抽象3逐步求精。模塊獨立程度的兩個定性標(biāo)準(zhǔn)度量:1內(nèi)聚2耦合。
4啟發(fā)式7條規(guī)則,啟發(fā)規(guī)則:1改進軟件結(jié)構(gòu)提高模塊獨立性2模塊規(guī)模應(yīng)該適中3深度、寬度、扇出、扇入都應(yīng)適中4模塊的作用域應(yīng)該在控制域之內(nèi)5力爭降低模塊接口的復(fù)雜程度6設(shè)計單入口單出口的模塊7模塊功能應(yīng)該可以預(yù)測。5各種圖形工具,HIPO,結(jié)構(gòu)圖,數(shù)據(jù)流圖
描繪軟件結(jié)構(gòu)的圖形工具:1層次圖2 HIPO圖3結(jié)構(gòu)圖;面向數(shù)據(jù)流的設(shè)計方法把信息流映射程軟件結(jié)構(gòu),信息流的類型決定了映射的方法信息流有下述兩種類型:1變換流2事務(wù)流。第6章
1詳細設(shè)計的目的,任務(wù)
詳細設(shè)計的根本目標(biāo) :是確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng),經(jīng)過這個階段的設(shè)計工作,應(yīng)該得出對目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設(shè)計語言寫的程序。
任務(wù):是要設(shè)計出程序的“藍圖”,以后程序員將根據(jù)這個藍圖寫出實際的程序代碼。必要性:衡量程序的質(zhì)量不僅看它的邏輯是否正確,性能是否滿足要求,更重要的是要看它能夠簡單易懂,詳細設(shè)計的目的不僅僅是邏輯上正確地實現(xiàn)每個模塊的功能,更重要的是設(shè)計出的處理過程應(yīng)該盡可能簡明易懂。
2結(jié)構(gòu)化:定義,指導(dǎo)思想,哪幾種結(jié)構(gòu),使用的工具,建立什么模型使用什么工具
結(jié)構(gòu)化的定義:結(jié)構(gòu)化程序設(shè)計是盡可能少用GOTO語句的程序設(shè)計方法,最好僅在檢測出錯誤時才使用GOTO語句,而且應(yīng)該總是使用前向goto語句。結(jié)構(gòu)有三種:順序,選擇,和循環(huán)。
指導(dǎo)思想:采用自頂向下,逐步求精的程序設(shè)計方法,使用三種基本控制結(jié)構(gòu)構(gòu)造程序,任何程序都可由順序,選擇,重復(fù)三種基本控制結(jié)構(gòu)構(gòu)造。結(jié)構(gòu):順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu) 工具:圖形,表格,和語言
3人機界面設(shè)計,要解決的問題,設(shè)計過程,設(shè)計指南
人機界面設(shè)計是接口設(shè)計的一個重要組成部分,遇到的四個問題:系統(tǒng)響應(yīng)時間,用戶幫助設(shè)施,出錯信息處理和命令交互。
設(shè)計過程,用戶界面設(shè)計是一個迭代的過程,通常先創(chuàng)建設(shè)計模型,再用原型實現(xiàn)這個設(shè)計模型,并由用戶試用和評價,然后根據(jù)用戶意見進行修改。設(shè)計指南:一般交互指南,信息顯示指南和數(shù)據(jù)輸入指南
4過程設(shè)計的各種工具,程序流程圖,盒圖,PAD圖,判定表,判定樹,過程設(shè)計語言
過程設(shè)計的工具有三類:圖形,表格,語言。具體有如下幾種
程序流程圖,盒圖,pad圖,判定表,判定樹,過程設(shè)計語言(PDL)
5面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法,jackson方法,使用的圖形工具
設(shè)計方法:根據(jù)數(shù)據(jù)結(jié)構(gòu)設(shè)計程序處理過程的方法。
數(shù)據(jù)的3種使用方法:順序,選擇,重復(fù)。Jackson方法
Jackson結(jié)構(gòu)程序設(shè)計方法基本上由下述5個步驟組成,(1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用jackson圖描述這些數(shù)據(jù)結(jié)構(gòu)(2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。
(3)用下述3條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的jackson圖。
1、為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框。
2根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框??傊枥L程序結(jié)構(gòu)的jackson圖應(yīng)該綜合輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)的層次關(guān)系而導(dǎo)出來。在導(dǎo)出程序結(jié)構(gòu)圖的過程中,由于改進的jackson圖規(guī)定在構(gòu)成順序結(jié)構(gòu)的元素中不能有重復(fù)出現(xiàn)或選擇出現(xiàn)的元素,因此可能需要增加中間層次的處理框圖。(4)、列出所有操作和條件,并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。(5)用偽碼表示程序。使用的圖形工具:jackson圖
6復(fù)雜度的度量,McCabe方法,流圖,(2014年重點)
復(fù)雜度度量:把程序的復(fù)雜程度乘以適當(dāng)?shù)某?shù)即可估算出軟件中的錯誤的數(shù)量以及軟件開發(fā)需要的工作量
Mccabe方法:根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度 第7章
1實現(xiàn)的重點是測試
2軟件測試的基礎(chǔ):目標(biāo),準(zhǔn)則,方法,測試5步驟
軟件測試的基礎(chǔ):在測試階段測試的人員努力設(shè)計出一系列的方案,目的卻是為了“破壞”已經(jīng)建造好的軟件系統(tǒng)—竭力證明程序中有錯誤,不能按照預(yù)定要求正確工作。發(fā)現(xiàn)問題是為了解決問題,測試階段的根本目標(biāo)是盡可能多地發(fā)現(xiàn)并排除軟件中潛在的錯誤,最終把一個高質(zhì)量的軟件系統(tǒng)交給用戶使用。軟測的目標(biāo):①測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。②好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯誤的測試方案。③成功的測試是發(fā)現(xiàn)至今為止尚未發(fā)現(xiàn)的錯誤的測試。
軟測的準(zhǔn)則:①所有的測試都應(yīng)該能追溯到用戶的需求。②應(yīng)該遠在測試開始之前就制定出測試計劃。③把Pareto原理應(yīng)用到軟測中。④應(yīng)該從“小規(guī)?!睖y試開始,并逐步進行“大規(guī)?!睖y試。⑤窮舉測試是不可能的。⑥為了達到最佳的測試效果,應(yīng)該由獨立的第三方從事測試工作。
測試方法:白盒測試(結(jié)構(gòu)測試)、黑盒測試(功能測試)。
測試步驟:①模塊測試②子系統(tǒng)測試③系統(tǒng)測試④驗收測試⑤平行測試。3單元測試,測試的重點,測試方案
單元測試:在軟件開發(fā)過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試;集中檢測軟件設(shè)計的最小單元---模塊。
單元測試方法有:人工測試和計算機測試;單元測試主要使用白盒測試技術(shù),而且對多個模塊的測試可以并行的進行。
單元測試的重點:①模塊接口②局部數(shù)據(jù)結(jié)構(gòu)③重要的執(zhí)行通路④出錯處理通路⑤邊界條件
4集成測試:集成的策略,自頂向下,自底向上
集成測試:測試和組裝軟件的系統(tǒng)化技術(shù)。
集成測試的策略:自頂向下和自底向上。
自頂向下集成方法是一個日益為人們廣泛采用的測試和組成軟件的途徑。從主控制模塊開始,沿著程序的控制層次向下移動,逐漸把各個模塊結(jié)合起來。自底向上集成:從“原子”模塊開始組成和測試。
5確認測試,范圍,Alpha測試Beta測試
確認測試:又稱驗收測試,它目標(biāo)是驗證軟件的有效性。
Alpha測試由用戶在開發(fā)者的場所進行,并且在開發(fā)者對用戶的“指導(dǎo)”下進行測試,其是在受控的環(huán)境中進行的。
Beta測試由軟件的最終用戶們在一個或多個客戶場所進行。與Alpha測試不同,開發(fā)者通常不在Beta測試的現(xiàn)場,因此Beta測試是軟件開發(fā)者不能控制的環(huán)境中的“真實”應(yīng)用。6白盒測試,黑盒測試(重點)
白盒測試:通過測試來檢測產(chǎn)品內(nèi)部動作是否按照設(shè)計規(guī)格說明書的規(guī)定正常進行。黑盒測試:通過測試來檢測每個功能是否都能正常使用。
7軟件的可靠性,計算公式
軟件的可靠性:程序在給定的時間間隔內(nèi),按照規(guī)格說明書的規(guī)定成功的運行的概率。設(shè)計白盒測試方案的技術(shù)主要有邏輯技術(shù)和控制結(jié)構(gòu)測試;設(shè)計黑盒測試方案的技術(shù)主要有等價劃分、分界值分析和錯誤推測。
第8章
1軟件維護的定義,4項活動,4類維護
軟件維護的定義:在軟件已經(jīng)交付使用后,為了改正錯誤或滿足新的需要而修改軟件的過程。
四項維護:第一項維護活動:在任何大型程序的使用期間,用戶必然會發(fā)現(xiàn)程序錯誤,并且把他們遇到的問題報告給維護人員,讓維護人員診斷和改正的過程。第二項維護活動:為了和變化了的環(huán)境適當(dāng)?shù)嘏浜隙M行的修改軟件的活動,是既必要又經(jīng)常的維護活動。第三項維護活動:在使用軟件的過程中用戶往往提出增加新功能或修改已有功能的建議,還可能提出一般性的改進意見。第四項維護活動:為了改進未來的可維護性或可靠性,或為了給未來的改進奠定更好的基礎(chǔ)而修改軟件。
四類維護:改正性維護、適應(yīng)性維護、完善性維護、預(yù)防性維護 2軟件維護的特點,問題,軟件維護的特點:結(jié)構(gòu)化維護與非結(jié)構(gòu)化維護差別巨大、維護的代價高昂、維護的問題很多
軟件維護的問題:
1)理解別人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加。2)需要維護的軟件往往沒有合格的文檔,或者文檔資料顯著不足。
3)當(dāng)要求對軟件進行維護時,不能指望有開發(fā)人員給人們仔細說明軟件。由于維護階段持續(xù)的時間很長,因此,當(dāng)需要解釋軟件時,往往原來寫程序的人已經(jīng)不在附近了。4)絕大多數(shù)軟件在設(shè)計時沒有考慮將來的修改。5)軟件維護不是吸引人的工作。3軟件維護的過程
軟件維護的過程:維護組織、維護報告、維護的事件流、保存維護記錄、評價維護活動 4軟件的可維護性
軟件可維護性定義:維護人員理解、改正、改動或改進這個軟件的難易程度。決定軟件可維護性的因素:可理解性、可測試性、可修改性、可移植性、可重用性 5預(yù)防性維護與軟件再工程。
預(yù)防性維護由Miller提出來把今天的方法學(xué)應(yīng)用到昨天的系統(tǒng)上以支持明天的明天的需求
6軟件再工程
6類活動:1.庫存目錄分析2.文檔重構(gòu)3.逆向工程4.代碼重構(gòu)5.數(shù)據(jù)重構(gòu)6.正向工程 第9章
1面向?qū)ο蠓椒▽W(xué)的定義,要點,優(yōu)點
定義:面向?qū)ο蠓椒ㄊ且环N把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動的系統(tǒng)方法,簡稱OO(Object-Oriented)方法,是建立在“對象”概念基礎(chǔ)上的方法學(xué)。
要點:1認為客觀世界是由各種對象構(gòu)成的,任何事物都是對象,復(fù)雜的對象可以由簡單的對象以某種方式組合而成。2,把所有的對象都劃分成各種對象類,每個對象類都定義了一組數(shù)據(jù)和一組方法。3,按照子類與父類的關(guān)系,把若干個對象組成一個層次結(jié)構(gòu)的的系統(tǒng)。4,對象之間僅能通過傳遞消息互相聯(lián)系。
優(yōu)點:1.與人類習(xí)慣的思維方法一致2.穩(wěn)定性好3.可重用性好4.較易開發(fā)大型軟件產(chǎn)品5.可維護性好
2對象的定義,要點,優(yōu)點
定義:1.對象是具有相同狀態(tài)的一組操作的集合2.對象是對屬性值和操作的封裝。3.對象::=
3面向?qū)ο蟮母拍?,定義,特點
面向?qū)ο笫且环N對現(xiàn)實世界理解和抽象的方法,是計算機編程技術(shù)[1]發(fā)展到一定階段后的產(chǎn)物。
特點:1對象唯一性2分類性3繼承性4多態(tài)性 優(yōu)點:1易維護2質(zhì)量高3效率高4易擴展 4類的定義,實例、消息、方法、屬性,繼承等概念
類的定義:類就是具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。實例:實例就是由某個特定類所描述的一個具體的對象。
消息:小時就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。方法:方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。
屬性:屬性就是類中所定義的數(shù)據(jù),它是對客觀世界實體說具有的性質(zhì)的抽象。封裝:在面向?qū)ο蟮某绦蛑?,把?shù)據(jù)和實現(xiàn)操作的代碼集中放在對象內(nèi)部。
繼承:在面向?qū)ο蟮能浖夹g(shù)中,繼承是子類自動地共享基類中的數(shù)據(jù)和方法的機制。多態(tài):多態(tài)性是指子類對象可以像父類對象那樣使用,同樣地消息既可以發(fā)給父類對象也可以發(fā)給子類對象。重載:函數(shù)重載是指在同一作用域類的若干個參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字,運送符號重載是指同一個運算符可以施加在不同類型操作數(shù)上面。5面向?qū)ο蠼#瑢ο竽P停ㄖ攸c),功能模型(重點)動態(tài)模型,模型怎么畫,各種符號 6面向?qū)ο蠓椒▽W(xué)使用的語言
面向?qū)ο笳Z言是一類以對象作為基本程序結(jié)構(gòu)單位的程序設(shè)計語言,指用于描述的設(shè)計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分。第10章
3個子模型和5個層次 怎樣確定類與對象
類是對象的抽象,對象是類的具體實例。確定關(guān)聯(lián),各種關(guān)聯(lián)怎樣確定
建立動態(tài)模型,編寫腳本,畫事件跟蹤圖
第五篇:軟件工程重點總結(jié)
軟件的定義:軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,軟件包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。
在結(jié)構(gòu)化程序設(shè)計時代,程序的最小單位是向?qū)ο蟪绦蛟O(shè)計時代,程序的最小單位是類,在類中封裝了相關(guān)的數(shù)據(jù)及指令代碼。軟件的特性:形態(tài)特性、智能特性、開發(fā)特特性、維護特性、廢棄特性、應(yīng)用特性。軟件的分類:系統(tǒng)軟件、應(yīng)用軟件、支撐軟 軟件危機的表現(xiàn):軟件開發(fā)周期長、成本高、軟件危機發(fā)生的原因:(1)缺乏軟件開發(fā)的工作的計劃很難制定。(2)軟件人員與用戶的交流存在障礙。(3)軟件開發(fā)過程不規(guī)范,缺少方法論和規(guī)范的指導(dǎo),開發(fā)人員各自為戰(zhàn),缺少整體的規(guī)劃和配合,不重視文字資料工作,軟件難以維護。(4)隨著軟件規(guī)模的增大,其復(fù)雜性往往會呈指數(shù)級升高。(5)缺少有效的軟件測評手段,提高用戶的軟件質(zhì)量差,在運行中暴露出大量的問題,輕者影響系統(tǒng)的正常使用,重者發(fā)生事故,甚至造成生命財產(chǎn)的重大損失。
首次提出“軟件工程”的概念的時間是1968年。
按工程化的原則和方法組織軟件開發(fā)工作是 軟件工程的定義:軟件工程是指導(dǎo)軟件開發(fā)和維護的工程性學(xué)科,它以計算機科學(xué)理論和其他相關(guān)學(xué)科的理論為指導(dǎo),采用工程化的概念、原理、技術(shù)和方法進行軟件的開發(fā)和維護,把經(jīng)過時間考驗而證明是正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以較少的代價獲得高質(zhì)量的軟件并維護它。
軟件工程的目標(biāo)是運用先進的軟件開發(fā)技術(shù) 衡量軟件的質(zhì)量的六個特性:功能性、可靠
軟件生存期的三個時期:軟件定義、軟件開定義時期的主要任務(wù)是解決“做什么”的問地滿足用戶的需要。
開發(fā)過程中的典型文檔包括:軟件需求規(guī)格計說明書、用戶手冊。
各個階段所要完成的基本任務(wù):問題定義與可行性研究、需求分析、軟件設(shè)計、程序編碼和單元測試、集成測試和系統(tǒng)測試、軟件運行和維護。
典型的軟件生存期模型包括瀑布模型、原型模型、增量模型、螺旋模型等(噴泉模型)。
瀑布模型的特點:1)階段間具有順序性和依賴性。2)推遲實現(xiàn)的觀點。3)質(zhì)量保證的觀點。
瀑布模型的優(yōu)點:①可強迫開發(fā)人員采用規(guī)范化的方法。②嚴格地規(guī)定了每個階段必須提交的文檔。③要求每個階段交出的所有產(chǎn)品都必須是經(jīng)過驗證(評審)的。
瀑布模型的缺點:①由于瀑布模型幾乎完全依賴于書面的規(guī)格說明,很可能導(dǎo)致最終開發(fā)出的軟件產(chǎn)品不能真正滿足用戶的需要。如果需求規(guī)格說明與用戶需求之間有差異,就會發(fā)生這種情況。②瀑布模型只適用于項目開始時需求已確定的情況。
快速原型模型的優(yōu)點:①有助于滿足用戶的互而得到驗證,據(jù)此產(chǎn)生的規(guī)格說明文檔能夠正確地描述用戶需求。③軟件產(chǎn)品的開發(fā)基本上是按線性順序進行。④因為規(guī)格說明文檔正確地描述了用戶需求,因此,在開發(fā)過程的后續(xù)階段不會因為發(fā)現(xiàn)規(guī)格說明文檔的錯誤而進行較大的返工。⑤開發(fā)人員通過建立原型系統(tǒng)已經(jīng)學(xué)到了許多東西,因此,在設(shè)計和編碼階段發(fā)生錯誤的可能性也比較小,這自然減少了在后續(xù)階段需要改正前面階段所犯錯誤的可能性。⑥快速原型的本質(zhì)是“快速”。開發(fā)人員應(yīng)該盡可能快地創(chuàng)造出原型系統(tǒng),以加速軟件開發(fā)過程,節(jié)約軟件開發(fā)成本。原型的用途是獲知用戶的真正需求,一旦需求確定了,原型可以拋棄,當(dāng)然也可以在原型的基礎(chǔ)上進行開發(fā)。
增量模型的優(yōu)點:①能夠在較短的時間內(nèi)向構(gòu)件交付之日起,用戶就能做一些有用的工作。②逐步增加產(chǎn)品的功能可以使用戶有較充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少全新的軟件可能給用戶組織帶來的沖擊。③項目失敗的風(fēng)險較低,雖然在某些增量構(gòu)件中可能遇到一些問題,但其他增量構(gòu)件將能夠成功地交付給客戶。④優(yōu)先級最高的服務(wù)首先交付,然后再將其他增量構(gòu)件逐次集成進來。一個必然的事實是:最重要的系統(tǒng)服務(wù)將接受最多的測試。這意味著系統(tǒng)最重要的部分一般不會遭遇失敗。
螺旋模型的優(yōu)點:①對可選方案和約束條件軟件質(zhì)量作為軟件開發(fā)的一個重要目標(biāo)。②減少了過多測試或測試不足所帶來的風(fēng)險。③在螺旋模型中,維護只是模型的另一個周期,因而在維護和開發(fā)之間并沒有本質(zhì)區(qū)別。螺旋模型的缺點:螺旋模型是風(fēng)險驅(qū)動的,因此要求軟件開發(fā)人員必須具有豐富的風(fēng)險評估經(jīng)驗和這方面的專門知識,否則將出現(xiàn)真正的風(fēng)險:當(dāng)項目實際上正在走向災(zāi)難時,開發(fā)人員可能還以為一切正常。
方法學(xué):通常把在軟件生命周期全過程中使用的一整套技術(shù)的集合稱為方法學(xué),也稱為范型。
軟件工程方法學(xué)三個要素:方法、工具和過傳統(tǒng)方法也稱為生命周期方法或結(jié)構(gòu)化范項任務(wù)。這種方法學(xué)把軟件生命周期的全過程依次劃分為若干個階段,然后順序地逐步完成每個階段的任務(wù)。每個階段的開始和結(jié)束都有嚴格的標(biāo)準(zhǔn),對于任何兩個相鄰的階段而言,前一階段的結(jié)束標(biāo)準(zhǔn)就是后一階段的開始標(biāo)準(zhǔn)。在每個階段結(jié)束之前都必須進行正式評審,評審?fù)ㄟ^之后這個階段才結(jié)束,否則就需要返工,返工之后還要評審。評審的一條主要標(biāo)準(zhǔn)就是每個階段都應(yīng)該交出高質(zhì)量的工作產(chǎn)品,其中,前面階段的工作產(chǎn)品主要是文檔,如需求規(guī)格說明書、軟件設(shè)計說明書等。
面向?qū)ο蠓椒ǖ幕驹瓌t,是盡量模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法和過程盡可能接近人類認識問題和解決問題的方法與過程,從而使描述問題的問題空間與其解空間在結(jié)構(gòu)上盡可能一致。
封裝的定義:封裝是一種信息隱蔽技術(shù),就作封裝在一起。①清楚的邊界②接口③受保護的內(nèi)部實現(xiàn)
軟件需求分析階段的主要工作產(chǎn)品有“軟件需求規(guī)格說明書”和“初步的用戶手冊” 需求獲取的主要任務(wù)是與客戶或用戶溝通,想要實現(xiàn)什么,系統(tǒng)和產(chǎn)品如何滿足業(yè)務(wù)的要求,最終系統(tǒng)或產(chǎn)品如何用于日常工作
需求獲取產(chǎn)生困難的原因:系統(tǒng)的目標(biāo)或范圍問題,需求不準(zhǔn)確性問題,需求的易變問題
需求獲取活動需解決的問題:1.發(fā)現(xiàn)和分析問題,并分析問題的原因/結(jié)果關(guān)系2.與用戶進行各種方式的交流,并使用調(diào)查研究方法收集信息3.按照三個成分即數(shù)據(jù)、過程和接口觀察問題的不同側(cè)面4.將獲取的需求文檔化,形式有例圖、決策表、決策樹等 軟件需求分析階段的工作4個步驟:需求獲取,需求分析,需求定義,需求驗證
數(shù)據(jù)字典以詞條方式定義在數(shù)據(jù)模型、功能息的特性,給出它們的準(zhǔn)確定義
設(shè)計是技術(shù)世界和人類的目標(biāo)世界結(jié)合在一
軟件設(shè)計的原則:(1)分而治之(2)模塊獨立(4)復(fù)用性設(shè)計(5)靈活性設(shè)計
模塊獨立性,是指軟件系統(tǒng)中每個模塊只涉
復(fù)用是指同一事物不做修改或稍加修改就可質(zhì)量及生產(chǎn)率的重要方法,軟件復(fù)用已不再局限于軟件代碼的復(fù)用,復(fù)用范圍已經(jīng)擴展到軟件開發(fā)的各個階段,包括需求模型和規(guī)格說明、設(shè)計模型、文檔、測試用例等復(fù)用。模塊間的耦合和內(nèi)聚兩個準(zhǔn)則來度量模塊獨的緊密程度)的度量,內(nèi)聚是模塊功能強度(一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度)的度量。模塊獨立性比較強的模塊應(yīng)是高度內(nèi)聚、松散耦合的模塊。
在最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解決方法:在較低的抽象層次上,采用更過程化的方法,將面向問題的術(shù)語和面向?qū)崿F(xiàn)的術(shù)語結(jié)合起來描述問題的解法;在最低的抽象層次,則用某種程序設(shè)計語言來描述問題的解法。從工商管理的角度,可以將軟件設(shè)計分為兩個階段:概念設(shè)計階段和詳細設(shè)計階段。結(jié)構(gòu)圖是精確模塊結(jié)構(gòu)的圖形表示工具。清聯(lián)系。(1)模塊的條用關(guān)系和接口(2)模塊間的信息傳遞(3)輔助符號(4)結(jié)構(gòu)圖的形態(tài)特征(結(jié)構(gòu)圖的深度、寬度、扇入和扇出)過程描述工具有:圖形工具、表格工具、語
自頂向下、逐步求精方法的優(yōu)點:1)自頂向遍規(guī)律,可提高軟件開發(fā)的成功率和生產(chǎn)率2)用先全局后局部、先整體后細節(jié)、先抽象后具體的逐步求精的過程開發(fā)出來的程序具有清晰地層次結(jié)構(gòu),因此程序更容易閱讀和理解3)程序自頂向下,逐步細化,分解成樹形結(jié)構(gòu)4)程序清晰和模塊化,使得在修改和重新設(shè)計一個軟件時,可復(fù)用的代碼量最大5)程序的邏輯結(jié)構(gòu)清晰,有利于程序正確性證明6)每一步工作盡在上層結(jié)點的基礎(chǔ)上做不多的設(shè)計擴展,便于檢查7)有利于設(shè)計的分工和組織工作
軟件測試:在軟件投入生產(chǎn)性運行之前,對復(fù)審,是軟件質(zhì)量控制的關(guān)鍵步驟。軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。
軟件測試的目的:①測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;②一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;③一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。軟件測試的目標(biāo)是想以最少的時間和人力系 軟件測試的原則:
1、盡早地和不斷地進行軟之對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成;
3、程序員應(yīng)避免檢查自己的程序。測試過程需要三類輸入:軟件配置、測試配控制流圖是描述程序的控制流的一種圖示方
環(huán)路復(fù)雜性V(G)的計算方法:
1、環(huán)路復(fù)
2、設(shè)E為控制流圖的邊數(shù),N為圖中的結(jié)點數(shù),則V(G)=E-N+2;
3、設(shè)P為控制流圖中的判定結(jié)點數(shù),則V(G)=P+1.獨立路徑:是指包括一組以前有沒有處理的語句或條件的一條路徑。等價類劃分是一種典型的黑盒測試方法。有效等價類:是指對于軟件的規(guī)格說明來說,合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它可以檢查程序是否實現(xiàn)了規(guī)格說明預(yù)先規(guī)定的功能和性能。無效等價類:是指對于軟件的規(guī)格說明來說,軟件測試過程的4步驟:單元測試、組裝測試、確認測試和系統(tǒng)測試。
驅(qū)動模式:相當(dāng)于被測模塊的主程序。它接受測試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測模塊,最后再輸出實測結(jié)果。樁模塊:也叫存根模塊。用以代替被測模塊 把模塊組裝為系統(tǒng)的方式通常有:一次性組確認測試又稱有效性測試。它的任務(wù)是驗證軟件的有效性,即驗證軟件的功能和性能及其他特征是否與用戶的要求一直。對軟件的功能和性能要求在軟件需求規(guī)格說明書中已經(jīng)明確規(guī)定。
面向?qū)ο蠓治瞿P陀?個獨立的模型構(gòu)成:用類和對象表示的靜態(tài)模型(對象模型);有狀態(tài)圖和順序圖表示的動態(tài)模型(交互模型)。
以上3個模型的重要程度是不同的。用例模型是整個后續(xù)工作的基礎(chǔ),也是測試與驗收的依據(jù)。由于面向?qū)ο笙到y(tǒng)中,類、接口、及對象是軟件的基本組成單元,因此對象模型是必須建立的,也是核心模型,幾乎解決任何一個問題都需要從客觀世界實體及實體間的相互關(guān)系抽象出極有價值的對象模型;當(dāng)問題涉及交互作用和時序是,動態(tài)模型是重要的。
復(fù)雜的大型系統(tǒng)的對象模型由5個層次組 在系統(tǒng)分析階段,對象建模的主要任務(wù)是建世界中的類與對象以及它們之間的關(guān)系,而非實際的軟件類或?qū)嶋H構(gòu)件。
軟件維護類型:改正性維護,適應(yīng)性維護,影響維護工作量的因素:1.系統(tǒng)規(guī)模;2.系4.數(shù)據(jù)庫技術(shù)的應(yīng)用水平;5.所采用的軟件開發(fā)技術(shù)及軟件開發(fā)工程化的程度;6.其他。針對三種典型的維護,提出策略以控制維護成本。改正性維護的策略方法:數(shù)據(jù)庫管理高級(第四代)語言。軟件維護性定義:指當(dāng)對軟件實施各種類型能力。軟件維護性子特性:易分析性,易變更性,提高軟件維護性的開發(fā)技術(shù)和工具:1.使用2.實施開發(fā)階段產(chǎn)品的維護性審查;3.改進文檔。