軟件工程基礎(chǔ)期末復(fù)習(xí)資料完整版_第1頁
軟件工程基礎(chǔ)期末復(fù)習(xí)資料完整版_第2頁
軟件工程基礎(chǔ)期末復(fù)習(xí)資料完整版_第3頁
軟件工程基礎(chǔ)期末復(fù)習(xí)資料完整版_第4頁
軟件工程基礎(chǔ)期末復(fù)習(xí)資料完整版_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2.文檔有何作用?程序代碼屬不屬于文檔?答:文檔指的是在軟件開發(fā)和維護(hù)過程中形成的文字記錄。從軟件計(jì)劃、分析、設(shè)計(jì)、實(shí)現(xiàn)(編碼和測試)、維護(hù)等開發(fā)活動中形成的各種文件。文檔屬于軟件的一部分,是軟件維護(hù)和升級的重要依據(jù),并且文檔內(nèi)容要與代碼同步更新。沒有文檔的軟件維護(hù)不但不能延長反而會縮短軟件壽命。文檔包括需求規(guī)格說明書、設(shè)計(jì)說明書、用戶使用說明書、在線幫助等,當(dāng)然程序代碼是必不可少的一種軟件文檔。3.什么是軟件危機(jī)?什么原因產(chǎn)生了軟件危機(jī)?答:軟件危機(jī)指的是在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。產(chǎn)生的原因是主客觀不相適應(yīng)。見書圖1-2。l客觀上:軟件規(guī)模增大、功能要求越來越復(fù)雜

2、,需求不斷變化等;l主觀上:傳統(tǒng)的個體化開發(fā)觀念和方法,無開發(fā)過程指導(dǎo),無開發(fā)過程管理;由于主客觀矛盾,必然產(chǎn)生軟件質(zhì)量差、開發(fā)超期、超預(yù)算、維護(hù)困難等現(xiàn)象。5.軟件工程三要素是什么?答:軟件工程三要素是從計(jì)算機(jī)科學(xué)觀點(diǎn)看軟件工程,即從軟件開發(fā)的技術(shù)層面應(yīng)該有過程、方法和工具。見圖1-4。(2)“過程”是軟件產(chǎn)品加工所經(jīng)歷的一系列有組織的活動,保證能夠合理、高質(zhì)量和及時地開發(fā)出軟件。過程定義的活動集合及其序列見第2章。(3)“方法”為軟件開發(fā)提供“如何做”的技術(shù),它涵蓋了項(xiàng)目計(jì)劃、需求分析、系統(tǒng)設(shè)計(jì)、程序?qū)崿F(xiàn)、測試與維護(hù)等一系列活動的做法。如經(jīng)常說的面向結(jié)構(gòu)、面向?qū)ο?、面向組件等開發(fā)方法,項(xiàng)目

3、管理中估算、度量、計(jì)劃等管理方法。軟件工程以介紹方法為主,本書從第3章開始逐步介紹開發(fā)過程所用到的方法。(4)“工具”為過程和方法提供自動的或半自動的支持。這些工具既包括軟件也有硬件。軟件工具包括編程、建模、管理等開發(fā)工具。通過網(wǎng)絡(luò)環(huán)境把這些軟件工具集成起來搭建一個支持團(tuán)隊(duì)開發(fā)的平臺,稱之為計(jì)算機(jī)輔助軟件工程(computer aided softwareengineering,case)。case集成了軟件、硬件和一個存放開發(fā)過程信息的軟件工程數(shù)據(jù)庫,形成了一個軟件工程環(huán)境。6.軟件工程的目標(biāo)、過程和原則是什么?答:目標(biāo)、過程、原則是一切工程的三維框架,它是以工程的觀點(diǎn)來看待軟件開發(fā)。見書1

4、.5.2節(jié)(1)軟件工程的目標(biāo):降低成本,及時交付高質(zhì)量的軟件產(chǎn)品(高質(zhì)量、高效率、高效益)。(2)實(shí)現(xiàn)目標(biāo)的過程:完成產(chǎn)品加工的過程。它包括:基本過程、支持過程和組織過程。(3)進(jìn)行過程應(yīng)遵守的原則:原則就是過程中的軌道約束。它包括:選取適宜開發(fā)范型、采用合適的設(shè)計(jì)方法、提供高質(zhì)量的工程支持、重視開發(fā)過程的管理。7.軟件工程原理有哪幾條?答:軟件工程的基本原理是指導(dǎo)軟件工程實(shí)踐的思想方法,一共有7條,這7條原理相互支撐,保證軟件產(chǎn)品的質(zhì)量和開發(fā)效率。見書1.5.4節(jié)。(1)用分階段的生命周期計(jì)劃嚴(yán)格管理;(2)堅(jiān)持進(jìn)行階段評審;(3)實(shí)行嚴(yán)格的產(chǎn)品控制;(4)采納現(xiàn)代程序設(shè)計(jì)技術(shù);(5)結(jié)果

