国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

極限編程中的關(guān)聯(lián)性分析

2021-01-22 13:41郭峰
關(guān)鍵詞:開(kāi)發(fā)人員代碼編程

郭峰

(北方工業(yè)大學(xué)信息學(xué)院,北京 100144)

0 引言

在軟件開(kāi)發(fā)過(guò)程中,需求變更幾乎是不可避免的,傳統(tǒng)的軟件過(guò)程模型對(duì)于需求變更雖然采取了剛性的措施,最早的瀑布模型要求在需求分析階段把需求固定下來(lái),之后不可有變化,體現(xiàn)了對(duì)需求變更的不友好甚至是排斥的態(tài)度。RUP[1]做為傳統(tǒng)軟件過(guò)程模型的集大成者,完美體現(xiàn)了軟件工程系統(tǒng)、規(guī)范、可度量的特點(diǎn),采取迭代、并發(fā)等多種措施解決需求的變化問(wèn)題,但仍然是被動(dòng)消極的應(yīng)對(duì)方案。在中小型項(xiàng)目中,應(yīng)用RUP通常存在一定的困難,最典型的問(wèn)題是按照RUP模型,在整個(gè)軟件生命周期內(nèi),大部分時(shí)間多個(gè)任務(wù)并發(fā)執(zhí)行,中小型項(xiàng)目在人員分工管理方面通常不足,無(wú)法滿足RUP模型的要求。

2001年2月17位著名的軟件專(zhuān)家聯(lián)合起草了敏捷軟件開(kāi)發(fā)宣言,標(biāo)志著敏捷方法的出現(xiàn)?!懊艚荨币辉~意味著快速、簡(jiǎn)單、靈活,敏捷方法代表了一種積極的態(tài)度,經(jīng)典的敏捷方法書(shū)籍《解析極限編程》的副標(biāo)題是擁抱變化[2],與傳統(tǒng)的軟件過(guò)程模型被動(dòng)消極的態(tài)度不同,敏捷方法不排斥需求的變化,強(qiáng)調(diào)積極面對(duì)需求的變化,采用柔性的手段,通過(guò)過(guò)程、管理以及實(shí)踐盡可能滿足用戶的需求,不看重以合同的形式分割需求的界限。敏捷開(kāi)發(fā)的基本理念是以最簡(jiǎn)單有效的方式快速地完成開(kāi)發(fā)任務(wù),在開(kāi)發(fā)過(guò)程中針對(duì)需要及時(shí)響應(yīng)的外界變化迅速做出調(diào)整。

敏捷軟件開(kāi)發(fā)方法不是一個(gè)具體的方法,而是一個(gè)涵蓋性術(shù)語(yǔ),用于概括那些應(yīng)需而生的具有類(lèi)似價(jià)值觀的軟件開(kāi)發(fā)過(guò)程和開(kāi)發(fā)方法,這些方法通常都具備以人為本、循環(huán)迭代、響應(yīng)變化等特征,更注重能高質(zhì)量地快速交付客戶滿意的軟件產(chǎn)品,而不強(qiáng)調(diào)規(guī)范嚴(yán)謹(jǐn)?shù)倪^(guò)程和面面俱到的文檔。代表性的敏捷軟件開(kāi)發(fā)方法有:極限編程、SCRUM、特征驅(qū)動(dòng)軟件開(kāi)發(fā)、動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)、自適應(yīng)軟件開(kāi)發(fā)、Crystal等[3]。

1 極限編程概述

敏捷方法是一類(lèi)方法的統(tǒng)稱(chēng),極限編程屬于敏捷方法中的一種,獲得了較為廣泛的關(guān)注,并在實(shí)踐中獲得大量的應(yīng)用。極限編程是一個(gè)輕量級(jí)的、靈活的軟件開(kāi)發(fā)方法,同時(shí)它也是一個(gè)非常嚴(yán)謹(jǐn)和周密的方法。極限編程包括價(jià)值觀、原則和實(shí)踐三個(gè)部分。極限編程的基礎(chǔ)是4個(gè)價(jià)值觀念:

溝通-大多數(shù)項(xiàng)目的失敗可歸結(jié)于溝通不暢,開(kāi)發(fā)人員之間、開(kāi)發(fā)人員和客戶之間都需要積極的多種渠道的溝通,敏捷方法在提高客戶的參與度、增加開(kāi)發(fā)人員的溝通途徑、采用高效率的會(huì)議等方式提高溝通的質(zhì)量。

簡(jiǎn)單-敏捷方法強(qiáng)調(diào)效率和實(shí)用性,首要目標(biāo)是開(kāi)發(fā)能夠滿足客戶需要的最簡(jiǎn)單的產(chǎn)品,需求分析、結(jié)構(gòu)設(shè)計(jì)、編寫(xiě)程序和文檔的工作盡可能簡(jiǎn)化,避免過(guò)度分析過(guò)度設(shè)計(jì)等現(xiàn)象。

反饋-反饋可以讓開(kāi)發(fā)者把握正確的方向,少走彎路。開(kāi)發(fā)者要獲取來(lái)自客戶、系統(tǒng)和其他開(kāi)發(fā)者的反饋,并基于反饋改進(jìn)分析、設(shè)計(jì)和實(shí)現(xiàn)。

