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