新聞中心

EEPW首頁(yè) > 智能計(jì)算 > 設(shè)計(jì)應(yīng)用 > 用云計(jì)算實(shí)例談解決軟件危機(jī)的FO方法

用云計(jì)算實(shí)例談解決軟件危機(jī)的FO方法

作者:北京乾坤化物數(shù)字技術(shù)有限公司總經(jīng)理 趙文銀 時(shí)間:2022-12-15 來(lái)源:電子產(chǎn)品世界 收藏

一、必須要面對(duì)和解決的問(wèn)題

本文引用地址:http://m.butianyuan.cn/article/202212/441690.htm

如同蓋樓房一樣,當(dāng)我們蓋幾層或十幾層的樓房時(shí),對(duì)樓房結(jié)構(gòu)和公共設(shè)施等要求不會(huì)很高,有些問(wèn)題還可以不考慮。但是如果蓋幾十層或者上百層樓房的時(shí)候,很多原來(lái)可以忽略的問(wèn)題,就會(huì)變成必須要面對(duì)和解決的問(wèn)題了。軟件開(kāi)發(fā)如同蓋樓房一樣,屬于蓋魔天大樓。

無(wú)論是政府、學(xué)界或是企業(yè)界,現(xiàn)在對(duì)的關(guān)注度迅速增高,對(duì)云計(jì)算的應(yīng)用懷有很大的期待。人們從不同的角度來(lái)分析定義云計(jì)算,并探討云計(jì)算對(duì)人類(lèi)未來(lái)的影響和云計(jì)算存在的問(wèn)題。但是,當(dāng)前很少有人談及云計(jì)算面臨的一個(gè)本質(zhì)的問(wèn)題——如何解決云計(jì)算帶來(lái)的更加嚴(yán)重的。

云計(jì)算是以應(yīng)用為目的,通過(guò)互聯(lián)網(wǎng)將必要的大量硬件和軟件按照一定的結(jié)構(gòu)體系連接起來(lái),并隨應(yīng)用需求的變化不斷調(diào)整結(jié)構(gòu)體系建立的一個(gè)內(nèi)耗最小,功效最大的虛擬資源服務(wù)中心。云計(jì)算將對(duì)人類(lèi)社會(huì)產(chǎn)生重大影響:

1、云計(jì)算將導(dǎo)致人們的思維方式發(fā)生重大改變。人們將學(xué)會(huì)站在整體的角度來(lái)處理問(wèn)題,用和諧平衡的思想來(lái)處理系統(tǒng)里局部之間的關(guān)系。

2、云計(jì)算將導(dǎo)致軟件行業(yè)的最終消亡。隨著云計(jì)算應(yīng)用的發(fā)展,軟件開(kāi)發(fā)會(huì)如人們現(xiàn)在用提供的Word等工具編輯文字一樣,用戶將自己編制所需要的軟件程序,為用戶專(zhuān)業(yè)編程的軟件行業(yè)會(huì)逐步消亡。

3、云計(jì)算將促使全球資源迅速集中。各種資源通過(guò)技術(shù)手段按照市場(chǎng)規(guī)則將被分類(lèi)集中,這種集中使得資源的使用效率達(dá)到最大化,同時(shí)資源的分配在有效監(jiān)控下做到了盡可能的公平。

在云計(jì)算里,大量的計(jì)算機(jī)組成了一個(gè)龐大的計(jì)算資源中心,大量的軟件系統(tǒng)組成了一個(gè)龐大的云計(jì)算軟件系統(tǒng),而這些軟件系統(tǒng)原來(lái)是孤立的分散在不同的計(jì)算中心里。當(dāng)數(shù)百萬(wàn)或者數(shù)億個(gè)功能集中到一個(gè)“云”里,而且它們之間有很多的關(guān)聯(lián)關(guān)系的時(shí)候,帶來(lái)的危害有可能讓云計(jì)算系統(tǒng)無(wú)法正常運(yùn)營(yíng),甚至?xí)罎?。因此,云?jì)算必須要面對(duì)和解決軟件危機(jī)的問(wèn)題。

北京乾坤化物數(shù)字技術(shù)有限公司開(kāi)發(fā)的全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)和果業(yè)數(shù)據(jù)服務(wù)平臺(tái)是一個(gè)云計(jì)算實(shí)例。

二、全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)分析

