軟件過(guò)程,即軟研發(fā)過(guò)程私爷,不僅僅是編碼雾棺,還包括但不限于原始需求,需求確認(rèn)衬浑,需求澄清捌浩,軟件設(shè)計(jì),軟件編碼工秩,代碼檢視尸饺,測(cè)試設(shè)計(jì),測(cè)試助币,后期維護(hù)等浪听。當(dāng)下最被廣泛實(shí)踐和應(yīng)用的軟件研發(fā)方法論是敏捷軟件開發(fā)。
敏捷軟件開發(fā)的意義和價(jià)值,還有使用范圍,核心思想,基本流程,基本理念? 為什么會(huì)提出這樣的理念奠支。
史前時(shí)代
按照每人每月生產(chǎn)多少代碼,來(lái)衡量軟件開發(fā),這種衡量方式對(duì)機(jī)器生產(chǎn)物品的衡量還是很準(zhǔn)的.但是對(duì)于很多事情是不使用的,比如對(duì)于孕婦生小孩這件事,一個(gè)孕婦10月懷胎,然后誕下一個(gè)小孩.但是你能讓10個(gè)孕婦一個(gè)月生下一個(gè)小孩嗎? 對(duì)這個(gè)時(shí)代的失敗的總結(jié)是<<人月神話>>這部經(jīng)典巨作.
瀑布開發(fā)
將開發(fā)嚴(yán)格的分為,需求,設(shè)計(jì),開發(fā),測(cè)試,維護(hù) ----產(chǎn)生的結(jié)果常常是需求后期經(jīng)常變動(dòng)馋辈,各個(gè)過(guò)程總在不斷的打破,研發(fā)的周期很長(zhǎng),導(dǎo)致生產(chǎn)出來(lái)的軟件產(chǎn)品成本高昂.
敏捷時(shí)代
敏捷時(shí)代,注重軟件開發(fā)時(shí)候的高效溝通和及時(shí)反饋倍谜。
持續(xù)集成,每天都有可以使用的版本.注重人與人之間的交流,分期交付,及時(shí)得知效果.
快速的相應(yīng)市場(chǎng)的需求.
相比與傳統(tǒng)的工程迈螟,一個(gè)軟件工程更強(qiáng)調(diào)漸進(jìn)叉抡,你知道大的目標(biāo)是什么,你也知道最近的幾個(gè)階段的目標(biāo)答毫,但是后面的階段目標(biāo)是你無(wú)法預(yù)知的褥民,你能做的就是提前識(shí)別風(fēng)險(xiǎn),然后依據(jù)風(fēng)險(xiǎn)制定對(duì)策洗搂。
** 為什么說(shuō)軟件后期的階段目標(biāo)無(wú)法預(yù)知呢消返?**
因?yàn)檐浖_發(fā)本質(zhì)是解決問(wèn)題的,如果是已知問(wèn)題耘拇,已有解決方案撵颊,直接使用即可,軟件更多的是面對(duì)未知問(wèn)題惫叛。機(jī)器善于解決的是繁瑣或重復(fù)問(wèn)題倡勇,軟件研發(fā)的過(guò)程就是把原本繁瑣的問(wèn)題,做的讓程序員能理解嘉涌,然后程序員做的能讓大眾能理解妻熊,能使用。從這個(gè)意義上講軟件最終都是面對(duì)用戶的仑最,所以一定要做的讓人易于理解扔役。
沒(méi)有重復(fù),每天寫的都是不一樣的代碼警医,這需要很大的創(chuàng)造力亿胸,對(duì)于機(jī)械的生產(chǎn)你很容易預(yù)知未來(lái),但是對(duì)于創(chuàng)造法严,是不能預(yù)知的损敷。而且人們本來(lái)就不擅長(zhǎng)對(duì)智力的評(píng)估。
** 那么在軟件行業(yè)是怎么規(guī)避無(wú)法預(yù)知的風(fēng)險(xiǎn)呢深啤?**
小步快跑分解任務(wù),一般最多在一周內(nèi)能完成的任務(wù)路星。每周都能看到進(jìn)展萬(wàn)一出現(xiàn)偏差也能及時(shí)調(diào)整溯街。這個(gè)分解者必須對(duì)該領(lǐng)域很熟悉,知道有哪些坑坑洼洼洋丐,這樣的分解才是相對(duì)準(zhǔn)確的呈昔。還有即便是該領(lǐng)域很熟悉,由于人員的技能差別友绝,加之評(píng)估之時(shí)不會(huì)太關(guān)注細(xì)節(jié)堤尾,即便有深厚領(lǐng)域經(jīng)驗(yàn)的人,評(píng)估的工作量和實(shí)際的平均差異在1:6-1:10之間迁客,這樣就可以解釋軟件行業(yè)為什么加班很多郭宝。
小步快跑的思路也可以用于我們用來(lái)做需要極大耐心才能完成的事辞槐,比如背新概念3,比如學(xué)習(xí)一門編程語(yǔ)言粘室,你只要關(guān)注最終目標(biāo)和下一個(gè)小目標(biāo)就可以了榄檬,浪費(fèi)精力在擔(dān)心和鼓勵(lì)自己上都是多余的,你做就是了衔统。