软件工程导论-软件工程概论(学习笔记)
軟件工程概論
- 1.1 軟件危機(jī)
- 1.1.1 軟件危機(jī)
- 1.1.2 產(chǎn)生軟件危機(jī)的原因
- 1.1.3 消除軟件危機(jī)的途徑
- 1.2 軟件工程
- 1.2.1 軟件工程簡介
- 1.2.2 軟件工程的基本原理
- 1.2.3 軟件工程方法學(xué)
- 1.3 軟件生命周期
- 1.4 軟件過程
- 1.4.1 瀑布模型(適合面向過程的軟件工程)
- 1.4.2 快速原型模型
- 1.4.3 增量模型(漸增模型)
- 1.4.4 螺旋模型
- 1.4.5 噴泉模型
- 1.4.6 Rational 統(tǒng)一過程
- 1.4.7 敏捷過程 與 極限編程
- 1.4.8 微軟過程
1.1 軟件危機(jī)
1.1.1 軟件危機(jī)
軟件危機(jī):在計(jì)算機(jī)軟件的開發(fā)于維護(hù)過程中所遇到的一系列嚴(yán)重問題
軟件危機(jī)的兩個(gè)方面:
1.如何開發(fā)軟件,以滿足社會(huì)對軟件日益增長的需求
2.如何更有效地維護(hù)數(shù)量不斷膨脹地已有軟件
軟件危機(jī)的經(jīng)典表現(xiàn):
1.對軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確
2.經(jīng)常出現(xiàn)用戶對“已完成”軟件產(chǎn)品不滿意的情況
3.軟件產(chǎn)品的質(zhì)量往往達(dá)不到要求
4.軟件通常是很難維護(hù)的
5.軟件往往沒有適合的文檔資料
6.軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占比例逐年上升
7.軟件開發(fā)生產(chǎn)率提高的速度遠(yuǎn)遠(yuǎn)不能滿足社會(huì)對軟件產(chǎn)品日益增長的需求
1.1.2 產(chǎn)生軟件危機(jī)的原因
客觀原因:
1.軟件缺乏“可見性”,管理控制軟件開發(fā)過程困難
2.軟件維護(hù)意味著修改原有設(shè)計(jì),維護(hù)較難
3.軟件規(guī)模龐大,復(fù)雜度高
主觀原因:
1.忽視軟件需求分析的重要性
2.認(rèn)為軟件開發(fā)就是寫程序
3.輕視軟件維護(hù)
1.1.3 消除軟件危機(jī)的途徑
1.樹立對計(jì)算機(jī)軟件的正確認(rèn)識(shí)
2.充分吸取借鑒人類工程項(xiàng)目的經(jīng)驗(yàn),研究更有效的開發(fā)技術(shù)和方法
3.積極開發(fā)和使用計(jì)算機(jī)輔助軟件工程(CASE)工具
1.2 軟件工程
1.2.1 軟件工程簡介
軟件工程:指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的一門學(xué)科
軟件工程的目的:生產(chǎn)出能按期交付的、在預(yù)算范圍內(nèi)的、滿足用戶需求的、質(zhì)量合格的軟件產(chǎn)品
軟件工程的特性:
1.軟件工程關(guān)注于大型程序的構(gòu)造
2.軟件工程的中心課題是控制復(fù)雜性
3.軟件產(chǎn)品交付使用后仍然需要經(jīng)常修改
4.開發(fā)軟件的效率非常重要
5.開發(fā)人員和諧的合作是成功開發(fā)軟件的關(guān)鍵
6.軟件必須有效地支持它的用戶
7.在軟件工程領(lǐng)域中通常由具有一種文化背景的人替另一種文化背景的人開發(fā)此產(chǎn)品
1.2.2 軟件工程的基本原理
1.用分階段的生命周期計(jì)劃嚴(yán)格管理
2.堅(jiān)持進(jìn)行階段評審
3.實(shí)行嚴(yán)格的產(chǎn)品控制
4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)
5.結(jié)果應(yīng)能清楚地審查
6.開發(fā)小組的人員應(yīng)該少而精
7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性
1.2.3 軟件工程方法學(xué)
方法學(xué)(泛型):在軟件生命周期全過程中使用的一整套技術(shù)方法的集合
軟件工程方法學(xué)三要素:
1.方法,是完成軟件開發(fā)各項(xiàng)任務(wù)的技術(shù)方法,回答“怎樣做”的問題
2.工具,是為運(yùn)用方法而提供自動(dòng)的或半自動(dòng)的軟件工程支撐環(huán)境
3.過程,是為了過的高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,規(guī)定了完成各項(xiàng)任務(wù)的工作步驟,回答“何時(shí)做”的問題
1.傳統(tǒng)方法學(xué)(結(jié)構(gòu)化泛型):
(1)采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))完成軟件開發(fā)的各項(xiàng)任務(wù)。
(2)把軟件生命周期分為若干個(gè)階段,然后順序完成各個(gè)階段的任務(wù)
(3)每個(gè)階段的開始和結(jié)束都是嚴(yán)格的標(biāo)準(zhǔn),對于任何兩個(gè)相鄰的階段而言,前一階段標(biāo)準(zhǔn)就是后一階段的開始標(biāo)準(zhǔn)。
(4)在每個(gè)階段結(jié)束之前都必須正式地進(jìn)行嚴(yán)格的技術(shù)審查和管理復(fù)查
2.面對對象方法學(xué)(面對對象泛型)
(1)用對象分解取代了傳統(tǒng)發(fā)方法的功能分解
(2)把所有對象都劃分為類
(3)對象彼此間僅能通過發(fā)送消息互相聯(lián)系
1.3 軟件生命周期
軟件定義時(shí)期的任務(wù):
1.確定軟件開發(fā)工程的總目標(biāo)
2.研究該項(xiàng)目的可行性
3.分析確定客戶對軟件產(chǎn)品的需求
4.估算完成該項(xiàng)目所需的資源和成本
5.制定工程進(jìn)度表
運(yùn)行維護(hù)時(shí)期的任務(wù):
1.軟件出錯(cuò)時(shí),應(yīng)該加以改正
2.環(huán)境改變時(shí),修改軟件以適應(yīng)新的環(huán)境
3.用戶有新需求時(shí),應(yīng)及時(shí)改進(jìn)或擴(kuò)充軟件
1.4 軟件過程
軟件過程定義了運(yùn)用技術(shù)放大的順序、應(yīng)該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)軟件變化必須采取的管理措施,以及標(biāo)志完成了相應(yīng)開發(fā)活動(dòng)的里程碑。
通常使用生命周期模型概括地描述軟件過程。生命周期模型規(guī)定了軟件過程包含的各個(gè)階段,以及完成這些階段的順序。
1.4.1 瀑布模型(適合面向過程的軟件工程)
一、階段間具有順序性和依賴性
順序性:必須等前一階段的工作完成后,才能開始后一階段的工作
依賴性:前一階段的輸出文檔就是后一階段的輸入文檔
二、推遲實(shí)現(xiàn)的觀點(diǎn)
瀑布模型在編碼前設(shè)置了系統(tǒng)分析與系統(tǒng)設(shè)計(jì),主要考慮目標(biāo)系統(tǒng)的邏輯模型
清楚地區(qū)分邏輯設(shè)計(jì)和物理設(shè)計(jì),盡可能推遲程序地物理實(shí)現(xiàn)
三、質(zhì)量保證的觀點(diǎn)
(1)每個(gè)階段都必須完成規(guī)定的文檔
(2)每個(gè)階段結(jié)束前都要對完成的文檔進(jìn)行評審,以便盡早發(fā)現(xiàn)問題,改正錯(cuò)誤
瀑布模型的主要優(yōu)點(diǎn)如下:
1.強(qiáng)迫開發(fā)人員采用規(guī)范的技術(shù)方法。
2.嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔。
3.每個(gè)階段結(jié)束前必須正式進(jìn)行嚴(yán)格的技術(shù)審查和管理復(fù)審。
瀑布模型的主要缺點(diǎn)是:
1.在可運(yùn)行的軟件產(chǎn)品交付給用戶之前,用戶只能通過文檔來了解未來的產(chǎn)品是什么樣的。
2.開發(fā)人員和用戶之間缺乏有效的溝通,很可能導(dǎo)致最終開發(fā)出的軟件產(chǎn)品不能真正滿足用戶的需求。
1.4.2 快速原型模型
所謂快速原型模型是快速建立起來的可以在計(jì)算機(jī)上運(yùn)行的程序,它所能完成的功能往往是最終產(chǎn)品能完成的功能的一個(gè)子集。
原型是軟件開發(fā)人員與用戶溝通的強(qiáng)有力工具,因此有助于所開發(fā)出的軟件產(chǎn)品滿足用戶的真實(shí)需求。
快速原型模型主要優(yōu)點(diǎn):
1.使用這種軟件過程開發(fā)出的軟件產(chǎn)品通常能滿足用戶的真實(shí)需求
2.軟件產(chǎn)品的開發(fā)過程基本上是線性順序過程
1.4.3 增量模型(漸增模型)
使用增量模型發(fā)發(fā)軟件時(shí),把軟件產(chǎn)品作為一系列增量構(gòu)件來設(shè)計(jì)、編碼、集成和測試。每個(gè)構(gòu)件由若干個(gè)相互協(xié)作的模塊構(gòu)成,并且能夠完成相對獨(dú)立的功能。
增亮模型的主要優(yōu)點(diǎn):
1.能在較短的時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品
2.逐步增加產(chǎn)品功能,從而使用戶有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品,減少一個(gè)全新的軟件給用戶所帶來的沖擊
這要求軟件工程師有較高的技術(shù)水平
1.4.4 螺旋模型
螺旋模型的基本思想是使用原型及其他方法盡量降低風(fēng)險(xiǎn)。理解這種模型的一個(gè)簡便方法是把它看做在每個(gè)階段之前都增加了風(fēng)險(xiǎn)分析過程的快速原型模型。
螺旋模型所描述的軟件過程主要適用于內(nèi)部開發(fā)的大型軟件項(xiàng)目。
螺旋模型主要有以下優(yōu)點(diǎn):
1.有利于已有軟件的重用
2.有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo)。
3.減少了過多測試或測試不足所帶來的風(fēng)險(xiǎn)。
4.軟件維護(hù)與軟件開發(fā)沒有本質(zhì)區(qū)別。
要求軟件開發(fā)人員有豐富的風(fēng)險(xiǎn)評估知識(shí)和經(jīng)驗(yàn)
1.4.5 噴泉模型
噴泉模型時(shí)典型的面向?qū)ο?/strong>的軟件過程之一
“噴泉”體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。
1.4.6 Rational 統(tǒng)一過程
Rational 統(tǒng)一過程是由 Rational 軟件公司推出的一種完整而且完美的軟件過程。
Rational 統(tǒng)一過程(RUP)充分體現(xiàn)了下述6條開發(fā)經(jīng)驗(yàn):
1.采用迭代方式開發(fā)軟件。
2.在軟件開發(fā)的全過程中有效地管理需求。
3.使用基于構(gòu)件的軟件體系結(jié)構(gòu)。
4.建立軟件產(chǎn)品的可視化模型。
5.在軟件開發(fā)的全過程中嚴(yán)格地驗(yàn)證軟件質(zhì)量。
6.控制軟件變更。
RUP軟件開發(fā)生命周期是一個(gè)二維的生命周期模型,如圖所示。圖中縱軸代表核心工作流程,橫軸代表時(shí)間(劃分成4個(gè)階段)。
RUP強(qiáng)調(diào)用迭代和遞增的方式來開發(fā)軟件。
RUP循環(huán)遍歷多次軟件生命周期。每次循環(huán)都經(jīng)歷一個(gè)完整的軟件生命周期,每次循環(huán)結(jié)束都向用戶交付軟件產(chǎn)品的一個(gè)可運(yùn)行的版本。
1.4.7 敏捷過程 與 極限編程
根據(jù)下述4個(gè)價(jià)值觀提出的軟件過程統(tǒng)稱為敏捷過程。
1.開發(fā)人員的素質(zhì)及相互間的交互與協(xié)作比過程和工具更重要。
2.可以工作的軟件比面面俱到的文檔更重要。
3.與客戶的合作比合同談判更重要。
4.及時(shí)響應(yīng)變化比死板地遵循計(jì)劃更重要。
**極限編程(XP)**是最著名的敏捷過程,其名稱中“極限”二字的含義是指把有效的軟件開發(fā)實(shí)踐運(yùn)用到極致。
1.4.8 微軟過程
微軟過程把軟件生命周期劃分為5個(gè)階段:
1.策劃階段
2.設(shè)計(jì)階段
3.開發(fā)階段
4.穩(wěn)定階段
5.發(fā)布階段
微軟過程的每一個(gè)生命周期發(fā)布一個(gè)遞進(jìn)的軟件版本,各個(gè)生命周期持續(xù)、快速地迭代循環(huán)。
總結(jié)
以上是生活随笔為你收集整理的软件工程导论-软件工程概论(学习笔记)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP企业人事管理系统
- 下一篇: 软件工程导论复习之需求分析