




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章
軟件工程綜述
本章要點(diǎn):軟件特點(diǎn)與分類軟件工程及其發(fā)展軟件危機(jī)現(xiàn)象與原因工程技術(shù)與工程管理主流工程方法學(xué)第1章軟件工程綜述
本章要點(diǎn):11.軟件有什么特點(diǎn)
計(jì)算機(jī)系統(tǒng)由硬件、軟件兩部分組成。硬件是物理部件,如:處理器、存儲(chǔ)器、主板總線,具有一定的物理形態(tài),能夠獨(dú)立存在。軟件則是物理硬件以外的邏輯部件,如:程序、數(shù)據(jù)、文檔,抽象無形,不能獨(dú)立存在。
軟件工程需要研究如何更有成效地研發(fā)軟件、維護(hù)軟件,要達(dá)到這個(gè)目標(biāo),則必然需要對(duì)軟件有很好的認(rèn)識(shí)。1.軟件有什么特點(diǎn)
計(jì)算機(jī)系統(tǒng)由硬件、軟件兩部分組成22.什么是軟件工程
軟件工程是關(guān)于軟件開發(fā)、使用與維護(hù)的工程方法學(xué),是一門涉及工程技術(shù)、工程管理與工程經(jīng)濟(jì)等諸多內(nèi)容的綜合性工程學(xué)科。軟件工程建立在與軟件有關(guān)的工程概念、原理與方法基礎(chǔ)上,它是對(duì)現(xiàn)實(shí)軟件問題的工程方法探索,具有鮮明的工程實(shí)用性。2.什么是軟件工程
軟件工程是關(guān)于軟件開發(fā)、使用與31.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量的軟件產(chǎn)品。軟件研發(fā)機(jī)構(gòu)應(yīng)該有健康的可適應(yīng)軟件研發(fā)任務(wù)的組織機(jī)體。項(xiàng)目小組則是最小的因項(xiàng)目任務(wù)組建的研發(fā)團(tuán)隊(duì),要求小而精,成員大多限制在8人以內(nèi)。主要成員有:項(xiàng)目負(fù)責(zé)人、開發(fā)人員、資料管理員、軟件測試員。項(xiàng)目小組有多種管理機(jī)制,如:民主分權(quán)制、主程序員負(fù)責(zé)制、職業(yè)項(xiàng)目經(jīng)理負(fù)責(zé)制、層級(jí)負(fù)責(zé)制。1.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量43.為什么會(huì)發(fā)生軟件危機(jī)20世紀(jì)60年代中期,軟件開發(fā)者遭遇到了軟件危機(jī)。主要危機(jī)現(xiàn)象有:軟件開發(fā)成本進(jìn)度難估算、軟件質(zhì)量沒有保證、軟件不能滿足應(yīng)用需要、軟件缺乏可維護(hù)性。
危機(jī)客觀原因:軟件的邏輯隱蔽性、軟件的復(fù)雜性、軟件的低產(chǎn)業(yè)發(fā)展水平。
危機(jī)主管原因:漠視用戶需求、重結(jié)果輕過程、個(gè)人英雄理念。3.為什么會(huì)發(fā)生軟件危機(jī)20世紀(jì)60年代中期,軟件開54.軟件工程技術(shù)、管理與目標(biāo)
軟件工程涉及的技術(shù)問題有:
軟件過程:實(shí)現(xiàn)軟件的步驟與工程框架;
工程方法:實(shí)現(xiàn)軟件的技術(shù)性要素,如:工程規(guī)范、工程策略、技術(shù)手段等。
軟件工具:對(duì)工程方法與軟件過程的自動(dòng)化或半自動(dòng)化支持。
軟件工程涉及的管理問題有:項(xiàng)目管理、人員管理、過程管理、產(chǎn)品管理。
軟件工程還必須考慮工程目標(biāo),以體現(xiàn)其工程價(jià)值。一些主要的工程目標(biāo)是:降低成本、滿足需求、改善性能、提高質(zhì)量、及時(shí)交付。4.軟件工程技術(shù)、管理與目標(biāo)軟件工程涉及的技術(shù)問題65.主流工程方法學(xué)結(jié)構(gòu)化方法學(xué)是傳統(tǒng)的主流方法學(xué),以功能為基本元素,包括結(jié)構(gòu)化分析(SA)、結(jié)構(gòu)化設(shè)計(jì)(SD)與結(jié)構(gòu)化實(shí)現(xiàn)(SP),可對(duì)整個(gè)軟件生命周期提供方法學(xué)支持。面向?qū)ο蠓椒▽W(xué)則是目前的主流方法學(xué),包括面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O(shè)計(jì)(OOD)與面向?qū)ο髮?shí)現(xiàn)(OOA),可對(duì)整個(gè)軟件生命周期提供方法學(xué)支持。其以實(shí)體為基本元素,如:類體、對(duì)象,并可使程序系統(tǒng)基于現(xiàn)實(shí)實(shí)體構(gòu)建,更加接近現(xiàn)實(shí)環(huán)境。5.主流工程方法學(xué)結(jié)構(gòu)化方法學(xué)是傳統(tǒng)的主流方法學(xué),以功能為76.常用軟件工具
軟件工程的還需要有軟件分析設(shè)計(jì)工具的支持。一些常用的軟件分析設(shè)計(jì)工具有:MicrosoftVisio:通用圖形建模工具,可支持結(jié)構(gòu)化分析設(shè)計(jì)建模。SybasePowerDesigner:專門的數(shù)據(jù)庫建模工具。IBMRationalRose:專門的UML建模工具。6.常用軟件工具軟件工程的還需要有軟件分析設(shè)計(jì)工具的8第2章
軟件項(xiàng)目管理軟件研發(fā)團(tuán)隊(duì)軟件項(xiàng)目計(jì)劃軟件項(xiàng)目成本估算軟件項(xiàng)目風(fēng)險(xiǎn)軟件項(xiàng)目文檔、配置與質(zhì)量管理第2章軟件項(xiàng)目管理軟件研發(fā)團(tuán)隊(duì)91.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量的軟件產(chǎn)品。軟件研發(fā)機(jī)構(gòu)應(yīng)該有健康的可適應(yīng)軟件研發(fā)任務(wù)的組織機(jī)體。項(xiàng)目小組則是最小的因項(xiàng)目任務(wù)組建的研發(fā)團(tuán)隊(duì),要求小而精,成員大多限制在8人以內(nèi)。主要成員有:項(xiàng)目負(fù)責(zé)人、開發(fā)人員、資料管理員、軟件測試員。項(xiàng)目小組有多種管理機(jī)制,如:民主分權(quán)制、主程序員負(fù)責(zé)制、職業(yè)項(xiàng)目經(jīng)理負(fù)責(zé)制、層級(jí)負(fù)責(zé)制。1.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量102.軟件項(xiàng)目計(jì)劃為使軟件開發(fā)各項(xiàng)工作有秩序地進(jìn)行,項(xiàng)目管理者必須事先制定項(xiàng)目開發(fā)計(jì)劃。任務(wù)分配:進(jìn)行任務(wù)分解,然后合理地、適度地給每個(gè)成員分配項(xiàng)目任務(wù)。進(jìn)度安排:對(duì)項(xiàng)目任務(wù)及其資源按時(shí)序進(jìn)行合理部署。可基于里程碑制定項(xiàng)目進(jìn)度計(jì)劃,一些關(guān)鍵性成果,如:需求規(guī)格說明書,可作為項(xiàng)目進(jìn)度里程碑標(biāo)志。有許多工具可用來幫助建立項(xiàng)目進(jìn)度計(jì)劃,如:甘特圖、任務(wù)網(wǎng)絡(luò)圖。項(xiàng)目計(jì)劃書則是項(xiàng)目計(jì)劃的具體體現(xiàn),可作為軟件開發(fā)的工作指南。2.軟件項(xiàng)目計(jì)劃為使軟件開發(fā)各項(xiàng)工作有秩序地進(jìn)行,項(xiàng)目管理113.軟件項(xiàng)目成本估算軟件項(xiàng)目有來自多方面的成本,如:工資開支、場地費(fèi)、差旅費(fèi)、設(shè)備費(fèi)、資料費(fèi)。但項(xiàng)目最主要成本是人員工資成本。軟件成本估算,主要就是是對(duì)人力成本的估算。常用的人力成本成本估算方法有:程序代碼行成本估算、軟件功能點(diǎn)成本估算、軟件過程成本估算。3.軟件項(xiàng)目成本估算軟件項(xiàng)目有來自多方面的成本,如:工資開124.軟件項(xiàng)目風(fēng)險(xiǎn)軟件開發(fā)涉及諸多不確定性,用戶需求的不確定性,技術(shù)策略的不確定性,等等。這些不確定因素的存在,使得軟件開發(fā)有了這樣那樣的風(fēng)險(xiǎn),如:計(jì)劃風(fēng)險(xiǎn)、管理風(fēng)險(xiǎn)、需求風(fēng)險(xiǎn)、技術(shù)風(fēng)險(xiǎn)、人員風(fēng)險(xiǎn)、產(chǎn)品風(fēng)險(xiǎn)、用戶風(fēng)險(xiǎn)、商業(yè)風(fēng)險(xiǎn),等等。值得注意的是,風(fēng)險(xiǎn)所影響的是項(xiàng)目的未來結(jié)果,我們只能判斷其今后的發(fā)生概率,而并不能夠百分之百地確定其影響。因此,需要對(duì)風(fēng)險(xiǎn)實(shí)施有效的管理,以降低風(fēng)險(xiǎn)事件的發(fā)生概率。風(fēng)險(xiǎn)管理主要任務(wù)有:風(fēng)險(xiǎn)識(shí)別:調(diào)查是識(shí)別項(xiàng)目風(fēng)險(xiǎn)的有效途徑。可以依據(jù)風(fēng)險(xiǎn)類別進(jìn)行風(fēng)險(xiǎn)調(diào)查,以對(duì)項(xiàng)目風(fēng)險(xiǎn)有較全面的把握。風(fēng)險(xiǎn)評(píng)估:風(fēng)險(xiǎn)有多大的發(fā)生概率?風(fēng)險(xiǎn)有多大的影響力?風(fēng)險(xiǎn)防范:可以從風(fēng)險(xiǎn)規(guī)避、風(fēng)險(xiǎn)監(jiān)控與風(fēng)險(xiǎn)應(yīng)急這三個(gè)方面進(jìn)行風(fēng)險(xiǎn)防范。4.軟件項(xiàng)目風(fēng)險(xiǎn)軟件開發(fā)涉及諸多不確定性,用戶需求的不確定13第3章
軟件工程過程模式軟件生命周期瀑布模式、原型進(jìn)化模式增量模式、螺旋模式迭代模式、組件復(fù)用模式第3章軟件工程過程模式軟件生命周期141.軟件生命周期軟件生存周期是軟件由提出到開發(fā)到投入應(yīng)用的全過程,基于開發(fā)者立場一般劃分為三個(gè)生命段:定義期、開發(fā)期、運(yùn)行維護(hù)期,每個(gè)生命段又包含若干個(gè)階段任務(wù)。1.軟件生命周期軟件生存周期是軟件由提出到開發(fā)到投入應(yīng)用的152.瀑布模式瀑布模式是最傳統(tǒng)的過程模式,“瀑布”形象表達(dá)了其自頂向下、逐級(jí)細(xì)化的過程特征。瀑布模式的特點(diǎn)是:(1)線性化過程;(2)里程碑管理;(3)階段評(píng)審;(4)文檔驅(qū)動(dòng)。對(duì)于需求明確的軟件項(xiàng)目,瀑布模式有較好的適應(yīng)性。然而,如果需求不明確或需求易變更,則瀑布模式就顯現(xiàn)出了不適應(yīng)性。2.瀑布模式瀑布模式是最傳統(tǒng)的過程模式,“瀑布”形象表達(dá)了163.原型進(jìn)化模式原型進(jìn)化模式的開發(fā)流程是:開發(fā)者先建立原型系統(tǒng)供用戶評(píng)價(jià)或使用,然后根據(jù)用戶的意見反饋,對(duì)原型系統(tǒng)不斷修正,由此使它逐步接近并最終達(dá)到目標(biāo)系統(tǒng)的要求。原型進(jìn)化模式可較好適應(yīng)用戶的需求變更,但卻因缺乏里程碑管理機(jī)制,而不能很好支持大型項(xiàng)目。3.原型進(jìn)化模式原型進(jìn)化模式的開發(fā)流程是:開發(fā)者先建立原型174.增量模式增量模式是瀑布模式與原型進(jìn)化模式優(yōu)點(diǎn)的結(jié)合,其將系統(tǒng)分解為多個(gè)增量構(gòu)件,然后以增量構(gòu)件為原型部件,逐步創(chuàng)建、集成與完善。增量模式在整體上具有瀑布模式的里程碑特點(diǎn),可適應(yīng)大型項(xiàng)目。但系統(tǒng)的局部構(gòu)建上,則體現(xiàn)為基于增量構(gòu)件的原型進(jìn)化,可適應(yīng)用戶的需求變更。4.增量模式增量模式是瀑布模式與原型進(jìn)化模式優(yōu)點(diǎn)的結(jié)合,其185.螺旋模式螺旋模式是一種可較好規(guī)避開發(fā)風(fēng)險(xiǎn)的過程模式。螺旋模式的特點(diǎn)是項(xiàng)目基于任務(wù)域螺旋式遞進(jìn),每一個(gè)任務(wù)域都需要進(jìn)行風(fēng)險(xiǎn)評(píng)估,并需要根據(jù)評(píng)估結(jié)論制定有效的風(fēng)險(xiǎn)規(guī)避措施。5.螺旋模式螺旋模式是一種可較好規(guī)避開發(fā)風(fēng)險(xiǎn)的過程模式。螺196.迭代模式迭代模式是軟件的分析、設(shè)計(jì)與實(shí)現(xiàn)可交替反復(fù)進(jìn)行的過程模式。迭代模式有對(duì)面向?qū)ο蠓椒ǜ玫倪^程支持,可使面向?qū)ο蠓椒ǐ@得更有成效的工程應(yīng)用。6.迭代模式迭代模式是軟件的分析、設(shè)計(jì)與實(shí)現(xiàn)可交替反復(fù)進(jìn)行20第4章
軟件分析計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)軟件系統(tǒng)前期分析項(xiàng)目可行性分析軟件需求分析軟件需求驗(yàn)證第4章軟件分析計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)211.計(jì)算機(jī)體系結(jié)構(gòu)幾種典型的計(jì)算機(jī)體系結(jié)構(gòu):
中央主機(jī)結(jié)構(gòu):主機(jī)集中了全部智能,并依靠終端接口與外部設(shè)備連接??蛻魴C(jī)/服務(wù)器結(jié)構(gòu):智能分布于服務(wù)器與客戶機(jī),并依靠網(wǎng)絡(luò)連接成系統(tǒng)。其中,服務(wù)器處于核心位置,提供被動(dòng)核心服務(wù);客戶機(jī)處于邊緣位置,可主動(dòng)訪問服務(wù)器,尋求服務(wù)支持。瀏覽器/服務(wù)器結(jié)構(gòu):一種更適合互聯(lián)網(wǎng)遠(yuǎn)程交互的基于Web應(yīng)用的特殊的客戶機(jī)/服務(wù)器結(jié)構(gòu)。1.計(jì)算機(jī)體系結(jié)構(gòu)幾種典型的計(jì)算機(jī)體系結(jié)構(gòu):222.軟件系統(tǒng)前期分析可從以下方面進(jìn)行軟件高層分析:軟件系統(tǒng)的業(yè)務(wù)領(lǐng)域、業(yè)務(wù)邊界與業(yè)務(wù)流程。軟件系統(tǒng)對(duì)硬件設(shè)施、網(wǎng)絡(luò)環(huán)境、數(shù)據(jù)環(huán)境的依賴。軟件系統(tǒng)的安全層級(jí)、措施與防范機(jī)制。軟件系統(tǒng)與其它相關(guān)系統(tǒng)之間的協(xié)作關(guān)系。軟件系統(tǒng)與用戶組織及其工作任務(wù)的協(xié)調(diào)性與適應(yīng)性。2.軟件系統(tǒng)前期分析可從以下方面進(jìn)行軟件高層分析:233.項(xiàng)目可行性分析
以少量的時(shí)間及人力成本,對(duì)項(xiàng)目是否可著手實(shí)施作出有依據(jù)的判斷,以避免因項(xiàng)目實(shí)施條件不具備而造成的大量的人力、物力與時(shí)間的浪費(fèi)??蓮募夹g(shù)、經(jīng)濟(jì)、應(yīng)用等幾個(gè)方面進(jìn)行可行性分析,分析結(jié)論則需要撰寫成可行性分析報(bào)告,并提交有關(guān)部門確認(rèn)。3.項(xiàng)目可行性分析以少量的時(shí)間及人力成本,對(duì)項(xiàng)目是245.軟件文檔管理軟件文檔是工程模式軟件開發(fā)的成果體現(xiàn)。然而,軟件文檔要能產(chǎn)生很好的工程效應(yīng),則還必須要有管理規(guī)范的支持。開發(fā)時(shí)必須建立的技術(shù)資料、管理資料為正式文檔,通常需要專門歸檔。而根據(jù)需要隨時(shí)創(chuàng)建的并且無須歸檔的模型或工作表格則為非正式文檔。按照文檔使用范圍,則又可分為:技術(shù)文檔、管理文檔與用戶文檔。5.軟件文檔管理軟件文檔是工程模式軟件開發(fā)的成果體現(xiàn)。然而256.軟件配置管理所謂軟件配置,也就是基于軟件生產(chǎn)軌跡進(jìn)行過程控制與產(chǎn)品追蹤。其貫穿于整個(gè)軟件生命周期,因此可使軟件開發(fā)中產(chǎn)生的各種成果具有一致性。軟件配置的主要任務(wù)有:軟件配置規(guī)劃、軟件變更控制、軟件版本控制。6.軟件配置管理所謂軟件配置,也就是基于軟件生產(chǎn)軌跡進(jìn)行過267.軟件質(zhì)量管理所謂軟件質(zhì)量,也就是對(duì)軟件品質(zhì)的優(yōu)劣評(píng)價(jià)。軟件開發(fā)者應(yīng)該開發(fā)出高質(zhì)量的軟件產(chǎn)品,以更好地滿足用戶應(yīng)用。來自經(jīng)驗(yàn)的結(jié)論是:嚴(yán)格有效的軟件質(zhì)量管理,可帶來高質(zhì)量的軟件產(chǎn)品。軟件質(zhì)量管理涉及問題有:質(zhì)量標(biāo)準(zhǔn)、質(zhì)量計(jì)劃與質(zhì)量控制。7.軟件質(zhì)量管理所謂軟件質(zhì)量,也就是對(duì)軟件品質(zhì)的優(yōu)劣評(píng)價(jià)。277.組件復(fù)用模式組件復(fù)用模式是對(duì)基于組件的系統(tǒng)集成的過程支持。組件復(fù)用可帶來了流水線軟件裝配,系統(tǒng)所需組件大多無須專門開發(fā),而可通過專業(yè)制作機(jī)構(gòu)提供,由此可提高軟件開發(fā)效率,并可提高軟件產(chǎn)品質(zhì)量。7.組件復(fù)用模式組件復(fù)用模式是對(duì)基于組件的系統(tǒng)集成的過程支288.分析任務(wù)與過程需求分析是為有效解決用戶需求問題而需要進(jìn)行的一項(xiàng)工程活動(dòng),所需考慮的需求問題有:功能需求、數(shù)據(jù)需求、性能需求、接口需求。開發(fā)者與用戶都將參與需求分析活動(dòng)。開發(fā)者承擔(dān)分析任務(wù),但活動(dòng)核心則是用戶。需求分析任務(wù)需要由熟悉用戶業(yè)務(wù)的系統(tǒng)分析師承擔(dān)。需求分析步驟是:獲取用戶需求、創(chuàng)建需求模型、確定軟件規(guī)格、進(jìn)行需求驗(yàn)證。8.分析任務(wù)與過程需求分析是為有效解決用戶需求問題而需要進(jìn)299.獲取用戶需求用戶泛指一切可從軟件獲得服務(wù)的對(duì)象。可以是某個(gè)人,但也可以是人以外的機(jī)構(gòu)、部門、其他系統(tǒng)或設(shè)備。可通過調(diào)查而獲取用戶需求。然而,有效的需求收集則依賴于有效的調(diào)查提問,并依賴于合適的調(diào)查方法。一些常用調(diào)查方法是:訪談、座談、問卷、跟班、收集資料。來自用戶的需求將體現(xiàn)為需求規(guī)約,其可表達(dá)用戶的軟件價(jià)值。9.獲取用戶需求用戶泛指一切可從軟件獲得服務(wù)的對(duì)象。可以是3010.建立需求模型
需求建模是用戶需求問題圖解,一些常用模型有:業(yè)務(wù)樹圖、用例圖、活動(dòng)圖。其中,業(yè)務(wù)樹是結(jié)構(gòu)化需求建模,用例圖是系統(tǒng)業(yè)務(wù)舉例,活動(dòng)圖則反映系統(tǒng)工作流程。10.建立需求模型需求建模是用戶需求問題圖解,一些3111.進(jìn)行需求驗(yàn)證需求驗(yàn)證是指對(duì)需求分析成果的檢查與確認(rèn)。主要的需求驗(yàn)證內(nèi)容有:有效性驗(yàn)證、一致性驗(yàn)證、完整性驗(yàn)證、現(xiàn)實(shí)性驗(yàn)證、可檢驗(yàn)性驗(yàn)證??赏ㄟ^需求原型確認(rèn)或需求評(píng)審,而實(shí)現(xiàn)需求驗(yàn)證。11.進(jìn)行需求驗(yàn)證需求驗(yàn)證是指對(duì)需求分析成果的檢查與確認(rèn)。32第5章
軟件設(shè)計(jì)本章要點(diǎn):概要設(shè)計(jì)任務(wù)系統(tǒng)構(gòu)架設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)程序結(jié)構(gòu)設(shè)計(jì)軟件算法設(shè)計(jì)程序編碼第5章軟件設(shè)計(jì)本章要點(diǎn):331.設(shè)計(jì)任務(wù)與過程概要設(shè)計(jì)也叫總體設(shè)計(jì),需要確定軟件系統(tǒng)總體構(gòu)造,涉及系統(tǒng)構(gòu)架、程序結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、安全防范、故障處理等諸多方面的設(shè)計(jì),以對(duì)軟件系統(tǒng)做出總的設(shè)計(jì)規(guī)劃。概要設(shè)計(jì)以需求規(guī)格定義為依據(jù),首先要確定的是系統(tǒng)構(gòu)架,然后以系統(tǒng)構(gòu)架為基礎(chǔ),確定系統(tǒng)全局?jǐn)?shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu),考慮系統(tǒng)安全防范、故障處理措施。1.設(shè)計(jì)任務(wù)與過程概要設(shè)計(jì)也叫總體設(shè)計(jì),需要確定軟件系統(tǒng)總342.系統(tǒng)構(gòu)架系統(tǒng)構(gòu)架是軟件系統(tǒng)的基礎(chǔ)框架,需要考慮問題有:系統(tǒng)支持環(huán)境、系統(tǒng)體系結(jié)構(gòu)。系統(tǒng)支持環(huán)境是構(gòu)建軟件大廈的地基,涉及硬件環(huán)境、軟件環(huán)境、網(wǎng)絡(luò)環(huán)境。系統(tǒng)體系結(jié)構(gòu)則為軟件系統(tǒng)總體結(jié)構(gòu)。分層體系是具代表性的軟件體系結(jié)構(gòu)。2.系統(tǒng)構(gòu)架系統(tǒng)構(gòu)架是軟件系統(tǒng)的基礎(chǔ)框架,需要考慮問題有:353.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系。程序設(shè)計(jì)中的數(shù)據(jù)結(jié)構(gòu),一般是動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),以服務(wù)功能為設(shè)計(jì)目標(biāo)。概要設(shè)計(jì)中,需要考慮的是影響諸多功能、跨越多個(gè)模塊的全局性程序數(shù)據(jù)。數(shù)據(jù)庫設(shè)計(jì)中的數(shù)據(jù)結(jié)構(gòu)則一般是靜態(tài)結(jié)構(gòu),以建立合理存儲(chǔ)為設(shè)計(jì)目標(biāo),所涉及元素有:數(shù)據(jù)表、數(shù)據(jù)視圖、數(shù)據(jù)索引。3.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系。364.程序結(jié)構(gòu)概要設(shè)計(jì)需要抽象模塊,并從功能、數(shù)據(jù)、接口等諸多方面定義模塊。結(jié)構(gòu)化程序中的模塊是程序函數(shù)。面向?qū)ο蟪绦蛑械哪K是類體。在基于組件的系統(tǒng)集成中,組件則被看做是模塊。高質(zhì)量程序模塊應(yīng)該有很好的獨(dú)立性,這樣的模塊通常更加安全、穩(wěn)定、可靠,也更加便于維護(hù)改造。內(nèi)聚度與耦合度這兩個(gè)技術(shù)指標(biāo)可用于判斷模塊是否有較好的獨(dú)立性。概要設(shè)計(jì)還需要確定模塊之間的任務(wù)協(xié)作與控制,并設(shè)計(jì)一個(gè)合理的可控制的可擴(kuò)充的程序結(jié)構(gòu),以使諸多模塊能夠集成為一個(gè)整體。結(jié)構(gòu)化程序的控制是自頂向下的??偪啬K對(duì)程序進(jìn)行頂層整體控制,下級(jí)模塊則實(shí)現(xiàn)對(duì)具體任務(wù)的控制與操作。面向?qū)ο蟪绦騽t由類圖、構(gòu)件圖說明結(jié)構(gòu)。類圖用于描述面向?qū)ο蟪绦蜻壿嫿Y(jié)構(gòu),構(gòu)件圖用于描述面向?qū)ο蟪绦蛭锢斫Y(jié)構(gòu)。4.程序結(jié)構(gòu)概要設(shè)計(jì)需要抽象模塊,并從功能、數(shù)據(jù)、接口等諸375.程序結(jié)構(gòu)化流程控制程序結(jié)構(gòu)化流程控制是高清晰度的控制。程序如果能滿足單人口、單出口的要求,則程序是結(jié)構(gòu)化控制。順序、選擇、循環(huán)等控制結(jié)構(gòu)是結(jié)構(gòu)化控制。GOTO語句則是非結(jié)構(gòu)化控制的代表??墒挂粋€(gè)程序塊有多個(gè)出入口,可降低程序的穩(wěn)定性、可靠性與可維護(hù)性。5.程序結(jié)構(gòu)化流程控制程序結(jié)構(gòu)化流程控制是高清晰度的控制。386.程序算法設(shè)計(jì)工具
程序流程圖、NS圖、PAD圖、PDL語言,是與結(jié)構(gòu)化控制相適應(yīng)的算法設(shè)計(jì)工具。6.程序算法設(shè)計(jì)工具程序流程圖、NS圖、PAD圖、39程序流程圖程序流程圖40NS圖NS圖41PAD圖PAD圖427.算法復(fù)雜度評(píng)估算法復(fù)雜度是對(duì)程序算法是否復(fù)雜的量化說明。通常,可以從時(shí)間和空間兩個(gè)方面,對(duì)程序算法進(jìn)行復(fù)雜度評(píng)價(jià)。時(shí)間復(fù)雜度:由算法執(zhí)行所耗費(fèi)時(shí)間決定。通常,算法中語句的執(zhí)行次數(shù)越多,其花費(fèi)時(shí)間就越多,則時(shí)間復(fù)雜度就越高。空間復(fù)雜度:由算法所需存儲(chǔ)空間決定。通常,程序中定義的數(shù)據(jù)元素越少,采用的數(shù)據(jù)類型越簡單,則空間復(fù)雜度就越低。7.算法復(fù)雜度評(píng)估算法復(fù)雜度是對(duì)程序算法是否復(fù)雜的量化說明43McCabe方法這是一種基于控制流的廣泛應(yīng)用的程序算法復(fù)雜度評(píng)估方法。其定義程序算法復(fù)雜度為強(qiáng)連通程序圖中線性無關(guān)的有向環(huán)的個(gè)數(shù)。計(jì)算公式是:V(G)=m–n+1,其中,V是強(qiáng)連通程序圖中的環(huán)數(shù),m是弧數(shù),n是節(jié)點(diǎn)數(shù)。McCabe方法這是一種基于控制流的廣泛應(yīng)用的程序算法復(fù)雜度448.程序編碼編程語言可分為機(jī)器語言、匯編語言、傳統(tǒng)高級(jí)語言、結(jié)構(gòu)化語言、面向?qū)ο笳Z言、第四代程序語言。有必要根據(jù)問題性質(zhì)選擇合適的程序語言,以提高編程質(zhì)量。編程規(guī)范即是為提高程序可讀性、可理解性而需要遵守的約定。一些常用的編碼規(guī)范有:程序注釋、標(biāo)識(shí)符命名、程序編排格式。程序算法設(shè)計(jì)還必須考慮程序的運(yùn)行效率,其由程序的算法復(fù)雜度、程序中數(shù)據(jù)的類型、程序編譯的優(yōu)化程度等諸多因素決定。8.程序編碼編程語言可分為機(jī)器語言、匯編語言、傳統(tǒng)高級(jí)語言45第6章
軟件測試本章要點(diǎn):測試方法與過程測試用例面向?qū)ο鬁y試程序調(diào)試測試工具第6章軟件測試本章要點(diǎn):461.測試目的、計(jì)劃與方法軟件測試之根本目的在于發(fā)現(xiàn)軟件錯(cuò)誤。軟件測試需要事先制定計(jì)劃,如:測試時(shí)間、測試任務(wù)、測試目標(biāo)、責(zé)任人等,即需要通過測試計(jì)劃提前確定下來。有黑盒測試與白盒測試兩種基本測試方法。黑盒測試以概要設(shè)計(jì)中的模塊定義為測試內(nèi)容,主要用于系統(tǒng)確認(rèn)測試、系統(tǒng)集成測試。白盒測試則以詳細(xì)設(shè)計(jì)中的程序算法說明為測試內(nèi)容,主要用于程序單元測試。1.測試目的、計(jì)劃與方法軟件測試之根本目的在于發(fā)現(xiàn)軟件錯(cuò)誤472.測試任務(wù)軟件測試任務(wù)有:單元測試、集成測試、確認(rèn)測試。單元測試是以基本單元模塊為測試對(duì)象。一般以白盒測試為主,以黑盒測試為輔。主要測試內(nèi)容有:模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、執(zhí)行路徑、出錯(cuò)處理、條件邊界等。諸多單元模塊可按照設(shè)計(jì)好的體系結(jié)構(gòu)進(jìn)行裝配,在此過程中需要集成測試,以發(fā)現(xiàn)模塊之間是否有連接錯(cuò)誤。系統(tǒng)有非漸增集成與漸增集成測試兩種集成策略。非漸增集成是一次性把所有模塊組合在一起。漸增集成測試則是每個(gè)單元模塊逐個(gè)地集成到系統(tǒng)中去。在系統(tǒng)完成集成之后,接著需要進(jìn)行確認(rèn)測試,以確認(rèn)用戶需求是否得以實(shí)現(xiàn)。測試內(nèi)容有:軟件有效性驗(yàn)證、軟件配置復(fù)查。測試方法有:Alpha測試、Beta測試。2.測試任務(wù)軟件測試任務(wù)有:單元測試、集成測試、確認(rèn)測試。483.測試用例
設(shè)計(jì)測試用例,就是為測試準(zhǔn)備測試數(shù)據(jù)。白盒測試用例為邏輯覆蓋,主要有:語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋和路徑覆蓋等幾種覆蓋形式。黑盒測試用例則有等價(jià)類劃分、邊界值分析、錯(cuò)誤推測等幾種設(shè)計(jì)方法。3.測試用例設(shè)計(jì)測試用例,就是為測試準(zhǔn)備測試數(shù)據(jù)。494.面向?qū)ο蟪绦驕y試
面向?qū)ο蟪绦蛏婕皢卧獪y試、集成測試、確認(rèn)測試,但測試內(nèi)容不同。在進(jìn)行面向?qū)ο蟪绦騿卧獪y試時(shí),已經(jīng)不能孤立地測試單個(gè)操作,而應(yīng)該把操作作為類的一部分來測試。集成測試則反映為基于線程的測試或基于使用的測試。確認(rèn)測試則體現(xiàn)為用例驅(qū)動(dòng)。4.面向?qū)ο蟪绦驕y試面向?qū)ο蟪绦蛏婕皢卧獪y試、集成505.程序調(diào)試診斷發(fā)現(xiàn)錯(cuò)誤并修正排除錯(cuò)誤,這即是程序調(diào)試。其中,診斷是關(guān)鍵。如果錯(cuò)誤的性質(zhì)與位置被診斷出來,則改錯(cuò)只是一件相對(duì)簡單的工作。主要診斷方法有:①在程序中插入輸出語句;②使用自動(dòng)調(diào)式工具。程序調(diào)試策略有:試探法、回溯法、對(duì)分查找法、歸納法、演繹法。5.程序調(diào)試診斷發(fā)現(xiàn)錯(cuò)誤并修正排除錯(cuò)誤,這即是程序調(diào)試。其516.測試工具測試數(shù)據(jù)生成程序:用于自動(dòng)生成測試用例。動(dòng)態(tài)分析程序:用于分析被測程序中某語句的動(dòng)態(tài)執(zhí)行情況,如:執(zhí)行次數(shù)、執(zhí)行頻率。靜態(tài)分析程序:用于掃描被測試程序正文,并從中發(fā)現(xiàn)程序錯(cuò)誤。6.測試工具測試數(shù)據(jù)生成程序:用于自動(dòng)生成測試用例。52第7章
軟件維護(hù)與再工程軟件維護(hù)分類軟件可維護(hù)性軟件維護(hù)實(shí)施軟件再工程第7章軟件維護(hù)與再工程軟件維護(hù)分類531.軟件維護(hù)分類改正性維護(hù)完善性維護(hù)適應(yīng)性維護(hù)預(yù)防性維護(hù)1.軟件維護(hù)分類改正性維護(hù)542.軟件可維護(hù)性軟件可維護(hù)性是指維護(hù)人員對(duì)軟件系統(tǒng)進(jìn)行修正、改進(jìn)的難易。影響軟件可維護(hù)性的因素有:系統(tǒng)大小、系統(tǒng)文檔、系統(tǒng)年齡??赏ㄟ^軟件的易理解性、可靠性、易修改性、易移植性的評(píng)價(jià),而對(duì)軟件系統(tǒng)進(jìn)行可維護(hù)性綜合評(píng)估。2.軟件可維護(hù)性軟件可維護(hù)性是指維護(hù)人員對(duì)軟件系統(tǒng)進(jìn)行修正553.軟件維護(hù)實(shí)施開發(fā)組可承擔(dān)軟件初期維護(hù),但當(dāng)軟件轉(zhuǎn)入正常使用以后,其維護(hù)工作則一般由專門的維護(hù)機(jī)構(gòu)承擔(dān)。軟件維護(hù)機(jī)構(gòu)人員組成有:維護(hù)負(fù)責(zé)人、系統(tǒng)監(jiān)督員、配置管理員、維護(hù)工程師。其中,維護(hù)負(fù)責(zé)人全權(quán)負(fù)責(zé)維護(hù)任務(wù),包括技術(shù)與管理兩個(gè)方面的工作。維護(hù)將由申請(qǐng)報(bào)告啟動(dòng),其一般由軟件用戶提出。維護(hù)機(jī)構(gòu)則對(duì)維護(hù)申請(qǐng)進(jìn)行評(píng)審。維護(hù)活動(dòng)需要記錄存檔,需要進(jìn)行評(píng)價(jià)。3.軟件維護(hù)實(shí)施開發(fā)組可承擔(dān)軟件初期維護(hù),但當(dāng)軟件轉(zhuǎn)入正常564.軟件再工程軟件再工程是指對(duì)已存在軟件系統(tǒng)的重構(gòu)與擴(kuò)充。再工程主要用于一些老系統(tǒng)改造,所涉及活動(dòng)有:逆向工程、重構(gòu)工程、正向工程。4.軟件再工程軟件再工程是指對(duì)已存在軟件系統(tǒng)的重構(gòu)與擴(kuò)充。57第8章
結(jié)構(gòu)化工程方法分析建模特點(diǎn)數(shù)據(jù)、功能與行為建模數(shù)據(jù)、功能與行為定義結(jié)構(gòu)化設(shè)計(jì)建模基于數(shù)據(jù)流的結(jié)構(gòu)映射程序結(jié)構(gòu)優(yōu)化第8章結(jié)構(gòu)化工程方法分析建模特點(diǎn)581.功能建模功能建模是對(duì)系統(tǒng)數(shù)據(jù)加工的圖解。數(shù)據(jù)流圖是最常用的結(jié)構(gòu)化功能建模工具,涉及數(shù)據(jù)接口、數(shù)據(jù)處理、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)等圖形元素,用于描述系統(tǒng)數(shù)據(jù)加工細(xì)節(jié)。數(shù)據(jù)流可以逐層細(xì)化,由此可逐步深入地解剖數(shù)據(jù)處理過程。數(shù)據(jù)流細(xì)化一般自頂層業(yè)務(wù)環(huán)境開始,然后到1層、2層,由此而逐步深入到系統(tǒng)內(nèi)部獲取功能細(xì)節(jié)。前期分析中的業(yè)務(wù)樹可用于支持?jǐn)?shù)據(jù)流功能細(xì)化,以方便對(duì)功能的逐層解剖。1.功能建模功能建模是對(duì)系統(tǒng)數(shù)據(jù)加工的圖解。數(shù)據(jù)流圖是最常592.行為建模行為模型用于說明軟件系統(tǒng)與環(huán)境的交互。狀態(tài)轉(zhuǎn)換圖是最常用的軟件行為建模工具,涉及狀態(tài)、事件等圖形元素。2.行為建模行為模型用于說明軟件系統(tǒng)與環(huán)境的交互。603.數(shù)據(jù)字典數(shù)據(jù)字典用于定義軟件元素,以使軟件元素獲得嚴(yán)密的、詳細(xì)的、精確的規(guī)格說明。早期軟件開發(fā)中,數(shù)據(jù)字典需要使用手工方式創(chuàng)建與維護(hù)。目前軟件開發(fā)中,數(shù)據(jù)字典可依靠CASE工具自動(dòng)生成與維護(hù)。需求分析模型中的數(shù)據(jù)、功能、行為等諸多方面的元素,都有必要通過數(shù)據(jù)字典給予細(xì)節(jié)說明,以達(dá)到對(duì)系統(tǒng)較完整全面的規(guī)格定義。3.數(shù)據(jù)字典數(shù)據(jù)字典用于定義軟件元素,以使軟件元素獲得嚴(yán)密614.設(shè)計(jì)建模常用的結(jié)構(gòu)化圖形建模語言是:程序結(jié)構(gòu)圖、H-IPO圖。程序結(jié)構(gòu)圖比較適合設(shè)計(jì)者構(gòu)思程序結(jié)構(gòu),但模塊功能特征較難由模型體現(xiàn),因此在模型之外還需要有對(duì)模塊的詳細(xì)說明。H-IPO圖則可帶來較高的建模清晰度,其由“H圖”與“IPO圖”組合。H圖表示程序結(jié)構(gòu),IPO圖則定義模塊,描述模塊:輸入、處理、輸出。程序結(jié)構(gòu)還可表示為框架偽碼,以方便由結(jié)構(gòu)設(shè)計(jì)到算法設(shè)計(jì)的過渡。4.設(shè)計(jì)建模常用的結(jié)構(gòu)化圖形建模語言是:程序結(jié)構(gòu)圖、H-I625.結(jié)構(gòu)化程序結(jié)構(gòu)映射基于數(shù)據(jù)流的結(jié)構(gòu)映射,是以功能為目標(biāo)的結(jié)構(gòu)化建模方法的延伸,可達(dá)到由功能分析到功能設(shè)計(jì)的有效轉(zhuǎn)換。數(shù)據(jù)流可分為變換流與事務(wù)流,并可根據(jù)其特征,分別按不同方法進(jìn)行結(jié)構(gòu)映射。5.結(jié)構(gòu)化程序結(jié)構(gòu)映射基于數(shù)據(jù)流的結(jié)構(gòu)映射,是以功能為目標(biāo)637.程序結(jié)構(gòu)優(yōu)化通過數(shù)據(jù)流映射只能獲取程序的基本框架,一般還需要對(duì)程序結(jié)構(gòu)進(jìn)行結(jié)構(gòu)優(yōu)化??蓮哪K獨(dú)立性、模塊接口復(fù)雜度、程序過程流暢性、程序構(gòu)造簡潔性等諸多方面,對(duì)程序結(jié)構(gòu)進(jìn)行優(yōu)化。一些源于經(jīng)驗(yàn)的啟發(fā)性原則,可為程序結(jié)構(gòu)優(yōu)化提供指導(dǎo)性參考。7.程序結(jié)構(gòu)優(yōu)化通過數(shù)據(jù)流映射只能獲取程序的基本框架,一般64第9章
面向?qū)ο蠊こ谭椒║ML特點(diǎn)用例建模活動(dòng)建模實(shí)體類分析建模系統(tǒng)邏輯結(jié)構(gòu)建模程序?qū)ο蠼换ソO到y(tǒng)物理裝配與部署第9章面向?qū)ο蠊こ谭椒║ML特點(diǎn)651.UML特點(diǎn)UML是統(tǒng)一建模語言,有統(tǒng)一的語法規(guī)則、語義規(guī)則與語用規(guī)則,并可從多個(gè)不同視角建立軟件模型。UML的建模的過程特點(diǎn)是:用例驅(qū)動(dòng)、以構(gòu)架為中心、增量迭代。UML通過包實(shí)現(xiàn)了對(duì)模型的有效的一體化的管理。1.UML特點(diǎn)UML是統(tǒng)一建模語言,有統(tǒng)一的語法規(guī)則、語義662.用例建模用例建模是面向用戶需求的,能夠反映系統(tǒng)的用戶價(jià)值。用例圖中的基本元素有:用例:用戶業(yè)務(wù)級(jí)程序?qū)嵗?,使用橢圓圖標(biāo)表示。參與者:可與系統(tǒng)進(jìn)行主動(dòng)交流的外部環(huán)境元素,使用人形圖標(biāo)表示。交流:系統(tǒng)與用戶之間的交互或通信,使用連線表示。參與者之間可建立泛化關(guān)系。用例之間有泛化、延伸、包含關(guān)系。2.用例建模用例建模是面向用戶需求的,能夠反映系統(tǒng)的用戶價(jià)673.活動(dòng)建模活動(dòng)圖用于描述系統(tǒng)動(dòng)態(tài)過程,主要圖形元素有:活動(dòng)、轉(zhuǎn)換、起點(diǎn)、終點(diǎn)、判斷、并發(fā)、同步、泳道等??墒褂没顒?dòng)圖說明高層業(yè)務(wù)級(jí)活動(dòng),這通常涉及整個(gè)業(yè)務(wù)流程。也可針對(duì)每個(gè)用例進(jìn)行活動(dòng)建模,以反映用例內(nèi)部活動(dòng)細(xì)節(jié)。3.活動(dòng)建模活動(dòng)圖用于描述系統(tǒng)動(dòng)態(tài)過程,主要圖形元素有:活684.類分析建模面向?qū)ο蟪绦蛏婕翱刂祁?、邊界類、?shí)體類,分析中主要考慮的是實(shí)體類。類分析建模首要工作是發(fā)現(xiàn)實(shí)體類??墒褂妹~搜索法發(fā)現(xiàn)候選類,然后再從候選類中篩選出實(shí)體類。實(shí)體類所代表的數(shù)據(jù)相互之間通常有一定的關(guān)系。依靠這種關(guān)系可形成有組織的程序數(shù)據(jù)結(jié)構(gòu)。實(shí)體類之間的主要數(shù)據(jù)關(guān)系有:關(guān)聯(lián)、聚集、泛化。4.類分析建模面向?qū)ο蟪绦蛏婕翱刂祁?、邊界類、?shí)體類,分析695.面向?qū)ο笤O(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)以功能為依據(jù),并以實(shí)現(xiàn)功能為目標(biāo)。面向?qū)ο蟪绦騽t有與結(jié)構(gòu)化程序不同的內(nèi)部構(gòu)造與運(yùn)行機(jī)制,因此需要有不同于結(jié)構(gòu)化程序的專門的設(shè)計(jì)方法的支持。面向?qū)ο蟪绦蚴且詫?shí)體為依據(jù),并基于實(shí)體及其控制確定程序結(jié)構(gòu),并還需要考察對(duì)象行為,說明對(duì)象動(dòng)態(tài)行為過程。UML可提供面向?qū)ο笤O(shè)計(jì)建模。所涉及模型有:設(shè)計(jì)類圖、狀態(tài)圖、協(xié)作圖、時(shí)序圖、構(gòu)件圖、部署圖。設(shè)計(jì)建模應(yīng)是合乎邏輯的推論,并需要從邏輯結(jié)構(gòu)、動(dòng)態(tài)過程與物理結(jié)構(gòu)這三個(gè)方面的建模。5.面向?qū)ο笤O(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)以功能為依據(jù),并以實(shí)現(xiàn)功706.邏輯結(jié)構(gòu)設(shè)計(jì)系統(tǒng)構(gòu)架是構(gòu)造程序系統(tǒng)的基本框架,需要優(yōu)先考慮。分層構(gòu)架則是一種常用的構(gòu)架模式,其特點(diǎn)是程序系統(tǒng)按功能支持分層構(gòu)建,如:應(yīng)用層、中間件層、系統(tǒng)層等。應(yīng)用程序框架則涉及程序構(gòu)造。一個(gè)復(fù)雜的程序系統(tǒng),可被劃分為諸多相對(duì)簡單的任務(wù)子系統(tǒng)。這樣的任務(wù)子系統(tǒng),大多有一定的獨(dú)立性,并是搭建程序框架的基本元素。6.邏輯結(jié)構(gòu)設(shè)計(jì)系統(tǒng)構(gòu)架是構(gòu)造程序系統(tǒng)的基本框架,需要優(yōu)先717.動(dòng)態(tài)過程設(shè)計(jì)動(dòng)態(tài)過程模型有:協(xié)作圖、時(shí)序圖、狀態(tài)圖。協(xié)作圖可說明對(duì)象之間的動(dòng)態(tài)交互。協(xié)作圖建模也將依靠用例驅(qū)動(dòng)。已經(jīng)獲得的基于用例的類關(guān)系模型,可作為協(xié)作建模的結(jié)構(gòu)背景,由此可獲取到有關(guān)對(duì)象的協(xié)作框架。時(shí)序圖也是針對(duì)對(duì)象的動(dòng)態(tài)行為建模,但基于對(duì)象生命線說明對(duì)象交互,因此有比協(xié)作圖更加直觀清晰的時(shí)序說明。狀態(tài)圖可描述對(duì)象狀態(tài)及其遷移。通常,狀態(tài)圖中的對(duì)象是一個(gè)取自系統(tǒng)的個(gè)體元素。因此,在對(duì)某個(gè)對(duì)象進(jìn)行狀態(tài)考察時(shí),并無須過多考慮它與其他對(duì)象的交互。7.動(dòng)態(tài)過程設(shè)計(jì)動(dòng)態(tài)過程模型有:協(xié)作圖、時(shí)序圖、狀態(tài)圖。728.物理裝配與部署構(gòu)件圖是軟件系統(tǒng)物理建模,用于反映軟件系統(tǒng)基于構(gòu)件的物理集成與裝配。部署圖可說明程序系統(tǒng)的安裝部署,可反映程序系統(tǒng)運(yùn)行時(shí),各種將駐留或執(zhí)行程序的計(jì)算機(jī)設(shè)備之間的物理關(guān)聯(lián)。8.物理裝配與部署構(gòu)件圖是軟件系統(tǒng)物理建模,用于反映軟件系73
第1章
軟件工程綜述
本章要點(diǎn):軟件特點(diǎn)與分類軟件工程及其發(fā)展軟件危機(jī)現(xiàn)象與原因工程技術(shù)與工程管理主流工程方法學(xué)第1章軟件工程綜述
本章要點(diǎn):741.軟件有什么特點(diǎn)
計(jì)算機(jī)系統(tǒng)由硬件、軟件兩部分組成。硬件是物理部件,如:處理器、存儲(chǔ)器、主板總線,具有一定的物理形態(tài),能夠獨(dú)立存在。軟件則是物理硬件以外的邏輯部件,如:程序、數(shù)據(jù)、文檔,抽象無形,不能獨(dú)立存在。
軟件工程需要研究如何更有成效地研發(fā)軟件、維護(hù)軟件,要達(dá)到這個(gè)目標(biāo),則必然需要對(duì)軟件有很好的認(rèn)識(shí)。1.軟件有什么特點(diǎn)
計(jì)算機(jī)系統(tǒng)由硬件、軟件兩部分組成752.什么是軟件工程
軟件工程是關(guān)于軟件開發(fā)、使用與維護(hù)的工程方法學(xué),是一門涉及工程技術(shù)、工程管理與工程經(jīng)濟(jì)等諸多內(nèi)容的綜合性工程學(xué)科。軟件工程建立在與軟件有關(guān)的工程概念、原理與方法基礎(chǔ)上,它是對(duì)現(xiàn)實(shí)軟件問題的工程方法探索,具有鮮明的工程實(shí)用性。2.什么是軟件工程
軟件工程是關(guān)于軟件開發(fā)、使用與761.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量的軟件產(chǎn)品。軟件研發(fā)機(jī)構(gòu)應(yīng)該有健康的可適應(yīng)軟件研發(fā)任務(wù)的組織機(jī)體。項(xiàng)目小組則是最小的因項(xiàng)目任務(wù)組建的研發(fā)團(tuán)隊(duì),要求小而精,成員大多限制在8人以內(nèi)。主要成員有:項(xiàng)目負(fù)責(zé)人、開發(fā)人員、資料管理員、軟件測試員。項(xiàng)目小組有多種管理機(jī)制,如:民主分權(quán)制、主程序員負(fù)責(zé)制、職業(yè)項(xiàng)目經(jīng)理負(fù)責(zé)制、層級(jí)負(fù)責(zé)制。1.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量773.為什么會(huì)發(fā)生軟件危機(jī)20世紀(jì)60年代中期,軟件開發(fā)者遭遇到了軟件危機(jī)。主要危機(jī)現(xiàn)象有:軟件開發(fā)成本進(jìn)度難估算、軟件質(zhì)量沒有保證、軟件不能滿足應(yīng)用需要、軟件缺乏可維護(hù)性。
危機(jī)客觀原因:軟件的邏輯隱蔽性、軟件的復(fù)雜性、軟件的低產(chǎn)業(yè)發(fā)展水平。
危機(jī)主管原因:漠視用戶需求、重結(jié)果輕過程、個(gè)人英雄理念。3.為什么會(huì)發(fā)生軟件危機(jī)20世紀(jì)60年代中期,軟件開784.軟件工程技術(shù)、管理與目標(biāo)
軟件工程涉及的技術(shù)問題有:
軟件過程:實(shí)現(xiàn)軟件的步驟與工程框架;
工程方法:實(shí)現(xiàn)軟件的技術(shù)性要素,如:工程規(guī)范、工程策略、技術(shù)手段等。
軟件工具:對(duì)工程方法與軟件過程的自動(dòng)化或半自動(dòng)化支持。
軟件工程涉及的管理問題有:項(xiàng)目管理、人員管理、過程管理、產(chǎn)品管理。
軟件工程還必須考慮工程目標(biāo),以體現(xiàn)其工程價(jià)值。一些主要的工程目標(biāo)是:降低成本、滿足需求、改善性能、提高質(zhì)量、及時(shí)交付。4.軟件工程技術(shù)、管理與目標(biāo)軟件工程涉及的技術(shù)問題795.主流工程方法學(xué)結(jié)構(gòu)化方法學(xué)是傳統(tǒng)的主流方法學(xué),以功能為基本元素,包括結(jié)構(gòu)化分析(SA)、結(jié)構(gòu)化設(shè)計(jì)(SD)與結(jié)構(gòu)化實(shí)現(xiàn)(SP),可對(duì)整個(gè)軟件生命周期提供方法學(xué)支持。面向?qū)ο蠓椒▽W(xué)則是目前的主流方法學(xué),包括面向?qū)ο蠓治觯∣OA)、面向?qū)ο笤O(shè)計(jì)(OOD)與面向?qū)ο髮?shí)現(xiàn)(OOA),可對(duì)整個(gè)軟件生命周期提供方法學(xué)支持。其以實(shí)體為基本元素,如:類體、對(duì)象,并可使程序系統(tǒng)基于現(xiàn)實(shí)實(shí)體構(gòu)建,更加接近現(xiàn)實(shí)環(huán)境。5.主流工程方法學(xué)結(jié)構(gòu)化方法學(xué)是傳統(tǒng)的主流方法學(xué),以功能為806.常用軟件工具
軟件工程的還需要有軟件分析設(shè)計(jì)工具的支持。一些常用的軟件分析設(shè)計(jì)工具有:MicrosoftVisio:通用圖形建模工具,可支持結(jié)構(gòu)化分析設(shè)計(jì)建模。SybasePowerDesigner:專門的數(shù)據(jù)庫建模工具。IBMRationalRose:專門的UML建模工具。6.常用軟件工具軟件工程的還需要有軟件分析設(shè)計(jì)工具的81第2章
軟件項(xiàng)目管理軟件研發(fā)團(tuán)隊(duì)軟件項(xiàng)目計(jì)劃軟件項(xiàng)目成本估算軟件項(xiàng)目風(fēng)險(xiǎn)軟件項(xiàng)目文檔、配置與質(zhì)量管理第2章軟件項(xiàng)目管理軟件研發(fā)團(tuán)隊(duì)821.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量的軟件產(chǎn)品。軟件研發(fā)機(jī)構(gòu)應(yīng)該有健康的可適應(yīng)軟件研發(fā)任務(wù)的組織機(jī)體。項(xiàng)目小組則是最小的因項(xiàng)目任務(wù)組建的研發(fā)團(tuán)隊(duì),要求小而精,成員大多限制在8人以內(nèi)。主要成員有:項(xiàng)目負(fù)責(zé)人、開發(fā)人員、資料管理員、軟件測試員。項(xiàng)目小組有多種管理機(jī)制,如:民主分權(quán)制、主程序員負(fù)責(zé)制、職業(yè)項(xiàng)目經(jīng)理負(fù)責(zé)制、層級(jí)負(fù)責(zé)制。1.軟件研發(fā)團(tuán)隊(duì)需要組建優(yōu)秀的軟件研發(fā)團(tuán)隊(duì),以生產(chǎn)出高質(zhì)量832.軟件項(xiàng)目計(jì)劃為使軟件開發(fā)各項(xiàng)工作有秩序地進(jìn)行,項(xiàng)目管理者必須事先制定項(xiàng)目開發(fā)計(jì)劃。任務(wù)分配:進(jìn)行任務(wù)分解,然后合理地、適度地給每個(gè)成員分配項(xiàng)目任務(wù)。進(jìn)度安排:對(duì)項(xiàng)目任務(wù)及其資源按時(shí)序進(jìn)行合理部署。可基于里程碑制定項(xiàng)目進(jìn)度計(jì)劃,一些關(guān)鍵性成果,如:需求規(guī)格說明書,可作為項(xiàng)目進(jìn)度里程碑標(biāo)志。有許多工具可用來幫助建立項(xiàng)目進(jìn)度計(jì)劃,如:甘特圖、任務(wù)網(wǎng)絡(luò)圖。項(xiàng)目計(jì)劃書則是項(xiàng)目計(jì)劃的具體體現(xiàn),可作為軟件開發(fā)的工作指南。2.軟件項(xiàng)目計(jì)劃為使軟件開發(fā)各項(xiàng)工作有秩序地進(jìn)行,項(xiàng)目管理843.軟件項(xiàng)目成本估算軟件項(xiàng)目有來自多方面的成本,如:工資開支、場地費(fèi)、差旅費(fèi)、設(shè)備費(fèi)、資料費(fèi)。但項(xiàng)目最主要成本是人員工資成本。軟件成本估算,主要就是是對(duì)人力成本的估算。常用的人力成本成本估算方法有:程序代碼行成本估算、軟件功能點(diǎn)成本估算、軟件過程成本估算。3.軟件項(xiàng)目成本估算軟件項(xiàng)目有來自多方面的成本,如:工資開854.軟件項(xiàng)目風(fēng)險(xiǎn)軟件開發(fā)涉及諸多不確定性,用戶需求的不確定性,技術(shù)策略的不確定性,等等。這些不確定因素的存在,使得軟件開發(fā)有了這樣那樣的風(fēng)險(xiǎn),如:計(jì)劃風(fēng)險(xiǎn)、管理風(fēng)險(xiǎn)、需求風(fēng)險(xiǎn)、技術(shù)風(fēng)險(xiǎn)、人員風(fēng)險(xiǎn)、產(chǎn)品風(fēng)險(xiǎn)、用戶風(fēng)險(xiǎn)、商業(yè)風(fēng)險(xiǎn),等等。值得注意的是,風(fēng)險(xiǎn)所影響的是項(xiàng)目的未來結(jié)果,我們只能判斷其今后的發(fā)生概率,而并不能夠百分之百地確定其影響。因此,需要對(duì)風(fēng)險(xiǎn)實(shí)施有效的管理,以降低風(fēng)險(xiǎn)事件的發(fā)生概率。風(fēng)險(xiǎn)管理主要任務(wù)有:風(fēng)險(xiǎn)識(shí)別:調(diào)查是識(shí)別項(xiàng)目風(fēng)險(xiǎn)的有效途徑??梢砸罁?jù)風(fēng)險(xiǎn)類別進(jìn)行風(fēng)險(xiǎn)調(diào)查,以對(duì)項(xiàng)目風(fēng)險(xiǎn)有較全面的把握。風(fēng)險(xiǎn)評(píng)估:風(fēng)險(xiǎn)有多大的發(fā)生概率?風(fēng)險(xiǎn)有多大的影響力?風(fēng)險(xiǎn)防范:可以從風(fēng)險(xiǎn)規(guī)避、風(fēng)險(xiǎn)監(jiān)控與風(fēng)險(xiǎn)應(yīng)急這三個(gè)方面進(jìn)行風(fēng)險(xiǎn)防范。4.軟件項(xiàng)目風(fēng)險(xiǎn)軟件開發(fā)涉及諸多不確定性,用戶需求的不確定86第3章
軟件工程過程模式軟件生命周期瀑布模式、原型進(jìn)化模式增量模式、螺旋模式迭代模式、組件復(fù)用模式第3章軟件工程過程模式軟件生命周期871.軟件生命周期軟件生存周期是軟件由提出到開發(fā)到投入應(yīng)用的全過程,基于開發(fā)者立場一般劃分為三個(gè)生命段:定義期、開發(fā)期、運(yùn)行維護(hù)期,每個(gè)生命段又包含若干個(gè)階段任務(wù)。1.軟件生命周期軟件生存周期是軟件由提出到開發(fā)到投入應(yīng)用的882.瀑布模式瀑布模式是最傳統(tǒng)的過程模式,“瀑布”形象表達(dá)了其自頂向下、逐級(jí)細(xì)化的過程特征。瀑布模式的特點(diǎn)是:(1)線性化過程;(2)里程碑管理;(3)階段評(píng)審;(4)文檔驅(qū)動(dòng)。對(duì)于需求明確的軟件項(xiàng)目,瀑布模式有較好的適應(yīng)性。然而,如果需求不明確或需求易變更,則瀑布模式就顯現(xiàn)出了不適應(yīng)性。2.瀑布模式瀑布模式是最傳統(tǒng)的過程模式,“瀑布”形象表達(dá)了893.原型進(jìn)化模式原型進(jìn)化模式的開發(fā)流程是:開發(fā)者先建立原型系統(tǒng)供用戶評(píng)價(jià)或使用,然后根據(jù)用戶的意見反饋,對(duì)原型系統(tǒng)不斷修正,由此使它逐步接近并最終達(dá)到目標(biāo)系統(tǒng)的要求。原型進(jìn)化模式可較好適應(yīng)用戶的需求變更,但卻因缺乏里程碑管理機(jī)制,而不能很好支持大型項(xiàng)目。3.原型進(jìn)化模式原型進(jìn)化模式的開發(fā)流程是:開發(fā)者先建立原型904.增量模式增量模式是瀑布模式與原型進(jìn)化模式優(yōu)點(diǎn)的結(jié)合,其將系統(tǒng)分解為多個(gè)增量構(gòu)件,然后以增量構(gòu)件為原型部件,逐步創(chuàng)建、集成與完善。增量模式在整體上具有瀑布模式的里程碑特點(diǎn),可適應(yīng)大型項(xiàng)目。但系統(tǒng)的局部構(gòu)建上,則體現(xiàn)為基于增量構(gòu)件的原型進(jìn)化,可適應(yīng)用戶的需求變更。4.增量模式增量模式是瀑布模式與原型進(jìn)化模式優(yōu)點(diǎn)的結(jié)合,其915.螺旋模式螺旋模式是一種可較好規(guī)避開發(fā)風(fēng)險(xiǎn)的過程模式。螺旋模式的特點(diǎn)是項(xiàng)目基于任務(wù)域螺旋式遞進(jìn),每一個(gè)任務(wù)域都需要進(jìn)行風(fēng)險(xiǎn)評(píng)估,并需要根據(jù)評(píng)估結(jié)論制定有效的風(fēng)險(xiǎn)規(guī)避措施。5.螺旋模式螺旋模式是一種可較好規(guī)避開發(fā)風(fēng)險(xiǎn)的過程模式。螺926.迭代模式迭代模式是軟件的分析、設(shè)計(jì)與實(shí)現(xiàn)可交替反復(fù)進(jìn)行的過程模式。迭代模式有對(duì)面向?qū)ο蠓椒ǜ玫倪^程支持,可使面向?qū)ο蠓椒ǐ@得更有成效的工程應(yīng)用。6.迭代模式迭代模式是軟件的分析、設(shè)計(jì)與實(shí)現(xiàn)可交替反復(fù)進(jìn)行93第4章
軟件分析計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)軟件系統(tǒng)前期分析項(xiàng)目可行性分析軟件需求分析軟件需求驗(yàn)證第4章軟件分析計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)941.計(jì)算機(jī)體系結(jié)構(gòu)幾種典型的計(jì)算機(jī)體系結(jié)構(gòu):
中央主機(jī)結(jié)構(gòu):主機(jī)集中了全部智能,并依靠終端接口與外部設(shè)備連接??蛻魴C(jī)/服務(wù)器結(jié)構(gòu):智能分布于服務(wù)器與客戶機(jī),并依靠網(wǎng)絡(luò)連接成系統(tǒng)。其中,服務(wù)器處于核心位置,提供被動(dòng)核心服務(wù);客戶機(jī)處于邊緣位置,可主動(dòng)訪問服務(wù)器,尋求服務(wù)支持。瀏覽器/服務(wù)器結(jié)構(gòu):一種更適合互聯(lián)網(wǎng)遠(yuǎn)程交互的基于Web應(yīng)用的特殊的客戶機(jī)/服務(wù)器結(jié)構(gòu)。1.計(jì)算機(jī)體系結(jié)構(gòu)幾種典型的計(jì)算機(jī)體系結(jié)構(gòu):952.軟件系統(tǒng)前期分析可從以下方面進(jìn)行軟件高層分析:軟件系統(tǒng)的業(yè)務(wù)領(lǐng)域、業(yè)務(wù)邊界與業(yè)務(wù)流程。軟件系統(tǒng)對(duì)硬件設(shè)施、網(wǎng)絡(luò)環(huán)境、數(shù)據(jù)環(huán)境的依賴。軟件系統(tǒng)的安全層級(jí)、措施與防范機(jī)制。軟件系統(tǒng)與其它相關(guān)系統(tǒng)之間的協(xié)作關(guān)系。軟件系統(tǒng)與用戶組織及其工作任務(wù)的協(xié)調(diào)性與適應(yīng)性。2.軟件系統(tǒng)前期分析可從以下方面進(jìn)行軟件高層分析:963.項(xiàng)目可行性分析
以少量的時(shí)間及人力成本,對(duì)項(xiàng)目是否可著手實(shí)施作出有依據(jù)的判斷,以避免因項(xiàng)目實(shí)施條件不具備而造成的大量的人力、物力與時(shí)間的浪費(fèi)??蓮募夹g(shù)、經(jīng)濟(jì)、應(yīng)用等幾個(gè)方面進(jìn)行可行性分析,分析結(jié)論則需要撰寫成可行性分析報(bào)告,并提交有關(guān)部門確認(rèn)。3.項(xiàng)目可行性分析以少量的時(shí)間及人力成本,對(duì)項(xiàng)目是975.軟件文檔管理軟件文檔是工程模式軟件開發(fā)的成果體現(xiàn)。然而,軟件文檔要能產(chǎn)生很好的工程效應(yīng),則還必須要有管理規(guī)范的支持。開發(fā)時(shí)必須建立的技術(shù)資料、管理資料為正式文檔,通常需要專門歸檔。而根據(jù)需要隨時(shí)創(chuàng)建的并且無須歸檔的模型或工作表格則為非正式文檔。按照文檔使用范圍,則又可分為:技術(shù)文檔、管理文檔與用戶文檔。5.軟件文檔管理軟件文檔是工程模式軟件開發(fā)的成果體現(xiàn)。然而986.軟件配置管理所謂軟件配置,也就是基于軟件生產(chǎn)軌跡進(jìn)行過程控制與產(chǎn)品追蹤。其貫穿于整個(gè)軟件生命周期,因此可使軟件開發(fā)中產(chǎn)生的各種成果具有一致性。軟件配置的主要任務(wù)有:軟件配置規(guī)劃、軟件變更控制、軟件版本控制。6.軟件配置管理所謂軟件配置,也就是基于軟件生產(chǎn)軌跡進(jìn)行過997.軟件質(zhì)量管理所謂軟件質(zhì)量,也就是對(duì)軟件品質(zhì)的優(yōu)劣評(píng)價(jià)。軟件開發(fā)者應(yīng)該開發(fā)出高質(zhì)量的軟件產(chǎn)品,以更好地滿足用戶應(yīng)用。來自經(jīng)驗(yàn)的結(jié)論是:嚴(yán)格有效的軟件質(zhì)量管理,可帶來高質(zhì)量的軟件產(chǎn)品。軟件質(zhì)量管理涉及問題有:質(zhì)量標(biāo)準(zhǔn)、質(zhì)量計(jì)劃與質(zhì)量控制。7.軟件質(zhì)量管理所謂軟件質(zhì)量,也就是對(duì)軟件品質(zhì)的優(yōu)劣評(píng)價(jià)。1007.組件復(fù)用模式組件復(fù)用模式是對(duì)基于組件的系統(tǒng)集成的過程支持。組件復(fù)用可帶來了流水線軟件裝配,系統(tǒng)所需組件大多無須專門開發(fā),而可通過專業(yè)制作機(jī)構(gòu)提供,由此可提高軟件開發(fā)效率,并可提高軟件產(chǎn)品質(zhì)量。7.組件復(fù)用模式組件復(fù)用模式是對(duì)基于組件的系統(tǒng)集成的過程支1018.分析任務(wù)與過程需求分析是為有效解決用戶需求問題而需要進(jìn)行的一項(xiàng)工程活動(dòng),所需考慮的需求問題有:功能需求、數(shù)據(jù)需求、性能需求、接口需求。開發(fā)者與用戶都將參與需求分析活動(dòng)。開發(fā)者承擔(dān)分析任務(wù),但活動(dòng)核心則是用戶。需求分析任務(wù)需要由熟悉用戶業(yè)務(wù)的系統(tǒng)分析師承擔(dān)。需求分析步驟是:獲取用戶需求、創(chuàng)建需求模型、確定軟件規(guī)格、進(jìn)行需求驗(yàn)證。8.分析任務(wù)與過程需求分析是為有效解決用戶需求問題而需要進(jìn)1029.獲取用戶需求用戶泛指一切可從軟件獲得服務(wù)的對(duì)象。可以是某個(gè)人,但也可以是人以外的機(jī)構(gòu)、部門、其他系統(tǒng)或設(shè)備??赏ㄟ^調(diào)查而獲取用戶需求。然而,有效的需求收集則依賴于有效的調(diào)查提問,并依賴于合適的調(diào)查方法。一些常用調(diào)查方法是:訪談、座談、問卷、跟班、收集資料。來自用戶的需求將體現(xiàn)為需求規(guī)約,其可表達(dá)用戶的軟件價(jià)值。9.獲取用戶需求用戶泛指一切可從軟件獲得服務(wù)的對(duì)象??梢允?0310.建立需求模型
需求建模是用戶需求問題圖解,一些常用模型有:業(yè)務(wù)樹圖、用例圖、活動(dòng)圖。其中,業(yè)務(wù)樹是結(jié)構(gòu)化需求建模,用例圖是系統(tǒng)業(yè)務(wù)舉例,活動(dòng)圖則反映系統(tǒng)工作流程。10.建立需求模型需求建模是用戶需求問題圖解,一些10411.進(jìn)行需求驗(yàn)證需求驗(yàn)證是指對(duì)需求分析成果的檢查與確認(rèn)。主要的需求驗(yàn)證內(nèi)容有:有效性驗(yàn)證、一致性驗(yàn)證、完整性驗(yàn)證、現(xiàn)實(shí)性驗(yàn)證、可檢驗(yàn)性驗(yàn)證??赏ㄟ^需求原型確認(rèn)或需求評(píng)審,而實(shí)現(xiàn)需求驗(yàn)證。11.進(jìn)行需求驗(yàn)證需求驗(yàn)證是指對(duì)需求分析成果的檢查與確認(rèn)。105第5章
軟件設(shè)計(jì)本章要點(diǎn):概要設(shè)計(jì)任務(wù)系統(tǒng)構(gòu)架設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)程序結(jié)構(gòu)設(shè)計(jì)軟件算法設(shè)計(jì)程序編碼第5章軟件設(shè)計(jì)本章要點(diǎn):1061.設(shè)計(jì)任務(wù)與過程概要設(shè)計(jì)也叫總體設(shè)計(jì),需要確定軟件系統(tǒng)總體構(gòu)造,涉及系統(tǒng)構(gòu)架、程序結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、安全防范、故障處理等諸多方面的設(shè)計(jì),以對(duì)軟件系統(tǒng)做出總的設(shè)計(jì)規(guī)劃。概要設(shè)計(jì)以需求規(guī)格定義為依據(jù),首先要確定的是系統(tǒng)構(gòu)架,然后以系統(tǒng)構(gòu)架為基礎(chǔ),確定系統(tǒng)全局?jǐn)?shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu),考慮系統(tǒng)安全防范、故障處理措施。1.設(shè)計(jì)任務(wù)與過程概要設(shè)計(jì)也叫總體設(shè)計(jì),需要確定軟件系統(tǒng)總1072.系統(tǒng)構(gòu)架系統(tǒng)構(gòu)架是軟件系統(tǒng)的基礎(chǔ)框架,需要考慮問題有:系統(tǒng)支持環(huán)境、系統(tǒng)體系結(jié)構(gòu)。系統(tǒng)支持環(huán)境是構(gòu)建軟件大廈的地基,涉及硬件環(huán)境、軟件環(huán)境、網(wǎng)絡(luò)環(huán)境。系統(tǒng)體系結(jié)構(gòu)則為軟件系統(tǒng)總體結(jié)構(gòu)。分層體系是具代表性的軟件體系結(jié)構(gòu)。2.系統(tǒng)構(gòu)架系統(tǒng)構(gòu)架是軟件系統(tǒng)的基礎(chǔ)框架,需要考慮問題有:1083.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系。程序設(shè)計(jì)中的數(shù)據(jù)結(jié)構(gòu),一般是動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),以服務(wù)功能為設(shè)計(jì)目標(biāo)。概要設(shè)計(jì)中,需要考慮的是影響諸多功能、跨越多個(gè)模塊的全局性程序數(shù)據(jù)。數(shù)據(jù)庫設(shè)計(jì)中的數(shù)據(jù)結(jié)構(gòu)則一般是靜態(tài)結(jié)構(gòu),以建立合理存儲(chǔ)為設(shè)計(jì)目標(biāo),所涉及元素有:數(shù)據(jù)表、數(shù)據(jù)視圖、數(shù)據(jù)索引。3.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系。1094.程序結(jié)構(gòu)概要設(shè)計(jì)需要抽象模塊,并從功能、數(shù)據(jù)、接口等諸多方面定義模塊。結(jié)構(gòu)化程序中的模塊是程序函數(shù)。面向?qū)ο蟪绦蛑械哪K是類體。在基于組件的系統(tǒng)集成中,組件則被看做是模塊。高質(zhì)量程序模塊應(yīng)該有很好的獨(dú)立性,這樣的模塊通常更加安全、穩(wěn)定、可靠,也更加便于維護(hù)改造。內(nèi)聚度與耦合度這兩個(gè)技術(shù)指標(biāo)可用于判斷模塊是否有較好的獨(dú)立性。概要設(shè)計(jì)還需要確定模塊之間的任務(wù)協(xié)作與控制,并設(shè)計(jì)一個(gè)合理的可控制的可擴(kuò)充的程序結(jié)構(gòu),以使諸多模塊能夠集成為一個(gè)整體。結(jié)構(gòu)化程序的控制是自頂向下的。總控模塊對(duì)程序進(jìn)行頂層整體控制,下級(jí)模塊則實(shí)現(xiàn)對(duì)具體任務(wù)的控制與操作。面向?qū)ο蟪绦騽t由類圖、構(gòu)件圖說明結(jié)構(gòu)。類圖用于描述面向?qū)ο蟪绦蜻壿嫿Y(jié)構(gòu),構(gòu)件圖用于描述面向?qū)ο蟪绦蛭锢斫Y(jié)構(gòu)。4.程序結(jié)構(gòu)概要設(shè)計(jì)需要抽象模塊,并從功能、數(shù)據(jù)、接口等諸1105.程序結(jié)構(gòu)化流程控制程序結(jié)構(gòu)化流程控制是高清晰度的控制。程序如果能滿足單人口、單出口的要求,則程序是結(jié)構(gòu)化控制。順序、選擇、循環(huán)等控制結(jié)構(gòu)是結(jié)構(gòu)化控制。GOTO語句則是非結(jié)構(gòu)化控制的代表。可使一個(gè)程序塊有多個(gè)出入口,可降低程序的穩(wěn)定性、可靠性與可維護(hù)性。5.程序結(jié)構(gòu)化流程控制程序結(jié)構(gòu)化流程控制是高清晰度的控制。1116.程序算法設(shè)計(jì)工具
程序流程圖、NS圖、PAD圖、PDL語言,是與結(jié)構(gòu)化控制相適應(yīng)的算法設(shè)計(jì)工具。6.程序算法設(shè)計(jì)工具程序流程圖、NS圖、PAD圖、112程序流程圖程序流程圖113NS圖NS圖114PAD圖PAD圖1157.算法復(fù)雜度評(píng)估算法復(fù)雜度是對(duì)程序算法是否復(fù)雜的量化說明。通常,可以從時(shí)間和空間兩個(gè)方面,對(duì)程序算法進(jìn)行復(fù)雜度評(píng)價(jià)。時(shí)間復(fù)雜度:由算法執(zhí)行所耗費(fèi)時(shí)間決定。通常,算法中語句的執(zhí)行次數(shù)越多,其花費(fèi)時(shí)間就越多,則時(shí)間復(fù)雜度就越高??臻g復(fù)雜度:由算法所需存儲(chǔ)空間決定。通常,程序中定義的數(shù)據(jù)元素越少,采用的數(shù)據(jù)類型越簡單,則空間復(fù)雜度就越低。7.算法復(fù)雜度評(píng)估算法復(fù)雜度是對(duì)程序算法是否復(fù)雜的量化說明116McCabe方法這是一種基于控制流的廣泛應(yīng)用的程序算法復(fù)雜度評(píng)估方法。其定義程序算法復(fù)雜度為強(qiáng)連通程序圖中線性無關(guān)的有向環(huán)的個(gè)數(shù)。計(jì)算公式是:V(G)=m–n+1,其中,V是強(qiáng)連通程序圖中的環(huán)數(shù),m是弧數(shù),n是節(jié)點(diǎn)數(shù)。McCabe方法這是一種基于控制流的廣泛應(yīng)用的程序算法復(fù)雜度1178.程序編碼編程語言可分為機(jī)器語言、匯編語言、傳統(tǒng)高級(jí)語言、結(jié)構(gòu)化語言、面向?qū)ο笳Z言、第四代程序語言。有必要根據(jù)問題性質(zhì)選擇合適的程序語言,以提高編程質(zhì)量。編程規(guī)范即是為提高程序可讀性、可理解性而需要遵守的約定。一些常用的編碼規(guī)范有:程序注釋、標(biāo)識(shí)符命名、程序編排格式。程序算法設(shè)計(jì)還必須考慮程序的運(yùn)行效率,其由程序的算法復(fù)雜度、程序中數(shù)據(jù)的類型、程序編譯的優(yōu)化程度等諸多因素決定。8.程序編碼編程語言可分為機(jī)器語言、匯編語言、傳統(tǒng)高級(jí)語言118第6章
軟件測試本章要點(diǎn):測試方法與過程測試用例面向?qū)ο鬁y試程序調(diào)試測試工具第6章軟件測試本章要點(diǎn):1191.測試目的、計(jì)劃與方法軟件測試之根本目的在于發(fā)現(xiàn)軟件錯(cuò)誤。軟件測試需要事先制定計(jì)劃,如:測試時(shí)間、測試任務(wù)、測試目標(biāo)、責(zé)任人等,即需要通過測試計(jì)劃提前確定下來。有黑盒測試與白盒測試兩種基本測試方法。黑盒測試以概要設(shè)計(jì)中的模塊定義為測試內(nèi)容,主要用于系統(tǒng)確認(rèn)測試、系統(tǒng)集成測試。白盒測試則以詳細(xì)設(shè)計(jì)中的程序算法說明為測試內(nèi)容,主要用于程序單元測試。1.測試目的、計(jì)劃與方法軟件測試之根本目的在于發(fā)現(xiàn)軟件錯(cuò)誤1202.測試任務(wù)軟件測試任務(wù)有:單元測試、集成測試、確認(rèn)測試。單元測試是以基本單元模塊為測試對(duì)象。一般以白盒測試為主,以黑盒測試為輔。主要測試內(nèi)容有:模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、執(zhí)行路徑、出錯(cuò)處理、條件邊界等。諸多單元模塊可按照設(shè)計(jì)好的體系結(jié)構(gòu)進(jìn)行裝配,在此過程中需要集成測試,以發(fā)現(xiàn)模塊之間是否有連接錯(cuò)誤。系統(tǒng)有非漸增集成與漸增集成測試兩種集成策略。非漸增集成是一次性把所有模塊組合在一起。漸增集成測試則是每個(gè)單元模塊逐個(gè)地集成到系統(tǒng)中去。在系統(tǒng)完成集成之后,接著需要進(jìn)行確認(rèn)測試,以確認(rèn)用戶需求是否得以實(shí)現(xiàn)。測試內(nèi)容有:軟件有效性驗(yàn)證、軟件配置復(fù)查。測試方法有:Alpha測試、Beta測試。2.測試任務(wù)軟件測試任務(wù)有:單元測試、集成測試、確認(rèn)測試。1213.測試用例
設(shè)計(jì)測試用例,就是為測試準(zhǔn)備測試數(shù)據(jù)。白盒測試用例為邏輯覆蓋,主要有:語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋和路徑覆蓋等幾種覆蓋形式。黑盒測試用例則有等價(jià)類劃分、邊界值分析、錯(cuò)誤推測等幾種設(shè)計(jì)方法。3.測試用例設(shè)計(jì)測試用例,就是為測試準(zhǔn)備測試數(shù)據(jù)。1224.面向?qū)ο蟪绦驕y試
面向?qū)ο蟪绦蛏婕皢卧獪y試、集成測試、確認(rèn)測試,但測試內(nèi)容不同。在進(jìn)行面向?qū)ο蟪绦騿卧獪y試時(shí),已經(jīng)不能孤立地測試單個(gè)操作,而應(yīng)該把操作作為類的一部分來測試。集成測試則反映為基于線程的測試或基于使用的測試。確認(rèn)測試則體現(xiàn)為用例驅(qū)動(dòng)。4.面向?qū)ο蟪绦驕y試面向?qū)ο蟪绦蛏婕皢卧獪y試、集成1235.程序調(diào)試診斷發(fā)現(xiàn)錯(cuò)誤并修正排除錯(cuò)誤,這即是程序調(diào)試。其中,診斷是關(guān)鍵。如果錯(cuò)誤的性質(zhì)與位置被診斷出來,則改錯(cuò)只是一件相對(duì)簡單的工作。主要診斷方法有:①在程序中插入輸出語句;②使用自動(dòng)調(diào)式工具。程序調(diào)試策略有:試探法、回溯法、對(duì)分查找法、歸納法、演繹法。5.程序調(diào)試診斷發(fā)現(xiàn)錯(cuò)誤并修正排除錯(cuò)誤,這即是程序調(diào)試。其1246.測試工具測試數(shù)據(jù)生成程序:用于自動(dòng)生成測試用例。動(dòng)態(tài)分析程序:用于分析被測程序中某語句的動(dòng)態(tài)執(zhí)行情況,如:執(zhí)行次數(shù)、執(zhí)行頻率。靜態(tài)分析程序:用于掃描被測試程序正文,并從中發(fā)現(xiàn)程序錯(cuò)誤。6.測試工具測試數(shù)據(jù)生成程序:用于自動(dòng)生成測試用例。125第7章
軟件維護(hù)與再工程軟件維護(hù)分類軟件可維護(hù)性軟件維護(hù)實(shí)施軟件再工程第7章軟件維護(hù)與再工程軟件維護(hù)分類1261.軟件維護(hù)分類改正性維護(hù)完善性維護(hù)適應(yīng)性維護(hù)預(yù)防性維護(hù)1.軟件維護(hù)分類改正性維護(hù)1272.軟件可維護(hù)性軟件可維護(hù)性是指維護(hù)人員對(duì)軟件系統(tǒng)進(jìn)行修正、改進(jìn)的難易。影響軟件可維護(hù)性的因素有:系統(tǒng)大小、系統(tǒng)文檔、系統(tǒng)年齡??赏ㄟ^軟件的易理解性、可靠性、易修改性、易移植性的評(píng)價(jià),而對(duì)軟件系統(tǒng)進(jìn)行可維護(hù)性綜合評(píng)估。2.軟件可維護(hù)性軟件可維護(hù)性是指維護(hù)人員對(duì)軟件系統(tǒng)進(jìn)行修正1283.軟件維護(hù)實(shí)施開發(fā)組可承擔(dān)軟件初期維護(hù),但當(dāng)軟件轉(zhuǎn)入正常使用以后,其維護(hù)工作則一般由專門的維護(hù)機(jī)構(gòu)承擔(dān)。軟件維護(hù)機(jī)構(gòu)人員組成有:維護(hù)負(fù)責(zé)人、系統(tǒng)監(jiān)督員、配置管理員、維護(hù)工程師。其中,維護(hù)負(fù)責(zé)人全權(quán)負(fù)責(zé)維護(hù)任務(wù),包括技術(shù)與管理兩個(gè)方面的工作。維護(hù)將由申請(qǐng)報(bào)告啟動(dòng),其一般由軟件用戶提出。維護(hù)機(jī)構(gòu)則對(duì)維護(hù)申請(qǐng)進(jìn)行評(píng)審。維護(hù)活動(dòng)需要記錄存檔,需要進(jìn)行評(píng)價(jià)。3.軟件維護(hù)實(shí)施開發(fā)組可承擔(dān)軟件初期維護(hù),但當(dāng)軟件轉(zhuǎn)入正常1294.軟件再工程軟件再工程是指對(duì)已存在軟件系統(tǒng)的重構(gòu)與擴(kuò)充。再工程主要用于一些老系統(tǒng)改造,所涉及活動(dòng)有:逆向工程、重構(gòu)工程、正向工程。4.軟件再工程軟件再工程是指對(duì)已存在軟件系統(tǒng)的重構(gòu)與擴(kuò)充。130第8章
結(jié)構(gòu)化工程方法分析建模特點(diǎn)數(shù)據(jù)、功能與行為建模數(shù)據(jù)、功能與行為定義結(jié)構(gòu)化設(shè)計(jì)建?;跀?shù)據(jù)流的結(jié)構(gòu)映射程序結(jié)構(gòu)優(yōu)化第8章結(jié)構(gòu)化工程方法分析建模特點(diǎn)1311.功能建模功能建模是對(duì)系統(tǒng)數(shù)據(jù)加工的圖解。數(shù)據(jù)流圖是最常用的結(jié)構(gòu)化功能建模工具,涉及數(shù)據(jù)接口、數(shù)據(jù)處理、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)等圖形元素,用于描述系統(tǒng)數(shù)據(jù)加工細(xì)節(jié)。數(shù)據(jù)流可以逐層細(xì)化,由此可逐步深入地解剖數(shù)據(jù)處理過程。數(shù)據(jù)流細(xì)化一般自頂層業(yè)務(wù)環(huán)境開始,然后到1層、2層,由此而逐步深入到系統(tǒng)內(nèi)部獲取功能細(xì)節(jié)。前期分析中的業(yè)務(wù)樹可用于支持?jǐn)?shù)據(jù)流功能細(xì)化,以方便對(duì)功能的逐層解剖。1.功能建模功能建模是對(duì)系統(tǒng)數(shù)據(jù)加工的圖解。數(shù)據(jù)流圖是最常1322.行為建模行為模型用于說明軟件系統(tǒng)與環(huán)境的交互。狀態(tài)轉(zhuǎn)換圖是最常用的軟件行為建模工具,涉及狀態(tài)、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60245-6:1994/AMD2:2003 FR-D Amendment 2 - Rubber insulated cables - Rated voltages up to and including 450/750 V - Part 6: Arc welding electrode cables
- 【正版授權(quán)】 ISO/IEC GUIDE 50:2014 FR Safety aspects - Guidelines for child safety in standards and other specifications
- 電商平臺(tái)運(yùn)營與管理知識(shí)點(diǎn)梳理
- 分析數(shù)字化轉(zhuǎn)型對(duì)IT行業(yè)的未來影響
- 美食探店評(píng)價(jià)參考表
- 學(xué)習(xí)進(jìn)步的心得體會(huì)讀后感7篇
- 藝術(shù)新課標(biāo)音樂考試試題及答案
- 醫(yī)院理論考試試題及答案
- 六一入場活動(dòng)方案
- 六一古風(fēng)活動(dòng)方案
- 2025年四川省成都市中考語文真題(解析版)
- 2025年黑龍江、吉林、遼寧、內(nèi)蒙古高考物理真題(解析版)
- 民航招飛初選試題及答案
- 2025年電子商務(wù)法律法規(guī)考試試題及答案
- 國開2025年《資源與運(yùn)營管理》形考任務(wù)1-4答案
- 2025年安全生產(chǎn)考試題庫(危險(xiǎn)化學(xué)品安全)危險(xiǎn)化學(xué)品安全操作規(guī)范應(yīng)用試題
- T/CIQA 74-2024人工智能(AI)鑒定通用規(guī)范
- 學(xué)習(xí)解讀《水利水電建設(shè)工程驗(yàn)收規(guī)程》SLT223-2025課件
- 餐飲服務(wù)員培訓(xùn)全流程解析
- 《成人高血壓合并2型糖尿病和血脂異?;鶎臃乐沃袊鴮<夜沧R(shí)(2024年版)》解讀
- 《小學(xué)交通安全教育》課件
評(píng)論
0/150
提交評(píng)論