軟體構造——軟體構造過程與配置管理
阿新 • • 發佈:2022-06-06
軟體構造過程與配置管理
傳統的軟體開發過程模型
- 兩種基本型別:
- 線性模型
- 迭代模型
- 現有的其它模型:
- 瀑布模型
- 流程:需求、設計、實施、驗證、維護
- 特徵:線性推進、階段劃分清晰、整體推進、無迭代
- 優點:管理簡單
- 缺點:無法適應需求變化
- 增量模型
- 特徵:線性推進、增量式(多個瀑布的序列)、無迭代
- 優點:容易適應需求增加
- V字模型
- 特徵:瀑布模型的延伸擴充套件
- 原型過程
- 特徵:迭代
- 螺旋模型
- 特徵:迭代,多輪迭代基本遵循瀑布模式,每輪迭代有明確的目標,遵循”原型“過程,進行嚴格的風險分析才可進入下一輪迭代
- 選擇過程模型的依據:
- 使用者參與度、適應變化的能力
- 開發效率、管理複雜度
- 開發出的軟體的質量
敏捷開發
- 敏捷開發的概念:通過快速迭代和小規模的持續改進,以快速適應變化。每次迭代處理一個小規模增量,敏捷 = 增量 + 迭代
- 敏捷開發的特徵:
- 極限的使用者參與
- 極限的小步驟迭代
- 極限的確認、驗證
- 敏捷開發的方法:極限程式設計XP
Git
- Git倉庫的三個組成部分:
- 本地的版本控制資料
- 工作目錄:本地檔案系統
- 暫存區:隔離工作目錄和git倉庫
- 每一個檔案都屬於以下三種狀態之一:
- 已修改:在工作目錄中的檔案與git倉庫中的檔案不同但是該檔案並不在暫存區
- 已暫存:檔案已經被修改但是被新增到了暫存區
- 已提交:修改的檔案被從暫存區提交到了git倉庫中
- git中的物件圖:
-
git物件圖用來記錄git專案的歷史資訊,版本之間的演化關係圖,是一個有向無環圖
-
git的所有操作都是在一個物件圖上進行的
-
git物件圖儲存在倉庫的.git目錄下
-
從一臺伺服器clone git專案意味著複製整個物件圖git clone URL local_repository
-
A->B:在版本B的基礎上做出變化形成了版本A
-
每一個結點都是一次commit,每個commit指向一個父親
-
分支:多個commit指向同一個父親
-
合併:一個commit指向兩個父親
-
git物件圖只儲存變化的檔案對於未發生變化的檔案只儲存一份副本
- git命令:
- 跟蹤新檔案,將修改的檔案放入暫存區:git add
- 檢查當前檔案狀態,哪些修改了但還沒有暫存,哪些暫存了但還沒提交:git status
- 檢視已暫存和未暫存的更新,檢視沒有暫存的檔案更新了哪些部分:git diff
- 檢視已暫存的檔案與上次提交之間的差異:git diff - -cached
- 提交更新:git commit
- 跳過使用暫存區域,把所有已經跟蹤過的檔案暫存起來並一併提交,git commit -a
- 移除檔案:git rm
- 獲取當前配置的所有遠端倉庫:git remote
- 新增一個遠端倉庫:git remote add [shortname] [url]
- 從遠端倉庫抓取資料到本地:git fetch
- 從一個倉庫或本地的分支拉取並整合程式碼:git pull
- 將本地倉庫中的資料推送到遠端倉庫: git push [remote-name] [branch-name]
- 檢視某個遠端倉庫的詳細資訊:git remote show [remote-name]
- 從本地移除遠端倉庫:git remote rm
廣義的軟體構造過程
- 編碼Programming
- 程式碼評審Review and static code analysis
- 動態程式碼分析Dynamic code analysis
- 除錯與測試Debugging and testing
- 重構Refactoring