第1章_軟件工程概述
軟件工程是一門工程學。
軟件開發過程中存在週期長、成本高、質量低等問題。
軟件危機是軟件工程產生的背景。
1.1_軟件危機
政府、教育、金融、製造業、媒體、航空航天、生命科學等處處有軟件系統。
軟件系統越來越複雜,軟件的高性能計算和事務處理能力倍受依賴。
- 軟件開發的特性
- 難以描述性:軟件需求來源廣泛,不完整,存在二義性。沒有統一的描述規範。
- 缺乏可見性:難以衡量軟件開發的質量和進度。
- 具有複雜性:軟件規模增加,程序的複雜性呈指數上升。
- 具有變化性:業務規則變化,軟件環境變化。
- 具有風險性:風險源自用戶,項目,技術和商業風險。軟件重開發代價巨大。
- 具有強合作性:規模大,複雜度高,需要更多人分工協作,短時間開發出高質量產品。
- 軟件危機
- 缺乏計劃性:進度安排與成本估計不準確。易造成項目超時、成本超支。
- 軟件需求獲取不充分、不準確:不恰當的需求採集和分析方法。軟件產品不能滿足用戶實際需求。
- 缺乏團隊開發的合作、協調能力:大、中型軟件需要按照一定標準進行團隊分工協作。
- 缺乏良好的軟件質量評測手段:軟件錯誤發現不及時,軟件質量得不到保證。
- 軟件的可維護性差:缺乏統一的開發規範,缺乏完整的、規範的軟件文檔。
- 軟件的可複用性差:存在大量重複性勞動,軟件開發效率低。
- 軟件開發過程不規範:項目大幅度返工,邊建邊改。
- 缺乏自動化的工具來協助開發:手工方式進行建模與測試開發效率低。
- 缺乏變更管理措施:需求、設計方案與代碼經常變更。無序的變更導致項目混亂。
- 缺乏風險管理手段:大規模複雜軟件需要有效的識別、評估、應對和監控源自項目、技術和商業的風險。
1.2_軟件工程概念
軟件工程的定義:軟件工程是以質量爲核心,爲了經濟地開發滿足客戶需求的軟件而研究、建立和應用的系統化的、有規則的、可度量的和可控制的工程原則、方法,涉及軟件過程、項目管理、開發方法、開發工具,甚至企業文化等各方面。
- 以質量爲中心:軟件工程的核心目標是保證和提高軟件質量。
- 經濟性:指在軟件開發中生產出滿足預算、按期交付的軟件。
- 滿足客戶需求:軟件產品必須提供用戶所需的功能。
- 研究、建立和應用:軟件工程的方法理論、模式、框架等並列爲標準並應用到實踐當中。
- 系統化:將軟件過程、項目管理、開發方法、軟件度量、開發工具等相關知識有機地組織在一起。
- 有規則:軟件工程具有一定的標準和規範。
- 可度量:軟件規模、複雜性、可使用性、可靠性、生產率、成本是被度量的因素。
- 可控制:需求獲取、系統分析、系統設計、系統實現、系統測試和部署等活動應處於受控狀態。
- 軟件過程:將用戶需求轉化爲軟件系統所進行的一系列活動的集合。
- 項目管理:涉及人力資源管理、項目計劃、風險管理、項目跟蹤、質量保證、配置管理等。
- 開發方法:結構化傳統軟件工程方法、面向對象的軟件工程方法。
- 開發工具:自動化工具輔助需求分析、優化軟件設計、加快代碼實現速度、提高軟件測試水平。
- 企業文化:企業文化會逐步潛移默化地融入項目團隊,影響軟件開發效率和質量。
1.3_項目案例
網上商城系統www.dcse.neu.edu.cn功能、性能、代碼數量、複雜度。
- 系統主要功能:商品銷售
- 列舉商品類別、提供搜索功能。
- 顯示商品列表、商品具體信息。
- 實現用戶登錄驗證、註冊新用戶、維護用戶信息等功能。
- 管理購物車。
- 實現結賬處理。
- 查詢訂貨情況。
- 統計銷售記錄。
- 系統需要解決的問題:相關非技術問題
- 項目開發的起點。
- 技術的選擇及其優缺點(最先進技術、團隊最熟悉的技術、用戶最期待的技術)。
- 系統開發所需時間。
- 系統開發所需人力及其分工。
- 項目的開發計劃。
- 是否需要需求分析。
- 需求是否清晰完整,是否需要需求分析文檔,文檔編寫的規範。
- 代碼編寫前的設計方案和模型,設計方案所遵循的原則。
- 人機交互界面的設計。
- 實現功能的先後順序及其優先級。
- 系統開發的風險識別、評估、監控、應對方案。
- 系統的可擴展性,需求增加、技術變更。
- 是否有可複用的構件或框架。
- 系統設計中是否有可參考的設計模式。
- 系統開發過程中的編碼規範。
- 應對需求變更的最小化項目變更策略。
- 測試工作的起點,測試方法,測試工具。
- 系統開發所採用的過程模型。開發過程的控制。需求分析、系統設計、編碼、測試、部署。
- 軟件質量的度量。
- 項目延期的應對策略。
第1章_軟件工程概述_總結
軟件開發週期長、質量低、成本高。
軟件工程以質量爲核心。研究、建立、並應用系統化、有規則、可度量、可控制的工程原則和方法。
第1章_軟件工程概述_習題
1.1_軟件開發的特點。
1.2_軟件危機是什麼。軟件危機的表現。軟件危機的解決方法。
1.3_軟件工程是什麼。
1.4_軟件的開發方法有哪些。
1.5_項目管理有哪些方面。
1.6_軟件工程工具的作用。
第2章_軟件開發過程和活動
軟件開發的團隊成員需按照一定的步驟,有序地,協作開發軟件。
2.1_過程概念
軟件開發過程的一系列活動:
基本活動:問題定義、可行性研究、需求分析、系統設計、代碼編寫、系統測試、軟件部署、軟件交付。
管理活動:風險管理、開發計劃、項目跟蹤、質量保證、軟件配置管理。
軟件過程由開發和維護軟件及其相關產品的一系列活動構成,這些活動從不同方面定義了軟件開發過程中的步驟、交付物、涉衆及其職責等流程要素。
軟件開發過程黑箱:
客戶需求:啓動軟件開發。
開發資源:員工和工具(人力、物力)。
開發控制:預算、計劃、標準控制軟件開發的費用、進度、質量。
產品輸出:軟件程序代碼、用戶需求規約文檔、系統設計文檔、測試報告、用戶說明書。