全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)是一個(gè)巨復(fù)雜系統(tǒng),每個(gè)功能系統(tǒng)都會(huì)涉及地名區(qū)域、產(chǎn)品分類(lèi)、行業(yè)分類(lèi)、政府部門(mén)、供銷(xiāo)單位、產(chǎn)品所有人等等關(guān)聯(lián)關(guān)系。而對(duì)于一個(gè)具體的產(chǎn)品,在其生命周期里會(huì)涉及到大量的服務(wù)系統(tǒng)。比如:蘋(píng)果,從種植戶準(zhǔn)備種植開(kāi)始,涉及到預(yù)計(jì)種植面積、果苗提供,農(nóng)機(jī)服務(wù)、農(nóng)資服務(wù)、產(chǎn)量統(tǒng)計(jì)、銷(xiāo)售、質(zhì)量檢疫、物流運(yùn)輸、商貿(mào)服務(wù)、產(chǎn)品跟蹤等多個(gè)軟件功能系統(tǒng)。這些系統(tǒng)之間同時(shí)又相互關(guān)聯(lián);任何一個(gè)系統(tǒng)的數(shù)據(jù)的變化都有可能導(dǎo)致其它系統(tǒng)的變化。

全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)是一個(gè)“智慧”系統(tǒng)。以甘蔗種植為例,對(duì)于一個(gè)局部系統(tǒng)來(lái)說(shuō),比如某個(gè)縣,甘蔗產(chǎn)量大面積減產(chǎn),如果沒(méi)有其它地區(qū)的產(chǎn)量平衡,那么系統(tǒng)會(huì)得到明年白糖產(chǎn)量會(huì)減少的分析結(jié)論。但是,如果另外一個(gè)縣的甘蔗大豐收,由于在全局范圍內(nèi)達(dá)到了平衡,所以得到的最終分析結(jié)論是明年白糖產(chǎn)量會(huì)平穩(wěn)。如果把這個(gè)思路拓展到全球金融體系,假如我們建立了全球金融云計(jì)算系統(tǒng),那么這次全球性的國(guó)際金融危機(jī)或許就不會(huì)發(fā)生了,因?yàn)檫@個(gè)云計(jì)算系統(tǒng)會(huì)實(shí)時(shí)跟蹤局部或者全球的金融狀態(tài)變化。

圖一是全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)和所屬的果業(yè)數(shù)據(jù)服務(wù)平臺(tái)。從圖中可以看出,該“云”計(jì)算平臺(tái)是由很多“子云”計(jì)算平臺(tái)組成。比如該“云”平臺(tái)中包含果業(yè)、蔬菜業(yè)、養(yǎng)豬業(yè)、藥材、乳品業(yè)、養(yǎng)魚(yú)業(yè)等。果業(yè)平臺(tái)中又包含很多“子云”平臺(tái),比如果品產(chǎn)銷(xiāo)服務(wù),農(nóng)資服務(wù),物流服務(wù)等。

從圖一中可以看出云計(jì)算軟件系統(tǒng)和傳統(tǒng)的軟件系統(tǒng)的最大不同點(diǎn)。傳統(tǒng)軟件從展示形式上只有第一層,即全國(guó)這一層。而云計(jì)算軟件系統(tǒng)是一個(gè)由地名支撐的空間多層結(jié)構(gòu),是一個(gè)金字塔結(jié)構(gòu)的軟件架構(gòu)體系。每個(gè)地名結(jié)構(gòu)樹(shù)的結(jié)點(diǎn)上有一個(gè)獨(dú)立的和第一層一樣的數(shù)據(jù)服務(wù)軟件平臺(tái)。

圖二是全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)的地名結(jié)構(gòu)樹(shù)示意圖。從圖二可以看出,這是一個(gè)按照結(jié)構(gòu)樹(shù)方式進(jìn)行管理定位的地名支撐的空間多層結(jié)構(gòu)金字塔。地名結(jié)構(gòu)樹(shù)本身是采用遺傳特征來(lái)建立關(guān)聯(lián)關(guān)系和管理的。

在第一個(gè)“云”里,果業(yè)可以看成一個(gè)“質(zhì)點(diǎn)”來(lái)進(jìn)行處理,它

image.png

圖一 按地名結(jié)構(gòu)樹(shù)管理的“云嵌套”系統(tǒng)

分布在金字塔的所有結(jié)點(diǎn)上。但是進(jìn)入果業(yè)“云”后,它本身又是按照地名金字塔方式分布的軟件系統(tǒng),而其構(gòu)成部分“物流服務(wù)”被看成一個(gè)“質(zhì)點(diǎn)”來(lái)處理??梢?jiàn)全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)是一個(gè)由很多“子云”按照一定的關(guān)聯(lián)關(guān)系嵌套起來(lái)的巨復(fù)雜“云”。

