【软件工程】重要知识点
一、軟件工程概述
軟件工程的誕生
1968年北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國(guó)召開(kāi)國(guó)際會(huì)議,討論軟件危機(jī)問(wèn)題。在這次會(huì)議上正式提出并使用了“軟件工程”這個(gè)名詞,一門新興的工程學(xué)科就此誕生了。
軟件危機(jī)
① 對(duì)軟件開(kāi)發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。
② 用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。
③ 軟件產(chǎn)品的質(zhì)量往往靠不住。
④ 軟件常常是不可維護(hù)的。
⑤ 軟件通常沒(méi)有適當(dāng)?shù)奈臋n資料。
⑥ 軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。
⑦ 軟件開(kāi)發(fā)生產(chǎn)率提高的速度,既跟不上硬件的發(fā)展速度,也遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。
產(chǎn)生原因:一方面與軟件本身的特點(diǎn)有關(guān),另一方面也和軟件開(kāi)發(fā)與維護(hù)的方法不正確有關(guān)。
重要的原因之一:在軟件開(kāi)發(fā)的不同階段進(jìn)行修改需要付出的代價(jià)是很不相同的。在早期引入變動(dòng),涉及的面較少,因而代價(jià)也比較低;在開(kāi)發(fā)的中期,軟件配置的許多成分已經(jīng)完成,引入一個(gè)變動(dòng)要對(duì)所有已完成的配置成分都做相應(yīng)的修改,不僅工作量大,而且邏輯上也更復(fù)雜,因此付出的代價(jià)劇增;在軟件“已經(jīng)完成”時(shí)再引入變動(dòng),當(dāng)然需要付出更高的代價(jià)。
軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。
1983 年 IEEE(電氣和電子工程師協(xié)會(huì))為軟件下的定義是:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)算機(jī)上運(yùn)行程序時(shí)所必需的數(shù)據(jù)。
七條基本原理
①用分階段的生命周期計(jì)劃嚴(yán)格管理
②堅(jiān)持進(jìn)行階段評(píng)審
③實(shí)行嚴(yán)格的產(chǎn)品控制
④采用現(xiàn)代程序設(shè)計(jì)技術(shù)
⑤結(jié)果應(yīng)能清楚地審查
⑥開(kāi)發(fā)小組的人員應(yīng)該少而精
⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性
十大領(lǐng)域
①軟件需求(software requirements)
②軟件設(shè)計(jì)(software design)
③軟件構(gòu)建(software construction)
④軟件測(cè)試(software testing)
⑤軟件維護(hù)(software maintenance)
⑥軟件配置管理(software configuration management)
⑦軟件工程管理(software engineering management)
⑧軟件工程過(guò)程(software engineering process)
⑨軟件工程工具和方法(software engineering tools and methods)
⑩軟件質(zhì)量(software quality)
問(wèn)題
一、什么是軟件?有何特點(diǎn)?
目前對(duì)軟件比較公認(rèn)的解釋是:軟件是程序,支持程序運(yùn)行的數(shù)據(jù)以及與程序有關(guān)的文檔的完整集合。
- 程序:按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列
- 文檔:與程序開(kāi)發(fā),維護(hù)和使用有關(guān)的圖文材料
- 文檔分為三大類:開(kāi)發(fā)文檔、用戶文檔、管理文檔
- 文檔的作用:記錄、通信和交流、管理和維護(hù)
- 數(shù)據(jù):使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)
軟件的特點(diǎn):
- 軟件是邏輯的,而不是物理的產(chǎn)品
- 軟件是由開(kāi)發(fā)化或者工程化形成的,沒(méi)有明顯的制造過(guò)程
- 軟件在運(yùn)行和使用期間,不存在硬件那樣的磨損和老化問(wèn)題,但存在退化問(wèn)題,所以需要維護(hù)軟件
- 軟件的故障率是由于軟件修改呈現(xiàn)鋸齒狀,因?yàn)檐浖薷目赡軒?lái)新的錯(cuò)誤
- 大多數(shù)軟件是自定的,軟件開(kāi)發(fā)尚未完全擺脫手工的方式
- 軟件成本相當(dāng)昂貴
- 軟件本身比較復(fù)雜
二、什么是軟件危機(jī)?如何解決?
軟件危機(jī)(Software Crisis),所謂軟件危機(jī),就是指在軟件開(kāi)發(fā)和軟件維護(hù)過(guò)程中所存在的一系列嚴(yán)重問(wèn)題。
軟件危機(jī)的表現(xiàn):
- 軟件開(kāi)發(fā)沒(méi)有計(jì)劃性
- 對(duì)于軟件需求的獲取不充分
- 缺乏良好的軟件質(zhì)量的評(píng)測(cè)手段
- 軟件的可復(fù)用性、可維護(hù)性不如人意
- 軟件開(kāi)發(fā)過(guò)程沒(méi)有“規(guī)范化”
- 軟件開(kāi)發(fā)的人力成本持續(xù)上升
- 缺乏自動(dòng)化的軟件開(kāi)發(fā)技術(shù)
解決軟件危機(jī):
基于軟件危機(jī)產(chǎn)生的角度,應(yīng)該從兩個(gè)方面來(lái)解決軟件危機(jī):軟件工程技術(shù)和軟件工程管理
- 管理層面上考慮:應(yīng)當(dāng)注意推廣和使用在實(shí)踐中總結(jié)出來(lái)的開(kāi)發(fā)軟件的成功的技術(shù)和方法,并且探索更好的、更有效的技術(shù)和方法,注意積累軟件開(kāi)發(fā)過(guò)程中的經(jīng)驗(yàn)數(shù)據(jù)財(cái)富,逐步消除在計(jì)算機(jī)系統(tǒng)早期發(fā)展階段形成的一些錯(cuò)誤概念和做法
- 從技術(shù)角度考慮:應(yīng)當(dāng)開(kāi)發(fā)和使用更好的軟件開(kāi)發(fā)工具,提高軟件開(kāi)發(fā)效率和開(kāi)發(fā)工作過(guò)程的規(guī)范化程度
- 目前廣為使用的統(tǒng)一建模語(yǔ)言(UML)、各種配置管理工具、缺陷管理工具和自動(dòng)測(cè)試工具都在軟件工程活動(dòng)中發(fā)揮了很好的作用
三、軟件工程是一門什么學(xué)科?
研究“大型”軟件開(kāi)發(fā)和維護(hù)的技術(shù)、方法、工具、環(huán)境和管理的工程學(xué)科。
軟件工程是指導(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ù)它。
軟件工程三要素:工具、方法、過(guò)程
軟件工程的內(nèi)容:軟件開(kāi)發(fā)的技術(shù)、軟件開(kāi)發(fā)的管理、軟件過(guò)程管理技術(shù)
四、什么是軟件工程方法學(xué)?
通常把在軟件生命周期全過(guò)程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱為范型
包括傳統(tǒng)方法、面向?qū)ο蟮姆椒ā⑿问交椒?/strong>
五、什么是軟件的生存期?
軟件產(chǎn)品從形成概念開(kāi)始,經(jīng)過(guò)開(kāi)發(fā)、使用和維護(hù),直到最后退役的全過(guò)程。
劃分軟件周期的目的:給每個(gè)階段賦予確定而有限的任務(wù),能夠簡(jiǎn)化每一步的工作內(nèi)容,使軟件復(fù)雜性變得較易控制和管理
軟件生存期的三個(gè)階段、六個(gè)時(shí)期:
- 定義時(shí)期
- 軟件計(jì)劃(可行性研究)
- 需求分析
- 開(kāi)發(fā)時(shí)期
- 軟件設(shè)計(jì)
- 實(shí)現(xiàn)(編碼)
- 測(cè)試
- 使用和維護(hù)時(shí)期
- 運(yùn)行維護(hù)
六、軟件工具包含哪些?
軟件工具是指能支持軟件生存周期中的某一階段(如軟件計(jì)劃、需求分析、軟件設(shè)計(jì)、編碼、測(cè)試、運(yùn)行維護(hù)等)的需要而使用的軟件工具。
一般按照軟件過(guò)程的活動(dòng)來(lái)分類:①支持軟件開(kāi)發(fā)過(guò)程的工具;②支持軟件維護(hù)過(guò)程的工具;③支持軟件管理過(guò)程和支持過(guò)程的工具
二、軟件過(guò)程
軟件工程過(guò)程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。
當(dāng)開(kāi)發(fā)產(chǎn)品或構(gòu)建系統(tǒng)時(shí),遵循一系列可預(yù)測(cè)的步驟(路線圖)是非常重要的,它有助于及時(shí)交付高質(zhì)量的產(chǎn)品;其中所遵循的路線圖就是軟件過(guò)程。
軟件過(guò)程的任務(wù)
- 軟件過(guò)程貫穿軟件開(kāi)發(fā)的各階段,并建立階段里程碑 (Milestones);
- 管理者在軟件工程過(guò)程中需要對(duì)軟件開(kāi)發(fā)的質(zhì)量、進(jìn)度、 成本進(jìn)行評(píng)估、管理和控制;
- 技術(shù)人員在軟件過(guò)程中需采用相應(yīng)的方法和工具生成軟件工程產(chǎn)品,如模型、文檔、數(shù)據(jù)、報(bào)告、表格等
軟件過(guò)程的組成要素
軟件過(guò)程是工作產(chǎn)品構(gòu)建時(shí)所執(zhí)行的一系列活動(dòng)、動(dòng)作和任務(wù)的集合。
- 活動(dòng)(activity):實(shí)現(xiàn)寬泛的大目標(biāo)
- 動(dòng)作(action):階段目標(biāo)
- 任務(wù)(task):關(guān)注小而明確的目標(biāo),產(chǎn)生實(shí)際產(chǎn)品
軟件生命周期的基本任務(wù)
軟件生命周期由軟件定義、軟件開(kāi)發(fā)和運(yùn)行維護(hù)3個(gè)時(shí)期組成,每個(gè)時(shí)期又可進(jìn)一步劃分成若干個(gè)階段。
軟件定義:問(wèn)題定義、需求分析、可行性研究
軟件開(kāi)發(fā):概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試、綜合測(cè)試
運(yùn)行維護(hù)時(shí)期的主要任務(wù)是使軟件持久地滿足用戶的需要
問(wèn)題定義階段必須回答的關(guān)鍵問(wèn)題是:“要解決的問(wèn)題是什么”。可行性研究階段要回答的關(guān)鍵問(wèn)題是:“上一個(gè)階段所確定的問(wèn)題是否有行得通的解決辦法”。需求分析的任務(wù)仍然不是具體地解決客戶的問(wèn)題,而是準(zhǔn)確地回答“目標(biāo)系統(tǒng)必須做什么”這個(gè)問(wèn)題。概要設(shè)計(jì)階段的基本任務(wù)是:概括地回答“怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”概要設(shè)計(jì)又稱為初步設(shè)計(jì)、邏輯設(shè)計(jì)、高層設(shè)計(jì)或總體設(shè)計(jì)。詳細(xì)設(shè)計(jì)階段的任務(wù)就是把解法具體化,也就是回答“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)”這個(gè)關(guān)鍵問(wèn)題。編碼和單元測(cè)試階段的關(guān)鍵任務(wù)是寫出正確的,容易理解、容易維護(hù)的程序模塊。綜合測(cè)試階段的關(guān)鍵任務(wù)是通過(guò)各種類型的測(cè)試(及相應(yīng)的調(diào)試)使軟件達(dá)到預(yù)定的要求。軟件維護(hù)階段的關(guān)鍵任務(wù)是,通過(guò)各種必要的維護(hù)活動(dòng)使系統(tǒng)持久地滿足用戶的需要。
我國(guó)國(guó)家標(biāo)準(zhǔn)《計(jì)算機(jī)軟件開(kāi)發(fā)規(guī)范》(GB8566——88)也把軟件生命周期劃分成8個(gè)階段,這些階段是:可行性研究與計(jì)劃,需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì),實(shí)現(xiàn),組裝測(cè)試,確認(rèn)測(cè)試,使用和維護(hù)。其中,實(shí)現(xiàn)階段即是編碼與單元測(cè)試階段,組裝測(cè)試即是集成測(cè)試,確認(rèn)測(cè)試即是驗(yàn)收測(cè)試。
問(wèn)題
一、軟件過(guò)程的含義?
- 當(dāng)開(kāi)發(fā)產(chǎn)品或構(gòu)建系統(tǒng)時(shí),遵循一系列可預(yù)測(cè)的步驟(路線圖)是非常重要的,它有助于及時(shí)交付高質(zhì)量的產(chǎn)品;其中所遵循的路線圖就是軟件過(guò)程
二、軟件過(guò)程中有哪些共同的、基本的活動(dòng)?
- 一個(gè)通用的軟件工程過(guò)程框架通常會(huì)包含以下5個(gè)基本的框架活動(dòng):
- 溝通:在技術(shù)工作開(kāi)始前,先和利益相關(guān)者進(jìn)行溝通與協(xié)作,以理解項(xiàng)目目標(biāo),并收集需求
- 策劃:制定項(xiàng)目計(jì)劃,包括需要執(zhí)行的技術(shù)任務(wù)、可 能的風(fēng)險(xiǎn)、資源需求、工作產(chǎn)品、工作進(jìn)度計(jì)劃等
- 建模:構(gòu)思軟件的體系結(jié)構(gòu)、構(gòu)件如何結(jié)合等
- 構(gòu)建:包括編碼和測(cè)試
- 部署:交付全部軟件或部分增量,由用戶使用并反饋 意見(jiàn)。
三、如何建立過(guò)程模型?什么是過(guò)程模式?
- 軟件過(guò)程常使用“過(guò)程模型”來(lái)表述
- 一個(gè)通用的軟件過(guò)程模型,包括以下工作:
- 選擇一種過(guò)程流。
- 定義框架活動(dòng):針對(duì)給定的問(wèn)題、開(kāi)發(fā)人員和利益相 關(guān)者,制定每個(gè)框架活動(dòng)中需要完成哪些動(dòng)作。
- 例如在溝通活動(dòng)中,可能包括啟動(dòng)、需求獲取、需求系統(tǒng)、 談判、規(guī)格說(shuō)明、確認(rèn)等動(dòng)作。
- 明確任務(wù)集:為每個(gè)動(dòng)作制定所需要的任務(wù)集
- 任務(wù)集由工作任務(wù)、相關(guān)工作產(chǎn)品、質(zhì)量保證點(diǎn)和項(xiàng)目里程 碑等部分組成
- 對(duì)于不同的軟件項(xiàng)目,即便是相同的動(dòng)作,確定的任務(wù)集也可能不一樣。
- 編寫或查找過(guò)程模式。
四、 慣用(傳統(tǒng))過(guò)程模型
-
軟件工程發(fā)展到現(xiàn)在,已經(jīng)出現(xiàn)了很多不同的過(guò)程模 型,其中有一些可歸屬為“傳統(tǒng)過(guò)程模型”
-
傳統(tǒng)過(guò)程模型以秩序和一致性作為主要問(wèn)題,規(guī)定了 一整套的過(guò)程元素,包括:過(guò)程流、框架活動(dòng)、軟件 工程動(dòng)作、任務(wù)、工作產(chǎn)品、質(zhì)量保證、變更控制機(jī)制等。
-
常見(jiàn)的幾種傳統(tǒng)過(guò)程模型:瀑布模型、V模型、增量過(guò)程模型、原型開(kāi)發(fā)模型、螺旋模型、協(xié)同模型
-
瀑布模型:前提:需求穩(wěn)定而明確、由文檔驅(qū)動(dòng)、前一階段的結(jié)果是后一階段的輸入、推遲了軟件實(shí)現(xiàn)、現(xiàn)實(shí)開(kāi)發(fā)中添加反饋機(jī)制、階段評(píng)審和文檔控制
-
(1)階段間具有順序性和依賴性
這個(gè)特點(diǎn)有兩重含義:①必須等前一階段的工作完成之后,才能開(kāi)始后一階段的工作;②前一階段的輸出文檔就是后一階段的輸入文檔。
(2)推遲實(shí)現(xiàn)的觀點(diǎn)
(3)質(zhì)量保證的觀點(diǎn)
-
V模型、W模型
-
-
增量模型:該模型先對(duì)系統(tǒng)最核心或最清晰的需求進(jìn)行分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試,再按優(yōu)先級(jí)逐步對(duì)后續(xù)需求進(jìn)行上述工作,并集成到系統(tǒng)中,逐步形成一個(gè)完整系統(tǒng)
- 綜合了線性、并行、演化的特征;每一個(gè)增量都提交一個(gè)可以運(yùn)行的產(chǎn)品;適用于人手不足的情況;客戶的需求可以逐步提出來(lái);可以規(guī)避技術(shù)風(fēng)險(xiǎn);增量粒度難以選擇
-
原型開(kāi)發(fā):原型:模擬某種產(chǎn)品的原始模型(“樣機(jī)”)。在獲得一組基本需求后, 可以先通過(guò)快速地分析和設(shè)計(jì),構(gòu)造出一個(gè)小型的 軟件系統(tǒng)原型。用戶使用原型系統(tǒng),開(kāi)發(fā)人員根據(jù)用戶反饋修改或重建系統(tǒng)。
- 僅包含主要功能以及重要接口,不包括系統(tǒng)的細(xì)節(jié)
- 強(qiáng)調(diào)快速,不建議過(guò)多地采用新技術(shù)
- 原型可作為一種技術(shù),用于其它過(guò)程模型中
-
螺旋模型:螺旋模型結(jié)合了原型的迭代性質(zhì)和瀑布模型的系統(tǒng)性和可控性特點(diǎn),能快速開(kāi)發(fā)軟件的增量版本。
- 是一種風(fēng)險(xiǎn)驅(qū)動(dòng)的過(guò)程模型
- 螺旋模型沿著螺線順時(shí)針由內(nèi)而外每旋轉(zhuǎn)一圈便開(kāi)發(fā)出一個(gè)新的版本
- 螺旋模型并不要求每一個(gè)螺旋的產(chǎn)品都是可以運(yùn)行的程序
- 螺旋模型不是當(dāng)軟件交付后就結(jié)束過(guò)程,而是應(yīng)用在軟件的整個(gè)生命周期中。
- 適用于大型系統(tǒng)和軟件開(kāi)發(fā);把軟件質(zhì)量作為一個(gè)重要目標(biāo);把維護(hù)也看做是一種開(kāi)發(fā)
-
噴泉模型:噴泉模型主要用于面向?qū)ο蟮能浖?xiàng)目,軟件的某個(gè)部分通常被重復(fù)多次,相關(guān)對(duì)象在每次迭代中隨之加入漸進(jìn)的軟件成分。各活動(dòng)之間無(wú)明顯邊界,例如設(shè)計(jì)和實(shí)現(xiàn)之間沒(méi)有明顯的邊界,這也稱為“噴泉模型的無(wú)間隙性”。
- 較容易地實(shí)現(xiàn)活動(dòng)的迭代和無(wú)間隙
- 各個(gè)階段沒(méi)有明顯的界限,開(kāi)發(fā)人員可以同步進(jìn)行開(kāi)發(fā)
- 開(kāi)發(fā)過(guò)程中需要大量的開(kāi)發(fā)人員,因此不利于項(xiàng)目的管理
五、統(tǒng)一過(guò)程
- RUP: Rational Unified Process
- RUP是一個(gè)面向?qū)ο蟮幕趙eb的程序開(kāi)發(fā)方法論, 它建立了迭代、增量的過(guò)程流,提供了演進(jìn)的特性。RUP從傳統(tǒng)軟件過(guò)程中挖掘了最好的特征和性質(zhì),也可用敏捷軟件開(kāi)發(fā)中的許多最好的原則來(lái)實(shí)現(xiàn)。RUP既是一種軟件過(guò)程模型,又是一種支持面向?qū)ο筌浖_(kāi)發(fā)的工具,它將軟件開(kāi)發(fā)過(guò)程要素和軟件工件要素整合在統(tǒng)一的框架中。RUP實(shí)際上是一種重量級(jí)過(guò)程,描述得非常完善和具體,特別適用于大型軟件團(tuán)隊(duì)開(kāi)發(fā)大型項(xiàng)目,實(shí)際應(yīng)用時(shí)也可進(jìn)行裁剪簡(jiǎn)化
- 五個(gè)階段:起始、細(xì)化、 構(gòu)建、轉(zhuǎn)換、生產(chǎn)
- 特點(diǎn):用例驅(qū)動(dòng),以架構(gòu)為核心,迭代且增量
六、敏捷軟件開(kāi)發(fā)
- 敏捷開(kāi)發(fā)方法保留了軟件過(guò)程中基本的框架活動(dòng):溝通、策劃、建模、構(gòu)建和部署,但將其縮減到一個(gè)推動(dòng)項(xiàng)目組朝著構(gòu)建和交付發(fā)展的最小任務(wù)集。因此敏捷方法也被稱為輕量級(jí)方法、精簡(jiǎn)方法
- 敏捷開(kāi)發(fā)強(qiáng)調(diào):
- 開(kāi)發(fā)人員和客戶之間主動(dòng)和持續(xù)的溝通
- 小而高度自主的項(xiàng)目團(tuán)隊(duì)
- 讓客戶滿意和軟件的早期增量發(fā)布
- 超越分析和設(shè)計(jì)(但不排斥這類活動(dòng))的發(fā)布
- 整體精簡(jiǎn)開(kāi)發(fā),并使用最小化的軟件工程工作產(chǎn)品
七、軟件能力成熟度的五個(gè)階段:CMM1 → CMM5,從低到高
三、需求獲取與結(jié)構(gòu)化分析方法
軟件需求的類別
- 功能:軟件應(yīng)該具有的功能
- 質(zhì)量:軟件應(yīng)該具備的質(zhì)量要求
- 約束:成本、進(jìn)度、技術(shù)選型、標(biāo)準(zhǔn)和規(guī)范等要求
需求分析的目標(biāo):精確化、一致化、完全化、無(wú)冗余
需求分析任務(wù)
需求分析過(guò)程
需求獲取的主要方法基于交流
需求技術(shù)
需求導(dǎo)出、建模和分析
需求建模技術(shù):問(wèn)題分解、抽象、多視點(diǎn)、快速原型、建模語(yǔ)言(數(shù)據(jù)流圖、統(tǒng)一建模語(yǔ)言UML)
需求描述
軟件需求規(guī)格說(shuō)明書SRS
需求評(píng)審
目的、要求和結(jié)果
需求評(píng)審是為了減少和避免需求分析的結(jié)果可能存在的問(wèn)題以及缺陷,以及他們可能帶來(lái)的嚴(yán)重后果
如何進(jìn)行需求評(píng)審?評(píng)審的對(duì)象就是需求模型以及軟件需求規(guī)格說(shuō)明書
結(jié)構(gòu)化分析方法
傳統(tǒng)的分析建模方法稱為結(jié)構(gòu)化分析( structured analysis,SA)方法
最有代表性的是一種面向數(shù)據(jù)流進(jìn)行需求分析的方法,最初于20世紀(jì)70年代由D.Ross提出,后 來(lái)又經(jīng)過(guò)擴(kuò)充,形成了今天的結(jié)構(gòu)化分析方法的框架。
結(jié)構(gòu)化分析方法是一種建模技術(shù)
功能建模
功能建模的思想就是用抽象模型的概念,按照軟件內(nèi)部數(shù)據(jù)傳遞、變換的關(guān)系,自頂向下逐層分解,直到找到滿足功能要求的所有可實(shí)現(xiàn)的軟件為止。
數(shù)據(jù)流圖
功能模型用數(shù)據(jù)流圖來(lái)描述。
數(shù)據(jù)流圖的基本圖形符號(hào)
數(shù)據(jù)流圖的多個(gè)數(shù)據(jù)流之間的關(guān)系
環(huán)境圖
環(huán)境圖(context diagram)也稱為頂層數(shù)據(jù)流圖(或0層數(shù)據(jù)流圖),它僅包括一個(gè)數(shù)據(jù)處理過(guò)程,也就是要開(kāi)發(fā)的目標(biāo)系統(tǒng)。
環(huán)境圖的作用是確定系統(tǒng)在其環(huán)境中的位置,通過(guò)確定系統(tǒng)的輸入和輸出與外部實(shí)體的關(guān)系確定其邊界。
典型的環(huán)境圖
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-mNoPkQfy-1653638581743)(https://fastly.jsdelivr.net/gh/RealBeBetter/image/img/202205271600686.png)]
E-R圖
關(guān)聯(lián)數(shù)量的表示:一對(duì)一、一對(duì)多、多對(duì)多
關(guā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)圖中使用的主要符號(hào)
數(shù)據(jù)字典
數(shù)據(jù)字典定義中的符號(hào)
加工規(guī)格說(shuō)明
決策表
四、結(jié)構(gòu)化設(shè)計(jì)方法
軟件設(shè)計(jì)的概念及原則
一、分而治之
- 分而治之是人們解決大型復(fù)雜問(wèn)題時(shí)通常采用的策略。將大型復(fù)雜的問(wèn)題分解為許多容易解決的小問(wèn)題,原來(lái)的問(wèn)題也就容易解決了
- 軟件的體系結(jié)構(gòu)設(shè)計(jì)、模塊化設(shè)計(jì)都是分而治之策略的具體表現(xiàn)
二、模塊獨(dú)立性
- 定義: 是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能, 而和軟件系統(tǒng)中其它模塊的接口是簡(jiǎn)單的。
- 有效的模塊化使軟件便于分工協(xié)作開(kāi)發(fā)。
- 獨(dú)立的模塊比較容易測(cè)試和維護(hù)
模塊獨(dú)立性的度量準(zhǔn)則
- 耦合:是模塊之間的互相連接的緊密程度的度量
- 內(nèi)聚:是模塊功能強(qiáng)度(一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度)的度量
- 模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是高內(nèi)聚低耦合的模塊
耦合度排序
- 非直接耦合:兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的;非直接耦合的模塊獨(dú)立性最強(qiáng)。
- 數(shù)據(jù)耦合:一個(gè)模塊訪問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)簡(jiǎn)單數(shù)據(jù)參數(shù) (不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量) 來(lái)交換輸入、輸出信息的。也是較理想的耦合。
- 控制耦合:如果一個(gè)模塊通過(guò)傳送開(kāi)關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。
- 公共耦合(Common Coupling):若一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。
- 內(nèi)容耦合 (Content Coupling)
- 一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù)。
- 一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部。
- 兩個(gè)模塊有一部分程序代碼重迭。 (只可能出現(xiàn)在匯編語(yǔ)言中)
- 一個(gè)模塊有多個(gè)入口。
設(shè)計(jì)原則
- 盡量使用數(shù)據(jù)耦合
- 少用控制耦合
- 限制使用公共耦合(除非傳遞大量數(shù)據(jù))
- 完全不用內(nèi)容耦合
內(nèi)聚度排序
- 偶然內(nèi)聚(Coincidental Cohesion):當(dāng)模塊內(nèi)各部分之間沒(méi)有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散,則稱這種模塊為偶然內(nèi)聚模塊,內(nèi)聚程度最低。
- 邏輯內(nèi)聚(Logical Cohesion):把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪個(gè)功能。
- 時(shí)間內(nèi)聚(Classical Cohesion):時(shí)間內(nèi)聚模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。
- 過(guò)程內(nèi)聚(Procedural Cohesion):如果一個(gè)模塊內(nèi)的處理是相關(guān)的,而且必須以特定次序執(zhí)行,則是過(guò)程內(nèi)聚。
- 順序內(nèi)聚:一個(gè)模塊中的處理元素和同一功能密切相關(guān),而且這些處理必須順序執(zhí)行,而且一個(gè)成分的輸出作為另一個(gè)成分的輸入,則稱為順序內(nèi)聚。
- 功能內(nèi)聚 (Functional Cohesion):一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。模塊的所有成分對(duì)于完成單一的功能都是必須的。
總結(jié)
以上是生活随笔為你收集整理的【软件工程】重要知识点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 快速开发平台 - 资料收集
- 下一篇: 10月Web服务器调查:Apache下降