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

?

對(duì)軟件開發(fā)模式變遷的研究

2019-09-10 07:22梁惠惠
現(xiàn)代信息科技 2019年22期
關(guān)鍵詞:開發(fā)模式

摘? 要:自20世紀(jì)60年代軟件危機(jī)爆發(fā)以來(lái),為了應(yīng)對(duì)軟件開發(fā)面臨的本質(zhì)性困難,軟件開發(fā)的過程和方法不斷變化以適配不同的軟件開發(fā)形態(tài),形成了各類軟件開發(fā)模式。隨著互聯(lián)網(wǎng)的應(yīng)用和發(fā)展,傳統(tǒng)的軟件開發(fā)模式在應(yīng)對(duì)顯著提升的軟件規(guī)模和復(fù)雜性方面遇到了很大挑戰(zhàn)。基于互聯(lián)網(wǎng)群體智能的軟件開發(fā)模式逐漸形成。本文通過分析影響軟件開發(fā)模式變遷的關(guān)鍵因素,探討在當(dāng)前互聯(lián)網(wǎng)深度應(yīng)用的情形下,軟件開發(fā)模式的變遷趨勢(shì)。

關(guān)鍵詞:開發(fā)模式;敏捷;迭代;DevOps;群體智能

中圖分類號(hào):TP311.5? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)22-0001-05

Abstract:Since the outbreak of the software crisis in the 1960s,in order to cope with the essential difficulties faced by software development,the process and methods of software development have been constantly changing to adapt to different software development forms,forming various software development modes. With the application and development of the internet,traditional software development modes have encountered great challenges in dealing with significantly increased software scale and complexity. A software development mode based on internet collective intelligence has gradually formed. By analyzing the key factors affecting the changes of software development mode,this paper discusses the trend of software development mode in the current situation of deep internet application.

Keywords:development mode;agile;iterative;DevOps;collective intelligence

0? 引? 言

20世紀(jì)60年代軟件危機(jī)爆發(fā),催生了軟件工程以及早期的瀑布開發(fā)模型;20世紀(jì)90年代,IPD(Integrated Product Development)作為完善的產(chǎn)品開發(fā)模式、理念和方法被一些業(yè)界公司紛紛采用以提高產(chǎn)品開發(fā)效率、縮短產(chǎn)品投放市場(chǎng)的時(shí)間。進(jìn)入21世紀(jì),隨著互聯(lián)網(wǎng)的興起,為了應(yīng)對(duì)客戶需求的快速變化,敏捷和迭代模式開始大行其道。過去的十年間,隨著移動(dòng)網(wǎng)絡(luò)、社交媒體、云計(jì)算、大數(shù)據(jù)、AI的快速發(fā)展和深度應(yīng)用,顛覆式創(chuàng)新和跨界競(jìng)爭(zhēng)加劇,為了快速應(yīng)對(duì)變化,輕資產(chǎn)運(yùn)行和智能高效的研發(fā)平臺(tái)是關(guān)鍵,DevOps便應(yīng)運(yùn)而生。而當(dāng)下,在移動(dòng)互聯(lián)、虛擬網(wǎng)絡(luò)的大背景下,在大數(shù)據(jù)、AI、云計(jì)算等技術(shù)的加持下,群體智能作用下的軟件開發(fā)模式亦越來(lái)越受到重視。

不論是瀑布開發(fā)模型,還是敏捷、迭代或者DevOps(Development Operations),或是群體智能軟件開發(fā)模式,雖然在一定程度上可以緩解或者解決軟件開發(fā)面臨的問題,但是隨著軟件開發(fā)的規(guī)模迅速擴(kuò)大,復(fù)雜性急劇增加,人們?cè)谔幚韱栴}時(shí)依然受到人類智能的局限。隨著先進(jìn)的軟件組織方式、開發(fā)方法和工具的涌現(xiàn),軟件開發(fā)的能力和效率不斷提高,但新的、更復(fù)雜的問題隨之而來(lái):不斷變遷的各類軟件開發(fā)模式,如何適配不同類型的軟件開發(fā)項(xiàng)目,應(yīng)對(duì)和解決軟件開發(fā)面臨的本質(zhì)性困難。本文重在探討影響軟件開發(fā)模式變遷的關(guān)鍵因素,以及在當(dāng)前互聯(lián)網(wǎng)深度應(yīng)用、大數(shù)據(jù)信息爆炸等情形下,是否有適配的新型軟件開發(fā)模式。

1? 軟件開發(fā)模式

模式是事物的標(biāo)準(zhǔn)樣式,可看作是解決某一類問題的方法論的基礎(chǔ)。將某類問題的解決方法歸納、抽象到理論高度,即為模式。遵循模式有助于指導(dǎo)不同的人員做出優(yōu)良的設(shè)計(jì)方案,取得好的效果并獲得解決問題的最佳辦法。

軟件開發(fā)模式可以認(rèn)為是軟件開發(fā)方法+一系列的軟件開發(fā)過程。

1.1? 軟件開發(fā)方法

