1. 程式人生 > >《軟體工程》-概述

《軟體工程》-概述

【前言】
軟體工程是軟體設計的靈魂,是我們前進的思想性指導。它使我們的設計有法可依,有章可循。看完了軟工視訊,這裡就先對軟體工程概論進行總結。
【內容】
1.軟體是什麼?
軟體:是計算機系統中與硬體相互依存的另一部分,它是包括程式,資料及其相關文件的完整集合。
程式:是按事先設計的功能和效能要求執行的指令序列。
資料:是使程式能夠正常操縱資訊的資料結構。
文件:是與程式開發,維護和使用有關的圖文材料。
2.軟體的特點:
(1)軟體是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性。
(2)軟體的生產與硬體不同,在它的開發過程中沒有明顯的製造過程。
(3)在軟體的執行和使用期間,沒有硬體那樣的機械磨損,老化問題。
(4)軟體的開發和執行常受到計算機系統的限制,對計算機系統有著不同程度的依賴性。
(5)軟體的開發至今尚未完全擺脫手工藝的開發方式。
(6)軟體本身是複雜的:實際問題的複雜性、程式邏輯結構的複雜性
(7)軟體成本相當昂貴
(8)相當多的軟體工作涉及到社會因素;比如:智慧財產權。
3.軟體的分類:


(1)按軟體的功能進行劃分:
系統軟體:作業系統、資料庫管理系統、裝置驅動程式、通訊處理程式等
支撐軟體:文字編輯程式、檔案格式化程式、磁碟向磁帶向資料傳輸的程式、程式庫系統、支援需求分析、設計、實現、測試和支援管理的軟體
應用軟體:商業資料處理軟體、工程與科學計算軟體、計算機輔助設計/製造軟體、系統模擬軟體、智慧產品嵌入軟體、醫療製藥軟體、事務管理,辦公自動化軟體、計算機輔助教學軟體

(2)按軟體規模進行劃分:
在這裡插入圖片描述
(3)按軟體工作方式劃分:
實時處理軟體:在事件(或資料)發生的時候,對其立即響應和處理,及時返回訊號。
分時軟體:把時間片輪流分配給各個使用者(多個使用者同時工作)
互動式軟體:人機通訊
批處理軟體:把一組輸入的作業按照一定的順序進行排列,計算機按照順序進行處理。
(4)按軟體服務物件的範圍劃分:


專案軟體:只接受某個客戶的委託,由一個或多個軟體的開發機構,在合同的約束下開發的軟體。
產品軟體:又軟體開發機構開發,直接推向市場,為眾多客戶服務。

(5)按使用的頻度進行劃分:一次使用、頻繁使用
(6)按軟體失效的影響進行劃分:高可靠性軟體、一般可靠性軟體
4.軟體的發展階段
程式設計階段:
50至60年代(機器語言、組合語言)受硬體限制,無軟體概念,程式不通用;
程式系統階段:
60至70年代(程式+說明)程式大,問題多;68年軟體工程概念
軟體工程階段:
70年代以後(面向物件)軟體=程式+資料結構+文件
特點:產品化、系列化、工程化、規範化、標準化
由軟體轉向軟體工程的開發和維護過程中,遇到了一系列嚴重的問題,因此,出現了軟體危機。


4.軟體危機:
是指軟體開發和維護過程中遇到的一系列嚴重問題。
4.1軟體危機的表現:
(1)產品不符合使用者的實際需求;
(2)軟體開發生產提高的速度遠遠不能滿足客觀需要,軟體的生產率遠遠低於硬體生產率和計算機應用的增長,使人們不能充分利用現代計算機硬體提供的巨大潛力;
(3)軟體產品的質量差;
(4)對軟體開發成本和進度的估計常常不準確;
(5)軟體的可維護性差;
(6)軟體文件資料通常既不完整也不合格;
(7)軟體的價格昂貴,軟體成本在計算機系統總成本中所佔的比例逐年上升。
4.2軟體危機產生的原因:
(1)軟體不同於硬體,它是計算機系統中的邏輯部件而不是物理部件。在寫出程式程式碼並在計算機上試執行之前,很難檢驗開發的正確性,而且軟體開發的也較難評價。軟體不同於一般程式,它的一個顯著特點是規模龐大。
(2)雖然軟體本身獨有的特點確實給開發和維護帶來一些客觀困難,但是人們在開發和使用計算機系統的長期實踐中,也確實積累和總結出了許多成功的經驗。
(3)開發和管理人員只重視開發而輕視問題的定義,使軟體產品無法滿足使用者的需求。
(4)軟體管理技術不能滿足現代軟體開發的需要,沒有統一的軟體質量管理規範。
(5)在軟體的開發與維護關係問題上存在錯誤的概念。
5.軟體工程:(最少的投入,高質量的軟體)
軟體工程是研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。
6.軟體工程三要素:方法、工具、過程
方法:為軟體開發提供了“如何做”的技術;
工具:為軟體工程方法提供了自動的或半自動的軟體支撐環境;
過程:方法使用的順序、要求交付的文件資料、為保證質量和適應變化所需要的管理、軟體開發各個階段完成的里程碑。
7.軟體工程專案的基本目標:
付出較低的開發成本;
達到要求的軟體功能;
取得較好的軟體效能;
開發的軟體易於移植;
需要較低的維護費用;
能按時完成開發工作,及時交付使用。
8.軟體工程的7條原理:
(1)用分階段的生存週期計劃嚴格管理;
(2)堅持進行階段評審;
(3)實行嚴格的產品控制;
(4)採用現代程式設計技術;
(5)結果應能清楚的審查;
(6)合理安排軟體開發小組的人(少而精);
(7)承認不斷改進工程實踐的必要性。

9.軟體工程的原則:
為了開發出低成本高質量的軟體產品,軟體工程學應遵守以下基本原則:
分解(模組化,抽象化)、獨立性、一致性、確定性
10.軟體工程過程:(PDCA)
軟體規格說明:規定軟體的功能及其執行的限制 p
軟體開發:產生滿足規格說明的軟體 d
軟體確認:確認軟體能夠完成客戶提出的要求 c
軟體演進:不斷改進和維護 a
10.1軟體工程過程特性:
易理解性、可見性、可支援性、可接受性、可靠性、健壯性、可維護性、速度

11.軟體生命週期:
軟體有一個孕育、誕生、生長、成熟、衰亡的生存過程。這個過程即為計算機軟體的生存期。生存期六步驟:
制定計劃:
確定要開發軟體系統的總目標,給出功能、效能、可靠性以及介面等方面的要求,完成該軟體任務的可行性研究報告。
需求分析和定義:
對待開發軟體提出的需求進行分析並給出詳細的定義,編寫軟體需求說明書。
軟體設計:概要設計和詳細設計
概要設計:把各項需求轉換成軟體的體系結構。結構中每一組成部分都是意義明確的模組,每個模組都有明確的定義;
詳細設計:為每個模組完成的功能進行具體的描述,要把功能描述轉變為精確的、結構化的過程描述。
軟體測試:單元測試和組裝測試
單元測試:查詢各模組在功能和結構上存在的問題並加以糾正;
組裝測試:將已測試過得模組按一定順序組裝起來。
執行和維護:
維護:(費用大)維護工作量控制;
改正性維護:使用者發現錯誤,進行修正;
適應性維護:開發環境變了,要修改;
完整性維護:增加什麼功能。
好了,暫時總結到這裡,其中軟體的生命週期有幾種常見的模型,下篇部落格再見!