軟工學(xué)習(xí)筆記(1)- 概論

軟件的概念

計(jì)算機(jī)軟件指計(jì)算機(jī)系統(tǒng)中的程序及其文檔。

程序:是計(jì)算任務(wù)的處理對(duì)象和處理規(guī)則的描述(形式上是源碼、二進(jìn)制碼)。
文檔:是為了便于了解程序所需的闡明性資料。

軟件發(fā)展的3個(gè)階段

  • 第一階段:
    時(shí)間:1946-1956年
    標(biāo)志:從計(jì)算機(jī)問世到實(shí)用的高級(jí)程序語(yǔ)言出現(xiàn)前
    特點(diǎn):輸入輸出量較小,但計(jì)算量較大
    開發(fā)方式:主要采用個(gè)體開發(fā)方式
  • 第二階段:
    時(shí)間:1956-1968年
    標(biāo)志:從實(shí)用的高級(jí)程序語(yǔ)言出現(xiàn)到軟件工程出現(xiàn)前
    特點(diǎn):計(jì)算量不大,但輸入、輸出量較大
    開發(fā)方式:逐步從個(gè)體方式轉(zhuǎn)向合作方式
  • 第三階段:
    時(shí)間:1968年-至今
    標(biāo)志:從軟件工程出現(xiàn)到現(xiàn)在
    特點(diǎn):受制于所嵌入的宿主系統(tǒng),而不只是受制于其功能要求
    開發(fā)方式:由個(gè)體合作方式轉(zhuǎn)向工程方式

軟件的特點(diǎn)vs硬件

  • 軟件是一種邏輯實(shí)體,而不是有形的系統(tǒng)元件,其開發(fā)成本和進(jìn)度難以準(zhǔn)確估算。
  • 軟件是被開發(fā)的或被設(shè)計(jì)的,沒有明顯的制造過程,一旦開發(fā)成功,只需復(fù)制即可,但其維護(hù)的工作量大。
  • 軟件的使用沒有硬件那樣的機(jī)械磨損和老化問題。


    硬件的故障曲線

    軟件的故障曲線

    軟件的維護(hù)可能會(huì)引入副作用,使故障率升高。

軟件的分類

  • 系統(tǒng)軟件:位于計(jì)算機(jī)系統(tǒng)中最靠近硬件的一層,其它軟件一般都通過系統(tǒng)軟件發(fā)揮作用,它與具體的應(yīng)用領(lǐng)域無(wú)關(guān)。如操作系統(tǒng)、編譯程序等。
  • 支持軟件:支持軟件的開發(fā)和維護(hù)的軟件。如數(shù)據(jù)庫(kù)管理系統(tǒng)、網(wǎng)絡(luò)軟件、軟件開發(fā)環(huán)境等。
  • 應(yīng)用軟件:特定應(yīng)用領(lǐng)域?qū)S玫能浖?。如?shí)時(shí)軟件、嵌入式軟件、科學(xué)和工程計(jì)算軟件、事務(wù)處理軟件、人工智能軟件等。

軟件工程的定義

IEEE:
① 將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù),即將工程化應(yīng)用于軟件;
② 在①中所述方法的研究

軟件生存周期的概念及若干個(gè)階段

  • 軟件有一個(gè)孕育、誕生、成長(zhǎng)、成熟、衰亡的生存過程。這個(gè)過程即為計(jì)算機(jī)軟件的生存周期。
  • 軟件生存周期大體可分為如下幾個(gè)活動(dòng):計(jì)算機(jī)系統(tǒng)工程、需求分析、設(shè)計(jì)、編碼、測(cè)試、運(yùn)行和維護(hù)。

軟件過程指軟件生存周期中的一系列相關(guān)的過程。過程是活動(dòng)的集合,活動(dòng)是任務(wù)的集合。

與開發(fā)有關(guān)的活動(dòng)主要:

  • 源代碼管理(配置管理)
  • 質(zhì)量保障(軟件測(cè)試、Debug)
  • 需求分析
  • 架構(gòu)設(shè)計(jì)
  • 程序理解
  • 軟件維護(hù)(運(yùn)營(yíng))
  • 軟件項(xiàng)目管理

CMM的目的

CMM(Capability Maturity Model)能力成熟度模型

  • 開始,用于評(píng)價(jià)軟件機(jī)構(gòu)的軟件過程能力成熟度的模型
  • 發(fā)展之初,提供一種評(píng)價(jià)軟件承接方能力的方法,為大型軟件項(xiàng)目的招投標(biāo)活動(dòng)提供一種全面而客觀的評(píng)審依據(jù)。
  • 后來(lái),又同時(shí)被軟件組織用于改進(jìn)其軟件過程

軟件過程模型

軟件過程模型是軟件開發(fā)全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架,也稱軟件開發(fā)模型軟件生存周期模型

瀑布模型

1970年W.Royce提出瀑布模型

特征
  • 接受上一階段的結(jié)果作為本階段的輸入
  • 利用這一輸入實(shí)施本階段應(yīng)完成的活動(dòng)
  • 對(duì)本階段的工作進(jìn)行評(píng)審
  • 將本階段的結(jié)果作為輸出,傳遞給下一階段
缺點(diǎn)
  • 缺乏靈活性,難以適應(yīng)需求不明確或需求經(jīng)常變化的軟件開發(fā)
  • 開發(fā)早期存在的問題往往要到交付使用時(shí)才發(fā)現(xiàn),維護(hù)代價(jià)大