軟件開發(fā)的方法有很多方面的意義。狹義來(lái)看,軟件開發(fā)方法是指在項(xiàng)目管理、分析、設(shè)計(jì)、程序的編寫、測(cè)試和質(zhì)量控制等軟件開發(fā)的階段或活動(dòng)中,為達(dá)到某個(gè)目標(biāo)而采取的途徑、步驟、手段等,如常見的有結(jié)構(gòu)化、面向?qū)ο蟮确治龌蛟O(shè)計(jì)方法。廣義來(lái)看,軟件開發(fā)方法大致可分為重量級(jí)和輕量級(jí)兩種。常見的重量級(jí)開發(fā)方法包括ISO9000、CMM(Capability Maturity Model for Software)以及RUP(Rational Unified Process)等。在應(yīng)用重量級(jí)方法的軟件組織中,開發(fā)人員需要在軟件開發(fā)的一系列階段活動(dòng)中不斷撰寫很多配套的軟件開發(fā)文檔,以滿足流程的符合度要求。常見的輕量級(jí)開發(fā)方法包括XP(Extreme Programming)和敏捷流程等。輕量級(jí)的開發(fā)方法講求開發(fā)過程的“短平快”,尤其是快速交付,鮮有對(duì)大量正式文檔的要求,反而強(qiáng)調(diào)面對(duì)面的溝通勝過面面俱到的文檔。截至目前,重量級(jí)方法和輕量級(jí)方法孰優(yōu)孰劣,依然存在很多爭(zhēng)論。一些方法論者認(rèn)為在開發(fā)中應(yīng)當(dāng)嚴(yán)格遵循并且實(shí)施這些方法;另外一些人認(rèn)為他們所在的軟件開發(fā)組織并不具有實(shí)施這些方法的條件。實(shí)際上,采用何種方法開發(fā)軟件取決于很多因素,各開發(fā)組織只能根據(jù)組織的現(xiàn)狀選擇適配自己的軟件開發(fā)方法。

1.2? 軟件開發(fā)過程

軟件開發(fā)過程或軟件過程,又稱軟件開發(fā)生命周期,其包括軟件的需求定義與分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、交付和維護(hù)等幾個(gè)階段。軟件過程為軟件的開發(fā)定義了一個(gè)框架,該框架創(chuàng)建了一個(gè)環(huán)境,將軟件開發(fā)方法、自動(dòng)化工具和質(zhì)量管理等緊密結(jié)合在一起,方便采用最新的技術(shù)和方法、生成各種工作產(chǎn)品(模型、文檔、報(bào)告、表格等)、進(jìn)行產(chǎn)品管理和軟件項(xiàng)目管理,等等。在軟件工程的范疇里,軟件開發(fā)過程更多體現(xiàn)的是軟件生命周期,適配不同軟件形態(tài)和軟件開發(fā)方法的軟件生命周期則被總結(jié)抽象為不同類型的軟件生命周期模型,如早期的瀑布模型、螺旋模型,以及近些年開始興起的敏捷和DevOps,一系列的軟件開發(fā)過程模型和軟件生命周期模型被總結(jié)抽象固化下來(lái)。

敏捷的價(jià)值體現(xiàn)在:及時(shí)響應(yīng)需求變化,強(qiáng)調(diào)開發(fā)個(gè)體之間以及開發(fā)與客戶之間的交互,快速交付可以工作的軟件而不是面面俱到的文檔[1]。DevOps的價(jià)值體現(xiàn)在:維護(hù)與開發(fā)統(tǒng)一節(jié)奏,將開發(fā)交付的軟件或版本及時(shí)部署獲得回報(bào)。敏捷側(cè)重于開發(fā)與客戶間的配合,DevOps則注重開發(fā)與運(yùn)維間的無(wú)縫銜接。二者的結(jié)合非常適用于當(dāng)今的互聯(lián)網(wǎng)企業(yè):以客戶需求為導(dǎo)向,強(qiáng)調(diào)開發(fā)過程中端到端的協(xié)作,消除開發(fā)、測(cè)試、運(yùn)維之間的部門墻,降低內(nèi)耗,降低成本,快速回報(bào)[2]。

不論是敏捷還是DevOps,其優(yōu)點(diǎn)是輕量級(jí)、快速響應(yīng)需求變化、快速交付,但是不夠系統(tǒng)。而傳統(tǒng)瀑布型開發(fā)模型的優(yōu)點(diǎn)在于系統(tǒng)性和可預(yù)見性,系統(tǒng)性導(dǎo)致了其重量級(jí)開發(fā)方式,過程中需要輸出大量文檔。這樣固定的流程式開發(fā),帶來(lái)的一個(gè)很大缺點(diǎn)即是難以快速響應(yīng)多變的客戶需求。有效的做法是將具有系統(tǒng)性和預(yù)見性的軟件架構(gòu)部件化,并嵌套到敏捷開發(fā)的每次輕量級(jí)的迭代中,使軟件工程兼具軟件架構(gòu)的預(yù)見性和敏捷開發(fā)的適應(yīng)性,根據(jù)項(xiàng)目的大小來(lái)調(diào)整嵌套的程度,根據(jù)每次迭代項(xiàng)目的大小來(lái)選擇不同的架構(gòu),實(shí)現(xiàn)敏捷開發(fā)與軟件架構(gòu)融合的雙贏。

