軟件工程復(fù)習(xí)_第1頁
軟件工程復(fù)習(xí)_第2頁
軟件工程復(fù)習(xí)_第3頁
軟件工程復(fù)習(xí)_第4頁
軟件工程復(fù)習(xí)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1. 軟件的概念:軟件是計(jì)算機(jī)系統(tǒng)屮的一個重要組成部分,它是包括程序相關(guān)文檔的完整集合。其中,程序是桉事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列;文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文材料。同時,軟件是用戶和硬件之間的接口,用戶通過軟件與計(jì)算機(jī)進(jìn)行交互。 軟件由兩部分組成:計(jì)算機(jī)程序和相關(guān)文檔。 軟件是用戶和硬件之間的接口。2. 軟件的特點(diǎn)1) 軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體,因而它具有抽象性。2) 軟件是開發(fā)出來的,不是制造出來的。3) 軟件可能被廢棄,但不會被用壞。4) 以往的軟件大多是定制的,而不是裝配的。5) 軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制,對計(jì)算機(jī)系統(tǒng)有著不同程度的依

2、賴性。3. 軟件的分類(按照軟件的作用)1) 系統(tǒng)軟件:能與計(jì)算機(jī)系統(tǒng)緊密配合在一起,使計(jì)算機(jī)系統(tǒng)各部分、相關(guān)軟件和數(shù)據(jù)協(xié)調(diào)高效工作的軟件。2)應(yīng)用軟件:在系統(tǒng)軟件的支持下,在特定領(lǐng)域內(nèi)開發(fā),為特定目的服務(wù)的一類軟件。3)支撐軟件:也叫工具軟件,是協(xié)助用戶開發(fā)軟件的工具性軟件。4)可復(fù)用軟件:各種標(biāo)準(zhǔn)函數(shù)庫,其中的標(biāo)準(zhǔn)函數(shù)不需構(gòu)造,可直接使用。4. 軟件的發(fā)展1) 程序設(shè)計(jì)階段(19461956年)這一階段從第一臺計(jì)算機(jī)上的第一個程序出現(xiàn)持續(xù)到實(shí)用的高級程序設(shè)計(jì)語言出現(xiàn)以前。這一階段系統(tǒng)開發(fā)的主要特點(diǎn)是:(1) 程序設(shè)計(jì)是一種由人發(fā)揮創(chuàng)造才能的技術(shù)領(lǐng)域。(2) 程序開發(fā)者只是為了滿足自己的需要

3、,對和程序有關(guān)的文檔的重要性認(rèn)識不足。2) 程序系統(tǒng)階段(19561968年)這一階段從實(shí)用的高級程序設(shè)計(jì)語言出現(xiàn)持續(xù)到軟件工程出現(xiàn)。采用了實(shí)用的高級程序設(shè)計(jì)語言,出現(xiàn)了操作系統(tǒng),開始使用數(shù)據(jù)庫及其管理系統(tǒng)。在軟件發(fā)展的這個階段,由于軟件的復(fù)雜程度提高,規(guī)模增大,研制周期較長,而軟件技術(shù)的進(jìn)步不能滿足發(fā)展的要求,軟件質(zhì)量得不到保證,成本不斷提升,軟件開發(fā)的生產(chǎn)率無法提高,致使問題積累起來,形成了日益尖銳的矛盾。這就導(dǎo)致了軟件危機(jī)。問題歸結(jié)起來有:(1)軟件開發(fā)無計(jì)劃性;(2)軟件需求不充分;(3)軟件開發(fā)過程無規(guī)范;(4)軟件產(chǎn)品無譯測手段。3) 軟件工程階段(1968年以來)軟件工程出現(xiàn)以后

4、迄今為軟件工程階段。這一階段的特點(diǎn):1 軟件應(yīng)用領(lǐng)域不斷擴(kuò)展;2 開發(fā)方式逐步由個體合作方式轉(zhuǎn)向工程方式;3 致力研究軟件開發(fā)過程本身,研究各種軟件開發(fā)范型與模型;4 除了軟件傳統(tǒng)技術(shù)繼續(xù)發(fā)展外,人們著重研究以智能化、自動化、集成化、并行化以及自然化為目標(biāo)的軟件開發(fā)新技術(shù);5 注意研究軟件理論,特別是軟件開發(fā)過程的本質(zhì)。5軟件工程的定義SE(Software Engineering)是指導(dǎo)軟件開發(fā)和維護(hù)的工程性學(xué)科,它以計(jì)算機(jī)科學(xué)理論和其他相關(guān)學(xué)科的理論為指導(dǎo),采用工程化的概念、原理、技術(shù)和方法進(jìn)行軟件的開發(fā)和維護(hù),把經(jīng)過時間考驗(yàn)而證明是正確的管理技術(shù)和當(dāng)前能夠得到的最好技術(shù)方法結(jié)合起來,以較

5、少的代價獲得高質(zhì)量的軟件并維護(hù)它。6軟件工程的框架軟件工程目標(biāo):生產(chǎn)具有正確性、可用性及開銷適宜的產(chǎn)品。1)正確性:表明軟件產(chǎn)品達(dá)到預(yù)期功能的程度2)可用性:表明軟件基本結(jié)構(gòu)、實(shí)現(xiàn)和文檔為用戶所接受的程度。3)開銷適宜:表明軟件開發(fā)、運(yùn)行的整個開銷滿足用戶要求的程度。軟件工程活動:生產(chǎn)一個最終滿足需求并達(dá)到工程目標(biāo)要求的軟件產(chǎn)品所需要的一系列步驟。1) 需求分析:需求獲取目的在于獲取軟件需求定義;分析建模目的在于生成詳細(xì)的分析模型和需求規(guī)格說明。2) 設(shè)計(jì):概要設(shè)計(jì)建立整個軟件體系結(jié)構(gòu);詳細(xì)設(shè)計(jì)產(chǎn)生編程人員可用的模塊說明。 3)實(shí)現(xiàn):把設(shè)計(jì)結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。 4)驗(yàn)證和確認(rèn):貫穿于整

6、個開發(fā)過程,目的確保產(chǎn)品滿足用戶的要求。 5)支持:包括修改和完善。軟件工程的基本原則: 選取適宜的開發(fā)范型。在系統(tǒng)設(shè)計(jì)中,軟件需求、硬件需求以及其他因素之間是相互制約、相互影響的,經(jīng)常需要進(jìn)行權(quán)衡。因此,必須認(rèn)清需求定義的易變性,采用適當(dāng)?shù)拈_發(fā)范型。 采用合適的設(shè)計(jì)方法。在軟件設(shè)計(jì)中,通常需要考慮軟件的模塊化、抽象和信息隱蔽、局部化、一致性、適應(yīng)性等特征。合適的設(shè)計(jì)方法有助于這些特征的實(shí)現(xiàn),以達(dá)到軟件工程的目標(biāo)。 提供高質(zhì)量的工具支持。在軟件工程中,軟件工具與環(huán)境對軟件工程的支持非常重要。 重視開發(fā)過程的管理。軟件工程的管理工作直接影響能否有效利用可用資源、生產(chǎn)滿足要求的軟件產(chǎn)品以以及提高軟

7、件組織的生產(chǎn)能力等問題。7軟件工程的基本原理1) 按軟件生存周期分階段制定計(jì)劃并認(rèn)真實(shí)施2) 堅(jiān)持進(jìn)行階段評審3) 堅(jiān)持嚴(yán)格的產(chǎn)品控制4) 使用現(xiàn)代程序設(shè)計(jì)技術(shù)5) 明確責(zé)任6) 用人少而精7) 不斷改進(jìn)開發(fā)過程8軟件生存周期定義:軟件生存周期是軟件產(chǎn)品的一系列相關(guān)活動的整個生命周期,即從形 成概念開始,經(jīng)過開發(fā)、交付使用、在使用中不斷修改和演進(jìn),直到最終被廢棄,讓位于新的軟件產(chǎn)品為止的整個時期。軟件生存周期各個階段所要完成的基本任務(wù):1) 問題定義和可行性研究關(guān)鍵問題:“到底要解決什么問題?在成本和時間的限制條件下能否解決問題?是否值得做?”任務(wù):確定總目標(biāo),由軟件分析員和用戶合作,探討解決

