11. 軟件工程

作者:Gakki

考點(diǎn)(分值:10分)

  • 信息系統(tǒng)生命周期
  • 能力成熟度模型
  • 軟件過程模型(重點(diǎn))
  • 信息系統(tǒng)開發(fā)方法(重點(diǎn))
  • 系統(tǒng)分析與設(shè)計(jì)概述
  • 結(jié)構(gòu)化開發(fā)
  • 系統(tǒng)運(yùn)行與維護(hù)

1、信息系統(tǒng)生命周期

信息系統(tǒng)生命周期
  • 軟件工程基本原理:用分階段的生命周期計(jì)劃嚴(yán)格管理、堅(jiān)持進(jìn)行階段評審、實(shí)現(xiàn)嚴(yán)格的產(chǎn)品控制、采用現(xiàn)代程序設(shè)計(jì)技術(shù)、結(jié)果應(yīng)能清楚的審查、開發(fā)小組的人員應(yīng)少而精、承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性。
  • 軟件工程的基本要素:方法、工具、過程。(考點(diǎn))
  • 軟件生命周期:可行性分析與項(xiàng)目開發(fā)計(jì)劃、需求分析、概要設(shè)計(jì)(選擇系統(tǒng)解決方案、規(guī)劃子系統(tǒng))、詳細(xì)設(shè)計(jì)(設(shè)計(jì)子系統(tǒng)內(nèi)部具體實(shí)現(xiàn))、編碼、測試、維護(hù)。

1.1、 五階段生命周期(考點(diǎn):定義與輸出)

1.1.1、系統(tǒng)規(guī)劃階段

  • 任務(wù)是對組織的環(huán)境、目標(biāo)及現(xiàn)行系統(tǒng)的狀況進(jìn)行初步調(diào)查,更具組織目標(biāo)和發(fā)展戰(zhàn)略確定信息系統(tǒng)的發(fā)展戰(zhàn)略,對建設(shè)新系統(tǒng)的需求做出分析和預(yù)測,同時考慮建設(shè)新系統(tǒng)所受的各種約束,研究建設(shè)新系統(tǒng)的必要性和可能性。根據(jù)需要與可能,給出制建系統(tǒng)的備選方案。
    輸出:可行性研究報告、系統(tǒng)設(shè)計(jì)任務(wù)書

1.1.2、系統(tǒng)分析階段

  • 任務(wù)是根據(jù)系統(tǒng)設(shè)計(jì)任務(wù)書所確定的范圍,對現(xiàn)行系統(tǒng)進(jìn)行詳細(xì)調(diào)查,描述現(xiàn)行系統(tǒng)的業(yè)務(wù)流程,指出現(xiàn)行系統(tǒng)的局限性和不足之處,確定新系統(tǒng)的基本目標(biāo)和邏輯功能要求,即:提出新系統(tǒng)的邏輯模型。系統(tǒng)分析階段又稱為邏輯設(shè)計(jì)涉階段。這個階段是整個系統(tǒng)建設(shè)的關(guān)鍵階段,也是信息系統(tǒng)建設(shè)與一般工程項(xiàng)目的重要區(qū)別所在。
    輸出:系統(tǒng)說明書

1.1.3、系統(tǒng)設(shè)計(jì)階段

  • 系統(tǒng)分析階段任務(wù)是回答系統(tǒng)"做什么"的問題,而系統(tǒng)設(shè)計(jì)階段要回答問題是"怎么做"。該階段的任務(wù)是根據(jù)系統(tǒng)說明書中規(guī)定的功能要求,具體設(shè)計(jì)實(shí)現(xiàn)邏輯模型的技術(shù)方案,也就是設(shè)計(jì)新系統(tǒng)的物理模型。這個階段又稱為物理設(shè)計(jì)階段,可分為總體設(shè)計(jì)(概要設(shè)計(jì))和詳細(xì)設(shè)計(jì)兩個子階段。
    輸出:系統(tǒng)設(shè)計(jì)說明書(概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)說明書)

1.1.4、 系統(tǒng)實(shí)施階段

  • 將設(shè)計(jì)的系統(tǒng)付諸實(shí)現(xiàn)的階段。這一階段的任務(wù)包括計(jì)算機(jī)等設(shè)備的購置、安裝和調(diào)試、程序的編寫和調(diào)試、人員培訓(xùn)、數(shù)據(jù)文件轉(zhuǎn)換、系統(tǒng)調(diào)試與轉(zhuǎn)換等。這個階段的特點(diǎn)是幾個互相聯(lián)系、互相制約的任務(wù)同時展開,必須精心安排、合理組織。系統(tǒng)實(shí)施是按實(shí)施計(jì)劃分階段完成的,每個階段應(yīng)寫出實(shí)施進(jìn)展報告。系統(tǒng)測試之后寫出系統(tǒng)測試分析報告。
    輸出:實(shí)施進(jìn)展報告、系統(tǒng)測試分析報告

1.1.5、 系統(tǒng)運(yùn)行和維護(hù)階段

  • 系統(tǒng)投入運(yùn)行后,需要經(jīng)常進(jìn)行維護(hù)和評價,記錄系統(tǒng)運(yùn)行的情況,根據(jù)一定的規(guī)則對系統(tǒng)進(jìn)行必要的修改,評價系統(tǒng)的工作質(zhì)量和經(jīng)濟(jì)效益。

