【Mark】軟件工程_自

初識軟件工程


  • 軟件無處不在
  • 軟件的本質特性
  • 軟件工程的產生與發展
  • 軟件工程的基本概念
  • 軟件質量實現
  • 業界人士談軟件工程

什麼是軟件?

  • 軟件 = 程序 + 數據 + 文檔;是嵌入式的數字化知識
    程序:後臺代碼,提供功能
    數據:軟件運行需要的各種數據信息,以及數據結構
    文檔:描述開發細節的文檔和系統使用的用戶文檔

軟件的四個本質特性,固有的內在特性:
複雜性、一致性、可變性、不可見性 (是軟件開發困難的根本原因;軟件開發過程難以控制)

  • 可變性,軟件只要投入使用,就一直在變,而且是隨心而變
    人們總是認爲軟件很容易修改,但是修改是有副作用的,不斷地修改會導致軟件退化
    成功的軟件都是會發生演化的;控制變更,從而保持高質量
  • 不可見性,軟件是一種邏輯實體,缺乏合適的幾何表達方式
    開發人員太像 皇帝的新衣 裏的裁縫

軟件工程 發展歷史

  • 史前時代 (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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章