演化模型

可以在獲取了一組基本的需求后,通過快速分析構(gòu)造出該軟件的一個(gè)初始可運(yùn)行版本,稱之為原型(prototype),然后根據(jù)用戶在試用原型的過程中提出的意見和建議、或者增加新的需求,對(duì)原型進(jìn)行改造,獲得原型的新版本,重復(fù)這一過程,最終得到令客戶滿意的軟件產(chǎn)品。

演化模型的開發(fā)過程就是從構(gòu)造初始的原型出發(fā),逐步將其演化成最終軟件產(chǎn)品的過程。演化模型適用于對(duì)軟件需求缺乏準(zhǔn)確認(rèn)識(shí)的情況。典型的演化模型有:增量模型、原型模型、螺旋模型。

增量模型


增量模型將軟件的開發(fā)過程分成若干個(gè)日程時(shí)間交錯(cuò)的線性序列,每個(gè)線性序列產(chǎn)生軟件的一個(gè)可發(fā)布的“增量”版本,后一個(gè)版本是對(duì)前一版本的修改和補(bǔ)充,重復(fù)增量發(fā)布的過程,直至產(chǎn)生最終的完善產(chǎn)品。

增量模型融合了瀑布模型的基本成分(重復(fù)地應(yīng)用)和演化模型的迭代特征。

增量模型強(qiáng)調(diào)每一個(gè)增量都發(fā)布一個(gè)可運(yùn)行的產(chǎn)品。

增量模型特別適用于:
  • 需求經(jīng)常變化的軟件開發(fā)
  • 市場(chǎng)急需而開發(fā)人員和資金不能在設(shè)定的市場(chǎng)期限之前實(shí)現(xiàn)一個(gè)完善的產(chǎn)品的軟件開發(fā)

增量模型能有計(jì)劃地管理技術(shù)風(fēng)險(xiǎn),如早期增量版本中避免采用尚未成熟的技術(shù)。

原型模型
  • 原型(prototype)是預(yù)期系統(tǒng)的一個(gè)可執(zhí)行版本,它反映了系統(tǒng)性質(zhì)(如功能、計(jì)算結(jié)果等)的一個(gè)選定的子集。一個(gè)原型不必滿足目標(biāo)軟件的所有約束,其目的是能快速、低成本地構(gòu)建原型
  • 原型方法從軟件工程師與客戶的交流開始,其目的是定義軟件的總體目標(biāo),標(biāo)識(shí)需求。然后快速制訂原型開發(fā)的計(jì)劃,確定原型的目標(biāo)和范圍,采用快速設(shè)計(jì)的方式對(duì)其建模,并構(gòu)建原型
  • 被開發(fā)的原型應(yīng)交付給客戶試用,并收集客戶的反饋意見,這些反饋意見可在下一輪迭代中對(duì)原型進(jìn)行改進(jìn)。在前一個(gè)原型需要改進(jìn),或者需要擴(kuò)展其范圍的時(shí)候,進(jìn)入下一輪原型的迭代開發(fā)
原型的類型:
  • 探索型(exploratory prototyping)
    目的是要弄清目標(biāo)系統(tǒng)的要求,確定所希望的特性,并探討多種方案的可行性
  • 實(shí)驗(yàn)型(experimental prototyping)
    目的是驗(yàn)證方案或算法的合理性,它是在大規(guī)模開發(fā)和實(shí)現(xiàn)前,用于考核方案是否合適,規(guī)格說(shuō)明是否可靠
  • 演化型(evolutionary prototyping)
    目的是將原型作為目標(biāo)系統(tǒng)的一部分,通過對(duì)原型的多次改進(jìn),逐步將原型演化成最終的目標(biāo)系統(tǒng)
原型的使用策略:
  • 廢棄(throw away)策略
    主要用于探索型和實(shí)驗(yàn)型原型的開發(fā)。這種原型通常被廢丟,然后根據(jù)探索或?qū)嶒?yàn)的結(jié)果用良好的結(jié)構(gòu)和設(shè)計(jì)思想重新設(shè)計(jì)目標(biāo)系統(tǒng)
  • 追加(add on)策略
    主要用于演化型原型的開發(fā)。這種原型通常是實(shí)現(xiàn)了目標(biāo)系統(tǒng)中已明確定義的特性的一個(gè)子集,通過對(duì)它的不斷修改和擴(kuò)充,逐步追加新的要求,最后使其演化成最終的目標(biāo)系統(tǒng)

原型可作為單獨(dú)的過程模型使用,它也可作為一種方法或?qū)崿F(xiàn)技術(shù)應(yīng)用于其它的過程模型中。

螺旋模型

B.Boehm于1988年提出
是瀑布模型和演化(原型)模型的結(jié)合,并增加了風(fēng)險(xiǎn)分析。
螺旋模型沿著螺線旋轉(zhuǎn),在四個(gè)象限上分別表達(dá)四個(gè)方面的活動(dòng),即:

  • 制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制條件
  • 風(fēng)險(xiǎn)分析:評(píng)價(jià)所選的方案,識(shí)別風(fēng)險(xiǎn),消除風(fēng)險(xiǎn)
  • 工程實(shí)施:實(shí)施軟件開發(fā),驗(yàn)證工作產(chǎn)品
  • 客戶評(píng)估:評(píng)價(jià)開發(fā)工作,提出修正建議


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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