2、能力成熟度模型

2.1、能力成熟度模型 CMM

能力成熟度模型 CMM

2.2、能力成熟度模型【集成】 CMMI

  • 能力成熟度模型集成 CMMI 是 若干過程模型的綜合和改進(jìn),不僅僅軟件,而是支持多個工程學(xué)科和領(lǐng)域的、系統(tǒng)的、一致的過程改進(jìn)框架,能適應(yīng)現(xiàn)代工程的特點(diǎn)和需要,能提高過程的質(zhì)量和工程效率。
  • CMMI 兩種表示方法:
  1. 階段式模型:類似于 CMM,它關(guān)注組織的成熟度,五個成熟度模型如下:
能力成熟度模型集成 CMMI
  1. 連續(xù)式模型:關(guān)注每個過程域的能力,一個組織對不同的過程域可以達(dá)到不同的過程域能力等級。

3、軟件過程模型

3.1、瀑布模型(SDLC)

  • 瀑布模型是一個經(jīng)典的軟件生命周期模型,一般將軟件開發(fā)分為:可行性分析(計(jì)劃)、需求分析、軟件設(shè)計(jì)(概要設(shè)計(jì)、詳細(xì)設(shè)計(jì))、編碼(含單元測試)、測試、運(yùn)行維護(hù)等幾個階段。
  • 特點(diǎn):
    1. 上一項(xiàng)開發(fā)活動接受該項(xiàng)活動的工作對象作為輸入
    2. 利用這一輸入,實(shí)施該項(xiàng)活動應(yīng)完成的工作內(nèi)容。
    3. 給出該項(xiàng)活動的工作成果,作為輸出傳給下一項(xiàng)開發(fā)活動。
    4. 該項(xiàng)活動的實(shí)施工作成果進(jìn)行評審。若其工作成功得到確認(rèn),則繼續(xù)進(jìn)行下一項(xiàng)開發(fā)活動;否則返回前一項(xiàng),甚至更前項(xiàng)的活動。盡量減少多個階段間的反復(fù)。以相對來說較小的費(fèi)用來開發(fā)軟件。
  • 考點(diǎn):功能清晰,也即需求較明確,有這樣的關(guān)鍵字都是考察瀑布模型。
瀑布模型
  • 瀑布模型的優(yōu)點(diǎn):
    1. 可規(guī)范化開發(fā)人員的開發(fā)過程
    2. 嚴(yán)格地規(guī)定了每個階段必須提交的文檔
    3. 要求每個階段提交的所有制品必須經(jīng)過評審和驗(yàn)證。

