當前位置:首頁 » 編程軟體 » OMG編譯器

OMG編譯器

發布時間: 2023-04-13 01:54:59

c語言在64位系統上怎樣編輯運行

  1. C語言源程序的編譯及運行的關鍵是在於編譯器而不是系統平台。

  2. 在64位系統下,如果使用能夠兼容32位的編譯器,那麼編譯的程序就是32位的。當然,對於大多數32位編譯器,都不能很好的在64位系統下運行。這個時候你就需要一個64位的編譯器,比如微軟的Visual C++ 2010及以上版本,下載的時候注意下載x64版本。使用64位編譯器編譯出來的程序就是64位的。

  3. 使用64位平台編譯程序的時候需要注意一個問題:

    int相關的類型在不同位數機器的平台下長度不同。C99標准並不規定具體數據類型的長度大小,只規定級別。作下比較
    (1)16位平台
    char 1個位元組8位
    short 2個位元組16位
    int 2個位元組16位
    long 4個位元組32位
    指針 2個位元組
    (2)32位平台
    char 1個位元組8位
    short 2個位元組16位
    int 4個位元組32位
    long 4個位元組
    long long 8個位元組
    指針 4個位元組
    (3)64位平台
    char 1個位元組
    short 2個位元組
    int 4個位元組
    long 8個位元組(區別)
    long long 8個位元組
    指針 8個位元組(區別)


java如何調用c語言源文件並進行執行.

Think in java 這本書的附錄有這么一章 使用非JAVA代碼

附錄A 使用非JAVA代碼

JAVA語言及其標准API(應用程序編程介面)應付應用程序的編寫已綽綽有餘。但在某些情況下,還是必須使用非JAVA編碼。例如,我們有時要訪問操作系統的專用特性,與特殊的硬體設備打交道,重復使用現有的非Java介面,或者要使用「對時間敏感」的代碼段,等等。與非Java代碼的溝通要求獲得編譯器和「虛擬機」的專門支持,並需附加的工具將Java代碼映射成非Java代碼(也有一個簡單方法:在第15章的「一個Web應用」小節中,有個例子解釋了如何利用標准輸入輸出同非Java代碼連接)。目前,不同的開發商為我們提供了不同的方案:Java 1.1有「Java固有介面」(Java Native Interface,JNI),網景提出了自己的「Java運行期介面」(Java Runtime Interface)計劃,而微軟提供了J/Direct、「本源介面」(Raw Native Interface,RNI)以及Java/COM集成方案。
各開發商在這個問題上所持的不同態度對程序員是非常不利的。若Java應用必須調用固有方法,則程序員或許要實現固有方法的不同版本——具體由應用程序運行的平台決定。程序員也許實際需要不同版本的Java代碼,以及不同的Java虛擬機。
另一個方案是CORBA(通用對象請求代理結構),這是由OMG(對象管理組,一家非贏利性的公司協會)開發的一種集成技術。CORBA並非任何語言的一部分,只是實現通用通信匯流排及服務的一種規范。利用它可在由不同語言實現的對象之間實現「相互操作」的能力。這種通信匯流排的名字叫作ORB(對象請求代理),是由其他開發商實現的一種產品,但並不屬於Java語言規范的一部分。
本附錄將對JNI,J/DIRECT,RNI,JAVA/COM集成和CORBA進行概述。但不會作更深層次的探討,甚至有時還假定讀者已對相關的概念和技術有了一定程度的認識。但到最後,大家應該能夠自行比較不同的方法,並根據自己要解決的問題挑選出最恰當的一種。

A.1 Java固有介面
JNI是一種包容極廣的編程介面,允許我們從Java應用程序里調用固有方法。它是在Java 1.1里新增的,維持著與Java 1.0的相應特性——「固有方法介面」(NMI)——某種程度的兼容。NMI設計上一些特點使其未獲所有虛擬機的支持。考慮到這個原因,Java語言將來的版本可能不再提供對NMI的支持,這兒也不準備討論它。
目前,JNI只能與用C或C++寫成的固有方法打交道。利用JNI,我們的固有方法可以:
■創建、檢查及更新Java對象(包括數組和字串)
■調用Java方法
■俘獲和丟棄「異常」
■裝載類並獲取類信息
■進行運行期類型檢查
所以,原來在Java中能對類及對象做的幾乎所有事情在固有方法中同樣可以做到。

A.1.1 調用固有方法
我們先從一個簡單的例子開始:一個Java程序調用固有方法,後者再調用Win32的API函數MessageBox(),顯示出一個圖形化的文本框。這個例子稍後也會與J/Direct一志使用。若您的平台不是Win32,只需將包含了下述內容的C頭:
#include <windows.h>
替換成:
#include <stdio.h>
並將對MessageBox()的調用換成調用printf()即可。
第一步是寫出對固有方法及它的自變數進行聲明的Java代碼:

class ShowMsgBox {
public static void main(String [] args) {
ShowMsgBox app = new ShowMsgBox();
app.ShowMessage("Generated with JNI");
}
private native void ShowMessage(String msg);
static {
System.loadLibrary("MsgImpl");
}
}

在固有方法聲明的後面,跟隨有一個static代碼塊,它會調用System.loadLibrary()(可在任何時候調用它,但這樣做更恰當)System.loadLibrary()將一個DLL載入內存,並建立同它的鏈接。DLL必須位於您的系統路徑,或者在包含了Java類文件的目錄中。根據具體的平台,JVM會自動添加適當的文件擴展名。

❸ 如何基於visual studio 進行數據建模

Visual Studio Team System 建模策略與 FAQ

適用於:
Microsoft Visual Studio Team System
摘要:客戶和合作夥伴迫切希望了解 Microsoft 對於模型驅動開發的策略,及拍蘆其對 Visual Studio Team System 的支持。當向他們解釋我們的策略時,他們經常表現出對某些相同主題的興趣,並引出一些相同的關注點。本文,我們講述模型驅動開發的策略,以及開發人員通常會涉及到的一系列問題與解答。首先的五個問題涉及到我們策略的主要結構,我們將對其進行詳細的回答與解釋。其他的常見問題均集中於最後一部分的常規 FAQ 部分中。
本頁內容
為什麼建模?
如何在模型驅動的開發中使用 DSL?
UML 如何?
MDA 如何?
軟體工廠是什麼?
其他常見問題

為什麼建模?
客戶曾經告訴我們,他們在 80 年代和 90 年代初所購買的多數 CASE 工具不能為開發過程增加足夠的價值。由購買的工具帶來的利益並未實現,甚至好的產品也會被過度誇耀的技術承諾所掩蓋。
如果工具支持的模型不能反應代碼以及其他的實現產品,那麼這些工具很快就會被摒棄。如果工具支持的模型用於生成代碼,那麼當開發人員根據生成的代碼增添其他代碼時,工具通常不能與之同步。盡管這些工具為生成的代碼提供了很好的"往返行程",但最終開發人員還是身陷於解決此類問題的錯綜復雜的情況中。因為 CASE 工具試圖以超高級別的抽象(與底層實現平台相對)進行操作,所以這些問題經常變得更糟。這會導致生成大量代碼,由於混合了手寫代碼和生成的代碼,因此要解決這些問題更加困難。
盡管存在這些問題,但是與某些軟體開發過程有關的一個觀點是 - 應用建模可以讓開發更輕松。我們的目標是改變開發人員看待建模價值的方式。要將他們的觀點(建模是一個在真正開始開發之前不太重要的有用活動)改變為承認建模是一個重漏賀友要的、主要的開發任務,並且不是主要集中於文檔的活動。當將模型視為首要的開發產品時,由於可以使用更強大的應用程序抽象,因此開發人員會編寫更少的常規代碼。模型驅動的開發也因此順理成章地更加高效和靈活。此外,其他涉及到的開發人員(從業務分析師、架構師、設計師到網路的用戶以及系統管理專業人員)會發現建模對其所負責的任務會產生增值。當模型以這種方式橫跨開發和運行時活動時,人員之間的交流可以得到優化,且可跟蹤性使得能夠跨越生命周期的任何階段。我們堅信,以這種方式確立建模的主要位置,最終可以改變軟體開發的經濟性,並且保證軟體系統能夠滿足業務的需要。該模型驅動開發的方法由 Microsoft 首創,是名為軟體工廠 的產品的一部分。
注 軟體工廠的深入說明,請參閱「Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools」,作者為 Jack Greenfield 和 Keith Short,以及 Steve Cook 和 Stuart Kent。
返回頁首