勇氣-開(kāi)發(fā)人員對(duì)于放棄系統(tǒng)的代碼、改進(jìn)系統(tǒng)設(shè)計(jì)等行為通常是謹(jǐn)慎的,敏捷方法強(qiáng)調(diào)在必要的時(shí)候果斷做出決策。

極限編程在表現(xiàn)形式上是一組簡(jiǎn)單、具體的實(shí)踐,這些實(shí)踐結(jié)合在一起形成了一個(gè)敏捷開(kāi)發(fā)過(guò)程,項(xiàng)目團(tuán)隊(duì)可以直接采用這些實(shí)踐,也可以增加一些實(shí)踐,或者對(duì)其中的一些實(shí)踐進(jìn)行修改后再采用。極限編程在剛剛提出的時(shí)候,人們普遍認(rèn)為它僅適合小型軟件項(xiàng)目的開(kāi)發(fā),而目前也可將其應(yīng)用于大中型軟件項(xiàng)目之中。

極限編程的價(jià)值觀是極限編程的指導(dǎo)思想,實(shí)踐是具體的做法,原則是兩者之間的橋梁,原則依據(jù)價(jià)值觀指導(dǎo)實(shí)踐,是對(duì)價(jià)值觀的具體的解釋。極限編程的原則包括人性化、經(jīng)濟(jì)學(xué)、互惠互利、自相似性、改進(jìn)、多樣性、反省、連續(xù)性、機(jī)遇、冗余、及時(shí)決策、關(guān)注質(zhì)量、小步前進(jìn)、接受責(zé)任等。

2 極限編程實(shí)踐的關(guān)聯(lián)性分析

敏捷方法的價(jià)值觀是:(1)個(gè)體與交互重于過(guò)程與工具;(2)可以工作的軟件重于面面俱到的文檔;(3)與客戶的合作重于與其合同的談判;(4)對(duì)變化的響應(yīng)重于對(duì)計(jì)劃的遵循。極限編程的價(jià)值觀是溝通、簡(jiǎn)單、反饋、勇氣。兩者的價(jià)值觀是互通的,是從不同角度的闡述。

圖1 極限編程的實(shí)踐對(duì)需求變更支持的強(qiáng)度

敏捷方法以及極限編程要解決的一個(gè)重要問(wèn)題就是積極、靈活、有效地處理需求變更。極限編程的核心是12條實(shí)踐,這些實(shí)踐作為一個(gè)整體體現(xiàn)敏捷方法和極限編程的原則和價(jià)值觀。如平穩(wěn)的工作效率體現(xiàn)人性化的原則,更容易使開(kāi)發(fā)人員長(zhǎng)期保健康的心理和生理狀態(tài),有利于軟件質(zhì)量的提高?,F(xiàn)場(chǎng)客戶體現(xiàn)與客戶的合作重于合同的談判的價(jià)值觀。簡(jiǎn)單設(shè)計(jì)體系可以工作的軟件重于面面俱到的文檔。毫不留情的重構(gòu)體現(xiàn)勇氣這一價(jià)值觀,代碼規(guī)范、測(cè)試驅(qū)動(dòng)開(kāi)發(fā)、集體擁有代碼相互關(guān)聯(lián),才可以保證重構(gòu)的質(zhì)量。持續(xù)集成、小版本發(fā)布使得用戶能夠盡早發(fā)現(xiàn)問(wèn)題,是響應(yīng)變化的有效措施。

極限編程的實(shí)踐有些直接支持需求變更,有些對(duì)其他實(shí)踐形成支撐,從而間接支持需求變更。圖1描述了這些實(shí)踐與需求變更的關(guān)系,與需求變更的距離越遠(yuǎn)表示實(shí)踐對(duì)需求變更的支持強(qiáng)度越低。

在傳統(tǒng)的軟件項(xiàng)目中,客戶一般不全程參與軟件開(kāi)發(fā)過(guò)程,客戶的任務(wù)通常只包括講解需求,測(cè)試和驗(yàn)收軟件系統(tǒng)。在極限編程中,現(xiàn)場(chǎng)客戶實(shí)踐要求客戶始終參與軟件開(kāi)發(fā),并為客戶增加以下任務(wù):編寫(xiě)用戶故事(User Story),評(píng)估用戶故事的商業(yè)優(yōu)先級(jí),為每個(gè)用戶故事設(shè)計(jì)測(cè)試用例,參與開(kāi)發(fā)計(jì)劃的制訂,參與開(kāi)發(fā)過(guò)程的調(diào)控。通過(guò)提高客戶的參與度,可以更有效地解決需求變化問(wèn)題。頻繁發(fā)布實(shí)踐可以保證客戶能夠有充分接觸待發(fā)布產(chǎn)品的機(jī)會(huì),從而可以獲得充分的用戶反饋,并以此為依據(jù)調(diào)控開(kāi)發(fā)過(guò)程(通過(guò)增加、刪除或改變用戶故事來(lái)實(shí)現(xiàn)),在頻繁發(fā)布的過(guò)程中,所有的發(fā)布都要經(jīng)過(guò)功能測(cè)試,可有效降低開(kāi)發(fā)風(fēng)險(xiǎn)。計(jì)劃游戲的含義是項(xiàng)目計(jì)劃建立起來(lái)以后,需要根據(jù)項(xiàng)目的進(jìn)展來(lái)進(jìn)行調(diào)整。這三條實(shí)踐直接支持需求變更,其他實(shí)踐通過(guò)相互關(guān)聯(lián)和呼應(yīng)間接支持需求變更,圖2描述了極限編程12條實(shí)踐之間的關(guān)聯(lián)關(guān)系,圖中箭頭表示一條實(shí)踐對(duì)另一條實(shí)踐形成支持。

