




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
軟件工程與項目案例教程1經(jīng)歷華南理工大學(xué),博士,計算機控制曾任職以下公司:中國民航信息廣州公司(香港上市)技術(shù)總監(jiān)廣州金鵬集團(電子百強)項目總監(jiān)廣東金宇恒(佛山最大軟企)技術(shù)總監(jiān)曾獲國家創(chuàng)新基金、廣州科學(xué)技術(shù)獎中聯(lián)通炫鈴廣東/湖南/廣西項目負(fù)責(zé)人(用戶800萬)長期移動、民航、政府、互聯(lián)網(wǎng)行業(yè)軟件研發(fā)2項目一軟件工程概述任務(wù)1軟件工程
任務(wù)2軟件生命周期與軟件開發(fā)模型
任務(wù)3建模工具
3最富哲理的軟件工程4UML是“三人幫”“搗”出來的5迭代開發(fā)過程這樣流轉(zhuǎn)6軟件工程水平是這樣提高的7敏捷開發(fā)過程-Scrum8任務(wù)1軟件工程軟件的定義及其特點軟件危機軟件工程概念9軟件的定義及其特點軟件的定義軟件是計算機系統(tǒng)中與硬件相互依存的部分,它是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。軟件的定義及其特點
軟件=程序+數(shù)據(jù)+文檔程序:按事先設(shè)計的功能和性能需求執(zhí)行的指令序列數(shù)據(jù):是程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)文檔:與程序開發(fā)、維護和使用有關(guān)的圖文材料10軟件的定義及其特點軟件的定義及其特點軟件的特點(1)抽象性;(2)無明顯的制造過程;(3)無磨損、老化的問題
(4)對硬件系統(tǒng)的依懶性;(5)復(fù)雜性;(6)成本昂貴;(7)社會性;11軟件危機TacomaNarrows大橋的崩潰12軟件危機
軟件危機
在軟件開發(fā)和維護過程中所遇到的一系列嚴(yán)重問題
軟件危機的表現(xiàn)對軟件開發(fā)成本和進度的估算很不準(zhǔn)確用戶很不滿意質(zhì)量很不可靠沒有適當(dāng)?shù)奈臋n軟件成本比重上升供不應(yīng)求:軟件開發(fā)生產(chǎn)率跟不上計算機應(yīng)用迅速深入的趨勢
軟件危機
13軟件危機軟件危機
原因客觀:軟件本身特點邏輯部件規(guī)模龐大主觀:不正確的開發(fā)方法忽視需求分析錯誤認(rèn)為:軟件開發(fā)=程序編寫輕視軟件維護14軟件危機軟件危機
產(chǎn)生的原因(軟件開發(fā)人員的錯誤觀點):“有一個對目標(biāo)的概括描述就足以著手編寫程序了,許多細(xì)節(jié)可以在以后再補充”“所謂軟件開發(fā)就是編寫程序并設(shè)法使它運行”“用戶對軟件的要求不斷變化,然而軟件是柔軟而靈活的,可以輕易地改動”“軟件投入生產(chǎn)性運行以后需要的維護工作并不多,而且維護是一件很容易做的簡單工作”15軟件危機的解決軟件危機
解決途徑組織管理工程項目管理方法技術(shù)措施軟件開發(fā)技術(shù)與方法軟件工具軟件工程管理軟件管理學(xué)軟件經(jīng)濟學(xué)軟件度量學(xué)軟件工程學(xué)指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科工程管理+開發(fā)技術(shù)軟件開發(fā)技術(shù)軟件開發(fā)方法學(xué)軟件工具軟件工程環(huán)境16軟件工程概念軟件工程的概念
應(yīng)用計算機科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,以工程化的原則和方法來解決軟件問題,指導(dǎo)計算機軟件開發(fā)和維護的一門工程學(xué)科。
軟件工程的原則軟件工程概念
17任務(wù)2軟件生命周期
與軟件開發(fā)模型軟件生命周期軟件開發(fā)模型18軟件生命周期
軟件定義階段
軟件開發(fā)階段
軟件的使用和維護階段
退役Page19軟件生命周期19
瀑布模型軟件開發(fā)模型軟件開發(fā)模型
問題定義可行性研究需求分析概要設(shè)計詳細(xì)設(shè)計軟件實現(xiàn)軟件測試運行維護計劃時期開發(fā)時期運行維護時期強調(diào)階段的劃分及其順序性、各階段工作及其文檔的完備性,是一種嚴(yán)格線性的、按階段順序的、逐步細(xì)化的開發(fā)模式。20軟件開發(fā)模型
演化模型
螺旋模型
噴泉模型
21
兩種典型的建模工具:1.IBMRationalRose
2.MicrosoftOfficeVisio任務(wù)3建模工具22
IBMRationalRosePage23IBMRationalRose23Visio是一個圖表繪制程序,可以幫助用戶描述復(fù)雜設(shè)想以及系統(tǒng)的業(yè)務(wù)和技術(shù)圖表。使用Visio創(chuàng)建圖表可以使信息形象化,能夠以更為直觀有效的方式進行信息交流,這是單純的文字和數(shù)字無法比擬的。Page24
MicrosoftOfficeVisioMicrosoftOfficeVisio
24軟件工程課程設(shè)計考核方式:課程設(shè)計(附設(shè)計說明文檔,正文字?jǐn)?shù)不少于1000字)(60%)+平時作業(yè)及實驗(30%)+平時表現(xiàn)(10%),按優(yōu)秀、良好、中、及格、不及格五級評定成績通過演示及講述,講解課程設(shè)計的整體情況,針對其設(shè)計提出一些技術(shù)及細(xì)節(jié)問題確認(rèn)是否真正理解課程設(shè)計中的要點、是否掌握了進行系統(tǒng)設(shè)計的知識和能力、是否本人完成。如通發(fā)現(xiàn)沒有真正設(shè)計或者不清楚技術(shù)細(xì)節(jié),則課程設(shè)計不及格。答辯部分:40分(沒有課程設(shè)計說明文檔不予參加答辯)設(shè)計部分:60分選題:創(chuàng)新性,實用性,界面美觀友好(15分)難度:設(shè)計包含的難度(15分)設(shè)計的完整性(30分)25迭代和增量開發(fā)方式26迭代過程的優(yōu)勢復(fù)雜系統(tǒng)-分解->多個簡單系統(tǒng)提高軟件項目可控性降低軟件開發(fā)風(fēng)險有效地應(yīng)對需求變更在迭代過程中,功能的不確定性逐漸減小,我們對功能的描述越來越明確。27何時使用迭代開發(fā)?只對希望成功的項目使用2019年2月4日,馬克·扎克伯格在大學(xué)的宿舍里鼓搗了一個約會網(wǎng)站28項目二統(tǒng)一建模語言UML任務(wù)1UML概述
任務(wù)2UML靜態(tài)建模
任務(wù)3UML動態(tài)建模29任務(wù)1UML概述UML的概念UML的發(fā)展UML的主要內(nèi)容30UML與OO(面向?qū)ο螅㎡OUMLOOAOODDP…………
……
……
……UML是OO重要工具31UML的概念UML的概念UMLUnifiedModelingLanguage統(tǒng)一建模語言統(tǒng)一建模語言是一種通用的可視化建模語言,用于對軟件系統(tǒng)的制品進行規(guī)范化、可視化處理,然后構(gòu)造它們并建立它們的文檔。UML的概念32UML的發(fā)展過程GradyBooch,JamesRumbaugh和IvarJacobson33圖與語言誰一級棒?這把刀,也不知道有多長、多寬、多重、由什么材質(zhì)鑄成,由誰鑄造?很普通,很平常,也許在我們手中!但,只要是他拿著,握著,這把刀就有了生命,有了氣息,追魂的刀,亦是救命的刀,就看他是如何賦予它使命的!該用圖用圖該代碼用代碼34UML的優(yōu)勢過去數(shù)十種面向?qū)ο蟮慕UZ言各自為戰(zhàn),而UML可以消除一些潛在差異,一統(tǒng)江湖通過統(tǒng)一語義和符號表示,提高面向?qū)ο蠹夹g(shù)使項目建立在一個成熟的標(biāo)準(zhǔn)建模語言基礎(chǔ)之上便于溝通和交流,統(tǒng)一的理解35UML主要內(nèi)容
精確的元模型定義
UML表示法UML表示符
UML可視化的圖形建模語言
UML提供了五類圖形UML的主要內(nèi)容
36任務(wù)2UML的概念模型UMLStructure構(gòu)造塊buildingblocks公共機制commonmechanisms構(gòu)架architecture基本UML建模元素、關(guān)系和圖達到特定目標(biāo)的公共UML方法系統(tǒng)架構(gòu)的UML視圖37UML基本的構(gòu)造塊Page38構(gòu)造塊buildingblocks事物things關(guān)系relationships圖diagrams建模元素本身把事物聯(lián)系在一起,關(guān)系說明兩個或多個事物時如何語義相關(guān)的UML模型的視圖,它們展現(xiàn)事物的集合,“講述關(guān)于軟件系統(tǒng)的故事”,是我們可視化系統(tǒng)將做什么(分析級圖)或者系統(tǒng)如何做(設(shè)計級圖)的方法38事物事物things結(jié)構(gòu)物件行為物件分組物件注解物件UML模型中的名詞,如類、接口、協(xié)作、用例、活動類、組件、節(jié)點UML模型的動詞,如交互、狀態(tài)機包,它用于把語義上相關(guān)的建模元素分組為內(nèi)聚的單元注解,它附加到模型以捕獲特殊信息,同黃色便箋很相像39關(guān)系關(guān)系relationships關(guān)聯(lián)association依賴dependency泛化generalization實現(xiàn)realization描述對象之間的一組鏈接事物的改變引起依賴物件的語義改變一個元素是另一個元素的特化,而且它可以取代更一般的元素類元之間的關(guān)系,一個類元說明一份契約,另一個類元保證實現(xiàn)該契約40圖圖diagrams類圖classdiagrams對象圖objectdiagrams構(gòu)件圖componentdiagrams部署圖deploymentdiagrams用例圖usecasediagrams順序圖sequence`diagrams協(xié)作圖collaborationdiagrams狀態(tài)圖statechartdiagrams活動圖activitydiagrams靜態(tài)模型
(系統(tǒng)結(jié)構(gòu))動態(tài)模型
(系統(tǒng)行為)41UML公共機制公共機制commonmechanisms規(guī)格說明specifications修飾adornments公共分類commondivisions擴展機制extensibilitymechanisms42規(guī)格說明UML模型:使用圖和圖標(biāo)可視化模型各種建模元素的規(guī)格說明所組成規(guī)格說明模型元素的特征和語義的文本描述—模型的“肉”形成了承載模型的語義背板,賦予模型意義,各種圖僅僅是該背板的視圖或者可視化投影43修飾修飾:圖中建模元素上暴露的信息項任何UML圖僅是模型的視圖,只有在修飾增強了圖的整體清晰性和可讀性或者突出模型的某些重要特征時,才應(yīng)該表示那些修飾Window44公共分類描述認(rèn)識世界的特殊方法類和實例類元:一類事物的抽象概念;如“銀行帳戶”實例:一類事物的特定實例;如“張三豐帳戶”接口和實現(xiàn)接口:說明事物行為的契約(做什么)實現(xiàn):事物是如何工作的特殊細(xì)節(jié)(如何做)45擴展機制約束:允許對模型元素添加新的規(guī)則構(gòu)造型:基于已有的建模元素引入新的建模元素標(biāo)記值:允許為模型元素添加新的特性,是帶有相關(guān)值得關(guān)鍵字46JAVA開發(fā)平臺體系結(jié)構(gòu)構(gòu)架是一個系統(tǒng)的組織結(jié)構(gòu)包括:1.系統(tǒng)分解成的各個部分2.它們的連接性3.交互機制4.通知系統(tǒng)設(shè)計的向?qū)б?guī)則47JAVA開發(fā)平臺架構(gòu)構(gòu)架是一個系統(tǒng)的組織結(jié)構(gòu)包括:1.系統(tǒng)分解成的各個部分2.它們的連接性3.交互機制4.通知系統(tǒng)設(shè)計的向?qū)б?guī)則48架構(gòu)構(gòu)架是一個系統(tǒng)的組織結(jié)構(gòu)包括:1.系統(tǒng)分解成的各個部分2.它們的連接性3.交互機制4.通知系統(tǒng)設(shè)計的向?qū)б?guī)則494+1視圖50UML小結(jié)UML構(gòu)造塊公共機制架構(gòu)物件關(guān)系圖規(guī)格說明修飾公共分類擴展機制用例視圖邏輯視圖進程視圖實現(xiàn)視圖部署視圖結(jié)構(gòu)物件行為物件分組物件注解物件關(guān)聯(lián)依賴泛化實現(xiàn)類圖順序圖對象圖協(xié)作圖構(gòu)件圖狀態(tài)圖部署圖活動圖用例圖51
用例圖
類圖
對象圖
包
使用類圖的建議
任務(wù)3UML靜態(tài)建模機制52用例圖Page53用例圖
參與者
參與者1參與者2用例1用例253用例“捕獲需求”用例圖從系統(tǒng)外部、從用戶角度出發(fā)描述系統(tǒng)的功能集用例圖所描述的系統(tǒng)功能依靠外部用戶或另一個系統(tǒng)激活,為用戶或另一個系統(tǒng)提供服務(wù)54用例表達“做什么”用例圖中可以包含若干個用例,用例表達了系統(tǒng)的功能用例只描述參與者和系統(tǒng)在交互過程中做些什么,并不描述怎么做。55用例圖關(guān)聯(lián)關(guān)系Page5656用例圖泛化關(guān)系Page5757用例圖泛化關(guān)系Page5858用例圖Page59
保險銷售用例
59用例圖Page60
商品訂單用例
60用例圖Page61
教學(xué)管理用例
61用例用于什么情況?不知道什么情況不用用例如果沒有用到用例,閉門反省62實例:監(jiān)聽器用例63實例:監(jiān)聽器用例功能需求監(jiān)聽刪除操作,保證數(shù)據(jù)的安全。場景監(jiān)聽刪除操作刪除操作一旦執(zhí)行,立即被監(jiān)聽器捕獲到,進而在執(zhí)行刪除操作前執(zhí)行自定義的函數(shù)體,即判斷實體有無undeletable標(biāo)簽,有則中斷刪除操作,無則正常刪除。步驟異常情況異常處理方法取得實體的類名ClassNotFoundException異常日志記錄,然后包裝成一個HibernateException,向上層拋出。獲取undeletable標(biāo)簽,判斷是否存在,是則執(zhí)行函數(shù)體,否則執(zhí)行父類函數(shù)體(onDelete)IllegalAccessException異常與InvocationTarget-Exception異常日志記錄,然后包裝成HibernateException,向上層拋出。64關(guān)系關(guān)聯(lián)關(guān)系;依賴關(guān)系;泛化關(guān)系;關(guān)系的擴展
用例圖Page65<<include>><<extend>>參與者用例系統(tǒng)邊界關(guān)聯(lián)擴展包含泛化注釋體注釋連接65類圖類名稱;屬性;操作關(guān)聯(lián)關(guān)系泛化依賴關(guān)系約束類圖66類圖類名稱;屬性;操作67類圖類圖68類圖類圖69類圖類圖泛化關(guān)聯(lián)70類圖類圖71類圖類圖72何時用類圖?類圖是面向?qū)ο蠓椒ǖ闹е绻麤]用到類圖??找電桿撞下,看是否用面向?qū)ο蠓椒?3用類圖的危險!類圖用濫了,建狗屋畫了10頁類圖類圖沒分清粗細(xì)層次:概念類圖規(guī)約類圖實現(xiàn)類圖74鳥類圖75鳥類圖76鳥類圖77鳥類圖78實例:監(jiān)聽器類圖79使用類圖的建議不要試圖使用所有的符號根據(jù)項目開發(fā)的不同階段,用正確的觀點來畫類圖不要為每個事物都畫一個模型,應(yīng)該把精力放在關(guān)鍵的領(lǐng)域使用類圖的建議80對象圖
對象圖
表示在某一時刻類的具體實例和這些實例之間的具體連接關(guān)系
對象圖丁一家里的PC:計算機名稱:DELL446內(nèi)存:128丁一:作家姓名:丁一年齡:3081類與對象關(guān)系82類與對象關(guān)系對象圖使用的是與類圖相同的符號和關(guān)系
83類圖和對象圖的區(qū)別
84包包
一種分組機制,把各種各樣的模型元素通過內(nèi)在的語義連在一起成為一個整體就叫做包
包PackageABCAABC85包的關(guān)系引用使用86包--軟件比賽作品87架構(gòu)圖--包圖的變形88任務(wù)4UML動態(tài)建模機制對象之間的交互狀態(tài)圖交互圖活動圖四種圖的運用89軟件模型與現(xiàn)實模型與現(xiàn)實要匹配90對象之間的交互簡單消息同步消息異步消息同步且立即返回消息對象之間的交互91什么是狀態(tài)圖?狀態(tài)圖
用來建模對象是如何改變其狀態(tài)以響應(yīng)事件,展示對象從創(chuàng)建到刪除的生命周期狀態(tài)圖發(fā)票狀態(tài)圖92狀態(tài)圖狀態(tài)標(biāo)記符93狀態(tài)圖實例:打電話94狀態(tài)圖狀態(tài)和轉(zhuǎn)移事件狀態(tài)圖95狀態(tài)圖如果你太喜歡96狀態(tài)圖詳細(xì)狀態(tài)97狀態(tài)圖子狀態(tài)狀態(tài)圖98狀態(tài)圖子狀態(tài)狀態(tài)圖99狀態(tài)圖子狀態(tài)狀態(tài)圖100航班狀態(tài)101放松下102交互圖順序圖交互圖103交互圖順序圖交互圖104實例:監(jiān)聽器順序圖105電影動畫-軟件模型電影大量使用3D動畫106交互圖協(xié)作圖:交互關(guān)系和鏈接關(guān)系
鏈接;消息流;對象生命周期
107交互圖協(xié)作圖:交互關(guān)系和鏈接關(guān)系
108交互圖協(xié)作圖
鏈接;消息流;對象生命周期
交互圖109順序圖與協(xié)作圖相同點描述對象間的交互關(guān)系不同點順序圖:交互的時間順序協(xié)作圖:交互的靜態(tài)鏈接關(guān)系1103D電影動態(tài)建模111活動圖-狀態(tài)變種活動和轉(zhuǎn)移泳道對象信號112活動圖-狀態(tài)變種活動和轉(zhuǎn)移泳道對象信號113活動圖活動和轉(zhuǎn)移泳道對象信號活動圖114活動圖活動和轉(zhuǎn)移泳道對象信號115四種圖的運用動態(tài)建模目的、側(cè)重不同狀態(tài)圖只有極少關(guān)鍵對象順序圖、協(xié)作圖:單用例中幾個對象的行為順序圖突出順序,協(xié)作圖著重對象間鏈接關(guān)系四種圖的運用116項目三項目市場調(diào)研任務(wù)1.系統(tǒng)的研發(fā)背景任務(wù)2.軟件開發(fā)計劃
117油畫創(chuàng)作背景波洛克《1948年第五號》1.4億$,最昂貴畫作這幅畫在一副優(yōu)雅的4x8英尺畫布上以畫家特有的滴濺潑灑的藝術(shù)手法來進行風(fēng)暴式設(shè)計并撥開油彩。118任務(wù)1系統(tǒng)的研發(fā)背景追問:為什么呢?你好,這里是夢幻家園售樓處,我是蔡小姐。我是張總,我嚴(yán)重警告你。為什么呢?試用期2月了,你有業(yè)績嗎?你賣出去過一套房子嗎?為什么呢?問你自己!哦……為什么呢?今天下班之前你要再不賣出一套房子去,你就給我卷鋪蓋走人?。娫拻炝耍槭裁茨??119項目背景--鋼琴練奏師問:為什么開發(fā)這個軟件?答:傳統(tǒng)的音樂播放器功能單一用戶對音樂缺少參與感問:開發(fā)這個軟件目標(biāo)是什么?答:提高用戶對音樂的學(xué)習(xí)和娛樂參與創(chuàng)作音樂120項目背景--鋼琴練奏師問:為什么傳統(tǒng)音樂程序不好?答:傳統(tǒng)音樂程序功能單一,容易令人感到枯燥無味,沒有吸引力;傳統(tǒng)音樂程序強調(diào)單方向,用戶沒有參與感;傳統(tǒng)音樂程序設(shè)計不夠靈活,擴展性差。121項目背景--鋼琴練奏師問:開發(fā)內(nèi)容包括什么?答:本項目從Android的聲音處理入手,實現(xiàn)音樂功能,根據(jù)用戶的興趣,提高用戶參與度。問:有什么應(yīng)用價值?答:本項目是一個能提高用戶參與和娛樂程序的項目,具有一定的使用價值。122追求的結(jié)果--鋼琴練奏師1.2項目背景傳統(tǒng)的音樂播放器功能單一,用戶對音樂缺少參與感,本項目志在提高用戶對音樂的學(xué)習(xí)和娛樂,參與創(chuàng)作音樂:(1)傳統(tǒng)音樂程序功能單一,容易令人感到枯燥無味,沒有吸引力;(2)傳統(tǒng)音樂程序強調(diào)單方向,用戶沒有參與感;(3)傳統(tǒng)音樂程序設(shè)計不夠靈活,擴展性差。本項目從Android的聲音處理入手,實現(xiàn)音樂功能,根據(jù)用戶的興趣,提高用戶參與度。本項目是一個能提高用戶參與和娛樂程序的項目,具有一定的使用價值。123系統(tǒng)的研發(fā)背景1.圖書館系統(tǒng)的提出傳統(tǒng)的手工方式對圖書信息的管理已越來越不能適應(yīng)社會發(fā)展的需要,尤其是隨著計算機網(wǎng)絡(luò)和Internet的普及,運用先進的信息管理系統(tǒng)對信息進行科學(xué)化和網(wǎng)絡(luò)化管理,已成為圖書信息管理系統(tǒng)發(fā)展的趨勢。124系統(tǒng)的研發(fā)背景2.國內(nèi)外研發(fā)現(xiàn)狀圖書管理系統(tǒng)的發(fā)展歷史國內(nèi)外應(yīng)用的圖書管理系統(tǒng)調(diào)研(1)開發(fā)方式(2)開發(fā)方法(3)結(jié)構(gòu)形式(4)開發(fā)平臺(5)系統(tǒng)使用的范圍(6)按照系統(tǒng)開發(fā)主體面向的對象
國內(nèi)圖書管理系統(tǒng)應(yīng)用情況125國內(nèi)Android開發(fā)行業(yè)市場現(xiàn)狀國內(nèi)的Android開發(fā)還是以應(yīng)用開發(fā)為主,主要分成3類:為企業(yè)開發(fā)應(yīng)用開發(fā)通用應(yīng)用(AndroidMarket或者其他AppMarket銷售)游戲開發(fā)(AndroidMarket或者其他AppMarket銷售)。126國內(nèi)Android開發(fā)行業(yè)市場現(xiàn)狀第一類開發(fā)者在較大的公司,為自有品牌或者其他品牌設(shè)計手機或者平板電腦的總體方案。根據(jù)需求對系統(tǒng)進行定制外,為系統(tǒng)編寫定制的應(yīng)用。第二類開發(fā)者在創(chuàng)業(yè)型公司或者是獨立開發(fā)者,盈利方式主要2種:為國外公司外包開發(fā),或者通過Google的移動廣告(AdMob)點擊分成。通過付費下載的形式來盈利的,現(xiàn)在國內(nèi)鮮見成功者。第三類開發(fā)者和第二類開發(fā)者類似。開發(fā)者提交的應(yīng)用開發(fā)數(shù)目遠超游戲開發(fā)。127任務(wù)2軟件開發(fā)計劃問題定義可行性研究可行否?否是終止項目計劃時期開發(fā)時期128任務(wù)2軟件開發(fā)計劃難于上青天!做項目計劃,如同給一個待出生的嬰兒寫傳記易如反掌!如果項目結(jié)束后再寫計劃,那就輕松多了,并且可以100%地準(zhǔn)確129軟件開發(fā)計劃1.問題定義目標(biāo)!目標(biāo)!目標(biāo)!。。。130軟件開發(fā)計劃1.問題定義(1)問題定義的任務(wù)開發(fā)目標(biāo)開發(fā)規(guī)模開發(fā)時間(2)問題定義的內(nèi)容文檔化以上內(nèi)定
131問題定義-案例⑴項目名稱:教材銷售系統(tǒng)⑵開發(fā)背景:人工發(fā)售教材手續(xù)繁瑣,且易出錯。⑶項目目標(biāo):建立一個效率比人工操作提高2倍、差錯率下降50%的系統(tǒng)。⑷項目范圍利用現(xiàn)有PC(不增加設(shè)備)軟件開發(fā)費用不超過100萬元完成時間2019年10月31日⑸初步想法:在系統(tǒng)中增加采購功能、對缺書的統(tǒng)計⑹可行性研究的計劃進行大約2周的可行性研究132項目可行性遇到挑戰(zhàn)(完成了,但超時或超支)成功
失敗28%46%26%基于23,000多個項目統(tǒng)計133軟件開發(fā)計劃可行性分析:決定“做還是不做”需求分析:決定“做什么,不做什么”。實際案例:機票代理人項目老板的干活134軟件開發(fā)計劃2.可行性分析(1)主要內(nèi)容
可行性分析四大要素:經(jīng)濟技術(shù)環(huán)境人
135可行性分析-案例1炫鈴項目的可行性無人無積累(技術(shù))環(huán)境(有市場前景)資金(1年)136可行性分析-案例2華為任正非早期冒險:人不夠(一邊開發(fā),一邊找人)無積累(無技術(shù)--紅寶書)資金(前期約1年,后欠工資)環(huán)境(有市場,政策無支持)一拍腦袋:“豁出去,干!”137可行性分析-案例3聯(lián)想集團柳傳志沒錢賺的事我們不干;有錢賺但投不起錢的事不干;有錢賺也投得起錢但沒有可靠的人選,這樣的事也不干。138成本收益分析成本:(1)辦公室房租。(2)辦公用品,如桌、椅、書柜、電器、空調(diào)。(3)計算機、打印機、網(wǎng)絡(luò)等硬件設(shè)備。(4)電話、傳真等通訊設(shè)備以及通訊費用。(5)資料費。(6)辦公消耗,如水電費、打印復(fù)印費等。(7)軟件開發(fā)人員與行政人員工資。(8)系統(tǒng)軟件費用,如數(shù)據(jù)庫、開發(fā)工具等。(9)市場調(diào)查、可行性分析、需求分析的費用。(10)公司人員培訓(xùn)費用。(11)產(chǎn)品宣傳費用。(12)如果客戶攻關(guān)費,吃喝玩樂的費用。(13)管理費。每戳一個公章都要化一把鈔票。收入:項目收入(合同)人在錢沒了139技術(shù)可行性技術(shù)可行性可以表述為:做得了嗎?做得好嗎?做得快嗎?140社會環(huán)境的可行性社會環(huán)境的可行性:市場未成熟的市場成熟的市場將消亡的市場政策例:民航收費電信收費141人才可行性有人嗎?手上的人挖掘一下夠用嗎?要多少才夠成本超支可找嗎?挖得到給得起¥21世紀(jì)人才最貴142軟件開發(fā)計劃2.可行性分析(2)可行性分析的主要步驟確定目標(biāo)進行系統(tǒng)調(diào)查列出可能的技術(shù)方案技術(shù)先進性分析經(jīng)濟效益分析綜合評價優(yōu)選可取方案并寫出可行性分析報告
143軟件開發(fā)計劃(3)可行性分析的評價原則效益性原則經(jīng)濟性原則可靠性原則
可比性原則144軟件開發(fā)計劃3.可行性分析報告可行性分析報告的一般格式可行性分析報告通常包括封面和內(nèi)容兩個部分可行性分析報告案例--圖書管理系統(tǒng)145軟件開發(fā)計劃4.系統(tǒng)的開發(fā)計劃開發(fā)計劃主要任務(wù)
項目開發(fā)計劃編寫提示--圖書館管理
蘋果飛船總部計劃1.3萬人146小結(jié)案例:圖書館管理系統(tǒng)研發(fā)背景問題定義可行性分析主要任務(wù)基本的步驟分析報告開發(fā)的計劃主要任務(wù)計劃的制訂147項目四軟件項目需求分析148項目四軟件項目需求分析任務(wù)1.調(diào)查系統(tǒng)的需求任務(wù)2.模型任務(wù)3.事件任務(wù)4.事物任務(wù)5.實體—聯(lián)系圖任務(wù)6.類圖陷阱:武器的進步149任務(wù)1.調(diào)查系統(tǒng)的需求1.調(diào)查系統(tǒng)的需求功能需求和技術(shù)需求系統(tǒng)相關(guān)者建立系統(tǒng)需求原型150需求分析的困難?。?)客戶說不清楚需求;(2)需求自身經(jīng)常變動;(3)分析人員或客戶理解有誤。151需求分析的困難?。?)客戶說不清楚需求例:買鞋子腳大小形狀152需求分析的困難?。?)需求自身經(jīng)常變動沒有一個軟件的需求改動少于三次唯一改動需求兩次的在去第三次改動需求的路上去世了例:時裝153需求分析的困難!(3)分析人員或客戶理解有誤
154調(diào)查系統(tǒng)的需求1.功能需求和技術(shù)需求功能需求系統(tǒng)必須完成的活動,是系統(tǒng)將要投入的業(yè)務(wù)應(yīng)用技術(shù)需求和企業(yè)的環(huán)境、硬件和軟件有關(guān)的所有可操作目標(biāo)
155調(diào)查系統(tǒng)的需求樹上有10只鳥,打了1只,還有幾只?“是無聲手槍或別的無聲的槍嗎?”
“不是?!?/p>
“槍聲有多大?”
“80-100分貝?!?/p>
“那就是說會震的耳朵疼?”
“是。”
“在這個城市里打鳥犯不犯法?”
“不犯。”
“您確定那只鳥真的被打死啦?”
“確定?!迸家呀?jīng)不耐煩了“拜托,你告訴我還剩幾只就行了,ok”
“ok,樹上的鳥里有沒有聾子?”
“沒有?!?/p>
“有沒有關(guān)在籠子里的?”
“沒有。”
“邊上還有沒有其他的樹,樹上還有沒有其他鳥?”
“沒有。”“有沒有殘疾的或餓的飛不動的鳥?”
“沒有?!?/p>
“算不算懷孕肚子里的小鳥?”
“不算?!?/p>
“打鳥的人眼有沒有花?保證是十只?”
“沒有花,就十只。”偶已經(jīng)滿腦門是汗,且下課鈴響,但他繼續(xù)問,
“有沒有傻的不怕死的?”
“都怕死?!?/p>
“會不會一槍打死兩只?”
“不會?!?/p>
“所有的鳥都可以自由活動嗎?”
“完全可以。”
學(xué)生滿懷信心的說,“打死的鳥要是掛在樹上沒掉下來,那么就剩一只,如果掉下來,就一只不剩?!?/p>
156調(diào)查系統(tǒng)的需求2.系統(tǒng)相關(guān)者用戶:實際使用系統(tǒng)處理日常事務(wù)的人客戶:那些購買和擁有系統(tǒng)的人技術(shù)人員:確保系統(tǒng)運行的人外部實體:例如公司的顧客比爾-蓋茨:“我家沒有任何一款蘋果產(chǎn)品,我們?nèi)乙矎膩聿怀蕴O果。”
喬布斯:“我家一個窗戶都沒有?!?/p>
157調(diào)查系統(tǒng)的需求需求調(diào)查方法:直接與客戶交談足球評論員“大嘴”侃出需求有些需求客戶講不清楚請教行家“聽君一席言,勝讀十年書。”客戶與分析人員想都沒有想過分析同類軟件,優(yōu)點、缺點坐享其成巴喬在前有追兵,后有堵截的情況下帶球沖入禁區(qū)...AC米蘭隊目前以1:3領(lǐng)先...球員30公里外一腳遠射!158調(diào)查系統(tǒng)的需求3.建立系統(tǒng)需求原型(1)確定現(xiàn)有系統(tǒng)的物理過程和活動(2)從現(xiàn)有物理過程中提取出業(yè)務(wù)邏輯功能(3)為將在新系統(tǒng)中使用的方法開發(fā)出業(yè)務(wù)邏輯功能(刪)(4)定義新系統(tǒng)的物理處理需求(物理改為業(yè)務(wù))159任務(wù)2模型2.模型模型的作用及類型邏輯模型和物理模型例:法拉利牌坦克酷性能突出,流線型設(shè)計符合年輕人愛好戰(zhàn)斗力很差160模型1.模型的作用及類型(1)模型的作用提取系統(tǒng)需求信息系統(tǒng)分析員整理思路系統(tǒng)的分析和集成記憶和把握相關(guān)細(xì)節(jié)系統(tǒng)開發(fā)小組間進行交流為維護和升級提供文檔參考大爆炸宇宙模型161模型1.模型的作用及類型(2)模型的類型
數(shù)學(xué)模型描述系統(tǒng)技術(shù)方面的一系列數(shù)學(xué)公式如:利潤=收入-成本描述模型描述系統(tǒng)某些方面的敘述性的備忘錄、報表、列表、文字等如,監(jiān)聽刪除操作:刪除操作一旦執(zhí)行,立即被監(jiān)聽器捕獲到,進而在執(zhí)行刪除操作前執(zhí)行自定義的函數(shù)體,即判斷實體有無undeletable標(biāo)簽,有則中斷刪除操作,無則正常刪除。圖形模型描述系統(tǒng)的圖表或系統(tǒng)某些方面的示意性表示162模型2.邏輯模型和物理模型(1)邏輯模型在系統(tǒng)分析階段所建立的模型詳細(xì)定義了系統(tǒng)需求但并沒有局限于某一具體技術(shù)常用邏輯模型用例圖類圖順序圖狀態(tài)圖/協(xié)作圖注意:面向?qū)ο笈c面向過程163模型2.邏輯模型和物理模型(2)物理模型在系統(tǒng)設(shè)計階段建立的模型顯示了如何使用具體技術(shù)來實現(xiàn)系統(tǒng)的某些方面常用模型界面報表數(shù)據(jù)庫結(jié)構(gòu)流程網(wǎng)絡(luò)分布164任務(wù)3事件3.事件事件的概念和類型事件定義圖書館管理系統(tǒng)中的事件黑屏事件165事件1.事件的概念和類型(1)外部事件(2)臨時事件(3)狀態(tài)事件
2.事件定義(1)區(qū)分事件和觸發(fā)事件的條件以及系統(tǒng)響應(yīng)(2)跟蹤事務(wù)處理的生命周期(3)暫不考慮技術(shù)依賴事件和系統(tǒng)控制
166事件3.圖書館管理系統(tǒng)中的事件書目查詢帳戶查詢及更改預(yù)約/退訂圖書借/還書逾期罰款丟失賠償催還圖書借書排行167事件3.圖書館管理系統(tǒng)中的事件書目查詢借/還書…事件觸發(fā)器來源活動/用例響應(yīng)目的地使用者查詢書目信息書目查詢查詢者查詢所需書目查詢結(jié)果查詢者168《金剛》-3D軟件建模2.07億美元3500臺計算機“金剛”完全電腦特效電影技術(shù)進入電腦時代169任務(wù)4事物4.事物1.事物的概念和類型2.事物間的關(guān)系3.事物的屬性4.數(shù)據(jù)實體和對象“人要么是天才,要么是笨蛋!”
“你想一輩子賣糖水,還是改變世界?”
“我們從不以偷竊別人的偉大作品為恥!”
“軟件就是用戶體驗?!?70事物1.事物的概念和類型171事物1.事物的概念和類型特征驅(qū)動開發(fā)(FDD)四色建模
172事物2.事物間的關(guān)系3.事物的屬性173事物4.數(shù)據(jù)實體和對象數(shù)據(jù)實體與過程是分離的對象將數(shù)據(jù)和處理數(shù)據(jù)的方法封裝成一個單元要讓某個對象執(zhí)行
某種操作,可以讓
另外一個對象給該
對象發(fā)送一個消息174任務(wù)5實體—聯(lián)系圖數(shù)據(jù)存儲需求結(jié)構(gòu)化分析方法把重點集中在系統(tǒng)的數(shù)據(jù)存儲需求上數(shù)據(jù)存儲需求:數(shù)據(jù)實體數(shù)據(jù)實體的屬性實體間的關(guān)系175任務(wù)5實體—聯(lián)系圖數(shù)據(jù)存儲需求結(jié)構(gòu)化分析方法--數(shù)據(jù)流圖(DFD)176實體—聯(lián)系圖(ERD)用來定義數(shù)據(jù)存儲需求的模型任務(wù)5實體—聯(lián)系圖177任務(wù)5實體—聯(lián)系圖只能一個(強制)0或多個(可選)1或多個(強制)0或1個(可選)實體之間關(guān)系的基數(shù)符號178任務(wù)5實體—聯(lián)系圖179任務(wù)5實體—聯(lián)系圖帶有屬性的擴展ERD圖*表示標(biāo)識符或關(guān)鍵字180任務(wù)6類圖6.類圖用面向?qū)ο蟮姆椒ǚ治鍪挛镱悎D的符號
建模的目標(biāo)
需求分析規(guī)格說明書編寫提綱181類圖1.用面向?qū)ο蟮姆椒ǚ治鍪挛锓诸惙治龇椒ǎǜ爬ǎ唧w)繼承機動車輛小汽車卡車拖拉機轎車跑車體育用車機動車輛的泛化/具體層次圖(繼承關(guān)系)182類圖1.用面向?qū)ο蟮姆椒ǚ治鍪挛锓诸惙治龇椒ǎǜ爬ǎ唧w)繼承訂單電話訂單網(wǎng)上訂單郵件訂單183類圖1.用面向?qū)ο蟮姆椒ǚ治鍪挛镎w—局部分析方法聚合合成184類圖2.類圖的符號基于統(tǒng)一建模語言(UML)面向?qū)ο笙到y(tǒng)開發(fā)中建立模型的實際標(biāo)準(zhǔn)
185類圖2.類圖的符號基于統(tǒng)一建模語言(UML)面向?qū)ο笙到y(tǒng)開發(fā)中建立模型的實際標(biāo)準(zhǔn)
186類圖3.建模的目標(biāo)
結(jié)構(gòu)化方法:--錯誤的!事件表->數(shù)據(jù)流圖(DFD)面向?qū)ο蠓椒ǎ菏录恚?gt;用例圖->類圖->順序圖/狀態(tài)圖187類圖3.建模的目標(biāo)
結(jié)構(gòu)化方法--錯誤的!面向?qū)ο蠓椒?88需求分析規(guī)格說明書
僅僅建模還是不夠的需求分析成果->需求分析說明書需求分析規(guī)格說明書提綱1.引言2.任務(wù)概述3.需求規(guī)定4.運行環(huán)境設(shè)定5.縮寫詞表6.參考文獻189送餐管理系統(tǒng)--需求分析過程分析員:“在你們打理生意時,哪些事情促使你們決定采用計算機管理?告訴我通常這些業(yè)務(wù)是如何進行的。”客戶:“是這樣,當(dāng)客戶打電話訂餐時,我需要把它記下來,然后通知給相應(yīng)的餐館。我需要決定派哪一個司機去送貨,因此要司機打電話告訴我他們什么時間有空。有時,客戶會又打電話更改訂單內(nèi)容,因此我必須找到原始訂單,然后通知餐館更改?!狈治鰡T:“好的,那你們又怎么管理現(xiàn)金呢?”客戶:“司機取飯菜時會從餐館直接拿到賬單的副本,賬單和我們的計算應(yīng)該是一致的,然后司機送貨時收取相應(yīng)的現(xiàn)金并加上服務(wù)費。在下班時,司機報賬,我們把司機收到的現(xiàn)金匯總起來,和我們的記錄進行比較,所有的司機都交完賬后,我們需要開張銀行存款單,存入當(dāng)天的現(xiàn)金總收入。每周末,我們按提前約定的批發(fā)價來計算欠餐館多少錢,把結(jié)算單和支票寄給他們。”190送餐管理系統(tǒng)--需求分析過程分析員:“那你們還想從這個系統(tǒng)中獲取別的信息嗎?”客戶:“如果每周末能統(tǒng)計出每個餐館有多少訂單、城里每個區(qū)有多少訂單等信息就更好了。這能幫助我們制定廣告策略及與餐館的合同,而且我們還需要每月財務(wù)狀況統(tǒng)計結(jié)果?!痹诳蛻粽f話時,分析員記下了幾個要點,畫了幾張草圖。之后,他花了一些時間仔細(xì)考慮,總結(jié)出“送餐管理”的需求狀況。191送餐管理系統(tǒng)--需求分析過程1.在發(fā)生如下事件時,系統(tǒng)
可以進行處理:客戶打電話下訂餐訂單客戶打電話修改訂單送貨司機匯報工作情況送貨司機上交一天的收入2.在特定時間內(nèi)系統(tǒng)產(chǎn)生所
需信息:生成日結(jié)算存款單生成周末餐館支付帳單生成周銷售報表生成月財務(wù)報表3.需要建立業(yè)務(wù)實體:餐館菜單客戶訂單訂單支付帳單司機(送餐員)192送餐管理系統(tǒng)--用例圖193送餐管理系統(tǒng)--類圖194送餐管理系統(tǒng)--順序圖195小結(jié)面向?qū)ο蠓治龇椒ǎㄕ莆眨┯美龍D類圖順序圖狀態(tài)圖/協(xié)作圖(可選)結(jié)構(gòu)化分析方法(了解)實體-聯(lián)系圖數(shù)據(jù)流圖196項目五軟件項目總體設(shè)計197軟件項目總體設(shè)計1.總體設(shè)計基本內(nèi)容2.結(jié)構(gòu)化軟件設(shè)計3.面向?qū)ο筌浖O(shè)計198任務(wù)1軟件總體設(shè)計1.總體設(shè)計的基本內(nèi)容軟件設(shè)計定義總體設(shè)計的目標(biāo)與步驟總體設(shè)計的基本任務(wù)總體設(shè)計的準(zhǔn)則設(shè)計編碼測試維護測試編碼維護有軟件設(shè)計
沒有軟件設(shè)計199軟件設(shè)計分解過程總體設(shè)計詳細(xì)設(shè)計200總體設(shè)計的基本內(nèi)容1.軟件設(shè)計設(shè)計解決從需求(做什么?)到(怎么做?)概要設(shè)計(總體設(shè)計)將軟件需求轉(zhuǎn)化為軟件體系架構(gòu)確定系統(tǒng)級接口全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式詳細(xì)設(shè)計確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu)用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)201軟件設(shè)計總體設(shè)計體系結(jié)構(gòu)就如同人的骨架如骨架是猴子,無論怎樣喂養(yǎng)和美容,始終是猴子,成不了人。模塊(子系統(tǒng))就如同人的器官,有特定的功能最出色的子系統(tǒng)是手,只有幾種動作,卻能做無限多的事情。最糟糕的模塊設(shè)計之一是嘴巴,混合毫無相干的功能(如吃飯、說話、親吻)202軟件設(shè)計詳細(xì)設(shè)計數(shù)據(jù)結(jié)構(gòu)與算法如同人的血脈和神經(jīng)(發(fā)揮功能)聾子天生就是啞巴(關(guān)系)人體的數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計十分神奇也十分可笑用戶界面如同人的外表,讓人一見鐘情(或一見嘔吐)Unix系統(tǒng)是健壯的漢子和婦人Windows系統(tǒng)是嫵媚的小白臉和狐貍精化妝可以獲得更好的界面203總體設(shè)計的基本內(nèi)容1.總體設(shè)計的目標(biāo)設(shè)計合理的軟件架構(gòu)分解為合理的模塊(包)2.總體設(shè)計的步驟:(1)用戶需要->系統(tǒng)邏輯模型(2)系統(tǒng)分解成一組模塊(包)(3)確定模塊的功能滿足需求(4)形成總體設(shè)計文檔204總體設(shè)計的基本任務(wù)1.設(shè)計軟件結(jié)構(gòu)2.數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(一般在詳細(xì)設(shè)計)3.編寫總體設(shè)計文檔4.評審
205總體設(shè)計的基本內(nèi)容1.軟件設(shè)計軟件架構(gòu)是總體設(shè)計的核心內(nèi)容206體系結(jié)構(gòu)是本質(zhì)的軟件系統(tǒng)中最本質(zhì)的東西對復(fù)雜事物的一種抽象在一定的時間內(nèi)保持穩(wěn)定常見層次結(jié)構(gòu)和WEB結(jié)構(gòu)207總體設(shè)計--層次結(jié)構(gòu)為什么分層次?系統(tǒng)太復(fù)雜無法一口氣干完與人的認(rèn)識符合208總體設(shè)計-體系結(jié)構(gòu)JAVA開發(fā)平臺體系結(jié)構(gòu)209總體設(shè)計--網(wǎng)絡(luò)結(jié)構(gòu)JAVA開發(fā)平臺網(wǎng)絡(luò)結(jié)構(gòu)210總體設(shè)計--系統(tǒng)架構(gòu)JAVA開發(fā)平臺架構(gòu)211總體設(shè)計--模塊功能劃分體系結(jié)構(gòu)-(決定)
各模塊功能從功能上劃分模塊模塊化設(shè)計原則保持“功能獨立”抽象(事物本質(zhì))信息隱藏212總體設(shè)計--模塊功能劃分保持“功能獨立”降低開發(fā)、測試、維護等階段的代價溝通成本最低例:美國獨立戰(zhàn)爭(獨立國家)213總體設(shè)計--模塊功能劃分抽象(事物本質(zhì))抽象是設(shè)計的本質(zhì)例:微軟和聯(lián)通有仇?國際碼,“啊”:B0A1214總體設(shè)計--模塊功能劃分信息隱藏模塊只提供對外的接口模塊內(nèi)部不對外開放好事不出門,壞事傳千里!(克林頓)老師:要是坐在后排聊天的同學(xué)能象中間打牌的同學(xué)那么安靜,就不會影響到前排睡覺的同學(xué)。215總體設(shè)計--UI模塊JAVA開發(fā)平臺UI模塊216總體設(shè)計--DAO模塊JAVA開發(fā)平臺DAO模塊217總體設(shè)計--DAO模塊JAVA開發(fā)平臺MVC模塊218總體設(shè)計--DAO模塊JAVA開發(fā)平臺Model模塊219總體設(shè)計的基本內(nèi)容3 系統(tǒng)架構(gòu)
3.1 系統(tǒng)總體架構(gòu)3.1.1 UI構(gòu)件 3.1.2 DAO構(gòu)件 3.1.3 MVC構(gòu)件 3.1.4 MODEL構(gòu)件 總體設(shè)計的說明1 前言 1.1 目標(biāo) 1.2 系統(tǒng)設(shè)計特點1.3 系統(tǒng)體系結(jié)構(gòu)2 系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu) 2.1 系統(tǒng)網(wǎng)絡(luò)拓?fù)?.2 軟硬件要求 220總體設(shè)計的準(zhǔn)則Davis的設(shè)計準(zhǔn)則(1)設(shè)計考慮各種可選方案,根據(jù)需求/資源/概念決定(2)設(shè)計應(yīng)可以跟蹤需求分析模型(3)設(shè)計資源都是有限的(4)設(shè)計應(yīng)體現(xiàn)統(tǒng)一的風(fēng)格(5)設(shè)計的結(jié)構(gòu)應(yīng)盡可能滿足變更的要求(6)設(shè)計的結(jié)構(gòu)應(yīng)能處理異常(7)設(shè)計不是編碼,編碼也不是設(shè)計(8)設(shè)計的質(zhì)量評估應(yīng)在設(shè)計的過程中進行(9)設(shè)計評審應(yīng)關(guān)注概念性的錯誤,而不是細(xì)節(jié)程序猿
221任務(wù)2結(jié)構(gòu)化的軟件設(shè)計1.結(jié)構(gòu)化設(shè)計的基本概念(1)模塊
(2)模塊的獨立性(3)抽象(4)信息隱蔽冷兵器222結(jié)構(gòu)化的軟件設(shè)計2.結(jié)構(gòu)化的設(shè)計方法(1)功能模塊劃分設(shè)計(2)面向數(shù)據(jù)流設(shè)計(3)輸入/輸出設(shè)計223模塊劃分的設(shè)計功能模塊劃分設(shè)計系統(tǒng)管理圖書管理讀者管理224面向數(shù)據(jù)流設(shè)計變換型數(shù)據(jù)流設(shè)計225面向數(shù)據(jù)流設(shè)計事務(wù)型數(shù)據(jù)流226輸入/輸出設(shè)計輸入/處理/輸出設(shè)計227結(jié)構(gòu)化的軟件設(shè)計3.運行環(huán)境設(shè)計
硬件平臺CPU硬盤內(nèi)存軟件平臺操作系統(tǒng)數(shù)據(jù)庫228任務(wù)3面向?qū)ο笤O(shè)計面向?qū)ο蟮牡脑O(shè)計方法系統(tǒng)行為?圖書管理系統(tǒng)的用例圖對象交互?圖書管理系統(tǒng)的交互圖對象行為?圖書管理系統(tǒng)的狀態(tài)圖229
面向?qū)ο蟮能浖O(shè)計230
面向?qū)ο蟮能浖O(shè)計是一種新的程序設(shè)計范型是一種運用對象、類、繼承、封裝、聚合、消息傳送、多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法231面向?qū)ο蠓椒ㄖ饕枷霃默F(xiàn)實世界中存在的事物出發(fā)建立軟件系統(tǒng)以問題域(現(xiàn)實世界)中的事物為中心來思考問題、認(rèn)識問題根據(jù)這些事物的本質(zhì)特征,抽象地表示為系統(tǒng)中的對象使系統(tǒng)直接映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌充分運用人類日常的思維方式232面向?qū)ο蠓椒ㄖ饕枷霃默F(xiàn)實世界中存在的事物出發(fā)建立軟件系統(tǒng)充分運用人類日常的思維方式運用人類在日常的邏輯思維中采用的思想方法與原則,例如抽象、分類、繼承、聚合、封裝等軟件開發(fā)者能更有效地思考問題,其他人能看得懂的方式把自己的認(rèn)識表達出來233面向?qū)ο箝_發(fā)方法的開發(fā)過程面向?qū)ο蠓治雒嫦驅(qū)ο笤O(shè)計面向?qū)ο缶幊?34軟件開發(fā)全過程運用面向?qū)ο蠓椒嫦驅(qū)ο笳Z言正取得令人振奮的發(fā)展編程并不是軟件開發(fā)問題的主要根源需求分析與設(shè)計問題更為普遍并且更值得解決適合于解決分析與設(shè)計期間的復(fù)雜性實現(xiàn)分析與設(shè)計的復(fù)用在軟件生命周期采用一種全新的方法——《軟件工程百科全書》235面向?qū)ο蠓椒▽ο螅簩傩?服務(wù)(獨立的系統(tǒng)單位)盡可能隱蔽對象的內(nèi)部細(xì)節(jié)售報亭屬性服務(wù)報刊A報刊B…錢箱報刊零售款貨清點顧客236面向過程與面向?qū)ο蟮膮^(qū)別數(shù)據(jù)結(jié)構(gòu)+算法=程序設(shè)計以對象為中心組織數(shù)據(jù)與操作數(shù)據(jù)對象的屬性操作對象的服務(wù)類型與變量類與對象實例函數(shù)(過程)調(diào)用消息傳送類型與子類型一般類與特殊類,繼承構(gòu)造類型整體-部分結(jié)構(gòu),聚合指針關(guān)聯(lián)237
面向?qū)ο蟮能浖O(shè)計1.面向?qū)ο蟮牡脑O(shè)計方法設(shè)計特點:抽象性信息隱藏性功能獨立性模塊化設(shè)計步驟:識別對象確定屬性定義操作確定對象之間的通信完成對象定義2381識別對象—例子家庭安全系統(tǒng)--潛在的對象房主傳感器安全系統(tǒng)控制板監(jiān)控服務(wù)……….2391識別對象對系統(tǒng)進行描述對描述進行語法分析找出名詞或者名詞短語根據(jù)這些名詞或者名詞短語確定對象對象可以是240關(guān)鍵抽象在線拍賣拍賣和拍賣物項信用卡競拍
分類
用戶帳戶和未付款項關(guān)鍵抽象業(yè)務(wù)實體
實體之間的關(guān)系例:一個拍賣就含多個拍賣物項241是系統(tǒng)范圍上的重要概念主要從需求中得到(例如詞匯表、業(yè)務(wù)規(guī)約以及用例模型)會涉及到業(yè)務(wù)領(lǐng)域知識表現(xiàn)為系統(tǒng)的實體關(guān)鍵抽象強調(diào)與系統(tǒng)設(shè)計有關(guān)的實體排除系統(tǒng)外部多余的實體最后,關(guān)鍵抽象成為分析模型中的類
2422確定屬性找出對象的一組有意義的屬性研究系統(tǒng)描述,選擇與對象相關(guān)聯(lián)的信息例:“家庭安全系統(tǒng)”的屬性傳感器信息=傳感器類型+傳感器編號+警報臨界值報警響應(yīng)信息=延遲時間+電話號碼+警報類型起動/撤銷信息=主口令+允許嘗試的次數(shù)+暫時口令標(biāo)識信息=系統(tǒng)表示號+驗證電話號碼+系統(tǒng)狀態(tài)2433定義操作研究系統(tǒng)的需求描述進行語法分析,隔離出動詞選擇與對象相聯(lián)關(guān)的動詞(操作)選擇屬于對象的操作(方法)
例:“家庭安全系統(tǒng)”“傳感器被賦予一個編號和類型”“設(shè)置一個主口令使系統(tǒng)處于警報狀態(tài)或警報解除狀態(tài)”。2444確定對象之間的通信僅定義對象不夠?qū)ο笾g必須建立一種通信機制,即消息作用:要求一個對象執(zhí)行某個操作就要向它發(fā)送一個消息告訴對象做什么245完成對象定義SecuritySystemIDVerificationphonenumberSystemstatusSystemtableSensortypeSensornumberAlarmthresholdAlarmdelaytimeTelephonenumberAlarmtypeMasterpasswordTemporarypassword
ProgramDisplayResetQueryModifyCall
類名屬性操作246
面向?qū)ο蟮能浖O(shè)計247
面向?qū)ο蟮能浖O(shè)計2.系統(tǒng)行為?圖書管理系統(tǒng)的用例圖(1)用例、參與者以及場景(2)用例和參與者關(guān)系以及用例之間的關(guān)系關(guān)聯(lián)關(guān)系248
面向?qū)ο蟮能浖O(shè)計2.系統(tǒng)行為?圖書管理系統(tǒng)的用例圖(1)用例、參與者以及場景(2)用例和參與者關(guān)系以及用例之間的關(guān)系包含關(guān)系一個用例包含另一個用例的行為249
面向?qū)ο蟮能浖O(shè)計2.系統(tǒng)行為?圖書管理系統(tǒng)的用例圖(1)用例、參與者以及場景(2)用例和參與者關(guān)系以及用例之間的關(guān)系擴展關(guān)系基礎(chǔ)用例的增量擴展250
面向?qū)ο蟮能浖O(shè)計2.系統(tǒng)行為?圖書管理系統(tǒng)的用例圖(1)用例、參與者以及場景(2)用例和參與者關(guān)系以及用例之間的關(guān)系泛化關(guān)系子用例是父用例的特例251圖書管理系統(tǒng)的用例圖252圖書管理系統(tǒng)的用例圖253圖書管理系統(tǒng)的用例圖254
面向?qū)ο蟮能浖O(shè)計3.對象交互?圖書管理系統(tǒng)的交互圖(1)順序圖的基本構(gòu)成255
面向?qū)ο蟮能浖O(shè)計3.對象交互?圖書管理系統(tǒng)的交互圖(1)順序圖的基本構(gòu)成(2)如何開發(fā)順序圖確定所有與場景有關(guān)的對象和參與者確定完成場景的消息將消息排序,放在合適的參與者和對象上,標(biāo)示對象生命線256圖書館管理系統(tǒng)中的順序圖257圖書館管理系統(tǒng)中的順序圖258圖書館管理系統(tǒng)中的協(xié)作圖259圖書館管理系統(tǒng)中的協(xié)作圖260圖書館管理系統(tǒng)中的協(xié)作圖261圖書館管理系統(tǒng)中的協(xié)作圖262
面向?qū)ο蟮能浖O(shè)計4.對象行為?圖書管理系統(tǒng)的狀態(tài)圖(1)對象狀態(tài)和狀態(tài)轉(zhuǎn)換263
面向?qū)ο蟮能浖O(shè)計4.對象行為?圖書管理系統(tǒng)的狀態(tài)圖(2)如何開發(fā)狀態(tài)圖選擇狀態(tài)復(fù)雜的關(guān)鍵類辨識類的所有狀態(tài)從初始狀態(tài)開始,按轉(zhuǎn)換順序聯(lián)接狀態(tài),到終止?fàn)顟B(tài)標(biāo)示轉(zhuǎn)換消息264圖書館管理系統(tǒng)的狀態(tài)圖265圖書館管理系統(tǒng)的狀態(tài)圖266小結(jié)系統(tǒng)總體(概要)設(shè)計面向結(jié)構(gòu)化設(shè)計面向?qū)ο笤O(shè)計案例:圖書館管理系統(tǒng)以面向?qū)ο笤O(shè)計方法運用UML建模語言描述了系統(tǒng)設(shè)計的過程267項目六軟件項目詳細(xì)設(shè)計
268項目六主要任務(wù)1.系統(tǒng)詳細(xì)設(shè)計的基本內(nèi)容2.圖書管理系統(tǒng)的詳細(xì)設(shè)計269系統(tǒng)詳細(xì)設(shè)計1.系統(tǒng)詳細(xì)設(shè)計的基本內(nèi)容詳細(xì)設(shè)計概述詳細(xì)設(shè)計的基本任務(wù)詳細(xì)設(shè)計方法2.圖書管理系統(tǒng)的詳細(xì)設(shè)計系統(tǒng)包圖類的類型以及類之間的關(guān)系圖書館管理系統(tǒng)的類圖設(shè)計類圖的開發(fā)270項目六主要任務(wù)3.用戶界面設(shè)計用戶界面設(shè)計應(yīng)具有的特點用戶界面設(shè)計的基本類型和基本原則圖書館管理系統(tǒng)的界面設(shè)計271系統(tǒng)詳細(xì)設(shè)計的基本內(nèi)容1.詳細(xì)設(shè)計概述表達過程規(guī)格說明的工具叫做詳細(xì)設(shè)計工具,它可以分為如下三類。(1)圖形工具把過程的細(xì)節(jié)用圖形方式描述出來。(2)表格工具用一張表來表達過程細(xì)節(jié),這張表列出了各種可能的操作及其相應(yīng)條件,也就是描述了輸入、處理和輸出信息。(3)語言工具用某種高級語言(偽碼)來描述過程細(xì)節(jié)。272系統(tǒng)詳細(xì)設(shè)計的基本內(nèi)容2.詳細(xì)設(shè)計的基本任務(wù)詳細(xì)設(shè)計過程中需要完成的工作主要是確定軟件各個組成部分的算法以及各部分的內(nèi)部數(shù)據(jù)結(jié)構(gòu)和確定各個組成部分的邏輯過程,此外,還要做以下工作。(1)處理方式的設(shè)計(2)物理設(shè)計(3)可靠性設(shè)計(4)其他設(shè)計(5)編寫詳細(xì)設(shè)計說明書(6)詳細(xì)設(shè)計的評審273系統(tǒng)詳細(xì)設(shè)計的基本內(nèi)容3.詳細(xì)設(shè)計方法(1)傳統(tǒng)的詳細(xì)設(shè)計方法圖形符號的設(shè)計方式流程圖(Flowchart)是用圖形化的方式,表示程序中一系列的操作以及執(zhí)行的順序。表格的設(shè)計方式在很多的軟件應(yīng)用中,一個模塊需要對一些條件和基于這些條件下的任務(wù)進行一個復(fù)雜的組合。而決策表(DecisionTable)提供了將條件以及其相關(guān)的任務(wù)組合為表格的一種表達方式。程序設(shè)計語言程序設(shè)計語言(ProgramDesignLanguage)也稱為偽代碼,它使用結(jié)構(gòu)化編程語言的風(fēng)格描述程序算法,但不遵循特定編程語言的語法,程序設(shè)計語言允許用戶在此代碼更高的層次上進行設(shè)計,通常省略與算法無關(guān)的細(xì)節(jié)。274系統(tǒng)詳細(xì)設(shè)計的基本內(nèi)容(2)面向?qū)ο蟮脑敿?xì)設(shè)計算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計算法是設(shè)計對象中每個方法的實現(xiàn)規(guī)格,當(dāng)方法(操作)比較復(fù)雜的時候,算法實現(xiàn)可能需要模塊化。數(shù)據(jù)結(jié)構(gòu)的設(shè)計與算法是同時進行的,因為這個方法(操作)要對類的屬性進行處理。方法(操作)對數(shù)據(jù)進行的處理有很多類,主要包括三類:對數(shù)據(jù)的維護操作(如增、刪、改等);對數(shù)據(jù)進行計算;監(jiān)控對象事件。模塊和接口決定軟件設(shè)計質(zhì)量非常重要的一個方面是模塊,所有模塊最后組成了一個完整的程序。其中復(fù)雜的部分也可以進行再模塊化,同時我們還要定義對象之間的接口和對象的總結(jié)構(gòu)。模塊和接口設(shè)計應(yīng)當(dāng)用類似編程語言的方式表達出來。
275圖書管理系統(tǒng)的詳細(xì)設(shè)計1.系統(tǒng)包圖包圖是一個高層圖在概念上它與結(jié)構(gòu)化方法的系統(tǒng)流程圖很相似。包圖的目標(biāo)是標(biāo)識一個完整系統(tǒng)的主要部分。在一個大的系統(tǒng)中,通常要把許多系統(tǒng)分成很多子系統(tǒng),每個子系統(tǒng)的功能相互之間都是獨立的。2.類的類型以及類之間的關(guān)系(1)類的類型在面向?qū)ο蟮南到y(tǒng)中,對象分為三類:實體類、邊界類和控制類。通過這些對象的合作來實現(xiàn)用例。(2)類之間的關(guān)系276圖書管理系統(tǒng)的詳細(xì)設(shè)計3.圖書館管理系統(tǒng)的類圖4.設(shè)計類圖的開發(fā)(1)決定需要設(shè)計的類(2)找到屬于這個類的所有方法(3)詳細(xì)描述帶有邏輯的方法277
用戶界面設(shè)計1.用戶界面設(shè)計應(yīng)具有的特點(1)可使用性使用的簡單性用戶界面中的術(shù)語標(biāo)準(zhǔn)化和一致性擁有HTML幫助功能速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本用戶界面應(yīng)具有容錯能力、錯誤診斷功能(2)靈活性
算法的可隱可顯性用戶可以根據(jù)需要制定和修改界面形式系統(tǒng)能夠按照用戶的希望和需求,提供不同詳細(xì)程度的系統(tǒng)響應(yīng)信息與其他軟件系統(tǒng)一樣應(yīng)有標(biāo)準(zhǔn)的界面
278用戶界面設(shè)計(3)復(fù)雜性與可靠性用戶界面的規(guī)模和組織的復(fù)雜程度就是界面的復(fù)雜性用戶界面的可靠性是指無故障使用的間隔時間2.用戶界面設(shè)計的基本類型和基本原則(1)用戶界面設(shè)計的基本類型(2)用戶界面設(shè)計的基本原則(3)用戶界面設(shè)計的基本方法(4)繼續(xù)做原型(5)設(shè)計用戶界面類(6)依據(jù)現(xiàn)有圖形用戶界面進行設(shè)計
279用戶界面設(shè)計3.圖書館管理系統(tǒng)的界面設(shè)計(1)用戶登錄界面設(shè)計(2)圖書館管理系統(tǒng)主界面設(shè)計(3)修改圖書記錄界面設(shè)計(4)修改學(xué)生記錄界面設(shè)計(5)生成預(yù)約圖書報表界面設(shè)計(6)生成催還圖書報表界面設(shè)計(7)修改密碼設(shè)置界面設(shè)計(8)圖書服務(wù)系統(tǒng)主界面設(shè)計(9)查詢/借閱/預(yù)約圖書界面設(shè)計(10)查詢個人借閱信息和歸還已借閱圖書界面設(shè)計280小結(jié)項目6講述了詳細(xì)設(shè)計的基本任務(wù)及詳細(xì)設(shè)計的結(jié)構(gòu)化方法及面向?qū)ο蠓椒?根據(jù)面向?qū)Ψ椒ńo出了圖書館管理系統(tǒng)的類的設(shè)計、圖書館管理系統(tǒng)的界面設(shè)計等。完成圖書館管理系統(tǒng)詳細(xì)的整個過程。281項目七軟件項目實現(xiàn)282項目七主要任務(wù)面向?qū)ο蟪绦蛘Z言的概念和特點程序語言的分類程序復(fù)雜度算法283結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計的原則1.自頂向下2.逐步求精3.模塊化4.限制使用goto語句結(jié)構(gòu)化程序設(shè)計的原則
284結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序的基本結(jié)構(gòu)與特點順序結(jié)構(gòu)是一種簡單的程序設(shè)計,它是最基本、最常用的結(jié)構(gòu)。順序結(jié)構(gòu)就是按照程序語句行的自然順序,一條語句一條語句地執(zhí)行程序。選擇結(jié)構(gòu)又稱為分支結(jié)構(gòu),它包括簡單分支結(jié)構(gòu)和多分支結(jié)構(gòu),這種結(jié)構(gòu)可以根據(jù)設(shè)定的條件,判斷應(yīng)該選擇執(zhí)行哪一條分支的語句序列。循環(huán)結(jié)構(gòu)。它根據(jù)給定的條件,判斷是否需要重復(fù)執(zhí)行同一相同的程序段,利用循環(huán)結(jié)構(gòu)可以簡化大量的程序行。在程序設(shè)計語言中,循環(huán)結(jié)構(gòu)對應(yīng)兩類循環(huán)語句,對先判斷后執(zhí)行循環(huán)體的稱為“當(dāng)”型循環(huán)結(jié)構(gòu);對先執(zhí)行循環(huán)體后判斷的稱為“直到”型循環(huán)結(jié)構(gòu)。
結(jié)構(gòu)化程序的基本結(jié)構(gòu)與特點
285結(jié)構(gòu)化程序設(shè)計在結(jié)構(gòu)化程序設(shè)計的具體實施中,要注意把握以下原則和方法1.使用程序設(shè)計語言中的順序、選擇、循環(huán)等有限的控制結(jié)構(gòu)表示程序的控制邏輯。2.選用的控制結(jié)構(gòu)只允許有一個入口和一個出口。3.程序語句組成容易識別的語句序列塊,每塊只允許有一個入口和一個出口。4.復(fù)雜結(jié)構(gòu)的程序設(shè)計時,僅用嵌套的基本控制結(jié)構(gòu)進行組合嵌套來實現(xiàn)。5.嚴(yán)格控制GOTO語句的使用。
結(jié)構(gòu)化程序設(shè)計原則和方法
286面向?qū)ο蟪绦蛟O(shè)計287面向?qū)ο蟪绦蛟O(shè)計1.抽象即去掉與主題無關(guān)的次要部分,而僅僅抽象取出與工作有關(guān)的實質(zhì)的內(nèi)容加以研究。計算機技術(shù)常用的抽象分為過程抽象與數(shù)據(jù)抽象。(1)過程抽象。將整個系統(tǒng)的功能劃分成為若干部分,強調(diào)功能完成的過程和步驟。面向過程的程序設(shè)計就采用這種方法。(2)數(shù)據(jù)抽象。與過程抽象不同的抽象方法,它把系統(tǒng)中需要處理的數(shù)據(jù)和這些數(shù)據(jù)的的操作結(jié)合在一起,根據(jù)功能、性質(zhì)、作用等因素抽象成不同的抽象數(shù)據(jù)類型,每個數(shù)據(jù)類型即包括了數(shù)據(jù),又包括了針對這些數(shù)據(jù)的操作。數(shù)據(jù)抽象和封裝
288面向?qū)ο蟪绦蛟O(shè)計2.封裝就是利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護在抽象數(shù)據(jù)類型的內(nèi)部,系統(tǒng)的其它部分只有通過封裝在數(shù)據(jù)外部的被授權(quán)的操作,才能夠與這個抽象數(shù)據(jù)類型進行交流。
在面向?qū)ο缶幊?OOP)中,抽象數(shù)據(jù)類型是利用類這種結(jié)構(gòu)來實現(xiàn)的,每個類里面封裝了相關(guān)的數(shù)據(jù)和操作。在實際的開發(fā)過程中,類用來構(gòu)建系統(tǒng)內(nèi)部的模塊,由于封裝性把類內(nèi)的數(shù)據(jù)保護得很好,模塊與模塊間僅僅通過嚴(yán)格控制的界面進行交互,使它們之間的耦合和交叉大大減少,從而降低了開發(fā)過程的復(fù)雜性,提高效率和質(zhì)量,減少了可能的錯誤,同時也保證了程序中數(shù)據(jù)的完整性和安全性。
數(shù)據(jù)抽象和封裝
289面向?qū)ο蟪绦蛟O(shè)計繼承是指這樣一種能力:它可以使用現(xiàn)有類的所有功能,并在無需重新編寫原來的類的情況下對這些功能進行擴展。通過繼承創(chuàng)建的新類稱為”子類”或”派生類”。被繼承的類稱為“基類”、“父類”或”超類”。繼承的過程,就是從一般到特殊的過程。繼承概念的實現(xiàn)方式有三類:實現(xiàn)繼承、接口繼承和可視繼承。實現(xiàn)繼承是指使用基類的屬性和方法而無需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現(xiàn)的能力;可視繼承是指子窗體(類)使用基窗體(類)的外觀和實現(xiàn)代碼的能力。繼承290代碼這樣來產(chǎn)生多態(tài)
291面向?qū)ο蟪绦蛟O(shè)計多態(tài)性(Polymorphisn)是允許你將父對象設(shè)置成為一個或更多的他的子對象的技術(shù),賦值之后,父對象就可以根據(jù)當(dāng)前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。實現(xiàn)多態(tài),有二種方式,覆蓋,重載。1.覆蓋覆蓋是指子類重新定義父類的函數(shù)的做法。2.重載重載是指允許存在多個同名函數(shù),而這些函數(shù)的參數(shù)表不同(或許參數(shù)個數(shù)不同,或許參數(shù)類型不同,或許兩者都不同)。
多態(tài)
292程序設(shè)計語言程序設(shè)計語言通常簡稱為編程語言,是一組用來定義計算機程序的語法規(guī)則。一種計算機語言讓程序員能夠準(zhǔn)確地定義計算機所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動。程序設(shè)計語言原本是被設(shè)計成專門使用在計算機上的,但它們也可以用來定義算法或者數(shù)據(jù)結(jié)構(gòu)。正是因為如此,程序員才試圖使程序代碼更容易閱讀。程序設(shè)計語言
293程序設(shè)計語言從發(fā)展歷程來看,程序設(shè)計語言可以分為4代。1.第一代語言(機器語言)
2.第二代語言(匯編語言)3.第三代語言(高級語言)高級語言是面向用戶的、基本上獨立于計算機種類和結(jié)構(gòu)的語言。4.第四代語言(簡稱4GL)4GL是非過程化語言,編碼時只需說明“做什么”,不需描述算法細(xì)節(jié)。數(shù)據(jù)庫查詢和應(yīng)用程序生成器是4GL的兩個典型應(yīng)用。程序設(shè)計語言分類294程序復(fù)雜度一般情況下,算法的基本操作重復(fù)執(zhí)行的次數(shù)是模塊n的某一個函數(shù)f(n),因此,算法的時間復(fù)雜度記做:T(n)=O(f(n))隨著模塊n的增大,算法執(zhí)行的時間的增長率和f(n)的增長率成正比,所以f(n)越小,算法的時間復(fù)雜度越低,算法的效率越高。在計算時間復(fù)雜度的時候,先找出算法的基本操作,然后根據(jù)相應(yīng)的各語句確定它的執(zhí)行次數(shù),再找出T(n)的同數(shù)量級(它的同數(shù)量級有以下:1,Log2n,n,nLog2n,n的平方,n的三次方,2的n次方,n?。页龊?,f(n)=該數(shù)量級,若T(n)/f(n)求極限可得到一常數(shù)c,則時間復(fù)雜度T(n)=O(f(n))時間復(fù)雜度
295程序復(fù)雜度空間復(fù)雜度是程序運行所以需要的額外消耗存儲空間,也用O()來表示。算法中基本操作的執(zhí)行次數(shù)一般是與問題規(guī)模有關(guān)的。對于結(jié)點個數(shù)為n的數(shù)據(jù)處理問題,用T(n)表示算法中基本操作的執(zhí)行次數(shù)。在評價算法的時間復(fù)雜性時,不考慮兩算法執(zhí)行次數(shù)之間的細(xì)小區(qū)別,而只關(guān)心算法的本質(zhì)差別。為此,引入一個所謂的O()號,則T1(n)=2n=O(n),T2(n)=n+1=O(n)。一個函數(shù)f(n)是O(g(n))的,則一定存在正常數(shù)c和m,使對所有的n>m,都滿足f(n)<c*g(n)??臻g復(fù)雜度
296項目八軟件測試297項目八主要任務(wù)了解軟件測試的目的和原則。了解軟件錯誤的分類。理解軟件測試的過程和策略。掌握程序靜態(tài)測試的方法。了解程序調(diào)試的概念。掌握軟件測試中的可靠性分析方法298軟件測試基礎(chǔ)什么是軟件測試
299軟件測試基礎(chǔ)軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。或者說,軟件測試是根據(jù)軟件開發(fā)各階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計一批測試用例(即輸入數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些測試用例去運行程序,以發(fā)現(xiàn)程序錯誤的過程。軟件測試在軟件生命周期中橫跨兩個階段:通常在編寫出每一個模塊之后就對它做必要的測試(稱為單元測試)。模塊的編寫者與測試者是同一個人。編碼與單元測試屬于軟件生命周期中的同一個階段。在這個階段結(jié)束之后,對軟件系統(tǒng)還要進行各種綜合測試,這是軟件生命周期的另一個獨立的階段,即測試階段,通常由專門的測試人員承擔(dān)這項工作。什么是軟件測試
300軟件測試基礎(chǔ)1.軟件測試的目的GrenfordJ.Myers就軟件測試目的提出以下觀點:(1)測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;(2)一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;(3)一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。設(shè)計測試的目標(biāo)是以最少的時間和人力,系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷。如果我們成功地實施了測試,就能夠發(fā)現(xiàn)軟件中的錯誤。測試的附帶收獲是,它能夠證明軟件的功能和性能與需求說明相符合。此外,實施測試收集到的測試結(jié)果數(shù)據(jù)為可靠性分析提供了依據(jù)軟件測試的目的和原則
301軟件測試基礎(chǔ)2.軟件測試的原則(1)應(yīng)當(dāng)把“盡早地和不斷地進行軟件測試”作為軟件開發(fā)者的座右銘。(2)測試用例應(yīng)由測試輸入數(shù)據(jù)和與之對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成。(3)程序員應(yīng)避免檢查自己的程序。(4)在設(shè)計測試用例時,應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件。(5)充分注意測試中的群集現(xiàn)象。(6)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性。(7)應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查。(8)妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。軟件測試的目的和原則
302軟件測試基礎(chǔ)1.按錯誤的影響和后果分類(1)較小錯誤(2)中等錯誤(3)較嚴(yán)重錯誤(4)嚴(yán)重錯誤(5)非常嚴(yán)重的錯誤(6)最嚴(yán)重的錯誤程序錯誤分類
303軟件測試基礎(chǔ)2.按錯誤的性質(zhì)和范圍分類(1)功能錯誤(2)系統(tǒng)錯誤(3)加工錯誤(4)數(shù)據(jù)錯誤(5)代碼錯誤程序錯誤分類
304軟件測試方法1.黑盒測試根據(jù)軟件產(chǎn)品的功能設(shè)計規(guī)格,在計算機上進行測試,以證實每個實現(xiàn)了的功能是否符合要求。這種測試方法就是黑盒測試。2.白盒測試根據(jù)軟件產(chǎn)品的內(nèi)部工作過程,在計算機上進行測試,以證實每種內(nèi)部操作是否符合設(shè)計規(guī)格要求,所有內(nèi)部成分是否已經(jīng)過檢查。這種測試方法就是白盒測試。
黑盒測試和白盒測試
305軟件測試方法測試過程按4個步驟進行,即單元測試、組裝測試、確認(rèn)測試和系統(tǒng)測試。單元測試集中對用源代碼實現(xiàn)的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現(xiàn)了規(guī)定的功能。然后進行集成測試,根據(jù)設(shè)計規(guī)定的軟件體系結(jié)構(gòu),把已測試過的模塊組裝起來。在組裝過程中,檢查程序結(jié)構(gòu)組裝的正確性。確認(rèn)測試則是要檢查已實現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以及軟件配置是否完全、正確。最后是系統(tǒng)測試,把已經(jīng)經(jīng)過確認(rèn)的軟件納入實際運行環(huán)境中,與其它系統(tǒng)成份組合在一起進行測試。軟件測試步驟
306面向?qū)ο筌浖y試面向?qū)ο蟪绦蚴前压δ艿膶崿F(xiàn)分布在類中。能正確實現(xiàn)功能的類,通過消息傳遞來協(xié)同實現(xiàn)設(shè)計要求的功能。正是這種面向?qū)ο蟪绦蝻L(fēng)格,能夠?qū)⒊霈F(xiàn)的錯誤能精確定位在某一具體的類。因此,在面向?qū)ο缶幊蹋∣OP)階段,忽略類功能實現(xiàn)的細(xì)則,將測試集中在類功能的實現(xiàn)和相應(yīng)的面向?qū)ο蟪绦颍饕w現(xiàn)在兩個方面:1.?dāng)?shù)據(jù)成員是否滿足數(shù)據(jù)封裝的要求2.類是否實現(xiàn)了要求的功能
面向?qū)ο筌浖y試定義
307面向?qū)ο筌浖y試測試計劃主要包含以下內(nèi)容:測試范圍、測試策略
、測試類型、測試工具、測試資源、異常事項的處理等制定測試計劃注意以下幾點:1、計劃寧可時間多一些,也不要少2、測試計劃要根據(jù)具體情況來確定3、計劃隨著工作的開展進行修改4、要按照計劃來執(zhí)行測試計劃
308面向?qū)ο筌浖y試1.面向?qū)ο蟮膯卧獪y試面向?qū)ο髥卧獪y試主要考慮兩個方面的問題:
(1)繼承的成員函數(shù)是否需要測試(2)對父類的測試是否能照搬到子類2.面向?qū)ο蠹蓽y試面向?qū)ο蟮募蓽y試能夠檢測出相對獨立的單元測試無法檢測出、類相互作用才會產(chǎn)生的錯誤?;趩卧獪y試對成員函數(shù)行為正確性的保證,集成測試只關(guān)注于系統(tǒng)的結(jié)構(gòu)和內(nèi)部的相互作用。面向?qū)ο蟮募蓽y試可以分成兩步進行:先進行靜態(tài)測試,再進行動態(tài)測試。面向?qū)ο蟮臏y試
309面向?qū)ο筌浖y試3.面向?qū)ο蟮南到y(tǒng)測試系統(tǒng)測試是對測試步驟的抽象描述,它體現(xiàn)的具體測試內(nèi)容包括:(1)功能測試(2)強度測試(3)性能測試(4)安全測試(5)恢復(fù)測試(6)可用性測試面向?qū)ο蟮臏y試
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公廁勞務(wù)合同范例
- 農(nóng)戶代銷售合同范例
- 個體肉店合作合同范例
- 書店購銷合同范例
- 中招聯(lián)盟合同范例
- 農(nóng)村水田互換合同范例
- 公務(wù)用車合同范例
- 代理二手車買賣合同范例
- 2013合同范本實施日期
- 分體空調(diào)維修合同范例
- 2024年新課標(biāo)卷高考化學(xué)試卷試題真題答案詳解(精校打印版)
- 音頻功率放大器的設(shè)計與實現(xiàn)
- 2024年高等教育文學(xué)類自考-01210對外漢語教學(xué)法考試近5年真題集錦(頻考類試題)帶答案
- 《長江流域》習(xí)題課件
- 廠房鋼結(jié)構(gòu)施工組織設(shè)計
- 部編四下語文《千年夢圓在今朝》公開課教案教學(xué)設(shè)計【一等獎】
- 2024年教師編制考試教育理論綜合基礎(chǔ)知識復(fù)習(xí)題庫及答案(共300題)
- 部編版三年級《習(xí)作我做了一項小實驗》教案
- 外墻粉刷施工安全協(xié)議書
- 智能制造市場現(xiàn)狀及發(fā)展前景分析報告
- (高清版)WST 406-2024 臨床血液檢驗常用項目分析質(zhì)量標(biāo)準(zhǔn)
評論
0/150
提交評論