软件工程学习笔记(考试版)
?
軟?件?工?程?筆?記
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
第一章?
2?一個(gè)軟件產(chǎn)品必須由一個(gè)完整的配置組成,軟件配置主要包括:程序,數(shù)據(jù)及相關(guān)文檔。程序是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠適當(dāng)?shù)奶幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu);文檔是開(kāi)發(fā)使用和維護(hù)程序所需要的圖文資料。
2?軟件危機(jī)的定義:軟件危機(jī)是指在計(jì)算機(jī)軟件開(kāi)發(fā)、使用、維護(hù)過(guò)程中遇到的一系列嚴(yán)重問(wèn)題和難題。它包括兩方面:1.如何開(kāi)發(fā)軟件以滿足對(duì)軟件日益增長(zhǎng)的要求 2.如何維護(hù)數(shù)量不斷膨脹的已有軟件
2?軟件危機(jī)的具體表現(xiàn):1. 對(duì)軟件開(kāi)發(fā)成本和進(jìn)度的估計(jì)往往很不準(zhǔn)確
2.?用戶對(duì)“已完成”的軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生
3.?軟件產(chǎn)品的質(zhì)量往往靠不住
4.?軟件常常是不可維護(hù)的
5.?軟件通常沒(méi)有是適當(dāng)?shù)奈臋n資料
6.?軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升
7.?軟件開(kāi)發(fā)生產(chǎn)率提高的速度往往跟不上計(jì)算機(jī)應(yīng)用迅速普及的深入的速度
2?軟件危機(jī)出現(xiàn)的原因:1. 來(lái)自軟件自身的特點(diǎn)。是邏輯部件缺乏可見(jiàn)性;規(guī)
????????????????????????模龐復(fù)雜,修改維護(hù)困難
2.?軟件開(kāi)發(fā)與維護(hù)的方法不當(dāng)。忽視需求分析;認(rèn)為軟件開(kāi)發(fā)等于程序編寫;輕視軟件維護(hù)
3.?供求矛盾將是一個(gè)永恒的主題。面對(duì)日益增長(zhǎng)的軟件需求,人們顯得力不從心
2?軟件工程的定義:軟件工程是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理。、技術(shù)和方法來(lái)開(kāi)發(fā)和維護(hù)軟件,把經(jīng)過(guò)時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠的到的最好的技術(shù)方法結(jié)合起來(lái),以經(jīng)濟(jì)的開(kāi)發(fā)出高質(zhì)量的軟件并有效的維護(hù)它,這就是軟件工程。
2?IEEE對(duì)軟件工程的定義:軟件工程是1把系統(tǒng)的,規(guī)范的,可度量的途徑應(yīng)用于軟件開(kāi)發(fā)、運(yùn)行和維護(hù)過(guò)程,也就是把工程應(yīng)用于軟件;2研究1中所提到的途徑。
2?軟件工程的本質(zhì)特征:1. 軟件工程關(guān)注于大型程序的構(gòu)造
2.?軟件工程的中心課題是控制復(fù)雜度
3.?軟件經(jīng)常變化
4.?開(kāi)發(fā)軟件的效率非常重要
5.?和諧的合作是開(kāi)發(fā)軟件的關(guān)鍵
6.?軟件必須有效的支持他的用戶
7.?在軟件工程領(lǐng)域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品
2?消除軟件危機(jī)的途徑:1. 對(duì)計(jì)算機(jī)軟件有一個(gè)正確的認(rèn)識(shí)(軟件!=程序)
2.?必須充分認(rèn)識(shí)到軟件開(kāi)發(fā)不是某種個(gè)體勞動(dòng)的神秘技巧,而應(yīng)該是一種組織良好、結(jié)構(gòu)嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目
3.?推廣使用在實(shí)踐中總結(jié)出來(lái)的開(kāi)發(fā)軟件的成功技術(shù)和方法
4.?開(kāi)發(fā)和使用良好的軟件工具
2?軟件工程的基本原理:1. 用分階段的生命周期計(jì)劃嚴(yán)格管理
2.?堅(jiān)持進(jìn)行階段評(píng)審
3.?實(shí)行嚴(yán)格的產(chǎn)品控制
4.?采用現(xiàn)代程序設(shè)計(jì)技術(shù)
5.?結(jié)果應(yīng)該清楚的審查
6.?開(kāi)發(fā)小組的人員應(yīng)該少而精
7.?承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性
2?軟件工程包括(管理)和(技術(shù))兩方面的內(nèi)容
2?軟件工程方法學(xué)定義:通常把在軟件生命周期全過(guò)程中使用的一整套技術(shù)方法的集合稱為軟件工程方法學(xué)。
2?軟件工程方法學(xué)包含三個(gè)因素:方法、工具和過(guò)程
2?軟件工程方法學(xué)分為傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)和面向?qū)ο蠓椒▽W(xué)(面向?qū)ο蠓缎?#xff09;
2?面向?qū)ο蠓缎偷囊c(diǎn):1. 把對(duì)象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)
???????????????????????一的軟件構(gòu)件
2.?把所有的對(duì)象都劃分成類
3.?按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))
4.?對(duì)象彼此間僅能通過(guò)發(fā)送消息互相聯(lián)系
2?結(jié)構(gòu)化范型的優(yōu)點(diǎn):把軟件生命周期劃分為若干個(gè)階段,每個(gè)階段的任務(wù)相對(duì)獨(dú)立,而且比較簡(jiǎn)單,便于不同人員的分工協(xié)作,從而降低了整個(gè)軟件開(kāi)發(fā)過(guò)程的困難程度
2?結(jié)構(gòu)化范型的缺點(diǎn):當(dāng)軟件規(guī)模龐大時(shí),或者對(duì)軟件的需求是模糊的或會(huì)因?yàn)闀r(shí)間而變化時(shí),開(kāi)發(fā)出的軟件往往不成功,而且維護(hù)起來(lái)依然很困難
2?面向?qū)ο蠓缎偷膬?yōu)點(diǎn):降低了軟件產(chǎn)品的復(fù)雜性,提高了軟件的可理解性,簡(jiǎn)化了軟件的開(kāi)發(fā)和維護(hù)工作,促進(jìn)了軟件重用
2?軟件工程與軟件工程方法學(xué)有何關(guān)系:軟件工程是為了開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品所需完成的一系列任務(wù)的框架,他規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。而后者,通常把在軟件生命周期全過(guò)程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱范型。 ?軟件工程是軟件工程方法學(xué)的三個(gè)重要組成部分之一。
2?什么是軟件生命周期模型:軟件生命周期模型是跨越整個(gè)生存期的系統(tǒng)開(kāi)發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。
2?軟件生命周期模型由:軟件定義(問(wèn)題定義,可行性研究,需求分析);軟件開(kāi)發(fā)(總體設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼與單元設(shè)計(jì),綜合測(cè)試);運(yùn)行維護(hù)
2?軟件定義階段要回答的關(guān)鍵問(wèn)題是“要解決的問(wèn)題是什么”可行性研究階段要回答的關(guān)鍵問(wèn)題是“對(duì)于上一個(gè)階段所確定的問(wèn)題有行得通的解決辦法嗎”需求分析階段的任務(wù)仍不是解決問(wèn)題而是準(zhǔn)確的確定“為了解決這個(gè)問(wèn)題,目標(biāo)系統(tǒng)必須做什么”總體設(shè)計(jì)階段回答的關(guān)鍵問(wèn)題是“概括的說(shuō)應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)”詳細(xì)設(shè)計(jì)階段把解法具體化回答“應(yīng)該怎樣具體的實(shí)現(xiàn)這個(gè)系統(tǒng)呢”編碼和單元測(cè)試的關(guān)鍵任務(wù)時(shí)寫出正確的容易理解、容易維護(hù)的程序模塊綜合測(cè)試的關(guān)鍵任務(wù)是通過(guò)各種類型的測(cè)試(及相應(yīng)的調(diào)試)使軟件達(dá)到預(yù)定的要求
2?運(yùn)行維護(hù)的實(shí)質(zhì)(對(duì)比可行性研究實(shí)質(zhì)):一次壓縮和簡(jiǎn)化了的定義和開(kāi)發(fā)過(guò)程。維護(hù)時(shí)期不在進(jìn)一步劃分階段
2?瀑布模型的優(yōu)點(diǎn):它提供了一個(gè)模板,這個(gè)模板使得分析、設(shè)計(jì)、編碼、測(cè)試和支持的方法可以在該模板下有一個(gè)共同的指導(dǎo)。雖然有不少缺陷,但比在軟件開(kāi)發(fā)過(guò)程中隨意的狀態(tài)要好的多
2?瀑布模型的缺點(diǎn):1. 實(shí)際的項(xiàng)目大部分情況難以按照該模型給出的順序執(zhí)行
???????????????????,而且這種模型的迭代是間接的,這很容易由微小的變化
???????????????????而造成大的混亂
2.?經(jīng)常情況下客戶難以表達(dá)真正的需求,而這種模型卻要求如此,這種模型是不歡迎二義性存在的
3.?客戶要等到開(kāi)發(fā)的晚期才能看到程序運(yùn)行的測(cè)試版本,而在這是發(fā)現(xiàn)大的錯(cuò)誤時(shí),可能引起客戶的驚慌,而后果也可能是災(zāi)難性的
2?瀑布模型的特點(diǎn):1. 階段間具有順序性與依賴性
2.?推遲實(shí)現(xiàn)的觀點(diǎn)
3.?質(zhì)量保證的觀點(diǎn)(1>每個(gè)階段都必須完成規(guī)定的文檔2每個(gè)階段結(jié)束前都應(yīng)該對(duì)所完成的文檔進(jìn)行評(píng)審,以便盡早發(fā)現(xiàn)問(wèn)題,改正錯(cuò)誤)
2?快速原型模型優(yōu)點(diǎn):使用戶能夠感受到實(shí)際的系統(tǒng),使開(kāi)發(fā)者能夠快速的構(gòu)造出系統(tǒng)的框架
2?快速原型模型的缺點(diǎn):產(chǎn)品的先天性不足,因?yàn)殚_(kāi)發(fā)者常常需要做實(shí)現(xiàn)上的折中,可能采用不合適的操作系統(tǒng)或程序設(shè)計(jì)語(yǔ)言,以使原型能夠盡快工作
2?增量模型的優(yōu)點(diǎn):1. 人員分配靈活,剛開(kāi)始不用投入大量的人力資源,當(dāng)核
????????????????????心產(chǎn)品很受歡迎時(shí),可增加人力實(shí)現(xiàn)下一個(gè)增量
2.?當(dāng)配備的人員不能在設(shè)定的期限內(nèi)完成產(chǎn)品時(shí),他提供了一種先推出核心產(chǎn)品的途徑,這樣就可以先發(fā)布部分功能給客戶,對(duì)客戶起到鎮(zhèn)定劑的作用。
2?增量模型的缺點(diǎn):自始至終開(kāi)發(fā)者和客戶糾纏在一起,知道完全版本出來(lái),適用于軟件需求不明確,設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目
2?增量模型最佳分解的方法因軟件產(chǎn)品特點(diǎn)和開(kāi)發(fā)人員的習(xí)慣而異。分解時(shí)唯一必須遵守的約束條件是,當(dāng)把新構(gòu)件集成到現(xiàn)有軟件中時(shí),所形成的產(chǎn)品必須是可測(cè)試的
2?螺旋模型的基本思想:使用原型及其他方法來(lái)盡量降低風(fēng)險(xiǎn)
2?螺旋模型的優(yōu)點(diǎn):對(duì)于大型系統(tǒng)及軟件的開(kāi)發(fā),這種模型是一個(gè)很好的方法,開(kāi)發(fā)者和客戶能夠較好的對(duì)待和理解每一個(gè)演化級(jí)別上的風(fēng)險(xiǎn)
2?螺旋模型的缺點(diǎn):1 需要相當(dāng)?shù)娘L(fēng)險(xiǎn)分析評(píng)估的專門技術(shù),且成功依賴于這
???????????????????種技術(shù)。
2 很明顯,一個(gè)大的沒(méi)有被發(fā)現(xiàn)的風(fēng)險(xiǎn)問(wèn)題將會(huì)導(dǎo)致問(wèn)題的發(fā)生,可能導(dǎo)致演化的方法失去控制
3 這種模型相對(duì)比較新,應(yīng)用不廣泛,其功效需要進(jìn)一步驗(yàn)證
????適用于內(nèi)部開(kāi)發(fā)的大規(guī)模軟件項(xiàng)目
2?需求分析階段應(yīng)該用正式的文檔準(zhǔn)確地記錄對(duì)目標(biāo)系統(tǒng)的需求,這份文檔通常稱為“規(guī)格說(shuō)明書”
2?螺旋模型=瀑布模型+增量模型
2?螺旋模型由風(fēng)險(xiǎn)驅(qū)動(dòng)
2?為什么說(shuō)噴泉模型較好的體現(xiàn)了面向?qū)ο筌浖_(kāi)發(fā)過(guò)程無(wú)縫和迭代的特性?
因?yàn)槭褂妹嫦驅(qū)ο蠓椒▽W(xué)開(kāi)發(fā)軟件時(shí),各個(gè)階段都使用統(tǒng)一的概念和表示符號(hào),因此,整個(gè)開(kāi)發(fā)過(guò)程都是吻合一致的,或者說(shuō)是無(wú)縫連接的,這自然就很容易實(shí)現(xiàn)各個(gè)開(kāi)發(fā)步驟的反復(fù)多次迭代,達(dá)到認(rèn)識(shí)的逐步深化,而噴泉模型則很好的體現(xiàn)了面向?qū)ο筌浖_(kāi)發(fā)過(guò)程迭代和無(wú)縫的特性。
2?Rational統(tǒng)一過(guò)程的優(yōu)點(diǎn):提高團(tuán)隊(duì)生產(chǎn)力,在迭代的開(kāi)發(fā)過(guò)程、需求管理、基于組件的體系結(jié)構(gòu)、可視化軟件建模、驗(yàn)證軟件質(zhì)量及控制軟件變更等方面,針對(duì)所有關(guān)鍵的開(kāi)發(fā)活動(dòng)為每個(gè)開(kāi)發(fā)成員提供了必要的準(zhǔn)則。模板和工具指導(dǎo),并確保全體成員共享相同的知識(shí)基礎(chǔ)。他建立了簡(jiǎn)潔和清晰的過(guò)程結(jié)構(gòu),為開(kāi)發(fā)過(guò)程提供較大的通用性。
2?Rational統(tǒng)一過(guò)程的缺點(diǎn):RUP只是一個(gè)開(kāi)發(fā)過(guò)程,并沒(méi)有涵蓋軟件過(guò)程的全部?jī)?nèi)容,例如它缺少關(guān)于軟件運(yùn)行和支持等方面的內(nèi)容,此外,他沒(méi)有支持多項(xiàng)目的開(kāi)發(fā)結(jié)構(gòu),這在一定程度上降低了在開(kāi)發(fā)組織內(nèi)大范圍實(shí)現(xiàn)重用的可能性。
2?Rational統(tǒng)一過(guò)程主要適用于“大型的需求不斷變化的復(fù)雜軟件系統(tǒng)項(xiàng)目”
2?敏捷過(guò)程適用于“商業(yè)競(jìng)爭(zhēng)環(huán)境下對(duì)小型項(xiàng)目提出的有限資源和有限開(kāi)發(fā)時(shí)間的約束”
2?微軟過(guò)程適用于“商業(yè)環(huán)境下具有有限資源和有限開(kāi)發(fā)時(shí)間約束的項(xiàng)目的軟件過(guò)程模式”
第二章
v?可行性研究的必要性(原因):開(kāi)發(fā)一個(gè)軟件時(shí),需要判斷原定的系統(tǒng)模型和目標(biāo)是否實(shí)現(xiàn),系統(tǒng)完成后所能帶來(lái)的效益是否大到值得開(kāi)發(fā)投資這個(gè)系統(tǒng)的程度,如果做不到這些,那么花費(fèi)在這個(gè)工程上的任何時(shí)間、人力、軟硬件資源和經(jīng)費(fèi)都是無(wú)謂的浪費(fèi)。可行新研究的實(shí)質(zhì)是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過(guò)程,可行性研究的目的是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否能夠解決。
v?可行性研究的目的:用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否能夠解決。
v?可行性研究的目的(不是)解決問(wèn)題
v?可行性研究的實(shí)質(zhì):進(jìn)行一次大大壓縮簡(jiǎn)化了的系統(tǒng)分析與設(shè)計(jì)的過(guò)程,也就是在較高層次上以較抽象的方式進(jìn)行的系統(tǒng)分析和設(shè)計(jì)的過(guò)程。
v?可行性研究的內(nèi)容:1. 技術(shù)可行性(對(duì)要開(kāi)發(fā)項(xiàng)目的功能、性能和限制條件進(jìn)行分析,確定在現(xiàn)有的資源條件下,技術(shù)風(fēng)險(xiǎn)有多大,項(xiàng)目能否實(shí)現(xiàn))
2.?經(jīng)濟(jì)可行性(進(jìn)行開(kāi)發(fā)成本的估算以及了解取得效益的評(píng)估,確定要開(kāi)發(fā)的項(xiàng)目是否值得投資開(kāi)發(fā))
3.?操作可行性(系統(tǒng)的操作方式在這個(gè)用戶組織內(nèi)是否行得通)
4.?社會(huì)可行性
5.?社會(huì)效益
6.?法律
v?可行性研究的任務(wù):對(duì)以后的行動(dòng)方針提出建議。
v?可行性研究時(shí)間的長(zhǎng)短取決于(工程的規(guī)模)
v?可行性研究的成本是預(yù)計(jì)的工程總成本的(5%~10%)
v?可行性研究的過(guò)程:1. 復(fù)查系統(tǒng)規(guī)模與目標(biāo)(確保分析員正在解決的問(wèn)題時(shí)要求他
????????????????????????解決的問(wèn)題)
2.?研究正在使用的系統(tǒng)
3.?導(dǎo)出新系統(tǒng)的高層邏輯模型
4.?進(jìn)一步定義問(wèn)題(根據(jù)邏輯模型 與用戶一起發(fā)現(xiàn)和改正錯(cuò)誤)
前四步構(gòu)成了一個(gè)循環(huán)
5.?導(dǎo)出和評(píng)價(jià)供選擇的解法
6.?推薦行動(dòng)方針
7.?草擬開(kāi)發(fā)計(jì)劃(給出需求分析階段的進(jìn)度表)
8.?書寫文檔提交審查
v?邏輯模型包括:數(shù)據(jù)流圖和數(shù)據(jù)字典
v?(擬定開(kāi)發(fā)計(jì)劃)階段擬定需求分析進(jìn)度表
系統(tǒng)流程圖
v?數(shù)據(jù)流圖(DFD)是一種圖形化技術(shù),他描述信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過(guò)程中經(jīng)受的變化
v?設(shè)計(jì)數(shù)據(jù)流圖時(shí)只需要考慮系統(tǒng)必須完成的基本邏輯功能
v?數(shù)據(jù)流圖中應(yīng)該描繪出(所有可能的數(shù)據(jù)流向),而(不應(yīng)該)描繪出現(xiàn)某個(gè)數(shù)據(jù)流的條件
v?數(shù)據(jù)流圖中忽略出錯(cuò)處理
v?星號(hào)(*)表示“與”的關(guān)系 ?加號(hào)(+)表示“或”的關(guān)系 ?圓圈加表示互斥的關(guān)系
v?數(shù)據(jù)流圖有四個(gè)成分:源點(diǎn)或終點(diǎn) ?處理 數(shù)據(jù)存儲(chǔ) ?數(shù)據(jù)流
v?數(shù)據(jù)流圖命名是先為(數(shù)據(jù)流)命名再為(處理)命名 如果對(duì)數(shù)據(jù)流命名是遇到了困難 可能是對(duì)數(shù)據(jù)流圖分解的不恰當(dāng)
v?數(shù)據(jù)流圖中的處理應(yīng)不超過(guò)(9)個(gè) ?超過(guò)時(shí)就不易理解 應(yīng)分層或畫分圖
v?數(shù)據(jù)流圖的作用:1. 交流信息的工具。分析員把他對(duì)現(xiàn)有系統(tǒng)或?qū)δ繕?biāo)系統(tǒng)的設(shè)想用數(shù)據(jù)流圖描繪出來(lái),供有關(guān)人員審查確認(rèn)
2.?作為分析和設(shè)計(jì)的工具
?
v?數(shù)據(jù)字典定義:數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合
v?數(shù)據(jù)字典的作用:作為分析階段的工具,在軟件分析和設(shè)計(jì)的過(guò)程中給人提供關(guān)于數(shù)據(jù)的描述的信息
v?邏輯模型包括:數(shù)據(jù)流圖 ?數(shù)據(jù)字典
v?數(shù)據(jù)字典的內(nèi)容:1.數(shù)據(jù)流 2.數(shù)據(jù)流分量 3.數(shù)據(jù)存儲(chǔ) 4.處理(對(duì)比數(shù)據(jù)流圖四成分)
v?數(shù)據(jù)字典主要由對(duì)數(shù)據(jù)的定義組成,因?yàn)閷?duì)數(shù)據(jù)的處理用其他工具(IPO圖或PDL)描述更方便
v?數(shù)據(jù)字典中對(duì)數(shù)據(jù)的定義主要包括:一般信息,定義,使用特點(diǎn),控制信息,分組信息
v?數(shù)據(jù)字典中數(shù)據(jù)定義的實(shí)質(zhì)是:對(duì)數(shù)據(jù)進(jìn)行一次自頂向下的分解
v?數(shù)據(jù)元素組成數(shù)據(jù)的方式有四種:順序 ?重復(fù) ?選擇 ?可選
v?= ?等價(jià)于/定義為
v?+ ?和/連接兩個(gè)分量
v?[ ?] ?選擇一個(gè) ?通常用‘|’隔開(kāi)供選擇的分量
v?{ ?} ?重復(fù) 重復(fù)花括號(hào)內(nèi)的分量 ?有上下界 表示重復(fù)次數(shù)的上下界
v?( ?) ?可選 即圓括號(hào)內(nèi)的分量可有可無(wú)
v?成本效益分析的目的是:從經(jīng)濟(jì)角度分析開(kāi)發(fā)一個(gè)新系統(tǒng)是否劃算,從而幫助客戶組織的負(fù)責(zé)人正解的做出是否投資于這項(xiàng)開(kāi)發(fā)工程的決定
v?成本估計(jì)技術(shù):代碼行技術(shù) ?任務(wù)分解技術(shù) ?自動(dòng)估計(jì)成本技術(shù)
v?數(shù)據(jù)流圖與數(shù)據(jù)字典的關(guān)系:數(shù)據(jù)流圖與數(shù)據(jù)字典共同構(gòu)成系統(tǒng)的邏輯模型,沒(méi)有數(shù)據(jù)字典,數(shù)據(jù)流圖就不嚴(yán)格,沒(méi)有數(shù)據(jù)流圖,數(shù)據(jù)字典也難以發(fā)揮作用
第三章
ü?需求分析的目的/意義/必要性:為了開(kāi)發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對(duì)軟件需求的深入理解是軟件開(kāi)發(fā)工作獲得成功的前提條件,不論我們把設(shè)計(jì)和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會(huì)令用戶失望,給開(kāi)發(fā)者帶來(lái)煩惱。
ü?需求分析的任務(wù):確定對(duì)系統(tǒng)的綜合要求: 1. 功能需求
2.?性能需求
3.?可靠性和可用性需求
4.?出錯(cuò)處理需求
5.?接口需求
6.?約束
7.?逆向需求
8.?將來(lái)可能提出的要求
分析系統(tǒng)的數(shù)據(jù)要求(分析系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),圖形工具描
述數(shù)據(jù)結(jié)構(gòu)[層次方框圖和Warnier圖],數(shù)據(jù)結(jié)構(gòu)規(guī)范化)
導(dǎo)出系統(tǒng)的邏輯模型(數(shù)據(jù)流圖,實(shí)體聯(lián)系圖,狀態(tài)轉(zhuǎn)換
圖,數(shù)據(jù)字典和主要的處理算法描述)
修正系統(tǒng)開(kāi)發(fā)計(jì)劃
ü?與用戶溝通獲取真實(shí)需求的的方式:1. 訪談
2.?面向數(shù)據(jù)流自頂向下求精
3.?簡(jiǎn)易的應(yīng)用規(guī)格說(shuō)明技術(shù)
4.?快速建立軟件原型
ü?需求分許是軟件定義的最后一個(gè)階段,他的主要任務(wù)時(shí)準(zhǔn)確回答“系統(tǒng)必須做什么”這個(gè)問(wèn)題,不是確定系統(tǒng)怎樣完成他的工作
ü?需求分析結(jié)束之前應(yīng)出具軟件需求規(guī)格說(shuō)明書,書面形式準(zhǔn)確描述軟件的需求
ü?需求分析方法準(zhǔn)則:1. 必須理解并描述問(wèn)題的信息域,根據(jù)這條準(zhǔn)則應(yīng)該建
???????????????????????立數(shù)據(jù)模型
2.?必須定義軟件應(yīng)完成的功能,這條準(zhǔn)則要求建立功能模型
3.?必須描述作為外部事件結(jié)果的軟件行為,這條準(zhǔn)則要求建立行為模型
4.?必須對(duì)描述信息、功能、行為的模型進(jìn)行分解,用層次的方式展示細(xì)節(jié)
ü?出錯(cuò)處理的定義:在某些情況下,出錯(cuò)處理指的是當(dāng)應(yīng)用系統(tǒng)發(fā)現(xiàn)它自己犯下一個(gè)錯(cuò)誤時(shí)所采取的行動(dòng)。有時(shí)也指系統(tǒng)對(duì)環(huán)境錯(cuò)誤的響應(yīng)
ü?對(duì)應(yīng)用系統(tǒng)本身的檢測(cè)應(yīng)該僅限于系統(tǒng)的關(guān)鍵部分,并且應(yīng)該盡可能的少
ü?接口需求定義:描述應(yīng)用程序與它的環(huán)境通信的格式
ü?環(huán)境:即使用該系統(tǒng)的外界因素
ü?約束:設(shè)計(jì)約束或?qū)崿F(xiàn)約束描述在設(shè)計(jì)或?qū)崿F(xiàn)應(yīng)用系統(tǒng)是應(yīng)遵守的限制條件
ü?情景分析:情景分析就是對(duì)用戶將來(lái)使用目標(biāo)系統(tǒng)解決某個(gè)具體問(wèn)題的方法和結(jié)果進(jìn)行進(jìn)行分析
ü?情景分析的用處(好處,意義):1. 他能在某種程度上演示目標(biāo)系統(tǒng)的行為,
????????????????????????????????從而便于用戶理解,而且還可能進(jìn)一步揭示
????????????????????????????????出一些分析員目前還不知道的需求
2.?由于情景分析較易為用戶所理解,使用這種技術(shù)能保證用戶在需求分析過(guò)程中始終扮演一個(gè)積極主動(dòng)的角色
ü?分析系統(tǒng)的數(shù)據(jù)要求通常采用建立數(shù)據(jù)模型的方式
ü?輔助描述數(shù)據(jù)結(jié)構(gòu),常用的圖形工具有層次方框圖和Warnier圖
ü?需求分析的目標(biāo)之一就是把數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)定義到元素級(jí)
ü?IPO圖簡(jiǎn)明的描述了算法
ü?通過(guò)功能分解可以完成對(duì)數(shù)據(jù)流圖的細(xì)化
ü?簡(jiǎn)易的需求規(guī)格說(shuō)明技術(shù)是一個(gè)面向團(tuán)隊(duì)的需求收集法
ü?簡(jiǎn)明的需求規(guī)格說(shuō)明技術(shù)的優(yōu)點(diǎn)是:開(kāi)發(fā)者和用戶不分彼此,齊心協(xié)力,密切合作,計(jì)時(shí)討論并求精,有能導(dǎo)出規(guī)格說(shuō)明的具體步驟
ü?快速建立軟件原型是最有效最強(qiáng)大的需求分析技術(shù)
ü?快速原型的定義:快速原型就是快速建立起來(lái)的旨在演示目標(biāo)系統(tǒng)主要功能的可運(yùn)行的程序
ü?快速原型的特點(diǎn):1. 快速
????????????????????2 容易修改
ü?建立快速原型的目的:盡快向用戶提供一個(gè)可在計(jì)算機(jī)上運(yùn)行的目標(biāo)系統(tǒng)的模型,以便使用戶和開(kāi)發(fā)者在目標(biāo)系統(tǒng)應(yīng)該“做什么”這個(gè)問(wèn)題上盡可能快的達(dá)成共識(shí)
ü?快速的構(gòu)建和修改原型通常使用下述3種方法和工具:
1. 第四代技術(shù)
???????????????????2 可重用的軟件構(gòu)件
???????????????????3 形式化規(guī)格說(shuō)明和原型環(huán)境
?????????????????????(形式化說(shuō)明技術(shù)第四章講)
ü?模型的定義:為了理解事物而對(duì)事物做出的一種抽象,是對(duì)事物的一種無(wú)歧義的書面描述。通常,模型由一組圖形符號(hào)和組織這些符號(hào)的規(guī)則組成
ü?需求分析階段應(yīng)該建立三種模型:根據(jù)需求分析方法準(zhǔn)則
1.?數(shù)據(jù)模型(實(shí)體聯(lián)系模型)
2.?功能模型(數(shù)據(jù)流圖)
3.?行為模型(狀態(tài)圖即狀態(tài)轉(zhuǎn)換圖)
ü?形式化方法的必要性:1. 為了消除用自然語(yǔ)言書寫的軟件規(guī)格說(shuō)明書中可能
???????????????????????存在的不一致性、歧義、含糊、不完整及抽象層次混
???????????????????????亂等問(wèn)題。
???????????????????????2 在需求驗(yàn)證階段,對(duì)于規(guī)模龐大的系統(tǒng),方便人工
審查需求一致性
ü?數(shù)據(jù)對(duì)象是:對(duì)軟件必須理解的復(fù)合信息的抽象,僅有單個(gè)值的事物不是數(shù)據(jù)對(duì)象
ü?復(fù)合信息:具有一系列不同性質(zhì)或?qū)傩缘氖挛?/span>
ü?數(shù)據(jù)對(duì)象只封裝了數(shù)據(jù)而沒(méi)有對(duì)施加于數(shù)據(jù)上的操作的引用。區(qū)別于面向?qū)ο蠓缎褪菍?shù)據(jù)與操作封裝在一起
ü?ER圖中包含了“實(shí)體,關(guān)系和屬性”3種基本成分。矩形框代表實(shí)體,圓弧矩形代表屬性
ü?ER模型的優(yōu)點(diǎn):1. ER模型比較接近人的習(xí)慣思維方式
??????????????????2 ER模型使用簡(jiǎn)單的圖形符號(hào)表達(dá)系統(tǒng)分析員對(duì)問(wèn)題域的
????????????????????理解,不熟悉計(jì)算機(jī)技術(shù)的用戶也能理解它
??????????????????3 ER模型可以作為用戶與分析員之間有效的交流工具
ü?數(shù)據(jù)規(guī)范化的目的:減少數(shù)據(jù)冗余,避免出現(xiàn)插入異常或刪除異常,簡(jiǎn)化修改數(shù)據(jù)的過(guò)程
ü?范式級(jí)別越高隨之而來(lái)的一些列問(wèn)題:1. 存儲(chǔ)同樣的數(shù)據(jù)就需要分解成更多
???????????????????????????????????????的表,因此“存儲(chǔ)自身”的過(guò)程也
???????????????????????????????????????就越復(fù)雜
?????2 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與基于問(wèn)題域的結(jié)
???????構(gòu)件間的匹配程度也隨之下降,因
???????此需求變化時(shí)數(shù)據(jù)源的穩(wěn)定性較差
?????3 范式級(jí)別提高需要訪問(wèn)的表增多,因此性能將下降
ü?實(shí)用角度來(lái)看大多數(shù)場(chǎng)合實(shí)用第三范式
ü?狀態(tài)轉(zhuǎn)換圖的定義:狀態(tài)轉(zhuǎn)換圖(簡(jiǎn)稱狀態(tài)圖)通過(guò)描繪系統(tǒng)的狀態(tài)及引起系統(tǒng)狀態(tài)轉(zhuǎn)換的事件,來(lái)表示系統(tǒng)的行為。此外,狀態(tài)圖還指明了作為特定事件的結(jié)果系統(tǒng)將做哪些動(dòng)作
ü?狀態(tài):狀態(tài)是任何可以被觀察到的系統(tǒng)行為模式,一個(gè)狀態(tài)代表系統(tǒng)的一種行為模式
ü?事件:在某個(gè)特定時(shí)刻發(fā)生的事情,他是引起系統(tǒng)做動(dòng)作或從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)的外界事物的抽象,簡(jiǎn)言之就是引起系統(tǒng)做動(dòng)作或裝換狀態(tài)的控制信息
ü?狀態(tài)圖三部分,上面是狀態(tài)的名稱,中間是狀態(tài)變量的名字和值,下面是活動(dòng)表
ü?Warnier圖與層次方框圖的區(qū)別:前者可以指出一類信息或一個(gè)信息元素是重復(fù)出現(xiàn)的,也可以表示特定信息在某一類信息中是有條件的出現(xiàn)的。
ü?IPO圖的好處:方便的描述輸入數(shù)據(jù),對(duì)數(shù)據(jù)的處理和輸出數(shù)據(jù)之間的關(guān)系;軟件設(shè)計(jì)階段可以進(jìn)一步補(bǔ)充修正這些圖,作為設(shè)計(jì)階段的文檔
ü?軟件需求驗(yàn)證的四方面:1 一致性。所有需求必須是一致的,任何一條需求
??????????????????????????????????不能和其他需求相互矛盾
?????????????????????????2 完整性。需求必須是完整的,需求規(guī)格說(shuō)明是必須包含用戶需要的每一個(gè)功能
?????????????????????????3 現(xiàn)實(shí)性。制定的需求必須是在現(xiàn)有的硬件技術(shù)和軟件技術(shù)基本上可以實(shí)現(xiàn)的
?????????????????????????4 有效性。必須證明需求是正確有效的,確實(shí)能解決用戶面對(duì)的問(wèn)題
ü?需求驗(yàn)證的方法:1 一致性。人工技術(shù)審查
???????????????????2 現(xiàn)實(shí)性。仿真或性能模擬技術(shù)
???????????????????3 完整性和有效性。請(qǐng)用戶試用(成本高);使用原型系統(tǒng)
ü?需求分析軟件工具的要求:1. 必須有形式化的語(yǔ)法或表
???????????????????????????2 使用這個(gè)軟件工具能夠?qū)С鲈敿?xì)的文檔
???????????????????????????3 必須提供分析(測(cè)試)規(guī)格說(shuō)明書的不一致性
????????????????????????????性和冗余性的手段,并且能夠產(chǎn)生一組報(bào)告指明
????????????????????????????對(duì)完整性分析的結(jié)果
???????????????????????????4 能夠改進(jìn)通信狀況
ü?FSL/PSA系統(tǒng)的主要優(yōu)點(diǎn):它改進(jìn)了文檔質(zhì)量,能保證文檔具有完整性、一致性和無(wú)二義性,從而可以減少管理和維護(hù)的費(fèi)用。數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中。便于增加、刪除和更改,這也是他的一個(gè)優(yōu)點(diǎn)。
第五章
2?總體設(shè)計(jì)的必要性:可以站在全局高度上,花較少成本,從較抽象的層次上分析對(duì)比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開(kāi)發(fā)出較高質(zhì)量的軟件系統(tǒng)。
2?總體設(shè)計(jì)的過(guò)程:(主要由兩個(gè)階段組成:系統(tǒng)設(shè)計(jì)階段,確定系統(tǒng)的具體實(shí)現(xiàn)方案;
????????????????????結(jié)構(gòu)設(shè)計(jì)階段,確定軟件結(jié)構(gòu))
1.?設(shè)想供選擇的方案(從數(shù)據(jù)流圖出發(fā))
2.?選取合理的方案(低成本,中成本,高成本)(對(duì)于每一種方案應(yīng)準(zhǔn)備系統(tǒng)流程圖,組成系統(tǒng)的物理元素清單,成本效益分析,實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃)
3.?推薦最佳方案(第一階段至此完成)
4.?功能分解
5.?設(shè)計(jì)軟件結(jié)構(gòu)
6.?設(shè)計(jì)數(shù)據(jù)庫(kù)
7.?制定測(cè)試計(jì)劃
8.?書寫文檔(系統(tǒng)說(shuō)明、用戶手冊(cè)、測(cè)試計(jì)劃、詳細(xì)的實(shí)現(xiàn)計(jì)劃、數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果)
9.?審查和復(fù)查
2?軟件設(shè)計(jì)過(guò)程中應(yīng)該遵循的基本原理:1. 模塊化。模塊是由邊界元素限定的相鄰程序
??????????????????????????????????????元素(例如,數(shù)據(jù)說(shuō)明,可執(zhí)行的語(yǔ)句)的序列,而且有一個(gè)總體標(biāo)識(shí)符代表它。模塊是構(gòu)成程序的基本構(gòu)件。模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問(wèn)的模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來(lái)構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求
2.?抽象。抽象出事物的本質(zhì)特征而暫時(shí)不考慮他們的細(xì)節(jié),一個(gè)復(fù)雜的動(dòng)態(tài)系統(tǒng)首先可以用一些高級(jí)的抽象概念構(gòu)造和理解,這些高級(jí)的概念又可以用一些低級(jí)的概念構(gòu)造和理解。
3.?逐步求精。為了能集中精力解決主要問(wèn)題而盡量推遲對(duì)問(wèn)題細(xì)節(jié)的考慮。事實(shí)上可以把逐步求精看作是一項(xiàng)把一個(gè)時(shí)期內(nèi)必須解決的種種問(wèn)題按優(yōu)先級(jí)排序的技術(shù)
4.?信息隱藏和局部化。所謂局部化是指把一些關(guān)系密切的軟件元素物理的放的彼此靠近。所謂隱藏不是隱藏關(guān)于模塊的一切信息而是模塊的實(shí)現(xiàn)細(xì)節(jié)
5.?模塊獨(dú)立開(kāi)發(fā)具有獨(dú)立功能而且和其他模塊之間沒(méi)有過(guò)多的交互作用的模塊就可以做到模塊獨(dú)立
2?模塊化的優(yōu)點(diǎn):1. 可以使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計(jì)也容易閱讀和理解 2. 使軟件容易測(cè)試和調(diào)試,因而有助于提高軟件的可靠性 3. 能夠提高軟件的可修改性 4. 有助于軟件開(kāi)發(fā)工程的組織管理
2?抽象與求精的聯(lián)系與區(qū)別:抽象與求精是一對(duì)互補(bǔ)的概念。抽象使得設(shè)計(jì)者能夠說(shuō)明過(guò)程和數(shù)據(jù),同時(shí)卻忽略了底層細(xì)節(jié)。事實(shí)上可以把抽象看做是一種通過(guò)忽略多余的細(xì)節(jié)同時(shí)強(qiáng)調(diào)有關(guān)的細(xì)節(jié)而實(shí)現(xiàn)逐步求精的方法。求精則幫助設(shè)計(jì)者在設(shè)計(jì)過(guò)程中揭示出底層細(xì)節(jié)。
2?模塊獨(dú)立的好處(重要性):第一,有效的模塊化(即具有獨(dú)立的模塊)的軟件比較容易開(kāi)發(fā)出來(lái)。這是由于能夠分割功能而且接口可以簡(jiǎn)化,當(dāng)許多人分工合作開(kāi)發(fā)同一個(gè)軟件時(shí),這個(gè)優(yōu)點(diǎn)尤其重要。第二,獨(dú)立的模塊比較容易測(cè)試和維護(hù)。這是因?yàn)橄鄬?duì)說(shuō)來(lái),修改設(shè)計(jì)和程序需要的工作量比較小,錯(cuò)誤傳播范圍小,需要擴(kuò)充功能時(shí)能夠“插入”模塊。
2?耦合和內(nèi)聚的區(qū)別與聯(lián)系:是模塊獨(dú)立程度的兩個(gè)標(biāo)準(zhǔn)度量。耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。內(nèi)聚和耦合是緊密相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合
2?設(shè)計(jì)時(shí)應(yīng)該力求做到低耦合和高內(nèi)聚
2?耦合的概念:耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度。
2?數(shù)據(jù)耦合:兩個(gè)模塊彼此間通過(guò)參數(shù)交換信息而且交換的信息僅僅是數(shù)據(jù)
2?控制耦合:兩個(gè)模塊間傳遞的信息中有控制信息出現(xiàn)時(shí),這種耦合稱為控制耦合
2?控制耦合一般可以通過(guò)適當(dāng)分解用數(shù)據(jù)耦合代替它
2?特征耦合:當(dāng)把整個(gè)數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用的模塊只需要使用其中一部分?jǐn)?shù)據(jù)元素時(shí),就出現(xiàn)了特征耦合
2?公共環(huán)境耦合:當(dāng)兩個(gè)或多個(gè)模塊通過(guò)一個(gè)公共數(shù)據(jù)環(huán)境相互作用時(shí),他們之間的耦合稱為公共環(huán)境耦合
2?內(nèi)容耦合:一個(gè)模塊可以直接調(diào)用另一模塊中的數(shù)據(jù),或者允許一個(gè)模塊直接轉(zhuǎn)移到另一個(gè)模塊中去。
2?耦合的使用原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合
2?內(nèi)聚的概念:內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。
2?偶然內(nèi)聚:一個(gè)模塊完成一組任務(wù),這些任務(wù)間彼此即使有關(guān)系,關(guān)系也是很松散的,就叫做偶然內(nèi)聚。(低內(nèi)聚) ?出現(xiàn)錯(cuò)誤的概率最高
2?如果一個(gè)模塊完成的任務(wù)在邏輯上屬于相同或相似的一類,則稱為邏輯內(nèi)聚(低內(nèi)聚)。 修改較困難
2?時(shí)間內(nèi)聚:一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行(低內(nèi)聚)
2?過(guò)程內(nèi)聚:一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行,則稱為過(guò)程內(nèi)聚(中內(nèi)聚)
2?通信內(nèi)聚:模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱為通信內(nèi)聚(中內(nèi)聚)
2?順序內(nèi)聚:一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行,則稱為順序內(nèi)聚。(高內(nèi)聚)
2?功能內(nèi)聚:模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一功能,則稱為功能內(nèi)聚(最高程度的內(nèi)聚)
2?軟件設(shè)計(jì)的啟發(fā)式規(guī)則:1. 改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性
2.?模塊規(guī)模應(yīng)該適中
3.?深度、寬度、扇出和扇入都應(yīng)適應(yīng)
4.?模塊的作用域應(yīng)該在控制域之內(nèi)
5.?力爭(zhēng)降低模塊接口的復(fù)雜程度
6.?設(shè)計(jì)單入口單出口的模塊
7.?模塊功能應(yīng)該可以預(yù)測(cè)
2?一個(gè)設(shè)計(jì)的好的點(diǎn)醒系統(tǒng)的平均扇出應(yīng)該是3~4 ?上限應(yīng)該是5~9
2?啟發(fā)式規(guī)則只是經(jīng)驗(yàn)之談,既不是總體設(shè)計(jì)的目標(biāo)也不是應(yīng)該遵循的普遍原理
2?在結(jié)構(gòu)圖中,箭頭表示傳遞的信息,尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息
2?面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑
2?面向數(shù)據(jù)流的設(shè)計(jì)方法:把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法
2?變換流:信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形勢(shì)變換成內(nèi)部形勢(shì),進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理之后再沿輸出通路變換成外部形勢(shì)離開(kāi)軟件系統(tǒng)
2?事務(wù)流完成的任務(wù):1. 接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù))
2.?分析每個(gè)事務(wù)以確定它的類型
3.?根據(jù)事務(wù)類型選取一條活動(dòng)通路
2?變換分析的步驟:(把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu))
1. 復(fù)查基本數(shù)據(jù)模型
2.?復(fù)查并精化數(shù)據(jù)流圖
3.?確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性
4.?確定輸入流和輸出流的邊界,從而孤立出變換中心
5.?完成第一級(jí)分解
6.?完成第二級(jí)分解
7.?使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對(duì)第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化
?
2?變換分析與事務(wù)分析的選擇:如果數(shù)據(jù)流不具有顯著的事務(wù)特點(diǎn),最好使用變換分析;反之,如果具有明顯的事務(wù)中心,則應(yīng)該采用事務(wù)分析技術(shù)。但是,機(jī)械地遵循變換分析或事務(wù)分析的映射規(guī)則,很可能會(huì)得到一些不必要的控制模塊,如果它們確實(shí)用處不大,那么可以而且應(yīng)該把它們合并。反之,如果一個(gè)控制模塊功能過(guò)分復(fù)雜,則應(yīng)該分解為兩個(gè)或多個(gè)控制模塊,或者增加中間層次的控制模塊。
第六章
v?詳細(xì)設(shè)計(jì)階段的任務(wù):定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng),也就是說(shuō),經(jīng)過(guò)這個(gè)階段的設(shè)計(jì)工作,應(yīng)該得出對(duì)目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個(gè)描述直接翻譯成用某種程序設(shè)計(jì)語(yǔ)言書寫的程序。
v?衡量程序的質(zhì)量不僅要看他的邏輯是否正確,性能是否滿足要求,更主要的是看他是否容易閱讀和理解(結(jié)構(gòu)程序設(shè)計(jì)技術(shù))
v?只用三種基本的控制結(jié)構(gòu)就可以實(shí)現(xiàn)任何單入口單出口的程序(順序)(選擇)(循環(huán))
v?結(jié)構(gòu)程序設(shè)計(jì)的定義:結(jié)構(gòu)程序設(shè)計(jì)是盡可能少用GO TO語(yǔ)句的程序設(shè)計(jì)方法。最好僅在檢測(cè)出錯(cuò)誤時(shí)才使用GO TO語(yǔ)句,而且應(yīng)該總是使用前向GO TO語(yǔ)句。
v?經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):順序、選擇、循環(huán)
擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):并且允許do-case、do-until
修正的結(jié)構(gòu)程序設(shè)計(jì):并且允許leave、break
v?人機(jī)界面設(shè)計(jì)遇到的問(wèn)題:1. 系統(tǒng)響應(yīng)時(shí)間
2.?用戶幫助設(shè)施
3.?出錯(cuò)信息處理
4.?命令交互
v?響應(yīng)時(shí)間:從用戶完成某個(gè)控制動(dòng)作到軟件給出某個(gè)預(yù)期的響應(yīng)之間的這段時(shí)間
v?響應(yīng)時(shí)間的兩個(gè)基本屬性:長(zhǎng)度和易變性
v?過(guò)程設(shè)計(jì)工具可以分為(圖像)(表格)(語(yǔ)言)
v?程序流程圖的主要缺點(diǎn):1. 程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員
??????????????????????過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。
2.?程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。
3.?程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。
v?盒圖的特點(diǎn):1. 功能域(即一個(gè)特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出
??????????????????來(lái)
2.?不可能任意轉(zhuǎn)移控制
3.?很容易確定局部和全程數(shù)據(jù)的作用域
4.?很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)
v?PAD圖的優(yōu)點(diǎn):1. 使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號(hào)所設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)
???????????????????化程序。
2.?PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖中最左面的豎線是程序的主線,即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?#xff0c;PAD圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。
3.?用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。PAD圖是二維樹(shù)形結(jié)構(gòu)的圖形,程序從圖中最左豎線上端的結(jié)點(diǎn)開(kāi)始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點(diǎn)。
4.?容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這種轉(zhuǎn)換可用軟件工具自動(dòng)完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。
v?判定表的優(yōu)點(diǎn):清晰的表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系
v?判定表的缺點(diǎn):不適合作為一種通用的設(shè)計(jì)工具,沒(méi)有一種簡(jiǎn)單的方法使它能同時(shí)清晰的表示順序和重復(fù)等處理特性
v?以上為圖或表的形式來(lái)描述過(guò)程設(shè)計(jì),語(yǔ)言描述過(guò)程設(shè)計(jì)的是“過(guò)程設(shè)計(jì)語(yǔ)言”
v?過(guò)程設(shè)計(jì)語(yǔ)言(PDL)的特點(diǎn):1. 關(guān)鍵字的固定語(yǔ)法,它提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)
???????????????????????????????說(shuō)明和模塊化的特點(diǎn)。
2.?自然語(yǔ)言的自由語(yǔ)法,它描述處理特點(diǎn)。
3.?數(shù)據(jù)說(shuō)明的手段。應(yīng)該既包括簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)(例如純量和數(shù)組),又包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(例如,鏈表或?qū)哟蔚臄?shù)據(jù)結(jié)構(gòu))。
4.?模塊定義和調(diào)用的技術(shù),應(yīng)該提供各種接口描述模式。
v?過(guò)程設(shè)計(jì)語(yǔ)言的優(yōu)點(diǎn):1. 可以作為注釋直接插在源程序中間。這樣做能促使維護(hù)人員
在修改程序代碼的同時(shí)也相應(yīng)地修改PDL注釋,因此有助于保持
文檔和程序的一致性,提高了文檔的質(zhì)量。
2.?可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完
????????????????????????成PDL的書寫和編輯工作。
3.?已經(jīng)有自動(dòng)處理程序存在,而且可以自動(dòng)由PDL生成程序代
????????????????????????碼。
v?PDL的缺點(diǎn)是不如圖形工具形象直觀,描述復(fù)雜的條件組合與動(dòng)作間的對(duì)應(yīng)關(guān)系時(shí),不如判定表清晰簡(jiǎn)單。
v?面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法的最終目標(biāo)是得出對(duì)程序處理過(guò)程的描述
v?Jackson圖(面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法)(選擇)(順序)(循環(huán))
v?Jackson程序設(shè)計(jì)方法的步驟:1. 分析并確定輸入數(shù)據(jù)與輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)2. 找出輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元3. 從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖4. 列出所有操作和條件,并且把他們分配到程序結(jié)構(gòu)圖的適當(dāng)位置5. 用偽碼表示程序
v?程序復(fù)雜程度定量度量的必要性:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開(kāi)發(fā)需要用的工作量,定量度量的結(jié)果可以用來(lái)比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度
v?McCabe計(jì)算環(huán)形復(fù)雜度:V(g) = E-N+2 ???E是邊數(shù) N是點(diǎn)數(shù)
v?*** ??環(huán)形復(fù)雜度的上限是10
v?Halstead預(yù)測(cè)程序長(zhǎng)度 H = n1*log2(n1)+n2*log2(n2)
????????????預(yù)測(cè)程序中包含錯(cuò)誤個(gè)數(shù) ?E = N*log2(n1+n2)/3000
?????其中n1表示不同運(yùn)算符的個(gè)數(shù) n2表示不同操作數(shù)的個(gè)數(shù)
?????????N1表示運(yùn)算符出現(xiàn)的總次數(shù) ?N2表示操作數(shù)出現(xiàn)的總次數(shù) ?N=N1+N2
第七章
n?實(shí)現(xiàn)包括編碼和測(cè)試
n?程序的質(zhì)量主要取決于(軟件設(shè)計(jì)的質(zhì)量)
n?測(cè)試的必要性:如果在軟件投入生產(chǎn)性運(yùn)行之前沒(méi)有發(fā)現(xiàn)并糾正軟件中的大部分差錯(cuò),則這些差錯(cuò)遲早會(huì)在生產(chǎn)過(guò)程中暴露出來(lái),那是,不僅改正這些錯(cuò)誤的代價(jià)更高,而且往往會(huì)造成很惡劣的后果
n?測(cè)試的目的:盡可能多的發(fā)現(xiàn)并排除軟件中潛藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶使用
n?判斷題:測(cè)試階段的任務(wù)是發(fā)現(xiàn)錯(cuò)誤?x ?并改正錯(cuò)誤
n?選擇程序設(shè)計(jì)語(yǔ)言的主要實(shí)用標(biāo)準(zhǔn):1. 系統(tǒng)用戶的要求
2.?可以是使用的編譯程序
3.?可以得到的軟件工具
4.?工程規(guī)模
5.?程序員的知識(shí)
6.?軟件可移植性要求
7.?軟件的應(yīng)用領(lǐng)域
n?源代碼編寫規(guī)則:1. 程序內(nèi)部的文檔。程序內(nèi)部應(yīng)包含必要的標(biāo)識(shí)符、適當(dāng)?shù)淖⑨尅?/span>
????????????????????和程序的視覺(jué)組織等
2.?良好的數(shù)據(jù)說(shuō)明風(fēng)格。數(shù)據(jù)說(shuō)明的次序應(yīng)該標(biāo)準(zhǔn)化
3.?簡(jiǎn)單而直接的語(yǔ)句構(gòu)造
4.?輸入輸出具有規(guī)則
5.?具有較高的效率。效率主要是指處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面
n?軟件應(yīng)該像對(duì)他要求的那樣有效,而不應(yīng)該如同人類可以做到的那樣有效
n?效率是靠好設(shè)計(jì)來(lái)提高的,不要犧牲程序的清晰性和可讀性來(lái)提高效率
n?軟件測(cè)試的準(zhǔn)則:1. 所有測(cè)試都應(yīng)該能追溯到用戶需求
2.?應(yīng)該遠(yuǎn)在測(cè)試開(kāi)始之前就制定出測(cè)試計(jì)劃
3.?把Pareto原理應(yīng)用到軟件測(cè)試中
4.?應(yīng)該從小規(guī)模測(cè)試開(kāi)始,并逐步進(jìn)行大規(guī)模測(cè)試
5.?窮舉測(cè)試是不可能的
6.?為了達(dá)到最佳的測(cè)試效果,應(yīng)該由獨(dú)立的第三方從事測(cè)試工作
7.?程序修改后要回歸測(cè)試
8.?應(yīng)長(zhǎng)期保留測(cè)試用例,直至系統(tǒng)廢棄
n?測(cè)試分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試,區(qū)別在于是否實(shí)際運(yùn)行軟件,靜態(tài)分為人為和計(jì)算機(jī)輔助,動(dòng)態(tài)分為黑盒白盒
n?黑盒測(cè)試的又稱功能測(cè)試
n?白盒測(cè)試又稱結(jié)構(gòu)測(cè)試
n?測(cè)試的步驟:1. 模塊測(cè)試。把每個(gè)模塊當(dāng)做一個(gè)單獨(dú)的實(shí)體來(lái)測(cè)試
2.?子系統(tǒng)測(cè)試。把經(jīng)過(guò)單元測(cè)試的模塊當(dāng)做一個(gè)子系統(tǒng)來(lái)測(cè)試,主要測(cè)試模塊間的協(xié)調(diào)和通信,因此這個(gè)階段著重測(cè)試接口
3.?系統(tǒng)測(cè)試。發(fā)現(xiàn)軟件設(shè)計(jì)中的錯(cuò)誤或需求說(shuō)明中的錯(cuò)誤
4.?驗(yàn)收測(cè)試。需要用戶參與,往往發(fā)現(xiàn)的是需求說(shuō)明書中的錯(cuò)誤
5.?平行運(yùn)行。同時(shí)運(yùn)行新舊系統(tǒng)
n?模塊測(cè)試是對(duì)每個(gè)單獨(dú)的模塊,分別采用黑盒和白盒測(cè)試技術(shù),測(cè)試他的功能是否正確,檢查模塊控制結(jié)構(gòu)中的特定路徑并發(fā)現(xiàn)最大數(shù)量的錯(cuò)誤
n?模塊測(cè)試的特點(diǎn)是主要應(yīng)用白盒測(cè)試技術(shù),并且多個(gè)模塊可以并發(fā)的進(jìn)行
n?驗(yàn)收測(cè)試又稱確認(rèn)測(cè)試,目的是:驗(yàn)證系統(tǒng)確實(shí)能滿足用戶的需要
n?平行運(yùn)行的目的:1. 可以在準(zhǔn)生產(chǎn)環(huán)境下運(yùn)行新系統(tǒng)而又不冒風(fēng)險(xiǎn)
2.?用戶能有一段熟悉新系統(tǒng)的時(shí)間
3.?可以驗(yàn)證用戶指南和使用手冊(cè)之類的文檔
4.?能夠以準(zhǔn)生產(chǎn)模式對(duì)新系統(tǒng)進(jìn)行全負(fù)荷測(cè)試,可以用測(cè)試結(jié)果驗(yàn)證性能指標(biāo)
n?單元測(cè)試的重點(diǎn):1. 模塊測(cè)試2. 局部數(shù)據(jù)結(jié)構(gòu) 3. 重要的執(zhí)行通路 4. 出錯(cuò)處理通路 5. 邊界條件
n?集成測(cè)試是測(cè)試和組裝軟件的系統(tǒng)化技術(shù),其主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問(wèn)題。其特點(diǎn)是可能發(fā)生接口問(wèn)題
n?集成測(cè)試的方法:1. 非漸增式測(cè)試方法:先分別測(cè)試每個(gè)模塊,再將所有的模塊結(jié)合
????????????????????在一起
2.?漸增式測(cè)試方法:一次增加進(jìn)來(lái)一個(gè)待測(cè)試的模塊(自底向上,自頂向下)
n?自頂向下集成的優(yōu)點(diǎn):不需要測(cè)試驅(qū)動(dòng)程序,能夠在測(cè)試階段的早期實(shí)現(xiàn)并驗(yàn)證程序的主要功能,而且能在早期發(fā)現(xiàn)上層模塊的接口錯(cuò)誤
n?自頂向下集成的缺點(diǎn):需要存根程序,可能遇到與此相聯(lián)系的測(cè)試?yán)щy,底層關(guān)鍵模塊中的錯(cuò)誤發(fā)現(xiàn)較晚,而且用這種方法在早期不能充分展開(kāi)人力
n?回歸測(cè)試:重新執(zhí)行已經(jīng)做過(guò)的測(cè)試的某個(gè)子集,以保證增加進(jìn)的新的模塊沒(méi)有帶來(lái)非預(yù)期的副作用
n?回歸測(cè)試的內(nèi)容:1.檢驗(yàn)軟件功能的代表性測(cè)試用例 2. 專門針對(duì)可能受影響的軟件功能的附加測(cè)試 3. 針對(duì)被修改過(guò)的軟件成分的測(cè)試
n?確認(rèn)與驗(yàn)證的區(qū)別:驗(yàn)證指的是保證軟件正確的實(shí)現(xiàn)了某個(gè)特定要求的一系列活動(dòng);確認(rèn)指的是為了保證軟件確實(shí)滿足了用戶需求而進(jìn)行的一系列活動(dòng)
n?軟件有效性的定義:如果軟件的功能和性能如同用戶所合理期待的那樣,軟件就是有效的
n?確認(rèn)測(cè)試的內(nèi)容:1.復(fù)查軟件配置 2. 檢驗(yàn)使用手冊(cè)的完整性與正確性 3. 檢測(cè)軟件是否與需求一致 4. 保證軟件能滿足所有功能要求 5. 文檔資料是準(zhǔn)確完整的 6. 軟件能滿足其他預(yù)定的要求(安全性、可移植性、兼容性。可維護(hù)性)
n?確認(rèn)測(cè)試基本使用黑盒測(cè)試法
n?軟件配置復(fù)查的目的:保證軟件配置的所有成分都齊全,質(zhì)量符合要求,文檔與程序完全一致,具有完成軟件維護(hù)所必須的細(xì)節(jié)而且已經(jīng)編好目錄
n?白盒測(cè)試技術(shù):邏輯覆蓋技術(shù)與控制結(jié)構(gòu)測(cè)試技術(shù)(基本路徑測(cè)試、條件測(cè)試和循環(huán)測(cè)試)
n?邏輯覆蓋技術(shù):1. 語(yǔ)句覆蓋。每個(gè)語(yǔ)句應(yīng)該執(zhí)行一次
??????????????????2 判定覆蓋。不僅每個(gè)語(yǔ)句至少執(zhí)行一次,而且每個(gè)判定的每種可能結(jié)
???????????????????果也應(yīng)該至少執(zhí)行一次
??????????????????3 條件覆蓋。不僅每個(gè)語(yǔ)句至少執(zhí)行一次,判定表達(dá)中每個(gè)條件都取到各種可能得結(jié)果
??????????????????4 判定/條件覆蓋。同時(shí)滿足兩種覆蓋
??????????????????5 條件組合覆蓋。每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次
??????????????????6 點(diǎn)覆蓋 7 邊覆蓋 8 路徑覆蓋
n?基本路徑測(cè)試的步驟:1.根據(jù)過(guò)程結(jié)構(gòu)畫出相應(yīng)的流圖
????2.計(jì)算流圖的環(huán)形復(fù)雜度
3.確定線性獨(dú)立路徑的基本集合
4.設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中的每條路徑的測(cè)試用例
n?條件測(cè)試錯(cuò)誤的類型:1.布爾算符錯(cuò) 2.布爾變量錯(cuò) 3.布爾括弧錯(cuò) 4.關(guān)系算符錯(cuò) 5.算數(shù)表達(dá)式錯(cuò)
n?條件測(cè)試策略的優(yōu)點(diǎn):1.容易度量條件的測(cè)試覆蓋率 2.程序內(nèi)條件的測(cè)試覆蓋率可指導(dǎo)附加測(cè)試的設(shè)計(jì)
n?條件測(cè)試的目的:不僅是檢驗(yàn)程序條件中的錯(cuò)誤,而且是檢驗(yàn)程序中的其他錯(cuò)誤
n?循環(huán)測(cè)試的三種辦法:1. 簡(jiǎn)單循環(huán) 2. 嵌套循環(huán) ?3. 串接循環(huán)
n?黑盒測(cè)試法:把程序看成一個(gè)黑盒子,完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程。黑盒測(cè)試是在程序接口進(jìn)行的測(cè)試,它只檢查程序功能是否能按照規(guī)格說(shuō)明書的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息(如,數(shù)據(jù)庫(kù)或文件)的完整性。
n?黑盒測(cè)試主要用于測(cè)試的后期 白盒測(cè)試主要用于早期
n?黑盒測(cè)試力圖發(fā)現(xiàn)下述類型的錯(cuò)誤:
①功能不正確或遺漏了功能;
②界面錯(cuò)誤;
③數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤;
④性能錯(cuò)誤;
⑤初始化和終止錯(cuò)誤。
n?黑盒測(cè)試法技術(shù):1.等價(jià)劃分 2. 邊界值分析 3.錯(cuò)誤推測(cè)
n?等價(jià)類劃分:等價(jià)類劃分方法把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分,然后從每一部分中選取少數(shù)有代表性的數(shù)據(jù)做為測(cè)試用例。
n?等價(jià)類劃分先要?jiǎng)澐值葍r(jià)類,接下來(lái)一次測(cè)試有效等價(jià)類與無(wú)效等價(jià)類
n?錯(cuò)誤推測(cè)法的基本想法是:列舉出程序中所有可能有的錯(cuò)誤和容易發(fā)生錯(cuò)誤的特殊情況,根據(jù)它們選擇測(cè)試方案。
n?調(diào)試:調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過(guò)程
n?調(diào)試途徑:1. 蠻干法 2. 回溯法 3. 原因排除法
n?軟件可靠性:軟件可靠性是指程序在給定的時(shí)間間隔內(nèi),按照規(guī)格說(shuō)明書的規(guī)定成功的運(yùn)行的概率
n?軟件可用性:程序在給定的時(shí)間點(diǎn),按照規(guī)格說(shuō)明書的規(guī)定,成功的運(yùn)行的概率
n?可靠性與可用性的區(qū)別:可靠性是指一段時(shí)間間隔內(nèi)程序沒(méi)有失效,可用性意味著這段時(shí)間內(nèi)程序正確運(yùn)行
n?MYTTF = 平均無(wú)故障時(shí)間 ?Et 測(cè)試之前程序中錯(cuò)誤總量 ?Ir程序長(zhǎng)度 Ec x時(shí)間內(nèi)改正的錯(cuò)誤
n?MTTF = 1/K*(Et/Ir-Ec/Ir) ?**是減號(hào)
第八章
ü?軟件維護(hù)的基本任務(wù)(作用)是保證軟件在一個(gè)相當(dāng)長(zhǎng)的時(shí)期能夠正常運(yùn)行
ü?軟件維護(hù):在軟件已經(jīng)交付使用之后為了改正錯(cuò)誤或者滿足新的需要而修改軟件的過(guò)程
ü?軟件維護(hù)的本質(zhì):修改和壓縮了的軟件定義和開(kāi)發(fā)過(guò)程,而且事實(shí)上遠(yuǎn)在提出一項(xiàng)維護(hù)要求之前,與軟件維護(hù)有關(guān)的工作就已經(jīng)開(kāi)始了
ü?軟件維護(hù)的分類:1. 改正性維護(hù)。診斷和改正錯(cuò)誤
2.?適應(yīng)性維護(hù)。為了和變化了的環(huán)境適當(dāng)?shù)呐浜隙M(jìn)行的修改軟件
????????????????????的活動(dòng)
3.?完善性維護(hù)。增加新功能或修改已有功能
4.?預(yù)防性維護(hù)。給未來(lái)的改進(jìn)奠定良好的基礎(chǔ)
ü?軟件維護(hù)的特點(diǎn):1. 結(jié)構(gòu)化維護(hù)與非結(jié)構(gòu)化維護(hù)差別巨大
2.?維護(hù)的代價(jià)高昂
3.?維護(hù)的問(wèn)題很多
ü?維護(hù)過(guò)程的問(wèn)題:1. 理解別人寫的程序通常非常困難
2.?需要維護(hù)的軟件往往沒(méi)有合格的文檔,或者文檔資料顯著不足
3.?當(dāng)要求對(duì)軟件進(jìn)行維護(hù)時(shí),不能指望由開(kāi)發(fā)人員給人們自習(xí)說(shuō)明軟件
4.?絕大多數(shù)軟件在設(shè)計(jì)時(shí)沒(méi)有考慮將來(lái)的修改
5.?軟件維護(hù)不是一項(xiàng)吸引人的工作
ü?軟件維護(hù)的過(guò)程:1. 維護(hù)組織
2.?維護(hù)報(bào)告
3.?維護(hù)的事務(wù)流
4.?保存維護(hù)記錄
5.?評(píng)價(jià)維護(hù)活動(dòng)
ü?決定軟件可維護(hù)性的因素:1. 可理解性
2.?可測(cè)試性
3.?可修改性
4.?可移植性
5.?可重用性
ü?提高可維護(hù)行的方法:建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級(jí)
使用提高軟件質(zhì)量的技術(shù)和工具
進(jìn)行明確的質(zhì)量保證審查
選擇可維護(hù)的程序設(shè)計(jì)語(yǔ)言
改進(jìn)程序的文檔
ü?軟件文檔分為系統(tǒng)文檔與用戶文檔
ü?軟件文檔的要求:1. 必須描述如何使用這個(gè)系統(tǒng)
2.?必須描述怎樣安裝和管理這個(gè)系統(tǒng)
3.?必須描述系統(tǒng)需求和設(shè)計(jì)
4.?必須描述系統(tǒng)的實(shí)現(xiàn)與測(cè)試,以便使系統(tǒng)成為可維護(hù)的
ü?用戶文檔五方面內(nèi)容:1. 功能描述 2. 安裝文檔 3. 使用手冊(cè) 4. 參考手冊(cè) 5. 操作員指南
ü?開(kāi)發(fā)與維護(hù)的關(guān)系:
?許多軟件的維護(hù)十分困難,原因在于這些軟件的文檔不全、質(zhì)量差、開(kāi)發(fā)過(guò)程不注意采用好的方法,忽視程序設(shè)計(jì)風(fēng)格等。
ü?軟件維護(hù)與軟件工程的關(guān)系:軟件維護(hù)時(shí)軟件工程的最后一個(gè)階段,軟件工程的主要目的就是提高軟件的可維護(hù)性,減少軟件維護(hù)所需要的工作量,降低軟件系統(tǒng)的成本。軟件維護(hù)決定了未來(lái)軟件工程的可靠性與可維護(hù)性。
ü?在軟件開(kāi)發(fā)過(guò)程中應(yīng)該采取哪些措施來(lái)提高軟件的可維護(hù)性
???在每個(gè)階段結(jié)束前的技術(shù)復(fù)審和管理復(fù)查中,應(yīng)該著重對(duì)可維護(hù)性進(jìn)行復(fù)審,應(yīng)該對(duì)將來(lái)要改進(jìn)的部分和可能要改的部分加以注意指明,應(yīng)該討論軟件的可移植性問(wèn)題,考慮可能影響軟件維護(hù)的系統(tǒng)界面。在設(shè)計(jì)和編碼過(guò)程中應(yīng)該盡量使用可重用的軟件構(gòu)件,每個(gè)測(cè)試步驟都可以暗示在軟件正式交付使用之前,程序中可能需要做預(yù)防性維護(hù)的部分。在完成每項(xiàng)維護(hù)工作之后,都應(yīng)該對(duì)軟件維護(hù)本身仔細(xì)認(rèn)真的復(fù)審。
ü?需求分析的目的/意義/必要性:為了開(kāi)發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對(duì)軟件需求的深入理解是軟件開(kāi)發(fā)工作獲得成功的前提條件,不論我們把設(shè)計(jì)和編碼工作做得如何出色,不能真正滿足用戶需求的程序只會(huì)令用戶失望,給開(kāi)發(fā)者帶來(lái)煩惱。
ü?需求分析的任務(wù):確定對(duì)系統(tǒng)的綜合要求: 1. 功能需求
2.?性能需求
3.?可靠性和可用性需求
4.?出錯(cuò)處理需求
5.?接口需求
6.?約束
7.?逆向需求
8.?將來(lái)可能提出的要求
分析系統(tǒng)的數(shù)據(jù)要求(分析系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),圖形工具描
述數(shù)據(jù)結(jié)構(gòu)[層次方框圖和Warnier圖],數(shù)據(jù)結(jié)構(gòu)規(guī)范化)
導(dǎo)出系統(tǒng)的邏輯模型(數(shù)據(jù)流圖,實(shí)體聯(lián)系圖,狀態(tài)轉(zhuǎn)換
圖,數(shù)據(jù)字典和主要的處理算法描述)
修正系統(tǒng)開(kāi)發(fā)計(jì)劃
ü?與用戶溝通獲取真實(shí)需求的的方式:1. 訪談
2.?面向數(shù)據(jù)流自頂向下求精
3.?簡(jiǎn)易的應(yīng)用規(guī)格說(shuō)明技術(shù)
4.?快速建立軟件原型
ü?需求分許是軟件定義的最后一個(gè)階段,他的主要任務(wù)時(shí)準(zhǔn)確回答“系統(tǒng)必須做什么”這個(gè)問(wèn)題,不是確定系統(tǒng)怎樣完成他的工作
ü?需求分析結(jié)束之前應(yīng)出具軟件需求規(guī)格說(shuō)明書,書面形式準(zhǔn)確描述軟件的需求
轉(zhuǎn)載于:https://www.cnblogs.com/Flower-Z/p/9026583.html
總結(jié)
以上是生活随笔為你收集整理的软件工程学习笔记(考试版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C艹 指针和const的关系和注意事项(
- 下一篇: Iptables详解+实例