九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
敏捷軟件開發(fā)與傳統(tǒng)軟件工程——因果篇

因——差異之源

近來秋將盡,京中陰霾好幾日不見好轉(zhuǎn),更有幾天雨水擾人心煩。幸得一日周末,又逢雨過天晴,秋高氣爽,撿得幾番文筆來細述敏捷軟件開發(fā)與傳統(tǒng)軟件工程之異同。

從字面看來,二者無非是“敏捷”與“傳統(tǒng)”一詞之差。然而這兩個詞又同屬修飾之詞,因此就這兩個詞之差自然就是兩種開發(fā)方法的差別所在。

敏捷一詞,自然是好理解。正如眾人所云如游俠身手之敏捷,為稱贊游俠反映之迅速,應對變化之機敏。此處用以修飾軟件開發(fā),我們亦可套用迅速應變之意,也就是在軟件開發(fā)過程中能迅速應對需求的改變。至于傳統(tǒng),傳統(tǒng)一詞有許多注解,佛語曰:色不異空,空不異色。萬物并非本來實有,因緣所生。如今要用到此道理來解釋傳統(tǒng)。這里傳統(tǒng)與敏捷結(jié)緣,自然用敏捷的反面來解釋傳統(tǒng)最為恰當。于是,傳統(tǒng)就解釋為對變化應變遲緩之意。

正所謂大道至簡,方才所述為敏捷與傳統(tǒng)字面詞意的區(qū)別,而這種區(qū)別正是敏捷軟件開發(fā)與傳統(tǒng)軟件開發(fā)的區(qū)別根源所在。以下所述的具體差異,皆因此而生。為求思慮周全,僅用簡單羅列對比加以詳述其中的異同。

果——細述差異

僅對敏捷傳統(tǒng)二者詞義進行詞義進行分析,語言略顯蒼白,不能通達其中的深邃大義。在此對他們定義進行詳細說明。

所謂敏捷開發(fā),是以客戶需要之變化為根本,用迭代、循序漸進的方法進行軟件開發(fā)。如何以用戶為根本,只能讓客戶常久持續(xù)地參與在軟件開發(fā)過程之中。然而客戶在開發(fā)方面毫無認識,又如何讓客戶參與進來?就只能給客戶看成果,提意見了。為了能讓客戶看成果,軟件開發(fā)過程中就得保證軟件是隨時可以運行進來的。敏捷開發(fā)有12條原則:

其一,遲早交軟件,持續(xù)交軟件,使客戶滿意。

其二,歡迎變更,即使在后期。

其三,交付頻率短越好。

其四,業(yè)務人員和開發(fā)人員天天一起工作。

其五,開發(fā)人員個人提供支持,并給予信任。

其六,面對面交談。

其七,把可運行軟件作為進度的首要度量標準。

其八,開發(fā)速度持續(xù)穩(wěn)定。

其九,關(guān)注優(yōu)秀技能和設計。

其十,簡單。

其十一,最好的架構(gòu)、需求和設計出自于自組織團隊。

其十二,團隊定期反省。

至于傳統(tǒng)軟件工程,大體基于“瀑布模型”,瀑布式開發(fā)是一種傳統(tǒng)的計算機軟件開發(fā),之所以叫瀑布,自然有李白描述的“飛流直下三千尺”的氣勢,不過這里指的是一去不回頭的勢頭。它是最典型的預見性軟件開發(fā)方法,嚴格遵守計劃、分析、設計、編碼、測試、維護的步驟。相比于敏捷軟件開發(fā),傳統(tǒng)式的似乎不把重點放在客戶上,而是以軟件架構(gòu)(software architecture)為核心。

實例差異:

敏捷開發(fā)實例包括極限編程(extreme programming,XP)、自適應軟件開發(fā)(adaptive software development,ASD)、Crystal、Scrum、特性驅(qū)動編程(feature-driven development,FDD)。它是一個標準的,定義良好的,組織持續(xù)改進的過程。其中極限編程是敏捷開心使用最廣泛的方法。