圖三是果業(yè)云里的產(chǎn)銷(xiāo)服務(wù)系統(tǒng)和物流服務(wù)系統(tǒng)。實(shí)際上這是一個(gè)SAAS軟件服務(wù)“云”。這是一個(gè)更加復(fù)雜的“云”,其功能軟件分布在由地名和分類(lèi)構(gòu)成的復(fù)合金字塔結(jié)點(diǎn)上。比如張三可以使用陜西鹿馬村獼猴桃軟件管理系統(tǒng),李四可以使用湖南三家田村柑橘軟件管理系統(tǒng)。這樣設(shè)計(jì)目的是因?yàn)椴煌瑓^(qū)域的產(chǎn)品種類(lèi)是不同的,用戶的需求也是不同的,他們只需要與自己相關(guān)的軟件服務(wù)功能。

 

1671090046673185.png

圖二 帶遺傳特征的地名結(jié)構(gòu)樹(shù)

分類(lèi)也是采用帶遺傳特征結(jié)構(gòu)樹(shù)的方式來(lái)管理的,其形式和地名結(jié)構(gòu)樹(shù)一樣,可以根據(jù)需要無(wú)限分層。

產(chǎn)銷(xiāo)系統(tǒng)是一個(gè)由多個(gè)應(yīng)用服務(wù)系統(tǒng)組成的“云”,比如和果品產(chǎn)銷(xiāo)相關(guān)的功能服務(wù),包括生產(chǎn)服務(wù),報(bào)價(jià),銷(xiāo)售,網(wǎng)點(diǎn),管理等,而且在這個(gè)“云”里,功能系統(tǒng)是可以根據(jù)需要?jiǎng)討B(tài)增加或者減少的。

“云”里的每個(gè)具體功能系統(tǒng)具有“進(jìn)化”功能,即根據(jù)環(huán)境的變化,功能可以動(dòng)態(tài)調(diào)整修改,以便適應(yīng)環(huán)境的需要。

圖四里的連接線顯示了各大不同功能系統(tǒng)之間的關(guān)聯(lián)關(guān)系,果品銷(xiāo)售系統(tǒng)里的銷(xiāo)售地區(qū)和物流服務(wù)中貨運(yùn)服務(wù)系統(tǒng)里的貨運(yùn)目的地有關(guān)聯(lián)關(guān)系,貨運(yùn)服務(wù)系統(tǒng)里的目的地又和車(chē)輛配載里的發(fā)貨地也有關(guān)聯(lián)關(guān)系。事實(shí)上,果業(yè)系統(tǒng)里的功能模塊之間存在著復(fù)雜的關(guān)聯(lián)關(guān)系,相互產(chǎn)生影響。

從以上的分析可以看出,“云計(jì)算果業(yè)數(shù)據(jù)服務(wù)平臺(tái)”是一個(gè)非常復(fù)雜的系統(tǒng),目前有近200個(gè)功能系統(tǒng),比如果業(yè)生產(chǎn)銷(xiāo)售、農(nóng)資服務(wù)、物流服務(wù)等。如果采用傳統(tǒng)的軟件開(kāi)發(fā)方法,完成近200個(gè)系統(tǒng)至少需要幾十萬(wàn)行程序代碼,并且很難處理軟件系統(tǒng)的復(fù)雜結(jié)構(gòu)關(guān)系,軟件危機(jī)隱患會(huì)很?chē)?yán)重。

但是由于該平臺(tái)的開(kāi)發(fā)采用了FO軟件開(kāi)發(fā)方法,因此完成近200個(gè)系統(tǒng)目前只使用了幾百行程序代碼。

三、FO軟件開(kāi)發(fā)方法是如何解決軟件危機(jī)的

1、關(guān)于軟件危機(jī)

軟件危機(jī)是指落后的軟件生產(chǎn)方式無(wú)法滿足迅速增長(zhǎng)的計(jì)算機(jī)軟件需求,從而導(dǎo)致軟件開(kāi)發(fā)與維護(hù)過(guò)程中出現(xiàn)一系列嚴(yán)重問(wèn)題的現(xiàn)象。

