第一章:軟體工程學概述
1.1軟體危機:*
表現:對軟體開發成本和進度估計不準確
使用者對已完成的軟體常常不滿意
軟體質量不可靠
軟體不可維護
軟體缺乏適當文件
軟體成本佔計算機系統總成本比例逐年上公升
軟體開發生產率提高的速度更不上計算機應用普及的速度
原因:軟體:軟體維護通常意味著改正或者修改原來的設計,客觀上使得軟體較難維護。
軟體開發/維護:早期軟體開發個體化,忽視軟體需求分析。
解決:技術措施(方法和工具) +組織管理措施
1.2軟體工程:**
概念:
採用工程的概念,原理,技術和方法來開發與維護軟體,把經過實踐考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟的開發出高質量的軟體並有效的維護它。
本質特性:
軟體工程關注於大型程式的構造
軟體工程的中心課題是控制複雜性
軟體經常變化。
開發軟體的效率非常重要。
和諧地合作是開發軟體的關鍵
軟體必須有效地支援他的使用者。
在軟體工程領域中通常由具有一定文化背景的人替具有另一種文化背景的人創造產品。
基本原理:
用分階段的生命週期計畫嚴格管理。
堅持進行階段評審。實行嚴格的產品控制。
採用現代程式設計技術。結果應該能清楚的審查。
開發小組應該少而精。
承認不斷改進軟體工程實踐的必要性。
兩類軟體工程方法學:
傳統方法學:
從對問題的抽象邏輯分析開始,乙個階段 乙個階段地順序進行開發,每一階段的開始和結束都有嚴格標準。這種技術要麼面向行為,要麼面向資料。
物件導向方法學:
以資料為主線,把資料和對資料的操作緊密結合起來的方法。四要點:物件;類;父類與子類;物件之間通過發訊息互相聯絡。
區別:傳統方法學:
強調自頂向下順序地完成軟體開發的各個階段。
物件導向方法學:
主動地多此反覆迭代的演化過程。
1.3軟體生命週期:***
軟體:是一系列按照特定順序組織的計算機資料和指令的集合
軟體特點
軟體是一種邏輯實體,而不是具體的物理實體.
軟體的生產與硬體不同
在軟體的執行和使用期間,沒有硬體那樣的機械
磨損,老化問題
軟體的成本相當昂貴
軟體週期 三階段:
軟體定義(定義、可行性研究、執行維護)
軟體開發(總體設計、詳細設計、編碼及單元測試、綜合測試)
執行維護
以下是詳細描述:
1:問題定義
2:可行性研究
3:需求分析(這一階段確定系統邏輯模型,規格說明書)
4:總體設計(設計目標系統的可能方案)
5:詳細設計(設計詳細規格說明)
6:編碼和單元測試
7:綜合測試(整合測試和驗收測試)
8:軟體維護(改正性維護、適應性維護、完善性維護、預防性維護)
1.4軟體過程:****
·瀑布模型(文件驅動的模型):p16圖1.3
1:階段間具有順序性和依賴性
2:推遲實現的觀點
3:質量保證的觀點
優點:1:強迫開發人員採用規範的方法。
2:嚴格規定了每個階段必修交的文件。
3:每個階段的產品都必須經過質量小組的仔細驗證。
·快速原型模型:p17 圖1.4
描述:快速原型模型的第一步是快速建立--個能反映使用者主要需求的原型系統。快速原型是不帶反饋線的。
優點:軟體產品的開發基本上是線性順序。
特點:快速原型的本質是「快速」。開發人員應該盡可能的建造出原型系統。原型系統的用途是獲知使用者的真正需求,一旦需求確定了,原型將被拋棄。故應該迅速地構建原型然後根據使用者意見迅速修改原型。
·增量模型:p18 圖1.5
特點:使用增量模型開發軟體時,把軟體產品作為一系列的增量構件來設計、編碼、整合和測試。每個構件完成特定功能,第乙個增量構件實現軟體的基本需求。
與瀑布模型/快速原型的區別:
瀑布模型/快速原型一次就把-個滿足使用者所有需求的產品提交給使用者,而增量模型分批逐步向使用者提交產品。
優點:短時間向使用者提交可完成部分工作的產品;逐步增加產品的功能可以使使用者有時間學習和適應新產品。
缺點:再把每個新的增量構件繼承到現有的軟體體系結構中時,必須不破壞原來已經開發出的產品。
·螺旋模型:(風險驅動) p20圖1.7
基本思想:使用原型及其他方法來盡量降低風險。
理解:在每個階段之前都增加了風險分析過程的快速原型模型。
優點:1:軟體重用
2:減少了過多測試或測試不足所帶來的風險
3:維護只是模型的另乙個週期,在維護和開發之間沒有本質區別。
·噴泉模型:
注意事項:為了避免使用噴泉模型開發軟體時開發過程過於無序,應該把乙個線性過程作為總目標。rational統一過程: p24圖1.10
工作階段:初始階段:建立業務模型。
精化階段:設計並確定系統的體系結構。
構建階段:開發出所有構件和應用程式。
移交階段:把開發出的產品提交給使用者使用。
敏捷過程
目的:提高工作效率和快速相應變化能力
四個價值觀:
個體和互動勝過過程和工具
可以工作的軟體勝過面面俱到的文件
客戶合作勝過合同談判
相應變化勝過遵循計畫
極限程式設計:把最好的開發實踐運用到極致:p26-28
極限程式設計的有效實踐:
驗收測試
結對程式設計
測試驅動開發
集體所有
持續整合
可持續的開發速度
開放的工作空間
及時調整計畫
簡單的設計
重構使用隱喻
生命週期:規劃階段、設計階段、開發階段、穩定階段、發布階段: p29-30
注:微軟過程的每乙個生命週期發布乙個遞進的軟體版本, 各個生命週期持續、快速地迭代迴圈。
軟體工程導論 軟體工程學概述
軟體工程關注於大型程式的構造 軟體工程的中心課題是控制複雜性 軟體經常變化 開發軟體的效率非常重要 和諧的合作是開發軟體的關鍵 軟體必須有效地支援它的使用者 在軟體工程領域中通常由具有一種文化背景的人替具有另一種文化背景的人創造產品 用分階段的生命週期計畫嚴格管理 堅持進行階段評審 實行嚴格的產品控...
軟工 軟體工程學概述
軟體工程學主要介紹了軟體危機,然後簡單的介紹了軟體工程,下面根據上面的導圖介紹一下主要內容 1 軟體危機 軟體危機是指在計算機軟體的開發和維護過程中所遇到的一系列嚴重問題 1 包含兩方面的問題 如何開發軟體,以滿足對軟體日益增長的需求 如何維護數量不斷膨脹的已有軟體 2 產生軟體危機的原因主要有兩方...
軟體工程學簡述
軟體危機是指計算機軟體的開發和維護過程中所遇到的一系列嚴重問題。考試中名詞解釋或者選擇題為主 1 對軟體開發成本和進度的估計常常很不準確。2 使用者對 已完成的 軟體系統不滿意的現象經常發生。3 軟體產品的質量往往靠不住。4 軟體通常沒有適當的文件資料。5 軟體成本在計算機系統總成本中所佔的比例逐年...