傳統(tǒng)軟件工程模型包括包括瀑布模型、增量模型、螺旋模型、快速原型模型、噴泉模型等。它們的共同點是項目需要的細節(jié)是在開發(fā)之前給出的,開發(fā)過程客戶不會參與,而開發(fā)團隊會在項目開發(fā)完整后一并交給客戶。他們的一般流程是分析、設計、開發(fā)、測試、實施、維護,整個過程沒有客戶的參與。或者也可以劃分為下面幾個階段:問題定義、可行性研究,需求分析、總體設計、詳細設計、編碼與單元測試、綜合測試、軟件維護。各個階段的工作自頂向下,從抽象到具體順序進行,每個階段都必須完成規(guī)定的文檔,只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結(jié)果。

這里說到模型,就有必要給模型作一些解釋。這里的模型指軟件開發(fā)過程模型,過程模型描述了軟件工程工作中遇到的過程相關(guān)的問題,明確了問題環(huán)境并給出了針對該問題的解決方案。

方法的應用:

1、主要目標:敏捷開發(fā)的目標是以最好的形式適應變更,最大程度地讓程序符合客戶的需要。盡量縮短可運行軟件提交的周期,提高軟件提交的頻率,來獲得更多的來自客戶的反饋。

傳統(tǒng)開發(fā)的目標則是在開發(fā)前使與客戶進行充分交流,提高軟件開發(fā)的可預見性、穩(wěn)定性和可靠性。

2、規(guī)模:由于常變和相對較低的可靠性,敏捷開發(fā)不太適用于大規(guī)模軟件的開發(fā)。什么叫大規(guī)模這里不能給出較為嚴格的定義??梢韵胂螅斠?guī)模達到一定程序時,一開始不做好詳細而細致的規(guī)劃設計是不切實際的。

3、環(huán)境:就應用的環(huán)境來說,敏捷開發(fā)也適用于變更頻繁的環(huán)境,而傳統(tǒng)的軟件開發(fā)則更睛睞于穩(wěn)定的,變化小的情況。

開發(fā)過程管理:

1、客戶關(guān)系:這兩種開發(fā)方法都怎么處理好開發(fā)團隊跟客戶的關(guān)系呢?敏捷開發(fā)的根本是用戶需要,而且在開發(fā)過程中,客戶會跟開發(fā)人員在進行頻繁的交流溝通,另外還有可運行的中間成果給客戶展示,這些都足以用來取得客戶對開發(fā)團隊的信任和支持。而傳統(tǒng)的軟件開發(fā)模式則不同,它只依賴于合同和規(guī)格說明,他們沒中間成果給用戶展示,開發(fā)過程也沒有太多的交流,整個開發(fā)過程客戶必須有耐心等待最終產(chǎn)品完成。而在這過程中,開發(fā)團隊只能憑靠過程的熟練程度來取得客戶的信任。

2、開發(fā)計劃的控制:敏捷開發(fā)一開始沒有制訂具體的開發(fā)計劃,計劃只能是持續(xù)地給用戶提交中間產(chǎn)品,并吸取客戶意見再持續(xù)改進。而傳統(tǒng)軟件開發(fā)則需要制訂詳細的開發(fā)計劃,開發(fā)人員按計劃一個階段一個階段地完成開發(fā),并按計劃與客戶進行有效的溝通和協(xié)調(diào)。

3、項目的溝通:敏捷開發(fā)依賴于頻繁的開發(fā)人員和客戶之間的溝通,雖然溝通很頻繁,但是客戶對開發(fā)工作內(nèi)部知識可謂是毫不知情的。這樣的客戶一般都是提一些很模糊的要求,并不能對開發(fā)人員用什么方式去開發(fā)提供意見,更不能對軟件的內(nèi)部結(jié)構(gòu)進行詳細地說明,這樣難免會存在風險。而傳統(tǒng)的開發(fā)則是依賴于文檔開發(fā),文檔化的知識具有明確性,但是不同的人理解起來就不太一樣,這樣沒有與客戶充分交流,同樣也存在風險。