3.2、螺旋模型

  • 是一個演化軟件過程模型,將原型實(shí)現(xiàn)的迭代特征與線性順序(瀑布)模型中控制的和系統(tǒng)化的方面結(jié)合起來。在螺旋模型中,軟件開發(fā)是一系列的增量發(fā)布
  • 開發(fā)過程具有周期性重復(fù)的螺旋線狀。四個象限分別標(biāo)志每個周期所劃分的四階段:制定計(jì)劃、風(fēng)險分析、實(shí)施工程和客戶評價。螺旋模型強(qiáng)調(diào)了風(fēng)險分析,特別適用于龐大而復(fù)雜的、高風(fēng)險的系統(tǒng)。(考點(diǎn):風(fēng)險分析。
  • 優(yōu)點(diǎn):項(xiàng)目失敗的風(fēng)險較低。
螺旋模型

3.3、V 模型

  • 從整體上看起來,就是一個 V 字型的結(jié)構(gòu),由左右兩邊組成。左邊的下畫線分別代表了需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼。右邊的上畫線代表了單元測試、集成測試、系統(tǒng)測試與驗(yàn)收測試。

  • V 模型特點(diǎn)如下:

    1. 單元測試的主要目的是針對編碼過程中可能存在的各種錯誤;(記法:單編)
    2. 集成測試的主要目的是針對詳細(xì)設(shè)計(jì)中可能存在的問題;(記法:集詳)
    3. 系統(tǒng)測試主要針對概要設(shè)計(jì),檢查系統(tǒng)作為一個整體是否有效地得到運(yùn)行;(記法:系概)
    4. 驗(yàn)收測試通常由業(yè)務(wù)專家或者用戶進(jìn)行,以確認(rèn)產(chǎn)品能真正符合用戶業(yè)務(wù)上的需求。(記法:驗(yàn)需)
    5. V 模型用于需求明確和需求變更不頻繁的情形。
  • 注:下面對應(yīng)的關(guān)系為計(jì)劃對應(yīng)關(guān)系。如:單元測試計(jì)劃需要在詳細(xì)設(shè)計(jì)的時候完成,所以單元測試對應(yīng)詳細(xì)設(shè)計(jì)。

V 模型

3.4、原型化模型

  • 原型化模型第一步就是創(chuàng)建一個快速原型,能夠滿足項(xiàng)目干系人與未來的用戶可以與原型進(jìn)行交互,再通過與相關(guān)干系人進(jìn)行充分的討論和分析,最終弄清楚當(dāng)前系統(tǒng)的需求,進(jìn)行了充分的了解之后,在原型的基礎(chǔ)上開發(fā)出用戶滿意的產(chǎn)品。
  • 原型法認(rèn)為在很難一下子全面準(zhǔn)確地提出用戶需求的情況下,原型應(yīng)當(dāng)具備的特點(diǎn)如下:
    1. 實(shí)際可行
    2. 具有最終系統(tǒng)的基本特征
    3. 構(gòu)造方便、快速、造價低,原型法的特點(diǎn)在于原型法對用戶的需求是動態(tài)響應(yīng)、逐步納入的

3.5、增量模型

  • 首先開發(fā)核心模塊功能,而后與用戶確認(rèn),之后再開發(fā)次核心模塊的功能,即每次開發(fā)一部分功能,并與用戶需求確認(rèn),最終完成項(xiàng)目開發(fā),優(yōu)先級最高的服務(wù)最先交付
  • 特點(diǎn):但由于并不是從系統(tǒng)整體角度規(guī)劃各個模塊,因此不利于模塊劃分。難點(diǎn)在于如何將客戶需求劃分為多個增量。與原型不同的是增量模型的每一次增量版本都可作為獨(dú)立可操作的產(chǎn)品,而原型的構(gòu)造一般是為了演示。
增量模型
  • 考點(diǎn):
    • 增量模型:快速開發(fā)第一交互產(chǎn)品、交互,然后再開發(fā),再交互。

3.6、其他模型

  • 噴泉模型是一種以用戶需求為動力,以對象為驅(qū)動的模型,主要用于描述面向?qū)ο?/code>的軟件開發(fā)過程。該模型認(rèn)為軟件開發(fā)過程自下而上周期的各階段是相互迭代和無間隙的特性。

  • 基于構(gòu)件的開發(fā)模型 CBSD:利用預(yù)先包裝的構(gòu)件來構(gòu)造應(yīng)用系統(tǒng)。構(gòu)件可以是組織內(nèi)部開發(fā)的構(gòu)件,也可以是商品化成品軟件構(gòu)件。特點(diǎn)是增強(qiáng)了復(fù)用性,在系統(tǒng)開發(fā)過程中,會構(gòu)建一個構(gòu)件庫,供其他系統(tǒng)復(fù)用,因此可以提高可靠性,節(jié)省時間和成本。

  • 形式化方法模型:建立在嚴(yán)格數(shù)學(xué)基礎(chǔ)上的一種軟件開發(fā)方法,主要活動是生成計(jì)算機(jī)軟件形式化的數(shù)學(xué)規(guī)格說明。

  • 總結(jié)

    • 瀑布模型將開發(fā)階段描述為從一個階段瀑布般地轉(zhuǎn)換到另一個階段的過程。
    • 原型模型中,開發(fā)人員快速地構(gòu)造整個系統(tǒng)或者系統(tǒng)的一部分以理解或澄清問題。
    • 螺旋模型將開發(fā)活動和風(fēng)險管理結(jié)合起來,以減少風(fēng)險。
    • 噴泉模型開發(fā)過程模型以用戶需求為動力,以對象為驅(qū)動,適合于面向?qū)ο蟮拈_發(fā)方法。

4、信息系統(tǒng)開發(fā)方法

4.1 結(jié)構(gòu)化方法

  • 結(jié)構(gòu)是指系統(tǒng)內(nèi)各個組成要素之間的相互聯(lián)系、相互作用的框架。

  • 結(jié)構(gòu)化方法也稱為生命周期法,是一種傳統(tǒng)的信息系統(tǒng)開發(fā)方法,由結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化程序設(shè)計(jì)三部分有機(jī)組合而成,其精髓是自頂向下、逐步求精和模塊化設(shè)計(jì)。

  • 結(jié)構(gòu)化方法的主要特點(diǎn):

    1. 開發(fā)目標(biāo)清晰化:結(jié)構(gòu)化方法的系統(tǒng)開發(fā)遵循"用戶第一"的原則。
    2. 開發(fā)工作階段化:每個階段工作完成后,要根據(jù)階段工作目標(biāo)和要求進(jìn)行審查,這使各階段工作階段有條不紊地進(jìn)行,便于項(xiàng)目管理和控制。
    3. 開發(fā)文檔規(guī)范化:結(jié)構(gòu)化方法每個階段工作完成后,要按照要求完成相應(yīng)的文檔,以保證各個階段的銜接與系統(tǒng)維護(hù)工作的遍歷。
    4. 設(shè)計(jì)方法結(jié)構(gòu)化:在系統(tǒng)分析與設(shè)計(jì)時,從整體和全局考慮,自頂向下地分解;在系統(tǒng)實(shí)現(xiàn)時,根據(jù)設(shè)計(jì)的要求,先編寫各個具體的功能模塊,然后自底向上逐步實(shí)現(xiàn)整個系統(tǒng)。
  • 結(jié)構(gòu)化方法的不足和局限性

    1. 開發(fā)周期長:按順序經(jīng)歷各個階段,直到實(shí)施階段結(jié)束后,用戶才能使用系統(tǒng)。
    2. 難以適應(yīng)需求變化:不適用于需求不明確或經(jīng)常變更的項(xiàng)目。
    3. 很少考慮數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)化方法是一種面向過程,面向數(shù)據(jù)流的開發(fā)方法,很少考慮數(shù)據(jù)結(jié)構(gòu)。
  • 結(jié)構(gòu)化方法常用的工具

    • 結(jié)構(gòu)化方法一般利用圖形表達(dá)用戶需求,常用工具有數(shù)據(jù)流圖、數(shù)據(jù)字典、結(jié)構(gòu)化語言、判定表以及判定樹等。