5、應(yīng)能清楚地審查;(6)開發(fā)小組的人員應(yīng)少而精;(7)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性;2.軟件過程與軟件工程有什么區(qū)別和聯(lián)系?答:(1)過程與工程是兩個層面的問題,過程是加工高質(zhì)量軟件產(chǎn)品的活動集合和順序,具體的投入產(chǎn)出過程,關(guān)注在技術(shù)層面;工程是對過程的投入進(jìn)行資源協(xié)調(diào),是向過程要效益的管理層面。(2)軟件過程是軟件工程的子集。在軟件工程的過程、方法和工具三要素中,它是底層要素;在軟件工程的目標(biāo)、原則和過程三維全景圖中,通過軟件過程才能實(shí)現(xiàn)軟件工程的目標(biāo)。3.什么是軟件生命周期?與軟件過程有何區(qū)別和聯(lián)系?答:(1)軟件生存周期:軟件產(chǎn)品從定義到開發(fā)、經(jīng)過使用和維護(hù),直到最終被棄用;(2)兩者

6、指同一個事情,只是表達(dá)問題的角度不同:l軟件過程:關(guān)注產(chǎn)品加工的活動集合、順序和方法論;l生命周期:關(guān)注軟件產(chǎn)品從誕生到消亡的生命歷程,實(shí)質(zhì)內(nèi)容也就是軟件過程;因此軟件過程=軟件生存周期,“軟件生存周期模型”也稱為“軟件過程模型”或“軟件開發(fā)模型”。5.軟件生命周期劃分哪些階段?每個階段有哪些基本活動?答:生存周期的基本劃分:分成三個大的階段也稱三個時期,即計(jì)劃時期、開發(fā)時期和運(yùn)行時期。每個時期又由若干活動組成。l計(jì)劃時期:是軟件項(xiàng)目的初始階段。主要活動及順序是問題定義和可行性研究;活動內(nèi)容是搞清軟件的開發(fā)目的、規(guī)模、約束條件和技術(shù)方案,屬論證階段;目標(biāo)是獲取軟件開發(fā)項(xiàng)目。l開發(fā)時期:軟件開發(fā)

7、的第二階段。包括的活動及順序是分析、設(shè)計(jì)和實(shí)現(xiàn);活動內(nèi)容是逐步細(xì)化軟件模型、經(jīng)過編碼和測試,最終得到可運(yùn)行的軟件。開發(fā)時期屬實(shí)質(zhì)性開發(fā)階段;目標(biāo)是構(gòu)建高質(zhì)量的軟件。l運(yùn)行時期:軟件生存周期的最后階段,軟件處在運(yùn)行中,往往也是最長階段。主要活動就是維護(hù);活動內(nèi)容是治療和進(jìn)化軟件;目標(biāo)是延長軟件的壽命。6.介紹了哪四種傳統(tǒng)開發(fā)模型?各有何特點(diǎn)?答:瀑布、原型、增量、螺旋四個傳統(tǒng)模型:(1)瀑布模型:主要體現(xiàn)了分階段、有控制的思想。活動間強(qiáng)調(diào)按順序、文檔化;存在的問題是:過于理想化,每一步的工作必須完整準(zhǔn)確,否則無法進(jìn)行下一步工作。(2)原型模型:需求分析入手快速、表達(dá)直觀、容易交流。重點(diǎn)解決瀑布模

8、型需求分析入手難的問題。(3)增量模型:對于需求復(fù)雜的系統(tǒng),采用分塊開發(fā),逐步集成的開發(fā)策略。增量體現(xiàn)了演進(jìn)、迭代思想,每一塊就是一個增量。每個增量是一次迭代。增量模型的新版本叫做“極限編程”(xp)。(4)螺旋模型:融合了上述三種模型,融進(jìn)了循環(huán)往復(fù)、強(qiáng)化了演進(jìn)迭代的思想,增加風(fēng)險控制環(huán)節(jié)。但風(fēng)險分析的正確性是左右軟件演進(jìn)的關(guān)鍵因素。7.當(dāng)需求不能一次搞清,且系統(tǒng)要求比較復(fù)雜時應(yīng)選用哪種開發(fā)模型較適合?答:開發(fā)模型不是孤立或排斥的,相互借鑒和參考。在上述四種古典螺旋模型中,螺旋模型是一種綜合性的模型,適應(yīng)于較復(fù)雜的系統(tǒng)。8.rup模型有哪些優(yōu)越性?為何得到如此廣泛的應(yīng)用?答:rup采用了時間

9、與過程的二維表達(dá)方式,全面貫穿了軟件開發(fā)分段、分層、細(xì)化、往復(fù)、循環(huán)、迭代、并發(fā)、重疊、演進(jìn)、基線、里程碑、評審、控制等方法論。(1)生命周期模型分為初始、細(xì)化、構(gòu)造和交付四個階段,比三個時期的傳統(tǒng)模型更為合理。因?yàn)楦鞣N活動不是隨階段的劃分而戛然截止,每個階段多種活動是重疊、并發(fā)、延續(xù)、主次分明;(2)階段控制采用了基線與里程牌,工作有起點(diǎn)、有目標(biāo)、有計(jì)劃;(3)模型反映了軟件開發(fā)需要團(tuán)隊(duì)合作,因此rup是一個團(tuán)隊(duì)模型;(4)雙重迭代,大迭代(周期迭代)完成一個新版本,小迭代(階段內(nèi)迭代)完成里程牌目標(biāo);(5)rup并不是不講究維護(hù),維護(hù)只是一個新的增量迭代(周期迭代)過程,在過程集合中有“配