如何在模型驅動的開發中使用 DSL?
Microsoft 已經從過去的行業經驗中有所收獲,並且避免了 CASE 的缺陷,這是通過採納基於返槐下列想法的模型驅動開發實現的:
模型應該是項目中首要的產品 - 不僅僅是一些快過時的文檔。模型有精確的語法,通常利用圖形化工具易於進行編輯和瀏覽,並且包含確定模型中特定於域的概念如何映射到其他實現產品的語義,這些實現產品包括代碼、項目結構和配置文件等。按照這種方法,模型非常類似於源代碼文件,而且它與其他實現產品同步的機制非常類似於編譯器。
模型表示一組抽象,它以定義完善的開發內容為開發人員提供支持。例如,考慮這樣一個任務:生成一個通過 Web 服務與組件進行連接的、面向服務的應用程序。要構建這樣一個應用程序,假設給定開發人員必須關注的所有其他任務,在這種情況下,根據服務合同和開發人員之間交流的信息,該開發人員可以只關註定義整個應用程序連接性。為軟體架構師的應用程序設計器提供的 Visual Studio Team Edition 完全支持開發的個各個方面,並管理應用程序連接性模型和所有其他產品(WSDL 文件、項目文件、代碼文件、配置文件等)之間的關系。必須開發這些產品以實現由模型定義的互聯。按照這種方式設計作為源產品的模型,具有額外的好處 - 提供對其他分散細節的整體視角,並且能夠讓不同團隊(包括設計、構建和部署復雜、現代化應用程序)之間的溝通更加順暢。
由於模型能夠提煉並聚合大量產品中的信息,因此它們能夠更輕松地支持一致性檢查和其他形式的分析。例如,一個應用程序連接模型可以支持協定協議驗證、安全性分析或性能分析。
通過一個與編輯類似的過程可以實現模型,在該過程中,由編譯器生成的代碼、配置文件和其他實現產品均不能進行手工編輯。然而,較普遍的情況是,模型可以由生成產品和手工編輯產品的組合實現。在這種情況下,非常重要的一點是,仔細管理使生成和手工編輯產品相互適應的方法。如上所述,不能有效做到這一點是 CASE 產品的一個主要不足之處。我們已經使用了一些技術來確保生成的產品和手工編輯產品保持獨立,並且當生成工具需要套用代碼時,決不會與由開發人員添加的代碼發生沖突。這些技術包括,使用類委託和繼承,特別是使用"部分類" - 它是 Visual Studio 中 .NET 語言的一個新特性,利用成形的任務已經進行了特別定義。
我們將以這些方式定義的建模語言稱為 Domain Specific Languages 或 DSL。可以將 DSL 想像為一種用來解決一些清晰確認問題的小規模、高集中化的語言。這里所說的問題是分析師、架構師、開發人員、測試人員或系統管理員必須要處理的問題。開發人員已經熟知的 DSL 示例是:用於數據操作的 SQL 和用於 XML 文檔結構定義的 XSD,等等。另一個來自 Visual Studio Team Edition for Software Architects 的示例是,用於對數據中心硬體和宿主軟體配置的邏輯結構進行建模的 DSL。該 DSL 及其相關的圖形設計器可以用於設計時(配置應用程序以與其部署目標相匹配)的驗證,在問題可以更容易地解決時向開發人員發出警告。
找到備選 DSL 的好辦法是明確開發人員使用的模式,然後將其封裝到建模語言中,或將軟體框架中的概念作為建模語言中的抽象表層化,然後能夠生成可擴展整個框架的少量代碼。這些技術允許我們控制生成代碼的數量和復雜度,從而為開發人員提供真正意義的價值,而無需爭論對 CASE 產品的刻畫。
最近,Microsoft 發布了 DSL 工具 - 使客戶和合作夥伴能夠通過 Visual Studio 中的相同的技術構建 DSL,這些技術用於構建與 Visual Studio Team Edition for Software Architects 一起發行的建模工具。可以將該技術認為是"構建工具的工具",簡化了定義 DSL 的任務,並降低了為工具構建圖形化編輯器和編譯器的代價和技能
返回頁首

UML 如何?
多數理解我們就模型驅動開發這一觀點的人員,把我們假想為將重點放在 DSL 上,這一假設將我們置於一個與 UML 對立的位置。我們希望對這一不正確的想法予以澄清。在 UML 之前,各種各樣的建模方法缺乏生產效益,這些方法最終形成 UML 1.0,這是在軟體開發中使用模型方面向前邁進的重要一步。
但是不管是出於什麼原因,UML 和基於 UML 工具的存在沒有顯著改變開發人員構建應用程序的方式。或者說,沒有為開發人員生產效率提供明顯的幫助。自從 Microsoft 提供了一個最可用的 UML 工具(基於 Visio 的工具)- 最先與 Visual Studio Enterprise Architect 一起提供,我們對該工具的使用進行了開發人員的(不僅限於我們的客戶)匿名調查。我們發現,只有很少數人聲明其任務支持 UML 工具,大部分使用者僅使用類圖表。當我們訓練這部分聲明使用類圖表的人員時,實際使用它們生成代碼的數量很少。
除了在 Visual Studio Team Edition for Software Architects 中的模型驅動的開發工具之外,這是驅動因素之一。我們真正想要進行的是開發人員和架構師很難發現的任務,並找出建模工具可能為其增值並提供幫助的辦法。我們強烈支持 UML 符號和圖表。在 Microsoft 中任意的開發人員辦公地點走走,就會發現白板上密布著 UML 類圖表以及序列圖表。我們不僅在規範文檔中、在很多其他為演示准備的圖表中使用 UML 符號,甚至還會將 UML 符號記錄在自助餐廳的餐巾紙上。要支持客戶的這些需要以生成文檔和概念化草圖,我們將繼續在 Visual Studio 中提供 UML 工具集。事實上,通常在 Microsoft 內,我們使用 UML 的目的很多(例如用於文檔或概念共享),但幾乎從未 有任何一個是出於以下目的,這些文檔是軟體開發的實際產物。
辦公室和走廊里相同的白板也布滿了隨意寫下的代碼。但在這里再次聲明這都是草稿。這些代碼很少能正確指示程序源代碼編譯。這對開發人員而言是重大的區別。任意一種有助於實際軟體開發的產品必須能夠進行數字化操作。源代碼有定義完善的語法,易於理解的語義(通常由編譯器的轉換以較低級的代碼或中間語言定義),並且能夠由編譯器、調試器和重構程序進行一致性操作。要有益於開發人員,模型必須 有與源代碼相同的狀態。模型還必須有精確的語法、易於理解的語義,以及定義完善的到源代碼或其他定義完善模型的映射。它必須不僅 限於文檔。
例如,採用 Visual Studio Team Edition for Software Architects' Application Designer。它不僅僅是文檔,雖然它以該目的進行使用。它更希望使開發人員(或架構師)能夠將注意力集中於系統的某一部分;而不是面向服務的體系結構中服務間的連接。她可以在構建項目、WSDL 文件、代碼和架構之前設計系統的該部分,或要求工具文檔化服務間的連接(如果這些產品已經存在)。由於連接信息分散於眾多開發產品之中,因此整體視圖(如圖表)提供了基本的使用,盡管所有傳遞的信息可能因對實施產品的仔細檢查而減少。應用程序設計器有定義完善的語法(它的 DSL 元模型)和可預知的、始終同步的到各種實施產品的映射。基礎設計器框架承擔應用程序設計器圖表編譯器的作用,非常類似於與源代碼文件相關的傳統編譯器的作用。
但是,為什麼我們不能只將這種新的服務連接"語言"構建為對 UML 的擴展呢?特別是對 UML 2.0 的改進呢?
當然,當我們看出採取 UML 2.0 規范的趨勢時,我們意識到,它依舊不能成為文檔之外其他事物的基礎是有原因的。由於更加復雜的子語言,UML 2.0 規范已經增加了標準的復雜性,但是它依舊不能以一種自然的方式解決現代應用程序開發的關鍵問題,例如,資料庫設計、測試、部署、面向服務、基於組件的開發以及用戶界面結構。由於沒有自然的 UML 子語言滿足服務連接的需求,因此我們必須利用現有 UML 子語言中的構造型和標記來重新描述我們的應用程序設計 DSL。這會導致在已由業界眾多膨脹、復雜的規范描述的設計中極其復雜的模型。利用標準的 UML 符號(其中,對應於任何已經擴展的子語言中現有的形狀都可以重用),對於圖表的可讀性和清晰度而言是一種折中方案。最後,我們會糾纏於規范中關鍵內容缺乏精確度以及 UML 中固有的類型系統不匹配(較之於 .Net 和 XML 語言)之中。
由於這些原因,我們選擇利用一個為特定目的構建的元模型來定義應用程序設計 DSL,該模型本身作為相關元模型家族中的一員進行定義。這為服務連接提供了自然且精確的基礎,以及到基礎實施產品(當然包括一些代碼)的高保真映射。對於其他關注的開發任務,我們已經得到了相同的結論,並因此產生了與其他白皮書中所述相似的類設計器和邏輯數據中心設計器的 DSL。對可擴展 DSL 的支持,構建為一系列具有定義完善的 DSL 與其他開發產品間的映射,最終成為 Microsoft 模型驅動開發策略的基礎。
綜上所述,我們推薦在以下情況下使用 UML 和基於 UML 的工具:
草圖。
白板。
餐巾紙。
文檔。
不直接與代碼相關的概念性繪圖。
我們推薦在以下情況中使用恰當定義的 DSL 和基於 DSL 的工具:
從中生成代碼的精確抽象。
映射到框架和組件中變化點的精確抽象。
DSL 之間的精確映射。
具有到其他 DSL 或代碼產品的精確指明映射的概念性繪圖。
我們不推薦將上述幾點用於詳細編程邏輯的可視化編程(或至少在近幾年之內)。
返回頁首