4.2、面向?qū)ο螅∣bject-Oriented,OO)方法

  • 面向?qū)ο螅∣bject-Oriented,OO)方法認(rèn)為,客觀世界是由各種對象組成的,任何事物都是對象,每一個對象都有自己的運(yùn)動規(guī)律和內(nèi)部狀態(tài),都屬于某個對象類,是該對象類的一個元素。復(fù)雜的對象可由相對箱單的各種對象以某種方式而構(gòu)成,不同對象的組合及相互作用就構(gòu)成了系統(tǒng)。

  • 面向?qū)ο蠓椒ǖ奶攸c(diǎn):

    1. 使用 OO 方法構(gòu)造的系統(tǒng)具有更好的復(fù)用性,其關(guān)鍵在于建立一個全面、合理、統(tǒng)一的模型(用例模型和分析模型)。
    2. OO 方法也劃分階段,但其中的系統(tǒng)分析、系統(tǒng)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)三個階段之間沒有" 縫隙 ",也就是說,這三個階段的界限變得不明確,某項(xiàng)工作既可以在前一個階段完成,也可以在后一個階段完成;前一個階段工作做得不夠細(xì),在后一個階段可以補(bǔ)充。
    3. 面向?qū)ο蠓椒梢?strong>普遍適用于各類信息系統(tǒng)的開發(fā)。
  • 面向?qū)ο蠓椒ǖ牟蛔阒?/p>

    • 必須依靠一定的面向?qū)ο蠹夹g(shù)支持,在大型項(xiàng)目的開發(fā)上具有一定的局限性,不能涉及系統(tǒng)分析以前的開發(fā)環(huán)節(jié)。
  • 當(dāng)前,一些大型信息系統(tǒng)的開發(fā),通常是將結(jié)構(gòu)化方法和 OO 方法結(jié)合起來。首先,使用結(jié)構(gòu)化方法進(jìn)行自頂向下的整體劃分;然后,自底向上地采用 OO 方法進(jìn)行開發(fā)。因此,結(jié)構(gòu)化方法和 OO 方法仍是兩種在系統(tǒng)開發(fā)領(lǐng)域中相互依存的、不可替代的方法。

4.3、原型化方法

  • 原型化方法也成為快速原型法,或者簡稱為原型法。它是一種根據(jù)用戶初步需求,利用系統(tǒng)開發(fā)工具,快速地建立一個系統(tǒng)模型展示給用戶,在此基礎(chǔ)上與用戶交流,最終實(shí)現(xiàn)用戶需求的信息系統(tǒng)快速開發(fā)的方法。

  • 是否實(shí)現(xiàn)功能分類:分為水平原型(行為原型,功能的導(dǎo)航)、垂直原型(結(jié)構(gòu)化原型,實(shí)現(xiàn)了部分功能)。

  • 最終結(jié)果分類:分為拋棄式原型、演化式原型。

原型化方法
  • 原型法的特點(diǎn)

    • 原型法可以使系統(tǒng)開發(fā)的周期縮短、成本和風(fēng)險降低、速度加快,獲得較高的綜合開發(fā)效益。
    • 原型法是以用戶為中心來開發(fā)系統(tǒng)的,用戶參與的程度大大提高,開發(fā)的系統(tǒng)符合用戶的需求,因而增加了用戶的滿意度,提高了系統(tǒng)開發(fā)的成功率。
    • 由于用戶參與了系統(tǒng)開發(fā)的全過程,對系統(tǒng)的功能和結(jié)構(gòu)容易理解和接受,有利于系統(tǒng)的移交,有利于系統(tǒng)的運(yùn)行與維護(hù)。
  • 原型法的不足之處

    • 開發(fā)的環(huán)境要求高,管理水平要求高。
  • 由以上的分析可以看出,原型法的優(yōu)點(diǎn)主要在于能更有效地確認(rèn)用戶需求。從直觀上來看,原型法適用于那些需求不明確的系統(tǒng)開發(fā)。事實(shí)上,對于分析層面難度大、技術(shù)層面難度不大的系統(tǒng),適合于原型法開發(fā)。

從嚴(yán)格意義上來說,目前的原型法不是一種獨(dú)立的系統(tǒng)開發(fā)方法,而只是一種開發(fā)思想,它只支持在系統(tǒng)開發(fā)早期階段快速生成系統(tǒng)的原型,沒有規(guī)定在原型構(gòu)建過程中必須使用哪種方法。因此,它不是完整意義上的方法論體系。這就注定了原型法必須與其他信息系統(tǒng)開發(fā)方法結(jié)合使用。

注意:原型試試一種開發(fā)思想,只是在系統(tǒng)分析階段。

4.4、敏捷開發(fā)