10、置和變更管理”活動來管理軟件的維護(hù);1.軟件計(jì)劃時期有哪些工作活動?目標(biāo)是什么?答:軟件計(jì)劃是基本生命周期模型中的的第一個階段,作為項(xiàng)目的起點(diǎn),多數(shù)活動處在商務(wù)層面,面向決策層。主要活動有三項(xiàng):(1)問題研究;(2)可行性研究;(3)項(xiàng)目計(jì)劃。該階段目標(biāo)就是完成產(chǎn)品立項(xiàng),中心工作是確定開發(fā)什么樣的軟件、是否值得去開發(fā)、繼而作出初步的安排。在rup模型中屬于“初始階段”,它的里程牌就是“軟件目標(biāo)”。2.問題定義階段的目的、任務(wù)是什么?答:l問題定義階段的目的:弄清要計(jì)算機(jī)解決的根本問題所在(目的),確定新系統(tǒng)的作用域(范圍與規(guī)模),以及項(xiàng)目所需的資源、工期和經(jīng)費(fèi)。就是搞清解決問題的題意和約束條件

11、。l主要任務(wù):在向用戶調(diào)查研究的基礎(chǔ)上,編寫項(xiàng)目報(bào)告提交審查,并作為下一次工作可行性分析的依據(jù)。3.可行性研究的目的、任務(wù)是什么?答:l可行性研究的目的:確定項(xiàng)目以最小的代價在盡可能短(限定)時間里是否能夠開發(fā),是否值得去開發(fā)。即在約束條件下問題是否有解。l可行性分析的主要任務(wù):可行性分析,寫可行性報(bào)告,作出開發(fā)計(jì)劃。在了解客戶的要求及現(xiàn)實(shí)環(huán)境基礎(chǔ)上,從技術(shù)、經(jīng)濟(jì)和社會因素等三方面研究并論證本軟件項(xiàng)目的可行性,編輯可行性研究報(bào)告,制定初步項(xiàng)目開發(fā)計(jì)劃。4.從哪幾個方面研究可行性?分別考慮什么問題?答:可行性研究從技術(shù)可行性,經(jīng)濟(jì)可行性,社會可行性三個方面研究;l技術(shù)可行性包括開發(fā)風(fēng)險分析,資源

12、分析,技術(shù)分析;分析利用現(xiàn)有的技術(shù)能否實(shí)現(xiàn),能否解決系統(tǒng)中的技術(shù)難題,所開發(fā)的系統(tǒng)能否達(dá)到所要求的功能和性能,系統(tǒng)對技術(shù)人員的要求,現(xiàn)有的技術(shù)人員能否勝任,開發(fā)所需的軟件與硬件能否如期得到等;l經(jīng)濟(jì)可行性包括一次性開發(fā)費(fèi)用的估算,年運(yùn)行費(fèi)用的估算,效益估算;上述估算的基礎(chǔ)是正確估算出軟件的規(guī)模,進(jìn)而才能估算出工期、資源和成本。l社會可行性主要考慮市場,政策和法律方面問題;5.技術(shù)可行性分析的步驟?答:l復(fù)查確認(rèn)系統(tǒng)目標(biāo)、規(guī)模;l研究目前正在使用系統(tǒng)工作流程;l導(dǎo)出要實(shí)現(xiàn)的新系統(tǒng)高層邏輯模型;l重新定義問題;l導(dǎo)出和評價供選擇的方案;l推薦可行的方案;6.技術(shù)可行性研究中可用什么圖形工具表達(dá)現(xiàn)有

13、系統(tǒng)的模型?答:可行性研究中也需要建立一些模型,如業(yè)務(wù)模型、數(shù)據(jù)模型、需求模型等。一般表達(dá)現(xiàn)有系統(tǒng)可采用物理模型,如表達(dá)現(xiàn)有工作流程可采用sfd,它不需要專用的建模工具,用office的word或visio就可畫sfd,并且sfd沒有專業(yè)的語法要求,其表達(dá)含義雙方都可理解,容易交流。7.經(jīng)濟(jì)可行性研究的內(nèi)容?答:1)一次性開發(fā)費(fèi)用的估算:主要是硬件設(shè)備,人員工資,培訓(xùn),材料消耗;2)年運(yùn)行費(fèi)用估算:主要是維護(hù)人員,軟件硬件升級,消耗品;3)效益的估算:經(jīng)濟(jì)效益與社會效益;8.可行性分析階段最終提交什么分析成果?答:最終要提交可行性研究報(bào)告:將可行性分析的結(jié)果寫在報(bào)告里,這是立項(xiàng)的基礎(chǔ)文件;一旦