1)軟件危機(jī)的外在表現(xiàn)
  上世紀(jì)80年代以來(lái),軟件工程研究與實(shí)踐取得了可喜的成就,軟件技術(shù)水平有了長(zhǎng)足的進(jìn)展,但是軟件工程所取的一些新技術(shù)和新方法,也因運(yùn)營(yíng)模式和經(jīng)濟(jì)利益等原因未被廣泛推廣和開(kāi)源應(yīng)用,軟件生產(chǎn)水平依然遠(yuǎn)遠(yuǎn)落后于硬件生產(chǎn)水平的發(fā)展速度。軟件危機(jī)不僅沒(méi)有消失,而且還有了加劇之勢(shì)。主要表現(xiàn)為:軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例居高不下,且逐年上升。軟件開(kāi)發(fā)效率的提高速度遠(yuǎn)遠(yuǎn)跟不上信息化發(fā)展的需要,軟件開(kāi)發(fā)的嚴(yán)重滯后不能充分利用現(xiàn)代計(jì)算機(jī)硬件所提供的增長(zhǎng)潛力。

image.png

圖三 果業(yè)云里的產(chǎn)銷(xiāo)服務(wù)和物流服務(wù)系統(tǒng)

云計(jì)算將引發(fā)一種新的危機(jī)——數(shù)量增長(zhǎng)危機(jī),即無(wú)限增長(zhǎng)的云計(jì)算組成成員間的有效連接以及無(wú)限增長(zhǎng)數(shù)據(jù)的快速管理。這兩種無(wú)限多的量將會(huì)使軟件面臨新的深層次危機(jī)。

(2)軟件危機(jī)的內(nèi)在根源

最早的軟件因?yàn)楸容^簡(jiǎn)單,代碼也比較少,還不存在危機(jī)。隨著計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)處理能力的不斷提高,計(jì)算機(jī)的應(yīng)用不斷得到擴(kuò)大,軟件開(kāi)發(fā)的工作量和難度隨之增加,軟件代碼量愈來(lái)愈多……,軟件危機(jī)也就產(chǎn)生和加重了。

image.png

圖四 功能模塊之間的關(guān)聯(lián)

目前99%的軟件應(yīng)用需求已不再是定義良好的數(shù)值計(jì)算問(wèn)題,而是難以精確描述且富于變化的非數(shù)值型應(yīng)用問(wèn)題。因此,當(dāng)人們的應(yīng)用需求變化發(fā)展的時(shí)候,往往要求通過(guò)改變軟件來(lái)使計(jì)算機(jī)系統(tǒng)滿足新的需求,以便維護(hù)用戶業(yè)務(wù)的延續(xù)性。

在全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)里,貨運(yùn)服務(wù)不是一個(gè)簡(jiǎn)單的數(shù)值計(jì)算問(wèn)題,而是一個(gè)應(yīng)用分析問(wèn)題。比如陜西周至縣某天發(fā)出多少量車(chē),其目的地是那里,而在某一天,預(yù)計(jì)湖南永順縣有多少量車(chē)到達(dá)等等。而且這樣的需求將會(huì)隨著時(shí)間的變化有可能發(fā)生重大的調(diào)整。

軟件的本質(zhì)就是把用戶的應(yīng)用需求采用一種程序語(yǔ)言通過(guò)計(jì)算機(jī)實(shí)現(xiàn)的對(duì)應(yīng)邏輯映射。按照這個(gè)定義,軟件如同是一種翻譯,把一種文字的作品翻譯成另外一種文字的作品。同樣的原著,不同的翻譯者,翻譯后的作品是有差別的。比如鄭振鐸翻譯泰戈?duì)柕摹讹w鳥(niǎo)集》,和冰心翻譯的《飛鳥(niǎo)集》就有差別。這種差別主要來(lái)自于他們的個(gè)性化的思維。

程序員邏輯思維的差異導(dǎo)致了程序結(jié)構(gòu)的差異,即便是同一個(gè)程序員,在不同的時(shí)間里,其思維的改變也會(huì)導(dǎo)致程序的差異。比如1000個(gè)軟件工程師來(lái)完成一個(gè)項(xiàng)目,在同一時(shí)間,可能會(huì)產(chǎn)生1000種不同思維的產(chǎn)品。如果考慮同一個(gè)人在不同時(shí)間的思維的變化,其結(jié)果可能是無(wú)法預(yù)計(jì)的。這種不確定的作品的表現(xiàn)形式是程序代碼的序列不同。也就是說(shuō),我們無(wú)法得到一個(gè)事先就可以確定的程序代碼序列代碼的最終序列要由程序員的臨場(chǎng)決定。