敏捷開發(fā)
  • 敏捷開發(fā)是一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法,相對于傳統(tǒng)軟件開發(fā)方法的“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作、面對面的溝通(認(rèn)為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重軟件開發(fā)中人的作用。

  • 敏捷軟件開發(fā)宣言:

    1. 個體和交互勝過過程和工具
    2. 可以工作的軟件勝過面面俱到的文檔
    3. 客戶合作勝過合同談判
    4. 響應(yīng)變化勝過遵循計(jì)劃
  • 結(jié)對編程:一個程序員開發(fā),另一個程序在一旁觀察審查代碼, 能夠有效的提高代碼質(zhì)量,在開發(fā)同時對代碼進(jìn)行初步審查,共同對代碼負(fù)責(zé)。

  • 自適應(yīng)開發(fā):強(qiáng)調(diào)開發(fā)方法的適應(yīng)性(Adaptive)。不象其他方法那樣有很多具體的實(shí)踐做法,它更側(cè)重為軟件的重要性提供最根本的基礎(chǔ),并從更高的組織和管理層次來闡述開發(fā)方法為什么要具備適應(yīng)性。

  • 水晶方法:每一個不同的項(xiàng)目需要一套不同的策略、約定和方法論。

  • 特性驅(qū)動開發(fā):是一套針對中小型軟件開發(fā)項(xiàng)目的開發(fā)模式。是一個模型驅(qū)動的快速迭代開發(fā)過程,它強(qiáng)調(diào)的是簡化、實(shí)用、易于被開發(fā)團(tuán)隊(duì)接受,適用于需求經(jīng)常變動的項(xiàng)目。

  • 極限編程XP:由價值觀、原則、實(shí)踐和行為四個部分組成,核心是溝通、簡明、反饋和勇氣(四大價值觀)。有五大原則:即快速反饋,簡單性假設(shè)、逐步修改、提倡更改和優(yōu)質(zhì)工作。因?yàn)橹烙?jì)劃永遠(yuǎn)趕不上變化,XP無需開發(fā)人員在軟件開始初期做出很多的文檔。XP提倡測試先行,為了將以后出現(xiàn)bug的幾率降到最低。

  • 并列爭球法SCRUM:是一種迭代的增量化過程,每段時間(30天)一次的迭代稱為一個“沖刺”,并按需求的優(yōu)先級別來實(shí)現(xiàn)產(chǎn)品,多個自組織和自治的小組并行地遞增實(shí)現(xiàn)產(chǎn)品。

4.5、統(tǒng)一過程(RUP)

  • 提供了在開發(fā)組織中分派任務(wù)和責(zé)任的紀(jì)律化方法。它的目標(biāo)是在可預(yù)見的日程和預(yù)算前提下,確保滿足最終用戶需求的高質(zhì)量產(chǎn)品。
  • 3個顯著特點(diǎn):用例驅(qū)動、以架構(gòu)為中心、迭代和增量。
  • 4個流程:初始階段、細(xì)化階段、構(gòu)建階段和交付階段。每個階段結(jié)束時都要安排一次技術(shù)評審,以確定這個階段的目標(biāo)是否已經(jīng)達(dá)到。
  • 適用:一個通用過程框架,可以用于種類廣泛的軟件系統(tǒng)、不同的應(yīng)用領(lǐng)域、不同的組織類型、不同性能水平和不同的項(xiàng)目規(guī)模。

4.6、系統(tǒng)分析與設(shè)計(jì)概述

  • 軟件需求:是指用戶對系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的期望。是指用戶解決問題或達(dá)到目的所需的條件或能力,系統(tǒng)或系統(tǒng)部件要滿足合同、標(biāo)準(zhǔn)、規(guī)范或其他正式規(guī)定文檔所需具有的條件或能力,以及反映這些條件或能力的文檔說明。
  • 分為需求開發(fā)需求管理兩大過程,如下所示:
系統(tǒng)分析與設(shè)計(jì)概述
  • 系統(tǒng)設(shè)計(jì)主要目的:為系統(tǒng)制定藍(lán)圖,在各種技術(shù)和實(shí)施方法中權(quán)衡利弊,精心設(shè)計(jì),合理地使用各種資源,最終勾畫出新系統(tǒng)的詳細(xì)設(shè)計(jì)方法。

  • 系統(tǒng)設(shè)計(jì)方法:結(jié)構(gòu)化設(shè)計(jì)方法,面向?qū)ο笤O(shè)計(jì)方法。

  • 系統(tǒng)設(shè)計(jì)的主要內(nèi)容:概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)。

  • 概要設(shè)計(jì)基本任務(wù):又稱為系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì),是將系統(tǒng)的功能需求分配給軟件模型,確定每個模塊的功能和調(diào)用關(guān)系,形成軟件的模塊結(jié)構(gòu)圖,即系統(tǒng)結(jié)構(gòu)圖。

  • 詳細(xì)設(shè)計(jì)的基本任務(wù):模塊內(nèi)詳細(xì)算法設(shè)計(jì)、模塊內(nèi)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫的物理設(shè)計(jì)、其他設(shè)計(jì)(代碼、輸入/輸出格式、用戶界面)、編寫詳細(xì)設(shè)計(jì)說明書、評審。

  • 系統(tǒng)設(shè)計(jì)基本原理

    • 抽象化
    • 自頂向下,逐步求精
    • 信息隱蔽
    • 模塊獨(dú)立(高內(nèi)聚,低耦合)
  • 系統(tǒng)設(shè)計(jì)原則

    • 保持模塊的大小適中
    • 盡可能減少調(diào)用的深度
    • 多扇入,少扇出
    • 單入口,單出口
    • 模塊的作用域應(yīng)該在模塊之內(nèi)
    • 功能應(yīng)該是可預(yù)測的