14、項(xiàng)目確立實(shí)施,項(xiàng)目組進(jìn)一步編制“項(xiàng)目計(jì)劃書”3.討論:問題定義和可行性研究之間的傳承關(guān)系參考:問題定義和可行性研究之間的傳承關(guān)系如同解決一個數(shù)學(xué)問題一樣:l問題定義是搞清軟件的性質(zhì)、規(guī)模、工期、投資等給定的約束條件。這相當(dāng)于給出一道文字描述的數(shù)學(xué)應(yīng)用題,解題前首先要清楚這是一個解決天文的、電磁學(xué)的、熱學(xué)的還是化學(xué)的等哪方面問題?是離散的還是連續(xù)的?給定的條件有哪些?搞清問題的邊界。l可行性分析相當(dāng)于找出解題的思路:首先看這個題是否在自己的解題能力范圍之內(nèi),根據(jù)自己的能力(基礎(chǔ)和經(jīng)驗(yàn))確定問題是否可解,若問題難度遠(yuǎn)遠(yuǎn)超過自己的能力,就不存在下一步。若可解,進(jìn)一步考慮解題的方案及模型。因此軟件可行

15、性分析,就是研究在現(xiàn)有掌控的技術(shù)和人力資源下,在限定的工期、經(jīng)費(fèi)條件下,是否做到所要求的功能和質(zhì)量要求。這就是教材中講述的“可行性研究是確定項(xiàng)目用最小代價在盡可能短的時間內(nèi)是否能夠開發(fā),是否值得去開發(fā)”。這也就是涉及到技術(shù)、經(jīng)濟(jì)和法律上的問題。4.討論:技術(shù)可行性分析的業(yè)務(wù)模型有何作用?參考:在現(xiàn)代的軟件開發(fā)中,業(yè)務(wù)建模越來越受到重視。但是在“軟件工程”的教材和教學(xué)中幾乎都忽略了這個過程。商業(yè)建模是針對整個企業(yè)或部分業(yè)務(wù)的組織結(jié)構(gòu)、工作流程、人員職責(zé)、基礎(chǔ)數(shù)據(jù)的全面描述。業(yè)務(wù)建模是分析要實(shí)行的軟件部分在企業(yè)中的地位、關(guān)系和功能,業(yè)務(wù)建模是“軟件模型”的上一個層面,是商務(wù)層面使用的模型,也是理解

16、和建立軟件“需求模型”的基礎(chǔ),它促使軟件模型邊界清晰、關(guān)系明確、需求完整。5.討論:計(jì)劃時期是基本軟件生命周期模型的第一個時期,請與rup模型的生命周期模型比較,進(jìn)一步理解rup中的“初始”和“細(xì)化”兩個工作階段;參考:軟件基本生命周期模型的“計(jì)劃時期”主要有“問題定義”和“可行性研究”兩個活動,這兩個活動對應(yīng)在rup模型的“初始階段”,無論用哪個模型這個階段都是要確定“軟件目標(biāo)”,搞清軟件“干什么”。至于軟件“怎么干”和“如何做出”軟件,在rup模型中就是“細(xì)化階段”,它對應(yīng)軟件基本生命周期模型中的“開發(fā)時期”的分析和設(shè)計(jì)兩個活動,通過細(xì)化得到“軟件結(jié)構(gòu)”。但是rup的二維表達(dá)模型更為合理,

17、階段間的各種活動不是戛然而止,而是延續(xù)、并行、交互,主次分明,充分體現(xiàn)重疊、迭代、里程牌等思想。6.討論:這個階段要做很多估算和計(jì)劃,比如規(guī)模估算、工期估算、成本估算等,你會做嗎?這說明你還需要進(jìn)一步學(xué)習(xí)什么方面的知識?參考:這些技術(shù)將在軟件的項(xiàng)目管理中來學(xué)習(xí),在本書的第10章介紹。軟件工程知識體系的一個重要部分就是工程化管理,然而軟件工程的教育依然集中在技術(shù)方面,主要還是放在分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)的技術(shù)層面,而忽視管理方面的知識。管理知識是工科教育的短板,教學(xué)內(nèi)容少,學(xué)生對此學(xué)習(xí)也缺乏興趣。4.討論:rup表示的軟件生命周期與圖2-2的生命周期模型有何進(jìn)步?參考答案:l圖2-2是基本的生命周

18、期模型,分為計(jì)劃、開發(fā)、維護(hù)三個時期,每個時期活動的安排是順序、單一、非此即彼,屬于早期的“個體模型”,它不能反映團(tuán)隊(duì)開發(fā)的真實(shí)狀況;lrup的生命周期模型,分為初始、細(xì)化、構(gòu)造、交付四個階段,每個階段活動的安排是主次重疊、漸進(jìn)展開、往復(fù)迭代,并且有基線和里程牌。因此,它能反映團(tuán)隊(duì)并行合作的工作狀況,因此可以更好地做好時間和資源規(guī)劃,更好地做好控制。1.需求分析與需求工程是什么關(guān)系?答:參見4.1.2節(jié)和圖4-4。從圖4-4中可知,需求分析只是需求工程所進(jìn)行的眾多活動當(dāng)中的一項(xiàng)主要活動,它的活動屬于技術(shù)層面。有的教材和課堂教學(xué)中只是提及“需求分析”,沒有從需求工程的角度去介紹需求分析。在當(dāng)代的