8、問題的可能方案,并研究完成該項(xiàng)任務(wù)的可行性分析,做出成本效值評估。2) 需求分析關(guān)鍵問題:“目標(biāo)系統(tǒng)應(yīng)當(dāng)做什么?”任務(wù):對用戶要求進(jìn)行分析,明確目標(biāo)系統(tǒng)的功能和非功能需求,并建立分析建模,對目標(biāo)系統(tǒng)做徹底細(xì)化,了解系統(tǒng)的各種細(xì)節(jié)。3) 軟件設(shè)計(jì)關(guān)鍵問題:“目標(biāo)系統(tǒng)如何做?”任務(wù):在設(shè)計(jì)階段制定設(shè)計(jì)方案,把已經(jīng)確定的各項(xiàng)需求轉(zhuǎn)換成一個相應(yīng)的軟件體系結(jié)構(gòu)。4) 程序編碼與單元測試關(guān)鍵問題:“編寫正確的、可維護(hù)的程序代碼?!比蝿?wù):選擇合適的編程語言,把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序代碼,并進(jìn)行單元測試、調(diào)試。5) 綜合測試主要任務(wù):做集成測試和確認(rèn)測試。6) 軟件維護(hù)軟件在運(yùn)行中可能由于多方面的

9、原因,需要對它進(jìn)行修改。分4類:改正性維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)、預(yù)防性維護(hù)。9軟件過程的定義:從軟件開發(fā)的觀點(diǎn)看,它就是使用適當(dāng)?shù)馁Y源,為開發(fā)軟件進(jìn)行的一組開發(fā)活動,在過程結(jié)束時將用戶要求轉(zhuǎn)化為軟件產(chǎn)品。10. 軟件過程活動1) 軟件規(guī)格說明:定義軟件產(chǎn)品的功能和操作約束。2) 軟件設(shè)計(jì)與實(shí)現(xiàn):生產(chǎn)滿足規(guī)格說明的軟件產(chǎn)品。3) 軟件確認(rèn):確認(rèn)軟件產(chǎn)品的有效性,確保該軟件所做的是用戶所需要的。4) 軟件演進(jìn):改進(jìn)軟件產(chǎn)品,滿足用戶新的需求。11軟件過程模型定義:軟件過程模型也稱為軟件生存周期模型,它是對軟件過程的一種抽象表達(dá)。1) 瀑布模型定義(原理):瀑布模型規(guī)定了各項(xiàng)軟件工程活動,并且規(guī)

10、定了這些活動自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落,所以被稱為瀑布模型。特點(diǎn):1)為軟件開發(fā)和軟件維護(hù)提供了一種有效的管理;2)消除非結(jié)構(gòu)化軟件,降低軟件復(fù)雜度,促進(jìn)軟件開發(fā)工程化;3)缺乏靈活性,無法解決需求不明確或不準(zhǔn)的問題。優(yōu)點(diǎn):適用于需求比較明確的場合,反應(yīng)了軟件工程的實(shí)現(xiàn),特別是較大的工程項(xiàng)目中。缺點(diǎn):1)各階段劃分固定,缺乏靈活性,產(chǎn)生大量文檔,增加了工作量;2)開發(fā)模型是線性的,等到開發(fā)過程完成才能看到開發(fā)成果,增加了開發(fā)的風(fēng)險;3)早起的錯誤要等到后期測試才能發(fā)現(xiàn),帶來嚴(yán)重后果?;净顒樱?) 需求分析與定義 2)系統(tǒng)與軟件設(shè)計(jì) 3)實(shí)現(xiàn)和單元測試4)集成和系統(tǒng)測

11、試 5)運(yùn)行和維護(hù)2) 快速原型模型(又叫演進(jìn)模型)定義(原理):先做試驗(yàn)開發(fā),其目標(biāo)只是在探索可行性,弄清楚軟件需求;然后在此基礎(chǔ)上獲得較為滿意的軟件產(chǎn)品。通常第一次得到的試驗(yàn)性產(chǎn)品稱為“原型”。兩種類型:1) 演進(jìn)開發(fā):目的是與客戶一起工作,通過一次次向客戶演示原型系統(tǒng)并征求他們的意見,再根據(jù)他們的要求不斷改進(jìn),從而演化出滿足客戶需求的可交付的最終系統(tǒng);2) 廢棄原型:目的是通過建立原型,借助原型與客戶溝通,探索與理解客戶的真正需求規(guī)格說明。原型是一種試驗(yàn)品,參考它來開發(fā)系統(tǒng),但不采取擴(kuò)充它以形成最終系統(tǒng)的方法,原型一起作用立即廢棄。優(yōu)點(diǎn):1)比瀑布方法更有效,可滿足客戶直接的需求;2)可

12、增量式地開發(fā)出需求規(guī)格說明,開發(fā)出一部分,向用戶展示一部分,用戶能夠及早看到部分軟件,及早發(fā)現(xiàn)問題。缺點(diǎn):過程不可見,系統(tǒng)常常構(gòu)造的不合理,可能要求特殊的工具和技術(shù)。問題:1)過程是不可見的 2)系統(tǒng)常常構(gòu)造的不合理3)可能要求特殊的工具和技術(shù)3) 增量模型定義(原理):把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、實(shí)現(xiàn)和確認(rèn)。每個構(gòu)件由多個相互作用的模塊構(gòu)成,并且能夠完成特定的功能。優(yōu)點(diǎn):1)客戶不必等到整個系統(tǒng)全部完成就能得到所需要的東西;2)客戶可使用較早的增量構(gòu)件作為原型,用于取得經(jīng)驗(yàn),從而獲得稍后的增量構(gòu)件的需求;3)項(xiàng)目失敗的風(fēng)險較低;4)優(yōu)先級最高的服務(wù)首先交付,然后對其他增量構(gòu)件逐次集

13、成進(jìn)來。缺點(diǎn):很難表示所有增量構(gòu)件的所要求的公共工具。4) 螺旋模型原理:該模型將瀑布模型和快速原型模型結(jié)合起來,并且加入兩種模型均忽略了的風(fēng)險分析。在螺旋模型中,軟件過程表示成一個螺線,在螺線上的每一個循環(huán)表示過程的一個階段。沿螺線自內(nèi)向外每旋轉(zhuǎn)一圈便開發(fā)出更為完善的一個新的軟件模型?;顒樱?)制定計(jì)劃 2)風(fēng)險分析 3)實(shí)施工程 4)客戶評估優(yōu)點(diǎn):包含了其他的過程模型,每一個螺線周期中可以使用不同的過程模型,有效的控制風(fēng)險,適合于大型軟件的開發(fā)。缺點(diǎn):使用戶接受和相信螺旋模型不容易,且該模型的使用需要具有相當(dāng)豐富的風(fēng)險評估經(jīng)驗(yàn)和專門的知識。5) 噴泉模型原理:它主要提供了對軟件復(fù)用和面向?qū)?/p>

14、象開發(fā)方法的支持。“噴泉”一詞本身體現(xiàn)了迭代和無間隙的特性。特點(diǎn):1)各階段相互重疊,反映了軟件過程并行性的特點(diǎn);2)以分析為基礎(chǔ),在分析階段消耗的資源最多;3)反映了軟件過程迭代的自然特性;4)強(qiáng)調(diào)增量式開發(fā),整個過程是一個迭代的逐步細(xì)化的過程;5)是對象驅(qū)動的過程;6)不僅反映了系統(tǒng)的開發(fā)全過程,也反映了對象族的開發(fā)和復(fù)用的過程。優(yōu)點(diǎn):可以提高軟件項(xiàng)目開發(fā)效率,節(jié)省開發(fā)時間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。缺點(diǎn):由于噴泉模型在各個開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項(xiàng)目的管理。此外這種模型要求管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料

