引言
敲完《機房收費系統》,緊接着而來的就是軟體工程的學習,那麼,什麼是軟體工程,也就是說,它是什麼,做什麼用的。
初識軟體工程,很多人都一頭霧水,不知道它講的是什麼,其實說簡單點,就是一個軟體在生存期内的經曆,從開發到軟體不再使用期間,需要做的事情,更加規範軟體的開發過程以及使用過程。
軟體
首先介紹一下,什麼是軟體,軟體有哪些特點,有哪些分類,
定義
軟體:是計算機中與硬體互相依存的另一部分,包括程式,資料及相關文檔的完整集合。 程式:按事先設計的功能和性能要求執行的指令序列。 資料:使程式能正常操縱資訊的資料結構。
文檔:與程式開發,維護和使用有關的圖文材料。
特點
1、邏輯實體,抽象性。
2、開發過程沒有明顯制造過程。
3、沒有機械磨損老化問題。
4、受硬體限制,對計算機系統的依賴性。
5、未完全擺脫手工藝開發方式。
6、複雜(①實際問題,②邏輯結構)。
7、成本昂貴。
8、涉及社會因素(知識産權等)。
分類
1、系統軟體(作業系統,資料庫管理系統,裝置驅動系統,通信處理程式)。
2、支撐軟體(文本編輯程式,檔案格式程式,資料傳輸程式,程式庫程式,支援需求分析,涉及,實作,測試和支援管理的軟體)。
3、應用軟體(資料處理,計算,輔助設計制造,仿真,智能嵌入,自動化,輔助教學等)
分類标準
按軟體規模劃分(小型,中型,大型,甚大型,極大型) 按軟體工作方式劃分(實時處理,分時,互動,批處理) 按軟體服務對象劃分(項目,産品) 按使用頻度劃分(一次性,頻繁) 按軟體失效影響劃分(高可靠性,一般可靠性)
危機
開發和維護中遇到的嚴重問題。
表現
1、産品不符合實際需要
2、生産速率低
3、品質差
4、開發成本和進度估計不準
5、可維護性差
6、文檔不完整不合格
7、價格昂貴
原因
1、難檢驗
2、規模龐大
3、開發人員重視開發輕視問題
4、無軟體品質管理規範
5、開發與維護關系問題上存在錯誤概念
解決辦法
1、分階段的生存周期計劃嚴格管理
2、階段評審
3、産品控制
4、現代程式設計技術
5、結果易審查
6、合理安排人員(少而精)
7、承認不斷改進軟體工程實踐的必要性
軟體工程
介紹完軟體,現在來介紹一下軟工。
定義
1、運用現代科學技術知識來設計并構造計算機程式及為開發、運作和維護這些程式所必須的相關檔案資料。(Boehm)
2、軟體工程是開發、運作、維護和修複軟體的系統方法。(IEEE)
3、建立并使用完善的工程化原則,以較少經濟的手段獲得能在實際機器上有效運作的可靠軟體的一系列方法。(Fritz Bauer)
内容
理論,結構,方法,工具,環境,管理,規範等。
三要素
方法(如何做) 工具(提供軟體支撐環境) 過程(方法順序,文檔,管理,完成的裡程碑)
目标
1、較低成本
2、達到要求
3、較好性能
4、易于移植
5、較低維護費用
6、按時完成
最終目标——最低的價格最優秀的軟體,以較少投資獲得易維護,易了解,可靠,高效率的軟體産品。
過程
1、軟體規格說明(功能及運作限制)P
2、軟體開發D
3、軟體确認(測試調試運作)C
4、軟體演進(維護)A
文檔
計劃階段:了解工作範圍——産生計劃任務書
需求分析:定義使用者需求——産生軟體需求規格說明書
設計階段:建立軟體結構——設計說明書(總體,詳細)
編碼階段:編寫程式——傳遞使用者的程式,程式清單
測試階段:發現和排除錯誤——可運作的程式
維護階段:運作和管理——改進的系統
特點
1、易了解性
2、可見性
3、可支援性
4、可接受性
5、可靠性
6、健壯性
7、可維護性
8、速度
原則
1、分解(降低複雜性,子產品化和抽象)
2、獨立性(子產品的獨立性)
3、一緻性(标準一緻,接口一緻)開發過程的标準化。
4.确定性(每個子產品都要有明确标準)
5、資訊隐蔽
6、資訊局部化
7、完整性
軟體生存期
軟體生存期 life cycle:孕育,誕生,成長,成熟,衰亡(不用)的過程。
軟工,就是解決在軟體生存期各個階段中需要完成哪些工作。
孕育
一、制定計劃(總目标;要求;可行性研究) 二、需求分析(可行性報告認可之後)和定義 三、軟體設計(概要設計;詳細設計;設計說明書) 四、程式編寫(結構化程式設計;三種基本結構)
誕生
五、軟體測試 靜态(查閱代碼)和動态(上機實踐)
單元測試(功能和結構),開發者完成。個人測試。
組裝測試又叫內建測試(檢查子產品接口和全局變量)。測試組。
成長/成熟
六、運作和維護(改正性維護,适應性維護,完善性維護)
衰亡
軟體廢棄或者有新的軟體替代它。
模型
瀑布模型,演化模型,螺旋模型,噴泉模型,智能模型等。(範圍和優缺點總結)。
瀑布模型

一、思想: 從制作時間上按工序把問題化簡;将功能實作與制作分開便于分工協作。 二、三個階段: 定義;開發;維護(發現問題越晚,代價越高)。 三、優點: 1、奠定了軟體工程方法的基礎。 2、流水依賴,便于分工協作。 3、推遲實體實作,易于修改文檔,有複審品質保證。 四、不足: 與使用者見面晚,成功率低,一般為25%。 五、适用範圍: 系統要求明确的系統;各種應用軟體的開發均可适用。 六、開發方法: 遵循軟體生命期的劃分,明确規定每個階段的任務,上一階段完成确定的任務後就産生一定格式的文檔給下一階段,不同階段的任務一般有不同級别的軟體人員承擔。
原型(漸增型)
一、思想: 允許從部分需求出發,先建立一個不全面的系統,通過測試這個系統,進一步使系統擴充和完善。 二、優點: 開發的始終開發人員和使用者都共同參與,有問題可以随時更改,進而很好的滿足了使用者的需求。 三、适用範圍: 知識型軟體系統的開發。 四、特點: 1、從整體結構上不如瀑布模型清晰。 2、軟體的文檔不如瀑布型的劃分嚴格。 3、周期長,成本高。 4、與使用者見面快,開發效率高。
變換型
一、思想: 從軟體需求的形式規格說明出發,經過一系列的程式變化,得到最終結果。 二、特點: 有嚴格的數學理論和形式化的技術支援,但目前在研究和實驗階段,不能使用。
演化模型
适用于對項目需求不清晰,很難一次開發成功,第一次為試驗開發,用于探索可行性)
螺旋模型
制定計劃;風險分析;實施工程;客戶評估。 适用于大型項目的開發。
噴泉模型
疊代(重複演進) 無間隙(各階段無明顯界限)