MDA 如何?
MDA 是 OMG 的一個授權品牌,它基於利用模型驅動開發的 UML。它重點強調與平台無關的模型以及衍生出的技術。根據 OMG FAQ,
"MDA 是編寫規范和開發應用程序的一種新方式,它基於平台無關的模型 (PIM)。完整的 MDA 規范包括,一個基於 UML 模型的確定無關平台、一個或更多特定於平台的模型 (PSM) 以及介面定義集,它們分別描述基本模型如何在不同的中間件平台上實現。完整的 MDA 應用程序包括,一個確定的 PIM、一個或更多的 PSM 以及完整的實施,應用程序開發人員決定支持的每個平台均對應一個 PSM。"
MDA 由 OMG 定義,僅解決實際問題的一個小子集,這些問題必須用於驅動有效的模型驅動的開發。一個有效的模型驅動開發方法必須能夠解決編程問題,例如:
可以開發哪些類型的系統?由於不同系統之間存在著明顯的差異,因此模型驅動開發方法必須能夠辨別這些差異。要有效實現,首先描述要解決的問題,然後標識可以解決問題的特定技術,顯示適合解決方案的每一種技術,各種技術如何協調工作以完成解決方案。
給定類型系統的體系結構是什麼?這個問題的答案不僅僅是考慮可以使用的技術,而且還涉及識別這些技術的特性(對設計系統的每個部分都很重要),以及配置每種技術的用法。這是軟體體系結構的主題,已被公認為軟體生命周期中最重要的定律之一。軟體體系結構定義了為系統提供其結構以及定義其質量屬性的高級設計決策。由於模型最初用於描述系統重要部件的體系結構,因此模型應該更緊密地與軟體體系結構開發相集成。
需要為給定類型的系統繼續哪方面的建模?由於不同系統的體系結構有非常大的差異 ,因此沒有單獨的模型集能夠有效描述所有可能的系統。因此,這個問題的答案將因系統類型而異。我們的觀點是:每個目標平台上單個的 PIM 和單個的 PSM,所有的開發均利用一個由 MDA 指定的常規目的建模語言,足以支持由模型驅動開發承諾的非常高級別的自動化。軟體生命周期中豐富的自動化需要大量其他類型的模型,例如以下這些模型:
捕獲、分析和管理需求;標識需求之間的跟蹤關系,體系結構設計和實現結構,能夠進行需求已實施的驗證,以及在需求變更時支持對產生影響的分析。
以下列方式定義軟體體系結構:支持安全性、性能和可靠性分析以及其他格式的評估;能夠從組件啟用預知的系統程序集,以及有效、可逆地逐步從需求和部署進行轉換。
定義可執行的系統組件如何打包,標識部署環境中每個組件都需要的資源類型,以及將組件綁定到這些資源類型的特定實例。
定義測試用例、測試數據集、測試工具和其他產品,更易於評估利用模型開發的軟體的質量,以管理和顯示測試結果。
標識模型和其他產品間的跟蹤關系,更易於在系統宕機時支持對業務影響的分析,將系統配置為滿足需求,並加強系統配置期間的約束。
定義用於構建可執行文件的源產品的配置,更易於版本化這些配置,以與缺陷報告和具有特定版本的特性變更需求相關聯。
模型驅動的技術如何與代碼為主的開發技術集成?模型用於輔助開發人員實現任務,例如查詢和導航代碼基、調試、分析、覆蓋分析、模式化應用程序和重構,並且可以緊密集成到面向文件的開發環境。
此外,除了上述說明的原因,強調利用發布的 UML 元模型是我們的問題所在。最後,盡管強調平台無關是某些客戶所關注的,但是我們了解到更多的是他們有關對生產率、可預見性、安全性、管理以及部署和管理應用程序的有效方式的需求。然而,我們絕對贊同有關構建應用程序而使用的模型是 MDA 的中心,且重要的是模型間定義完善的映射,我們識別以下值,模型可為其提供構建跨具有互操作組件的平台的應用程序。
某些進行模型驅動開發的組織接受對術語 MDA 更廣泛的解釋,而不是由 OMG 描述的解釋;的確,如我們所述,他們必須這樣做才能獲得成功。使用任意的 OMG 規范以實現模型驅動的開發,是 MDA 典型的應用,無論是否包含 PIM 和 PSM。例如,某些組織發現 OMG 的 MOF 規范是 MDA 的關鍵。該觀點取決於用 MOF 定義的新的建模語言,而不是在 UML 中預定義的建模語言,且該觀點與我們的方法極其相似。我們將支持與其他平台上普遍採用的 UML 和 MOF 工具進行交互,通過 XMI 或是通過本機格式,幫助客戶成功利用它們進行模型驅動的開發。
返回頁首