15、的情況。6) Rational統(tǒng)一開發(fā)過程RUP原理:Rational統(tǒng)一過程(RUP)是用例驅(qū)動的、以體系結(jié)構(gòu)為核心的、迭代的增量的過程。三個視角來描述:動態(tài)視角:給出模型隨時間所經(jīng)歷的各個階段靜態(tài)視角:給出所規(guī)定的過程活動實(shí)踐視角:建議在過程中采用最佳軟件工程實(shí)踐RUP中的四個階段:初始建立一個系統(tǒng)業(yè)務(wù)的用例;細(xì)化增進(jìn)對問題領(lǐng)域的理解;構(gòu)造構(gòu)造整個產(chǎn)品,逐步完善視圖、體系結(jié)構(gòu)和計(jì)劃;移交關(guān)注如何將系統(tǒng)從開發(fā)部門移交給用戶,并使之在實(shí)際環(huán)境中工作。優(yōu)點(diǎn):將軟件過程階段的分解和工作流,將軟件部署到用戶看做是過程的一部分,可以每個階段使用相關(guān)的技術(shù)活動。缺點(diǎn):RUP并不適合于所有的開發(fā)類型,代表

16、了一類的通用過程。12基于計(jì)算機(jī)系統(tǒng)的系統(tǒng)元素軟件、硬件、人、數(shù)據(jù)庫、文檔、過程、系統(tǒng)1 “軟件”是指計(jì)算機(jī)程序和用以描述所需要的邏輯方法、過程或控制的相關(guān)文檔;2 “硬件”是指提供計(jì)算能力的電子設(shè)備和提供外部功能的機(jī)電設(shè)備;3 “人”是指硬件和軟件的用戶和操作員;4 “數(shù)據(jù)庫”是一個大型的有組織的信息集合,它通過軟件進(jìn)行存取,是系統(tǒng)功能的一個主要部分;5 “文檔”是指手冊、表格和其他用以描述系統(tǒng)使用和操作的描述性信息;6 “過程”,也稱規(guī)程,是定義每一種系統(tǒng)元素的特定使用的步驟,或系統(tǒng)駐留的過程性環(huán)境。13基于計(jì)算機(jī)的系統(tǒng):某些元素的一個集合或排列,這些原色被組織起來以實(shí)現(xiàn)某種方法、過程或借

17、助處理信息進(jìn)行控制。14. 計(jì)算機(jī)系統(tǒng)工程:是一類問題的求解活動,因應(yīng)用范圍的不同,有不同的活動和過程框架。15. 計(jì)算機(jī)系統(tǒng)工程的主要活動1)識別用戶的要求 2)系統(tǒng)分析和結(jié)構(gòu)設(shè)計(jì)3)可行性研究 4)建立成本和進(jìn)度的限制5)生成系統(tǒng)需求規(guī)格說明書可行性研究從經(jīng)濟(jì)、技術(shù)、法律、用戶操作4個方面分析。16. 可行性研究:(1) 經(jīng)濟(jì)可行性 經(jīng)濟(jì)可行性研究主要進(jìn)行開發(fā)成本的估算及可能取得效益的評估,確定待開發(fā)系統(tǒng)是否值得投資開發(fā)。討論經(jīng)濟(jì)可行性,需要進(jìn)行成本-效益分析。(2) 技術(shù)可行性 技術(shù)可行性研究是根據(jù)待開發(fā)系統(tǒng)的功能、性能及實(shí)現(xiàn)系統(tǒng)的各種約束條件等,分析在現(xiàn)有的資源和技術(shù)條件下,技術(shù)風(fēng)險有

18、多大,系統(tǒng)是否能實(shí)現(xiàn)。技術(shù)可行性分析通常包括風(fēng)險分析、資源分析和技術(shù)分析。(3) 法律可行性 法律可行性研究關(guān)注的是系統(tǒng)開發(fā)過程中可能涉及的合同、侵權(quán)、責(zé)任以及各種與法律相抵觸的問題。(4) 用戶操作可行性用戶操作可行性研究是要考察待開發(fā)系統(tǒng)的系統(tǒng)框架是否符合使用單位的使用環(huán)境現(xiàn)狀和管理制度,系統(tǒng)的操作方式是否符合用戶的技術(shù)水平和使用習(xí)慣。一個基于計(jì)算機(jī)的系統(tǒng)可以有多個可行的實(shí)現(xiàn)方案,每個方案對成本、時間、人員、技術(shù)、設(shè)備都有不同的要求,不同的系統(tǒng)在功能、性能方面也會有所不同。因此我們要在多個可行方案中做出選擇。即:可行性研究方案的選擇和折中形成可行性分析報告17. 面向?qū)ο蟮母拍蠲嫦驅(qū)ο?對

19、象+類+繼承+消息通信對象:對象是系統(tǒng)中用來描述客觀事物的實(shí)體,是構(gòu)成系統(tǒng)的基本單位。特點(diǎn):1)對象是消息處理的主體 2)對象是以數(shù)據(jù)為中心的 3)實(shí)現(xiàn)了數(shù)據(jù)封裝 4)模塊獨(dú)立性好 5)具有并行的特點(diǎn)類:類是一組具有相同結(jié)構(gòu)、相同服務(wù)、共同關(guān)系和共同語義的對象集合。繼承:繼承是在已有類定義的基礎(chǔ)上定義新類的技術(shù)。繼承具有傳遞性。消息:消息是一個對象向另一個對象傳遞的信息。18對象:是系統(tǒng)中用來描述客觀事物的實(shí)體,是構(gòu)成系統(tǒng)的基本單位。19. UML定義(Unified Modeling Language)UML是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語言。20UML特點(diǎn)1) 統(tǒng)一標(biāo)準(zhǔn)

20、。UML統(tǒng)一了多個方法的基本概念,吸取了面向?qū)ο蠹夹g(shù)領(lǐng)域的其他流派的長處,并且UML使用的符號提供了標(biāo)準(zhǔn)的面向?qū)ο竽P驮氐亩x和表示法,并已經(jīng)成為OMG的標(biāo)準(zhǔn);2) 面向?qū)ο?支持面向?qū)ο蟮募夹g(shù)的主要概念。 3) 可視化,表達(dá)能力強(qiáng)大 UML是圖形化語言,其圖形元素能清晰表示系統(tǒng)的邏輯模型或?qū)崿F(xiàn)模型。4) 獨(dú)立于過程 UML是系統(tǒng)建模語言,不依賴特定的開發(fā)過程;5) 容易掌握使用 UML概念明確,建模表示法簡潔明了,圖形結(jié)構(gòu)清晰,容易掌握使用;6) 與編程語言的關(guān)系。用Java、c+等編程語言可實(shí)現(xiàn)一個系統(tǒng)。21UML把視圖劃分為4個主題域:結(jié)構(gòu)、動態(tài)、物理和模型管理主題域。結(jié)構(gòu)主題域:描述

21、了系統(tǒng)中的結(jié)構(gòu)成員及相互關(guān)系。 【靜態(tài)視圖、設(shè)計(jì)視圖、用例視圖】動態(tài)主題域:描述了系統(tǒng)的行為或其他隨時間變化的行為。 【狀態(tài)機(jī)制圖、活動視圖、交互視圖】物理主題域:描述了系統(tǒng)中的計(jì)算機(jī)資源及其總體結(jié)構(gòu)上的部署 【部署視圖】模型管理主題域:描述層次結(jié)構(gòu)中模型自身的組織。 【模型管理視圖、剖面】22UML的模型元素1) UML的事物a) 結(jié)構(gòu)事物靜態(tài)部分,用來描述概念的或物理的元素;b) 行為事物動態(tài)部分,(交互,狀態(tài)機(jī))c) 分組事物組織部分,降低模型的復(fù)雜性。d) 注釋事物解釋部分,描述和標(biāo)注模型的任何元素。2) UML的關(guān)系a) 依賴關(guān)系:兩個事物之間的語義關(guān)系。b) 關(guān)聯(lián)關(guān)系:一種結(jié)構(gòu)關(guān)系

