軟體構造過程與配置管理
3-Software Construction Process and Configuration Management
生命週期
從無到有,從有到好,從好到無
計劃->分析->設計->是誒吸納->測試與整合->運維->迭代->消亡
軟體開發模型
基本為線性過程/迭代過程
典型模型:瀑布、V、W、增量、原型、螺旋、敏捷開發(XP&SCRUM)
不再展開敘述,都是隔壁專案管理講的東西
敏捷開發:增量+迭代 每次迭代處理一個小增量 對“小步快跑”與使用者參與及確認驗證做到極致
軟體配置管理
追蹤和控制軟體的變化
軟體中發生變化的基本單元:軟體配置項(檔案等,不是程式碼行)
基線:軟體持續變化過程中的“穩定時刻”(確定不會再產生相對變動的——如對外發布的版本)
CMDB:配置管理資料庫 儲存軟體配置項的變化資訊與基線
版本:軟體某一特定時刻形態的“身份證號”
版本管理:回滾、差異比較、備份、獲取備份、版本合併、共享協議、專案審計等
對版本控制系統:本地的/集中式的(雲端有)/分散式的(雲端和本地兼備)
典型軟體配置管理方法:Git & Github
對Git概念一些注意的點:
- Git庫的三部分:本地CMDB、工作目錄與隔離前二者用的暫存區(git add與git commit的區分)
- 每個軟體配置項的三個階段:修改、暫存(add)、提交(commit)
- commit與parent指向關係:通常一指一,合併一指多,分支多指一
- branch是一個commit'指標'的名稱,HEAD是當前commit的'指標'
- Git中僅儲存發生變化的檔案,不同版本間未變化則不重複儲存
下面兩張圖是課內例圖,一個對git指令的簡單應用,方便理解
軟體構造一般流程
程式設計->構建->程式碼評審->效能分析->測試->除錯->重構->程式設計(迴圈)
-
程式設計:使用建模語言(UML,系統化的建模方法,專門軟體)/程式語言(不用舉例了,整合開發環境下運作)/配置語言(XML,原始碼偏描述性,描述各引數的配置情況)/構建語言(XML)等。從形態上可以劃分成基於語言學的/數學的形式化/基於圖形的視覺化
-
靜態程式碼分析與評審:開展會議,使用工具,自動化等
-
動態程式碼分析:執行程式,觀察收集,分析結果
-
測試:發現錯誤,“有沒有”
-
除錯:最後手段,定位錯誤,“在哪裡”
-
重構:一系列小的,語義保留的程式碼轉換
狹義上認為軟體構造的過程即是專案構建的過程(Build),from build time to run time。可藉助工具將軟體構造各階段的活動“自動化”執行,提高構造效率。