在這一章中作者給我們介紹了軟件交付中常見的發(fā)布問(wèn)題和解決的方法,帶我們走進(jìn)了這本書的主旨和所采用的高效的開發(fā)方法。
一些常見的發(fā)布反模式
1.手工部署方式
對(duì)于現(xiàn)在的大多數(shù)應(yīng)用程序來(lái)說(shuō),無(wú)論規(guī)模大小,其部署過(guò)程都比較復(fù)雜,而且包含很多非常靈活的部分,許多組織都使用手工式發(fā)布軟件,每個(gè)步驟都有一些需要人為判斷的事情,因此很容易發(fā)生人為的錯(cuò)誤。
2.開發(fā)完成之后才向類生產(chǎn)環(huán)境部署
這樣會(huì)導(dǎo)致很多之前看不到的問(wèn)題一下子爆發(fā)出來(lái),不良協(xié)作使得在試運(yùn)行環(huán)境上的部署工作問(wèn)題重重,我們會(huì)發(fā)現(xiàn)新的缺陷,但是常常沒(méi)有時(shí)間修復(fù)所有的問(wèn)題。,這樣會(huì)為之后的發(fā)布埋下隱患。
3.生產(chǎn)環(huán)境的手工配置管理
這樣由專人負(fù)責(zé)配置,不能實(shí)現(xiàn)重復(fù)的創(chuàng)建哪些你開發(fā)的應(yīng)用程序所依賴的每個(gè)基礎(chǔ)設(shè)施,在部署出錯(cuò)時(shí),我們不能將系統(tǒng)回滾到之前的版本。
如何實(shí)現(xiàn)目標(biāo)
目標(biāo):盡快地向用戶交付有用的可工作的軟件。
1.自動(dòng)化
如果構(gòu)建、部署、測(cè)試和發(fā)布流程不是自動(dòng)化的,那它就是不可以重復(fù)的。由于軟件本身、系統(tǒng)配置、環(huán)境以及發(fā)布過(guò)程的不同,每次做完這些活動(dòng)以后,其結(jié)果可呢呢個(gè)都會(huì)有所不同。由于每個(gè)步驟都是手工操作,這意味著整個(gè)發(fā)布過(guò)程無(wú)法得到應(yīng)有的控制來(lái)確保高質(zhì)量。常常說(shuō)軟件發(fā)布像是一種藝術(shù),但事實(shí)上,它應(yīng)該是一種工程科學(xué)。
2.頻繁做
如果能夠做到頻繁發(fā)布,每個(gè)版本之間的差異會(huì)很小。這會(huì)大大減少與發(fā)布相關(guān)的風(fēng)險(xiǎn),且更容易回滾。頻繁發(fā)布也會(huì)加快反饋速度,而客戶也需要它。
軟件交付的原則
1.為軟件發(fā)布創(chuàng)建一個(gè)可重復(fù)且可靠的過(guò)程
這種可重復(fù)性和可靠性來(lái)自以下的兩個(gè)原則:(1)幾乎將所有事情自動(dòng)化;(2)將構(gòu)建、部署、測(cè)試和發(fā)布軟件所需的東西全部納入到版本控制管理中。
2.將幾乎所有事情自動(dòng)化
3.把所有的東西都納入版本控制
將構(gòu)建、部署、測(cè)試和發(fā)布的整個(gè)過(guò)程中所需的東西全部保存在某種形式的版本存儲(chǔ)庫(kù)中,包括需求文檔、測(cè)試腳本、自動(dòng)化測(cè)試用例等。
4.提前并頻繁地做讓你感到痛苦地事
5.內(nèi)建質(zhì)量
6.“DONE”意味著“已發(fā)布”
一個(gè)特性只有交到用戶手中才能算“DONE”
7.交付過(guò)程是每個(gè)成員地責(zé)任
8.持續(xù)改進(jìn)
我的收獲&疑問(wèn)
- 我們應(yīng)該將老師之前所說(shuō)的小步提交切實(shí)的使用在我們的項(xiàng)目中,這樣我們可以做到頻繁的提交有用的代碼,使我們每次提交的版本之間的差異小,也有利于我們之后的回滾。
- 每次提交的代碼都要進(jìn)行測(cè)試,將測(cè)試運(yùn)用在自己的項(xiàng)目的每個(gè)部分,提高測(cè)試的覆蓋率,這樣可以確保我們提交的代碼是可執(zhí)行的。
- 項(xiàng)目應(yīng)盡可能的實(shí)現(xiàn)自動(dòng)化的部署
- 環(huán)境配置的參數(shù)會(huì)對(duì)軟件的執(zhí)行產(chǎn)生影響
- 所有的配置信息都要放在版本控制系統(tǒng)中
疑問(wèn):
- 自動(dòng)化的管理工具有哪些?
- 各種文檔納入版本控制有必要嗎?
- 環(huán)境配置的內(nèi)容都有哪些?