軟件是智力密集型創(chuàng)新團(tuán)隊(duì)中個(gè)體認(rèn)知過程的直接產(chǎn)品,因此,許多用于軟件過程管理的方法和技術(shù)旨在促進(jìn)從事密切合作、智力密集型工作的組織成員之間的溝通和協(xié)調(diào)。尤其在當(dāng)前越來(lái)越多的互聯(lián)網(wǎng)應(yīng)用和服務(wù)情形下,互聯(lián)網(wǎng)開發(fā)模式,是針對(duì)互聯(lián)網(wǎng)本質(zhì)上是一個(gè)“服務(wù)”而發(fā)展起來(lái)的。因?yàn)槭欠?wù)而不是產(chǎn)品,所以該服務(wù)最高的技術(shù)標(biāo)準(zhǔn)和評(píng)價(jià)標(biāo)準(zhǔn)是應(yīng)對(duì)快速變化的能力。因此,在互聯(lián)網(wǎng)開發(fā)模式下,開發(fā)人員更傾向于采用自動(dòng)化的開發(fā)工具和方法來(lái)提高效率,如自動(dòng)化測(cè)試、構(gòu)建、集成、部署等;重視原型迭代,并且將開發(fā)和運(yùn)營(yíng)視為一個(gè)整體,不斷完善互聯(lián)網(wǎng)服務(wù),讓開發(fā)和運(yùn)維在同一個(gè)生命周期里生長(zhǎng)。這就是為何敏捷、DevOps等在互聯(lián)網(wǎng)模式下更受歡迎的原因。

即便如此,我們依然關(guān)注到,由于軟件所具有的復(fù)雜性、易變性、不可見性等特點(diǎn),使得軟件開發(fā)面臨各種各樣的困難。諸如,軟件是一種無(wú)形的可塑的產(chǎn)品,在大多數(shù)情況下,軟件開發(fā)團(tuán)隊(duì)需要生成和修改共享文檔,而軟件開發(fā)往往是作為一個(gè)學(xué)習(xí)的過程,知識(shí)的獲得和信息的形成是在項(xiàng)目中進(jìn)行的,因此,需要關(guān)注軟件開發(fā)組織的有效性。又如,軟件產(chǎn)品的復(fù)雜性,使得軟件需求隨著產(chǎn)品需求范圍、知識(shí)的獲得而改變;軟件開發(fā)人員使用的過程、方法和工具也在持續(xù)不斷地更新。再如,軟件的無(wú)形性,使得目標(biāo)量化和軟件質(zhì)量度量非常困難[3]。

2? 影響軟件開發(fā)模式變遷的關(guān)鍵要素

正如上述提到的,因?yàn)檐浖_發(fā)具有本質(zhì)性的困難,導(dǎo)致軟件開發(fā)模式也在不斷地適應(yīng)軟件發(fā)展不同階段、不同情境下的需要。軟件開發(fā)模式可看作是人們改造世界的一種方式,是結(jié)合軟件開發(fā)方法和軟件開發(fā)過程來(lái)開發(fā)提高人們生產(chǎn)效率的軟件系統(tǒng)的一種模式。那么,隨著人類社會(huì)的不斷進(jìn)步和發(fā)展,軟件開發(fā)模式的變遷受到了哪些因素的影響,要回答這個(gè)問題,需要回顧生產(chǎn)力的概念。

恩格斯認(rèn)為,生產(chǎn)力是具有生產(chǎn)經(jīng)驗(yàn)與勞動(dòng)能力的人利用生產(chǎn)工具改造自然而形成的能力。構(gòu)成生產(chǎn)力的基本要素是:勞動(dòng)者、勞動(dòng)資料和勞動(dòng)對(duì)象。勞動(dòng)資料主要以生產(chǎn)工具為主;勞動(dòng)對(duì)象是指勞動(dòng)者在勞動(dòng)過程中使用勞動(dòng)工具所加工的一切對(duì)象。由上述定義,我們知道,軟件開發(fā)可作為一種生產(chǎn)力,它涉及到三個(gè)要素:

(1)以生產(chǎn)工具為主的勞動(dòng)資料,可以認(rèn)為是軟件開發(fā)所需的技術(shù)和工具等;

(2)勞動(dòng)對(duì)象,即軟件產(chǎn)品和服務(wù);

(3)勞動(dòng)者,即開發(fā)主體——人。

由此可見,拋開軟件產(chǎn)品不談,軟件開發(fā)模式的變遷,主要受人的要素以及技術(shù)和工具的要素影響。鑒于軟件是智力密集型創(chuàng)新團(tuán)隊(duì)中個(gè)體認(rèn)知過程的直接產(chǎn)品,我們重點(diǎn)探討人的要素中軟件開發(fā)組織方式不同對(duì)軟件開發(fā)的影響。尤其是在目前軟件開發(fā)規(guī)模越來(lái)越大,互聯(lián)網(wǎng)協(xié)同要求越來(lái)越高的情形下,軟件開發(fā)組織的組織方式變得尤為重要。