軟體工廠是什麼?
正如前面提到的,我們對於模型驅動開發的方法是 Microsoft 稱之為軟體工廠 的一部分。取代了一般的、一種規模滿足所有需要的方法,軟體工廠使用自定義的 DSL 集合,從而提供自定義的抽象集以滿足系統(例如,電子商務、金融交易或國內銀行應用程序)特定領域的需要。有了軟體工廠,模型不僅可以用於分析和設計,而且還支持跨越整個軟體生命周期(甚至是運行時)的各種類型的計算。這是軟體工廠的基本原則,並且還是 Microsoft 的 Dynamic Systems Initiative (DSI) 的基本原則。DSI 實現並完成軟體工廠計劃。
您可以將軟體工廠認為是包含並擴展 MDA,這里對 MDA 的定義比基於 PIM 和 PSM 的正式定義范圍更廣泛。軟體工廠超越了一般的平台獨立性,並且特定的模型可解決前面部分中說明的其他問題。
利用圖形化觀點,軟體工廠為特定的系統定義專門的方法。每個觀點都為系統范圍內的成員定義生命周期的某部分,例如需求獲取、資料庫設計或服務協定定義。工廠與每個觀點的可再次使用部分相關聯,並在對系統家族范圍內團隊開發成員觀點的上下文中傳遞它們,這樣就不需要搜索應用程序部分,能夠啟動驗證並支持手工和自動指導設置。
觀點圖被稱為軟體工廠架構,與在一層抽象(系統的一部分)上完成的工作相關,或在生命周期的一個階段內,在其他層(或其他部分和階段)上完成的工作相關。觀點圖可用於從其他產品(特別是從模型)完全或部分生成產品(包括模型、源代碼、配置文件等);在開發階段保持產品同步;驗證手工開發的產品;評估需求失敗或變更後的影響;組織並應用模式及其他最佳實踐;捕獲系統開發期間的元數據以支持系統操作和維護;提供其他形式的指導和管理。
軟體工廠自動化可再次使用部分的打包和交付,可再次使用部分包括,模型和模型驅動的工具、其他類型工具(例如,向導、模板和實用程序)、開發過程、實施組件(例如,類庫、框架和服務)以及內容部分(例如,模式、樣式表、幫助文件、配置文件和文檔)。由於軟體工廠架構是一個模型,因此可以通過工具來操作軟體工廠。創建規模較大的軟體工廠,可通過合並較小的工廠以及通過自定義一般的工廠實現工廠的特殊化。
構建軟體工廠與構建架構很類似。包括要使工廠更易於開發人員應用的獲取和實現模式以及其他最佳實踐。與通過手工從頭開始構建系統相比,使用工廠更有效,這是因為使用工廠不掃描希望找到可重用組件的目錄和存儲庫,在系統體系結構和開發過程的上下文中立即可用的開發下,使用工廠的開發人員具有可重用的組件適用於系統的各個部分。
當然,軟體工廠計劃不僅僅局限於 Microsoft 和我們提供的產品。相反,我們將軟體工廠作為客戶和合作夥伴這一廣泛群體的基礎,在我們提供的基礎之上構建自定義的工廠,並且將工廠組件提供給這一群體中的其他成員。
客戶和合作夥伴對軟體工廠計劃的響應是很積極的。我們建議,將軟體工廠作為現代化組織的最佳發展方向,希望改善其與業務期望一致的開發方法,並且我們提供了 Visual Studio Team Edition for Software Architects、DSL 工具和 VSTS 中其他的新功能,作為軟體工廠計劃的首選產品。

❹ 幾種開源工作流引擎的簡單比較

支持的流程建模標准
WS-BPEL 2.0,流程定義必須使用該標准編寫才能執行
WfMC和OMG標准
符合WfMC規范
遵循WfMC所定義的規范代碼量76K548K214K不好的評價
體系和功能最為復雜,可改造性差
Shark2.0以後有很多組件不開源了
Xpdl保存在打欄位中,難於分析和擴展
過於簡單,只適合研究分析工作流使用
不支持工作流實例的持久化,缺少圖形編輯環境,尚未全部完成WfMC定義的五類介面文檔少文檔
文檔較為齊全
文檔較為齊全
文檔較為齊全文檔少支持的外部介面標准
支持BPEL、Xforms、WebServiceXPDLWeb Services
包括介面1(XPDL)、介面2/3(WAPI)和4 Wf-XML介面5 Audit
自己的主觀評價
框架比較靈活。ODE BPEL編譯器、ODE BPEL運行時、ODE數據訪問對象(DAOs)、ODE集成層(ILs)和用戶工具之間耦合度低比較復雜
開發周期短的情況下不建議使用
內核非常小巧的工作流引擎,基於PetriNet模型,便於理論分析,支持持久化
有流程設計器
提供了可視化的流程編輯器
沒有提供流程設計器
提供了可視化的流程編輯器開發語言JavaJavaJavaJavaJava

❺ 如何在c++定義一個學生類以實現平均成績的計算和查詢功能

