【正文】
units, each performs only part of the overall task ? Modular deposition ? Makes the implementation of large systems possible ? Allows changes to be made on a modular basis School of Computer Science Implementation and Testing 實(shí)現(xiàn)和測(cè)試 ? Implementation involves the actual writing of programs, creation of data files, and development of database ? Each module is normally tested as it is implemented ? Stubs(樁模塊) ? Simplified versions of modules used to test a certain module ? Feature(功能) test and load test ? Reliability growth test and certification test School of Computer Science 軟件 Development Models開發(fā)模型 Recent Trends 趨勢(shì) ? Waterfall(瀑布模型) ? Performs analysis, design, implementation, and testing in a strictly manner ? Incremental(迭代模型) ? Software system is constructed in increments ? Prototyping(原型法) ? Inplete versions of the proposed system (prototypes) are built and evaluated ? Evolutionary prototyping(演化式原型) ? Early prototyping and throwaway prototyping(拋棄式原型) School of Computer Science Testing Methodology Based on Pareto Principle(基于 Pareto法則的測(cè)試方法) ? Pareto principle ? The results can often be increased more rapidly by applying efforts in a concentrated area ? Thus a small number of modules within a large software system tend to be more problematic than the rest School of Computer Science Testing 方法 ? Glassbox testing(白盒測(cè)試) ? Identify problematic modules ? Basis path testing ? Blackbox testing(黑盒測(cè)試) ? Boundary(邊界) value analysis ? Apply redundancy(冗余:兩個(gè)公司開發(fā)同一套系統(tǒng)) ? Beta testing(初始版本) School of Computer Science Extreme Programming (XP極限編程 ) ? Suitable for a team of less than a dozen individuals ? A discipline of software development based on values of simplicity(簡(jiǎn)易) , munication(交流) , and courage ? 12 practices School of Computer Science ComputerAided Software Engineering (CASE)計(jì)算機(jī)輔助軟件工程 ? Application of puter technology to the software development process itself ? Project planning tools ? Project management tools( Microsoft Project 202 2022) ? Documentation tools ? Prototyping and simulation tools ? Interface design tools ? Programming tools (. code generator) School of Computer Science Documentation文檔 ? User documentation ? Manual ? Tutorial(指南) ? Installation guide ? Reference manual ? Help packages ? System documentation ? Source codes ? Record of specification development ? System specifications(說明書) School of Computer Science Software Ownership(所有權(quán)) and Liability(責(zé)任) ? Copyright laws(版權(quán)法) ? Literary(文學(xué)) works vs. software ? Look and feel of a software system ? Lotus vs. Mosaic ? Patents(專利) ? A longstanding principle ? RSA algorithm(一種加密算法) ? Trade secret laws ? Liability limitations(有限責(zé)任) ? Disclaimer ? Level of care School of Computer Science 作業(yè) ? 第 5章: P167: 1 42 ? 第 6章: P210: 21 ? 第 7章: 30 。編寫測(cè)試分析報(bào)告。編寫概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)說明書和測(cè)試計(jì)劃初稿。 通常,軟件生命周期分三個(gè)階段: 軟件定義、軟件開發(fā)、運(yùn)行維護(hù)。 生存周期方法學(xué)就指從時(shí)間角度對(duì)軟件開發(fā)和維護(hù)的復(fù)雜問題進(jìn)行分解,把軟件生存的漫長(zhǎng)周期依次劃分為若干個(gè)階段,每個(gè)階段有相對(duì)獨(dú)立的任務(wù),然后逐步完成每個(gè)階段的任務(wù)。 可用性指軟件基本結(jié)構(gòu)、實(shí)現(xiàn)及文檔為用戶可用的程度。 School of Computer Science ? 軟件質(zhì)量得不到保證 – 軟件越來越多的應(yīng)用于安全猶關(guān) (safety critical)的系統(tǒng),對(duì)軟件質(zhì)量提出更高的要求 – 80年代歐洲亞麗安娜火箭的發(fā)射失敗,原因是軟件錯(cuò)誤 – 美國(guó)阿托拉斯火箭的發(fā)射失敗,原因是軟件故障 – 我國(guó)某型號(hào)導(dǎo)彈,由于軟件問題致使打靶失敗 School of Computer Science ? 進(jìn)度難以控制 – 項(xiàng)目延期比比皆是 – 由于進(jìn)度問題而取消的軟件項(xiàng)目較常見 – 只有一小部分的項(xiàng)目能夠按期完成 ? 維護(hù)非常困難 – 軟件維護(hù)的多樣性 – 軟件維護(hù)的復(fù)雜性 – 軟件維護(hù)的副作用 School of Computer Science 產(chǎn)生軟件危機(jī)的根源 ? 復(fù)雜性高 – 邏輯產(chǎn)品,邏輯復(fù)雜性遠(yuǎn)高于硬件復(fù)雜性 – 軟件的復(fù)雜性隨規(guī)模呈指數(shù)級(jí)上升 ? 規(guī)模大 – 應(yīng)用擴(kuò)大,代碼量, 1000萬行,仍在不斷膨脹影響軟件生產(chǎn)率和質(zhì)量的因素比較復(fù)雜 – 人員的能力和水平 – 團(tuán)隊(duì)合作 ? 缺乏有效、系統(tǒng)原理、原則、方法和工具的指導(dǎo)和輔助 School of Computer Science Software Engineering vs. Other Engineering Fields傳統(tǒng)工程 ? Building blocks(構(gòu)件,組件) ? Role of tolerances(誤差:傳統(tǒng)工程允許誤差范圍,軟件只有正確與不正確之分) ? Metrics(度量:傳統(tǒng)工程度量可通過故障的平均時(shí)間,而軟件不存在磨損) School of Comp