綜上所述,我們認(rèn)為,軟件開發(fā)模式的變遷,主要受以下三個(gè)關(guān)鍵要素的影響:

(1)組織方式;

(2)技術(shù)和工具;

(3)虛擬社會(huì)。

下面本文分別闡述這三種要素在軟件開發(fā)模式中的所發(fā)揮的作用及其演化過程。

2.1? 軟件開發(fā)組織方式的演化

軟件開發(fā)組織方式,涉及軟件開發(fā)組織結(jié)構(gòu)或者項(xiàng)目治理,業(yè)內(nèi)一般有垂直型、水平型和混合型的組織結(jié)構(gòu)。本文重點(diǎn)分析這些組織結(jié)構(gòu)背后隱藏的社會(huì)性或商業(yè)性因素。

分析軟件開發(fā)的歷史和現(xiàn)狀,可將軟件開發(fā)概括為三個(gè)階段:小作坊式軟件開發(fā)、工業(yè)化軟件開發(fā)、社會(huì)化軟件開發(fā)[4]。簡(jiǎn)單來(lái)說,三個(gè)階段的發(fā)展歷程可概括為:從單打獨(dú)斗的小作坊式原始軟件開發(fā),演化為流程化、系統(tǒng)化的工業(yè)化軟件開發(fā)。隨著Web2.0的普及、開源軟件以及虛擬社區(qū)的興起,軟件開發(fā)又演化為去中心化的社會(huì)化軟件開發(fā)。在這三個(gè)階段的發(fā)展過程中,軟件開發(fā)組織方式的演化,遵循了人類社會(huì)和商業(yè)組織的演化模式,即,從去中心化,到中心化,再回到去中心化。

隨著軟件規(guī)模和復(fù)雜性的不斷增加,集中式的軟件項(xiàng)目管理以及單純地增加團(tuán)隊(duì)的規(guī)模并不會(huì)相應(yīng)提升軟件開發(fā)的效率和質(zhì)量。尤其是隨著互聯(lián)網(wǎng)的快速發(fā)展,軟件的規(guī)模和復(fù)雜度越來(lái)越高;軟件開發(fā)越來(lái)越要求開放、分布、共享和協(xié)同;軟件運(yùn)行環(huán)境越來(lái)越開放、動(dòng)態(tài)且多樣化。上述變化,促使人們尋找能夠匹配大規(guī)模軟件開發(fā)的新軟件開發(fā)組織方式。群體智能提供了一種解決問題的新模式。其背后的邏輯是:通過匯聚群體的智慧,產(chǎn)生一種超越個(gè)人智慧的更高層次的智能,這種大規(guī)模的人類群體協(xié)同能夠有效應(yīng)對(duì)軟件開發(fā)的本質(zhì)性困難。

2.2? 技術(shù)的演化

軟件開發(fā)技術(shù)包括:軟件開發(fā)方法學(xué)、工具和環(huán)境等,其主體是軟件開發(fā)方法學(xué)。軟件開發(fā)方法學(xué)是對(duì)軟件開發(fā)中應(yīng)遵循的策略、原則、步驟以及相應(yīng)的輸出作出約定,從而規(guī)范化、工程化軟件開發(fā)過程。軟件開發(fā)環(huán)境則是方法、工具的有機(jī)組合。

縱觀軟件開發(fā)技術(shù)的發(fā)展,可歸納為五個(gè)階段:

(1)機(jī)器語(yǔ)言階段;

(2)匯編語(yǔ)言階段;

(3)高級(jí)程序設(shè)計(jì)語(yǔ)言階段;

(4)軟件開發(fā)工具階段;

(5)組件化與服務(wù)化階段。

各個(gè)階段依次用機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)程序設(shè)計(jì)語(yǔ)言、軟件開發(fā)框架與工具以及流程編排容器來(lái)開發(fā)軟件。

2.2.1? 機(jī)器語(yǔ)言

是用二進(jìn)制代碼表示的一種機(jī)器指令的集合,其能夠被CPU直接識(shí)別和執(zhí)行。不同的計(jì)算機(jī)都有各自的機(jī)器語(yǔ)言,即指令系統(tǒng)。從使用的角度看,機(jī)器語(yǔ)言是最低級(jí)的語(yǔ)言。

2.2.2? 匯編語(yǔ)言

使用CPU指令型語(yǔ)言進(jìn)行編程來(lái)表達(dá)業(yè)務(wù)邏輯。使用匯編語(yǔ)言編程,編程人員需要理解大量計(jì)算機(jī)底層的特性,難度大,成本高。

2.2.3? 高級(jí)程序設(shè)計(jì)語(yǔ)言