19、軟件工程中,應(yīng)當(dāng)建立完整的需求工程概念,而不僅僅是需求分析。當(dāng)今“需求管理”與“需求開發(fā)”同樣重要,有關(guān)需求的變更管理、版本控制等應(yīng)用原理、技術(shù)和工具越來越受到重視,因?yàn)樗绕痖_發(fā)初期的工作時間更長,難度更大。甲方考察軟件承制單位一項(xiàng)重要的能力成熟度內(nèi)容就是“需求管理”能力,而不僅僅是開發(fā)能力。2.為什么必須進(jìn)行需求分析?答:參見4.1.1節(jié)。1)需求分析是進(jìn)入軟件開發(fā)的第一步工作,萬事開頭難;2)需求分析是用戶與開發(fā)者共同參與的結(jié)果,用戶與開發(fā)者對需求達(dá)到理解一致所必須經(jīng)過的“磨合期”;3)需求分析的結(jié)果相當(dāng)于技術(shù)合同,開發(fā)方以此提供功能,用戶以此驗(yàn)收;3.需求分析的目的和工作目標(biāo)是什么?1

20、)目的是:弄清用戶對系統(tǒng)的細(xì)節(jié)要求,完整、準(zhǔn)確、清晰、具體地回答目標(biāo)系統(tǒng)“做什么”。2)目標(biāo)是:是對用戶提出的軟件功能、性能等應(yīng)用問題及其環(huán)境進(jìn)行分析與理解,采用一系列的分析方法和技術(shù),把系統(tǒng)可行性分析階段產(chǎn)生的系統(tǒng)規(guī)格說明和項(xiàng)目規(guī)劃逐步精確化、完全化、一致化,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,最終形成需求規(guī)格說明文檔的過程。4.需求開發(fā)經(jīng)過哪些步驟?每個步驟有何作用?答:通過4項(xiàng)具體活動達(dá)目標(biāo):需求獲取、需求分析、編寫文檔、需求驗(yàn)證。(1)需求獲取 即調(diào)查軟件需求,需求是用戶對目標(biāo)軟件系統(tǒng)在功能 性能 行為 設(shè)計(jì)約束等方面的期望。(2)需求分析 分析建模也稱需求建模,建模是對現(xiàn)實(shí)

21、世界進(jìn)行抽象的過程;通過符號和文字說明來描述系統(tǒng)模型,使用戶和開發(fā)者之間建立共同的語言基礎(chǔ),消除理解歧義。(3)需求說明 編寫需求文檔,也稱編寫需求規(guī)格說明書,或稱需求說明 需求描述。 需求說明書是需求階段的最終成果,也是需求分析階段復(fù)審的依據(jù);是用戶領(lǐng)域?qū)<?軟件分析師 軟件設(shè)計(jì)師共同交流的途徑和媒介;是交付給用戶文檔的一部分。(4)需求驗(yàn)證 即需求評審 。 根據(jù)需求說明書,分析師 設(shè)計(jì)師 客戶會審文檔,對需求的正確性 一致性 完整性 五二義性進(jìn)行評審 確認(rèn)。6.什么是需求模型?需求模型的承上啟下是什么意義?答:參見4.3.1節(jié)。需求模型:是根據(jù)用戶需求建立的目標(biāo)軟件的邏輯模型。需求模型起到

22、承上啟下的作用:l承上:面向用戶,指與領(lǐng)域?qū)<业臏贤?,反映用戶的需求。l啟下:面向設(shè)計(jì),指需求模型作為設(shè)計(jì)階段的輸入,反映系統(tǒng)要實(shí)現(xiàn)的功能。7.模型的表達(dá)有哪些形式?答:參見4.3.3節(jié)。需求建模有兩大方法:1)非形式化的方法,如用自然語言、半形式化語言、圖形符號、表格等方式對需求規(guī)格進(jìn)行描述;2)形式化的方法,采用嚴(yán)格的數(shù)學(xué)模型,這種方法目前常見的是z語言和petri網(wǎng)。8.需求分析和需求說明的質(zhì)量要求有哪些?答:參見4.4.2節(jié)。需求分析和需求說明要達(dá)到:l正確性;l無歧義性;l完整性;l一致性;l重要性/穩(wěn)定性分級;l可驗(yàn)證性;l可修改性;l可追蹤性;1.理解應(yīng)用軟件開發(fā)是一個從“抽象”

23、到“具體”的求精過程。答:參見5.1.2節(jié)和圖5-1。應(yīng)用軟件開發(fā)就是將“客觀世界”表達(dá)在“計(jì)算機(jī)世界”里由“抽象”到“具體”的求精過程。軟件的最高級抽象用面向領(lǐng)域問題的語言敘述“問題”,通常就是用自然語言概括。具體化就是計(jì)算機(jī)語言編制的程序。軟件過程本身的每一步都是對較高一級抽象作一次具體化的處理,即利用不同的語言對模型進(jìn)行逐步細(xì)化,模型從“分析模型”到“設(shè)計(jì)模型”再到“編碼模型”。這三段模型對應(yīng)的是三種描述語言,分別是“自然語言”、“建模語言”和“計(jì)算機(jī)語言”。建模語言就是把自然語言轉(zhuǎn)換成計(jì)算機(jī)語言的過渡性語言。2.過程與數(shù)據(jù)的求精是怎樣逐步具體化的?答:參見5.1.3節(jié)。結(jié)構(gòu)化的精化過程

