GeneXus的科技基础(GeneXus背后的理论)
GeneXus 是一個用于開發和維護軟件系統的工具。
GeneXus 基于業務系統知識的自動管理。這怎么可能?通過在數學和邏輯方面定義系統開發和維護問題,以確保嚴格處理所考慮的問題。
GeneXus的目標是獲得一個充分代表現實并且可以隨著時間保持最新的模型。如何做到這一點?通過對現實的準確描述,通過描述用戶對數據的不同視圖。描述是在 GeneXus 對象中捕獲的,具有必要的表達能力以正確表示該現實。然后捕獲并綜合這些視圖中包含的知識以構建模型。
GeneXus 通過知識庫與模型一起工作,知識庫由存儲知識的數據庫和推理機制組成,推理機制允許從存儲的知識開始,獲得可以從邏輯上推斷出的任何其它知識。
此推理是一種確定性操作,其中使用了數學方法和工具、謂詞邏輯、計算機科學和人工智能。推斷的知識范圍從簡單到非常復雜的事物,例如數據庫設計或任何程序的生成。
所有這一切都是通過內部研究實現的。自 1984 年以來,由工程師和數學家組成的團隊為該項目投入了數百人的研究和開發。GeneXus 的第一個版本是在三十多年前發布的。截至2005年,全球有 7,000 名客戶和超過 85,000 名開發人員圍繞 GeneXus 建立了自己的職業生涯。
GeneXus 通常用于構建大型關鍵任務系統。
簡而言之,GeneXus 是一個用于軟件系統開發和維護的工具,實現手段是通過描述而不是編程的方法。
1、簡介
我們創建 GeneXus 的研究始于 1984 年。當時,我們正在尋找一種產品,以便幫助我們的客戶應對我們預期隨著時間的推移會發生的重大變化。當時的情況與現在大不相同,大多數應用程序都是面向批處理的,交互式應用程序具有非常基本的文本屏幕和對話框。一般來說,最終用戶是為組織工作的員工。
現如今,世界上大多數居民都是許多系統的潛在用戶。1980年代的大公司使用幾千兆字節的數據庫,而今天的公司數據庫已達到幾千PB字節。也就是說,它們的體積翻了百萬倍!
我們的目標是將應用程序的開發和維護“工業化”,以降低成本并避免呈指數增長的人為錯誤。
我們一開始面臨的一個簡單問題是哪些事情可以自動化,哪些不能?我們的目的是使用 GeneXus 來自動化所有可以自動化的東西。
GeneXus 是一支卓越的高素質專業團隊努力的產物,他們以杰出的慷慨、熱情、承諾和信念將他們的科學和技術專長用于項目服務。盡管在這些過程中遇到了困難,但他們始終對自己的工作充滿熱情。
但我們也必須說,今天的 GeneXus,尤其是未來的 GeneXus,遠遠超出了實驗室所能完成的范圍。如果沒有與 GeneXus 社區日益重要的互動,GeneXus 就不可能實現。GeneXus 社區由全球超過 85,000 名開發人員組成,圍繞它開展專業活動。
有時我們會發現一些潛在客戶,雖然他們對 GeneXus 提供的可能性非常感興趣,但害怕將其作為戰略解決方案,因為他們發現它與他們所知道的如此不同。
如果我們考慮歷史上所有偉大的創新,這方面并不新鮮。著名科幻小說作家亞瑟·C·克拉克 (Arthur C. Clark) 提到了這一點,他說:“任何足夠先進的技術都無法與魔法區分開來。”。我們的技術沒有任何神奇之處:它是明確目標、持續承諾、持續努力的結果,以及少量很好的想法和數百人年的研究和開發,利用所有可用的科學和技術,例如數學、邏輯、計算機科學和人工智能的方法和工具。
(譯者注:這里的人工智能是基于ProLog人工智能語言的專家式人工智能技術,而非基于機器學習的人工智能技術。)
我們于 1984 年開始使用這個工具包,并隨著我們自己的理論發現和我們隨著時間的推移構建的新工具不斷增加它。我們利用這個基礎建立并不斷改進業務系統現實的元模型,這使我們能夠在任何給定時間獲取每個公司所需的特定模型,并自動生成和維護他們的應用程序(數據庫、程序、和過程)。
2. 目標
主要目標是為通常影響所有系統開發中遇到的許多問題找到解決方案,以下是所面臨的常見問題:
-
?重點關注技術而不是業務;
-
?應用的低級技術導致非常低的生產力、人為錯誤和開發人員缺乏動力;
-
?可用的文檔往往不完整和過時,部分知識只存在于一些開發人員的腦海中;
-
?隨著新技術的引入,這些開發人員的技術知識在短短幾年內就會過時。
那么,如何才能避免這種情況呢?
答案是:通過自動化可以自動化的一切。
在系統開發中什么可以自動化,什么不能自動化?
GeneXus 30 多年幫助數萬家客戶并被全球數百萬名開發人員使用的經驗表明:
整個系統的開發和維護都可以自動化:
系統開發和維護是指數據庫、程序和流程的設計、生成和維護,所有這些最終都可以被視為非創造性的日常任務,因為它們可以從合適的模型中自動推斷出來。
每家公司都需要一種在每種情況下都不同的特定模型。構建模型意味著理解客戶需求的創造性任務。
3. 如何達到目標
-
模型
實現擬議目標的第一個基本要素是設計一個充分代表現實的模型。
-
客觀性
在我們的模型中引入主觀元素將使其在很大程度上取決于構建它的個人。
隨著問題規模的增加,主觀性方面與越來越嚴重的錯誤相關聯。
我們的模型必須建立在客觀要素的基礎上。
-
自動管理
每個模型都包含大量知識,手動使用時不會顯著提高生產力。
此外,我們將無法避免開發人員所犯的眾多人為錯誤。
為了實現我們的目標,我們必須創建一個模型,允許程序使用其中包含的知識,而無需人工干預。
-
增量開發
現實不是靜態的,沒有靜態模型能夠隨著時間的推移準確地表示它:
我們需要模型能夠以增量的、非破壞性的方式不斷適應現實。
-
獨立于信息技術
信息技術在不斷發展,一般來說,這種演變是破壞性的。
頻繁發布新的操作系統、數據庫管理系統、編程語言、通信監控和隱喻:面向批處理、與文本屏幕交互、Windows、Web、智能設備……接下來會發生什么?
如果我們的模型依賴于特定時間使用的信息技術,那么在轉向新技術時它就會過時。
所以,我們的理論模型必須是完全排除當前信息技術元素的知識的規范。
4. 模型和知識庫
它是關于以自動方式處理純知識,并從存儲的知識中推導出所有可以從邏輯上推斷出來的知識。模型是包含所有這些知識的理論概念。我們的理論模型于 2010 年公開,以協助 GeneXus 社區和其他有興趣推進基于知識的軟件公司。
我們必須自動處理知識,為此我們實施了知識庫,它由兩部分組成:
-
?數據庫
存儲知識的數據庫由一個從市場中選擇的關系數據庫和一組簡單但重要的擴展組成,例如,這些擴展允許它有效地處理未預先定義的復雜對象和元素。
-
?推理機制
推理機制是基礎。一開始,我們可能會認為數據庫中存儲的是對舊式數據字典的簡單改進。添加的強大而復雜的推理機制使一切變得不同:
就像在數據字典中一樣,存儲在其中的元素可以隨時檢索并通過交叉引用相互關聯。然而,這絕對是不夠的:我們還需要能夠獲得任何知識,盡管沒有存儲,但可以從實際存儲的知識中推斷出來。
基本示例
-
對于一組數據視圖,獲取合適的最小關系模型。
-
對于特定的數據視圖,生成必要的程序來使用它。
5. 描述知識的客觀性 - 透視同構法
幾個世紀以來,繪畫都是憑經驗發展起來的,沒有任何規則來支持它們。1417 年在佛羅倫薩,意大利藝術家和建筑師 Filippo Brunelleschi 提出了一套我們今天仍在使用的規則(描述性幾何原理)。
但是,透視以何種方式與數據分析相關?
透視法是一個重要的靈感來源。最重要的是它觸發了范式轉變的開始:隨著透視法的采用,我們從一種復雜、令人困惑和主觀的方法(我們“按照我們認為的那樣”繪制對象) ) 到描述性的、簡單的和客觀的方法(我們繪制一個“我們所看到的”對象)。
如果我們能對數據做類似的事情,我們就會取得巨大的進步!
實際上,我們可以說:我們需要描述現實的所有知識都可以從用戶的視圖中獲取。
如果我們考慮“在組織中,誰以必要的客觀性和詳細程度了解數據?”的問題。我們將看到答案是否定的。
因此,讓我們嘗試將其替換為另一個可以回答 YES 并可以幫助我們構建我們想要的模型的模型:“公司用戶對哪些主題有客觀詳細的了解?”。每個用戶都非常了解他或她使用的數據的視圖。
讓我們回到透視法;在透視和數據分析中,我們“描述視圖”。從這些視圖中,我們獲得了知識。?
(譯者注:主題是人對外部對象的觀察、體驗、分析、研究等后得出的理解、觀點、評價等認識結晶。其中既包括主觀的認識又包括客觀的認識。)
6. 模型概述
一個顯而易見的問題是:給定一組數據視圖,我們能否為它們推斷出合適的數據模型?
這是一個很好的問題,因為它將問題帶到了數學領域。
-
首先,我們必須定義一個參考框架。
不同數據元素的名稱將遵循明確的命名規則,以便自動處理。
-
其次,每個視圖都有一個必須以準確和客觀的方式表示的結構。
-
第三,我們需要一個過程來從一組數據視圖轉換到相應的模型。
我們將前面的問題改寫如下:
給定一組數據視圖,有適合他們的最小關系模型嗎?
答案是肯定的!
因此,在仔細定義問題并確定之后,我們回到工程領域并開發了一個程序來生成模型。
綜上所述,到目前為止,我們已經對問題進行了仔細的定義,來自數學、邏輯、人工智能和工程領域的廣泛方法和工具可以幫助我們來解決這個問題。
7. 自動化管理
一旦我們從通過數據視圖捕獲的知識中獲得了模型,我們是否可以自動生成必要的程序?
一開始,我們并沒有考慮生成程序,但是 IT系統一直遭受的所謂“穩定數據庫”的失敗,使我們堅定信念我們應該解決這個問題。否則,我們的客戶將始終背負高昂的維護成本。
幾乎從一開始,計算機科學就承擔了程序自動生成的問題。生成器基于“模板”或“框架”,從填充空白的方法開始,然后變得越來越復雜,最終解決了安裝需求的很大一部分。
但這不是我們想要的,因為我們想要生成“所有”必要的程序,否則我們將無法確保自動維護。
8. 增量開發
穩定的數據庫可能嗎?
“穩定的數據庫”是計算機科學中反復出現的問題。這個想法是這樣的:
如果我們為特定企業提出“正確的數據庫”,那么該數據庫在未來將保持穩定。因此,隨著時間的推移,我們將簡單地編寫使用它的程序。
關于這個主題已經寫了很多。
然而,這個論點是錯誤的,因為一個組織只有在它停滯或死亡的時候才有一個穩定的模型!因此,最好不要浪費任何精力去尋找這樣的穩定模型,而是準備好使用可能的、真實的、不穩定的模型。
那應該如何做好數據庫不穩定的工作?
這是全新的東西。這個想法是在概念層面擁有一個知識庫,以增量方式動態適應公司的需求,并能夠自動生成數據庫結構和程序中的必要更改,以便一切隨著時間的推移按照最佳方式正常工作。
這是一項巨大的技術/科學挑戰,我們在 30 年前成功戰勝了這一挑戰。關鍵是完全獨立于像文件和訪問機制等物理元素的知識表示。
9. 獨立于信息技術
信息技術以一種非常動態且無政府主義的方式發展:所有大公司都發布他們的創新產品,試圖以最具商業效率的方式與其他公司競爭。經常引入破壞性創新,會給用戶帶來嚴重的問題。
我們的目標是讓我們的知識庫獨立于給定時間使用的技術,這樣,只需構建新的生成器,我們就可以使用舊知識為未來可能流行的新技術生成應用程序。30 多年來,我們的客戶一直受益于此功能。
總結
以上是生活随笔為你收集整理的GeneXus的科技基础(GeneXus背后的理论)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PKU2069 Super Star 点
- 下一篇: ubantu18.10安装mysql