另一方面,用戶需求通常是很復(fù)雜,而且這種復(fù)雜度是不可能做任何簡(jiǎn)化。對(duì)于一個(gè)由很多維構(gòu)成的復(fù)雜系統(tǒng),我們很難通過(guò)圖形展示方式來(lái)描述它們的結(jié)構(gòu)。這種復(fù)雜度在剛開(kāi)始的時(shí)候,我們并不太了解,只有在完成了一定的工作或者在系統(tǒng)正式運(yùn)行后,才發(fā)現(xiàn)一些內(nèi)含的復(fù)雜結(jié)構(gòu),并需要必須處理這些結(jié)構(gòu)。由此可見(jiàn),軟件危機(jī)的內(nèi)在根源就是軟件開(kāi)發(fā)本身缺乏標(biāo)準(zhǔn)和規(guī)范,以及因需要處理復(fù)雜系統(tǒng)所編制的雜亂又龐大的代碼。

2、FO是如何解決軟件危機(jī)難題的

從軟件危機(jī)的本質(zhì)原因可以看出,如果采用現(xiàn)有的傳統(tǒng)軟件開(kāi)發(fā)方法,是無(wú)法解決云計(jì)算帶來(lái)的軟件危機(jī)。因?yàn)?,傳統(tǒng)的方法不能解決軟件復(fù)雜度的難題,也不能把程序代碼控制在有限的數(shù)量范圍內(nèi)。可以從根本上解決這兩個(gè)難題。

(1)關(guān)于FO軟件開(kāi)發(fā)方法

FO軟件開(kāi)發(fā)方法是一種把哲學(xué)方法和軟件編程技術(shù)相結(jié)合的軟件開(kāi)發(fā)方法。它是在面向?qū)ο蟮幕A(chǔ)上做進(jìn)一步抽象的方法。

FO方法包含三部分內(nèi)容,面向事實(shí)的分析(Fact-Oriented Analysis)、面向結(jié)構(gòu)的設(shè)計(jì)(Frame-Oriented Design)、面向形式的編程(Form-Oriented Programming) 的軟件開(kāi)發(fā)方法。

(a)  面向事實(shí)的分析是一個(gè)哲學(xué)處理方法,它是采用哲學(xué)方法對(duì)用戶提出的需求模型進(jìn)行分析,形成和現(xiàn)實(shí)模型對(duì)應(yīng)的邏輯模型。這個(gè)邏輯模型包含結(jié)構(gòu)和對(duì)象兩部分。而對(duì)象部分又分為形式(內(nèi)部特性)和配置(外部特性)兩部分。

以農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)為例,來(lái)說(shuō)明分析的過(guò)程。

首先把現(xiàn)實(shí)需求模型當(dāng)成一個(gè)整體,然后把它分解成幾個(gè)組成部分。比如農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)包含果業(yè)、蔬菜、藥材、養(yǎng)豬等很多業(yè)務(wù)部分,這些業(yè)務(wù)通過(guò)地名關(guān)聯(lián)方式延伸到不同的地區(qū)。然后對(duì)果業(yè)系統(tǒng)進(jìn)行分解,該系統(tǒng)包含果品產(chǎn)銷(xiāo)、農(nóng)機(jī)服務(wù)、物流服務(wù)等,這些服務(wù)通過(guò)地名關(guān)聯(lián)方式延伸到不同的地區(qū),同時(shí)通過(guò)分類(lèi)關(guān)聯(lián)關(guān)系延伸到不同的類(lèi)型,比如果品產(chǎn)銷(xiāo)里面的獼猴桃銷(xiāo)售、柑橘銷(xiāo)售等。通過(guò)這種方式,一步一步的細(xì)分,一直分解到對(duì)象,對(duì)象是最簡(jiǎn)單的。

其次,這些分析采用命題形式表達(dá)出來(lái)就得到一個(gè)邏輯模型,這個(gè)模型是現(xiàn)實(shí)模型的影象。邏輯模型的對(duì)象和連接方式由現(xiàn)實(shí)模型決定。

第三,將對(duì)象分為內(nèi)部特性和外部特性兩部分,內(nèi)部特性是對(duì)象的本質(zhì)特性,是固定不變的,稱(chēng)為形式;外部特性是非本質(zhì)的表現(xiàn)特性,是可以變化的,比如顏色、形狀、空間等,稱(chēng)為配置。

形式是無(wú)色的(沒(méi)有具體的含義),相同形式的對(duì)象所以有區(qū)別是因?yàn)槠渑渲玫牟煌?/span>

第四,制定一個(gè)“規(guī)定”,依據(jù)這個(gè)規(guī)定,配置由一系列的符號(hào)構(gòu)成。

第五,形式只關(guān)心符號(hào)本身,而不關(guān)心符號(hào)所代表的具體含義。如果一個(gè)符號(hào)在不同的場(chǎng)景有不同的含義,那也只是其對(duì)象不同。但是對(duì)于形式來(lái)說(shuō),處理的是同一個(gè)符號(hào),沒(méi)有區(qū)別。