22、,描述了兩個或多個類的實(shí)例之間的連接關(guān)系。c) 泛化關(guān)系:一般類和特殊類之間的繼承關(guān)系。d) 實(shí)現(xiàn)關(guān)系:泛化關(guān)系和依賴關(guān)系的結(jié)合,也是類之間的語義關(guān)系。23UML中的圖1) 外部視圖a) 用例圖:展現(xiàn)了一組用例、參與者和擴(kuò)展關(guān)系、包含關(guān)系等;b) 活動圖:展示了用例中的操作和操作之間的控制流和數(shù)據(jù)流;c) 順序圖:也稱為序列圖,按時間順序顯示對象之間的交互,描述了如何通過對象之間的交互實(shí)現(xiàn)用例。2) 內(nèi)部視圖 類圖:是系統(tǒng)的靜態(tài)結(jié)構(gòu)視圖。 對象圖:對象是類的實(shí)例,描述類以及類之間的相互關(guān)系。 通信圖:是動態(tài)設(shè)計(jì)視圖,強(qiáng)調(diào)參加交互的各個對象的組織。 狀態(tài)機(jī)圖:通過對類的對象的生存周期建模來描述對

23、象隨時間變化的動態(tài) 行為。 構(gòu)件圖:展現(xiàn)了一組構(gòu)件之間的組織和依賴。 包圖:為了降低復(fù)雜度。 部署圖:展現(xiàn)了在軟件過程中存在的運(yùn)行處理節(jié)點(diǎn)以及其中的構(gòu)件的配置。24UML的元模型結(jié)構(gòu)4個抽象層次,從高到低,上一層是下一層的基礎(chǔ),下一層是上一層的實(shí)例。1) 元元模型層:定義了用于描述元模型的語言。2) 元模型層:定義了用于詳細(xì)說明模型的語言,組成了UML的基本元素。3) 模型層:定義了描述某一個信息系統(tǒng)的模型的語言,組成了UML的系統(tǒng)模型。4) 運(yùn)行實(shí)例層:是模型所描述的實(shí)體的具體實(shí)例或表達(dá)一個模型的特定場景。25需求的定義1) 用戶為解決某一問題或?yàn)檫_(dá)到某個目標(biāo)所需要的條件或能力2) 系統(tǒng)或系

24、統(tǒng)部件為滿足合同、標(biāo)準(zhǔn)、規(guī)格說明或其他正式的強(qiáng)制性文檔所必須具有的條件或能力3) 對(1)和(2)中所描述的條件或能力的文檔化說明 一是用戶所要求的系統(tǒng)應(yīng)具有的外部行為;二是開發(fā)者所要求的系統(tǒng)應(yīng)具有的內(nèi)部特性;最后強(qiáng)調(diào)了需求一定要文檔化。26需求的層次軟件需求包括三個不同的層次:業(yè)務(wù)需求、用戶需求、功能需求和非功能需求。1) 業(yè)務(wù)需求:業(yè)務(wù)需求反映了組織或者客戶高層次的目標(biāo)要求2) 用戶需求:用戶需求描述了他們要求系統(tǒng)必須完成的任務(wù),即用戶對系統(tǒng)的目標(biāo)要求。3) 功能需求和非功能需求:功能需求定義了開發(fā)者應(yīng)提供的軟件功能或服務(wù),但不涉及這些功能或服務(wù)的實(shí)現(xiàn);非功能需求則是對功能需求的補(bǔ)充,包括

25、了對系統(tǒng)的各種限制和用戶對系統(tǒng)的質(zhì)量要求4) 系統(tǒng)需求:系統(tǒng)需求來自于系統(tǒng)分析和結(jié)構(gòu)設(shè)計(jì)27 軟件需求工程過程1) 獲得當(dāng)前系統(tǒng)的具體物理模型2) 抽象出當(dāng)前系統(tǒng)的邏輯模型3) 建立目標(biāo)系統(tǒng)的邏輯模型4) 轉(zhuǎn)換為目標(biāo)系統(tǒng)的物理模型最后,程序員根據(jù)物理模型利用某種實(shí)現(xiàn)工具完成系統(tǒng)的編程和運(yùn)行活動。28需求獲取的定義:發(fā)現(xiàn)用戶需求的過程。 需求獲取的任務(wù)1) 發(fā)現(xiàn)和分析問題2) 使用調(diào)查研究的方法收集信息3) 遵循需求獲取框架,按照數(shù)據(jù)、過程和接口這三個成分觀察問題的不同側(cè)面4) 需求文檔化29需求獲取的過程1) 開發(fā)高層的業(yè)務(wù)模型2) 定義項(xiàng)目的視圖和范圍3) 尋求需求的來源4) 識別用戶類和用

26、戶代表5) 確定目標(biāo)系統(tǒng)的業(yè)務(wù)工作流6) 需求的整理與描述30逆向溝通的定義逆向溝通,就是在需求調(diào)研的過程中,除了了解用戶的情況外,同時還要向用戶反饋,提出一些建議,供用戶參考。31傳統(tǒng)的分析建模方法(即結(jié)構(gòu)化分析方法)1) 數(shù)據(jù)建模:使用了三種互相關(guān)聯(lián)的信息:數(shù)據(jù)實(shí)體,描述實(shí)體的屬性,描述實(shí)體間相互連接的關(guān)系。畫E-R圖的步驟1) 在捕獲需求的過程中,要求用戶列出應(yīng)用或業(yè)務(wù)過程涉及的所有的“事物”2) 一次考慮一個數(shù)據(jù)實(shí)體。3) 當(dāng)存在連接時,分析員和用戶應(yīng)創(chuàng)建一個或多個對4) 對每一個對,考察它的多重性和參考性5) 迭代執(zhí)行步驟(2)(4),直到所有對定義完成6) 定義每個實(shí)體的屬性7)

27、規(guī)范化并復(fù)審實(shí)體-關(guān)系圖8) 重復(fù)執(zhí)行步驟(1)(7),直到數(shù)據(jù)建模完成2) 功能建模:使用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解、細(xì)化,直到找到滿足功能要求的所有可實(shí)現(xiàn)的軟件分量為止。畫數(shù)據(jù)流圖的步驟1) 首先確定與系統(tǒng)有交互關(guān)系的外部實(shí)體2) 畫出頂層數(shù)據(jù)流圖3) 分析業(yè)務(wù)處理的主要功能,建立第0層數(shù)據(jù)流圖4) 對每一個加工繼續(xù)細(xì)化3) 行為建模狀態(tài)遷移圖、UML順序圖、Petri網(wǎng)32 分析模型的結(jié)構(gòu):33 基本加工邏輯說明 基本加工的定義:所謂基本加工,又稱原子加工,是底層數(shù)據(jù)流圖中的加工,它是自頂向下逐步細(xì)化的終點(diǎn),應(yīng)可以直接寫出其實(shí)現(xiàn)的程序邏輯,即其處理

28、的規(guī)則。(1)結(jié)構(gòu)化語言:結(jié)構(gòu)化語言也叫程序設(shè)計(jì)語言,是一種介于自然語言和形式化語言之間的半形式化語言,又稱偽碼。(2)決策表:在某些數(shù)據(jù)處理問題中,某個加工的執(zhí)行需要依賴于多個邏輯條件的取值,即完成這一個加工的一組動作是由一組條件取值的組合而引發(fā)的。此時可以用決策表來描述。(3)決策樹:決策樹也是用來表達(dá)加工邏輯的一種工具,有時候它比決策表更直觀。原子加工的定義(p139)所謂基本加工,又稱原子加工,是底層數(shù)據(jù)流圖中的加工,它是自頂向下逐步細(xì)化的終 點(diǎn),應(yīng)可以直接寫出其實(shí)現(xiàn)的程序邏輯,即其處理的規(guī)則。如果每一個基本加工的詳細(xì)邏輯 功能都已寫出,再自底向上綜合,就能完成全部加工。34面向?qū)ο蟮?/p>