技術(shù):

1、軟件需求:敏捷軟件開發(fā)的需求不需要很正式,也不需要很明確,甚至沒有正規(guī)的文檔說明,而只是憑著客戶提出的一些模糊的設想去進行開發(fā),在開發(fā)過程中再去對需求進行進一步的細化。而傳統(tǒng)的開發(fā)則更傾向于明確的、詳細的、形式化的開發(fā)需求,而且開發(fā)過程一般不怎么去修改需求。

2、開發(fā):敏捷軟件開發(fā)對設計的偏好是簡單。簡單的設計能以更低的成本進行改寫和快速地響應需要的變化。傳統(tǒng)開發(fā)則更側(cè)重于完善細致地設計,這樣能增強開發(fā)過程的可靠性。

3、測試:敏捷開發(fā)在開發(fā)之前進行開發(fā)測試,并在開發(fā)過程中進行不斷地測試,而傳統(tǒng)開發(fā)的測試是對規(guī)格說明進行測試。

以上從各方面對二者進行了對比,但在總覺缺少點什么。正如放翁一句“紙上得來終覺淺,絕知此事要躬行”,可審察今日這勢態(tài),要把兩種方法都嘗試過是不切實際的了,只好另求它法。于是想到再把二者的典型方法加以介紹,想來也能寫到位了。

瀑布模型:

瀑布,以一氣呵成之態(tài)勢示人,此處用心修飾軟件開發(fā)的一種模型,自然是一種順序型。瀑布型屬于傳統(tǒng)的軟件開發(fā)模型,有人稱之為經(jīng)典生命周期,它提出了一個系統(tǒng)的順序的軟件開發(fā)方法,從用戶需求規(guī)格說明開始,通過計劃、建模、構(gòu)建和部屬的過程終能得到一個完整的軟件并提供持續(xù)的技術(shù)支持。瀑布模型有最早的軟件工程范例之稱,然時過境遷,“江山代有才人出”,老的方法終會為現(xiàn)代人質(zhì)疑其有效性,在新的方法出現(xiàn)后不免被拿來與新方法做對比。由于它屬于傳統(tǒng)模型,自然有著傳統(tǒng)模型的缺點。這些缺點無非是從上文中尋來,在此再做簡單例舉。比如線性模型不可迭代性,不能確實客戶需求的模糊描述,客戶必須有耐心等待產(chǎn)品最終才能產(chǎn)生。

極限編程:

極限編程是敏捷開發(fā)使用最廣泛的一個方法。極限編程強調(diào)用戶和開發(fā)者進行緊密的非正式的合作。此外,為了做到簡明,極限編程提倡開發(fā)者只對即時需求做設計,而不考慮長遠需求。這樣能讓代碼設計簡單化,方便以后變更甚至重構(gòu)。在極限編程過程中得到有效的反饋來處于軟件本身、客戶和軟件開發(fā)者。

極限編程可分為以下四個活動,而這四個活動是順循環(huán)執(zhí)行地,重點在于循環(huán)。

策劃:了解客戶的初步需求,為軟件各功能設置權(quán)值也就是優(yōu)先級。計算成本,分配工作。

設計:設計追求簡單。為軟件功能設計實現(xiàn)原則,不鼓勵額外功能。

編碼:不直接開始寫代碼,而是先開發(fā)一系列用于測試本次開發(fā)功能的測試代碼。

測試:編碼前先寫好測試代碼是極限編程方法的關(guān)鍵因素。所建立的單元測試應當使用一個可以自動實施的框架。

文終處天色已晚。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
敏捷開發(fā)方法學及應用
從瀑布模型、極限編程到敏捷開發(fā)
傳統(tǒng)開發(fā)模型vs敏捷開發(fā)模型——過程模型的變革
極限編程與敏捷開發(fā)
談談在V模型流程中引入敏捷開發(fā)
軟件開發(fā)方法之極限編程(xp)
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服