初識軟件工程
- 軟件無處不在
- 軟件的本質特性
- 軟件工程的產生與發展
- 軟件工程的基本概念
- 軟件質量實現
- 業界人士談軟件工程
什麼是軟件?
- 軟件 = 程序 + 數據 + 文檔;是嵌入式的數字化知識
程序:後臺代碼,提供功能
數據:軟件運行需要的各種數據信息,以及數據結構
文檔:描述開發細節的文檔和系統使用的用戶文檔
軟件的四個本質特性,固有的內在特性:
複雜性、一致性、可變性、不可見性 (是軟件開發困難的根本原因;軟件開發過程難以控制)
- 可變性,軟件只要投入使用,就一直在變,而且是隨心而變
人們總是認爲軟件很容易修改,但是修改是有副作用的,不斷地修改會導致軟件退化
成功的軟件都是會發生演化的;控制變更,從而保持高質量 - 不可見性,軟件是一種邏輯實體,缺乏合適的幾何表達方式
開發人員太像 皇帝的新衣 裏的裁縫
軟件工程 發展歷史
- 史前時代 (1956 ~ 67)
- 瀑布過程模型 (68 ~ 82)
- 質量標準體系 (83 ~ 95)
- 敏捷開發 (90年代至今)
什麼是軟件工程?
- 將系統性的、規範化的、可定量的方法,應用於軟件的開發、運行和維護 即工程化思想應用到軟件上
目的:創建 足夠好 的軟件(低成本、按時、功能實現、維護低費用、具有良好性質)
軟件開發策略
軟件複用、分而治之、逐步演進,優化折中
軟件工程的 Wasserman 規範
爲開發高質量的軟件產品提供一個工程框架
軟件工程三個基本要素,過程、方法、工具
- 過程:向下翻
- 方法:面向過程、面向對象、面向構件、面向服務
- 工具:建模工具、構造工具、測試工具、重構工具、管理工具
理解知識點和思想,無需死記硬背
下載並學會使用,Axure RP 9
網絡上免費的Axure 註冊碼、license+key,使用有風險
鏈接 學Axure. 20.3.2
軟件質量,
包括 過程質量、內外部質量、使用質量
質量,就是軟件產品對於某個(些)人的價值,通常指用戶
正確的軟件,軟件的正確運行;是兩個概念
- David Garvin 質量維度,通用的 (不止軟件)
ISO9126 質量模型,用來評價軟件質量,包括
功能性、可靠性、易用性、效率、可維護性、可移植性
質量不是測出來的,是開發過程中一步步構建出來的
商業目標決定質量目標 (未必非要零缺陷) 20.3.3
開發人員:
極強的代碼閱讀理解以及書寫能力
極強的責任心、職業道德、社會協調能力
編寫高質量的代碼
- 編碼過程與規範
- 良好的編程實踐
- Python集成開發環境
- 代碼靜態檢查
- 代碼性能分析
- 結對編程實踐
- 劉賀談軟件工程
高質量的代碼應該是 可讀性強、易於維護、簡潔高效的
軟件編程規範,就編寫代碼的規則的集合
鏈接 Google的軟件編碼規範.
註釋
- 寫好註釋並不容易
學會只編寫夠用的註釋,過猶不及,重視質量而不是數量
命名
- 好的名字一目瞭然,不需要讀者去猜,甚至不需要註釋
編寫自文檔化的代碼,其本身簡單易懂
應該 編寫自文檔化的程序,讓代碼本身易於理解
看 問 練
過程,
是一組相互關聯或相互作用的活動,能將輸入轉化爲輸出
客戶需求 —輸入–> 過程 —輸出–> 客戶滿意的產品
管理過程,實現過程,支持過程
過程方法
是系統地識別和管理組織內所使用的過程,
保證更有效地獲得期望的結果
軟件工程過程,
軟件開發活動:
- 問題定義,問題提出 > 可行性研究 > 可行性分析報告
- 需求開發,獲取需求 > 分析 > 文檔化 > 確認 > 軟件需求規格說明
- 軟件設計,設計體系結構、接口、組件、數據庫 > 軟件設計說明
- 軟件構造,系統模型 > 編寫代碼、單元測試、代碼審查、集成調試、系統構建、代碼優化(循環迭代)> 源代碼
- 軟件測試,單元測試、子系統集成測試、系統集成測試、驗收測試
- 軟件維護,和軟件開發是一個連續的過程(循環往復)
- 軟件開發管理:
項目管理,計劃、組織、領導、控制
配置管理,版本管理、系統構建、變更管理、發佈版本管理 20.3.5
軟件過程模型,就是對軟件過程的抽象描述
優缺點,特點,適用場景
- 瀑布模型,線性的,是由文檔驅動的
用戶只有在整個過程結束時才能看到成果,階段固定,已很少使用
適用於 需求明確 - 原型化模型,先實現產品部分的一個原型,可以是紙上原型
獲取用戶需求 - 迭代式開發,迭代循環開發版本,分爲增量模型、迭代模型(螺旋模型?)
- 可轉換模型,採用形式化的數學方法描述系統,並最終轉換爲可交付使用的系統 (噴泉模型?)
軟件開發具有迭代性,需要不斷的反覆嘗試,通過比較和選擇不同的設計,最終確定令人滿意的解決方案
版權問題?什麼版權?
- P13