29、分析模型由三個獨(dú)立的模塊構(gòu)成:1) 由用例和場景表示的功能模型2) 用類和對象表示的分析對象模型3) 由狀態(tài)圖和順序圖表示的動態(tài)模型過程:1) 識別類或?qū)ο?2)識別關(guān)系(結(jié)構(gòu)) 3)標(biāo)識類的屬性和服務(wù) 4)分析模型評審35原型生存周期定義:原型的開發(fā)和使用過程步驟:1)快速分析 2)構(gòu)造原型 3)運(yùn)行和評價原型 4)修正和改進(jìn) 5)判定原型完成 6)判定原型細(xì)部是否說明 7)原型細(xì)部的說明 8)判定原型效果 9)整理原型和提供文檔原型開發(fā)技術(shù):(了解) 1)可執(zhí)行規(guī)格說明2)基于場景的設(shè)計(jì)3)自動程序設(shè)計(jì)4)專用語言5)軟件復(fù)用技術(shù)6)簡化假設(shè)36軟件需求規(guī)格說明的目標(biāo)(1)在軟件產(chǎn)品方面,

30、為在軟件開發(fā)人員與客戶之間達(dá)成共同協(xié)議趣立基礎(chǔ)。它全面描述了要實(shí)現(xiàn)的軟件功能,有助于客戶確定軟件的需求規(guī)格足否符合需要,如有偏差又可幫助軟件開發(fā)人員確定如何修改才能適合客戶的需嬰。 (2)提高開發(fā)效率。編制軟件需求規(guī)格說明的過程可讓客戶在軟件設(shè)計(jì)開始之前能周密地思考全部需求,從而減少事后重新設(shè)計(jì)、重新編碼和重新測試的返工活動。通過對軟件需求規(guī)格說明中的各種需求仔細(xì)地評審,還可以在開發(fā)早期發(fā)現(xiàn)可能的遺漏、誤解和不一致,以便及時加以糾正。 (3)為成本估算和編制進(jìn)度計(jì)劃提供基礎(chǔ)。軟件需求規(guī)格說明提供的對于開發(fā)軟件的描述成為軟件產(chǎn)品成本估算的基礎(chǔ)。軟件需求規(guī)格說明對軟件的消晰描述還可以幫助估算 必需

31、的各種資源,成為編制進(jìn)度計(jì)劃的依據(jù)。 (4)為確認(rèn)和驗(yàn)證提供一個基準(zhǔn)。作為開發(fā)合同的一個部分,軟件需求規(guī)輅說明可以提 供一個可度量和可遵循的基準(zhǔn)。 (5)便于移植。有了軟件需求規(guī)格說明,可幫助開發(fā)人員把軟件移植到新的操作環(huán)境 以適應(yīng)客戶新的需要。 (6) 成為軟件不斷改進(jìn)的基礎(chǔ)。由于軟件需求規(guī)格說明所涉及的只是軟件產(chǎn)品的外部 視圖(軟件能做什么),而不涉及軟件產(chǎn)品的內(nèi)部設(shè)計(jì)(軟件如何做)。因此,軟件需求規(guī)格說 明成為軟件產(chǎn)品改進(jìn)的基礎(chǔ)。37軟件需求規(guī)格說明的原則1) 從現(xiàn)實(shí)中分離功能,即描述要“做什么”而不是“怎樣實(shí)現(xiàn)”2) 要求使用面向處理的規(guī)格說明語言3) 如果被開發(fā)軟件是一個大系統(tǒng)中的一

32、個元素,那么整個大系統(tǒng)也包括在規(guī)格說明的描述之中4) 規(guī)格說明必須包括系統(tǒng)運(yùn)行的環(huán)境5) 系統(tǒng)規(guī)格說明必須是一個認(rèn)識的模型6) 規(guī)格說明必須是可操作的7) 規(guī)格說明必須容許不完備性并允許擴(kuò)充8) 規(guī)格說明必須是局部化和松散耦合的 軟件需求規(guī)格說明模版:1)軟件需求規(guī)格說明(SRS) 2)數(shù)據(jù)需求說明(DRD)38需求評審中的常見風(fēng)險1) 需求評審的參與者選取不當(dāng)2) 評審規(guī)模過大3) 評審組規(guī)模過大4) 評審時間過長軟件需求規(guī)格說明模板:軟件需求規(guī)格說明SBS、數(shù)據(jù)需求說明DRD正式的需求評審內(nèi)容:用例、功能、性能、接口、數(shù)據(jù)、硬件、軟件、通信、正確性、完整性、可行性、一致性、兼容性、清晰性、

33、安全性、健壯性、可理解性、可修改性、可測試性和可驗(yàn)證性、可維護(hù)性、可跟蹤性、可靠性、其他39軟件需求管理定義:一種獲取、組織并記錄系統(tǒng)需求的系統(tǒng)化方案,以及一個使客戶與項(xiàng)目團(tuán)隊(duì)對不斷變更的系統(tǒng)需求達(dá)成并保持一致的過程。需求規(guī)格說明的版本控制:版本控制是為了管理軟件需求規(guī)格說明文檔。它主要的活動是統(tǒng)一標(biāo)識需求規(guī)格說明文檔的每一個版本,并讓每一個開發(fā)組的成員能夠獲得和使用他所需要的任一版本。同時,把每一個需求變更計(jì)入文檔,并及時通知到開發(fā)組相關(guān)人員。40軟件設(shè)計(jì)準(zhǔn)則:性能準(zhǔn)則:響應(yīng)時間、吞吐量、內(nèi)存可靠性準(zhǔn)則:健壯性、可靠性、可用性、容錯性、保密性、安全性、魯棒性成本準(zhǔn)則:開發(fā)、部署、升級、維護(hù)、

34、管理成本維護(hù)準(zhǔn)則:可擴(kuò)展性、可修改性、可適應(yīng)性、可移植性、可讀性、需求的可追蹤最終用戶準(zhǔn)則:效用、易用性41軟件設(shè)計(jì)的概念:軟件設(shè)計(jì)是把許多事物和問題抽象,并且抽象它們不同的層次和角度。軟件設(shè)計(jì)是基于需求分析的結(jié)果建立各種設(shè)計(jì)模型給出問題解決的方案。它是將用戶需求準(zhǔn)確轉(zhuǎn)換為最終軟件產(chǎn)品的唯一途徑,在軟件和需求之間起到橋梁作用。因此,軟件設(shè)計(jì)在軟件開發(fā)過程中取得了重要的作用。42軟件設(shè)計(jì)的階段從工程管理的角度:1)概要設(shè)計(jì):將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu),要完成體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)及接口設(shè)計(jì)2)詳細(xì)設(shè)計(jì):對結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法,要完成過程設(shè)計(jì)。傳統(tǒng)的結(jié)構(gòu)化方