第六,采用群的方式對(duì)邏輯模型里的構(gòu)成部分進(jìn)行重新歸類(lèi),這樣就很清楚的知道該模型里包含了多少類(lèi)同構(gòu)群。按照群的特征,如果是同構(gòu),則只需要處理一個(gè)就可以了,其余的可以利用同構(gòu)性直接獲得。比如一個(gè)信息管理網(wǎng)站,盡管有科技信息發(fā)布管理,社會(huì)信息發(fā)布管理,汽車(chē)信息發(fā)布管理,但它們屬于同構(gòu)群,因此只需要處理一個(gè)就可以了,其余的通過(guò)同構(gòu)性特性處理就可以得到。比如一個(gè)包含幾百個(gè)功能模塊的大型內(nèi)容管理門(mén)戶網(wǎng)站,只需要程序員開(kāi)發(fā)幾個(gè)功能系統(tǒng)就可以了,其余的采用同構(gòu)性得到,這樣就大大減少了軟件開(kāi)發(fā)和維護(hù)的工作量。

(b) 面向結(jié)構(gòu)的設(shè)計(jì)是對(duì)邏輯模型里的結(jié)構(gòu)部分進(jìn)行處理,先采用哲學(xué)方法對(duì)結(jié)構(gòu)進(jìn)行分解,使一個(gè)復(fù)雜的空間結(jié)構(gòu)變成一系列簡(jiǎn)單的維的組合。比如地名維,分類(lèi)維,欄目維,工作維,工作部門(mén)維等。然后采用技術(shù)的方法來(lái)實(shí)現(xiàn)這些維,比如地名維是一個(gè)包含多個(gè)帶有遺傳特征的結(jié)點(diǎn)代碼元素的集合。

在真正做好了系統(tǒng)分析工作之后,進(jìn)行設(shè)計(jì)就相對(duì)比較輕松了。在進(jìn)行系統(tǒng)分析時(shí),已經(jīng)整理出了對(duì)象的連接方式,即結(jié)構(gòu)。這個(gè)連接方式不是單一的線性方式,是一個(gè)多維的空間連接方式。同時(shí)每個(gè)維也不一定是線性的,更多的是非線性的。在“農(nóng)村數(shù)據(jù)服務(wù)平臺(tái)”中,有地名維,行業(yè)分類(lèi)維,欄目表現(xiàn)維,產(chǎn)品質(zhì)量狀態(tài)維,組織機(jī)構(gòu)維等,地名維是一個(gè)樹(shù)狀結(jié)構(gòu),產(chǎn)品質(zhì)量狀態(tài)是線性結(jié)構(gòu)。

利用軟件架構(gòu)體系搭建工具,建立一個(gè)多維空間結(jié)構(gòu)模型,對(duì)象位于空間的結(jié)點(diǎn)上。對(duì)象之間是通過(guò)空間結(jié)構(gòu)模型來(lái)建立聯(lián)系的。結(jié)構(gòu)模型的搭建和對(duì)象的設(shè)計(jì)是彼此獨(dú)立進(jìn)行的,也就是說(shuō),它們各自的修改不會(huì)相互影響,比如修改了結(jié)構(gòu)不會(huì)改變對(duì)象的功能,反之亦然,但是會(huì)對(duì)系統(tǒng)產(chǎn)生影響。

維是采用代碼形式實(shí)現(xiàn)的,結(jié)點(diǎn)代碼確定了一個(gè)唯一的空間位置。

(c) 面向形式的編程是一個(gè)簡(jiǎn)單技術(shù)實(shí)現(xiàn)過(guò)程。形式部分采用程序代碼來(lái)實(shí)現(xiàn),由程序員把邏輯模型里的對(duì)象形式描述語(yǔ)言翻譯成為計(jì)算機(jī)程序語(yǔ)言。配置部分采用文本描述方式來(lái)實(shí)現(xiàn),可以由行業(yè)專(zhuān)家來(lái)完成。

對(duì)形式的編碼是對(duì)簡(jiǎn)單功能的編碼。如果該對(duì)象的形式具有復(fù)合功能,那么該對(duì)象是一個(gè)事實(shí),需要再進(jìn)行分解,因?yàn)閷?duì)象必定是簡(jiǎn)單的。對(duì)形式的編碼實(shí)際上得到的是一個(gè)無(wú)色(即無(wú)具體指向)的功能程序,該程序通過(guò)配置得到一個(gè)具體的對(duì)象。

