軟體工程---軟體工程概論
目錄
軟體生存期:軟體從孕育、誕生、成長、成熟、衰亡(有更好的替代軟體,並不是軟體不能使用)的生存過程
什麼是軟體
軟體是計算機系統中與硬體相互依存的另一部分,包括程式、資料以及 其他相關文件的完成集合。。。所以軟體由程式、資料、文件構成
程式,事先設計的功能和效能要求執行的指令序列
資料,使程式能正常操縱i洗腦洗的資料結構
文件,與程式開發,維護和使用有關的圖文材料
軟體特點:
是一種邏輯實體,不是具體的物理實體,具有抽象性
生產開發過程中沒有明顯的製造過程、如加工處理
執行和使用時,沒有機械磨損,老化現象
開發受到硬體的限制,對計算機系統存在依賴性
完全沒有擺脫手工藝的開發方式,人手動寫程式碼
軟體本身是複雜的---實際問題的複雜性、程式邏輯結構的複雜性
軟體成本昂貴-相對於硬體來說
從成本來說,1950年至1985-硬體成本逐漸降低,軟體成本逐漸增高
軟體分類
按功能
系統軟體:作業系統、資料庫管理系統、裝置驅動程式、通訊處理程式
支撐軟體:文字編輯程式、檔案格式化程式、磁碟向磁帶向資料傳輸的程式、、
應用軟體:各個專業完成資料處理的軟體。計算機輔助軟體、模擬軟體等等
按規模(類別、參加人數、研製期限、源程式行數)
微型、小型、中型、大型、甚大型、極大型
按軟體工作方式
實時處理軟體、分時軟體-用於多使用者同時工作、互動式軟體、批處理軟體
按服務物件分
專案軟體-接受某個特定使用者的委託,在合同的約束下開發軟體-以需求為主
產品軟體-形成產品、推向市場、由軟體開發機構開發,推向市場,以盈利為目的
按使用頻度
一次使用
頻繁使用
按軟體失效的影響進行劃分
高可靠性軟體:航空、金融等,使用測試工具】開發環境非常嚴格
一般可靠性軟體:一般測試工具和開發環境
軟體發展階段
程式設計階段 50-60年代
使用機器語言,受到硬體限制,完全手工操作,沒有文件,個人手寫程式,程式設計提倡技巧性
程式系統階段 60-70年代
作坊式開發,幾個人共同開發軟體,
軟體工程階段 70年代以後
一軟體,使用科學的管理方法,指導軟體開發、設計、除錯等一系列的活動,目的是為了解決軟體危機
軟體過程
軟體規格說明:規定軟體的功能和執行限制‘
軟體開發:產生滿足規格說明的軟體
軟體確認:確認軟體能夠完成客戶需求
軟體改進:滿足使用者變更要求
特點:易理解、可見性、可支援性、可接受性、可靠性、健壯性(安全性)、可維護性、運算速度
推薦;軟體工程規範
軟體生存期:軟體從孕育、誕生、成長、成熟、衰亡(有更好的替代軟體,並不是軟體不能使用)的生存過程
步驟:
制定計劃:
確定開發軟體系統的總目標
給出功能、效能、可靠性、介面方面要求
完成該軟體任務的可行性研究(軟體工程的第一個文件--可行性報告)
需求分析和定義:
對待開發軟體提出需求進行分析,給出詳細的定義(設計人員完成)
編寫軟體需求說明書
軟體設計
概要設計:把各項需求轉換成軟體的體系結構,劃分成明確的模組
詳細設計:
程式編寫:
程式測試---動態 測試、靜態測試
單元測試:查找個模組在功能和結構上是否存在問題,並加以糾正
組裝測試:將測試後的模組,按一定順序組裝起來,進行測試
執行維護
軟體生存期模型(範圍及其優缺點)
一、瀑布模型:
思想;:分解,從製作時間上按工序把問題化簡,將功能實現與製作分開便於分工協作
優點、特點:階段間順序性和依賴性強、推遲物理實現、每個階段非常嚴格
缺點:開發週期長,與使用者見面慢,成功率低25%
適用範圍:適用於系統要求明確的系統,各種應用軟體的開發均可使用
形式
維護過程中,修改不能超過一半,超過後就是二次開發
二、快速原型模型
需求分析、原型開發、原型評價、最終系統設計、最終系統實現
三、演化模型: 進行二次開發
第一次實驗開發
第二次在第一次的基礎上進行開發
二次開發:依賴於瀑布模型
四、螺旋模型:在四個象限上分別表達了四個方面的活動
制定計劃-確定軟體目標,選定實施方案,弄清專案開發的限制條件
風險分析-分析所選方案,風險識別和消除風險
實施工程-軟體開發
客戶評估-對產品評價
五、噴泉模型:演化、維護、確認、實現、設計、分析
基本思想;允許從部分需求出發,先建立一個不全面的系統,通過測試這個系統,進一步使系統更加完善
優點:開發的始終開發人員和使用者都共同參與,有問題可以隨時修改,很好的滿足使用者的需求
使用範圍:知識型軟體系統的開發
特點:整體結構不如瀑布型 清晰、軟體的文件不如瀑布型劃分嚴格、週期長成本高、與使用者見面快、開發效率高
迭代:重複、演進
無間隙:各階段簡無明顯界限
可以提高開發速度
六、變換型
思想:從軟體需求的形式規格說明出發,經過一系列的程式變化,得到最終結果系統開發生命週期
主要階段:分析階段、設計階段、實現階段
附加階段:專案計劃階段、系統支援
軟體工程
定義-三種定義
Boehm:運用現代科學技術知識來設計並構造計算機程式及為開發、執行和維護這些程式所必須的相關檔案資料
IEEE:開發、執行、維護和修復軟體的系統方法
FritzBauer:建立並使用完善的工程化原則,以較經濟的手段獲得能在實際機器上以後小執行的可靠軟體的一系列方法
低成本、快速的開發軟體
軟體開發技術:軟體開發方法學、軟體工具
軟體工程學:軟體工程開發環境、軟體管理學
軟體管理技術:軟體工程經濟學
軟體危機
產品不符合使用者的實際需要
軟體開發生產率提高的速度不能滿足客觀需要
軟體產品質量差
軟體開發成本不明確和預計成本存在誤差
軟體可維護性差
軟體文件資料不完整不合格
軟體價格昂貴
軟體危機產生的原因
軟體工程七條原理
用分階段的生存週期計劃嚴格管理
堅持進行階段評審
實行嚴格的產品控制
採用現代程式設計技術
結果應能清楚的審查
合理安排軟體開發小組的人(少而精)
承認不斷改進工程實踐的必要性
軟體的基本內容與目標
基本內容:從內容上劃分軟體工程學可分為理論、結構、方法、工具、環境、管理、規範
基本目標:1.定義良好的方法學,面向計劃、開發維護整個軟體生存週期的方法學。2.確定的軟體成分,記錄軟體生存週期每一步的軟體檔案資料,按步顯示軌跡。3.可預測結果,在生存週期中,每隔一段時間可以進行復審。
軟體工程的最終目標是以較少的投資獲得以維護、易理解、可靠、高效率的軟體產品。
軟體工程學是研究軟體結構、軟體設計與維護方法、軟體工具與環境、軟體工程標準與規範、軟體開發技術與管理技術的相關理論。
軟體工程學基本原則:分解、獨立性、一致性、確定性。
有的教材提出七條基本原則:模組化、抽象、資訊隱蔽、資訊區域性化、一致性、完整性、確定性
視訊中講的分解包括模組化和抽象
軟體生存期分為三大階段、計劃階段、開發階段、維護階段