35、法:【體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)、過程設(shè)計(jì)】面向?qū)ο螅骸倔w系結(jié)構(gòu)設(shè)計(jì)、類設(shè)計(jì)/數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)、構(gòu)件設(shè)計(jì)】從管理和技術(shù)角度:1) 體系結(jié)構(gòu)設(shè)計(jì):定義軟件的主要結(jié)構(gòu)元素及其之間關(guān)系。體系結(jié)構(gòu)設(shè)計(jì)的表示可以從系統(tǒng)規(guī)格說明分析模型及體系結(jié)構(gòu)的風(fēng)格導(dǎo)出。2) 類設(shè)計(jì):對分析階段建立的分析類模型進(jìn)行細(xì)化轉(zhuǎn)化為設(shè)計(jì)類的實(shí)現(xiàn)及軟件實(shí)現(xiàn)所要求的數(shù)據(jù)結(jié)構(gòu)。3) 數(shù)據(jù)設(shè)計(jì):傳統(tǒng)方法主要根據(jù)需求階段建立的E-R圖確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)及數(shù)據(jù)庫的表示結(jié)構(gòu),面向?qū)ο蟾鶕?jù)類設(shè)計(jì)導(dǎo)出數(shù)據(jù)設(shè)計(jì)。4) 接口設(shè)計(jì):有的被外部接口描述用戶界面,以及與其他硬件設(shè)備,其他軟件系統(tǒng)交互的接口;內(nèi)部接口描述系統(tǒng)內(nèi)部各構(gòu)件之間

36、的交互接口。5) 構(gòu)件設(shè)計(jì):將軟件體系結(jié)構(gòu)的結(jié)構(gòu)元素變換為對軟件構(gòu)件的過程性描述。6) 過程設(shè)計(jì):主要工作是確定軟件各個組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選定某種敘述的表達(dá)形式來描述各種算法。43創(chuàng)建良好設(shè)計(jì)的原則1) 分而治之和模塊化:分而治之是人們解決大型復(fù)雜問題常采用的策略軟件的體系結(jié)構(gòu)設(shè)計(jì)、模塊化設(shè)計(jì)都是分而治之。模塊化是將程序劃分成獨(dú)立命名且獨(dú)立訪問的模塊,不同的模塊具有不同職責(zé)。每個模塊都可獨(dú)立開發(fā)、測試,最后組裝成完整的軟件。在結(jié)構(gòu)化方法中,過程、函數(shù)和子程序都可作為模塊;在面向?qū)ο蠓椒ㄖ?,對象是模塊,對象內(nèi)的方法也是,模塊是構(gòu)成程序的基本構(gòu)件。2) 模塊獨(dú)立性:指軟件系統(tǒng)中每個

37、模塊只涉及軟件要求的具有子功能,和軟件系統(tǒng)其他模塊的接口是簡單的兩準(zhǔn)則度量模塊獨(dú)立性:模塊間的耦合和模塊的內(nèi)聚。3) 盡量降低耦合性:各模塊之間耦合緊密還是松散,取決于相關(guān)模塊間的接口的復(fù)雜程度,調(diào)用模塊的方式以及哪些信息通過接口。4) 盡量提高內(nèi)聚性:內(nèi)聚性和耦合性是相關(guān)聯(lián)的。在程序結(jié)構(gòu)中各模塊的內(nèi)聚性越高,模塊間的耦合性就越低。軟件設(shè)計(jì)的目標(biāo),提高內(nèi)聚性,降低耦合性,但增加內(nèi)聚性比降低耦合性更重要。5) 提高抽象層次:抽象是指忽視一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。設(shè)計(jì)軟件時,最初應(yīng)從軟件的最高抽象層次著手,按抽象級別從高到低進(jìn)行分層的軟件體系結(jié)構(gòu)設(shè)計(jì)

38、,自頂向下,對各個層次的過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程序設(shè)計(jì)語言能實(shí)現(xiàn)。6) 復(fù)用性設(shè)計(jì):復(fù)用是指同一事物不做修改或稍加修改就可多重復(fù)使用。在構(gòu)造新軟件系統(tǒng)時,不必從零做起,直接使用已有的可復(fù)用構(gòu)件,用以組裝成新的系統(tǒng)。7) 靈活性設(shè)計(jì):保證靈活性關(guān)鍵是抽象,越抽象越靈活。面向系統(tǒng)中類的層次結(jié)構(gòu)類似金字塔,越往上,抽象程度越高。8) 預(yù)防過期:軟件設(shè)計(jì)時,應(yīng)積極預(yù)測可能在技術(shù)和運(yùn)行環(huán)境上的變化,并為此采取預(yù)防措施。9) 可移植性設(shè)計(jì):軟件不經(jīng)修改或稍加修改就可運(yùn)行于不同軟硬件環(huán)境的能力,可移植性是軟件的質(zhì)量要素之一。良好的可移植性可延長軟件生存周期,拓展應(yīng)用環(huán)境。10) 可測試性設(shè)計(jì):為

39、使軟件測試更高效可行,軟件設(shè)計(jì)時,需對可測試性進(jìn)行周密設(shè)計(jì)。指在一定時間和成本前提下,進(jìn)行測試用例設(shè)計(jì),測試用例執(zhí)行,以此來發(fā)現(xiàn)問題及故障,并隔離定位其故障的能力特性。11) 防御性設(shè)計(jì):指在軟件設(shè)計(jì)時就考慮自動檢錯、報錯和糾錯功能。這種防御性功能可以是周期性地對整個軟件系統(tǒng)進(jìn)行檢驗(yàn)和考核,搜索和發(fā)現(xiàn)異常情況。44. 結(jié)構(gòu)化設(shè)計(jì)方法的定義傳統(tǒng)的面向過程的設(shè)計(jì)方法又稱為結(jié)構(gòu)化設(shè)計(jì)方法,它是在模塊化、自頂向下、逐步細(xì)化及結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)基礎(chǔ)之上發(fā)展起來的。該方法是根據(jù)系統(tǒng)的數(shù)據(jù)流圖進(jìn)行設(shè)計(jì),即根據(jù)系統(tǒng)的處理過程進(jìn)行設(shè)計(jì),故亦稱為過程驅(qū)動的設(shè)計(jì)。 結(jié)構(gòu)化設(shè)計(jì)方法的實(shí)施要點(diǎn):1) 首先研究、分析和審

40、查數(shù)據(jù)流圖2) 根據(jù)數(shù)據(jù)流圖決定問題的類型3) 由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖4) 利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止5) 根據(jù)分析模型中的實(shí)體關(guān)系圖和數(shù)據(jù)字典進(jìn)行數(shù)據(jù)設(shè)計(jì),包括數(shù)據(jù)庫設(shè)計(jì)或數(shù)據(jù)文件的設(shè)計(jì)6) 在上面設(shè)計(jì)的基礎(chǔ)上,依據(jù)分析模型中的加工規(guī)格說明、狀態(tài)遷移圖及控制規(guī)格說明進(jìn)行過程設(shè)計(jì)7) 制定集成測試計(jì)劃45結(jié)構(gòu)化設(shè)計(jì)與結(jié)構(gòu)化分析的關(guān)系:46. 典型的數(shù)據(jù)流類型1) 變換流型 變換流映射的步驟:1) 重畫數(shù)據(jù)流圖2) 區(qū)分有效輸入、有效輸出和中心變換部分3) 進(jìn)行一級分解,設(shè)計(jì)上層模塊4) 進(jìn)行二級分解,設(shè)計(jì)輸入、輸出和中心變換部分的中、下層模

41、塊2)事務(wù)流型事務(wù)流映射的步驟:1) 識別事務(wù)源2) 將事務(wù)流型數(shù)據(jù)流圖映射成高層的系統(tǒng)結(jié)構(gòu)3) 進(jìn)一步分解48軟件模塊結(jié)構(gòu)改進(jìn)的方法1) 模塊功能的完善化2) 消除重復(fù)功能,改善軟件結(jié)構(gòu)3) 模塊的作用范圍應(yīng)在控制范圍之內(nèi)4) 盡可能減少高扇出結(jié)構(gòu),隨著控制層次深度的增大增加扇入5) 避免或減少使用病態(tài)連接6) 模塊的大小要適中7) 設(shè)計(jì)功能可預(yù)測的模塊,避免過分受限制的模塊8) 軟件包應(yīng)滿足設(shè)計(jì)約束和可移植性49面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)的主要任務(wù)面向?qū)ο蠓治龅幕A(chǔ)上完成體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、類設(shè)計(jì)及構(gòu)建設(shè)計(jì)。1) 子系統(tǒng)分解 2)問題域部分的設(shè)計(jì) 3)人機(jī)交互部分的設(shè)計(jì)4)任務(wù)管理部