5、系統(tǒng)分析與設(shè)計(jì)概述

  • 系統(tǒng)設(shè)計(jì)基本原理:抽象、模塊化、信息隱蔽、模塊獨(dú)立。
    衡量模塊獨(dú)立程度的標(biāo)準(zhǔn)有兩個:耦合性和內(nèi)聚性。
  • 內(nèi)聚程度從低到高如下表所示:
內(nèi)聚程度從低到高

注:- 過程內(nèi)聚不利于模塊的重用。

  • 耦合程度從低到高如下表所示:
耦合程度從低到高
  • 其他
    • 耦合程度越低,內(nèi)聚程度越高,則模塊的獨(dú)立性越好。
    • 內(nèi)容耦合主要表現(xiàn)在模塊 M2 直接訪問模塊 M1 內(nèi)部;模塊 M1 和模塊 M2 有公共的數(shù)據(jù)結(jié)構(gòu)或者模塊 M1 和模塊 M2 有部分代碼是重疊的。

6、結(jié)構(gòu)化開發(fā)方法

  • 結(jié)構(gòu)化分析與設(shè)計(jì)方法是一種面向數(shù)據(jù)流的傳統(tǒng)軟件開發(fā)方法,它以數(shù)據(jù)流為中心構(gòu)建軟件的分析模型和設(shè)計(jì)模型。結(jié)構(gòu)化分析(SA)、結(jié)構(gòu)化設(shè)計(jì)(SD)和結(jié)構(gòu)化程序設(shè)計(jì)(SPD)構(gòu)成了完成的結(jié)構(gòu)化方法。
  • 結(jié)構(gòu)化方法的分析結(jié)果由以下幾部分組成:一套分層的數(shù)據(jù)流圖、一本數(shù)據(jù)詞典、一組小說明(也稱加工邏輯說明)、補(bǔ)充材料。
  • 數(shù)據(jù)流圖 DFD:
    • 基本圖形元素:外部實(shí)體、加工、數(shù)據(jù)存儲、數(shù)據(jù)流。
數(shù)據(jù)流圖 DFD
  • 示例:
示例
  1. 數(shù)據(jù)流:由一組固定成分的數(shù)據(jù)組成,表示數(shù)據(jù)的流程。在 DFD 中,數(shù)據(jù)流的流向必須經(jīng)過加工。
  2. 加工:描述了輸入數(shù)據(jù)流到輸出數(shù)據(jù)流之間的變換,爺就是輸入數(shù)據(jù)流經(jīng)過什么處理后變成了輸出數(shù)據(jù)流。數(shù)據(jù)流圖中常見的三種錯誤如圖所示:
    • 加工 3.1.2 有輸入但沒有輸出,稱之為 “黑洞”。
    • 加工 3.1.3 有輸出但沒有輸入,稱之為 “奇跡”。
    • 加工 3.1.1 中輸入不足以產(chǎn)生輸出,稱之為 “灰洞”。
  3. 數(shù)據(jù)存儲:用來存儲數(shù)據(jù)。
  4. 外部實(shí)體(外部主體):是指存在于軟件系統(tǒng)之外的人員、組織或其它系統(tǒng),它指出系統(tǒng)所需數(shù)據(jù)的發(fā)源地(源)和系統(tǒng)所產(chǎn)生的數(shù)據(jù)的歸屬地(宿)。
  • 分層數(shù)據(jù)流圖:
分層數(shù)據(jù)流圖
  • 數(shù)據(jù)字典 DD:數(shù)據(jù)流圖描述了系統(tǒng)的分解,但沒有對圖中各成分進(jìn)行說明。數(shù)據(jù)字典就是為數(shù)據(jù)流圖中的每個數(shù)據(jù)流、文件、加工,以及組成數(shù)據(jù)流或文件的數(shù)據(jù)項(xiàng)做出說明。
  • 數(shù)據(jù)字典有以下 4 類條目:數(shù)據(jù)流、數(shù)據(jù)項(xiàng)、數(shù)據(jù)存儲和基本加工。