一.中間件的定義與作用
1.什麼是中間件?
圖片摘自公眾號「筋斗雲與自動駕駛」
筆者在交流中發現,不同的人對中間件的理解並不一樣,甚至可以說,到現在,這個概念還是模糊不清的。比如:
(1)有的人認為中間件僅指位於OS內核之上、功能軟體之下的那部分組件,為上層提供進程管理、升級管理等服務;而有的人則認為中間件還應包括功能軟體和應用軟體中間的那部分(參見上圖)。按茅海燕的說法,前者是「通用中間件」,而後者是「專用中間件」。本文中提到的「中間件」,若不做專門說明,便特指「通用中間件」。
(2)有一些人提到的自動駕駛中間件,包括了AUTOSAR(又分為AUTOSAR CP和AUTOSAR AP),還有一些人口中的中間件,特指ROS2、Cyber RT、DDS等。
(3)未動科技VP蕭猛認為,「中間」一詞是相對的,當有多層堆疊的時候,每一層都是其上下兩層的中間層,因此,在用「中間件」這個詞的時候,我們需要特別指明它究竟位於「哪兩層之間」。按蕭猛的說法,當我們稱「ROS/ROS2 為中間件」時,其含義與 「AUTOSAR AP為中間件」並不是對等的關系。
(4)Vector產品專家蔡守群說,他理解的中間件,「是給App開發提供功能支撐的,對外是沒有功能表徵的;但是站在操作系統內核的角度,中間件跟App並沒有本質的區別」。
2.中間件的作用
汪浩偉說:「專用中間件原本是應用程序的一部分,只是很多公司做自動駕駛都需要用到,就被抽象出來了。」
那麼,它究竟有什麼用?
畢曉鵬認為,自動駕駛中間件最主要的作用是:對下,它能夠去適配不同的OS內核和架構;對上,它能夠提供一個統一的標准介面,負責各類應用軟體模塊之間的通信以及對底層系統資源的調度。
據畢曉鵬解釋,前者,使開發者們無需考慮底層的OS內核是什麼,也無需考慮硬體環境是什麼,即不僅實現了應用軟體與OS的解耦,也實現了應用軟體與硬體的解耦;而後者則確保了數據能夠安全實時地傳輸、資源進行合理的調度。
為什麼要通過中間件來支持軟硬體解耦?畢曉鵬解釋道:
我開發一個應用軟體,其中很多內容都是與具體應用邏輯無關的,包括數據通信、通信安全、系統資源調度等,比如,有十個進程需要數據交互,完全沒有必要在十個程序的軟體代碼里各自進行實現和配置。針對這種情況,我們就可以把重復的部分抽象成一種服務,單獨封成一層東西(這就是中間件),並提供統一的庫、介面和配置方法,供上層去調用。這樣的話,有一部分人專門去做中間件的,而做上層應用的人也不需要考慮跟底層交互的事情。
舉例說,如果要做一個自動泊車系統,它有各個模塊或業務邏輯獨立的不同軟體,在進行通信、數據交互,或者調用底層資源時,只需要中間件的一個介面就可以實現,其他事情不需要考慮,這樣開發人員就可以專注於自己的業務邏輯。
又比如,一個攝像頭需要感知前面的車道線、紅綠燈等,開發人員就專門做紅綠燈和車道線檢測演算法,與外界的數據交互只需要使用中間件的通信服務(例如訂閱攝像頭信息,發布檢測結果),而不必關心數據從哪裡來、發給誰。
Nullmax紐勱科技系統平台總監苗乾坤博士在此前的一篇文章中寫道:
「晶元算力大幅增長,攝像頭像素呈翻倍之勢,激光雷達出現在更多新車規劃上……沒有誰能夠斷言車上的感測器應該有多少,又或者是將來的汽車還會增加哪些硬體,但所有人都知道硬體的變化將會來得更加猛烈。
「所以我們也可以看到,汽車對軟硬體架構的要求也越來越高,既要能滿足當下的需求,還要具備相當的前瞻性、兼容性和擴展性,能夠支持接下來軟硬體升級換代、增減模塊的需求。而自動駕駛的中間件,就正是這樣一個可以按需調整、滿足各樣需求的現代溫室。
「在早期開發中,中間件可以化整為零,將巨大的軟體工程分解成若干小任務,分散解決。在後期應用時,它又可以化零為整,像拼積木一樣,根據需求將一個個模塊組合成一個整體,嚴絲合縫。」
在春節前的一場直播中,東軟睿馳產品銷售總監安志鵬說,在軟硬體解耦、模塊化管理後,再遇到問題,就不用整個系統都改,只改相對應的部分就行了。這樣,軟體的可復用程度就極大地提升了,同時,驗證的工作量也會減少許多,整體開發效率也會因此提升。
相反,沒有中間件的話,應用層就得直接調用操作系統的介面,後期要是換了操作系統,應用層的代碼和演算法可能就要推倒重來。
簡言之,中間件通過對計算平台、感測器等資源進行抽象,對演算法、子系統、功能採取模塊化的管理,並提供統一介面,讓開發人員能夠專注於各自業務層面的開發,無需了解無關細節。
按東軟睿馳產品銷售總監安志鵬的說法,搞AUTSOAR這樣的中間件,並不是只對OEM有利,「零部件供應商的選擇面也大了——應用做好了,下面的軟體、晶元可以選好幾家供應商的,要比傳統的開發模式快很多,因而,零部件供應商也是受益者」。
用蕭猛的話說,中間件最直接的好處就是「為上層屏蔽底層的復雜性」,軟體開發人員可以忽略晶元、感測器等硬體的差異,從而高效、靈活地將上層應用及功能演算法在不同平台上實現、迭代、移植。蕭猛認為,中間件可以看做是自動駕駛應用背景下的一項「新基建」。
(圖片摘自馮占軍博士的《AUTOSAR對基礎軟體開發是喜還是憂?》一文。AUTOSAR只是中間件的一種,但這里寫的「AUTOSAR開發優勢」基本也適用於其他中間件。)
不過,站在開發者的角度看,中間件的意義也未必全部是正面的。如馮占軍博士在《AUTOSAR對基礎軟體開發是喜還是憂?》一文中就提到了如下兩點:
底層軟體工程師變成了工具人,「只要你去點點滑鼠,用工具配合就可以了」,很多原本由自己做的測試也改由供應商來做,進而導致工程師的成就感嚴重降低;時間久了,工程師從0到1開發的能力也會降低。
(圖片摘自馮占軍博士的文章。盡管文章說的是Autosar,但實際上這些問題在ROS等其他中間件的使用過程中也會存在。)
對軟體工程師來說,中間件造成的「能力退化」這一問題幾乎是無解的。但馮占軍博士認為,「如果這個中間件在開發過程中,有使用公司的工程師深度參與,提出需求並一起實施,會好一些」。
此外,殷瑋在一篇文章提到,使用AUTOSAR這樣的中間件,Tier 1們應該是很不情願的,「因為不到增加了成本,還有可能逐步淪為硬體生產商」。但這個也不能說是中間件的鍋,在軟體定義汽車大大趨勢下,這幾乎是必然的。
二.常見的基本概念
1. AUTOSAR CP 與 AUTOSAR AP
在所有的中間件方案中,最著名的非AUTOSAR莫屬了。
嚴格地說,AUTOSAR並非特指由某一家軟體公司開發出來的某款操作系統或中間件產品,而是由全球的主要汽車生產廠商、零部件供應商、軟硬體和電子工業等企業共同制定的汽車開放式系統架構標准。不過,在實踐中,各公司基於AUTOSAR標准開發出來的中間件也被被稱為「AUTOSAR」。
當前,AUTOSAR可分為Classic Platform和Adaptive Platform兩個平台,兩者分別被簡稱為AUTOSAR CP與AUTOSAR AP。
簡單地說,AUTOSAR CP主要跑在8bit、16bit、32bit的MCU上,對應傳統的車身控制、底盤控制、動力系統等功能,如果涉及到自動駕駛的話,AUTOSAR CP可能無法實現;而AUTOSAR AP主要跑在64bit以上的高性能MPU/SOC上,對應自動駕駛的高性能電子系統。
嚴格地說,AUTOSAR CP並不只是個「中間件」,它是相當於「OS內核+中間件」的一套完整的「操作系統」。 AUTOSAR CP定義了基本的上層任務調度、優先順序調度等。
在基於分布式架構的ADAS功能中,AUOTSAR CP便是最常見的「操作系統」。在AUTOSAR的生態形成後,很多晶元廠商的MCU上標配的就是AUTOSAR CP,主機廠沒有什麼選擇權。
由於分布式架構下的晶元主要是MCU,因此,便有了「AUTOSAR CP主要跑在MCU上」的說法。
在分布式架構下,不同的功能對應著不同的MCU,而每一個MCU上都需要跑一套AUTOSAR CP,若感測器的類型比較多,則僅ADAS相關功能就需要很多套AUTOSAR CP,那怎麼收費呢?
常規的做法是:根據MCU的類型來收費——如果MCU是兩個異構的MCU,那AUTOSAR CP就按兩套來收費;如果MCU是同構的,那AUTOSAR CP就按一套來收費。
隨著EE架構從分布式向集中式演進、晶元由MCU向SOC演進,計算量及通信量成數量級地上升,另外,多核處理器、GPU、FPGA以及專用加速器的需求,還有OTA等,都超出了AUTOSAR CP的支持范圍。
(圖片摘自安志鵬的直播課)
2017年,為更好地滿足集中式架構+SOC時代的高等級自動駕駛對中間件的需求,AUTOSAR聯盟推出了通信能力更強、軟體可配置性更靈活、安全機制要求更高的AUTOSAR AP平台。
需要強調的是,不同於AUTOSAR CP自身已經包含了基於OSEK標準的OS,AUTOSAR AP只是一個跑在Lunix、QNX等基於POSIX標準的OS上面的中間件——它自身並不包含OS。
結合aFakeProgramer於2020年發表在CSDN上的《為什麼要用AP?Adaptive AutoSAR到底給企業提供了一些什麼?》一文及東軟睿馳安志鵬在2022年春節前的一場直播中講的內容,AUTOSAR CP與AUTOSAR AP最主要的區別有如下幾點:
1).編程語言不同——AUTOSAR CP基於C語言,而AUTOSAR AP基於C++語言;
2).架構不同——AUTOSAR CP 採用的是FOA架構(function-oriented architecture),而AUTOSAR AP採用的則是SOA架構(service-oriented architecture);
3).通信方式不同——AUTOAR CP採用的是基於信號的靜態配置通信方式(LIN\CAN...通信矩陣),而AUTOSAR AP採用的是基於服務的SOA動態通信方式(SOME/IP);
4).連接關系不同——在AUTOSAR CP中,硬體資源的連接關系受限於線束的連接,而在AUTOSAR AP中,硬體資源間的連接關系虛擬化,不局限於通信線束的連接關系;
5).調度方式不同——AUTOSAR CP採用固定的任務調度配置,模塊和配置在發布前進行靜態編譯、鏈接,按既定規則順序執行,而AUTOSAR CP則支持多種動態調度策略,服務可根據應用需求動態載入,並可進行單獨更新。
6).代碼執行和地址空間不同——AUTOSAR CP中,大部分代碼靜態運行在ROM,所有application共用一個地址空間,而在AUTOSAR AP中,應用載入到RAM運行,每個application獨享(虛擬)一個地址空間。
這些區別,帶給AUTOSAR AP的優勢有如下幾點——
1).ECU更加智能:基於SOA通信使得AP中ECU可以動態的同其他ECU同其他ECU進行連接,提供或獲取服務;
2).更強大的計算能力:基於SOA架構使得AP能夠更好地支持多核、多ECU、多SoCs並行處理,從而提供更強大的計算能力;
3).更加安全:基於SOA架構使得AP中各個服務模塊獨立,可獨立載入,IAM管理訪問許可權;
4).敏捷開發:Adaptive AUTOSAR服務不局限於部署在ECU本地可分布於車載網路中,使得系統模塊可靈活部署,後期也能靈活獨立更新(FOTA);
5).高通信帶寬:可實現基於Ethernet等高通信帶寬的匯流排通信;
6).更易物聯:基於乙太網的SOA通信,更易實現無線、遠程、雲連接,方便部署V-2-X應用。
(圖片摘自東軟睿馳)
當然了,在某些方面,AUTOSAR AP與AUTOSAR CP相比是有一些「劣勢」的。比如,AUTOSAR CP的時延可低至微秒級、功能安全等級達到了ASIL-D,硬實時;而AUTOSAR AP的時延則在毫秒級,功能安全等級則為ASIL-B,軟實時。
上述區別也導致了兩者應用領域的不同:AUTOSAR CP一般應用在對實時性和功能安全要求較高、對算力要求較低的場景中,如引擎控制、制動等傳統ECU;而AUTOSAR則應用在對實時性和功能安全有一定要求,但對算力要求更高的場景中,如ADAS、自動駕駛,以及在動態部署方面追求較高自由度的信息娛樂場景。
盡管AUTOSAR AP有種種優點,但總的來說,它目前還不夠成熟——主要是信息安全及UCM等模塊不成熟。量產車上裝AUTOSAR AP的不少,但主要用在娛樂場景,真正用在自動駕駛場景的還很少。
此外,由於SOC+MCU組合的現象會長期存在,因而,在今後相當長一段時間內,AUTOSAR AP都不可能徹底取代AUTOSAR CP——最常見的分工會是,需要高算力的工作交給AUTOSAR AP,而需要高實時性的工作則交給AUTOSAR CP。
(圖片摘自超星未來)
2.ROS 2
ROS是機器人操作系統(Robot Operating System)的英文縮寫,原生的ROS本是機器人OS,並不能直接滿足無人駕駛的所有需求,用作自動駕駛中間件的是ROS 2。
ROS 2與ROS 1的主要區別如下:
(1).ROS 1主要構建於Linux系統之上,主要支持Ubuntu;ROS 2採用全新的架構,底層基於DDS(Data Distribution Service)通信機制,支持實時性、嵌入式、分布式、多操作系統,ROS 2支持的系統包括Linux、windows、Mac、RTOS,甚至是單片機等沒有操作系統的裸機。
(2).ROS 1的通訊系統基於TCPROS/UDPROS,強依賴於master節點的處理;ROS 2的通訊系統是基於DDS,取消了master,同時在內部提供了DDS的抽象層實現,有了這個抽象層,用戶就可以不去關注底層的DDS使用了哪個商家的API。
(3).ROS運行時要依賴roscore,一旦roscore出現問題就會造成較大的系統災難,同時由於安裝與運行體積較大,對很多低資源系統會造成負擔;ROS2基於DDS進行數據傳輸,而DDS基於RTPS的去中心化的通信框架,這就去除了對roscore的依賴,系統的穩定性強,對資源的消耗也得到了降低。
(4).由於ROS 缺少Qos機制,topic的穩定性與質量難以保證;ROS2則提供了Qos機制,對通信的實時性、完整性、歷史追溯等功能有了支持,這便大幅加強了框架功能,避免了高速系統難以適用等問題。
不過,ROS2的QoQ配置較為復雜,目前主要是國外一些專業的大學或實驗室在使用,國內僅有極少數公司在嘗試;此外,ROS 2的生態成熟度遠不如ROS,這也給推廣應用帶來了不便。
跟AUTOSAR AP一樣,ROS 2也是跑在soc晶元上、用於滿足高等級自動駕駛的需求的。不過,蕭猛在去年的一批文章中卻特別強調:當我們稱 「ROS/ROS2 為中間件」時,其含義與 「AUTOSAR AP為 中間件」並不是對等的關系。
蕭猛的文章稱:
當我們說 AutoSar是中間件時,這個中間件是很明確的 L.BSW層語義,即處於計算機OS與車載ECU特定功能實現之間,為 ECU功能實現層屏蔽掉特定處理器和計算機OS相關的細節,並提供與車輛網路、電源等系統交互所需的基礎服務;
ROS/ROS2 是作為機器人開發的應用框架,在機器人應用和計算機OS之間提供了通用的中間層框架和常用軟體模塊(ROS Package),而且, ROS團隊認為這個框架做得足夠好,可以稱作操作系統(OS)了。
ROS 2盡管在功能上跟AUTOSAR AP有不少重疊之處,但兩者的思路是不一樣的:
(1).從表現形式上看,AUTOSAR AP首先是一套標准,這個標準定義了一系列基礎平台組件,每個平台組件定義了對應用的標准介面,但沒有定義實現細節,和平台組件之間的交互介面(這些部分留給AUTOSAR AP供應商實現);ROS2則從一開始就是代碼優先,每個版本都有完整的代碼實現,也定義有面向應用標准API介面。
(2)AUTOSAR AP從一開始就面向ASIL-B應用;ROS 2不是根據ASIL的標准設計的,ROS 2實現功能安全的解決方案是,把底層換為滿足ASIL要求的RTOS和商用工具鏈(編譯器)。
ROS 2「過不了車規」似乎已成為一個很廣泛的行業共識。但在蕭猛看來,ROS2本來就不是為實時域設計的,如果一定要把實時性要求高的車輛控制演算法運行在 ROS2中,「那是軟體設計的錯誤,而不是ROS2的問題」。
蕭猛認為,只要能補齊 L.BSW層所需要完成的所有功能、補齊 A 軸所有切面要求的特性,ROS 2就能用於自動駕駛量產車。如前段時間剛拿到采埃孚等多家巨頭投資的Apex.AI公司基於ROS 2定製開發的Apex.OS就已經通過了最高等級的ASIL D認證。
蕭猛說:「這實際上是基於 ROS 2的架構去實現一套 AUTOSAR AP 規范。這可以成為一個單獨的產品,投入時間+人+錢可以開發出來,只是看有沒有必要,值不值得」。
在具體的實踐中,ROS 2跟AUTOSAR AP存在直接競爭關系——盡管對用戶來說,並不存在嚴格意義上的「二選一」問題,但通常來說,若選了ROS 2,就不會選AUTOSAR AP了;若選了AUTOSAR AP,就不會選ROS 2了。
3. CyberRT
Cyber RT是網路Apollo開發出來的中間件,在Apollo 3.5中正式發布。Cyber RT和ROS2是比較像的, 其底層也是使用了一個開源版本的DDS。
網路最早用的是ROS 1,但在使用的過程中逐漸發現了ROS 1存在「若ROS Master出故障了,則任何兩個節點之間的通信便受到影響」的問題,所以就希望使用一個「沒有中間節點」的通信中間件來代替ROS 1,那時還沒有ROS2,所以自己去做了一個Cyber RT。
為了解決 ROS 遇到的問題,Cyber RT刪除了master機制,用自動發現機制代替,這個通信組網機制和汽車網路CAN完全一致。此外,Cyber RT的核心設計將調度、任務從內核空間搬到了用戶空間。
(圖片出處:https://blog.csdn.net/xhtchina/article/details/118151673)
其相對於其他系統,Cyber RT的一大優勢是,專為無人架駛設計。網路已將Cyber RT開源,某互聯網巨頭的自動駕駛團隊使用的中間件便是網路開源出來的Cyber RT。
Cyber RT跟ROS 2之間也存在競爭關系。
在談到AUTOSAR AP、ROS 2與Cyber RT這些中間件的關系時,Vector產品專家蔡守群的解釋是:
「不需要很機械地去分類,你可以把AUTOSAR AP, ROS和Cyber RT都想像成一個提供一組中間件的超市,用戶可以按需從不同的超市購買,並不是說從一個超市買過一個中間件,就不能從其他超市買了。
蔡守群說:AUTOSAR AP中也包含了對ROS介面的支持。說不準哪天ROS和Cyber RT就會加入AUTOSAR AP的組件,或者 AUTOSAR AP會引入Cyber RT的組件。
4.DDS(通信中間件)
(1)什麼是DDS?
在自動駕駛領域,中間件的功能涉及到通信、模塊升級、任務調度、執行管理,但其最主要的功能就是通信。當前市場上,無論是Cyber RT還是 ROS,基本上90%的功能就是通信,狹義上說就是通信中間件。
通信中間可以分成開源和閉源的兩種。開源的為OPEN DDS、FAST DDS、Cyclone等,閉源的就RTI的DDS和Vector的SOME/IP。DDS的全稱為Data Distribution Service ,指一種數據分發服務標准,由對象管理組織(OMG)制定。
DDS能夠實現低延遲、高可靠、高實時性的數據融合服務,能夠從根本上降低軟體的耦合性、復雜性,提高軟體的模塊化特性。高等級自動駕駛現在基本上都在探索依靠DDS來解決異構通信、低時延等CP解決不了的挑戰。
融合了DDS的汽車軟體能夠更好地運行在下一代汽車的體系架構中,更能降低開發的成本、縮短研發的時間,更快地將產品推向市場。
(2)DDS與ROS 2、AUTOSAR AP之間的關系
ROS 2和Cyber RT的底層都使用了開源的DDS,將DDS作為最重要的通信機制。但也有自動駕駛公司的工程師認為,DDS可以起到替代ROS 2的作用,站在用戶的角度看,兩者之間其實存在「二選一」的關系。
AUTOSAR CP里一直沒有包含跟DDS有關的東西,但AUTOSAR AP在 2018年3月的最新版(版本18-10)里開始支持DDS標准。將DDS與AUTOSAR AP結合使用,不僅可以保證和擴展AUTOSAR AP系統內部互操作性的功能,而且還可以將其開放給來自不同的生態系統(即ROS 2)。
從工程角度來看,將AUTOSAR和DDS結合起來的最大優勢是,功能域和網路拓撲不再是對手,而是車輛中的盟友。網路拓撲結構能夠更好地適應車輛的物理約束,功能域在物理車輛的頂部提供了一個靈活的覆蓋層,這就是所謂的分區體系結構。
當然,DDS僅是通信中間件的一種。關於各類通信中間件之間的異同,我們將在本系列的第二篇做更詳細的闡釋。
三.AUTOSAR AP的地位正在弱化?
盡管AUTOSAR是當下最有名的自動駕駛中間件,但《九章智駕》在對諸多中間件廠商們的調研中得出一個結論:AUTOSAR在產業鏈中的地位可能正在弱化。 當然了,那些專注於AUTOSAR系統的廠商們並不認同這一觀點。
我們在上文已經提到,隨著EE架構從分布式向集中式演進、MCU被SOC取代,CP AUTSAR被AUTOSAR AP、ROS 2和Cyber RT等取代已是大勢所趨,在下文,我們主要談的是「AUTOSAR AP的地位會不會弱化」。
2021年12月中旬,兩家AUTOSAR發起公司大陸集團、豐田聯合採埃孚、捷豹路虎、沃爾沃、海拉等多家汽車行業龍頭企業宣布投資車載操作系統初創公司Apex.AI,而Apex.AI的主力產品Apex.OS則是基於ROS 2發展起來的。
拿到了Apex.AI公司15%股權的采埃孚方面在接受媒體采訪時說:「這意味著,我們可以為客戶提供AUTOSAR AP的替代方案。」
盡管AUTOSAR AP已經有了標准,但還沒有落地。安波福、采埃孚、大陸這些公司提供的方案,仍然是基於AUTOSAR CP標準的介面。事實上,越來越多的OEM不太想完全用AUTOSAR去解決智能駕駛操作系統的問題。
不僅特斯拉沒有用AUTOSAR AP,國內的幾大造車新勢力也沒有用(他們用的是AUTOSAR CP+DDS)。甚至,連一些正在轉型的傳統車企也沒打算用AUTOSAR AP。
從產業鏈中各方的反應來看,AUTOSAR AP「地位不穩」的原因主要有以下幾個:
1.使用成本太高
馮占軍博士在《AUTOSAR對基礎軟體開發是喜還是憂?》一文中透露,AUTOSAR的費用通常是「幾百萬起」,並且,針對不同的域控制器、不同的晶元需要「重復收費」,一般小廠根本吃不消。「可能還沒有什麼產出,幾百萬就花出去了」。
除購買成本高外,畢曉鵬和蕭猛都提到,AUTOSAR前期的學習難度很大、學習成本也非常高。為了學會如何使用AUTOSAR,企業甚至不得不專門培訓一批人,如果受培訓的人臨時離職了,那培訓費用就打了水漂。
2.效率不高
畢曉鵬認為,AUTOSAR AP的配置非常多,它是通過配置加上一部分代碼去實現自己的功能,但配置多了之後,效率不高,而且代碼臃腫。
3.靜態部署與動態部署的理念沖突
畢曉鵬博士提到,AUTOSAR AP其實是從AUTOSAR CP發展而來的,AUTOSAR CP是靜態部署,只適用於相對簡單的業務邏輯和功能,其代碼是固化的,有點像以前的功能手機——功能無法改變,不可能往裡面再加一個APP;但AUTOSAR AP有點像現在的智能手機,軟體開發人員開發一個APP,跨平台就可以用不同手機上了,這種動態部署的理念和之前的靜態部署概念不甚相同,而其方法論卻是基於靜態部署衍生而來的,因此在實踐層面會遇到不少問題。
4.無法滿足智能網聯的需求
由於雲端跟車端所使用的操作系統不一樣,AUTOSAR只能負責車內的通信,不能支持車端到雲端的通信,因而無法支持車路協同場景(車端跟雲端的通信,是通過MQTT、kafka等中間件來實現的)。除此之外,AUTOSAR能否兼容車輛網聯化中需要用到的數據平台、通信平台和地圖平台,也存在很大的疑問。
畢曉鵬說,在發現了這些問題後,有一些OEM開始逐漸放棄AUTOSAR架構,「轉而自己去研發一套更適合動態部署、成本較低的新型軟體架構」。
傳統車廠是從使用CP過來的,所以在慣性上,他們可能還會考慮AP是否適合智能駕駛,但慢慢地也在嘗試轉型。如奧迪和TTTech合作做的通信中間件——zFAS,也沒有採用AP。
不同於AUTOSAR CP已經是非常標准化的東西,大家用起來沒什麼問題,AUTOSAR AP現在的標准也不是很完善,每年也在更新,具體AP能發展成什麼樣,這個誰也不知道,大家更多也是觀望的態度。
畢曉鵬認為,AUTOSAR標准並不能很好地支撐自動駕駛應用和創新的發展,因此,我們有必要建立一套更適合中國智能駕駛發展、且自主可控的技術架構和生態體系。
蕭猛認為,由於從AUTOSAR CP到AUTOSAR AP一脈相承,一些已經對AUTOSAR形成路徑依賴的公司會堅持使用AUTOSAR AP,但在經歷過招人難、開發周期長等教訓之後,他們有可能轉向ROS 2。
當然,以AUTOSAR為主業的公司,顯然不會認可上述「涉嫌唱衰」AUTOSAR AP的觀點的。
比如,Vector蔡守群就認為,AUTOSAR AP只會越來越重要,因為它是順應車載技術不斷發展的一套規范,覆蓋面會越來越廣。
東軟睿馳茅海燕也認為,要將整車域控制器和智駕域控制器合並到統一的中央計算平台上,沒有AUTOSAR AP的支持很難搞定。「不是每家公司都能像特斯拉一樣自己從頭搭建系統的,目前,最好的工具還是AUTOSAR AP」。

❻ IDL是什麼東西

分類: 商業/理財 >> 貿易
問題描述:

IDL是什麼東西?

解析:

Java IDL(Interface Definition Language,介面定義語言)為 JavaTM 平台添加了 CORBA(Common Object Request Broker Architecture,公用對象請求代理體系結構)功能,從而可提供基於標準的互操作性和連接性。Java IDL 使胡老分布式、支持 Web 的 Java 應用程序可利用 Object Management Group 定義的行業標准 OMG IDL(Object Management Group Interface Definition Language,對象管理組介面定義語言)及 IIOP(Inter Inter-ORB Protocol,Inter對象請求代理間協議)來透明地調用遠程網路服務。運行時組件包括一個全兼容的 Java ORB,用於通過 IIOP 通訊進行分布褲胡升式計算做攜。要使用 Java IDL,用戶必須具有 idltojava 編譯器。

❼ 什麼是中間件

中間件是一種獨立的系統軟體或服務程序,分布式應用軟體藉助這種軟體在不同的技術之間共享資源。中間件位於客戶機/ 伺服器的操作系統之上,管理計算機資源和網路通訊。是連接兩個獨立應用程序或獨立系統的軟體。相連接的系統,即使它們具有不同的介面,但通過中間件相互之間仍能交換信息。

執行中間件的一個關鍵途徑是信息傳遞。通過中間件,應用程序可以工作於多平台或OS環境。

中間件是基礎軟體的一大類猜嘩,屬於可復用軟體的灶兆游范疇。顧名思義,中間件處於操作系統軟體與用戶的應用軟體的中間。

(7)OMG編譯器擴展閱讀

中間件在操作系統、網路和資料庫之上,應用軟體的下層,總的作用是為處於自己上層的應用軟體提供運行與開發的環境,幫助用戶靈活、高效地開發和集成復雜的應用軟體。

在眾多關於中間件的定義中,比較普遍被接受的是IDC表述的:中間件是一種獨立的系統軟體或服務程序,分布式應用軟體藉助這種軟體在不隱銷同的技術之間共享資源,中間件位於客戶機伺服器的操作系統之上,管理計算資源和網路通信。

由於標准介面對於可移植性、標准協議對於互操作性的重要性,中間件已成為許多標准化工作的主要部分。對於應用軟體開發,中間件遠比操作系統和網路服務更為重要,中間件提供的程序介面定義了一個相對穩定的高層應用環境,不管底層的計算機硬體和系統軟體怎樣更新換代,只要將中間件升級更新,並保持中間件對外的介面定義不變,應用軟體就幾乎不需任何修改,從而保護了企業在應用軟體開發和維護中的重大投資。

❽ 硬體與軟體的區別是什麼

一、軟體是一種邏輯的產品,與硬體產品有本質的區別
硬體是看得見、摸得著的物理部件或設備。在研製硬體產品時,人的創造性活動表現在把原材料轉變成有形的物理產品。
而軟體產品是以程序和文檔的形式存在,通過在計算機上運行來體現他的作用。在研製軟體產品的過程中,人們的生產活動表現在要創造性地抽象出問題的求解模型,然後根據求解模型寫出程序,最後經過調試、運行程序得到求解問題的結果。整個生產、開發過程是在無形化方式下完成的,其能見度極差,這給軟體開發、生產過程的管理帶來了極大的困難。
二、軟體產品質量的體現方式與祥埋硬體產品不同
質量體現方式不同表現在兩個方面。硬體產品設計定型後可以批量生產,產品質量通過質量檢測體系可以得到保障。但是生產、加工過程一旦失誤。硬體產品可能就會因為質量問題而報廢。而軟體產品不能用傳統意義上的製造進行生產,就目前軟體開發技術而言緩銀,軟體生產還是「定製」的,只能針對特定問題進行設計或實現。但是軟體愛你產品一旦實現後,其生產過程只是復制而已,而復制生產出來的軟體質量是相同的。設計出來的軟體即使出現質量問題,產品擾宴宴也不會報廢,通過修改、測試,還可以將「報廢」的軟體「修復」,投入正常運行。可見軟體的質量保證機制比硬體具有更大的靈活性。
三、軟體產品的成本構成與硬體產品不同
硬體產品的成本構成中有形的物質佔了相當大的比重。就硬體產品生存周期而言,成本構成中設計、生產環節占絕大部分,而售後服務只佔少部分。
軟體生產主要靠腦力勞動。軟體產品的成本構成中人力資源佔了相當大的比重。軟體產品的生產成本主要在開發和研製。研製成功後,產品生產就簡單了,通過復制就能批量生產。
四、軟體產品的失敗曲線與硬體產品不同
硬體產品存在老化和折舊問題。當一個硬體部件磨損時可以用一個新部件去替換他。硬體會因為主要部件的磨損而最終被淘汰。
對於軟體而言,不存在折舊和磨損問題,如果需要的話可以永遠使用下去。但是軟體故障的排除要比硬體故障的排除復雜得多。軟體故障主要是因為軟體設計或編碼的錯誤所致,必須重新設計和編碼才能解決問題。
軟體在其開發初始階段在很高的失敗率,這主要是由於需求分析不切合實際或設計錯誤等引起的。當開發過程中的錯誤被糾正後,其失敗率便下降到一定水平並保持相對穩定,直到該軟體被廢棄不用。在軟體進行大的改動時,也會導致失敗率急劇上升。
五、大多數軟體任然是定製產生的
硬體產品一旦設計定型,其生產技術、加工工藝和流程管理也就確定下來,這樣便於實現硬體產品的標准化、系列化成批生產。由於硬體產品具有標準的框架和介面,不論哪個廠家的產品,用戶買來都可以集成、組裝和替換使用。
盡管軟體產品復用是軟體界孜孜不倦追求的目標,在某些局部范圍內幾家領軍軟體企業也建立了一些軟體組件復用的技術標准。例如,OMG的CORBA,mICROSOFT的COM,sun的J2EE等,但是目前還做不到大范圍使用軟體替代品。大多數軟體任然是為特定任務或用戶定製的。

❾ 什麼是MOF 文件

託管對象格式(MOF)文件是創建和注冊提供程序、事件類別和事件的簡便方法。

下面來了解下「MOF」:

對象機制(MOF,Meta-ObjectFacility)起源於統一建模語言(UML)。對象管理機構(ObjectManagementGroup|OMG)需要一種元模型結構來定義UML。

MOF是一個游梁封閉元模型結構,它定義謹液描述自身的M3模型。MOF是嚴格的元模型架構,每一層的每個模型元素都嚴格對應的上層模型元素。MOF只提供定義結構或語言、數據的抽象語法的方法神晌運。定義元模型時,MOF如同EBNF層定義編程語言語法。MOF是用於定義元模型的域特定語言(DSL),就像EBNF定義語法的DSL。同樣,MOF也可以在自身定義。

MOF現在是一個國際標准:ISO/IEC19502:2005Informationtechnology—MetaObjectFacility(MOF)

MOF可視為寫元模型的標准,例如,建模領域專用語言的抽象語法。Kermeta擴展MOF,可以執行附在EMOF元模型的動作,從而可以建模DSL操作語義並很容易得到對它的解釋。

❿ IDL的簡介

IDL是用來描述軟體組件介面的一種計算機語言。IDL通過一種中立的方式來描述介面,使得在不同平台上運行的對象和用不同語言編寫的程序可以相互通信交流;比如,一個組件用C++寫成,另一個組件用Java寫成。
IDL通常用於遠程調用軟體。 在這種情況下,一般是由遠程客戶終端調用不同操作系統上的對象組件,並且這些對象組件可能是由不同計算機語言編寫的。IDL建立起了兩個不同操作系統間通信的橋梁。
從本質上講,OMG IDL介面定義語言不是作為程序設計語言體現在CORBA體系結構中的,而是用來描述產生對象調用請求的客戶對象和服務對象之間的介面的語言。OMG IDL文件描述數據類型和方法框架,而服務對象則為一個指定的對象實現提供上述數據和方法。
OMG IDL文件描述了伺服器提供的服務功能,客戶機可以根據該介面文件描述的方法向伺服器提出業務請求。在大多數CORBA產品中都提供IDL到相關編程語言的編譯器。程序設計人員只需將定義的介面文件輸入編譯器,設定編譯選項後,就可以得到與程序設計語言相關的介面框架文件和輔助文件。IDL文件應用過程如圖1所示 。

熱點內容
部落沖突好號密碼是什麼 發布:2025-07-15 03:48:45 瀏覽:970
存儲氣瓶 發布:2025-07-15 03:48:10 瀏覽:991
數據解鎖密碼有什麼用 發布:2025-07-15 03:35:27 瀏覽:195
騰訊公認的密碼是多少 發布:2025-07-15 03:34:44 瀏覽:625
代碼txt怎麼改腳本 發布:2025-07-15 03:30:20 瀏覽:288
聲道數增加存儲容量也相應 發布:2025-07-15 03:16:19 瀏覽:271
誇克緩存在哪裡 發布:2025-07-15 03:16:11 瀏覽:708
座機查通話記錄服務密碼是多少 發布:2025-07-15 03:14:46 瀏覽:342
大學gpa演算法 發布:2025-07-15 03:14:45 瀏覽:922
mx5是安卓哪個版本 發布:2025-07-15 03:05:07 瀏覽:59