42、分的設(shè)計(jì) 5)數(shù)據(jù)管理部分的設(shè)計(jì)50對象設(shè)計(jì)過程1) 使用模式設(shè)計(jì)對象:設(shè)計(jì)者可以選擇合適的設(shè)計(jì)模式,復(fù)用已有的解決方案,以提高系統(tǒng)的靈活性,并確保特定類不會再系統(tǒng)開發(fā)過程中因要求的變化而被修改。2) 接口規(guī)格說明:在系統(tǒng)設(shè)計(jì)中標(biāo)識的子系統(tǒng)功能,都需要在類接口中詳細(xì)說明。3) 對象模型重構(gòu):重構(gòu)的目的是改進(jìn)對象設(shè)計(jì)模型,提高可讀性和擴(kuò)展性。4) 對象模型優(yōu)化:優(yōu)化的目的是改進(jìn)對象設(shè)計(jì)模型,以實(shí)現(xiàn)系統(tǒng)模型中的性能要求。51處理過程設(shè)計(jì)方法1) 結(jié)構(gòu)化程序設(shè)計(jì)2) 程序流程圖3) N-S圖:也叫盒圖,符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具。4) PAD圖:(Problem Analysis Diag

43、ram)用結(jié)構(gòu)化程序設(shè)計(jì)思想表現(xiàn)程序邏輯結(jié)構(gòu)的圖形工具,由程序流程圖演化而來。5) 程序設(shè)計(jì)語言PDL:(Program Design Language)是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語言,稱為設(shè)計(jì)程序語言。6) 判定表:能清晰地表達(dá)復(fù)雜的條件組合與應(yīng)做動作之間的對應(yīng)關(guān)系。7) HIPO圖:H圖描述程序結(jié)構(gòu);Ipo圖描述程序的輸入處理輸出。HIPO(H、IPO)HIPO(Hierarchy plus Input Process Output)是較早時期IBM公司提出的一種系統(tǒng)分析和設(shè)計(jì)工具。它由兩部分組成:可視目錄表(H圖)和IPO圖??梢暷夸洷斫o出系統(tǒng)的功能分層關(guān)系IPO圖則為

44、系統(tǒng)的各部分提供具體的工作細(xì)節(jié)。1、層次圖用它表明各個功能的隸屬關(guān)系,它是自頂向下逐層分解得到的一個樹形結(jié)構(gòu)。其頂層是整個系統(tǒng)的名稱和系統(tǒng)的概括功能說明;第二層把系統(tǒng)的功能展開,分成幾個功能框;第二層功能進(jìn)一步分解,就得到了第三層、第四層直到最后一層。每個功能框內(nèi)都應(yīng)有一個名字用來標(biāo)識它的功能。還應(yīng)有一個編號,記錄它所在層次及在該層次的位置。2、IPO圖IPO(Input Process Output)圖為層次圖中每一功能框詳細(xì)地指明輸人、處理及輸出,通常,IPO圖有固定的格式,圖中處理操作部分總是列在中間,輸人和輸出部分分別在左邊和右邊.由于某些細(xì)節(jié)很難在一張IPO圖中表達(dá)清楚,常常把IPO

45、圖又分為兩部分,簡單概括的=的稱為概要IPO圖,細(xì)致具體一些的成為詳細(xì)IPO圖。HIPO的特點(diǎn):(1)這一圖形表達(dá)方法容易看懂。(2)HIPO的適用范圍很廣。HIPO是分析和設(shè)計(jì)的輔助工具,還是開發(fā)文檔的編制工具。開發(fā)完成后,HIPO是很好的文檔,而不必在設(shè)計(jì)完成以后專門補(bǔ)寫文檔。52軟件設(shè)計(jì)的文檔1) 軟件設(shè)計(jì)說明(SDD)2) 數(shù)據(jù)庫設(shè)計(jì)說明(DBDD)3) 接口設(shè)計(jì)說明(IDD)53. 軟件設(shè)計(jì)評審(235-237頁)1)概要設(shè)計(jì)評審a.系統(tǒng)概述 b.系統(tǒng)描述和可跟蹤性c.對需求分析中不完整、易變動、潛在的需求進(jìn)行相應(yīng)的設(shè)計(jì)分析d.總體設(shè)計(jì) e.接口設(shè)計(jì) f.屬性設(shè)計(jì) g.數(shù)據(jù)結(jié)構(gòu) h.

46、運(yùn)行設(shè)計(jì)i.出錯處理 j.運(yùn)行環(huán)境 k.清晰性 l.一致性 m.可行性 n.詳細(xì)程度 o.可維護(hù)性2) 詳細(xì)設(shè)計(jì)評審a. 清晰性 b.完整性 c.規(guī)范性 d.一致性 e.正確性 f.數(shù)據(jù) g.功能性 h.接口 i.詳細(xì)程度 j.可維護(hù)性 k.性能 l.可靠性 m.可測試性 n.可跟蹤性54. 軟件體系結(jié)構(gòu)的概念1)一個程序或計(jì)算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)是指系統(tǒng)的一個或多個結(jié)構(gòu)。結(jié)構(gòu)中包括軟件的構(gòu)件、構(gòu)件的外部可見屬性以及它們之間的相互關(guān)系。外部可見屬性則是指軟件構(gòu)件提供的服務(wù)、性能、使用特性、錯誤處理、共享資源使用等。2)軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件

47、和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的不同部分組合連接起來。55. 體系結(jié)構(gòu)的作用1)體系結(jié)構(gòu)的表示有助于風(fēng)險承擔(dān)者相互交流2)體系結(jié)構(gòu)突出了早期設(shè)計(jì)決策3)軟件體系結(jié)構(gòu)是可傳遞和可復(fù)用的模型56. 體系結(jié)構(gòu)設(shè)計(jì)的過程1)建立軟件的環(huán)境模型2)定義體系結(jié)構(gòu)的原始模型3)體系結(jié)構(gòu)的求精與完善57. 特定領(lǐng)域的軟件體系結(jié)構(gòu)(250-251頁)了解1)類屬模型:是從許多實(shí)際系統(tǒng)中抽象出來的一般模型,它封裝了這些系統(tǒng)的主要特征。eg:編譯器模型。2)參考模型:描述了一個包含了系統(tǒng)應(yīng)具有的所有特征的理想化軟件體系結(jié)構(gòu)。eg:OSI參考模型,描述了開放系統(tǒng)互連

48、的標(biāo)準(zhǔn)。58. 軟件體系結(jié)構(gòu)的評價1)性能:是指系統(tǒng)的響應(yīng)能力。2)可靠性:是在特定環(huán)境和特定時間內(nèi),計(jì)算機(jī)程序無故障運(yùn)行的概率。 3)可用性:是系統(tǒng)能夠正常運(yùn)行的時間比例。4)安全性:是指系統(tǒng)在向合法用戶提供服務(wù)的同時能夠阻止非授權(quán)用戶使用的企圖或拒絕向非授權(quán)用戶提供服務(wù)的能力。5)可修改性:是指能夠快速地以較高的性能價格比對系統(tǒng)進(jìn)行變更的能力。6)功能性:是系統(tǒng)所能完成所期望工作的能力。7)可變更性:指體系結(jié)構(gòu)經(jīng)擴(kuò)充或變更而成為新體系結(jié)構(gòu)的能力。8)可集成性:指系統(tǒng)能與其他系統(tǒng)協(xié)作的程度。9)互操作性:作為系統(tǒng)組成部分的軟件不是獨(dú)立存在的,經(jīng)常與其他系統(tǒng)或自身環(huán)境相互作用。59. 體系結(jié)構(gòu)

