版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章系統(tǒng)工程與軟件工程典型的軟件開(kāi)發(fā)方法了解各類軟件開(kāi)發(fā)方法的基本思想Parnas方法、面向數(shù)據(jù)結(jié)構(gòu)、面向數(shù)據(jù)流、面向?qū)ο?、基于?gòu)件、面向服務(wù)…軟件工程過(guò)程了解軟件工程過(guò)程的基本思想系統(tǒng)工程特點(diǎn):系統(tǒng)性運(yùn)用自然科學(xué)、管理科學(xué)理論對(duì)系統(tǒng)進(jìn)行優(yōu)化設(shè)計(jì)。即用數(shù)學(xué)模型和邏輯模型來(lái)描述系統(tǒng),通過(guò)模擬系統(tǒng)行為、求得系統(tǒng)的最優(yōu)組合方案和最優(yōu)的運(yùn)行方案。工程性 運(yùn)用工程學(xué)原理,實(shí)施系統(tǒng)開(kāi)發(fā)全過(guò)程管理,實(shí)現(xiàn)階段性過(guò)程控制,達(dá)到軟件開(kāi)發(fā)和軟件質(zhì)量要求。工程實(shí)施過(guò)程文檔的形式和管理符合通行標(biāo)準(zhǔn)。舉例傳送帶分類系統(tǒng)該系統(tǒng)對(duì)零部件進(jìn)行分類。每一個(gè)零部件上有一個(gè)條形碼標(biāo)識(shí)號(hào),并在傳送帶末端分別送到六個(gè)箱子中。零部件以隨機(jī)的順序通過(guò),且其間的距離相同建模準(zhǔn)備零部件標(biāo)識(shí)號(hào)的形式?其間的距離?到達(dá)頻率?傳送帶的速度?末端可擴(kuò)展空間?箱子的間距?錯(cuò)誤標(biāo)識(shí)?箱滿情況?狀態(tài)回傳?出錯(cuò)率?進(jìn)度和預(yù)算約束?建議方案方案一:人工完成方案二:條形碼閱讀器方案三:機(jī)器手尋求最優(yōu)項(xiàng)目考慮:成本、進(jìn)度效益分析:回報(bào)率、市場(chǎng)前景技術(shù)分析:技術(shù)可行性可用資源:人員、設(shè)備環(huán)境接口:內(nèi)部、外部互聯(lián)法律考慮:產(chǎn)權(quán)、風(fēng)險(xiǎn)軟件工程學(xué)科范疇計(jì)算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造軟件的模型與算法;工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評(píng)估成本以及確定權(quán)衡等;管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。軟件開(kāi)發(fā)的工程原則制訂分階段的項(xiàng)目計(jì)劃;選取適宜的開(kāi)發(fā)模型;采用合適的開(kāi)發(fā)方法;合理配備開(kāi)發(fā)小組人員;樹(shù)立強(qiáng)烈的質(zhì)量保證意識(shí);不斷改進(jìn)軟件過(guò)程。Parnas重要論述對(duì)于軟件系統(tǒng)的設(shè)計(jì)和建造最重要的除數(shù)學(xué)基礎(chǔ)(特別是數(shù)理邏輯)還有模塊化設(shè)計(jì)、規(guī)范、抽象、信息隱藏等原則。軟件學(xué)科的基礎(chǔ)知識(shí)是計(jì)算機(jī)科學(xué),就象電力工程的基礎(chǔ)知識(shí)是物理學(xué)一樣。但并不是每門(mén)計(jì)算機(jī)科學(xué)課程都與軟件工程有關(guān)。過(guò)去三十多年以來(lái),軟件已經(jīng)越來(lái)越成為一種產(chǎn)品,建造產(chǎn)品的學(xué)科應(yīng)該是工程學(xué)科。面向數(shù)據(jù)結(jié)構(gòu)的方法適用于小系統(tǒng)的程序設(shè)計(jì)方法JSP,它以數(shù)據(jù)結(jié)構(gòu)作為開(kāi)發(fā)程序的基礎(chǔ)目標(biāo),采用逐步求精的思想構(gòu)造中系統(tǒng)的程序結(jié)構(gòu)。為滿足大系統(tǒng)設(shè)計(jì)要求,Jackson又提出了系統(tǒng)開(kāi)發(fā)方法JSD。特征:JSP運(yùn)用三種基本結(jié)構(gòu)及其組合表示數(shù)據(jù)結(jié)構(gòu),并據(jù)此導(dǎo)出程序結(jié)構(gòu)。為保證數(shù)據(jù)之間一致性,JSP需要解決輸入結(jié)構(gòu)、輸出結(jié)構(gòu)的順序沖突問(wèn)題。JSD引入進(jìn)程模型描述系統(tǒng)動(dòng)態(tài)特征,通過(guò)模型中的進(jìn)程與現(xiàn)實(shí)世界的實(shí)體聯(lián)系起來(lái),以確保模型行為和現(xiàn)實(shí)世界行為一致性。面向數(shù)據(jù)流的方法結(jié)構(gòu)化方法,也稱為面向功能的軟件開(kāi)發(fā)方法或面向數(shù)據(jù)流的軟件開(kāi)發(fā)方法。包括結(jié)構(gòu)化分析(SA)、結(jié)構(gòu)化設(shè)計(jì)(SD)、結(jié)構(gòu)化程序設(shè)計(jì)(SP)。特征SA是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有解決方案為止。SD是根據(jù)分析成果構(gòu)造軟件結(jié)構(gòu),并基于模塊化、自頂向下逐層細(xì)化,直到可實(shí)現(xiàn)模塊設(shè)計(jì)為止。SP是從程序的控制結(jié)構(gòu)入手,消除容易引起混亂的交叉跳轉(zhuǎn),并合理解決數(shù)據(jù)結(jié)構(gòu)訪問(wèn)的規(guī)范化和標(biāo)準(zhǔn)化問(wèn)題,直至能夠編寫(xiě)出結(jié)構(gòu)化的程序?yàn)橹?。結(jié)構(gòu)化方法適合與瀑布模型結(jié)合。面向?qū)ο蟮能浖_(kāi)發(fā)面向?qū)ο蠹夹g(shù)就是基于對(duì)象概念,以對(duì)象為中心,以類和繼承為構(gòu)造機(jī)制,來(lái)認(rèn)識(shí)、理解、刻畫(huà)客觀世界和設(shè)計(jì)、構(gòu)建相應(yīng)的軟件系統(tǒng)。八十年代末,隨著面向?qū)ο蠹夹g(shù)成為研究的熱點(diǎn)出現(xiàn)了幾十種支持軟件開(kāi)發(fā)的面向?qū)ο蠓椒?。統(tǒng)一建模語(yǔ)言UML綜合了Booch,OMT,和Jacobson方法優(yōu)點(diǎn),被作為是一種通用表示。特征面向?qū)ο筌浖到y(tǒng)中的任何元素都是對(duì)象,復(fù)雜的軟件對(duì)象由比較簡(jiǎn)單的對(duì)象組合而成。每個(gè)對(duì)象都?xì)w屬于一個(gè)對(duì)象類,每個(gè)對(duì)象類都封裝了一組數(shù)據(jù)和一組方法。若干對(duì)象類組成一個(gè)層次結(jié)構(gòu),下層的派生類繼承上層的基類特性;低層的特性可屏蔽高層的同名特性(多態(tài))。支持并發(fā)程序設(shè)計(jì)和迭代開(kāi)發(fā)過(guò)程?;跇?gòu)件的軟件開(kāi)發(fā)構(gòu)件是指模塊化的、可部署、可替換的軟件系統(tǒng)組成部分,封裝了內(nèi)部的具體實(shí)現(xiàn)并對(duì)外提供一組接口?;跇?gòu)件的軟件開(kāi)發(fā)(CBSD)通過(guò)整合已有的構(gòu)件來(lái)完成大型軟件系統(tǒng)的開(kāi)發(fā),其核心就是構(gòu)件級(jí)的可重用。特征構(gòu)件具有可重用性和互操作性,CBSD會(huì)增強(qiáng)系統(tǒng)可維護(hù)性、可擴(kuò)展性;參數(shù)化框架使得系統(tǒng)適應(yīng)性、靈活性增強(qiáng)。大粒度構(gòu)件的重用使得平均開(kāi)發(fā)費(fèi)用降低,開(kāi)發(fā)人員減少,開(kāi)發(fā)速度加快。CBSD將軟件實(shí)現(xiàn)從程序編寫(xiě)轉(zhuǎn)移到了系統(tǒng)裝配和整合,開(kāi)發(fā)人員更能專注于對(duì)領(lǐng)域的了解和分析。支持業(yè)務(wù)與實(shí)現(xiàn)分離,邏輯與數(shù)據(jù)分離,使系統(tǒng)易于升級(jí)。線性順序模型特點(diǎn)嚴(yán)格活動(dòng)序列;嚴(yán)格階段成果評(píng)審;不允許需求的不確定性;不顯式支持活動(dòng)迭代;要求用戶極大的耐心;開(kāi)發(fā)過(guò)程“阻塞”;RAD模型特點(diǎn)基于構(gòu)件的快速線性開(kāi)發(fā);大型項(xiàng)目需要足夠的人力組建足夠的RAD組;要求較高的業(yè)務(wù)水平和開(kāi)發(fā)水平;適合成熟領(lǐng)域的應(yīng)用開(kāi)發(fā);模塊劃分的過(guò)分獨(dú)立會(huì)帶來(lái)性能的降低;演化過(guò)程模型——體現(xiàn)軟件的變化特征,突出迭代思想——原型模型:以盡早占領(lǐng)市場(chǎng)為目的;可快速得到可演示版本;螺旋模型:不同版本、不同形式的不斷進(jìn)化;需要高水平的風(fēng)險(xiǎn)評(píng)估技術(shù);并發(fā)開(kāi)發(fā)模型:由用戶要求、管理決策和評(píng)審結(jié)果驅(qū)動(dòng);每一個(gè)軟件工程活動(dòng)觸發(fā)活動(dòng)網(wǎng)絡(luò)的狀態(tài)變遷;形式化開(kāi)發(fā)模型形式化方法分為形式化規(guī)約方法和形式化驗(yàn)證方法。形式化規(guī)約是通過(guò)具有明確數(shù)學(xué)定義的文法和語(yǔ)義的方法或語(yǔ)言對(duì)軟件的期望特性或者行為進(jìn)行的精確、簡(jiǎn)潔描述。形式化驗(yàn)證是基于已建立的形式化規(guī)約,對(duì)軟件的相關(guān)特性進(jìn)行評(píng)價(jià)的數(shù)學(xué)分析和證明?;谵D(zhuǎn)換模型的軟件開(kāi)發(fā)過(guò)程形式化規(guī)約+形式化驗(yàn)證+求精或變換+規(guī)則集
第二章軟件需求與需求規(guī)格說(shuō)明結(jié)構(gòu)化需求分析建模數(shù)據(jù)需求:實(shí)體關(guān)系圖建模功能需求:數(shù)據(jù)流圖建模行為需求:控制流圖設(shè)計(jì)的基本思想數(shù)據(jù)抽象、過(guò)程抽象、逐步求精模塊獨(dú)立性、高內(nèi)聚和低耦合結(jié)構(gòu)化設(shè)計(jì)從數(shù)據(jù)流圖構(gòu)造軟件結(jié)構(gòu)過(guò)程設(shè)計(jì)技術(shù):圖形化、表格和語(yǔ)言工具實(shí)體關(guān)系圖設(shè)計(jì)的基本思想數(shù)據(jù)抽象、過(guò)程抽象、逐步求精模塊獨(dú)立性、高內(nèi)聚和低耦合結(jié)構(gòu)化設(shè)計(jì)方法:基本原則:模塊化、先集中再分權(quán)、先分解再整合,逐步求精基本思想:以結(jié)構(gòu)化分析階段所產(chǎn)生的文檔(包括數(shù)據(jù)流圖、數(shù)據(jù)字典和軟件需求說(shuō)明書(shū))為基礎(chǔ),自頂向下,逐步求精和模塊化的過(guò)程。結(jié)構(gòu)化設(shè)計(jì)通??煞譃楦乓O(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)的任務(wù)是確定軟件系統(tǒng)的結(jié)構(gòu),進(jìn)行模塊劃分,確定每個(gè)模塊的功能、接口及模塊間的調(diào)用關(guān)系。詳細(xì)設(shè)計(jì)的任務(wù)是為每個(gè)模塊設(shè)計(jì)實(shí)現(xiàn)的細(xì)節(jié)。
第三章面向?qū)ο蟮幕靖拍顚?duì)象、類、抽象、封裝、繼承和多態(tài)、接口UML基礎(chǔ)需求調(diào)研和需求分析需求調(diào)研方法構(gòu)造用例圖面向?qū)ο蟮姆治龇治鲱悾哼吔珙?、控制類和?shí)體類構(gòu)造順序圖面向?qū)ο蠓治?OOA,Object-OrientedAnalysis)定義待解決問(wèn)題的類(對(duì)象)、類之間相互關(guān)聯(lián)和交互的方式、對(duì)象的內(nèi)在結(jié)構(gòu)和允許對(duì)象在一起工作的通信機(jī)制面向?qū)ο笤O(shè)計(jì)(OOD,Object-OrientedDesign)定義分析類在具體環(huán)境下的實(shí)現(xiàn)機(jī)制面向?qū)ο缶幊?OOP,Object-Orientedprogramming)利用面向?qū)ο蟮木幊陶Z(yǔ)言實(shí)現(xiàn)設(shè)計(jì)元素對(duì)象:定義:對(duì)象是由數(shù)據(jù)及其操作所構(gòu)成的封裝體特點(diǎn)每一個(gè)對(duì)象必須有一個(gè)名字以區(qū)別于其他對(duì)象(對(duì)象的標(biāo)識(shí)Identity);用狀態(tài)來(lái)描述對(duì)象的某些特征(對(duì)象的狀態(tài)State);有一組操作,每一個(gè)操作決定了對(duì)象的一種行為(對(duì)象的行為Behavior)類:定義:類是對(duì)一組具有相同的屬性、行為、關(guān)系和語(yǔ)義的對(duì)象的抽象描述類和對(duì)象的關(guān)系:對(duì)象是類的實(shí)例(Instance),類是創(chuàng)建對(duì)象的模板,類是抽象的,對(duì)象是具體的屬性(attributes):類所知道的數(shù)據(jù)/信息,每個(gè)類的對(duì)象為其指定特定的值操作(operations):類所擁有的“能力”,類的對(duì)象通過(guò)操作對(duì)外提供行為關(guān)系(relationships):類與外界通信的”橋梁”類的屬性和操作定義也取決于項(xiàng)目上下文,基于特定上下文對(duì)對(duì)象的特征和行為的抽象通過(guò)可見(jiàn)性支持封裝:公有(+)私有(-)保護(hù)(#)包(~)抽象(Abstraction)抽象是通過(guò)特定的實(shí)例抽取共同特征后形成概念的過(guò)程,強(qiáng)調(diào)主要特征,而忽略次要特征,類即是對(duì)象的抽象封裝(Encapsulation)是將相關(guān)的概念組成一個(gè)單元,然后通過(guò)一個(gè)名稱來(lái)使用它,是軟件模塊化思想的體現(xiàn)實(shí)現(xiàn)信息隱藏和數(shù)據(jù)抽象,信息隱藏:對(duì)象的私有數(shù)據(jù)不能被外界存取,只能以合法的手段訪問(wèn),將數(shù)據(jù)抽象為一組行為,而不是內(nèi)部的具體數(shù)據(jù)結(jié)構(gòu),把用戶隔離在細(xì)節(jié)之外繼承(inheritance)表示類之間的層次關(guān)系,這種關(guān)系使得某類對(duì)象可以繼承另外一個(gè)或多個(gè)對(duì)象的全部屬性和操作,isa或iskindof關(guān)系,在UML中這種類間的關(guān)系稱之為泛化(generalization)。單繼承、多重繼承接口和抽象類-抽象類抽象類:不能被實(shí)例化(生成任何對(duì)象)的類定義抽象類的兩種方式:顯示地聲明為抽象的;類中至少定義了一個(gè)沒(méi)有實(shí)現(xiàn)的操作抽象類主要是為了定義類的公共行為,與之對(duì)應(yīng)的為具體類抽象類與繼承父類可以是抽象類,也可以是具體類;處于繼承關(guān)系底層的類,肯定是具體類接口是聲明而不是實(shí)際的類,目的是顯示地支持多態(tài);沒(méi)有屬性,而且所定義的操作不能有任何實(shí)現(xiàn);接口的實(shí)現(xiàn)有賴于和接口相連的具體類接口和抽象類的區(qū)別抽象類本質(zhì)上是一個(gè)類,來(lái)自對(duì)象的抽象;而接口則更關(guān)注行為的抽象;接口不能有任何操作的實(shí)現(xiàn),而抽象類的部分或全部的操作都可以擁有實(shí)現(xiàn);接口類不能有屬性,而抽象類可以多態(tài)一種在一個(gè)接口下隱藏不同實(shí)現(xiàn)的機(jī)制:多個(gè)類型(從相同的父類型中派生出來(lái))可被當(dāng)作同一種類型對(duì)待用父類代表多個(gè)子類,外部代碼只訪問(wèn)父類運(yùn)用多態(tài)性可以簡(jiǎn)化設(shè)計(jì)、使設(shè)計(jì)靈活采用繼承或接口來(lái)支持多態(tài)多態(tài)性依賴于動(dòng)態(tài)綁定機(jī)制實(shí)現(xiàn),即在運(yùn)行期間確定被執(zhí)行的代碼需求分析過(guò)程主要工作:獲取需求:從非形式化的需求陳述中提取用戶的實(shí)際需求,歸納、整理用戶提出的各種問(wèn)題和要求文檔化需求:形成軟件需求的文檔化描述分析需求:采用軟件觀點(diǎn)表述需求需求獲取的啟發(fā)技術(shù):1.對(duì)現(xiàn)有文檔、表格和數(shù)據(jù)庫(kù)進(jìn)行抽樣2.調(diào)研和實(shí)地訪問(wèn)3.觀察工作環(huán)境4.調(diào)查表5.面談6.原型7.聯(lián)合需求計(jì)劃從現(xiàn)有文檔收集事實(shí)第一份文檔:組織結(jié)構(gòu)圖:該項(xiàng)目的關(guān)鍵所有者和用戶,以及他們之間的組織關(guān)系其它文檔:產(chǎn)生這個(gè)項(xiàng)目的歷史文檔,收集并檢查描述問(wèn)題的文檔;描述正被研究或設(shè)計(jì)的業(yè)務(wù)功能的文檔;以前系統(tǒng)研究和設(shè)計(jì)文檔調(diào)研和實(shí)地訪問(wèn):全面研究問(wèn)題領(lǐng)域:聯(lián)系或?qū)嵉乜疾鞂?duì)類似問(wèn)題有經(jīng)驗(yàn)的公司;通過(guò)互聯(lián)網(wǎng)、計(jì)算機(jī)期刊雜志和參考書(shū)等獲取相關(guān)信息;專業(yè)社團(tuán)、工作組等提供了對(duì)相關(guān)問(wèn)題的集中解決方案觀察工作環(huán)境:系統(tǒng)分析員或者參與到活動(dòng)中,或者觀察他人執(zhí)行活動(dòng)來(lái)了解系統(tǒng);為了獲得對(duì)系統(tǒng)的理解,觀察是一種有效的數(shù)據(jù)收集技術(shù);當(dāng)通過(guò)其它方法收集的數(shù)據(jù)有效性值得懷疑時(shí),或者當(dāng)系統(tǒng)某方面的復(fù)雜度妨礙了用戶作出清晰的解釋時(shí),使用該技術(shù);優(yōu)點(diǎn):收集的數(shù)據(jù)可能十分可靠;能夠確切地明白要做什么:復(fù)雜的任務(wù)有時(shí)難以用語(yǔ)言解釋,只能求助于觀察;系統(tǒng)分析員可以進(jìn)行工作度量缺點(diǎn):人們?cè)诒挥^察時(shí)通常會(huì)覺(jué)得不舒服,可能會(huì)不自覺(jué)地表現(xiàn)得與平常不一樣;效率較低,沒(méi)有時(shí)間詢問(wèn)所有的問(wèn)題,把每一點(diǎn)都弄清楚;有遺漏,有些任務(wù)可能在特定時(shí)間發(fā)生;觀察只能反映當(dāng)前狀況,無(wú)法體現(xiàn)系統(tǒng)未來(lái)的狀況調(diào)查表:調(diào)查表是一種具有特殊目的的文檔,分析員使用它從回答者那里收集信息和觀點(diǎn),由一組用來(lái)收集信息的問(wèn)題組成調(diào)查表的類型:自由格式調(diào)查表:為回答者提供了很大的回答范圍,提出一個(gè)問(wèn)題,回答者在問(wèn)題后面提供的空白區(qū)填寫(xiě)答案固定格式調(diào)查表:由需要從預(yù)先定義的答案中工作選擇的問(wèn)題構(gòu)成特點(diǎn):能夠得到用戶的匿名回答;可能會(huì)受到用戶態(tài)度的影響,具有主觀性;對(duì)于大規(guī)模的調(diào)查,要考慮聘請(qǐng)經(jīng)過(guò)專門(mén)培訓(xùn)的專業(yè)人員來(lái)設(shè)計(jì)調(diào)查問(wèn)題和調(diào)查表,并分析問(wèn)卷調(diào)查結(jié)果面談系統(tǒng)分析員從個(gè)人那里通過(guò)面對(duì)面的交互收集信息,可以一對(duì)一,也可以多對(duì)多地進(jìn)行特點(diǎn):通過(guò)建立相互之間的友善關(guān)系,系統(tǒng)分析員能夠給用戶一種主動(dòng)為系統(tǒng)項(xiàng)目作出貢獻(xiàn)的感覺(jué),并能夠獲得更多的反饋;面談的成功極大地取決于系統(tǒng)分析員的人際關(guān)系能力非結(jié)構(gòu)化面談:僅用一個(gè)頭腦中的一般目標(biāo)或目的以及幾個(gè)特定問(wèn)題進(jìn)行組織。面談?wù)咧竿幻嬲務(wù)咛峁┮粋€(gè)框架并引導(dǎo)談話過(guò)程;涉及一般性問(wèn)題,被面談?wù)呖梢砸龑?dǎo)談話過(guò)程;常常會(huì)偏離主題,分析員要注意引導(dǎo)結(jié)構(gòu)化面談:面談?wù)哂幸惶讓iT(mén)的問(wèn)題詢問(wèn)被面談?wù)?,根?jù)被面談?wù)叩幕卮穑嬲務(wù)邔⑻岢鲱~外的問(wèn)題以獲得澄清或進(jìn)一步深入開(kāi)放式問(wèn)題:允許被面談?wù)咭匀魏握J(rèn)為合適的方式回答封閉式問(wèn)題:把回答嚴(yán)格限制在特定范圍內(nèi),或限制為簡(jiǎn)短的直接回答選擇被面談?wù)撸号c最終用戶面談,要事先預(yù)約,并獲得其主管同意;被面談?wù)叩墓芾砑?jí)別越高,安排的面談時(shí)間就應(yīng)該越短;不要在同事或與被面談?wù)咄?jí)的人在場(chǎng)的情況下進(jìn)行面談準(zhǔn)備面談;制定面談指南,明確面談的問(wèn)題進(jìn)行面談;有禮貌、仔細(xì)聆聽(tīng)、充分利用肢體語(yǔ)言面談的后續(xù)工作;總結(jié)了面談內(nèi)容的備忘錄,并反饋給被面談?wù)咴停簽榱税l(fā)現(xiàn)或驗(yàn)證用戶需求而構(gòu)造那些需求的一個(gè)小規(guī)模的,有代表性的活動(dòng)或初步的工作模型原型應(yīng)該被快速地開(kāi)發(fā)出來(lái),并只對(duì)那些沒(méi)有被清楚地理解的需求建立原型特點(diǎn)用戶和開(kāi)發(fā)人員獲得對(duì)系統(tǒng)可能如何工作的一致理解,并可作為給用戶的一種培訓(xùn)機(jī)制;有助于定義更穩(wěn)定、更可靠的需求;用戶可能基于原型的性能、可靠性和特征產(chǎn)生出不現(xiàn)實(shí)的預(yù)期;制作原型可能延長(zhǎng)了開(kāi)發(fā)進(jìn)度并增加開(kāi)發(fā)費(fèi)用7.聯(lián)合需求計(jì)劃:是一個(gè)過(guò)程,其中高度結(jié)構(gòu)化的小組會(huì)議被用來(lái)分析問(wèn)題并定義需求JRP會(huì)議包括一些不同的參與者和角色,每個(gè)參與者都被期望能夠參加并主動(dòng)地參與整個(gè)JRP會(huì)議;主要包括:負(fù)責(zé)人、主持人、用戶和管理人員、抄寫(xiě)員、IT職員總結(jié):需求獲取綜合利用各種啟發(fā)技術(shù)獲取需求1.了解現(xiàn)有文檔、表格、報(bào)告和文件,能在沒(méi)有同任何人接觸的情況下了解很多2.如果合適,觀察工作中的系統(tǒng)3.根據(jù)已經(jīng)收集到的所有事實(shí),設(shè)計(jì)并分發(fā)調(diào)查表,澄清沒(méi)有完全理解的事情4.進(jìn)行面談(或小組工作會(huì)議),因?yàn)橐呀?jīng)通過(guò)較少的用戶接觸收集了大部分相關(guān)事實(shí),所有現(xiàn)在可以使用面談來(lái)驗(yàn)證和澄清最困難的問(wèn)題(可考慮用JRP代替或補(bǔ)充面談)5.作為備選,對(duì)沒(méi)有理解的功能需求或需要被驗(yàn)證的需求構(gòu)造原型6.追查到底,使用合適的調(diào)查研究技術(shù)驗(yàn)證事實(shí)(面談或觀察)根據(jù)備選構(gòu)架定義三類分析類邊界類:系統(tǒng)及其參與者的邊界控制類:系統(tǒng)的控制邏輯實(shí)體類:系統(tǒng)使用的信息
第六章軟件復(fù)用和面向的軟件開(kāi)發(fā)面向構(gòu)件的軟件開(kāi)發(fā)過(guò)程:鑒定、適配、組裝和更新設(shè)計(jì)模式基本概念典型設(shè)計(jì)模式應(yīng)用:策略、抽象工廠、組合和觀察者構(gòu)件級(jí)設(shè)計(jì)基本概念,構(gòu)件和對(duì)象的區(qū)別和聯(lián)系CBSD的產(chǎn)生背景:1)COTS(Commercial-Off-The-Shelf,商用現(xiàn)成品或技術(shù)”或“商用貨架產(chǎn)品”)構(gòu)件質(zhì)量的提高和種類的增加;2)要求降低系統(tǒng)開(kāi)發(fā)和維護(hù)成本的經(jīng)濟(jì)壓力;3)構(gòu)件集成技術(shù)的出現(xiàn);4)軟件開(kāi)發(fā)組織內(nèi)可以用于新系統(tǒng)開(kāi)發(fā)的已有軟件制品的數(shù)量增加。CBSD整個(gè)過(guò)程從需求開(kāi)始,由開(kāi)發(fā)團(tuán)隊(duì)使用傳統(tǒng)的需求獲取技術(shù)建立系統(tǒng)的需求規(guī)約。在完成體系結(jié)構(gòu)設(shè)計(jì)后,并不立即開(kāi)始詳細(xì)設(shè)計(jì),而是確定哪些部分可由構(gòu)件組裝而成。此時(shí)開(kāi)發(fā)人員面臨的設(shè)計(jì)決策包括:“是否存在滿足某種需求的COTS構(gòu)件”,“是否存在滿足某種需求的內(nèi)部開(kāi)發(fā)的可復(fù)用構(gòu)件”,“這些可用構(gòu)件的接口與體系結(jié)構(gòu)的設(shè)計(jì)是否匹配”等。對(duì)于那些無(wú)法通過(guò)已有構(gòu)件滿足的需求,就只能采用傳統(tǒng)的或面向?qū)ο蟮能浖こ谭椒ㄩ_(kāi)發(fā)新構(gòu)件。Qualification(鑒定)通過(guò)接口以及其它約束判斷COTS構(gòu)件是否可在新系統(tǒng)中復(fù)用。構(gòu)件鑒定分為發(fā)現(xiàn)和評(píng)估兩個(gè)階段。發(fā)現(xiàn)階段需要確定COTS構(gòu)件的各種屬性,如構(gòu)件接口的功能性(構(gòu)件能夠提供什么服務(wù))及其附加屬性(如,是否遵循某種標(biāo)準(zhǔn))、構(gòu)件的質(zhì)量屬性(如,可靠性)等。評(píng)估階段根據(jù)COTS構(gòu)件屬性以及新系統(tǒng)的需求判斷構(gòu)件是否可在系統(tǒng)中復(fù)用。評(píng)估方法常常涉及分析構(gòu)件文檔、與構(gòu)件已有用戶交流經(jīng)驗(yàn)、甚至開(kāi)發(fā)系統(tǒng)原型。構(gòu)件鑒定有時(shí)還需要考慮非技術(shù)因素,如構(gòu)件提供商的市場(chǎng)占有率、構(gòu)件開(kāi)發(fā)商的過(guò)程成熟度等級(jí)等。Adaptation(適配)獨(dú)立開(kāi)發(fā)的可復(fù)用構(gòu)件滿足不同的應(yīng)用需求,并對(duì)運(yùn)行上下文做出了某些假設(shè)。系統(tǒng)的軟件體系結(jié)構(gòu)定義了系統(tǒng)中所有構(gòu)件的設(shè)計(jì)規(guī)則、連接模式和交互模式。如果被復(fù)用的構(gòu)件不符合目標(biāo)系統(tǒng)的軟件體系結(jié)構(gòu)就可能導(dǎo)致該構(gòu)件無(wú)法正常工作,甚至影響整個(gè)系統(tǒng)的運(yùn)行,這種情形稱為失配(mismatch)。——調(diào)整構(gòu)件使之滿足體系結(jié)構(gòu)要求的行為就是構(gòu)件適配。構(gòu)件適配可通過(guò)白盒、灰盒或黑盒的方式對(duì)構(gòu)件進(jìn)行修改或配置。白盒方式允許直接修改構(gòu)件源代碼;灰盒方式不允許直接修改構(gòu)件源代碼,但提供了可修改構(gòu)件行為的擴(kuò)展語(yǔ)言或編程接口;黑盒方式是指調(diào)整那些只有可執(zhí)行代碼且沒(méi)有任何擴(kuò)展機(jī)制的構(gòu)件。如果構(gòu)件無(wú)法適配,就不得不尋找其它適合的構(gòu)件。AbstractFactory(抽象工廠)提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類抽象工廠的優(yōu)缺點(diǎn):首先,抽象工廠的話,其可以更加方便的實(shí)現(xiàn)交換一個(gè)產(chǎn)品系列,就像上面的Demo中可以輕易的實(shí)現(xiàn)從Linux上轉(zhuǎn)換為Windows,同時(shí),客戶端代碼中依賴的是抽象,而非具體的實(shí)現(xiàn),但是,抽象工廠也是有缺點(diǎn)的,其實(shí)這個(gè)缺點(diǎn)也很明顯,那就是顯得過(guò)于臃腫,上面的Demo盡管還只有兩個(gè)產(chǎn)品族,類圖就顯得有些難看了,如果產(chǎn)品族一多的話,那么總的類數(shù)是成幾倍的增加,這樣使整個(gè)結(jié)構(gòu)變得過(guò)于復(fù)雜,類的結(jié)構(gòu)也會(huì)變得更為龐大。Composition(組裝)構(gòu)件必須通過(guò)某些良好定義的基礎(chǔ)設(shè)施才能組裝成目標(biāo)系統(tǒng)。體系風(fēng)格決定了構(gòu)件之間連接或協(xié)調(diào)的機(jī)制,是構(gòu)件組裝成功與否的關(guān)鍵因素之一。典型的體系風(fēng)格包括黑板、消息總線、對(duì)象請(qǐng)求代理等。Updation(更新)基于構(gòu)件的系統(tǒng)演化往往表現(xiàn)為構(gòu)件的替換或增加,其關(guān)鍵在于如何充分測(cè)試新構(gòu)件以保證其正確工作且不對(duì)其它構(gòu)件的運(yùn)行產(chǎn)生副面影響,對(duì)于由COTS構(gòu)件組裝而成的系統(tǒng),其更新的工作往往由提供COTS構(gòu)件的第三方完成。設(shè)計(jì)模式:組合Composite意圖:將對(duì)象組合成一種樹(shù)結(jié)構(gòu),以表示部分—整體的層次關(guān)系。組合模式用于將單個(gè)對(duì)象有機(jī)地組合到一起。動(dòng)機(jī):一些部件對(duì)象經(jīng)過(guò)組合構(gòu)成的復(fù)合部件對(duì)象仍然具有單個(gè)部件對(duì)象的接口,這樣的復(fù)合部件對(duì)象被稱為“容器(container)”‘復(fù)合部件與單個(gè)部件具有同樣的接口,所有接口包含兩部分:?jiǎn)蝹€(gè)部件的功能、管理子部件的功能;遞歸組合策略Strategy動(dòng)機(jī):定義一系列的算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可相互替換。本模式使得算法可獨(dú)立于使用它的客戶而變化。意圖:有些算法對(duì)于某些類是必不可少的,但是不適合于硬編進(jìn)類中??蛻艨赡苄枰惴ǖ亩喾N不同實(shí)現(xiàn),允許增加新的算法實(shí)現(xiàn)或者改變現(xiàn)有的算法實(shí)現(xiàn)我們可以把這樣的算法封裝到單獨(dú)的類中,稱為strategy觀察者模式(Observerpattern)意圖:定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。動(dòng)機(jī):1.把系統(tǒng)分成一些相互關(guān)聯(lián)的類或者對(duì)象,如何維護(hù)這些類的實(shí)例一致性?--不希望為了維護(hù)一致性而使各類緊密耦合。2.這一模式中的關(guān)鍵對(duì)象是目標(biāo)(subject)和觀察者(observer)。一個(gè)目標(biāo)可以有任意數(shù)目的依賴它的觀察者。一旦目標(biāo)的狀態(tài)發(fā)生改變,所有的觀察者都得到通知。作為對(duì)這個(gè)通知的響應(yīng),每個(gè)觀察者都將查詢目標(biāo)以使其狀態(tài)與目標(biāo)的狀態(tài)同步。3.這種交互也稱為發(fā)布-訂閱(publish-subscribe)。目標(biāo)是通知的發(fā)布者。它發(fā)出通知時(shí)并不需知道誰(shuí)是它的觀察者??梢杂腥我鈹?shù)目的觀察者訂閱并接收通知
傳統(tǒng)構(gòu)件設(shè)計(jì)過(guò)程設(shè)計(jì)的基本方法數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)模型基本概念數(shù)據(jù)庫(kù)設(shè)計(jì)基本原理:數(shù)據(jù)完整性、函數(shù)依賴和三個(gè)范式用戶界面設(shè)計(jì)對(duì)象設(shè)計(jì)用例設(shè)計(jì)和類設(shè)計(jì)細(xì)節(jié)應(yīng)用設(shè)計(jì)模式完善類設(shè)計(jì)構(gòu)件級(jí)設(shè)計(jì)則針對(duì)系統(tǒng)各組成部分建立其程序和數(shù)據(jù)結(jié)構(gòu),從而將設(shè)計(jì)模型轉(zhuǎn)換為運(yùn)行軟件可以采用編程語(yǔ)言來(lái)表示構(gòu)件級(jí)設(shè)計(jì)但對(duì)一些復(fù)雜場(chǎng)景,應(yīng)該采用能夠容易轉(zhuǎn)化為代碼的中間表示進(jìn)行構(gòu)件級(jí)設(shè)計(jì)構(gòu)件:是計(jì)算機(jī)軟件中一個(gè)模塊化的構(gòu)造塊結(jié)構(gòu)化觀點(diǎn)(傳統(tǒng)構(gòu)件設(shè)計(jì)):構(gòu)件是程序的功能要素,包括:處理邏輯、實(shí)現(xiàn)處理邏輯所需的內(nèi)部數(shù)據(jù)結(jié)構(gòu)、保證構(gòu)件被調(diào)用和實(shí)現(xiàn)數(shù)據(jù)傳遞的接口面向?qū)ο笥^點(diǎn):構(gòu)件包括一組協(xié)作的類,構(gòu)件中的每一個(gè)類都被詳細(xì)描述,包括所有的屬性和與其實(shí)現(xiàn)相關(guān)的操作(對(duì)象設(shè)計(jì))過(guò)程設(shè)計(jì)方法提出結(jié)構(gòu)化編程:1.所有的程序都可以建立在一組限定好的邏輯構(gòu)造之上,強(qiáng)調(diào)對(duì)功能域的支持2.其中每一個(gè)邏輯構(gòu)造都有可預(yù)測(cè)的邏輯結(jié)構(gòu),從頂端進(jìn)入,從底端退出,形成過(guò)程流包括三種類型的邏輯構(gòu)造,通過(guò)這三種結(jié)構(gòu)就可以表達(dá)程序的全部處理流程,是結(jié)構(gòu)化編程的核心技術(shù)順序型:提供任何算法規(guī)則說(shuō)明中的核心處理步驟條件型:允許根據(jù)邏輯情況選擇處理的方式重復(fù)型:提供對(duì)循環(huán)的支持?jǐn)?shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)是絕大多數(shù)信息系統(tǒng)的關(guān)鍵組件,數(shù)據(jù)庫(kù)設(shè)計(jì)貫穿整個(gè)系統(tǒng)開(kāi)發(fā)生命周期需求階段確定數(shù)據(jù)需求:確定哪些數(shù)據(jù)需要存儲(chǔ)和處理分析階段建立數(shù)據(jù)庫(kù)的邏輯模型:描述將會(huì)存儲(chǔ)在數(shù)據(jù)庫(kù)中的實(shí)體和屬性,使用實(shí)體關(guān)系圖(ER圖)建立數(shù)據(jù)模型構(gòu)件級(jí)設(shè)計(jì)階段確定數(shù)據(jù)庫(kù)的物理(存儲(chǔ))模型:創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu)、確定存儲(chǔ)過(guò)程、規(guī)劃數(shù)據(jù)服務(wù)等實(shí)體:是指作為數(shù)據(jù)資源應(yīng)管理的對(duì)象,由多個(gè)屬性構(gòu)成;每個(gè)實(shí)體的數(shù)值稱為實(shí)例;可以轉(zhuǎn)換成數(shù)據(jù)表,實(shí)例可以成為表中的記錄屬性:描述實(shí)體的特征,僅與實(shí)體一同存在;定義了數(shù)據(jù)庫(kù)中的字段確定實(shí)體和屬性實(shí)體:在需求分析階段確定,并在設(shè)計(jì)階段轉(zhuǎn)換成數(shù)據(jù)表;屬性:通過(guò)描述每個(gè)實(shí)體確定主鍵:唯一標(biāo)識(shí)了表中的每一條記錄‘主鍵要求唯一、穩(wěn)定復(fù)合主鍵實(shí)體中需要一個(gè)主鍵;當(dāng)一個(gè)屬性不能唯一識(shí)別一個(gè)實(shí)例時(shí),將多個(gè)屬性組合起來(lái)作為主鍵,叫做復(fù)合主鍵外鍵:通過(guò)引用另一張表的主鍵作為外鍵,已連接兩張數(shù)據(jù)表數(shù)據(jù)庫(kù)設(shè)計(jì)基本原理:數(shù)據(jù)完整性字段完整性:為字段定義一組有效的取值類型和范圍并確定是否允許空值實(shí)體完整性:表中每行都有唯一的標(biāo)識(shí),即主鍵值參照完整性:確保主鍵與外鍵的關(guān)系一直存在函數(shù)依賴性:若某個(gè)屬性的值確定的話,其他屬性的值就能唯一確定,這種關(guān)系即函數(shù)依賴規(guī)范化:著眼于用戶業(yè)務(wù)所使用的數(shù)據(jù)項(xiàng),將其整理為理想的數(shù)據(jù)結(jié)構(gòu),想的數(shù)據(jù)結(jié)構(gòu)是滿足“OneFactinOnePlace”(一個(gè)事物只存在于一處)規(guī)范化存在著從第一范式到第五范式:一般完成第三范式就能達(dá)到“OneFactinOnePlace”的目標(biāo)用戶界面設(shè)計(jì)用戶界面(UI)設(shè)計(jì)在用戶與系統(tǒng)之間搭建了一個(gè)有效的交流媒介軟件工程知識(shí)體(SWEBOK)中,將用戶界面設(shè)計(jì)的內(nèi)容整合為軟件人類工程學(xué)(SoftwareErgonomics)人類工程學(xué)(或稱人的因素)是一個(gè)科學(xué)的學(xué)科,它涉及對(duì)人和其它系統(tǒng)元素之間交互性的理解,以及為了優(yōu)化人的地位和整個(gè)系統(tǒng)的性能用戶界面可以由兩部分組成用戶界面組件:圖形用戶界面的組成部分用戶處理組件:協(xié)調(diào)用戶界面元素和控件與用戶間的交互用戶界面組件的功能提示用戶輸入;捕獲用戶事件;限制用戶僅在預(yù)先設(shè)定的區(qū)域中輸入;驗(yàn)證并格式化用戶提供的數(shù)據(jù);本地化的顯示;提示用戶應(yīng)用程序和系統(tǒng)的狀態(tài);按用戶需要,自定義應(yīng)用程序的外觀用戶界面設(shè)計(jì)的指導(dǎo)方針原則:必須以最直觀的方式實(shí)現(xiàn)用戶的需求實(shí)現(xiàn):在界面設(shè)計(jì)的每個(gè)階段都要讓用戶參與進(jìn)來(lái)重要性:應(yīng)用程序成敗的關(guān)鍵處理簡(jiǎn)單控制類:考慮是否需要哪些簡(jiǎn)單的控制類下列情況下,控制類可變?yōu)檎嬲脑O(shè)計(jì)類封裝非常重要的控制流行為封裝的行為很可能變化必須跨越多個(gè)進(jìn)程或處理器進(jìn)行遠(yuǎn)程封裝的行為要求一些事務(wù)管理處理復(fù)雜的控制類臃腫的控制類:低內(nèi)聚、缺乏重點(diǎn)并且處理過(guò)多的職責(zé)區(qū);即違背高內(nèi)聚、低耦合的設(shè)計(jì)原則解決方案:加入更多的控制器(更多的分層)、將部分職責(zé)委托給其它對(duì)象典型的處理情況如針對(duì)數(shù)據(jù)庫(kù)訪問(wèn)增加數(shù)據(jù)訪問(wèn)層和相應(yīng)的訪問(wèn)控制類實(shí)體類的設(shè)計(jì)策略實(shí)體對(duì)象通常是被動(dòng)的和持久性的;性能需求可能要對(duì)實(shí)體類進(jìn)行重構(gòu);引入數(shù)據(jù)庫(kù)持久化后會(huì)影響到實(shí)體類的設(shè)計(jì)
形式化方法基礎(chǔ)形式化方法的特點(diǎn),與傳統(tǒng)方法的區(qū)別形式化方法分類和一些典型的形式化方法PetriNetPetriNet基本原理PetriNet的基本特性形式化規(guī)約是對(duì)程序“做什么”(whattodo)的數(shù)學(xué)描述,是用具有精確語(yǔ)義的形式語(yǔ)言書(shū)寫(xiě)的程序功能描述,它是設(shè)計(jì)和編制程序的出發(fā)點(diǎn),也是驗(yàn)證程序是否正確的依據(jù)。對(duì)形式規(guī)約通常要討論其一致性(自身無(wú)矛盾)和完備性(是否完全、無(wú)遺漏地刻畫(huà)所要描述的對(duì)象)等性質(zhì)。形式化規(guī)約有一個(gè)共同的特點(diǎn):每種規(guī)約語(yǔ)言均由基本成分和構(gòu)造成分兩部分構(gòu)成。前者用來(lái)描述基本(原子)規(guī)約,后者把基本部分組合成大規(guī)約。構(gòu)造成分是形式規(guī)約研究和設(shè)計(jì)的重點(diǎn),也是衡量規(guī)約語(yǔ)言優(yōu)劣的主要依據(jù)。形式化驗(yàn)證與形式規(guī)約之間具有緊密的聯(lián)系,形式驗(yàn)證就是驗(yàn)證已有的程序(系統(tǒng))P,是否滿足其規(guī)約(φ,ψ)的要求(即P(φ,ψ)),它也是形式化方法所要解決的核心問(wèn)題。傳統(tǒng)的驗(yàn)證方法包括模擬(simulation)和測(cè)試(testing),它們都是通過(guò)實(shí)驗(yàn)的方法對(duì)系統(tǒng)進(jìn)行查錯(cuò)。早期的形式驗(yàn)證主要研究如何使用數(shù)學(xué)方法,嚴(yán)格證明一個(gè)程序的正確性(即程序驗(yàn)證)。形式化方法可以分為五類:1)基于模型的方法:通過(guò)明確定義狀態(tài)和操作來(lái)建立一個(gè)系統(tǒng)模型(使系統(tǒng)從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài))。用這種方法雖可以表示非功能性需求(諸如時(shí)間需求),但不能很好地表示并發(fā)性。如:Z語(yǔ)言,VDM,B方法等。2)基于邏輯的方法:用邏輯描述系統(tǒng)預(yù)期的性能,包括底層規(guī)約、時(shí)序和可能性行為。采用與所選邏輯相關(guān)的公理系統(tǒng)證明系統(tǒng)具有預(yù)期的性能。用具體的編程構(gòu)造擴(kuò)充邏輯從而得到一種廣譜形式化方法,通過(guò)保持正確性的細(xì)化步驟集來(lái)開(kāi)發(fā)系統(tǒng)。如:ITL(區(qū)間時(shí)序邏輯),區(qū)段演算(DC),hoare邏輯等。3)代數(shù)方法:通過(guò)將未定義狀態(tài)下不同的操作行為相聯(lián)系,給出操作的顯式定義。與基于模型的方法相同的是,沒(méi)有給出并發(fā)的顯式表示。如:OBJ,Larch族代數(shù)規(guī)約語(yǔ)言等;4)過(guò)程代數(shù)方法:通過(guò)限制所有容許的可觀察的過(guò)程間通信來(lái)表示系統(tǒng)行為。此類方法允許并發(fā)過(guò)程的顯式表示。如:通信順序過(guò)程(CSP),通信系統(tǒng)演算(CCS),通信過(guò)程代數(shù)(ACP)等。5)基于網(wǎng)圖的方法:由于圖形化表示法易于理解,而且非專業(yè)人員能夠使用,因此是一種通用的系統(tǒng)確定表示法。該方法采用具有形式語(yǔ)義的圖形語(yǔ)言,為系統(tǒng)開(kāi)發(fā)和再工程帶來(lái)特殊的好處。如Petri圖,狀態(tài)圖等。一種基于模型的形式化方法描述數(shù)據(jù)不變量(Datainvariant)——表示包含一個(gè)或多個(gè)數(shù)據(jù)的關(guān)系表達(dá)式,在系統(tǒng)執(zhí)行過(guò)程的任何時(shí)刻,該表達(dá)式的值都為真。狀態(tài)(State)——存儲(chǔ)于系統(tǒng)中,可被訪問(wèn)和改變的數(shù)據(jù)。操作(Operation)——系統(tǒng)中作用于狀態(tài)數(shù)據(jù)的讀寫(xiě)等動(dòng)作,與其相關(guān)的有兩類條件:前置條件(Precondition):是指操作能夠有效執(zhí)行的環(huán)境條件后置條件(Postcondition):是指操作執(zhí)行后的環(huán)境條件Z語(yǔ)言基于幾何理論和一階謂詞邏輯,支持?jǐn)?shù)據(jù)抽象和過(guò)程抽象:數(shù)據(jù)抽象:利用抽象的數(shù)據(jù)結(jié)構(gòu)(關(guān)系、函數(shù)、集合、序列、包)來(lái)進(jìn)行數(shù)據(jù)類型描述;過(guò)程抽象:通過(guò)以抽象數(shù)據(jù)結(jié)構(gòu)為定義域或值域的映射,描述抽象算法與操作。以Z描述的軟件系統(tǒng)由若干模式構(gòu)成。模式從系統(tǒng)的狀態(tài)和狀態(tài)變化兩個(gè)方面描述軟件特征。Z規(guī)約包括四個(gè)部分:1. 給定集合(Givensets),數(shù)據(jù)類型(datatypes),和常量(constants)2. 狀態(tài)定義(Statedefinition)3. 初始狀態(tài)(Initialstate)4. 操作(Operations)Z規(guī)約由一系列模式組成。每個(gè)模式包括:一組變量聲明\一個(gè)謂詞列表Petri網(wǎng)主要特性可達(dá)性如果Petri網(wǎng)(N,M0)存在從M0到Mn的啟動(dòng)序列,則稱Mn是從M0可達(dá)的,并將Mn的集合稱為可達(dá)集,記為R(N,M0)。問(wèn)題:$Mn,Mn?R(N,M0)?有界性對(duì)Petri網(wǎng)(N,M0),若存在一個(gè)整數(shù),使得M0的任一可達(dá)標(biāo)識(shí)的每一位置中的標(biāo)記數(shù)都不超過(guò)K,則稱Petri網(wǎng)為K有界。問(wèn)題:$K,"p?P,"M?R(M0):M(p)£K?可覆蓋性對(duì)Petri網(wǎng)(N,M0)和給定標(biāo)識(shí)M,存在一個(gè)可達(dá)標(biāo)識(shí)M’,使得對(duì)于每個(gè)位置p,都有M’(p)3M(p),則稱M是可覆蓋的。問(wèn)題:$M’,M’?R(N,M0),"p?P:M’(p)3M(p)?可逆性R(N,M0)的每個(gè)標(biāo)識(shí)M,M0都從M可達(dá),則稱Petri網(wǎng)是可逆的問(wèn)題:"M,M?R(N,M0):M0?R(N,M)?守恒性若N的每個(gè)(某些)位置p存在一個(gè)正整數(shù)Y(p),使得對(duì)任何給定的初始標(biāo)識(shí)M0和每個(gè)M?R(M0),都有標(biāo)識(shí)的加權(quán)和MTY=M0TY為一個(gè)常量,則稱N為(部分)守恒的。問(wèn)題:"Mn,Mn?R(N,M0),?yi*Mn(pi)=常量?重復(fù)性若N存在一個(gè)標(biāo)識(shí)M0和一個(gè)從M0開(kāi)始的啟動(dòng)序列s,使得每個(gè)轉(zhuǎn)移在s中可以無(wú)限次發(fā)生,則稱Petri網(wǎng)為重復(fù)的。問(wèn)題:$s,s為包括每個(gè)轉(zhuǎn)移的無(wú)限轉(zhuǎn)移序列?一致性若N存在一個(gè)標(biāo)識(shí)M0和一個(gè)從M0返回到M0的啟動(dòng)序列s,使得每個(gè)轉(zhuǎn)移在s中至少出現(xiàn)一次,則稱Petri網(wǎng)為一致的。問(wèn)題:$s,s為包括每個(gè)轉(zhuǎn)移的有限轉(zhuǎn)移序列?活性:對(duì)于Petri網(wǎng)(N,M0)和變遷t?T,若對(duì)于任意M?R(N,M0),都存在M¢?R(N,M0),使得M¢[t>,則稱t為四級(jí)活的。如果每個(gè)t都是四級(jí)活的,則稱網(wǎng)(N,M0)為四級(jí)活的,簡(jiǎn)稱為活的。若存在一個(gè)無(wú)限變遷啟動(dòng)序列,使得t在該啟動(dòng)序列中可以無(wú)限次出現(xiàn),則稱t為三級(jí)活的。若對(duì)于任意正整數(shù)k,都存在一個(gè)包括k個(gè)t的變遷啟動(dòng)序列σ,有M0[σ>M¢,則稱t為二級(jí)活的。若存在M?R(N,M0),使得M[t>,則稱t為一級(jí)活的。如果M?R(N,M0)使得?M[t>,則稱t為死變遷。
軟件質(zhì)量如何評(píng)價(jià)一個(gè)軟件產(chǎn)品的好壞軟件質(zhì)量與明確確定的功能和性能需求的一致性與明確成文的開(kāi)發(fā)標(biāo)準(zhǔn)的一致性與所有專業(yè)開(kāi)發(fā)的軟件所期望的隱含的特性的一致性軟件測(cè)試是一種提高軟件質(zhì)量的有效手段是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程根據(jù)軟件開(kāi)發(fā)各階段的規(guī)格說(shuō)明和內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測(cè)試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果)并利用這些測(cè)試用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過(guò)程測(cè)試目標(biāo)測(cè)試是一個(gè)為了尋找錯(cuò)誤而運(yùn)行程序的過(guò)程一個(gè)好的測(cè)試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的用例一個(gè)成功的測(cè)試是指發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試測(cè)試目的驗(yàn)證軟件實(shí)現(xiàn)了規(guī)格說(shuō)明(需求、設(shè)計(jì))的要求發(fā)現(xiàn)程序中的錯(cuò)誤/缺陷確定是否可以使用、可交付了解性能的限制了解系統(tǒng)不能做什么評(píng)估系統(tǒng)的能力和質(zhì)量驗(yàn)證文檔測(cè)試用例為證實(shí)程序符合/不符合要求的程序的一次執(zhí)行展示軟件實(shí)現(xiàn)是否符合預(yù)期的要求測(cè)試用例的主要內(nèi)容初始狀態(tài)、輸入數(shù)據(jù)、預(yù)期輸出、測(cè)試過(guò)程實(shí)際結(jié)果、結(jié)果評(píng)價(jià)設(shè)計(jì)測(cè)試用例的兩種技術(shù)白盒測(cè)試、黑盒測(cè)試白盒測(cè)試:基于代碼的測(cè)試:代碼結(jié)構(gòu)黑盒測(cè)試:基于規(guī)格說(shuō)明測(cè)試:設(shè)計(jì)規(guī)格說(shuō)明、需求規(guī)格說(shuō)明、業(yè)務(wù)規(guī)格說(shuō)明白盒測(cè)試?yán)脴?gòu)件層設(shè)計(jì)中所描述的程序控制結(jié)構(gòu)來(lái)生成測(cè)試用例利用白盒測(cè)試設(shè)計(jì)測(cè)試用例,達(dá)到以下目標(biāo):保證一個(gè)模塊中所有獨(dú)立路徑至少被執(zhí)行一次對(duì)所有的邏輯值均需測(cè)試真和假在上下邊界及可操作的范圍內(nèi)執(zhí)行所有的循環(huán)檢測(cè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)以確保有效性邏輯覆蓋以程序內(nèi)部邏輯為基礎(chǔ)的測(cè)試技術(shù),考慮的是程序內(nèi)部邏輯被覆蓋的程度按覆蓋程度不同,邏輯覆蓋分為:語(yǔ)句覆蓋:每條語(yǔ)句至少執(zhí)行一次分支覆蓋:每個(gè)分支都至少通過(guò)一次條件覆蓋:分支中各個(gè)條件的所有可能都至少執(zhí)行一次分支/條件覆蓋:分支中的每個(gè)條件的所有結(jié)果至少出現(xiàn)一次,同時(shí)使各分支本身的所有可能也至少出現(xiàn)一次多重覆蓋:使各分支中條件的所有可能組合至少出現(xiàn)一次循環(huán)覆蓋:用來(lái)檢查循環(huán)構(gòu)造的有效性黑盒測(cè)試根據(jù)程序的規(guī)格說(shuō)明設(shè)計(jì)測(cè)試用例檢查目標(biāo)是否有不正確或遺漏了的功能在接口上,輸入能否正確地輸入和輸出是否存在數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部信息訪問(wèn)錯(cuò)誤性能能否滿足要求是否有初始化和終止性錯(cuò)誤基于輸入域等價(jià)類劃分、邊界值分析域測(cè)試基于圖的測(cè)試因果圖決策表、功能圖其他測(cè)試錯(cuò)誤推測(cè)法、變異測(cè)試、比較法測(cè)試等價(jià)類指某個(gè)輸入域的子集合,在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤是等效的有效等價(jià)類對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是合理的,有意義的輸入數(shù)據(jù)構(gòu)成的集合無(wú)效等價(jià)類對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō),是不合理的,無(wú)意義的輸入數(shù)據(jù)構(gòu)成的集合等價(jià)類測(cè)試步驟識(shí)別每個(gè)功能單元的參數(shù)參數(shù)可影響功能單元操作的環(huán)境對(duì)象系統(tǒng)參數(shù)、外部數(shù)據(jù)對(duì)象、外部設(shè)備狀態(tài)識(shí)別每個(gè)參數(shù)的特性:類型、長(zhǎng)度、狀態(tài)值等將每個(gè)特性類劃分為不同的等價(jià)類:有效等價(jià)類和無(wú)效等價(jià)類確定各個(gè)等價(jià)類之間的限制,如在一個(gè)等價(jià)類和另一個(gè)等價(jià)類中值不能同時(shí)存在一個(gè)值必須比另一個(gè)值大等設(shè)計(jì)測(cè)試用例為每個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋的有效等價(jià)類,重復(fù)到所有的有效等價(jià)類都被覆蓋為止設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)到所有的無(wú)效等價(jià)類都被覆蓋為止邊界值分析著重檢查等價(jià)類邊界上和邊界附近的錯(cuò)誤實(shí)際工作應(yīng)用中通常把邏輯覆蓋、等價(jià)劃分和邊界值分析測(cè)試結(jié)合使用從而能把白盒和黑盒測(cè)試技術(shù)結(jié)合起來(lái),既可檢查設(shè)計(jì)的內(nèi)部要求,又可以檢查設(shè)計(jì)的接口要求因果圖(cause-effectdiagrams)利用條件與對(duì)應(yīng)動(dòng)作之間的邏輯關(guān)系,著重檢查各輸入條件的組合如:兩個(gè)輸入值的乘積超過(guò)了存儲(chǔ)的限制,程序發(fā)生錯(cuò)誤,等價(jià)劃分和邊界值分析,都不能發(fā)現(xiàn)這類錯(cuò)誤它們均未考慮輸入情況的各種組合因果圖的基本原理是通過(guò)畫(huà)因果圖把用自然語(yǔ)言描述的功能說(shuō)明轉(zhuǎn)換為決策表最后為決策表的每一列設(shè)計(jì)一個(gè)測(cè)試用例測(cè)試步驟分析軟件規(guī)格說(shuō)明描述中,哪些是原因(即輸入條件或輸入條件的等價(jià)類),哪些是結(jié)果(輸出條件),并給出每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符分析軟件規(guī)格說(shuō)明描述中的語(yǔ)義,找出原因與結(jié)果之間,原因與原因之間對(duì)應(yīng)的關(guān)系,畫(huà)出因果圖由于語(yǔ)法或環(huán)境限制,有些原因與原因,原因與結(jié)果之間的組合情況不可能出現(xiàn),為表明這些特殊情況,在因果圖上用一些記號(hào)標(biāo)明約束或限制條件把因果圖轉(zhuǎn)換為決策表把決策表中每一列表示的情況寫(xiě)成測(cè)試用例單元測(cè)試是針對(duì)程序單元進(jìn)行正確性檢驗(yàn)的測(cè)試工作目的:發(fā)現(xiàn)各單元的功能是否滿足詳細(xì)設(shè)計(jì)的要求。測(cè)試重點(diǎn):模塊內(nèi)部邏輯測(cè)試技術(shù):白盒測(cè)試測(cè)試內(nèi)容模塊接口測(cè)試:保證在測(cè)試時(shí)進(jìn)出程序單元的數(shù)據(jù)流是正確的局部數(shù)據(jù)結(jié)構(gòu)測(cè)試:保證臨時(shí)存儲(chǔ)的數(shù)據(jù)在算法執(zhí)行的整個(gè)過(guò)程中都能維持其完整性路徑測(cè)試:測(cè)試所有獨(dú)立路徑,保證在一個(gè)模塊中的所有語(yǔ)句都能至少執(zhí)行一次邊界測(cè)試:保證模塊在極限或嚴(yán)格的情況下仍能夠正確執(zhí)行錯(cuò)誤處理測(cè)試:對(duì)不正確的輸入或異常情況的處理集成測(cè)試將軟件單元逐步集成為軟件系統(tǒng)時(shí)所進(jìn)行的測(cè)試目的保證低層的系統(tǒng)組件在集成為高層系統(tǒng)組件之前可正確操作,最終獲得正確的軟件系統(tǒng)測(cè)試重點(diǎn)功能接口之間的有效性和接口的兼容性與集成有關(guān)的問(wèn)題:配置/版本控制I/O格式,協(xié)議不匹配不一致的數(shù)據(jù)的顯示/使用數(shù)據(jù)集成問(wèn)題錯(cuò)誤的調(diào)用次序/錯(cuò)誤的參數(shù)遺漏/重疊的功能資源問(wèn)題(內(nèi)存等)接口數(shù)據(jù),接口參數(shù)是否正確匹配在把各個(gè)模塊連接起來(lái)的時(shí)候,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響各個(gè)子功能組合起來(lái),是否達(dá)到預(yù)期要求全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問(wèn)題單個(gè)模塊的誤差積累起來(lái),是否會(huì)放大,從而達(dá)到不能接受的程度確認(rèn)測(cè)試Validationtesting、Qualificationtesting針對(duì)全部集成好的軟件系統(tǒng),驗(yàn)證軟件的功能和性能及其他特性是否與指定的要求一致依據(jù):需求規(guī)格說(shuō)明書(shū)確認(rèn)測(cè)試中所測(cè)試的軟件特性常常只有在整個(gè)系統(tǒng)運(yùn)行時(shí)才能表現(xiàn)出來(lái)有效性測(cè)試主要目標(biāo):保證所有的功能需求都得到了滿足、所有性能需求都達(dá)到了、文檔是正確且便于使用的、其他需求都得到了滿足可靠性、強(qiáng)度、可移植性、兼容性、錯(cuò)誤恢復(fù)、可維護(hù)性系統(tǒng)測(cè)試:將通過(guò)確認(rèn)測(cè)試的軟件,作為整個(gè)基于計(jì)算機(jī)系統(tǒng)的一個(gè)元素,與計(jì)算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其他系統(tǒng)元素結(jié)合在一起,在實(shí)際運(yùn)行(使用)環(huán)境下,對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行的一些列的集成和確認(rèn)測(cè)試目的:確認(rèn)整個(gè)計(jì)算機(jī)系統(tǒng)滿足用戶需求依據(jù):系統(tǒng)需求規(guī)格說(shuō)明驗(yàn)收測(cè)試:以用戶為主的測(cè)試,驗(yàn)證軟件系統(tǒng)是否滿足需求規(guī)格說(shuō)明的要求目的:確定軟件產(chǎn)品的質(zhì)量,決定軟件產(chǎn)品是否可以交付給用戶并投入使用。依據(jù):用戶需求(用戶需求規(guī)格說(shuō)明)關(guān)注:需求的實(shí)現(xiàn)、關(guān)注隱含的需求:是否“合適使用”驗(yàn)收測(cè)試內(nèi)容:功能測(cè)試;性能測(cè)試;可靠性測(cè)試;可移植性、兼容性、可維護(hù)性、錯(cuò)誤恢復(fù)等功能;文檔等測(cè)試結(jié)果:測(cè)試通過(guò);列出問(wèn)題清單,規(guī)定在某個(gè)日期后復(fù)查;測(cè)試不通過(guò)回歸測(cè)試在修改之后進(jìn)行,保證沒(méi)有引入新的錯(cuò)誤\保證變更不會(huì)引入不期望的特性或額外的錯(cuò)誤\重新運(yùn)行測(cè)試用例在修復(fù)/改變/增強(qiáng)之后、對(duì)應(yīng)用程序的每個(gè)構(gòu)造重新驗(yàn)證所有的功能、在修復(fù)/改變中有沒(méi)有新的問(wèn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 心靈相約與健康同行演講稿三篇
- 2025年四川職教高考《職業(yè)適應(yīng)性測(cè)試》考前沖刺模擬試題庫(kù)(附答案)
- 2025年“雄鷹杯”小動(dòng)物醫(yī)師技能大賽備考試題庫(kù)(含答案)
- 錯(cuò)誤記憶課件
- 【語(yǔ)文試卷+答案】2024-2025學(xué)年泉州高二上期末質(zhì)檢
- 專題04 世界古代史(易錯(cuò)選擇題50道)
- 山東省德州市高三3月份高考模擬考試語(yǔ)文試題(含答案)
- 中班幼兒趣味親子活動(dòng)策劃方案五篇
- 電子商務(wù)采購(gòu)合同范本
- 物品抵押借款合同標(biāo)準(zhǔn)范本
- 2025年銷售部年度工作計(jì)劃
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- ESG表現(xiàn)對(duì)企業(yè)財(cái)務(wù)績(jī)效的影響研究
- 車間空調(diào)崗位送風(fēng)方案
- 使用錯(cuò)誤評(píng)估報(bào)告(可用性工程)模版
- 初一年級(jí)班主任上學(xué)期工作總結(jié)
- 2023-2024年同等學(xué)力經(jīng)濟(jì)學(xué)綜合真題及參考答案
- 農(nóng)村集體土地使用權(quán)轉(zhuǎn)讓協(xié)議
- 課件四露天礦山安全知識(shí)培訓(xùn)
- 2024年高考全國(guó)甲卷英語(yǔ)試卷(含答案)
- 職業(yè)技術(shù)學(xué)院《裝配式混凝土構(gòu)件生產(chǎn)與管理》課程標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論