隱喻使得所有項(xiàng)目參與人員都對(duì)相關(guān)的抽象概念有統(tǒng)一的、具體的認(rèn)識(shí),有助于相關(guān)人員的溝通,良好的溝通尤其是與客戶的溝通是明確需求的有效路徑。圖中只描述了隱喻對(duì)現(xiàn)場(chǎng)客戶的支持,實(shí)際上對(duì)其他實(shí)踐也存在支持關(guān)系,在與客戶溝通過(guò)程中隱喻的作用更大一些。

極限編程提倡毫不留情的重構(gòu)(Refactor mercilessly)。由于集體擁有代碼,因此任何人有權(quán)利重構(gòu)任何代碼,只要保證重構(gòu)后的代碼100%通過(guò)單元測(cè)試即可。僅僅從重構(gòu)的名稱(chēng)上來(lái)理解這一條實(shí)踐是遠(yuǎn)遠(yuǎn)不夠的,在代碼規(guī)范、結(jié)對(duì)編程、集體擁有代碼以及測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的基礎(chǔ)上才有可能做到極限編程提倡的毫不留情的重構(gòu),否則一定要謹(jǐn)慎地對(duì)待重構(gòu)。

計(jì)劃游戲意味著開(kāi)發(fā)計(jì)劃的調(diào)整,需要簡(jiǎn)單設(shè)計(jì)和現(xiàn)場(chǎng)客戶的支持,簡(jiǎn)單設(shè)計(jì)形成的設(shè)計(jì)方案往往是不完善的,基于不完善的設(shè)計(jì)方案編寫(xiě)的代碼需要重構(gòu),因此簡(jiǎn)單設(shè)計(jì)需要重構(gòu)的支持。

圖2 極限編程12條實(shí)踐之間的關(guān)聯(lián)關(guān)系

通過(guò)結(jié)對(duì)編程集體擁有代碼才有可能實(shí)現(xiàn),持續(xù)集成支持頻繁發(fā)布,現(xiàn)場(chǎng)客戶和頻繁發(fā)布相互支持,集體擁有代碼支持持續(xù)集成和重構(gòu)。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)、結(jié)對(duì)編程、集體擁有代碼、重構(gòu)都需要代碼規(guī)范的支持。代碼規(guī)范是一個(gè)很寬泛的概念,但是在極限編程中,代碼不規(guī)范將使多個(gè)實(shí)踐受到影響。

通過(guò)這些實(shí)踐相互關(guān)聯(lián)相互呼應(yīng),才可以對(duì)需求變更不采取排斥的態(tài)度,真正做到“擁抱變化”。上述實(shí)踐作為一個(gè)整體形成極限編程方法,某些方法本質(zhì)上不是極限編程特有,比如編程規(guī)范,在任何軟件項(xiàng)目中都應(yīng)該遵循,測(cè)試驅(qū)動(dòng)開(kāi)發(fā)目前已經(jīng)稱(chēng)為流行的軟件開(kāi)發(fā)模式,但是由于這些實(shí)踐之間存在關(guān)聯(lián)關(guān)系,只有這些實(shí)踐的全部或者大部分都在項(xiàng)目中得以應(yīng)用,才能發(fā)揮極限編程的作用。

3 結(jié)語(yǔ)

學(xué)習(xí)和應(yīng)用極限編程,通常從12條實(shí)踐入手,這些實(shí)踐往往可以在軟件開(kāi)發(fā)過(guò)程中獨(dú)立應(yīng)用,但是孤立地應(yīng)用一條或幾條實(shí)踐不能有效地發(fā)揮其作用,這些實(shí)踐相互呼應(yīng),才能實(shí)現(xiàn)擁抱變化的初衷。本文分析了極限編程12條實(shí)踐之間的關(guān)聯(lián)性,有助于讀者在實(shí)際軟件項(xiàng)目開(kāi)發(fā)中更好地學(xué)習(xí)和應(yīng)用極限編程,以提高軟件的質(zhì)量以及開(kāi)發(fā)的效率。

猜你喜歡
開(kāi)發(fā)人員代碼編程
編程,是一種態(tài)度
元征X-431實(shí)測(cè):奔馳發(fā)動(dòng)機(jī)編程
編程小能手
紡織機(jī)上誕生的編程
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
后悔了?教你隱藏開(kāi)發(fā)人員選項(xiàng)