哈工大软件构造期末复习(根据老师复习提纲整理)
軟構(gòu)期末復(fù)習(xí)1-3章
1.軟件構(gòu)造的多維度視圖及其劃分
大體上分為build-time和run-time兩大類,分別對應(yīng)視圖中的兩排。
在build-time中,又按照時(shí)刻和時(shí)期、代碼層面和成員層面區(qū)分開,總共分為上圖中9塊。需要記住此圖。畫紅色的地方是重點(diǎn)。
2.內(nèi)部/外部的質(zhì)量指標(biāo)
外部的質(zhì)量指標(biāo)有:正確性、健壯性、可擴(kuò)展性、可復(fù)用性等
- 正確性:軟件產(chǎn)品執(zhí)行其規(guī)約定義的確切任務(wù)的能力
- 健壯性:軟件系統(tǒng)對異常情況做出適當(dāng)反應(yīng)的能力
- 可擴(kuò)展性:使軟件產(chǎn)品易于適應(yīng)規(guī)約的變化的能力
- 可復(fù)用性:軟件中的各部分構(gòu)建其他不同應(yīng)用程序服務(wù)的能力
內(nèi)部的質(zhì)量指標(biāo)有:代碼行數(shù)、低耦合、可讀性、可理解性、清潔度等
3.軟件配置管理SCM與版本控制系統(tǒng)VCS
3.1 軟件配置管理(Software Configuration Management)
SCM是一種監(jiān)視軟件中更新操作的系統(tǒng),軟件的任何組成部分(源代碼、數(shù)據(jù)、文檔、硬件、各種環(huán)境)都可以隨軟件生命周期的時(shí)間而更新,因此可以被記錄下來。
其核心是對于版本控制和基線的確立。其中,基線是指軟件持續(xù)變化過程中的“穩(wěn)定時(shí)刻”,如對外發(fā)行版本。
3.2 版本控制系統(tǒng)(Version Control System )
版本是為軟件的任一特定時(shí)刻(Moment)的形態(tài)指派一個(gè)唯一的編號,作為在在整個(gè)開發(fā)過程中的“身份標(biāo)識”,而版本控制就是對每次更改的不同版本進(jìn)行記錄,保留備用。
版本控制系統(tǒng)分為本地版本控制系統(tǒng)、集中式版本控制系統(tǒng)、分布式版本控制系統(tǒng)三種。本地的只能用于本地機(jī)器,集中式的可以支持多臺機(jī)器之間進(jìn)行協(xié)作,分布式是上述兩者的統(tǒng)一。
傳統(tǒng)的版本控制軟件是記錄每次更改的內(nèi)容,需要的時(shí)候再根據(jù)記錄進(jìn)行更改;而現(xiàn)在最流行的版本控制工具git則是記錄每一本完整的版本,需要的時(shí)候直接提取即可,極大地提高了軟件的效率。
3.3 git
git是一種分布式版本控制工具。
3.3.1 git的結(jié)構(gòu)和原理
一個(gè)git倉庫有3個(gè)部分:
- .git倉庫(配置管理數(shù)據(jù)庫,存儲軟件的各配置項(xiàng)隨時(shí)間發(fā)生變化的信息和基線)
- 工作目錄:本地文件系統(tǒng)
- 暫存區(qū):用來隔離工作目錄和git倉庫
文件在git倉庫的3個(gè)狀態(tài):
- 已修改:剛在工作區(qū)改完,還沒有放到暫存區(qū)
- 已暫存:將在工作區(qū)改完的版本add到暫存區(qū)
- 已提交:將在暫存區(qū)的版本commit到.git倉庫,此時(shí)工作目錄的版本與git倉庫的版本保持一致
除此之外,git還有遠(yuǎn)程倉庫,支持多人協(xié)作功能,如果想要將本地倉庫的內(nèi)容提交到遠(yuǎn)程倉庫以供別人使用,則還需要push到遠(yuǎn)程倉庫。當(dāng)然,如果你想使用別人的遠(yuǎn)程倉庫的內(nèi)容,也需要先從遠(yuǎn)程倉庫pull下來。
git的所有操作都是在一個(gè)圖數(shù)據(jù)結(jié)構(gòu)上進(jìn)行的,git對象圖存儲在存儲庫的.git目錄中。從另一臺機(jī)器/服務(wù)器復(fù)制git項(xiàng)目意味著復(fù)制整個(gè)對象圖。
對象圖是一個(gè)有向的無環(huán)圖,一條邊A→BA\rightarrow BA→B表示“在版本B的基礎(chǔ)上做出變化,形成了版本A”;每個(gè)$ \rightarrow$指向一個(gè)父親,如果有多個(gè)commit指向同一個(gè)父親,則為一個(gè)父親產(chǎn)生了多個(gè)子節(jié)點(diǎn),即為branch;如果是一個(gè)commit指向多個(gè)父親,則表示多個(gè)父親節(jié)點(diǎn)合并形成了子節(jié)點(diǎn),即為merge
每次commit都會在git倉庫中形成一個(gè)新的節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)包含所有文件的完整快照。每個(gè)節(jié)點(diǎn)中包含以下信息:根節(jié)點(diǎn)、作者、提交者、備注信息等
3.3.2常用git命令:
git init//初始化git倉庫 git add//將工作目錄下的版本提交到暫存區(qū) git add readme.md//將文件添加到暫存區(qū),開始對這些文件進(jìn)行跟蹤 git commit//將暫存區(qū)文件提交到本地倉庫 git push//將本地倉庫的文件提交到遠(yuǎn)程倉庫(服務(wù)器) git status//查看當(dāng)前文件狀態(tài) git diff//查看工作區(qū)和暫存區(qū)快照之間的差異,即修改后未add的內(nèi)容 git commit -a//跳過git add步驟,直接將所有修改過的文件暫存起來并提交 git rm//從git中移除某個(gè)文件,不再跟蹤,也將原文件刪除 git fetch//從遠(yuǎn)程倉庫抓取文件到本地,但不與本地的合并 git pull//與fetch類似,但是還會與本地合并 git branch//查看本地分支 git branch phase//創(chuàng)建本地分支phase git checkout phase//切換到分支phase git checkout -b phase1//創(chuàng)建分支phase1并切換到phase1分支 git merge phase//將分支phase合并到main分支上,需要在主分支(main)上進(jìn)行操作 git branch -D b1//強(qiáng)制刪除分支總結(jié)
以上是生活随笔為你收集整理的哈工大软件构造期末复习(根据老师复习提纲整理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qemu在window使用树莓派
- 下一篇: 20190506(libwebsocke