配置是對(duì)象外部特征的描述。一旦給出了具體的描述,就意味著建立了一種“規(guī)定”。不同的人有不同的描述方式。描述只關(guān)心符號(hào)而不關(guān)心符號(hào)所代表的含義。

配置和形式有本質(zhì)的區(qū)別,配置屬于哲學(xué)命題,是可以采用不同的方式描述,即可以有不同的規(guī)定。形式是客觀存在的,是固定的,也就是說(shuō)盡管不同的程序員的思想存在差異,但是編寫(xiě)的程序是一樣的,當(dāng)然由于思維方式的不同,代碼的多少會(huì)存在差異。

同一個(gè)功能程序(形式)和不同的配置結(jié)合,就得到了不同的對(duì)象。如果一個(gè)功能程序(形式)的程序代碼為500行,和來(lái)自不同行業(yè)的1000個(gè)不同的配置描述結(jié)合,就得到了1000個(gè)不同的軟件系統(tǒng)。由于軟件危機(jī)是由程序代碼引發(fā)的,因此在這1000個(gè)軟件系統(tǒng)里,由于只有500行代碼,因此基本上可以認(rèn)為軟件危機(jī)已經(jīng)被解決。而1000個(gè)軟件系統(tǒng)的配置描述,盡管數(shù)據(jù)量很大,但是它們不會(huì)引發(fā)軟件危機(jī)。這些數(shù)據(jù)就是軟件系統(tǒng)的“基因”,決定著軟件的多樣性。

微軟操作系統(tǒng)中龐大的程序代碼里隱藏做無(wú)數(shù)的漏洞,這些漏洞讓操作系統(tǒng)變得很不安全。如果采用把操作系統(tǒng)的程序代碼控制在有限的數(shù)量范圍內(nèi),比如10萬(wàn)行代碼,而其功能的多樣性通過(guò)“基因”方式來(lái)實(shí)現(xiàn),那么隱藏在程序里面的漏洞將基本上不會(huì)存在。最簡(jiǎn)單的辦法就是組織100個(gè)程序員,每人負(fù)責(zé)1000行代碼,他們的工作只有一件事,就是每天尋找這1000行代碼里存在的問(wèn)題。

(2)FO方法是如何解決軟件危機(jī)的

目前,在全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)的果業(yè)系統(tǒng)提供近200個(gè)功能,涉及果品生產(chǎn)銷(xiāo)售、農(nóng)機(jī)服務(wù)、農(nóng)資服務(wù)、物流服務(wù)等。該軟件體系要求每個(gè)村有自己的獨(dú)立系統(tǒng),即按照現(xiàn)行的行政管理方式建立云計(jì)算平臺(tái)里的管理模式,分中國(guó)、省、市、縣、鄉(xiāng)鎮(zhèn)、村、用戶七級(jí)行政轄區(qū)管理,比如鄉(xiāng)鎮(zhèn)系統(tǒng)管理該鄉(xiāng)鎮(zhèn)轄區(qū)的相關(guān)系統(tǒng)。產(chǎn)品或者服務(wù)同時(shí)將按照不同的分類(lèi)來(lái)進(jìn)行管理。對(duì)于一個(gè)具體的產(chǎn)品,會(huì)涉及到相關(guān)的政府部門(mén),比如食品安全,質(zhì)量檢疫,運(yùn)輸管理部門(mén),農(nóng)科站等。

可見(jiàn),果業(yè)系統(tǒng)的復(fù)雜度很高而且規(guī)模比較大,是不能采用建模方法(比如UML)來(lái)簡(jiǎn)化復(fù)雜度,去掉其中某些部分。

FO方法首先按照哲學(xué)方法對(duì)用戶需求模型進(jìn)行分析,并形成邏輯模型,邏輯模型是現(xiàn)實(shí)需求模型的映射,邏輯模型由兩部分構(gòu)成,連接形式和對(duì)象。

然后把連接形式按照類(lèi)型的不同進(jìn)行分解,每一類(lèi)表示一個(gè)維,這樣就得到了一個(gè)由多維構(gòu)成的復(fù)雜空間架構(gòu)。對(duì)象位于架構(gòu)的結(jié)點(diǎn)上。在果業(yè)數(shù)據(jù)服務(wù)平臺(tái)里,有樹(shù)狀結(jié)構(gòu)的地名維,不同的產(chǎn)品分類(lèi)維,欄目維,產(chǎn)品狀態(tài)維等。