使用面向過程的語(yǔ)言表達(dá)業(yè)務(wù)邏輯。主流的面向過程的范式有順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。高級(jí)程序設(shè)計(jì)在一定程度上提升了軟件開發(fā)的效率,但是對(duì)軟件的復(fù)雜度依然缺乏控制,不利于大型軟件的開發(fā)。

2.2.4? 軟件開發(fā)工具

采用各種框架和技術(shù)來(lái)開發(fā)軟件??蚣芗夹g(shù)采用面向?qū)ο蟮哪K化思維來(lái)表達(dá)業(yè)務(wù)邏輯,它更接近人類認(rèn)知世界的方法。這一時(shí)期也催生出許多程序框架和工具用以簡(jiǎn)化軟件生命周期的各個(gè)流程,如Spring框架、Maven構(gòu)建工具、Git版本控制工具、IDE集成開發(fā)環(huán)境等。采用框架技術(shù)的軟件尚不不具備彈性伸縮的能力,只能依靠升級(jí)硬件的配置來(lái)擴(kuò)展服務(wù)能力。

2.2.5? 組件化與服務(wù)化

該方式利用分布式的思想實(shí)現(xiàn)軟件的組件化和服務(wù)化,能夠提高軟件的復(fù)用性和服務(wù)能力。但面臨的一個(gè)問題是,普通開發(fā)人員如何基于組件構(gòu)建出大型應(yīng)用程序。理想的狀況應(yīng)當(dāng)是可視化、自動(dòng)化、傻瓜化,開發(fā)人員能夠基于業(yè)務(wù)流程,在可視化界面上,通過拖拽從資料庫(kù)中獲取各種組件,從而生成可運(yùn)行的業(yè)務(wù)流程甚至應(yīng)用。當(dāng)前流行的容器化和編排技術(shù),促進(jìn)了組件化和服務(wù)化軟件的開發(fā)模式形成,大大降低了構(gòu)建大型應(yīng)用軟件的成本。尤其是在云計(jì)算環(huán)境中,軟件開發(fā)人員可從云環(huán)境獲取云組件,在本地或云提供的虛擬機(jī)上組合裝配完成業(yè)務(wù)流程或應(yīng)用,然后從云存儲(chǔ)服務(wù)器動(dòng)態(tài)加載與提取數(shù)據(jù),形成一種基于云計(jì)算的軟件架構(gòu)[5]。

在傳統(tǒng)的軟件開發(fā)中,軟件開發(fā)技術(shù)的應(yīng)用更多體現(xiàn)的是人的智力以及人的智力在機(jī)器上的應(yīng)用結(jié)果。在互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的大環(huán)境下,萬(wàn)物互聯(lián),包括人與人、人與機(jī)器、機(jī)器與機(jī)器之間的互聯(lián),軟件開發(fā)技術(shù)需要考慮如何充分利用人的智力以及機(jī)器的“智能”。互聯(lián)網(wǎng)可以為人們提供大量潛在的資源(諸如各類群體用戶及信息)和服務(wù)[6]。

2.3? 虛擬社會(huì)尤其是互聯(lián)網(wǎng)群體智能的崛起

2.3.1? 群體

群體與個(gè)體相對(duì),是個(gè)體的共同體。不同個(gè)體按某種特征相結(jié)合,為了共同的目標(biāo)而彼此互動(dòng)、相互協(xié)作,就形成了群體。群體具有幾個(gè)特征:目標(biāo)性、群體意識(shí)、協(xié)作性和歸屬感。

2.3.2? 群體智能

定義1:群體智能是指群體集合所具有的優(yōu)于個(gè)體或個(gè)體總和的智慧與能力[7]。傳統(tǒng)的群體智能最早是針對(duì)生物界智能體的集合,如蜂群、蟻群、鳥群和人類社會(huì)等。這些群體基于自身經(jīng)驗(yàn)的簡(jiǎn)單法則發(fā)揮“1+1>2”的功效,為人類提供了解決復(fù)雜問題的策略[8]。此類群體智能在集體層面表現(xiàn)出分散的、去中心化的自組織行為。

定義2:除了個(gè)人智能的限制之外,群體智能來(lái)自大量自主個(gè)體的集體智能效應(yīng),他們被激勵(lì)在某個(gè)基于互聯(lián)網(wǎng)的組織結(jié)構(gòu)下執(zhí)行具有挑戰(zhàn)性的計(jì)算任務(wù)[9]。該定義有兩層含義,一是群體智能來(lái)自基于互聯(lián)網(wǎng)的在線社區(qū)或平臺(tái)上的大量個(gè)人,強(qiáng)調(diào)互聯(lián)網(wǎng)在群體智能涌現(xiàn)中的重要性;二是群體智能系統(tǒng)無(wú)縫地交織人群和機(jī)器功能,以解決具有挑戰(zhàn)性的計(jì)算問題。隨著人群系統(tǒng)規(guī)模的擴(kuò)大,協(xié)調(diào)大規(guī)模人群的工作并處理復(fù)雜任務(wù)變得越來(lái)越具有挑戰(zhàn)性。