49、描述語言ADL的定義體系結(jié)構(gòu)描述語言(Architecture Description Language)是參照傳統(tǒng)程序設(shè)計(jì)語言的設(shè)計(jì)和開發(fā)經(jīng)驗(yàn),重新設(shè)計(jì)、開發(fā)和使用針對軟件體系結(jié)構(gòu)特點(diǎn)的、專門的軟件體系結(jié)構(gòu)描述語言。60. 設(shè)計(jì)模式的定義是一些設(shè)計(jì)面向?qū)ο蟮能浖_發(fā)的經(jīng)驗(yàn)總結(jié)。一個設(shè)計(jì)模式事實(shí)上是系統(tǒng)的命名解釋和評價某一個重要的可重視的面向?qū)ο蟮脑O(shè)計(jì)方案。61. 設(shè)計(jì)模式的4個基本要素1) 模式名稱:用于描述模式的名字,說明模式的問題、解決方案和效果。2)問題:說明在何種場合使用模式。3)解決方案:描述設(shè)計(jì)的組成部分,它們之間的相互關(guān)系,各自的職責(zé)和合作方式。4)效果:描述了模式使用的效果及

50、使用模式應(yīng)當(dāng)權(quán)衡的問題。62. 設(shè)計(jì)模式的分類1)創(chuàng)建型設(shè)計(jì)模式:描述怎樣創(chuàng)建一個對象。2)結(jié)構(gòu)型設(shè)計(jì)模式:處理類或?qū)ο蟮慕M合。3)行為型設(shè)計(jì)模式:主要解決算法和對象之間責(zé)任的分配問題。 63軟件實(shí)現(xiàn)的定義軟件實(shí)現(xiàn)階段也稱為程序編碼階段,通常包括編程實(shí)現(xiàn)和單元測試。軟件實(shí)現(xiàn)是軟件產(chǎn)品由概念到實(shí)體的一個關(guān)鍵過程,它將詳細(xì)設(shè)計(jì)的結(jié)果翻譯成用某種程序設(shè)計(jì)語言編寫并且最終可以運(yùn)行的程序代碼。64軟件實(shí)現(xiàn)的過程代碼設(shè)計(jì)代碼審查代碼編寫代碼編譯單元測試代碼調(diào)試65程序設(shè)計(jì)方法1) 結(jié)構(gòu)化程序設(shè)計(jì)2) 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法3) 極限編程66結(jié)構(gòu)化程序設(shè)計(jì)兩個方面:1) 在程序設(shè)計(jì)過程中,盡量采用自頂向下和

51、逐步細(xì)化的原則,一步步展開2) 在編寫程序時,強(qiáng)調(diào)使用幾種基本控制結(jié)構(gòu),通過組合嵌套,形成程序的控制結(jié)構(gòu)。盡可能避免使用會使程序質(zhì)量受到影響的GOTO語句。6個原則:1) 使用語言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯2) 選用的控制結(jié)構(gòu)只準(zhǔn)許一個入口和一個出口3) 程序語句組成容易識別的塊,每塊只有一個入口和一個出口4) 復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來實(shí)現(xiàn)5) 語言中沒有的控制結(jié)構(gòu),可用一段等價的程序段模擬,但要求該程序段在整個系統(tǒng)中應(yīng)前后一致6) 嚴(yán)格控制GOTO語句67面向?qū)ο蟮某绦蛟O(shè)計(jì)方法特點(diǎn):封裝、泛化、多態(tài)、協(xié)同、復(fù)用68極限編程定義:(Extrem Pro

52、gramming,XP)是一種原型程序設(shè)計(jì)方法,是以開發(fā)符合客戶需要的軟件為目標(biāo)而產(chǎn)生的一種方法學(xué),使開發(fā)人員能夠更有效地響應(yīng)客戶的需求變化。宗旨:交流、簡單、反饋、勇氣原則:1) 輕裝前進(jìn) 2)結(jié)對編程 3)測試優(yōu)先 4)重構(gòu)5)持續(xù)集成 6)集體所有權(quán) 7)小版本 8)現(xiàn)場客戶極限編程的生存周期:1) 探索階段 2)計(jì)劃階段 3)迭代到發(fā)布階段4)產(chǎn)品化階段 5)維護(hù)階段XP特點(diǎn):(11個)1) 采用原型法2) 在軟件設(shè)計(jì)中,強(qiáng)調(diào)簡單性,就是堅(jiān)決不制作用不到的通用功能 3) 不刻意避免重新編碼,不突害怕對整個軟件推到重做4) 在專業(yè)分工中,提出在開發(fā)團(tuán)隊(duì)中要有全職的客戶人員的參與,同時在軟

53、件團(tuán)隊(duì)中也要有自己的領(lǐng)域?qū)<?) 有專門的軟件架構(gòu)的設(shè)計(jì)師,首先進(jìn)行軟件整體架構(gòu)的設(shè)計(jì)6) 在軟件開發(fā)順序上和傳統(tǒng)方法完全相反,XP是按照交付客戶、測試、編碼、設(shè)計(jì)的順序來開發(fā)7) 在項(xiàng)目計(jì)劃的實(shí)現(xiàn)上,每次的計(jì)劃都是技術(shù)人員對客戶提出時間表,由最后的開發(fā)人員對項(xiàng)目經(jīng)理提出編碼的時間表。8) 在分工上,強(qiáng)調(diào)角色輪換,項(xiàng)目的集體負(fù)責(zé),分工的自愿性。9) 提出了結(jié)對編程的思路,就是每個模塊的編碼都是兩個人一起干,共用一臺計(jì)算機(jī)10) 人員的分工上要靈活,要保證軟件開發(fā)中的角色齊全,但每個角色可以由幾個人共同擔(dān)任,也可以一個人擔(dān)任幾個角色,并且在項(xiàng)目的不同時期,不同角色的人員數(shù)量會不斷變化11) 每天

54、或隔天,開一個站立會議,來解決工作不一致和相互打擾的情況。在每個迭代周期也有一個計(jì)劃和分工等的全體大會不宜采xp的情況:xp適合規(guī)模小、進(jìn)度緊、需求變化大、質(zhì)量要求嚴(yán)的項(xiàng)目。1) 中大型項(xiàng)目2) 重構(gòu)會導(dǎo)致大量開銷的應(yīng)用系統(tǒng)3) 需要很長編譯或者測試周期的系統(tǒng)4) 不容易進(jìn)行測試的應(yīng)用系統(tǒng)5) 團(tuán)隊(duì)人員異地分布的項(xiàng)目6) 不能接受XP文化的組織和團(tuán)隊(duì)69編程語言的分類1) 從屬于機(jī)器的語言第一代語言2) 匯編語言第二代語言3) 高級編程語言第三代語言(面向過程、面向?qū)ο蟮木幊陶Z言)4) 面向因特網(wǎng)的語言(HTML語言和XML語言、Java語言、C#語言)5) 第四代語言(4GL)(查詢語言、程序生成器、其他判定支持語言、原型語言、形式化規(guī)格說明語言)70軟件測試軟件測試目標(biāo):發(fā)現(xiàn)錯誤1)能以最少的時間和人力,系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷;2)能夠證明軟件中的功能和性能與需求說明相符合。軟件測試定義:1) 在規(guī)定條件下運(yùn)行系統(tǒng)或構(gòu)件的過程:在此過程中觀察和記錄結(jié)果,并對系統(tǒng)或構(gòu)件的某些方面給出評價2) 分析軟件項(xiàng)目的過程:檢測現(xiàn)有狀況和所需狀況之間的不同,并評估軟件項(xiàng)目的特性軟件測試原則:1) 應(yīng)當(dāng)把“盡早地和不斷地進(jìn)行軟件測試”作為軟件開發(fā)者的座右銘2) 測試用例應(yīng)當(dāng)由測試輸入數(shù)據(jù)、執(zhí)行條件和對應(yīng)的預(yù)期輸出結(jié)果組成3) 程序員應(yīng)避免檢查

溫馨提示

  • 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

提交評論