軟體工程的定義
應用計算機科學理論和技術以及工程管理原則和方法,按預算和進度,實作滿足使用者要求的軟體産品的定義、開發、和維護的工程或進行研究的學科
解釋導緻 software crisis 本質原因、表現,述說克服軟體危機的方法
- 軟體危機(
)本質原因主要是使用者需求不明确、軟體開發過程缺乏正确的理論指導、軟體開發的規模越來越大且軟體開發的複雜度越來越高,其根源為軟體的大量需求與軟體生産力效率之間的沖突和軟體系統的複雜性與軟體開發方法之間的沖突software crisis
- 表現
- 項目運作超出預算
- 項目運作超出時間
- 軟體品質低落
- 軟體通常不比對需求
- 項目無法管理,且代碼難以維護
- 克服軟體危機的方法
- 正确認識計算機軟體的内涵
- 采用工程項目管理方法實施軟體開發的管理(軟體開發應該是一種組織良好、管理嚴密、協同配合的工程活動)
- 采用成熟的軟體開發技術和方法,開發和使用适當的軟體工具
軟體生命周期
計算機軟體有一個孕育、誕生、成長、成熟、衰亡的生存過程,這樣的過程稱為軟體的生命周期(也稱軟體開發生命周期SDLC)。軟體生命周期将軟體開發過程劃分為若幹階段,每個階段有明确的任務 目标和運作機制,進而使複雜的軟體開發過程能夠得到适當的控制 和管理。 軟體生命周期一般包括可行性分析與計劃、需求分析、設計(概要 設計和詳細設計)、編碼實作、測試、運作與維護等活動。這些活動應當以适當的方式配置設定到不同的階段去完成。
軟體生命周期的6個階段:
- 可行性分析與計劃階段
- 需求分析階段
- 設計階段
- 實作階段
- 測試階段
- 運作與維護階段
SWEBoK 的 15 個知識域(An Overview of the SWEBOK Guide )
- 軟體要求
關注軟體需求的啟發,協商,分析,規範和驗證。軟體需求表達對軟體産品的需求和限制,這些需求和限制有助于解決一些現實問題。Software Requirements
- 軟體設計
軟體設計涵蓋了設計過程和最終産品,軟體設計的過程是軟體工程生命周期活動,其中分析軟體需求以産生軟體内部結構及其行為的描述,其将作為其構造的基礎。軟體設計(結果)必須描述軟體體系結構 - 即軟體如何分解群組織成元件以及這些元件之間的接口。它還必須描述能夠建構它們的詳細程度的元件。Software Design
- 軟體建構
軟體建構是指通過結合詳細設計,編碼,單元測試,繼承測試,調試和驗證來詳細建立工作軟體。軟體建構包括與滿足其要求和設計限制的軟體程式開發相關的主題,涵蓋了軟體建構基礎、管理軟體建設、建築技術、實際考慮和軟體建構工具。Software Construction
- 軟體測試
軟體測試旨在評估産品品質并通過識别缺陷來改進産品品質的活動。軟體測試涉及在有限的測試用例集上針對預期行為動态驗證程式的行為。軟體測試包括軟體測試的基礎知識、測試技術、人機界面測試與評估、與測試有關的措施和實際考慮。Software Testing
- 軟體維護
軟體維護包括增強現有功能,調整軟體以在新的和修改的操作環境中運作,以及糾正缺陷。軟體維護包括軟體維護的基礎知識(維護的性質和需求,維護類别,維護成本)、軟體維護中的關鍵問題(技術問題,管理問題,維護成本估算,軟體維護測量)、 維護過程、軟體維護技術(程式了解,重新設計,逆向工程,重構,軟體退役)、災難恢複技術和軟體維護工具。Software Maintenance
- 軟體配置管理
軟體配置管理是在不同時間點識别系統配置的規則,用于系統地控制配置的改變,以及在整個軟體生命周期中維持配置的完整性和可追溯性。軟體配置管理涵蓋SCM過程的管理、軟體配置識别,控制,狀态核算,審計、軟體釋出管理和傳遞;Software Configuration Management
- 軟體工程管理
軟體工程管理涉及規劃,協調,測量,報告和控制項目或程式,以確定軟體的開發和維護是系統化的,規範化的和量化的。軟體工程管理涵蓋了啟動和範圍定義(确定和協商要求,可行性分析以及要求的審查和修訂)、軟體項目計劃(過程計劃,工作量估算,成本和進度,資源配置設定,風險分析,品質計劃)、軟體項目制定(計量,報告和控制;收購和供應商合同管理)、産品驗收、審查和分析項目績效、項目結束和軟體管理工具。Software Engineering Management
- 軟體工程過程
軟體工程過程關注軟體生命周期過程的定義,實施,評估,測量,管理和改進,其涵蓋的主題包括流程實施和變更(流程基礎架構,流程實施和變更模型以及軟體流程管理)、流程定義(軟體生命周期模型和流程,流程定義,流程适應和流程自動化的符号)、過程評估模型和方法、測量(過程測量,産品測量,測量技術和測量結果的品質)和軟體處理工具Software Engineering Process
- 軟體工程模型和方法
涵蓋的主題包括模組化、 模型類型、分析、和軟體開發方法。Software Engineering Models and Methods
- 軟體品質
軟體品質包括軟體品質的基礎知識(軟體工程文化,軟體品質特性,軟體品質的價值和成本以及軟體品質改進)、軟體品質管理流程(軟體品質保證,驗證和确認,稽核和稽核和實際考慮(缺陷表征,軟體品質測量和軟體品質工具)Software Quality
- 軟體工程專業實踐
關注軟體工程師必須具備的專業,負責和道德的軟體工程知識,技能和态度,涵蓋專業性、道德準則、小組動态和夠通技巧Software Engineering Professional Practice
- 軟體工程經濟學
關注的是在業務環境中做出決策,以使技術決策與組織的業務目标保持一緻。涵蓋的主題包括軟體工程經濟學的基本原理(提案,現金流量,貨币時間價值,計劃視野,通貨膨脹,折舊,替代和退休決策);非營利性決策(成本效益分析,優化分析); 估計,經濟風險和不确定性(估算技術,風險決策和不确定性); 和多屬性決策(價值和衡量尺度,補償和非補償技術)。Software Engineering Economics
- 計算基礎
提供軟體工程實踐所需的計算背景的基礎主題。涵蓋的主題包括問題解決技術,抽象,算法和複雜性,程式設計基礎,并行和分布式計算的基礎知識,計算機組織,作業系統和網絡通信。Computing Foundations
- 數學基礎
提供軟體工程實踐所必需的數學背景的基礎主題。涵蓋的主題包括集合,關系和功能; 基本命題和謂詞邏輯; 證明技術; 圖形和樹木; 離散機率; 文法和有限狀态機; 和數論。Mathematical Foundations
- 工程基礎
提供軟體工程實踐所必需的工程背景的基礎主題。涵蓋的主題包括經驗方法和實驗技術; 統計分析; 測量和名額; 工程設計; 仿真與模組化; 和根本原因分析。Engineering Foundations
簡單解釋 CMMI 的五個級别。
- Level 1 - Initial
。無序,自發生産模式。管理是反應式的。初始級
- Level 2 - Managed
。建立了基本的項目管理過程來跟蹤費用、進度和功能特性。制定了必要的過程紀律,能重複早先類似應用項目取得的成功經驗。可管理級
- Level 3 - Defined
。已将軟體管理和工程兩方面的過程文檔化、标準化,并綜合成該組織的标準軟體過程。所有項目均使用經準許、剪裁的标準軟體過程來開發和維護軟體,軟體産品的生産在整個軟體過程是可見的。已定義級
- Level 4 - Quantitatively Managed
。分析對軟體過程和産品品質的詳細度量資料,對軟體過程和産品都有定量的了解與控制。管理有一個作出結論的客觀依據,管理能夠在定量的範圍内預測性能。量化管理級
- Level 5 - Optimizing
。過程的量化回報和先進的新思想、新技術促使過程持續不斷改進。優化管理級
用自己語言簡述 SWEBok 或 CMMI
CMMI全稱Capability Maturity Model Integration,是能力成熟度內建模型,是由美國國防部與卡内基-梅隆大學和美國國防工業協會共同開發和研制的,其整合傳統上獨立的組織功能,設定流程改進目标和優先級,為品質流程提供指導,并為評估目前流程提供參考。該架構能夠用來度量你的有效性和實用性;能夠找出這樣的一些機會,繼續改進的機會,包括在商業目标、政策還有降低項目的風險等方面。CMMI為改進一個組織的各種過程提供了一個單一的內建化架構,對于IT産業而言,其幫助IT企業對軟體在工作的時候進行管理和不斷的改進的,大大的幫助了企業的開發,也幫助企業增強了改進能力,進而可以幫助企業壯大。