版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,1,軟件工程學(xué)概述可行性分析與需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)實(shí)現(xiàn)維護(hù)面向?qū)ο蠓椒▽W(xué)引論面向?qū)ο蠓治雒嫦驅(qū)ο笤O(shè)計(jì),復(fù)習(xí),2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,2,軟件工程學(xué)概述,軟件危機(jī)定義:指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。典型表現(xiàn):開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確;用戶對“已完成的”軟件系統(tǒng)不滿意; “閉門造車”; 軟件質(zhì)量不可靠;軟件常常是不可維護(hù)
2、的;軟件成本的比例逐年上升;軟件產(chǎn)品“供不應(yīng)求”;產(chǎn)生軟件危機(jī)的原因軟件的規(guī)模加大、復(fù)雜性提高、性能增強(qiáng);軟件是邏輯產(chǎn)品, 尚未完全認(rèn)識(shí)其本質(zhì)和特點(diǎn); 缺乏系統(tǒng)的開發(fā)、維護(hù)大型軟件項(xiàng)目的技術(shù)手段和管理方法;用戶和軟件開發(fā)人員的理解鴻溝;錯(cuò)誤的認(rèn)識(shí)和作法,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,3,軟件工程學(xué)概述,軟件工程定義軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)
3、軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它。本質(zhì)特性軟件工程的中心課題是控制復(fù)雜性和諧地合作是開發(fā)軟件的關(guān)鍵……,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,4,軟件工程學(xué)概述,軟件工程的7條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工
4、程實(shí)踐的必要性,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,5,軟件工程學(xué)概述,軟件生命周期是軟件產(chǎn)品或系統(tǒng)一系列相關(guān)活動(dòng)的全周期。軟件生命周期的3個(gè)大階段軟件定義: 確定軟件開發(fā)總目標(biāo);確定工程的可行性;導(dǎo)出實(shí)現(xiàn)策略及系統(tǒng)功能;估計(jì)資源和成本,并且制定工程進(jìn)度表。問題定義、可行性研究、需求分析軟件開發(fā): 具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測試、綜合測試軟件維護(hù): 使軟件持久地滿足用戶的需要,2
5、024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,6,軟件工程學(xué)概述,生命周期中各階段的任務(wù)1. 問題定義: “要解決的問題是什么?”; 確定用戶要求解決的性質(zhì)、工程的目標(biāo)和規(guī)模。2. 可行性研究: “對于上一個(gè)階段所確定的問題有行得通的解決辦法嗎?”, 經(jīng)濟(jì)可行性、技術(shù)可行性、法律可行性、不同的方案3. 需求分析: “為了解決這個(gè)問題,目標(biāo)系統(tǒng)必須做什么”, 確定系統(tǒng)必須具有的功能和性能,系統(tǒng)要求的運(yùn)行環(huán)境,并且預(yù)測系統(tǒng)發(fā)展的前
6、景。4. 總體設(shè)計(jì)(概要設(shè)計(jì)): “概括地說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”; 設(shè)計(jì)出實(shí)現(xiàn)目標(biāo)系統(tǒng)的幾種可能的方案。推薦一個(gè)最佳方案。5. 詳細(xì)設(shè)計(jì): “應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢?”; 設(shè)計(jì)出程序的詳細(xì)規(guī)格說明。6. 編碼和單元測試: 寫出正確的容易理解、容易維護(hù)的程序模塊; 仔細(xì)測試編寫出的每一個(gè)模塊。7. 綜合測試: 集成測試和驗(yàn)收測試,現(xiàn)場測試或平行運(yùn)行8. 軟件維護(hù): 使系統(tǒng)持久地滿足用戶的需要。包括:
7、改正性維護(hù),適應(yīng)性維護(hù),完善性維護(hù),預(yù)防性維護(hù)。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,7,軟件工程學(xué)概述,生命周期模型規(guī)定了把生命周期劃分成哪些階段及各個(gè)階段的執(zhí)行順序,因此,也稱為過程模型。典型的過程模型瀑布模型(Waterfall model)快速原型開發(fā)模型(Rapid Prototyping model)增量模型(Incremental model)螺旋模型(Spiral model)噴泉模型其它模型極限編程
8、XP(eXtreme Programming) RUP(Rational Unified Process)建造—修補(bǔ)模型(Build-and-fix model),2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,8,軟件工程學(xué)概述,瀑布模型特點(diǎn)階段間具有順序性和依賴性推遲實(shí)現(xiàn)的觀點(diǎn)清楚地區(qū)分邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn)。質(zhì)量保證的觀點(diǎn)(文檔驅(qū)動(dòng))每個(gè)階段都必須完成規(guī)定的文檔每個(gè)階段結(jié)束前都要對所完成的文檔進(jìn)行評
9、審缺點(diǎn)開發(fā)過程一般不能逆轉(zhuǎn),否則代價(jià)太大。規(guī)格說明很難理解:“我知道這是按我的要求做的,但不是我想要的樣子?!避浖膶?shí)際情況必須到項(xiàng)目開發(fā)的后期客戶才能看到。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,9,軟件工程學(xué)概述,增量模型把軟件產(chǎn)品作為一系列增量構(gòu)件來設(shè)計(jì)、編碼、集成和測試。優(yōu)點(diǎn)每個(gè)階段交付一個(gè)可用的產(chǎn)品。減少一個(gè)全新產(chǎn)品給客戶帶來的心理上的影響。分階段地交付產(chǎn)品不需要大的資金支出。需求經(jīng)常變化,增量模型的靈活
10、性使其具有更加優(yōu)越的適用性。缺點(diǎn)需要一個(gè)開放的結(jié)構(gòu),方便構(gòu)件的加入。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,10,軟件工程學(xué)概述,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,11,可行性分析與需求分析,需求分析的任務(wù)準(zhǔn)確地回答“系統(tǒng)必須做什么?”“分析軟件需求和書寫軟件需求規(guī)格說明書”軟件需求用戶解決問題或達(dá)到目標(biāo)所需要的條件或能力;系統(tǒng)或系統(tǒng)部件要滿足合同、標(biāo)準(zhǔn)、規(guī)范或其他正式規(guī)定文檔所需具有的條件或能力反映上述兩個(gè)定義
11、中所描述的條件或能力的文檔說明需求層次:業(yè)務(wù)需求?用戶需求?功能與非功能需求具體任務(wù)確定對系統(tǒng)的綜合要求功能需求、性能需求、可靠性和可用性需求、出錯(cuò)處理需求、接口需求、約束、逆向需求、擴(kuò)展需求分析系統(tǒng)的數(shù)據(jù)要求導(dǎo)出系統(tǒng)的邏輯模型書寫軟件需求規(guī)格說明書修正系統(tǒng)開發(fā)計(jì)劃,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,12,需求分析,數(shù)據(jù)流圖數(shù)據(jù)流圖(DFD)符號數(shù)據(jù)源點(diǎn)/數(shù)據(jù)終點(diǎn)數(shù)據(jù)流數(shù)據(jù)存儲(chǔ)加工/處理根據(jù)描述畫數(shù)據(jù)
12、流圖,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,13,總體設(shè)計(jì),總體設(shè)計(jì)的任務(wù)“概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”系統(tǒng)劃分:即確定組成系統(tǒng)的程序、文件、數(shù)據(jù)庫、人工過程和文檔等設(shè)計(jì)軟件的結(jié)構(gòu):即確定每個(gè)程序是由哪些模塊組成,以及這些模塊相互間的關(guān)系。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,14,總體設(shè)計(jì),設(shè)計(jì)原理模塊化模塊化的根據(jù)C(P1+P2)> C(P1)+ C(P2) E(P1+P2)> E(P1)+ E(P2)抽象
13、抽象就是抽出事物的本質(zhì)特性而暫不考慮它們的細(xì)節(jié)逐步求精為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的考慮。信息隱藏和局部化信息隱藏原理:應(yīng)該這樣設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。局部化: 把一些關(guān)系密切的軟件元素物理地放得彼此靠近。模塊獨(dú)立每個(gè)模塊完成一個(gè)相對獨(dú)立的子功能,并且與其它模塊間的接口簡單。模塊獨(dú)立性的衡量標(biāo)準(zhǔn)模塊內(nèi)聚(Cohension) :
14、模塊內(nèi)各元素交互的程度模塊耦合(Coupling) :模塊間交互程度,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,15,總體設(shè)計(jì),各種耦合的含義設(shè)計(jì)時(shí)力爭做到低耦合。應(yīng)該采取的設(shè)計(jì)原則是:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公用耦合的范圍,完全不用內(nèi)容耦合。,耦合內(nèi)容耦合共用耦合控制耦合印記(特征)耦合數(shù)據(jù)耦合,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,16,總體設(shè)計(jì),各種內(nèi)聚的含義設(shè)計(jì)時(shí)力爭做到高內(nèi)聚,并且能夠辨認(rèn)
15、出低內(nèi)聚的模塊,通過修改設(shè)計(jì)提高模塊的內(nèi)聚程度。,內(nèi)聚偶然性內(nèi)聚邏輯性內(nèi)聚時(shí)間性內(nèi)聚過程性內(nèi)聚通信性內(nèi)聚順序內(nèi)聚功能性內(nèi)聚信息性內(nèi)聚,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,17,總體設(shè)計(jì),啟發(fā)規(guī)則改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性模塊規(guī)模應(yīng)該適中深度、寬度、扇出和扇入都應(yīng)適當(dāng)模塊的作用域應(yīng)該在控制域之內(nèi)模塊的作用域:受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。模塊的控制域:模塊本身以及所有直接或間接從屬于它的模塊的集合
16、。所有受判定影響的模塊應(yīng)該都從屬于做出判定的那個(gè)模塊,最好局限于做出判定的那個(gè)模塊本身及它的直屬下級模塊。力爭降低模塊接口的復(fù)雜程度設(shè)計(jì)單入口單出口的模塊模塊功能應(yīng)該可以預(yù)測,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,18,總體設(shè)計(jì),模塊的判定作用范圍(a) 差的結(jié)構(gòu)圖; (b) 不理想的結(jié)構(gòu)圖; (c) 理想的結(jié)構(gòu)圖,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,19,總體設(shè)計(jì),結(jié)構(gòu)圖描述軟件系統(tǒng)的模塊層次結(jié)構(gòu),清楚地反映出程序
17、中各模塊之間的調(diào)用關(guān)系和數(shù)據(jù)傳遞。,選擇調(diào)用,循環(huán)調(diào)用,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,20,總體設(shè)計(jì),面向數(shù)據(jù)流的設(shè)計(jì)方法基本思想: DFD ? 結(jié)構(gòu)圖兩種信息流類型變換流:掌握從變換流到初始結(jié)構(gòu)圖的轉(zhuǎn)換事務(wù)流,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,21,詳細(xì)設(shè)計(jì),詳細(xì)設(shè)計(jì)的任務(wù)不是具體地編寫程序,而是設(shè)計(jì)程序的“藍(lán)圖”,確定每個(gè)模塊的處理過程。結(jié)構(gòu)程序設(shè)計(jì)自頂向下逐步求精;具有單入、單出的控制結(jié)構(gòu)(取消
18、GOTO語句);結(jié)構(gòu)化定理:任何單入口單出口的程序都可以由“順序”、“選擇”和“循環(huán)”三種基本結(jié)構(gòu)實(shí)現(xiàn)。過程設(shè)計(jì)的工具(重點(diǎn)是畫圖)程序流程圖盒圖PAD圖判定表,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,22,詳細(xì)設(shè)計(jì),程序流程圖的基本符號,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,23,詳細(xì)設(shè)計(jì),PAD圖的基本符號,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,24,詳細(xì)設(shè)計(jì),判定表,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,25,實(shí)
19、現(xiàn),編碼風(fēng)格編碼風(fēng)格的作用就是使代碼容易讀;風(fēng)格良好的代碼更容易閱讀和理解,錯(cuò)誤更少;使用一致和有意義的標(biāo)識(shí)符名用縮進(jìn)顯示程序結(jié)構(gòu)用加括號的方式排除二義性避免大量使用循環(huán)嵌套和條件嵌套當(dāng)心運(yùn)算符的副作用把數(shù)定義稱常量利用sizeof()計(jì)算對象的大小清晰的代碼,而非最巧妙的代碼程序的注釋序言性注釋和功能性注釋對一段程序注釋,而不是每一個(gè)語句使用數(shù)據(jù)結(jié)束標(biāo)記(EOF、BOF),不要指定數(shù)據(jù)的數(shù)目來判斷文件的結(jié)束
20、。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,26,實(shí)現(xiàn),測試測試的目的就是在軟件投入生產(chǎn)性運(yùn)行之前,盡可能多地發(fā)現(xiàn)軟件中的錯(cuò)誤。測試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過程。調(diào)試的目的是診斷并改正錯(cuò)誤。對軟件規(guī)格說明、設(shè)計(jì)和編碼的最后復(fù)審。開發(fā)總工作量的40%以上,極端情況下,其他開發(fā)步驟總成本的3倍到5倍。好的測試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試方案。成功的測試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測試。測試只能查找
21、出程序中的錯(cuò)誤,不能證明程序中沒有錯(cuò)誤。Pareto原理:80%的錯(cuò)誤很可能是20%的模塊造成的。從“小規(guī)?!睖y試逐步到“大規(guī)?!睖y試。 窮舉測試是不可能的。為了達(dá)到最佳的測試效果,應(yīng)該由獨(dú)立的第三方從事測試工作。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,27,實(shí)現(xiàn),測試方法黑盒測試:又稱功能測試或數(shù)據(jù)驅(qū)動(dòng)測試白盒測試:又稱結(jié)構(gòu)測試或邏輯驅(qū)動(dòng)測試測試步驟模塊測試(單元測試)在這個(gè)測試步驟中所發(fā)現(xiàn)的往往是編碼和詳細(xì)設(shè)計(jì)的
22、錯(cuò)誤子系統(tǒng)測試模塊放在一起形成一個(gè)子系統(tǒng)來測試著重測試模塊的接口系統(tǒng)測試經(jīng)過測試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來測試發(fā)現(xiàn)的往往是軟件設(shè)計(jì)中的錯(cuò)誤,也可能發(fā)現(xiàn)需求說明中的錯(cuò)誤驗(yàn)收測試(確認(rèn)測試)它的目標(biāo)是驗(yàn)證軟件的有效性(如果軟件的功能和性能如同用戶所合理期待的那樣,軟件就是有效的)用戶積極參與,可能主要使用實(shí)際數(shù)據(jù)進(jìn)行測試發(fā)現(xiàn)的往往是系統(tǒng)需求說明書中的錯(cuò)誤平行運(yùn)行,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,28,實(shí)現(xiàn),
23、回歸測試回歸測試是指重新執(zhí)行已經(jīng)做過的測試的某個(gè)子集,以保證變化(程序改錯(cuò)、新模塊加入等)沒有帶來非預(yù)期的副作用。(?) Alpha測試Alpha測試由用戶在開發(fā)者的場所進(jìn)行,并且在開發(fā)者對用戶的“指導(dǎo)”下進(jìn)行測試。開發(fā)者負(fù)責(zé)記錄發(fā)現(xiàn)的錯(cuò)誤和使用中遇到的問題??傊?,Alpha測試是在受控的環(huán)境中進(jìn)行的。(?) Beta測試軟件的多個(gè)用戶在一個(gè)或多個(gè)用戶的實(shí)際使用環(huán)境下進(jìn)行的測試。開發(fā)者通常不在測試現(xiàn)場,是在開發(fā)者無法控制的環(huán)境
24、下進(jìn)行的軟件現(xiàn)場應(yīng)用。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,29,實(shí)現(xiàn),集成測試方法非漸增式集成先分別測試每個(gè)模塊,再把所有模塊按設(shè)計(jì)要求放在一起結(jié)合成所要的程序。先進(jìn)行單元測試,再進(jìn)行集成測試漸增式集成將單元測試與集成測試結(jié)合在一起,把下一個(gè)要測試的模塊同已經(jīng)測試好的那些模塊結(jié)合起來進(jìn)行測試,測試完以后再把下一個(gè)應(yīng)該測試的模塊結(jié)合進(jìn)來測試。自頂向下(Top-Down)集成自底往上(Bottom-Up)集成三明治式
25、(Sandwich)集成,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,30,實(shí)現(xiàn),幾種集成測試方法的優(yōu)缺點(diǎn),2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,31,實(shí)現(xiàn),白盒測試技術(shù):邏輯覆蓋定義:以程序內(nèi)部的邏輯結(jié)構(gòu)為基礎(chǔ)的設(shè)計(jì)測試用例的技術(shù)類型語句覆蓋:選擇足夠多的測試數(shù)據(jù),使被測程序中每個(gè)語句至少執(zhí)行一次。 判定覆蓋:判定覆蓋又叫分支覆蓋,選擇足夠多的測試數(shù)據(jù)使每個(gè)判定的每個(gè)分支都至少執(zhí)行一次。條件覆蓋:選擇足夠多的測試數(shù)據(jù)使每個(gè)判定
26、表達(dá)式中的每個(gè)條件都取到各種可能的結(jié)果判定/條件覆蓋:選取足夠多的測試數(shù)據(jù),使得判定表達(dá)式中的每個(gè)條件都取到各種可能的值,而且每個(gè)判定表達(dá)式也都取到各種可能的結(jié)果。條件組合覆蓋:選取足夠多的測試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次。設(shè)計(jì)測試用例(會(huì)做),2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,32,實(shí)現(xiàn),黑盒測試技術(shù)等價(jià)劃分把程序的輸入域劃分成若干個(gè)數(shù)據(jù)類,每類中的一個(gè)典型值在測試中的作用與這一類中所有其
27、他值的作用相同。據(jù)此導(dǎo)出測試用例。設(shè)計(jì)測試用例(1) 設(shè)計(jì)一個(gè)新的測試方案以盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)這一步驟直到所有有效等價(jià)類都被覆蓋為止;(2) 設(shè)計(jì)一個(gè)新的測試方案,使它覆蓋一個(gè)而且只覆蓋一個(gè)尚未被覆蓋的無效等價(jià)類,重復(fù)這一步驟直到所有無效等價(jià)類都被覆蓋為止。邊界值分析著重測試輸入等價(jià)類和輸出等價(jià)類的邊界,選取的測試數(shù)據(jù)應(yīng)該剛好等于、剛剛小于和剛剛大于邊界值。會(huì)用等價(jià)劃分和邊界值分析法設(shè)計(jì)測試用例,20
28、24/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,33,維護(hù),所謂軟件維護(hù)就是在軟件已經(jīng)交付使用之后,為了改正錯(cuò)誤或滿足新的需要而修改軟件的過程。保證軟件在一個(gè)相當(dāng)長的時(shí)期能夠正常運(yùn)行。60%以上, 這個(gè)百分比還在持續(xù)上升。維護(hù)類型改正性維護(hù)診斷和改正錯(cuò)誤的過程。17%~21%適應(yīng)性維護(hù)為了適應(yīng)環(huán)境的變化進(jìn)行的修改軟件的活動(dòng)。 18%~25%完善性維護(hù)增加新功能或修改已有功能。 50%~66%預(yù)防性維護(hù)為了改進(jìn)未來的可維護(hù)
29、性或可靠性,或?yàn)榱私o未來的改進(jìn)奠定更好的基礎(chǔ)而修改軟件。4%左右,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,34,維護(hù),可維護(hù)性:維護(hù)人員理解、改正、改動(dòng)或改進(jìn)這個(gè)軟件的難易程度。提高可維護(hù)性是支配軟件工程方法學(xué)所有步驟的關(guān)鍵目標(biāo)。決定軟件可維護(hù)性的因素1)可理解性2)可測試性3)可修改性4)可移植性5)可重用性,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,35,面向?qū)ο蠓椒▽W(xué)引論,面向?qū)ο蠓椒▽W(xué)的4個(gè)要點(diǎn)客觀世界是由各種對象
30、(Object)組成。面向?qū)ο蟮能浖到y(tǒng)是由對象組成的。對象組成對象類(Class)。類是具有相同屬性和行為的對象的集合。每個(gè)對象類定義了一組數(shù)據(jù)和一組方法。按照子類(派生類)與父類(基類)的關(guān)系,對象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(類等級)。子類繼承(inheritance)父類的數(shù)據(jù)和方法。對象彼此之間僅能通過傳遞消息(Message)互相聯(lián)系。,OO=objects+classes+inheritance+communicatio
31、n with messages面向?qū)ο?= 對象 + 類 + 繼承 + 消息通信,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,36,面向?qū)ο蠓椒▽W(xué)引論,總存在用錯(cuò)誤的數(shù)據(jù)調(diào)用正確的模塊,或用正確的數(shù)據(jù)調(diào)用錯(cuò)誤的模塊的危險(xiǎn)。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,37,面向?qū)ο蠓椒▽W(xué)引論,面向?qū)ο蟮囊恍└拍顚ο螅悍庋b了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作(服務(wù)或方法)的封裝體。類:具有相同數(shù)據(jù)和相同操作的一組相似對象的集合消息
32、:要求某個(gè)對象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明。方法:對象所能執(zhí)行的操作,也就是類中所定義的服務(wù)。(如C++的成員函數(shù))屬性:類中所定義的數(shù)據(jù)(如C++的數(shù)據(jù)成員)封裝:表示對象狀態(tài)的數(shù)據(jù)和實(shí)現(xiàn)操作的代碼與局部數(shù)據(jù),都被封裝在黑盒子里面,不能從外面直接訪問或修改這些數(shù)據(jù)和代碼。繼承:是子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。多態(tài)性:同一方法,不同的子類有不同的實(shí)現(xiàn)。函數(shù)重載:是指在同一作用域內(nèi)的若干個(gè)參數(shù)
33、特征不同的函數(shù)可以使用相同的函數(shù)名字。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,38,面向?qū)ο蠓治?面向?qū)ο蠓治龌卷樞驅(qū)ふ翌悾?amp;-對象;識(shí)別結(jié)構(gòu);識(shí)別主題;定義屬性;建立動(dòng)態(tài)模型;建立功能模型;定義服務(wù)。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,39,面向?qū)ο蠓椒▽W(xué),面向?qū)ο蠼HN模型對象模型:它是對模擬客觀世界實(shí)體的對象以及對象彼此間的關(guān)系的映射,描述系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)。動(dòng)態(tài)模型:描述系統(tǒng)的控制結(jié)構(gòu)。功能
34、模型:描述系統(tǒng)的功能建模圖形工具(根據(jù)描述畫圖)類圖:類圖描述類及類與類之間的靜態(tài)關(guān)系(關(guān)聯(lián)、聚集、泛化等)。類的狀態(tài)圖:通過描繪對象的狀態(tài)及引起對象狀態(tài)轉(zhuǎn)換的事件,來表示對象的行為。用例圖:描述的是外部行為者所理解的系統(tǒng)功能。系統(tǒng)、行為者、用例及用例之間的關(guān)系。 事件跟蹤圖(順序圖),2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,40,面向?qū)ο笤O(shè)計(jì),面向?qū)ο笤O(shè)計(jì)的任務(wù)系統(tǒng)設(shè)計(jì): 確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu);對象設(shè)計(jì)
35、: 確定解空間中的類、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)服務(wù)的算法。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,41,面向?qū)ο笤O(shè)計(jì),面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則模塊化、抽象、信息隱藏耦合(1) 交互耦合對象之間的耦合通過消息連接來實(shí)現(xiàn),則這種耦合就是交互耦合。應(yīng)該盡量減少消息中包含的參數(shù)個(gè)數(shù),降低參數(shù)的復(fù)雜程度。減少對象發(fā)送(或接收)的消息數(shù)。(2) 繼承耦合繼承是一般化類與特殊類之間耦合的一種形式。設(shè)計(jì)應(yīng)該使特殊類盡量多繼承并使用其一般化類的屬
36、性和服務(wù)。內(nèi)聚(1) 服務(wù)內(nèi)聚一個(gè)服務(wù)應(yīng)該完成一個(gè)且僅完成一個(gè)功能。(2) 類內(nèi)聚類的屬性和服務(wù)應(yīng)該全都是完成該類對象的任務(wù)所必需的,其中不包含無用的屬性或服務(wù)。(3) 一般-特殊內(nèi)聚一般-特殊結(jié)構(gòu)應(yīng)該是對相應(yīng)的領(lǐng)域知識(shí)的正確抽取。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,42,面向?qū)ο笤O(shè)計(jì),重用重用有兩方面的含義: 一是盡量使用已有的類,二是如果確實(shí)需要?jiǎng)?chuàng)建新類,則在設(shè)計(jì)這些新類的協(xié)議時(shí),應(yīng)該考慮將來的可重復(fù)使用性
37、。類構(gòu)件的重用方式(1) 實(shí)例重用按照需要?jiǎng)?chuàng)建類的實(shí)例用幾個(gè)簡單的對象作為類的成員創(chuàng)建出一個(gè)更復(fù)雜的類。(2) 繼承重用為提高繼承重用的效果,關(guān)鍵是設(shè)計(jì)一個(gè)合理的、具有一定深度的類構(gòu)件繼承層次結(jié)構(gòu)。(3) 多態(tài)重用利用多態(tài)性不僅可以使對象的對外接口更加一般化,從而降低了消息連接的復(fù)雜程度,而且還提供了一種簡便可靠的軟構(gòu)件組合機(jī)制。轉(zhuǎn)換接口:類構(gòu)件在重用時(shí)都必須重新定義的服務(wù)的集合。擴(kuò)充接口:如果在派生類中沒有給出擴(kuò)充
38、接口的新算法,則將繼承父類中的算法。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,43,面向?qū)ο笤O(shè)計(jì),子系統(tǒng)間的交互方式客戶-供應(yīng)商關(guān)系:單向交互 “客戶” 子系統(tǒng)調(diào)用 “供應(yīng)商” 子系統(tǒng), “供應(yīng)商” 子系統(tǒng)完成某些服務(wù)工作并返回結(jié)果。(2) 平等伙伴關(guān)系:雙向交互每個(gè)子系統(tǒng)都可能調(diào)用其他子系統(tǒng),因此,每個(gè)子系統(tǒng)都必須了解其他子系統(tǒng)的接口。,2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,44,面向?qū)ο笤O(shè)計(jì),設(shè)計(jì)關(guān)聯(lián)實(shí)現(xiàn)關(guān)聯(lián)的具體策
39、略單向遍歷雙向遍歷用屬性實(shí)現(xiàn)兩個(gè)方向的關(guān)聯(lián)用獨(dú)立的關(guān)聯(lián)對象實(shí)現(xiàn)雙向關(guān)聯(lián),2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,45,面向?qū)ο笤O(shè)計(jì),1,用屬性實(shí)現(xiàn)一個(gè)方向的關(guān)聯(lián),2,用屬性實(shí)現(xiàn)兩個(gè)方向的關(guān)聯(lián),3,用獨(dú)立的關(guān)聯(lián)對象實(shí)現(xiàn)雙向關(guān)聯(lián),2024/3/27,上海大學(xué)計(jì)算機(jī)學(xué)院,46,面向?qū)ο笤O(shè)計(jì),設(shè)計(jì)優(yōu)化提高效率的幾項(xiàng)技術(shù)(1)增加冗余關(guān)聯(lián)以提高訪問效率(2)調(diào)整查詢次序(3)保留派生屬性調(diào)整繼承關(guān)系(1)抽象與具體(2)為提
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程學(xué)籍管理系統(tǒng)可行性分析報(bào)告
- 軟件工程學(xué)概述
- 軟件工程-可行性分析報(bào)告
- 軟件工程機(jī)票預(yù)訂系統(tǒng)總體設(shè)計(jì)
- 軟件工程學(xué)概述共4學(xué)時(shí)
- 軟件工程分析與設(shè)計(jì)
- 軟件工程詳細(xì)設(shè)計(jì)報(bào)告
- 軟件工程學(xué)試題
- 軟件工程中的錯(cuò)誤跟蹤工具總體設(shè)計(jì)及框架實(shí)現(xiàn).pdf
- 軟件工程需求分析文檔模板
- 軟件工程需求分析樣例
- 輸配電網(wǎng)高級分析軟件總體設(shè)計(jì)與實(shí)現(xiàn).pdf
- 綜合監(jiān)控分析平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)-軟件工程
- 系統(tǒng)可測性分析與輔助設(shè)計(jì)軟件總體設(shè)計(jì)及關(guān)鍵模塊實(shí)現(xiàn).pdf
- PTN網(wǎng)絡(luò)規(guī)劃與優(yōu)化軟件系統(tǒng)的總體設(shè)計(jì)與詳細(xì)實(shí)現(xiàn).pdf
- 光網(wǎng)絡(luò)規(guī)劃與優(yōu)化軟件系統(tǒng)的總體設(shè)計(jì)與詳細(xì)實(shí)現(xiàn).pdf
- 軟件工程課程設(shè)計(jì)---網(wǎng)上購書系統(tǒng)需求分析
- 軟件可行性分析報(bào)告
- 軟件工程面向?qū)ο蠓治雠c設(shè)計(jì)
- 軟件工程可行性研究報(bào)告資料
評論
0/150
提交評論