軟件工程壹直缺乏統壹的定義,許多學者和組織給出了自己的定義:
Boehm:利用現代科學技術知識設計和構建計算機程序以及開發、運行和維護這些程序所必需的相關文檔和材料。
IEEE:軟件工程是壹種開發、運行、維護和修復軟件的系統方法。
弗裏茨·鮑爾:建立和使用完美工程原理的壹系列方法,以獲得可靠的軟件,這些軟件可以通過更經濟的方式在實際機器上有效運行。
軟件工程的框架可以概括為:目標、過程和原則。
(1)軟件工程目標:生產具有正確性、可用性和適當費用的產品。正確性是指軟件產品實現預期功能的程度。可用性是指軟件的基本結構、實現和文檔對用戶可用的程度。適當成本是指軟件開發和運行的整體成本滿足用戶要求的程度。在實現這些目標的過程中,無論在理論上還是在實踐中都有許多問題需要解決,這些問題對工藝、工藝模型和工程方法的選擇形成了制約。
(2)軟件工程過程:生產最終能夠滿足需求並實現工程目標的軟件產品所需的步驟。軟件工程過程主要包括開發過程、運行過程和維護過程。它們涵蓋需求、設計、實施、驗證和維護等活動。需求活動包括問題分析和需求分析。問題分析獲得需求的定義,也稱為軟件需求規範。需求分析產生功能規格。設計活動通常包括總體設計和詳細設計。概要設計建立了整個軟件系統結構,包括子系統、模塊和相關層次的描述,以及每個模塊的接口定義。詳細設計生成程序員可用的模塊描述,包括每個模塊中的數據結構描述和處理描述。實施活動將設計結果轉換為可執行的程序代碼。確認活動貫穿整個開發過程,實現完成後的確認,確保最終產品滿足用戶的要求。維護活動包括使用過程中的擴展、修改和改進。與上述過程相伴的,還有管理過程、支持過程、培訓過程等等。
(3)軟件工程原則是指在軟件開發過程中圍繞工程設計、工程支持和工程管理所必須遵循的原則。
軟件工程必須遵循哪些原則?
圍繞工程設計、工程支持和工程管理提出了以下四項基本原則:
(1)選擇合適的開發模式。
這壹原則與系統設計有關。在系統設計中,軟件需求、硬件需求等因素相互制約、相互影響,往往需要權衡。因此,有必要了解需求定義的可變性並采用適當的開發模型來確保軟件產品滿足用戶的需求。
(2)采用適當的設計方法。
在軟件設計中,我們通常需要考慮軟件的模塊化、抽象性、信息隱蔽性、本地化、壹致性和適應性等特點。合適的設計方法有助於實現這些功能,從而實現軟件工程的目標。
⑶提供高質量的工程支持
鋒利的工具工作效率高。在軟件工程中,支持軟件過程的軟件工具和環境非常重要。軟件工程項目的質量和成本直接取決於為軟件工程提供的支持的質量和有效性。
(4)重視軟件工程管理。
軟件工程的管理直接影響到可用資源的有效利用、滿足目標的軟件產品的生產以及軟件組織生產能力的提高。因此,只有當軟件過程得到有效管理時,才能實現有效的軟件工程。
軟件工程是壹門指導計算機軟件開發和維護的工程學科。
采用工程學的概念、原理、技術和方法來開發和維護軟件,並將經過時間考驗的正確管理技術與目前所能獲得的最佳技術方法相結合。這是軟件工程。
軟件工程強調使用生命周期方法和各種結構分析和設計技術。他們是
20世紀70年代,為了應對應用軟件日益復雜、開發周期長以及用戶對其的興趣。
軟件產品通常不滿足於現狀。人類解決復雜問題的常用策略
它只是“分而治之”,即分解問題然後單獨解決每個子問題的策略。
。軟件工程中使用的生命周期方法從時間的角度來看是壹個復雜的軟件開發和維護問題。
分解,將軟件的長生命周期依次分成幾個階段,每個階段相對獨立。
任務,然後逐步完成每個階段的任務。當使用軟件工程方法開發軟件時,
從任務的抽象邏輯分析開始,逐步進行開發。前壹階段任務
的完成是開始下壹階段工作的前提和基礎,下壹階段任務的完成通常是
它使前壹階段提出的解決方案更加具體,並增加了更多物理細節。每個階段的開始
開頭和結尾都有嚴格的標準。對於任何兩個相鄰階段,前壹階段的結束標準為
是後壹階段的起步標準。每個階段結束前必須進行正式且嚴格的技術審查。
和管理評審,從技術和管理方面檢查本階段的開發成果,通過本
壹個階段結束了;如果檢查失敗,必須進行必要的返工,返工後將重新進行。
經過審查。審查的主要標準之壹是“最新的”(即和。
所開發的軟件與高質量的文檔完全壹致,從而確保在軟件開發項目結束時有。
完整準確的軟件配置已交付使用。文件是溝通工具,它清楚而準確地解釋了。
到這個時候,關於這個項目的已知情況以及下壹步工作的基礎已經建立。
。此外,該文檔還充當備忘錄。如果文件不完整,那麽某些工作壹定被遺忘了。
現在,在進入生命周期的下壹階段之前,我們必須彌補這些缺失的細節。完成生存周之後
在準備每個階段的任務時,應采用適合該階段任務特點的系統技術方法——打結。
結構分析或結構設計技術。
軟件生命周期分為幾個階段,每個階段的任務相對獨立且簡單。
單,方便不同人員協同工作,從而降低整個軟件開發項目的難度;在軟件中
生命周期的每個階段都采用科學的管理技術和良好的技術方法,在每個階段,
在結束之前,他們將從技術和管理兩個角度進行嚴格審查,通過審查後才能開始下壹階段。
工作,這使得軟件開發工程的整個過程有條不紊地進行,以確保軟件
質量,尤其是軟件的可維護性。總之,軟件工程方法論可以得到很大的改進。
軟件開發的成功率和生產率也可以得到顯著提高。
目前,劃分軟件生命周期階段的方法有很多,如軟件規模、類型、開發方法,
開發環境和開發中使用的方法都會影響軟件生命周期階段的劃分。分區軟件
在生命周期的各個階段應該遵循的基本原則之壹是使每個階段的任務盡可能相互接近。
對於獨立性,同壹階段中每個任務的性質盡可能相同,從而降低每個階段的復雜性。
度,簡化不同階段之間的聯系,有利於軟件開發項目的組織和管理。壹般來說,軟
軟件生命周期包括三個階段:軟件定義、軟件開發和軟件維護,並且每個階段都更進壹步。
分為幾個階段。以下討論主要針對應用軟件,應用軟件也基本適用於系統軟件。
軟件定義期的任務是確定軟件開發項目必須完成的總體目標;確定項目的可行性
推導出實現工程目標應采取的策略和系統必須完成的功能;項目預計完工時間。
所需資源和成本,並制定項目進度計劃。這壹時期的工作通常被稱為系統分析。
,由系統分析師填寫。軟件定義期通常進壹步分為三個階段,即問題確定。
意義、可行性研究和需求分析。
在開發期間,對前期定義的軟件進行具體設計和實現,通常分為以下四個階段。
成功:總體設計、詳細設計、編碼和單元測試、全面測試。
維護期的主要任務是使軟件永久滿足用戶的需求。具體來說,當軟件在
使用過程中發現錯誤時,應予以糾正;當環境發生變化時,應修改軟件以適應新環境。
;當用戶有新的需求時,應及時改進軟件以滿足用戶的新需求。通常,維護期不再
進壹步分為階段,但每個維護活動本質上是壹個壓縮和簡化的定義和開放。
頭發處理。
下面簡要介紹軟件生命周期每個階段的基本任務和結束標準。
1問題定義
在問題定義階段必須回答的關鍵問題:“要解決的問題是什麽?”如果妳不知道
有什麽問題?試圖解決這個問題顯然是盲目的,只會浪費時間和金錢。最
最後的結果很可能毫無意義。盡管明確定義這個問題的必要性是顯而易見的。
但在實踐中,這可能是最容易被忽視的壹步。
透過問題定義階段的工作,系統分析員應就問題的性質、工程目標及
關於規模的書面報告。通過對系統實際用戶和使用部門負責人的訪談和調查,分析師
簡要寫出他對問題的理解,並在用戶與用戶部門負責人的會議上認真討論。
書面報告,澄清歧義,糾正誤解,最後得到雙方的副本。
滿意的文件。
問題定義階段是軟件生命周期中最短的階段,通常只需要壹天或更短的時間。
時間。
2可行性研究
這壹階段需要回答的關鍵問題是:“對前壹階段確定的問題有可行的解決方案。
壹個解決方案?“為了回答這個問題,系統分析師需要壹個大大壓縮和簡化的。
系統分析和設計的過程,即在更抽象的高層次上進行分析和設計的過程。
可行性研究應該相對較短,現階段的任務不是具體解決問題,而是研究問題的模型。
探討這個問題是否值得解決,是否有可行的解決方案。
在問題定義階段提出的關於項目目標和規模的報告通常是模糊的。可行性研究
階段應導出系統的高層邏輯模型(通常用數據流圖表示),並在此基礎上更
準確和更具體地確定項目規模和目標。然後分析師更準確地估計系統的成本和效率。
對擬議系統進行有益、仔細的成本/效益分析是本階段的主要任務之壹。
可行性研究的結果是由用戶部門的負責人決定是否繼續該項目。
重要的依據是,壹般來說,只有那些可能從投資中獲得更大利益的項目才值得繼續進行。
繼續吧。可行性研究的後期階段將需要更多的人力和物力。不值得及時停下來
不得不投資的項目可以避免更大的浪費。
3需求分析
現階段的任務仍然不是具體解決問題,而是準確地確定“為了解決這個問題,
目標系統必須做什麽”主要是確定目標系統必須具備哪些功能。
用戶知道他們面臨的問題和他們必須做的事情,但通常他們無法完全準確地表達這些問題。
滿足他們的要求,但也不知道如何使用計算機來解決他們的問題;軟件開發人員知道
如何利用軟件實現人的要求,但對特定用戶的具體要求並不完全清楚。所以這個系統
在需求分析階段,分析師必須與用戶密切合作,充分交流信息,以獲得已被用戶確認的信息。
識別的系統邏輯模型。系統的邏輯通常用數據流圖、數據字典和簡要算法來描述。
系列型號。
在需求分析階段確定的系統邏輯模型是將來設計和實現目標系統的基礎,因為
這必須準確、完整地反映用戶的需求。系統分析師通常是計算機軟件、技術
專家通常喜歡很快開始詳細設計。然而,壹旦分析師開始談論程序設計,
細節會脫離用戶,讓他們無法繼續提出自己的訴求和建議。項目中使用的結。
結構分析和設計的方法為每個階段提供了特定的最終標準,並且必須完成需求分析階段。
整個準確的系統邏輯模型只有在得到用戶確認後才能進入下壹階段,因此
有效防止和克服急於進行具體設計的傾向。
4總體設計
現階段必須回答的關鍵問題是:“簡而言之,這個問題應該如何解決?”
首先,應考慮幾種可能的解決方案。例如,目標系統的壹些主要功能是使用
計算機自動完成還是手動完成;如果妳使用計算機,妳使用批處理還是
人機交互方式;您是否使用傳統的文件系統或數據庫來存儲信息。通常妳至少應該考慮
以下類型的可能方案:
低成本解決方案。系統只能完成最必要的工作,而不能做壹點額外的工作。
工作。
中等成本的解決方案。這樣的系統不僅可以很好地完成預定的任務,而且可以使用
聽起來非常方便,而且它可能還具有壹些用戶沒有特別指定的功能和特性。雖然用戶沒有
這些特定的需求已經被提出,但是系統分析員根據他自己的知識和經驗得出結論說這些額外的
能力將在實踐中證明是非常有價值的。
高成本的“完美”系統。這樣的系統擁有用戶可能需要的所有工作。
能力和特征。
系統分析師應該使用系統流程圖或其他工具來描述每個可能的系統並對每個系統進行評估。
該計劃的成本和收益也應與各種計劃的利弊進行充分權衡?∩ Xi?平、桓、夏?nbsp
系統(最佳方案),並制定實施推薦系統的詳細計劃。如果用戶接受該分數
分析師推薦的系統可以在此階段開始完成另壹項主要工作。
上述工作確定了解決問題的策略以及目標系統需要什麽程序,但如何設置呢?
這些程序呢?結構設計的壹個基本原則是程序應該是模塊化的,即漫長的旅程。
序言應由許多規模適中的模塊按照合理的層次結構組織而成。總體設計階段的第二階段
該項目的主要任務是設計軟件的結構,即確定程序由哪些模塊組成以及模塊之間的關系。
關系。通常,層次圖或結構圖用於描述軟件的結構。
5詳細設計
在總體設計階段,以更抽象的方式提出問題的解決方案。細部設計階段
任務是將解決方案具體化,即回答以下關鍵問題:“這應該如何具體實現?”
系統呢?"
這個階段的任務不是編寫程序,而是設計程序的詳細規範。這種規定
網格描述的功能與其他工程領域的工程師經常使用的工程藍圖非常相似。他們應該
包含必要的細節,程序員可以根據這些細節編寫實際的程序代碼。
通常使用HIPO圖(層次圖加輸入/處理/輸出圖)或PDL語言(過程設計語言)
)描述詳細設計的結果。
6編碼和單元測試
這個階段的關鍵任務是編寫易於理解和維護的正確程序模塊。
程序員應該根據目標系統的性質和實際環境選擇合適的高級編程。
語言(如有必要,匯編語言),並將詳細設計的結果翻譯成用所選語言編寫的程序。
並仔細測試編寫的每個模塊。
7綜合測試
此階段的關鍵任務是通過各種類型的測試(以及相應的調試)使軟件達到預設。
要求。
最基本的測試是集成測試和驗收測試。所謂集成測試是基於設計好的軟件結構。
根據選定的策略組裝通過單元測試的模塊,並在組裝過程中對齊它們。
以便進行必要的測試。所謂的驗收測試是按照規範的規定(通常在需求分析中
階段確定),用戶(或在用戶的積極參與下)將檢查並接受目標系統。
如有必要,可通過現場測試或並行操作對目標系統進行進壹步測試和檢驗。
為了使用戶能夠積極參與驗收測試並在系統投入生產運行後正確無誤。
為了有效地使用該系統,用戶通常需要接受正式或非正式的培訓。
通過對軟件測試結果的分析,可以預測軟件的可靠性;相反,根據軟件可靠性
性需求也可以決定測試和調試過程何時結束。
測試計劃、詳細測試計劃和實際測試結果應與正式文件壹起保存。
作為軟件配置的壹個組成部分。
8軟件維護
維護階段的關鍵任務是通過各種必要的維護活動使系統長期滿足用戶的需求。
需要。
通常有四種類型的維護活動:糾正性維護,即在使用過程中發現的診斷和糾正。
軟件錯誤;適應性維護,即修改軟件以適應環境的變化;完美的維護,
即根據用戶的要求對軟件進行改進或擴展,使其更加完善;預防性維護,也就是為將來修改軟件。
提前準備維護活動。
盡管維護階段沒有進壹步劃分為更小的階段,但事實上,每個維護活動
應通過維修要求(或報告問題),分析維修要求,提出維修要求。
維護計劃、維護計劃的審批、維護計劃的確定、軟件設計的修改、程序和測試程序的修改。
審查和驗收的壹系列步驟,因此它本質上是壹個壓縮和簡化的軟件定義和開放。
頭發的整個過程。
應通過維修要求(或報告問題),分析維修要求,提出維修要求。
維護計劃、維護計劃的審批、維護計劃的確定、軟件設計的修改、程序和測試程序的修改。
審查和驗收的壹系列步驟,因此它本質上是壹個壓縮和簡化的軟件定義和開放。
頭發的整個過程。
參考資料:
"
不錯,希望妳采納。