最后把對(duì)象進(jìn)行處理,對(duì)象的內(nèi)部特性即形式通過(guò)程序代碼來(lái)實(shí)現(xiàn),而對(duì)象的外部特性通過(guò)文本描述的方式來(lái)實(shí)現(xiàn)。

通過(guò),僅使用幾百行程序代碼便實(shí)現(xiàn)了全國(guó)農(nóng)村產(chǎn)品數(shù)據(jù)服務(wù)平臺(tái)所屬的果業(yè)數(shù)據(jù)服務(wù)平臺(tái)近200個(gè)功能系統(tǒng)的目的。這幾百行代碼是對(duì)象的內(nèi)部特性。事實(shí)上,很多對(duì)象的內(nèi)部特性是一樣的,對(duì)象的差異由外部特性即配置決定,比如形狀、顏色、空間等。

北京乾坤化物數(shù)字技術(shù)有限公司研發(fā)和使用FO方法簡(jiǎn)便有效地解決了軟件開(kāi)發(fā)費(fèi)用和進(jìn)度失控、軟件的可靠性差、生產(chǎn)出來(lái)的軟件難以維護(hù)等軟件危機(jī)的早先主要問(wèn)題。

同時(shí),北京乾坤化物數(shù)字技術(shù)有限公司還使用自主知識(shí)產(chǎn)權(quán)的乾坤樹(shù),解決了云計(jì)算所需無(wú)限多成員間的有效連接以及無(wú)限增長(zhǎng)數(shù)據(jù)的快速管理引發(fā)的新的軟件深層次危機(jī)。

乾坤樹(shù)是從北京乾坤化物數(shù)字技術(shù)有限公司發(fā)現(xiàn)的整數(shù)樹(shù)特性基礎(chǔ)上的定義的一種新數(shù)據(jù)結(jié)構(gòu)。乾坤樹(shù)是帶遺傳基因的可無(wú)限增長(zhǎng)的樹(shù)。以計(jì)算方式將數(shù)據(jù)快速按規(guī)則在乾坤樹(shù)對(duì)應(yīng)的結(jié)點(diǎn)上進(jìn)行存取。使用乾坤樹(shù)時(shí)在幾百個(gè)數(shù)據(jù)與無(wú)限多數(shù)據(jù)中查詢某一存儲(chǔ)的數(shù)據(jù),所需時(shí)間及乎一樣。因乾坤樹(shù)的技術(shù)不屬于FO方發(fā),在此不多介紹。

四、FO方法對(duì)未來(lái)IT技術(shù)產(chǎn)生革命性的影響

FO軟件開(kāi)發(fā)方法基于一個(gè)基本假定,而這個(gè)假定是通過(guò)觀察而總結(jié)歸納出來(lái)的,即:任何一個(gè)復(fù)雜的連接形式都可以采用維的形式來(lái)處理;很多的對(duì)象的內(nèi)部特性即形式是相同的,之所以是不同的對(duì)象,是因?yàn)樗鼈兊耐獠刻匦圆煌?/span>

在這個(gè)基本假定正確的前提下,F(xiàn)O方法將對(duì)未來(lái)IT技術(shù)產(chǎn)生革命性的影響。

1、任意龐大功能的軟件系統(tǒng),其程序代碼都可以控制在有限的范圍內(nèi),比如1萬(wàn)行或者10萬(wàn)行程序代碼。

2、任意復(fù)雜的軟件架構(gòu)都可以轉(zhuǎn)換為多個(gè)簡(jiǎn)單維的組合。

3、對(duì)象的形式是有限的,也就是說(shuō),隨著應(yīng)用的增加,需要編程的形式會(huì)越來(lái)越少。通過(guò)開(kāi)源方式,這些有限的程序會(huì)越來(lái)越優(yōu)化。人們的主要工作轉(zhuǎn)移到對(duì)對(duì)象外部特性的描述配置上,軟件的生產(chǎn)效率會(huì)得到極大的提高。

4、用戶可以通過(guò)調(diào)整軟件架構(gòu)的組成維或者調(diào)整對(duì)象的配置來(lái)調(diào)整軟件的功能,而這個(gè)過(guò)程是可以在運(yùn)行中動(dòng)態(tài)完成的。

五、結(jié)論

由于FO軟件開(kāi)發(fā)方法解決了云計(jì)算帶來(lái)的軟件危機(jī)難題,因此會(huì)進(jìn)一步加快云計(jì)算應(yīng)用的步伐。


注:本文是中國(guó)嵌入式系統(tǒng)產(chǎn)業(yè)聯(lián)盟網(wǎng)絡(luò)空間命運(yùn)共同體研究會(huì)交流文



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