數(shù)據(jù)字典有以下 4 類條目
  • 加工邏輯也稱為“小說明”。常用的加工邏輯描述方法有結(jié)構(gòu)化語言、判定表和判定樹 3 種。

  • 其他:

    • 分層體系結(jié)構(gòu)的特點(diǎn):
    1. 可以很好的表示軟件系統(tǒng)的不同抽象層次。
    2. 對每個層的修改通常只影響其相鄰的兩層。
    3. 有利于開發(fā)任務(wù)的分工。
    4. 但是分層體系結(jié)構(gòu)將需求定義到不同的層上是不容易的。
    • 過程設(shè)計(jì)主要包含對數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計(jì)。

    • 對算法設(shè)計(jì)時,其主要依據(jù)來自加工規(guī)格說明。

    • 狀態(tài) - 遷移圖:被用來描述系統(tǒng)或?qū)ο蟮臓顟B(tài),以及導(dǎo)致系統(tǒng)或?qū)ο鬆顟B(tài)改變的事件,從而描述系統(tǒng)的行為。,行為模型是狀態(tài)轉(zhuǎn)換圖,其要素包括狀態(tài)。

    • 數(shù)據(jù)流圖是結(jié)構(gòu)化分析方法中使用的工具,它以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動和處理的過程,由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。在結(jié)構(gòu)化開發(fā)方法中,數(shù)據(jù)流圖是需求分析階段產(chǎn)生的結(jié)果。

    • E - R圖也稱為實(shí)體 - 聯(lián)系圖,提供了表示實(shí)體類型、屬性和聯(lián)系的方法,用來描述現(xiàn)實(shí)世界的概念模型。

    • 算法也可以借助各種工具描述出來,一個算法可以是用自然語言、數(shù)字語言或約定的符合來描述,也可以用計(jì)算機(jī)高級程序語言來描述,如流程圖、Pascal 語言、C 語言、偽代碼或決策表等。

    • 在結(jié)構(gòu)化分析方法中,用數(shù)據(jù)流圖對功能建模。自頂向下的分層數(shù)據(jù)流圖體現(xiàn)了對軟件功能逐步求精的過程。其中,頂層數(shù)據(jù)流圖只有一個加工,即要開發(fā)的軟件系統(tǒng)。在數(shù)據(jù)流圖中,每個數(shù)據(jù)存儲應(yīng)該有加工對其進(jìn)行讀操作和寫操作,每個加工應(yīng)該有輸入數(shù)據(jù)流和輸出數(shù)據(jù)流,而且同一個加工的輸入數(shù)據(jù)流和輸出數(shù)據(jù)流不能同名。

    • 描述加工的方式為決策樹,因?yàn)橛卸鄠€分支的判斷。

7、系統(tǒng)運(yùn)行與維護(hù)

  • 遺留系統(tǒng)是指任何基本上不能進(jìn)行修改和演化以滿足新的變化了的業(yè)務(wù)需求的信息系統(tǒng),它通常具有以下特點(diǎn):
    1. 系統(tǒng)雖然完成企業(yè)中許多重要的業(yè)務(wù)管理工作,但已經(jīng)不能完全滿足要求。一般實(shí)現(xiàn)業(yè)務(wù)處理電子化及部分企業(yè)管理功能,很少涉及經(jīng)營決策。
    2. 系統(tǒng)在性能上已經(jīng)落后,采用的技術(shù)已經(jīng)過時,如多采用主機(jī)/終端形式或小型機(jī)系統(tǒng),軟件使用匯編語言或第三代程序設(shè)計(jì)語言的早期版本開發(fā),使用文件系統(tǒng)而不是數(shù)據(jù)庫;
    3. 通常是大型的系統(tǒng),已經(jīng)融入企業(yè)的業(yè)務(wù)運(yùn)行和決策管理機(jī)制之中,維護(hù)工作十分困難;
    4. 系統(tǒng)沒有使用現(xiàn)代系統(tǒng)工程方法進(jìn)行管理和開發(fā),現(xiàn)在基本上已經(jīng)沒有文檔,很難理解。
