软件工程方法论
軟件工程方法論
什么是軟件工程方法論?
面向元數(shù)據(jù)的方法、面向過程的方法、面向?qū)ο蟮姆椒ê托问交椒?#xff0c;并稱軟件工程中的四大方法,它們共同構(gòu)成了軟件工程方法論。
軟件工程方法論是指在軟件開發(fā)的過程中必須遵循的普遍行為和規(guī)則,包含三要素:方法、工具和過程。
方法是一種使用定義好的技術(shù)集及符號表示組織軟件開發(fā)的過程,是完成軟件開發(fā)各個任務(wù)的技術(shù)方法,回答了“怎樣做”這個問題,它的目標(biāo)是在規(guī)定的時間和成本內(nèi),開發(fā)出符合用回顧需求的高質(zhì)量的軟件;
工具是為了運用方法而提供的自動或半自動的軟件工程支撐環(huán)境;
軟件的誕生和生命周期是一個軟件過程,是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的步驟。
軟件工程方法論有什么用?
通過學(xué)習(xí)軟件工程方法論,學(xué)習(xí)系統(tǒng)的,科學(xué)的理論框架,吸收前人的經(jīng)驗,可以提高我們軟件開發(fā)的速度和質(zhì)量。
軟件過程模型:
在軟件工程中,人們通過建立抽象的軟件開發(fā)模型(也稱軟件過程模型或軟件生命周期模型),把軟件生命周期中的各個活動或步驟安排到一個框架中,將軟件開發(fā)的全過程清晰且直觀地表達(dá)出來。
可以說,軟件開發(fā)模型是軟件工程思想的具體化,它反映了軟件在生命周期中各個階段之間的銜接和過渡關(guān)系,以及軟件開發(fā)的組織方式,是人們在軟件開發(fā)實踐中總結(jié)出來的軟件開發(fā)方法和步驟。
軟件開發(fā)模型有哪些?
1、瀑布模型
? ? ? ? ?是由W.W.Royce在1970年最初提出的軟件開發(fā)模型,瀑布式開發(fā)是一種老舊的計算機(jī)軟件開發(fā)方法。
瀑布模型式是最典型的預(yù)見性的方法,嚴(yán)格遵循預(yù)先計劃的需求分析、設(shè)計、編碼、集成、測試、維護(hù)的步驟順序進(jìn)行。
步驟成果作為衡量進(jìn)度的方法,例如需求規(guī)格,設(shè)計文檔,測試計劃和代碼審閱等等。?
? ? ? ? 瀑布式的主要的問題是它的嚴(yán)格分級導(dǎo)致的自由度降低,項目早期即作出承諾導(dǎo)致對后期需求的變化難以調(diào)整,
代價高昂。瀑布式方法在需求不明并且在項目進(jìn)行過程中可能變化的情況下基本是不可行的。?
2、迭代式開發(fā)
? ? ? ?也被稱作迭代增量式開發(fā)或迭代進(jìn)化式開發(fā),是一種與傳統(tǒng)的瀑布式開發(fā)相反的軟件開發(fā)過程,它彌補(bǔ)了傳統(tǒng)開發(fā)方式中的一些弱點,具有更高的成功率和生產(chǎn)率。
? ? ? ? 什么是迭代式開發(fā)?每次只設(shè)計和實現(xiàn)這個產(chǎn)品的一部分,?逐步逐步完成的方法叫迭代開發(fā),?每次設(shè)計和實現(xiàn)一個階段叫做一個迭代.?
? ? ? ? 在迭代式開發(fā)方法中,整個開發(fā)工作被組織為一系列的短小的、固定長度(如3周)的小項目,被稱為一系列的迭代。
每一次迭代都包括了需求分析、設(shè)計、實現(xiàn)與測試。采用這種方法,開發(fā)工作可以在需求被完整地確定之前啟動,并在一次迭代中完成系統(tǒng)的一部分功能或業(yè)務(wù)邏輯的開發(fā)工作。再通過客戶的反饋來細(xì)化需求,并開始新一輪的迭代。
? ? ? ? ?迭代式開發(fā)的優(yōu)點:
1、降低風(fēng)險
2、得到早期用戶反饋
3、持續(xù)的測試和集成
4、使用變更
5、提高復(fù)用性
3、螺旋開發(fā)
? ? ? ??1988年,巴利·玻姆(Barry Boehm)正式發(fā)表了軟件系統(tǒng)開發(fā)的“螺旋模型”,它將瀑布模型和快速原型模型結(jié)合起來,強(qiáng)調(diào)了其他模型所忽視的風(fēng)險分析,特別適合于大型復(fù)雜的系統(tǒng)。
“螺旋模型”剛開始規(guī)模很小,當(dāng)項目被定義得更好、更穩(wěn)定時,逐漸展開。?
“螺旋模型”的核心就在于您不需要在剛開始的時候就把所有事情都定義的清清楚楚。您輕松上陣,定義最重要的功能,實現(xiàn)它,然后聽取客戶的意見,之后再進(jìn)入到下一個階段。如此不斷輪回重復(fù),直到得到您滿意的最終產(chǎn)品。?
? ? (1)制定計劃:確定軟件目標(biāo),選定實施方案,弄清項目開發(fā)的限制條件;?
(2)風(fēng)險分析:分析評估所選方案,考慮如何識別和消除風(fēng)險;?
(3)實施工程:實施軟件開發(fā)和驗證;?
(4)客戶評估:評價開發(fā)工作,提出修正建議,制定下一步計劃。?
螺旋模型很大程度上是一種風(fēng)險驅(qū)動的方法體系,因為在每個階段之前及經(jīng)常發(fā)生的循環(huán)之前,都必須首先進(jìn)行風(fēng)險評估。
4、敏捷軟件開發(fā)又稱敏捷開發(fā)
? ? ? ??是一種從1990年代開始逐漸引起廣泛關(guān)注的一些新型軟件開發(fā)方法,是一種應(yīng)對快速變化的需求的一種軟件開發(fā)能力。它們的具體名稱、理念、過程、術(shù)語都不 盡相同,相對于“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊與業(yè)務(wù)專家之間的緊密協(xié)作、面對面的溝通(認(rèn)為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織 型的團(tuán)隊、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊組織方法,也更注重軟件開發(fā)中人的作用。
- 人和交互?重于過程和工具。
- 可以工作的軟件?重于求全而完備的文檔。
- 客戶協(xié)作重于合同談判。
- 隨時應(yīng)對變化重于循規(guī)蹈矩。
其中位于右邊的內(nèi)容雖然也有其價值,但是左邊的內(nèi)容最為重要。
人員彼此信任 人少但是精干 可以面對面的溝通
項目的敏捷開發(fā):
敏捷開發(fā)小組主要的工作方式可以歸納為:作為一個整體工作; 按短迭代周期工作; 每次迭代交付一些成果;?
關(guān)注業(yè)務(wù)優(yōu)先級; 檢查與調(diào)整。
最重要的因素恐怕是項目的規(guī)模。規(guī)模增長,面對面的溝通就愈加困難,
因此敏捷方法更適用于較小的隊伍,40、30、20、10人或者更少。
大規(guī)模的敏捷軟件開發(fā)尚處于積極研究的領(lǐng)域。
四者對比區(qū)別:
傳統(tǒng)的瀑布式開發(fā),也就是從需求到設(shè)計,從設(shè)計到編碼,從編碼到測試,從測試到提交大概這樣的流程,要求每一個開發(fā)階段都要做到最好。
特別是前期階段,設(shè)計的越完美,提交后的成本損失就越少。
迭代式開發(fā),不要求每一個階段的任務(wù)做的都是最完美的,而是明明知道還有很多不足的地方,卻偏偏不去完善它,而是把主要功能先搭建起來為目的,以最短的時間,
最少的損失先完成一個“不完美的成果物”直至提交。然后再通過客戶或用戶的反饋信息,在這個“不完美的成果物”上逐步進(jìn)行完善。
螺旋開發(fā),很大程度上是一種風(fēng)險驅(qū)動的方法體系,因為在每個階段之前及經(jīng)常發(fā)生的循環(huán)之前,都必須首先進(jìn)行風(fēng)險評估。
敏捷開發(fā),相比迭代式開發(fā)兩者都強(qiáng)調(diào)在較短的開發(fā)周期提交軟件,但是,敏捷開發(fā)的周期可能更短,并且更加強(qiáng)調(diào)隊伍中的高度協(xié)作。
敏捷方法有時候被誤認(rèn)為是無計劃性和紀(jì)律性的方法,實際上更確切的說法是敏捷方法強(qiáng)調(diào)適應(yīng)性而非預(yù)見性。?
適應(yīng)性的方法集中在快速適應(yīng)現(xiàn)實的變化。當(dāng)項目的需求起了變化,團(tuán)隊?wèi)?yīng)該迅速適應(yīng)。這個團(tuán)隊可能很難確切描述未來將會如何變化.
?
參考:
https://www.cnblogs.com/wangwangfei/p/13591655.html
總結(jié)
- 上一篇: 这是我见过最牛的报表制作神器!比Exce
- 下一篇: 2021年资料员-通用基础(资料员)考试