24、主要是針對過程和數(shù)據(jù)進(jìn)行:過程抽象:把用文字形成的功能描述演變成代碼。數(shù)據(jù)抽象:文字表達(dá)的數(shù)據(jù)結(jié)構(gòu)演變成數(shù)據(jù)庫表。3.軟件設(shè)計(jì)與需求分析有何關(guān)系?答:參見5.2.1節(jié)和圖5-3。軟件設(shè)計(jì)可看作將需求規(guī)格說明逐步轉(zhuǎn)換為軟件源代碼的中間過渡過程?;顒虞斎耄盒枨笠?guī)格說明書;活動輸出:設(shè)計(jì)規(guī)格說明書;活動目標(biāo):需求模型轉(zhuǎn)換成設(shè)計(jì)模型;活動過程:層層分解,逐步求精;4.軟件設(shè)計(jì)的任務(wù)和工作目標(biāo)是什么?答:參見5.2.2節(jié)。目標(biāo):將需求模型細(xì)化成設(shè)計(jì)模型,形成“設(shè)計(jì)規(guī)格說明書”。任務(wù):總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)是根據(jù)需求確定軟件和數(shù)據(jù)的總體框架,詳細(xì)設(shè)計(jì)是將其進(jìn)一步精化成軟件的算法表示和數(shù)據(jù)結(jié)構(gòu)。5.概

25、要設(shè)計(jì)中的體系結(jié)構(gòu)設(shè)計(jì)與領(lǐng)域問題結(jié)構(gòu)設(shè)計(jì)有什么區(qū)別?答:參見5.2.2節(jié)。概要設(shè)計(jì)也稱總體設(shè)計(jì)即為結(jié)構(gòu)設(shè)計(jì)。要完成兩大結(jié)構(gòu):l體系結(jié)構(gòu):軟件總體架構(gòu)、運(yùn)行環(huán)境的設(shè)計(jì)。如同建筑結(jié)構(gòu)中的基礎(chǔ)結(jié)構(gòu)、主體梁柱、空間分層、房間布局、通道布置、水電基礎(chǔ)設(shè)施等設(shè)計(jì),是優(yōu)先考慮的設(shè)計(jì)。當(dāng)然不同的需求所采用的體系結(jié)構(gòu)不同,如民居和賓館、廠房和商場、學(xué)校和火車站等都是不同的建筑體系。桌面軟件、web軟件、嵌入式軟件等等到具有不同的軟件體系;l領(lǐng)域結(jié)構(gòu);是滿足需求的軟件功能設(shè)計(jì),是對分析結(jié)果進(jìn)行細(xì)化,劃分出軟件的模塊結(jié)構(gòu)及確定模塊之間的關(guān)系。領(lǐng)域結(jié)構(gòu)的劃分是基于體系結(jié)構(gòu)框架內(nèi)的設(shè)計(jì)。比如按“學(xué)?!苯ㄖw系設(shè)計(jì)好之后

26、,才能夠進(jìn)一步按課堂教學(xué)、實(shí)驗(yàn)教學(xué)、院系等模塊結(jié)構(gòu)設(shè)計(jì)每層、每個房間的結(jié)構(gòu)和功能。如果按火車站體系安排學(xué)校的功能,其效果可想而知。6.什么是模塊、模塊化?軟件設(shè)計(jì)為什么要模塊化?答:參見5.3.1和5.3.2節(jié)。1)模塊:是完成特定功能的程序?qū)嶓w。模塊是構(gòu)成程序的基本構(gòu)件。2)模塊化:指解決一個復(fù)雜問題時自頂向下逐層分解成若干模塊的過程。每個模塊完成一個特定的子功能,所有模塊按系統(tǒng)結(jié)構(gòu)組裝起來,完成整個系統(tǒng)所要求的功能。3)模塊化設(shè)計(jì)將問題簡化,劃分模塊可使每一個模塊完成單一功能;可以獨(dú)立地進(jìn)行模塊的編碼測試,便于軟件開發(fā)工作的組織;把每一個模塊要解決的問題局限在有限的范圍,減少出錯機(jī)會;便于

27、糾錯;便于對特定的模塊進(jìn)行優(yōu)化處理;一個模塊可被重復(fù)使用,提高軟件產(chǎn)品的復(fù)用率;程序易于理解;利于估計(jì)工作量和開發(fā)成本。7.模塊的信息為什么要隱藏?答:參見5.3.3節(jié)。信息隱藏就是模塊內(nèi)部的信息私有化,減少模塊間的耦合。有利于并行開發(fā)、獨(dú)立測試、模塊復(fù)用、功能擴(kuò)展和維護(hù)。8.用什么衡量模塊是否是獨(dú)立的,如何區(qū)分模塊獨(dú)立的程度?答:參見5.3.4節(jié)。采用內(nèi)聚度、耦合度衡量模塊的獨(dú)立性:l內(nèi)聚度:模塊內(nèi)部各個元素間(語句和程序段)的緊密程度,模塊的內(nèi)部特征。l耦合度:模塊之間相互聯(lián)系緊密的程度,模塊的外部特征。在內(nèi)外兩個特征上,模塊的獨(dú)立程度以外部特征(耦合度)為主要特征。耦合度的分級見表5-2

