面向對象的程序設計方法是九十年代以來最重要的軟件設計方法。汽車排放測試系統是基于底盤測功機、排放分析儀、數據采集卡等外圍硬件設備,依照國家排放法規和生產研究的要求完成各類汽車排放試驗數據采集和處理的計算機系統。由于系統要同外圍設備交互,試驗項目多且用戶要求復雜,采用傳統的基于功能分解的軟件設計方法使得軟件開發及調試十分困難,軟件的可靠性差,并且隨著硬件設備的變化、試驗項目增加以及用戶要求的變化,很難在原有系統上進行擴充。面向對象方法按照人們正常的思維習慣建立問題域模型,軟件設計自然地表現問題域求解方法,抽象數據類型、數據封裝以及繼承等特點使得軟件體系結構穩定、可重用性好、便于維護和擴充,可大大提高軟件的開發效率。
1 汽車排放測試系統的硬件結構及軟件需求
汽車排放測試系統總體結構如圖1所示。輸入信號中,大氣壓、干溫、濕溫、催化器前后溫度及壓力等信號來自于傳感器,車速、距離脈沖來自于轉鼓試驗臺,司機開始信號來自于遙控器。信號調理單元將這些信號轉換成計算機接口能夠接收的標準信號,主計算機通過A/D、DI/O接口卡對這些信號進行采集。主計算機通過GPIB接口卡與定容采樣裝置和排放分析儀通訊,讀取數據并且按照試驗流程控制這些設備。主計算機通過一塊圖形加速卡控制司機助顯示器的工況曲線顯示。軟件需求如下:
(1)依照排放法規和生產研究的要求能夠實現CVS試驗、模態試驗、催化器轉化效率試驗的流程控制。試驗過程中系統要完成初始參數設定、數據采集、設備控制、顯示監測界面等任務,并將測量結果寫入磁盤文件。
(2)按照用戶要求實現試驗數據表格和曲線的打印輸出,包括CVS結果表格、模態試驗按工況和循環統計結果表格、排放污染物濃度曲線、催化器前后溫度及壓力曲線、催化器前后污染物濃度曲線等。
(3)試驗開始前對采集卡、排放分析儀等硬件設備進行檢查,若設備不正常則提示用戶并停止試驗。
(4)A/D輸入通道可進行標定。
2 面向對象分析
抽象數據類型是面向對象程序設計的中心概念之一,一個面向對象軟件系統的結構框架及高層設計最終表現為一系列類、它們的定義和對象。類是一個抽象的數據類型,它的定義包括一組屬性數據和在屬性數據上的一組操作,通過類的界面對外提供服務,對象是類的實例,對應于問題域中的實體。面向對象分析過程標識問題域中的實體,確定這些實體之間的關系,這一階段產生描述系統功能和問題域基本特征的綜合文檔。汽車排放測試系統中的對象如圖2所示。
“排放分析儀”對象封裝了分析儀的操作;“I/O接口卡”封裝了A/D接口卡和DI/O接口卡的輸入及輸出操作;“司機助”對象實現司機助顯示器工況曲線的顯示;“測試設備”對象封裝了排放測試系統中的硬件設備操作。為“排放試驗”對象提供服務;“排放試驗”對象封裝了試驗流程,將測量結果存入磁盤文件;“數據文件”對象讀取文件,實現數據表格及曲線的打印輸出。
排放測試系統的硬件設備可能選用不同類型的分析儀,如HORIBA公司的MEXA_9000或AVL公司的CEB_x00,也可能選用不同類型的I/O接口卡,如中泰公司的PC_6313或研華公司的PCL_812,根據用戶的要求也可能增加新的試驗項目。在面向對象方法中,繼承是使用現存類作為基礎建立新類的技術,新類復用現存類的定義,并且可增加新的屬性及操作。對象間通過消息進行通訊,消息是對操作的實際調用,其中“發送者”向“接收者”發送一個消息,以實現某些處理功能。排放測試系統中對象之間的關系如圖3所示。
圖中三角形表示整體與部分結構,半圓形表示一般與特殊結構,實線箭頭表示消息連接。“測試設備”對象由“排放分析儀”、“數據采集卡”和“司機助”三個對象組成,“排放分析儀”、“數據采集卡”、“試驗”和“數據文件”作為基類可派生出不同的子類,“試驗”對象向“測試設備”對象發送消息實現數據采集、分析儀控制和司機助顯示等功能。
由對象關系圖可以看到,面向對象技術將軟件結構建立在與問題域中實體對應的對象上,軟件的功能分散到對象中間,由于對象相對穩定,軟件的修改主要集中于封裝在對象內部的屬性和操作上而不影響軟件的體系結構。這種修改的局部化保持了軟件結構的穩定性,減少了軟件修改的工作量和難度。
3 高層設計
面向對象分析過程標識的對象以及它們之間的關系構成了問題域模型,高層設計階段開發系統的結構,構造應用軟件的總體模型。對象封裝了問題域內特定的的功能實現,并通過界面對外提供服務。而應用程序相當于一個驅動模塊,負責建立類的實例(對象),接收用戶輸入并發送消息給對象實現功能調用。汽車排放測試系統的應用程序結構如圖4所示。系統劃分為三個處理功能:系統維護、排放試驗和數據處理。“系統維護”功能包括分析儀總精度檢查和通道標定,“排放試驗”按照用戶選定的試驗類別完成試驗流程,“數據處理”功能根據用戶載入的數據文件完成打印輸出。用戶選擇某一功能時,應用程序發送消息給相應的對象,圖4中箭頭表示消息的發送。
4 面向對象方法的特點分析
(1)傳統的結構化程序設計是以“過程”和“操作”為中心構造系統的,是面向處理的體系結構。而“過程”和“操作”是不穩定的,若基礎硬件、用戶需求、編程環境(編譯器和操作系統)改變,處理的體系結構可能也需要改變,系統的移植或升級需要花費很大代價。面向對象的程序設計對問題域進行模型化,以“對象”和“數據結構”為中心,軟件的體系結構相對穩定,思維成果的可重用性較好。
(2)封裝和數據隱藏是面向對象程序設計的基本要素。把數據和與之相關的過程捆綁在一起定義為一個整體(即對象),操縱數據的過程和函數的作用域和可視性被限制在代碼局部區域內,改變數據結構或算法僅局限于實現這個類的代碼區域內而不會引起系統的變化,這對程序維護提供了方便。
(3)類的抽象特性提供了模塊化的體系結構,類的界面指明它所提供的服務,類的使用者無需關心這些服務的實現細節。將一些經過測試的類存儲于類庫中,在建立新的應用軟件時只需在類庫中找到所需要的類或通過繼承復用現存類以滿足問題域的改變,這使得面向對象設計的可重用性得以提高。
作者按照軟件工程標準,用面向對象技術完成了汽車排放測試系統軟件的設計,并在Win98下采用美國NI公司的圖形化編程語言LabVIEW實現。這套系統已在上海泛亞汽車技術中心投入使用,系統的開發周期短、可靠性好、便于維護,充分體現了面向對象程序設計的優點。
評論
查看更多