2.3.3? 基于互聯(lián)網(wǎng)群體智能的軟件開發(fā)

在過去的幾十年里,一些軟件開發(fā)活動(dòng)已經(jīng)成為傳統(tǒng)方法的難點(diǎn),傳統(tǒng)的軟件開發(fā)方法已經(jīng)無(wú)法有效應(yīng)對(duì)互聯(lián)網(wǎng)環(huán)境下顯著提升的軟件規(guī)模和復(fù)雜性?;ヂ?lián)網(wǎng)的持續(xù)發(fā)展促成了互聯(lián)網(wǎng)群體智能現(xiàn)象在各種問題領(lǐng)域內(nèi)的不斷涌現(xiàn)和蓬勃發(fā)展,其中,開源軟件、軟件眾包等已經(jīng)顯著改變了人們對(duì)軟件開發(fā)的理解,并提出了基于群體尤其是互聯(lián)網(wǎng)群體的軟件開發(fā)的新實(shí)踐[9],在此基礎(chǔ)上逐漸形成了基于互聯(lián)網(wǎng)群體智能的軟件開發(fā)模式。

群體智能可支持軟件工程的不同階段活動(dòng)。最近的研究表明,群體智能可幫助開發(fā)和測(cè)試應(yīng)用程序,以及分析軟件需求,同樣,也可以直接用來(lái)實(shí)現(xiàn)應(yīng)用程序[6]。軟件工程的復(fù)雜性決定了軟件開發(fā)的群體智能具有許多獨(dú)有的特征和問題,這些特征和問題與普通的智能化不同。同時(shí),互聯(lián)網(wǎng)的不可靠性、動(dòng)態(tài)性、消費(fèi)性以及社會(huì)性四個(gè)特征又導(dǎo)致基于互聯(lián)網(wǎng)的軟件開發(fā)面臨很大的挑戰(zhàn)[6]。因此,群體智能在軟件開發(fā)中,依然需要支持如下的幾個(gè)特性:

(1)科學(xué)性:基于群體智能的軟件開發(fā)是軟件工程學(xué)科,需要遵循編程語(yǔ)言的嚴(yán)格語(yǔ)法和語(yǔ)義、遵循各類工程標(biāo)準(zhǔn),如文檔標(biāo)準(zhǔn)、各種過程活動(dòng)標(biāo)準(zhǔn)等;

(2)創(chuàng)造性:軟件生命周期中各項(xiàng)活動(dòng)如需求分析、設(shè)計(jì)、實(shí)現(xiàn)等需要軟件開發(fā)人員的創(chuàng)造性,基于群體智能的軟件開發(fā)依然要考慮如何激發(fā)軟件開發(fā)人員在軟件開發(fā)任務(wù)中的創(chuàng)造力;

(3)主觀性:主要體現(xiàn)在軟件類產(chǎn)品的質(zhì)量、DFX等特性。除了產(chǎn)品功能以外,軟件類產(chǎn)品/服務(wù)的前述質(zhì)量和諸可性等需求特性,依然是我們需要關(guān)注實(shí)現(xiàn)的。盡管其帶有一定的主觀性,但是也有相應(yīng)的評(píng)估標(biāo)準(zhǔn)。

3? 軟件開發(fā)模式的變遷趨勢(shì)

3.1? 傳統(tǒng)的開發(fā)模式依然在各種適配的場(chǎng)景下發(fā)揮重要作用

針對(duì)一些運(yùn)營(yíng)商類、企業(yè)類用戶,其日常運(yùn)營(yíng)維護(hù)所用的軟件,依然適用工業(yè)化軟件開發(fā)。通常由軟件公司內(nèi)部的開發(fā)者團(tuán)隊(duì)進(jìn)行開發(fā)。這些開發(fā)團(tuán)隊(duì)通常采用集中式層級(jí)結(jié)構(gòu)作為其組織方式。在此類場(chǎng)景下,傳統(tǒng)的軟件開發(fā)模式依然大行其道,如瀑布模型依然在大規(guī)模的軟件項(xiàng)目中廣泛使用,此類項(xiàng)目規(guī)模較大,項(xiàng)目周期較長(zhǎng),一般采用集中式層級(jí)結(jié)構(gòu),有層級(jí)分明的組織結(jié)構(gòu)以及分工明確的人員職責(zé)。敏捷模型依然適用于“短平快”的軟件項(xiàng)目,此類項(xiàng)目一般團(tuán)隊(duì)規(guī)模不超過10人,需求更新快,響應(yīng)也快,一般每周或每月發(fā)布一個(gè)版本。

3.2? 基于互聯(lián)網(wǎng)群體智能的軟件開發(fā)正在崛起并深度應(yīng)用

針對(duì)一些互聯(lián)網(wǎng)類應(yīng)用,尤其是共享經(jīng)濟(jì)下的互聯(lián)網(wǎng)、物聯(lián)網(wǎng)應(yīng)用,則更多適用社會(huì)化軟件開發(fā)。此類場(chǎng)景下,人的要素依然是第一生產(chǎn)力,講求大規(guī)模群體協(xié)同、群體智能匯聚、快速迭代、持續(xù)演化。因?yàn)檐浖_發(fā)涉及到:

(1)任務(wù)的分析與分發(fā);

(2)人員的組織、激勵(lì)與評(píng)估評(píng)價(jià);

(3)各類開發(fā)工具;

(4)質(zhì)量控制。

因此,基于互聯(lián)網(wǎng)群體智能的軟件開發(fā),也必然面臨幾個(gè)主要問題需要重點(diǎn)關(guān)注并解決:

3.2.1? 組織的有效性

回顧影響軟件開發(fā)模式變遷的關(guān)鍵要素,其中之一便為組織方式。群體是個(gè)體的組合體,同時(shí)又超越個(gè)體。具有不同背景、技能的個(gè)體組合起來(lái),如何才能產(chǎn)生有效性,產(chǎn)生恒久的、可衡量的群體智能?由于各行業(yè)的組織結(jié)構(gòu)和團(tuán)隊(duì)協(xié)作方式各不相同,為了展開有效的軟件開發(fā)活動(dòng)并提供有效的解決方案,需要不同程度的專業(yè)知識(shí)和奉獻(xiàn)精神,需要更多的基于實(shí)際數(shù)據(jù)的行業(yè)特定研究。為了實(shí)現(xiàn)群體任務(wù)的目標(biāo),人們可以采用交互模式,包括協(xié)作、協(xié)調(diào)和競(jìng)爭(zhēng)來(lái)連接個(gè)人,并為他們提供在社交環(huán)境中工作的調(diào)解機(jī)制。同時(shí),由于個(gè)體具有較高的自主性和多樣性,導(dǎo)致群體智能在軟件開發(fā)花費(fèi)的時(shí)間、力量和成本具有很高的不確定性。因而,一個(gè)關(guān)鍵的科學(xué)問題是如何掌握不同情景中的群體智能模式,揭示其內(nèi)在機(jī)制、引導(dǎo)激勵(lì)機(jī)制和操作方法,實(shí)現(xiàn)可預(yù)測(cè)的群體智能涌現(xiàn)。

因此,要確保群體組織的有效性,需要了解如何突破基于互聯(lián)網(wǎng)的大眾化協(xié)同、大規(guī)模協(xié)作的開放式共享與質(zhì)量管理。

3.2.2? 工作流工具平臺(tái)的支撐

該問題與影響軟件開發(fā)模式變遷的關(guān)鍵要素——技術(shù)相關(guān)。群體智能軟件開發(fā)需要一系列的方法、工具或環(huán)境支持。具體來(lái)說,有如下兩種:

(1)軟件開發(fā)工具:軟件開發(fā)人員需求分析、建模、編程、設(shè)計(jì)、測(cè)試等活動(dòng),需要各類工具支撐。集成開發(fā)環(huán)境IDE可以將這些工具集成到軟件開發(fā)生命周期的各項(xiàng)活動(dòng)中;

(2)知識(shí)共享和協(xié)作工具:各類在線論壇、維基百科、問答網(wǎng)站和其他基于Web的協(xié)作工具允許參與者進(jìn)行知識(shí)共享和協(xié)作的溝通。StackOver流程使軟件開發(fā)人員能夠發(fā)布問題并解決技術(shù)問題,分享開發(fā)經(jīng)驗(yàn)和知識(shí)。

3.2.3? 群體智能的質(zhì)量控制

群體智能的質(zhì)量控制可認(rèn)為是影響軟件開發(fā)模式變遷的關(guān)鍵要素——技術(shù)和人均相關(guān)。意味著互聯(lián)網(wǎng)群體在賴以工作的系統(tǒng)中提交的產(chǎn)品、數(shù)據(jù)標(biāo)簽和產(chǎn)品設(shè)計(jì),其質(zhì)量將對(duì)最終要交付給用戶的產(chǎn)品和軟件系統(tǒng)的有效性產(chǎn)生很大影響,然而,這種影響往往在不同的工作者之間有所不同。良好的評(píng)估和激勵(lì),能夠激發(fā)群體的興趣和積極性,從而對(duì)全群體智能軟件開發(fā)做出更多貢獻(xiàn)。而如何評(píng)估、控制和保證工作質(zhì)量是我們要重點(diǎn)考慮的問題[9]。針對(duì)這些問題,需要新的機(jī)制和方法進(jìn)行質(zhì)量控制,以保證整個(gè)群體智能系統(tǒng)的質(zhì)量。上述問題,對(duì)于組織自主群體,實(shí)現(xiàn)高效的協(xié)作和有效的智能是一個(gè)非常大的挑戰(zhàn)。因此,大多數(shù)成功的資源項(xiàng)目和公司都有相應(yīng)的群體開發(fā)支撐平臺(tái)和相應(yīng)的組織結(jié)構(gòu)。

3.3? 傳統(tǒng)軟件開發(fā)模式與互聯(lián)網(wǎng)群體智能開發(fā)模式的融合