28、。9.為什么要進(jìn)行模塊優(yōu)化?模塊優(yōu)化有哪些概念?答:參見5.3.5節(jié)。模塊優(yōu)化的這些概念起源于結(jié)構(gòu)化設(shè)計(jì),但對面向?qū)ο笤O(shè)計(jì)仍有指導(dǎo)意義。從分析模型到設(shè)計(jì)模型要經(jīng)過映射,把功能表達(dá)要映射成軟件的結(jié)構(gòu),初始的結(jié)構(gòu)劃分不一定完善,模塊優(yōu)化就是對初始結(jié)構(gòu)的劃分做一些調(diào)整。主要的概念有:1)模塊的作用域與控制域l模塊的作用域:受該模塊內(nèi)一個判定影響的所有模塊的集合(從功能方面考慮);l模塊的控制域:包括它自己及其所有下屬模塊的集合(從結(jié)構(gòu)方面考慮)。優(yōu)化原則是:模塊的作用域應(yīng)在控制域之內(nèi)。2)深度/寬度與扇入/扇出l一個軟件結(jié)構(gòu)的深度(depth)表示控制的層數(shù);l一個軟件結(jié)構(gòu)的寬度(width)表示控

29、制的跨度;l一個模塊的“扇出數(shù)”(fanout)指該模塊直接控制的其他模塊數(shù)(依賴性);l一個模塊的“扇入數(shù)”(fanin)指能直接控制該模塊的上級模塊數(shù)(復(fù)用性);優(yōu)化原則是:寬度和深度適中,扇入和扇出要適當(dāng)。3)模塊要單入口單出口、大小要適中,盡量松耦合。1.什么是軟件結(jié)構(gòu)化?答:參見6.1節(jié)。軟件結(jié)構(gòu)化是以程序模塊化為基礎(chǔ)建立起來的軟件機(jī)體,結(jié)構(gòu)的基本單元是模塊,模塊的相互作用實(shí)現(xiàn)功能,模塊的組合構(gòu)成系統(tǒng)。結(jié)構(gòu)化開發(fā)是一種軟件開發(fā)方法學(xué),它是從分析、設(shè)計(jì)及實(shí)現(xiàn)的軟件生命周期遵循結(jié)構(gòu)化思想。結(jié)構(gòu)化的核心思想是對領(lǐng)域問題模塊化,模塊具有獨(dú)立性,采用自定向下、逐層分解、層層細(xì)化的開發(fā)過程。2.

30、結(jié)構(gòu)化開發(fā)有哪兩種方法?通常所說的結(jié)構(gòu)化指的是哪一個?答:結(jié)構(gòu)化開發(fā)方法有:面向數(shù)據(jù)結(jié)構(gòu)的方法和面向數(shù)據(jù)流的方法。通常介紹的結(jié)構(gòu)化方法是面向數(shù)據(jù)流的方法。3.結(jié)構(gòu)化分析的需求模型由哪三部分組成?答:參見6.2節(jié)。結(jié)構(gòu)化建立的需求模型由功能模型、數(shù)據(jù)模型和行為模型組成。4.數(shù)據(jù)流圖dfd用來做什么?數(shù)據(jù)字典dd做什么?dfd+dd是表達(dá)什么?答:參見6.2.1節(jié)和6.2.4節(jié)。dfd+dd是表達(dá)系統(tǒng)的功能模型。數(shù)據(jù)流圖dfd采用數(shù)據(jù)被加工的流向來描述系統(tǒng)功能;而數(shù)據(jù)字典dd是對dfd圖的補(bǔ)充說明:說明數(shù)據(jù)流和數(shù)據(jù)存儲的數(shù)據(jù)結(jié)構(gòu);說明數(shù)據(jù)加工的邏輯。5.畫dfd分析法有哪三條基本原則?答:參見6.

31、2.2節(jié)?;跀?shù)據(jù)流技術(shù)的分析思想,遵循三條基本原則:抽象、分解、投影。1)問題抽象:歸納復(fù)雜現(xiàn)象達(dá)到高度聚類。2)問題分解:分解能降低問題的復(fù)雜程度。3)多視角分析:即事物的投影,從不同側(cè)面對問題全面理解。6.一個復(fù)雜系統(tǒng)的dfd采用什么做法進(jìn)行細(xì)化?答:參見圖6-2和6.2.3節(jié)。數(shù)據(jù)流圖采用分層繪制,貫徹自頂向下、逐層分解、層層細(xì)化的分析理念。頂層數(shù)據(jù)流圖(系統(tǒng)級抽象層);零層數(shù)據(jù)流圖(功能模塊級抽象層);各子層數(shù)據(jù)流圖(子功能模塊抽象層);7.在設(shè)計(jì)時dfd被映射成什么?答:參見和6.3節(jié)和圖6-4。從需求分析得到的功能模型(ded+dd)、數(shù)據(jù)模型(dd +e_r)和行為模型(std

32、)三大模型映射成兩大設(shè)計(jì):總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)??傮w設(shè)計(jì)任務(wù)之一是“系統(tǒng)結(jié)構(gòu)設(shè)計(jì)”,它是把分析模型dfd圖映射得到的軟件模塊結(jié)構(gòu),即把系統(tǒng)的功能需求轉(zhuǎn)換成軟件結(jié)構(gòu),形成軟件模塊結(jié)構(gòu)圖。見圖6-5的示意。8.dfd有哪兩種映射類型?答:參見6.3.3節(jié)和圖6-7。任意復(fù)雜的dfd都可以劃分成兩種類型的dfd,一種是變換型,一種是事務(wù)性。然后按映射規(guī)則映射出軟件結(jié)構(gòu)sc圖。sc圖表達(dá)了模塊之間的調(diào)用關(guān)系,也就是形成了領(lǐng)域問題的軟件結(jié)構(gòu)。1什么是對象?對象有哪些本源特征?怎樣理解對象的每個本源性?答:對象就是客觀世界存在的實(shí)體,就是客觀事物object。對象的本源性是指客觀萬物的存在的共有特征:整體性