系統(tǒng)運(yùn)行與維護(hù)
  • 系統(tǒng)轉(zhuǎn)換是指新系統(tǒng)開發(fā)完畢,投入運(yùn)行,取代現(xiàn)有系統(tǒng)的過程。需要考慮多方面的問題,以實(shí)現(xiàn)與老系統(tǒng)的交接,有以下三種轉(zhuǎn)換計(jì)劃:

    1. 直接轉(zhuǎn)換:現(xiàn)有系統(tǒng)被新系統(tǒng)直接取代了,風(fēng)險很大,適用于新系統(tǒng)不復(fù)雜,或者現(xiàn)有系統(tǒng)已經(jīng)不能使用的情況。優(yōu)點(diǎn)是節(jié)省成本。
    2. 并行轉(zhuǎn)換:新系統(tǒng)和老系統(tǒng)并行工作一段時間,新系統(tǒng)經(jīng)過試運(yùn)行后再取代,若新系統(tǒng)在試運(yùn)行過程中有問題,也不影響現(xiàn)有系統(tǒng)的運(yùn)行,風(fēng)險極小,在試運(yùn)行過程中還可以比較新老系統(tǒng)的性能,適用于大型系統(tǒng)。缺點(diǎn)是耗費(fèi)人力和時間資源,難以控制兩個系統(tǒng)間的數(shù)據(jù)轉(zhuǎn)換。
    3. 分段轉(zhuǎn)換:分期分批逐步轉(zhuǎn)換,是直接和并行轉(zhuǎn)換的集合,將大型系統(tǒng)分為多個子系統(tǒng),依次試運(yùn)行每個子系統(tǒng),成熟一個子系統(tǒng),就轉(zhuǎn)換一個子系統(tǒng)。同樣適用于大型項(xiàng)目,只是更耗時,而且現(xiàn)有系統(tǒng)和新系統(tǒng)間混合使用,需要協(xié)調(diào)好接口等問題。
    4. 數(shù)據(jù)轉(zhuǎn)換和遷移:將數(shù)據(jù)從舊數(shù)據(jù)庫遷移到新數(shù)據(jù)庫中。有三種方法:系統(tǒng)切換前通過工具遷移、系統(tǒng)切換前采用手工錄入、系統(tǒng)切換后通過新系統(tǒng)生成。
  • 系統(tǒng)的可維護(hù)性可以定義為維護(hù)人員理解、改正、改動和改進(jìn)這個軟件的難易程度,其評價指標(biāo)如下:

    1. 易分析性。軟件產(chǎn)品診斷軟件中的缺陷或失效原因或識別待修改部分的能力。
    2. 易改變性。軟件產(chǎn)品使指定的修改可以被實(shí)現(xiàn)的能力,實(shí)現(xiàn)包括編碼、設(shè)計(jì)和文檔的更改。
    3. 穩(wěn)定性。軟件產(chǎn)品的避免由于軟件修改而造成意外結(jié)果的能力。
    4. 易測試性。軟件產(chǎn)品使已修改軟件能被確認(rèn)的能力。
    5. 維護(hù)性的依從性。軟件產(chǎn)品遵循與維護(hù)性相關(guān)的標(biāo)準(zhǔn)或約定的能力。
  • 系統(tǒng)維護(hù)包括硬件維護(hù)、軟件維護(hù)和數(shù)據(jù)維護(hù)。其中軟件維護(hù)類型如下:

    1. 正確性維護(hù):發(fā)現(xiàn)了 bug 而進(jìn)行修改。是指正在系統(tǒng)開發(fā)階段已發(fā)生而系統(tǒng)測試階段尚未發(fā)現(xiàn)的錯誤。
    2. 適應(yīng)性維護(hù):由于外部環(huán)境發(fā)生了改變,被動進(jìn)行的對軟件的修改和升級。是指應(yīng)用軟件適應(yīng)新技術(shù)變化和管理需求變化而進(jìn)行的修改。
    3. 完善性維護(hù):基于用戶主動對軟件提出更多的需求,修改軟件,增加更多的功能,使其比之前的軟件功能、性能更高,更多完善。是指為擴(kuò)充功能和完善性能而進(jìn)行的修改,主要是指對已有的軟件系統(tǒng)增加一些在系統(tǒng)分析和設(shè)計(jì)階段中沒有規(guī)定的功能和性能的特征。修改文檔和代碼提高可讀性,是主動完完善某個功能。
    4. 預(yù)防性維護(hù):對未來可能發(fā)生的 bug 進(jìn)行預(yù)防性的修改。是指為了改進(jìn)應(yīng)用軟件的可靠性和維護(hù)性,為了適應(yīng)未來的軟硬件環(huán)境的變化,主動增加預(yù)防性的新功能,以使應(yīng)用系統(tǒng)適應(yīng)各類變化而不被淘汰。

擴(kuò)展知識

  1. 前一階段處理的輸出是后一段處理的輸入,為管道過濾器的風(fēng)格。管道過濾器性能差,交互差。
  2. 多層軟件體系結(jié)構(gòu)是現(xiàn)在軟件系統(tǒng)開發(fā)中常用的體系結(jié)構(gòu),通常包括表示層、控制層、模塊層和數(shù)據(jù)層。其中表示層主要對用戶的請求接受,以及數(shù)據(jù)的返回,為客戶端提供應(yīng)用程序的訪問??刂茖咏邮沼脩舻恼埱蟛⒔^對調(diào)用哪個模型去處理該請求,以及確定選擇哪個視圖來顯示返回的數(shù)據(jù)。模型層主要負(fù)責(zé)業(yè)務(wù)邏輯處理。數(shù)據(jù)層主要是數(shù)據(jù)存儲和訪問。
  3. 在 JavaEE 平臺中,通常使用 Servlet 技術(shù)來實(shí)現(xiàn)控制層。
  4. 軟件需求規(guī)格說明書、測試計(jì)劃和用戶手冊在需求分析階段撰寫,而概要設(shè)計(jì)文檔在設(shè)計(jì)階段撰寫。接口設(shè)計(jì)在軟件設(shè)計(jì)階段進(jìn)行。
  5. MVC 是模型 - 視圖 - 控制器的縮寫,是一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚焦到一個部件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯;可以提高可重復(fù)性、可維護(hù)性、降低耦合等優(yōu)點(diǎn)。
  6. 概要設(shè)計(jì)基本任務(wù):又稱為系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì),是將系統(tǒng)的功能需求分配給軟件模塊,確定每個模塊的功能和調(diào)用關(guān)系,形成軟件的模塊結(jié)構(gòu)圖,即系統(tǒng)結(jié)構(gòu)圖。
  7. 詳細(xì)設(shè)計(jì)的基本任務(wù):模塊內(nèi)詳細(xì)算法設(shè)計(jì)、模塊內(nèi)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫的物理設(shè)計(jì)、其他設(shè)計(jì)(代碼、輸入/輸出格式、用戶界面)、編寫詳細(xì)設(shè)計(jì)說明書、評審。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容