實(shí)現(xiàn)軟件編程工廠(chǎng)化
FO方法是指面向事實(shí)的分析(Fact-Oriented Analysis)、面向結(jié)構(gòu)的設(shè)計(jì)(Frame-Oriented Design)、面向形式的編程(Form-Oriented Programming) 的軟件開(kāi)發(fā)方法。
本文引用地址:http://m.butianyuan.cn/article/202212/441579.htm幾百行代碼,完成了傳統(tǒng)軟件開(kāi)發(fā)需要幾十萬(wàn)行代碼的軟件系統(tǒng)。這并不是理論上的研究,而是一個(gè)正在使用的軟件系統(tǒng)——云計(jì)算農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)中的果業(yè)數(shù)據(jù)服務(wù)平臺(tái)。
該平臺(tái)目前包括果業(yè)產(chǎn)銷(xiāo)服務(wù),農(nóng)資服務(wù),物流服務(wù),農(nóng)機(jī)服務(wù),分析預(yù)測(cè)等近200個(gè)系統(tǒng)。并可根據(jù)需求,按照全國(guó)行政區(qū)域劃分,為每個(gè)村都配置一個(gè)獨(dú)立的果業(yè)數(shù)據(jù)服務(wù)平臺(tái)。今后云計(jì)算農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)還可擴(kuò)展到蔬菜業(yè),養(yǎng)豬業(yè)等等。該農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)所管理的數(shù)據(jù)可無(wú)限多,且數(shù)據(jù)查尋時(shí)間快速,及乎不受數(shù)據(jù)增加的影響。如此龐大的巨復(fù)雜軟件系統(tǒng),所需編制的數(shù)千萬(wàn)行、數(shù)億行代碼,都可由FO方發(fā)法的幾百行代碼簡(jiǎn)便自如地生成。
FO方法在業(yè)內(nèi)率先實(shí)現(xiàn)軟件編程的工廠(chǎng)化,使軟件復(fù)用在龐大的巨復(fù)雜軟件系統(tǒng)成功應(yīng)用,是軟件工程的具有里程碑意義的創(chuàng)新技術(shù)。
當(dāng)今的計(jì)算機(jī)硬件發(fā)展是如此之快,軟件的開(kāi)發(fā)已經(jīng)遠(yuǎn)遠(yuǎn)地落在后面。人類(lèi)面臨太多的難題需要通過(guò)軟件來(lái)幫助分析解決。
全球金融危機(jī)爆發(fā)之前,盡管人們希望開(kāi)發(fā)一些復(fù)雜的系統(tǒng)來(lái)滿(mǎn)足人們的需要,但是這種需求并不迫切。然而金融危機(jī)爆發(fā)之后,人類(lèi)經(jīng)濟(jì)發(fā)生了全球性衰退,沒(méi)有一個(gè)國(guó)家能夠幸免于難。20國(guó)集團(tuán)領(lǐng)導(dǎo)人倫敦峰會(huì)前后的一系列應(yīng)對(duì)國(guó)際金融危機(jī)的措施表明,"一場(chǎng)全球性的危機(jī),需要全球性的解決方案";發(fā)端于國(guó)際金融危機(jī)的全球應(yīng)對(duì),將使世界經(jīng)濟(jì)形勢(shì)、全球治理模式、國(guó)際關(guān)系格局等都出現(xiàn)新的變化,并產(chǎn)生遠(yuǎn)遠(yuǎn)超出危機(jī)應(yīng)對(duì)本身的影響。
一個(gè)模擬全球金融體系的巨復(fù)雜軟件系統(tǒng)將會(huì)更加有效的進(jìn)行金融監(jiān)管。然而目前的軟件技術(shù)卻無(wú)法完成如此復(fù)雜、龐大的軟件系統(tǒng)。
能否找到開(kāi)啟軟件開(kāi)發(fā)的新方法,從根本上解決目前的軟件危機(jī)難題,幫助人類(lèi)開(kāi)發(fā)出模擬現(xiàn)實(shí)的真正解決人類(lèi)難題的軟件系統(tǒng)?幾十年來(lái),國(guó)內(nèi)外的計(jì)算機(jī)專(zhuān)家一直在尋找這個(gè)答案,并且提出了很多創(chuàng)新的思想方法,比如軟件工程的面向?qū)ο蠓椒?,?gòu)件方法,敏捷開(kāi)發(fā)等等。但是始終沒(méi)有找到一種方法來(lái)解決軟件的根本問(wèn)題——軟件危機(jī)。雖然,軟件工程的某一種創(chuàng)新方法的出現(xiàn),解決了部分編程的眼前問(wèn)題,但是當(dāng)軟件的復(fù)雜度增加、軟件系統(tǒng)更加龐大后,新的危機(jī)又出現(xiàn)了。而且這種危機(jī)比以前更加嚴(yán)重。
有沒(méi)有銀彈?
圖靈獎(jiǎng)的獲得者Fred Brooks博士在1987年所發(fā)表的一篇關(guān)于軟件工程的經(jīng)典論文《沒(méi)有銀彈》中,把能給軟件產(chǎn)業(yè)帶來(lái)本質(zhì)上突變的技術(shù)稱(chēng)為“銀彈”,并且明確地強(qiáng)調(diào)真正的銀彈并不存在。他認(rèn)為沒(méi)有任何一項(xiàng)技術(shù)或方法可以能讓軟件工程的生產(chǎn)力在十年內(nèi)提高十倍。這個(gè)論斷在這二十多年里一直沒(méi)有被打破。
按照Brooks博士的觀點(diǎn),所有軟件活動(dòng)包括兩個(gè)部分,即根本任務(wù):打造由抽象軟件實(shí)體構(gòu)成的復(fù)雜概念結(jié)構(gòu);次要任務(wù) :使用編程語(yǔ)言表達(dá)這些抽象實(shí)體,在空間和時(shí)間限制內(nèi)將它們映射成機(jī)器語(yǔ)言。
一個(gè)相互牽制關(guān)聯(lián)的概念結(jié)構(gòu),是軟件實(shí)體必不可少的部分,它包括:數(shù)據(jù)集合、數(shù)據(jù)條目之間的關(guān)系、算法、功能調(diào)用等等。這些要素本身是抽象的,體現(xiàn)在相同的概念構(gòu)架中,可以存在不同的表現(xiàn)形式。盡管如此,它仍然是內(nèi)容豐富和高度精確的。
所以Fred Brooks博士認(rèn)為軟件開(kāi)發(fā)中最困難的部分是規(guī)格化、設(shè)計(jì)和測(cè)試這些概念上的結(jié)構(gòu),而不是對(duì)概念進(jìn)行表達(dá)和對(duì)實(shí)現(xiàn)逼真程度進(jìn)行驗(yàn)證。當(dāng)然,程序員還是會(huì)犯一些語(yǔ)法錯(cuò)誤,但是和絕大多數(shù)系統(tǒng)中的概念錯(cuò)誤相比,它們是微不足道的。
事實(shí)上,現(xiàn)代軟件系統(tǒng)中存在的一些無(wú)法規(guī)避的內(nèi)在特性,即復(fù)雜度、一致性、可變性和不可見(jiàn)性,讓軟件開(kāi)發(fā)總是非常困難。因此Fred Brooks博士得到一個(gè)結(jié)論,天生就沒(méi)有銀彈。
目前我們無(wú)法確定FO軟件開(kāi)發(fā)方法是否就是真正的“銀彈”,因?yàn)橹挥性诟嗟膶?shí)踐中驗(yàn)證后才能得到明確的結(jié)論。但是它可以使用有限的少量代碼實(shí)現(xiàn)傳統(tǒng)方法需要數(shù)百萬(wàn)行、數(shù)千萬(wàn)行代碼才能實(shí)現(xiàn)的軟件功能,以及它可以建立任意空間復(fù)雜度的軟件架構(gòu)體系,并且這個(gè)架構(gòu)體系結(jié)構(gòu)是可以根據(jù)需要隨意調(diào)整的。因此至少我們可以認(rèn)為它是一種高效的軟件開(kāi)發(fā)方法。
FO方法是如何解決“概念結(jié)構(gòu)”難題的?
云計(jì)算時(shí)代,軟件系統(tǒng)的復(fù)雜度比目前已經(jīng)開(kāi)發(fā)的軟件系統(tǒng)要復(fù)雜得多,或許其復(fù)雜程度比 Brooks博士想象的還要復(fù)雜,而且我們幾乎無(wú)法預(yù)先知道最終的系統(tǒng)到底有多復(fù)雜。開(kāi)發(fā)一個(gè)不能預(yù)先知道復(fù)雜度的軟件系統(tǒng),聽(tīng)起來(lái)似乎在講一個(gè)天方夜談里的故事,然而不幸的是,在云計(jì)算時(shí)代,它的確是真實(shí)的。在西方所有恐怖民間傳說(shuō)的妖怪中,人狼之所以是最可怕的,是因?yàn)槲覀儾恢浪麄兊拿婵讜?huì)變成什么樣的。
為了對(duì)付人狼,我們?cè)趯ふ铱梢韵麥缢鼈兊你y彈。這種銀彈是存在的。
那么對(duì)于具有人狼特性的軟件,是否也存在銀彈?盡管二十多年前圖靈獎(jiǎng)獲得者布魯克斯博士得出了“沒(méi)有銀彈”的結(jié)論,但是國(guó)內(nèi)外的計(jì)算機(jī)人員并沒(méi)有放棄對(duì)“銀彈”的尋找,對(duì)希望的渴求以及永不放棄的精神是人類(lèi)的天性。
作為哲學(xué)和軟件技術(shù)相結(jié)合的產(chǎn)物,F(xiàn)O軟件開(kāi)發(fā)方法是北京乾坤化物數(shù)字技術(shù)有限公司在多年的實(shí)戰(zhàn)中總結(jié)出來(lái)的方法。而環(huán)境的生存壓力是形成這種方法的最大動(dòng)力。我們不得不考慮如何讓不同行業(yè)的軟件使用同樣的代碼,也必須考慮如何用最少而且有限的代碼來(lái)構(gòu)建任意多的功能模塊,以及如何應(yīng)對(duì)不同行業(yè)的用戶(hù)變化不定的需求。
FO方法是指面向事實(shí)的分析、面向結(jié)構(gòu)的設(shè)計(jì)、面向形式的編程的軟件開(kāi)發(fā)方法。
面向事實(shí)的分析是哲學(xué)話(huà)題而非技術(shù)話(huà)題。是由行業(yè)專(zhuān)家對(duì)客戶(hù)需求進(jìn)行邏輯分析,而這種分析是完全不考慮軟件技術(shù)的,只是單純地按照哲學(xué)方式進(jìn)行分析,然后建立邏輯模型。因此嚴(yán)格來(lái)講,它不屬于軟件技術(shù)范疇。因?yàn)榉治鋈藛T幾乎不需要和程序員做任何交流,只需要把創(chuàng)建好的邏輯模型交給程序員就可以了。
采用面向結(jié)構(gòu)的設(shè)計(jì)方法,我們可以得到一個(gè)復(fù)雜的空間邏輯結(jié)構(gòu),它將用來(lái)處理軟件系統(tǒng)內(nèi)在特性引發(fā)的一些問(wèn)題,即復(fù)雜度、一致性、可變性和不可見(jiàn)性。
復(fù)雜度問(wèn)題。任何一個(gè)復(fù)雜的現(xiàn)實(shí)模型,可以采用哲學(xué)方法,分解為簡(jiǎn)單對(duì)象的連接,而這種連接方式就是結(jié)構(gòu)。因此對(duì)一個(gè)任意復(fù)雜模型的處理就轉(zhuǎn)換成了對(duì)連接方式的處理,也就是對(duì)結(jié)構(gòu)的處理。把連接方式進(jìn)行分類(lèi),這樣一個(gè)復(fù)雜的連接方式就轉(zhuǎn)換成了由一系列不同類(lèi)型的簡(jiǎn)單連接方式的組合。即得到了一系列的簡(jiǎn)單結(jié)構(gòu)。
以云計(jì)算農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)為例,得到了樹(shù)狀地名分層結(jié)構(gòu),行業(yè)分類(lèi)結(jié)構(gòu),表現(xiàn)形式結(jié)構(gòu),產(chǎn)品分類(lèi),服務(wù)分類(lèi),人員分類(lèi),工作類(lèi)型等等。這些結(jié)構(gòu)組合在一起,就得到了云計(jì)算農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)的對(duì)象連接方式。
一致性問(wèn)題。 正如Fred Brooks博士在其論文中所闡述的,并不是只有軟件工程師才面對(duì)復(fù)雜問(wèn)題,物理學(xué)家甚至在非常“基礎(chǔ)”的級(jí)別上面對(duì)異常復(fù)雜的事物。不過(guò),物理學(xué)家堅(jiān)信必定存在著某種通用原理,或者在夸克中,或者在統(tǒng)一場(chǎng)論中。愛(ài)因斯坦曾不斷地重申自然界一定存在著簡(jiǎn)化的解釋?zhuān)驗(yàn)樯系鄄皇菍?zhuān)橫武斷或反復(fù)無(wú)常的。
但是Fred Brooks博士卻悲觀地認(rèn)為軟件工程師根本無(wú)法用簡(jiǎn)單的方法來(lái)解決軟件的這些復(fù)雜特性。甚至無(wú)法象物理學(xué)家那樣從信念中獲得安慰。而這種復(fù)雜度是人設(shè)計(jì)的結(jié)果,是隨心所欲、毫無(wú)規(guī)則可言的,這種復(fù)雜性引起了軟件的一致性問(wèn)題。
如同解決軟件復(fù)雜度一樣,既然FO方法已經(jīng)把復(fù)雜度問(wèn)題解決了,自然其一致性問(wèn)題也就不存在了。因?yàn)樵诿總€(gè)最簡(jiǎn)單的連接方式中,比如行業(yè)分類(lèi),盡管不同的設(shè)計(jì)人員在命名或者結(jié)構(gòu)的處理上有差別,但是其本質(zhì)是一致的。比如我們對(duì)果業(yè)產(chǎn)品的分類(lèi),我們把獼猴桃又劃分為早熟、中熟、晚熟三類(lèi),然后對(duì)早熟再進(jìn)行細(xì)分,而很多的人沒(méi)有增加早熟這一層分類(lèi),但是這兩種分類(lèi)方式在結(jié)構(gòu)上具有一致性。
可變性問(wèn)題。FO方法把軟件系統(tǒng)分為兩個(gè)獨(dú)立部分,對(duì)象和連接方式(即結(jié)構(gòu))。軟件結(jié)構(gòu)是一個(gè)多維空間架構(gòu),每個(gè)維是由一組位置數(shù)據(jù)元素組成。對(duì)象又分為兩個(gè)獨(dú)立的部分,對(duì)象的內(nèi)部特性——形式,對(duì)象的外部特性——配置,形式是程序代碼,配置是一組描述數(shù)據(jù)的集合。
形式作為對(duì)象的內(nèi)部特性,是固定不變的。但是作為外部特性的配置以及作為連接方式的結(jié)構(gòu)是可以變化的。FO方法將通過(guò)調(diào)整配置和結(jié)構(gòu)來(lái)改變軟件,使它更加適應(yīng)用戶(hù)的需求。這種改變不涉及程序代碼,只是對(duì)描述數(shù)據(jù)進(jìn)行調(diào)整,不會(huì)增加軟件開(kāi)發(fā)維護(hù)的難度。因此可以根據(jù)需要隨意改變軟件的功能,以便更加適應(yīng)環(huán)境的需要。
不可見(jiàn)性問(wèn)題。軟件是不可見(jiàn)的和無(wú)法可視化的。軟件的客觀存在不具有空間的形體特征。因此,沒(méi)有已有的表達(dá)方式,就像陸地海洋有地圖、硅片有膜片圖、計(jì)算機(jī)有電路圖一樣。當(dāng)我們?cè)噲D用圖形來(lái)描述軟件結(jié)構(gòu)時(shí),我們發(fā)現(xiàn)它不僅僅包含一個(gè),而是很多相互關(guān)聯(lián)、重疊在一起的圖形。這些圖形可能描繪控制流程、數(shù)據(jù)流、依賴(lài)關(guān)系、時(shí)間序列、名字空間的相互關(guān)系等等。
FO方法采用具有遺傳特性的無(wú)限分層的樹(shù)以及線(xiàn)性方式來(lái)展示描述軟件的空間形體特征,我們無(wú)法描繪軟件的復(fù)雜空間結(jié)構(gòu)圖形,但是可以顯示每個(gè)維的圖形,比如在云計(jì)算農(nóng)村數(shù)據(jù)服務(wù)軟件平臺(tái)里,地名結(jié)構(gòu)樹(shù),分類(lèi)樹(shù)等分別代表軟件空間結(jié)構(gòu)的地名維,分類(lèi)維,這些是可以采用幾何方式展示的。
幾百行代碼是如何構(gòu)建傳統(tǒng)方法需要幾十萬(wàn)行代碼的軟件系統(tǒng)的
面向形式的編程方法(Form-Oriented Programming)的核心思想在于對(duì)象的內(nèi)部特性即對(duì)象的存在形式是固定不變的,其外部特性即配置(描述)是可以變化不定的。這種觀點(diǎn)在哲學(xué)上已經(jīng)有明確的推論,比如《邏輯哲學(xué)論》等。
對(duì)于固定不變的“形式”,我們采用程序代碼方式來(lái)完成,即使用一組指令,按照邏輯順序進(jìn)行排列。配置采用數(shù)據(jù)描述方式來(lái)完成,即制定一種“規(guī)定”,用特定的符號(hào)來(lái)完成對(duì)象外部特性的描述。程序只對(duì)“規(guī)定”里的符號(hào)本身做處理,而對(duì)符號(hào)所代表的具體含義不關(guān)心,所以當(dāng)符號(hào)所代表的含義發(fā)生改變時(shí),對(duì)于程序本身來(lái)說(shuō),它仍然在做同樣的處理,但是展示給用戶(hù)的結(jié)果卻發(fā)生了改變,是另外一種不同的東西。這是由于人的主觀意識(shí)決定的,因?yàn)槿嗽诖蠖鄶?shù)時(shí)候,是通過(guò)外部特性來(lái)判斷這個(gè)東西是什么,那個(gè)東西是什么的,而計(jì)算機(jī)是通過(guò)內(nèi)部特性來(lái)判斷東西的所屬的。
比如在云計(jì)算農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)里,物流數(shù)據(jù)的統(tǒng)計(jì)和果品銷(xiāo)售數(shù)據(jù)的統(tǒng)計(jì),對(duì)于人來(lái)說(shuō),是兩個(gè)不同的東西,但是對(duì)于計(jì)算機(jī)來(lái)說(shuō),它們是一樣的,是對(duì)符號(hào)做同樣的處理,不同的是作為由符號(hào)構(gòu)成的群,是由不同的同類(lèi)符號(hào)子群構(gòu)成,每個(gè)子群的元素具有相同的構(gòu)造(處理方法),但是元素的數(shù)量可能會(huì)有差異。
基于這個(gè)特性,就可以采用相同的程序代碼,采用不同的配置(描述),構(gòu)造出不同行業(yè)的大量軟件系統(tǒng)了。比如在我們的“云計(jì)算果業(yè)數(shù)據(jù)服務(wù)平臺(tái)”中,采用幾百行代碼,就已經(jīng)完成了近200個(gè)不同的應(yīng)用程序,如物流貨運(yùn)服務(wù),果品銷(xiāo)售服務(wù),農(nóng)機(jī)服務(wù)等。而采用傳統(tǒng)的軟件開(kāi)發(fā)方式,完成這樣的系統(tǒng),如果每個(gè)系統(tǒng)使用2000行代碼,至少也需要四十萬(wàn)行代碼。
接下來(lái)我們將開(kāi)發(fā)“云計(jì)算蔬菜數(shù)據(jù)服務(wù)平臺(tái)”、“云計(jì)算養(yǎng)牛數(shù)據(jù)服務(wù)平臺(tái)”、“云計(jì)算養(yǎng)魚(yú)數(shù)據(jù)服務(wù)平臺(tái)”、“云計(jì)算農(nóng)村醫(yī)療數(shù)據(jù)服務(wù)平臺(tái)”、“云計(jì)算人口數(shù)據(jù)服務(wù)平臺(tái)”等,采用系統(tǒng)同構(gòu)特性,這些軟件系統(tǒng)將同樣使用這幾百行程序代碼。而采用傳統(tǒng)的軟件開(kāi)發(fā)方法,可能需要幾千萬(wàn)行代碼。
FO方法的意義
FO方法的意義大致有幾個(gè)方面。
一是解決了軟件復(fù)雜度問(wèn)題。FO方法可以快速搭建任意復(fù)雜的軟件體系結(jié)構(gòu),同時(shí)可以根據(jù)需要隨意修改調(diào)整軟件體系結(jié)構(gòu)。這種調(diào)整修改可以發(fā)生在軟件生命周期的全過(guò)程,即開(kāi)發(fā)初期,或者軟件使用過(guò)程中。體系結(jié)構(gòu)的調(diào)整將形成全新的軟件系統(tǒng)。
從這種意義上講,F(xiàn)O方法使軟件具有可以進(jìn)化的功能。因?yàn)檎{(diào)整的目的是為了讓軟件系統(tǒng)更加適合客戶(hù)的需求,每次的調(diào)整都可能更加逼近目標(biāo)。
由于FO方法可以處理任意復(fù)雜的模型,所以從理論上講,F(xiàn)O方法可以搭建和現(xiàn)實(shí)地球?qū)?yīng)的數(shù)字地球,在這個(gè)數(shù)字地球里,有金融體系、商務(wù)體系、氣象體系等等。
二是減少了程序代碼的數(shù)量。程序代碼的減少,大大增強(qiáng)了軟件的可讀性,可維護(hù)性,同時(shí)減少的BUG存在的可能性。比如目前的操作系統(tǒng)的代碼達(dá)到了數(shù)億行,如果采用FO方法,使其代碼的數(shù)量限制在幾萬(wàn)行,那么其維護(hù)以及功能的調(diào)整修改就容易很多。
三是提高了軟件的安全性。軟件的復(fù)雜度以及軟件代碼是導(dǎo)致安全問(wèn)題的重要因素。大量的安全隱患存在于程序代碼里面。從程序代碼里發(fā)現(xiàn)問(wèn)題并進(jìn)行處理,是解決安全性的根本途徑。然而在傳統(tǒng)的軟件開(kāi)發(fā)中,由于程序代碼的數(shù)量過(guò)于龐大,因此預(yù)先知道問(wèn)題的所在是很難的。同時(shí)由于軟件的復(fù)雜度,有時(shí)候即便找到了問(wèn)題所在,也無(wú)法從根本上加以解決,因?yàn)檫@個(gè)地方的問(wèn)題可能已經(jīng)關(guān)聯(lián)了N個(gè)程序,而我們無(wú)法準(zhǔn)確的知道那些地方和這個(gè)錯(cuò)誤有關(guān)聯(lián)。
FO方法通過(guò)把復(fù)雜的問(wèn)題轉(zhuǎn)換為一系列獨(dú)立的簡(jiǎn)單問(wèn)題,然后采用解決簡(jiǎn)單問(wèn)題的方法來(lái)提高軟件系統(tǒng)的安全性。
四是提高了軟件開(kāi)發(fā)的進(jìn)度。FO方法采用哲學(xué)方法來(lái)分析用戶(hù)需求模型,采用命題形式來(lái)建立邏輯需求模型。程序代碼的編寫(xiě)過(guò)程實(shí)際上是對(duì)命題的翻譯過(guò)程。比如對(duì)一個(gè)簡(jiǎn)單對(duì)象的形式進(jìn)行代碼編寫(xiě),實(shí)際上已經(jīng)有了一個(gè)哲學(xué)上對(duì)這個(gè)形式的邏輯描述,程序員只需要把這種描述翻譯成計(jì)算機(jī)語(yǔ)言就可以了,而計(jì)算機(jī)語(yǔ)言的選擇可以根據(jù)需要來(lái)選擇,比如java,c等。
和傳統(tǒng)的軟件開(kāi)發(fā)方法比較,F(xiàn)O方法對(duì)于大型軟件系統(tǒng)的開(kāi)發(fā),效果會(huì)更加明顯,開(kāi)發(fā)周期可以縮短70%左右。
五是減少了軟件開(kāi)發(fā)成本。軟件開(kāi)發(fā)成本主要是程序員的成本,在一個(gè)大型的軟件系統(tǒng)開(kāi)發(fā)中,傳統(tǒng)的方法對(duì)程序員的素質(zhì)以及人員數(shù)量的要求很高,軟件是程序員思維過(guò)程的記錄,因此人力成本也就很高。同時(shí)由于程序代碼的龐大,導(dǎo)致了后期維護(hù)成本的不可控,也大大增加了總體成本。
FO方法把軟件開(kāi)發(fā)轉(zhuǎn)換成為一個(gè)簡(jiǎn)單的勞動(dòng),軟件是現(xiàn)實(shí)用戶(hù)需求模型在計(jì)算機(jī)世界的映射。邏輯模型的建立由行業(yè)專(zhuān)家采用哲學(xué)的方法來(lái)建立,程序員只是在完成翻譯工作。因此人力成本相對(duì)較低。同時(shí)由于代碼數(shù)量的減少,后期維護(hù)成本也就相對(duì)減少很多。
對(duì)于大型、復(fù)雜的軟件系統(tǒng)開(kāi)發(fā),F(xiàn)O方法的軟件開(kāi)發(fā)成本會(huì)更低,和傳統(tǒng)的軟件開(kāi)發(fā)方法比較,大約會(huì)減少60%左右的成本。
六是軟件可以滿(mǎn)足用戶(hù)不斷變化的需求。FO方法只把形式部分采用程序代碼方式來(lái)實(shí)現(xiàn),而反映對(duì)象外部特性的配置部分采用數(shù)據(jù)描述方式來(lái)實(shí)現(xiàn)。因此用戶(hù)可以根據(jù)現(xiàn)實(shí)環(huán)境的變化來(lái)修改軟件配置,以便獲得滿(mǎn)足自己需要的軟件系統(tǒng)。
2010年2月22日
注:此文是中國(guó)嵌入式系統(tǒng)產(chǎn)業(yè)聯(lián)盟網(wǎng)絡(luò)空間命運(yùn)共同體研究會(huì)交流文
愿意加入我們研究會(huì)和微信群進(jìn)行共同研討的人士,可掃下面的網(wǎng)絡(luò)空間研究會(huì)微信群二維碼入和后補(bǔ)填入會(huì)豋記表。如您已是中國(guó)嵌入式系統(tǒng)產(chǎn)業(yè)聯(lián)盟理事或會(huì)員,只需掃研究會(huì)二維碼入群,聯(lián)盟秘書(shū)處就會(huì)為您辦加入研究會(huì)的豋記。謝謝!
評(píng)論