33、、關(guān)聯(lián)性、交互性、繼承性、多態(tài)性。l整體性:客觀事物都具有屬性和行為,屬性和行為是事物的整體性,有時兩者合起來才能反映事物之間的區(qū)別。l關(guān)聯(lián)性:客觀事物都不是孤立存在的,關(guān)聯(lián)性表達(dá)客觀事物的社會性、共存性、組織性,是靜態(tài)的結(jié)構(gòu)描述,。l交互性:對象生存環(huán)境的依賴性。萬物之間相互依存的另一個體現(xiàn)就是交互。object交互才保持整個客觀世界機(jī)體運(yùn)作的活力,才能生存和進(jìn)化。l繼承性:object具有血緣關(guān)系,有家族譜,而且去腐生新,不斷進(jìn)化。l多態(tài)性:對象在不同的條件下,同樣的行為會表現(xiàn)不同的效果。注意一個重要概念:通常介紹面向?qū)ο缶哂谐橄笮?、封裝性、繼承性、多態(tài)性和消息機(jī)制這五個特性,其中抽象性、

34、封裝性并非對象的本源性。對象與面向?qū)ο笫莾蓚€概念。抽象性與封裝性是面向?qū)ο蟮娜祟惢顒印R娤旅娴膯栴}2。2什么是面向?qū)ο??面向?qū)ο笥惺裁刺攸c(diǎn)?答:面向?qū)ο螅╫bject oriented):是人類的活動,是人類認(rèn)知、觀察客觀事物的方法論。面向?qū)ο筇攸c(diǎn)是:面向客觀存在,面向事物的本源性。它能容易地、真實(shí)地表達(dá)客觀問題并映射到計(jì)算機(jī)世界。3與面向結(jié)構(gòu)化開發(fā)過程相比,為什么面向?qū)ο竽芨鎸?shí)地反映客觀世界?答:結(jié)構(gòu)化也就是面向過程的方法:從客觀事物的行為出發(fā),肢解客觀事物的整體性,從分析、設(shè)計(jì)到編程完全看不出事物的原貌;面向?qū)ο螅簭挠^察、抽象客觀事物開始,就以事物原貌、事物的整體為出發(fā)點(diǎn)。從分析、設(shè)計(jì)、

35、編程一直反映事物的原貌,它利用事物具有整體性、關(guān)聯(lián)性、交互性、繼承性和多態(tài)性的本源特征映射領(lǐng)域問題到計(jì)算機(jī)世界中。4面向?qū)ο蟮臄?shù)據(jù)訪問與直接面向數(shù)據(jù)的訪問有何區(qū)別?答:參見7.1.3節(jié)和7.4.5節(jié)內(nèi)容面向?qū)ο蟮臄?shù)據(jù)訪問是操作實(shí)體對象,實(shí)體對象是占用計(jì)算機(jī)內(nèi)存中的資源,是臨時狀態(tài),對象經(jīng)持久化后才得以永久性保存。將對象持久化保存到關(guān)系數(shù)據(jù)庫是一種選擇方案,并且是目前應(yīng)用最廣泛的實(shí)現(xiàn)方案。它與面向數(shù)據(jù)訪問的區(qū)別是:數(shù)據(jù)訪問是直接利用sql語句操作關(guān)系數(shù)據(jù)庫中的數(shù)據(jù);而面向?qū)ο蟛⒎侨绱耍瑢ο笈c數(shù)據(jù)源之間有一個隔離層,也稱or映射層或數(shù)據(jù)管理層,正是這層的作用,使對象層和資源層分離開發(fā)和維護(hù)。5uml是什么?在軟件開發(fā)過程中有何作用?答:uml是用于面向?qū)ο蠓椒ㄟM(jìn)行分析和設(shè)計(jì)的建模語言,統(tǒng)一是指對以前不同的建模符號和方法存在的差異性進(jìn)行統(tǒng)一。建模語言就是設(shè)計(jì)語言,是從自然語言到計(jì)算機(jī)語言的中間的過渡性語言,它提供表達(dá)設(shè)計(jì)語義的語法或圖形符號,用它來建立軟件的模型。6在軟件模型當(dāng)中如何表達(dá)對象的整體性、關(guān)聯(lián)性、交互性、繼承性、多態(tài)性?答:參見7.2.5節(jié)n整體性:通過面向?qū)ο蟮姆庋bclass形式來體現(xiàn);n關(guān)聯(lián)性:指一般關(guān)系和組成關(guān)系:一般關(guān)系指主次關(guān)系、擁有關(guān)系、數(shù)量關(guān)系;整體部分關(guān)系是

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論