不可否認(rèn)的是,當(dāng)前的軟件開發(fā),不論是面向運(yùn)營(yíng)商、企業(yè)類的大型軟件項(xiàng)目,還是互聯(lián)網(wǎng)類應(yīng)用項(xiàng)目,或是個(gè)人開發(fā)的一個(gè)游戲類APP,均離不開傳統(tǒng)的軟件工程的理論、方法指導(dǎo),更多時(shí)候也依賴互聯(lián)網(wǎng)上各類社區(qū)、服務(wù)、開源平臺(tái)和工具的支持?;ヂ?lián)網(wǎng)的群體協(xié)同、智力匯聚等優(yōu)勢(shì)在軟件開發(fā)項(xiàng)目中正發(fā)揮著越來(lái)越重要的作用。

4? 結(jié)? 論

軟件開發(fā)模式的變遷,伴隨著軟件開發(fā)的三個(gè)階段(原始軟件開發(fā)、工業(yè)化軟件開發(fā)、社會(huì)化軟件開發(fā)),受多種因素的影響,如軟件開發(fā)組織方式、技術(shù),尤其是互聯(lián)網(wǎng)群體智能的興起。不同的軟件開發(fā)模式適用于不同的場(chǎng)景,而針對(duì)基于互聯(lián)網(wǎng)群體智能的軟件開發(fā)方法,業(yè)界學(xué)者正在進(jìn)行一些初步的嘗試和探索,重點(diǎn)探索互聯(lián)網(wǎng)環(huán)境下軟件開發(fā)的方法與技術(shù),例如群體智能的形成、群體的組織與任務(wù)分配、群體智能的激勵(lì)與質(zhì)量控制、度量與管控;探索互聯(lián)網(wǎng)環(huán)境下以大規(guī)模群體協(xié)同、智力匯聚、群體中個(gè)體的信譽(yù)追蹤、群體智能持續(xù)演化為基本特征的新型軟件開發(fā)模式[9]。

參考文獻(xiàn):

[1] 張林.軟件開發(fā)模式的演進(jìn) [J].硅谷,2011(12):24+ 54.

[2] KIM G,HUMBLE J,DEBOIS P,et al. DevOps實(shí)踐指南 [M].劉征,王磊,馬博文,等譯.北京:人民郵電出版社,2018:2-8.

[3] 魏金嶺,周蘇.軟件項(xiàng)目管理與實(shí)踐 [M].北京:清華大學(xué)出版社,2018:6-7

[4] 張偉,梅宏.基于互聯(lián)網(wǎng)群體智能的軟件開發(fā):可行性、現(xiàn)狀與挑戰(zhàn) [J].中國(guó)科學(xué):信息科學(xué),2017,47(12):1601-1622.

[5] 左海春.云環(huán)境下動(dòng)態(tài)裝配軟件開發(fā)方法中的關(guān)鍵技術(shù)研究 [J].通訊世界,2017(19):14-15.

[6] SALAY R,DALPIAZ F,CHECHIK M. Integrating Crowd Intelligence into Software [C]//2015 IEEE/ACM 2nd International Workshop on Crowd Sourcing in Software Engineering,May 19 2015,F(xiàn)lorence Italy. USA:IEEE Press,2015:1-7.

[7] 靖鯤鵬,王佳岐.國(guó)外“群集智慧智能”研究進(jìn)展與展望 [J].高技術(shù)通訊,2018,28(8):700-711.

[8] 王華,趙東杰,楊海濤,等.大數(shù)據(jù)時(shí)代下網(wǎng)絡(luò)群體智能研究方法 [J].計(jì)算機(jī)與現(xiàn)代化,2015(2):1-6.

[9] LI W,WU W,WANG H,et al. Crowd intelligence in AI 2.0 era [J].Frontiers of Information Technology & Electronic Engineering,2017(1):19-47.

作者簡(jiǎn)介:梁惠惠(1975-),女,漢族,山東萊陽(yáng)人,副教授,碩士,研究方向:軟件工程、大數(shù)據(jù)

猜你喜歡
開發(fā)模式
中職烹飪課程“校企協(xié)同”開發(fā)模式的創(chuàng)新與實(shí)踐
鼓浪嶼音樂旅游發(fā)展模式探析
淺談鄉(xiāng)村旅游的開發(fā)和利用
基于JSP技術(shù)的常用開發(fā)模式分析及運(yùn)用
我國(guó)鄉(xiāng)村旅游驅(qū)動(dòng)機(jī)制與開發(fā)模式研究
非物質(zhì)文化遺產(chǎn)的旅游開發(fā)模式與優(yōu)化策略
邢臺(tái)微營(yíng)銷市場(chǎng)前景與開發(fā)模式研究
四川康養(yǎng)旅游資源評(píng)價(jià)及開發(fā)模式研究
區(qū)域經(jīng)濟(jì)條件下旅游資源開發(fā)模式研究
淺析小學(xué)高年級(jí)數(shù)學(xué)習(xí)題資源的開發(fā)模式