官术网_书友最值得收藏!

1.9 架構(gòu)與軟件開發(fā)(軟件過程)

架構(gòu)與軟件開發(fā)之間是有聯(lián)系的,架構(gòu)師需要思考系統(tǒng)開發(fā)采用何種架構(gòu)模型與軟件開發(fā)模型。微服務(wù)是當(dāng)前主流的架構(gòu)風(fēng)格之一,敏捷是很流行的軟件開發(fā)模型。

我們先來區(qū)分兩個(gè)概念,軟件開發(fā)方法和軟件開發(fā)模型。這兩個(gè)概念在實(shí)踐中常常被混淆。強(qiáng)調(diào)這兩個(gè)概念是很有必要的。

20世紀(jì)60年代中期爆發(fā)了軟件危機(jī),為了克服這一危機(jī),1968年和1969年連續(xù)召開了兩次著名的NATO會(huì)議,會(huì)議上提出了“軟件工程”這一術(shù)語,之后該術(shù)語不斷發(fā)展、完善。與此同時(shí),軟件研究人員也在不斷探索新的軟件開發(fā)方法。我們常用的軟件開發(fā)方法有Parnas方法、SASD結(jié)構(gòu)化方法、面向?qū)ο蠓椒ǖ取?/p>

軟件開發(fā)模型是指軟件開發(fā)的全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。軟件開發(fā)包括需求、設(shè)計(jì)、編碼和測(cè)試等階段,有時(shí)也包括維護(hù)階段。軟件開發(fā)模型能清晰、直觀地表達(dá)軟件開發(fā)的全過程,明確規(guī)定了要完成的主要活動(dòng)和任務(wù),用來作為軟件項(xiàng)目工作的基礎(chǔ)。

典型的軟件開發(fā)模型有瀑布模型(Waterfall Model)、快速原型模型(Rapid Prototype Model)、增量模型(Incremental Model)、螺旋模型(Spiral Model)、演化模型(Evolution Model)等。

1.9.1 敏捷軟件開發(fā)

敏捷軟件開發(fā)(Agile Software Development),又被稱為敏捷開發(fā),是一種應(yīng)對(duì)快速變化需求的軟件開發(fā)能力。它強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作和面對(duì)面的溝通(認(rèn)為這樣比書面的文檔更有效),頻繁的新的軟件版本交付,緊湊的自我組織型團(tuán)隊(duì),能夠很好地適應(yīng)需求不斷變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重軟件開發(fā)過程中人的作用。敏捷軟件開發(fā)是一種軟件開發(fā)模型,與之對(duì)應(yīng)的是瀑布模型、樣機(jī)模型等,不是面向?qū)ο蠓椒ā⒔Y(jié)構(gòu)化方法等軟件開發(fā)方法。

敏捷軟件開發(fā)開發(fā)離不開迭代。使用迭代法進(jìn)行軟件開發(fā),要考慮迭代次數(shù)與效率。迭代和敏捷都是有適用范圍的,不能用于否定傳統(tǒng)方法。

敏捷不等于快,而是更強(qiáng)調(diào)靈活(flexible)。因此對(duì)于有些術(shù)語,不能只看譯文,還要參考原文。其實(shí),將Agile翻譯成機(jī)敏也許更合適,這樣才能體現(xiàn)“靈活”。對(duì)于不同的項(xiàng)目,要選擇適合的方法,而不是把敏捷軟件開發(fā)作為普適良方。對(duì)于需求明確、規(guī)模較大的項(xiàng)目,也應(yīng)該考慮傳統(tǒng)方法。

敏捷軟件開發(fā)支持不斷變化的業(yè)務(wù)需求,通俗來講就是“小步快走”,與之對(duì)應(yīng)的架構(gòu)要具有適應(yīng)變化的能力。

1.9.2 敏捷軟件開發(fā)與微服務(wù)架構(gòu)

審視敏捷軟件開發(fā)的特點(diǎn),會(huì)發(fā)現(xiàn)其傾向于使用小型、松散耦合的組件/服務(wù),并以協(xié)作方式達(dá)成最終目標(biāo)。這種架構(gòu)風(fēng)格能夠從多種角度帶來敏捷的效果。小型、松耦合的組件/服務(wù)可以獨(dú)立進(jìn)行構(gòu)建、修改與測(cè)試,甚至可以根據(jù)要求的變化進(jìn)行調(diào)整或被替換。這類架構(gòu)還能夠很好地提供高靈活性及適應(yīng)性的部署模式,因?yàn)樾滦徒M件及服務(wù)可以隨時(shí)根據(jù)需求進(jìn)行添加/移除與規(guī)模伸縮。

一個(gè)微服務(wù)一般會(huì)完成某個(gè)特定的功能,比如訂單管理、客戶管理等。每個(gè)微服務(wù)都是一個(gè)微型應(yīng)用,包括商業(yè)邏輯和各種接口。有的微服務(wù)通過暴露API被別的微服務(wù)或者應(yīng)用客戶端所使用,有的微服務(wù)則通過網(wǎng)頁UI實(shí)現(xiàn)。在運(yùn)行時(shí),每個(gè)實(shí)例通常是一個(gè)云虛擬機(jī)或者Docker容器。

可見,敏捷軟件開發(fā)和微服務(wù)架構(gòu)有異曲同工之處。微服務(wù)架構(gòu)讓敏捷軟件開發(fā)和復(fù)雜的企業(yè)應(yīng)用交付成為可能[12]

敏捷軟件開發(fā)與微服務(wù)架構(gòu)圍繞著同一類目標(biāo)存在[13]:在盡可能滿足客戶需求的同時(shí),維持良好的軟件質(zhì)量與系統(tǒng)可用性。

主站蜘蛛池模板: 左贡县| 隆化县| 丹凤县| 平谷区| 弥渡县| 灌南县| 红河县| 安平县| 芜湖市| 兴化市| 通榆县| 嘉鱼县| 黔南| 富裕县| 镇江市| 乾安县| 扬州市| 视频| 栾城县| 遵义市| 讷河市| 酒泉市| 犍为县| 舒城县| 宾川县| 涟水县| 衡水市| 陇川县| 杭锦旗| 隆林| 烟台市| 三都| 通城县| 西贡区| 余江县| 宁河县| 汉寿县| 黑河市| 文山县| 绥棱县| 长沙市|