• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于面向?qū)ο蟮耐ㄓ每刂栖浖脑O(shè)計(jì)與實(shí)現(xiàn)

      2022-03-30 14:02:54孔袁莉雷斯聰李晶晶
      計(jì)算機(jī)測量與控制 2022年2期
      關(guān)鍵詞:型號命令邏輯

      劉 偉,孔袁莉,雷斯聰,鄭 柏,李晶晶

      (上海航天設(shè)備制造總廠有限公司,上海 200245)

      0 引言

      控制軟件[1-3]是運(yùn)載火箭型號各類軟件中非常重要的一類軟件,該類軟件負(fù)責(zé)控制流程的執(zhí)行和調(diào)度,以自動的方式調(diào)度各子系統(tǒng)和各單機(jī),使子系統(tǒng)和各單機(jī)按照規(guī)定的邏輯在規(guī)定的時(shí)間段內(nèi)完成規(guī)定的任務(wù)。由于火箭測試的流程由控制軟件來進(jìn)行發(fā)起和判斷,因此控制軟件是運(yùn)載火箭型號中重要程度較高的一類軟件。在傳統(tǒng)的模式下,各型號都會有特定的控制軟件,軟件由特定的人員進(jìn)行研發(fā)和維護(hù),各型號之間的控制軟件設(shè)計(jì)和實(shí)現(xiàn)以實(shí)現(xiàn)本型號的需求為主,型號間的需求并不做過多的考慮。該種模式下,由于不同設(shè)計(jì)人員采用的設(shè)計(jì)方案和使用技術(shù)的原因,各型號之間的控制軟件即使有相同的功能,相互之間復(fù)用的難度也較大。這種模式下,型號間相同的功能存在重復(fù)開發(fā)的情況,并且在軟件的維護(hù)上也存在效率不高的情況。

      本文針對傳統(tǒng)模式下,設(shè)計(jì)和維護(hù)效率較低、功能重復(fù)開發(fā)等缺點(diǎn),為了提高軟件的設(shè)計(jì)和維護(hù)效率,設(shè)計(jì)了基于面向?qū)ο骩4]的通用[5-8]控制軟件,對控制軟件的業(yè)務(wù)邏輯和業(yè)務(wù)過程進(jìn)行了分析,將控制邏輯抽象為可組合的類。用戶可以根據(jù)需要自由組合各控制邏輯類,并將結(jié)果以XML的方式保存在本地磁盤。軟件會讀取并解析XML文件,將XML文件的內(nèi)容解析為對應(yīng)的邏輯控制類,以執(zhí)行用戶配置的控制邏輯。

      1 軟件結(jié)構(gòu)與功能設(shè)計(jì)

      1.1 軟件結(jié)構(gòu)

      通用控制軟件主要功能是對流程進(jìn)行控制,需要根據(jù)已經(jīng)和正在執(zhí)行的控制命令,判斷任務(wù)的執(zhí)行是否正確,是否繼續(xù)執(zhí)行下一個控制命令。

      通過對控制軟件的需求進(jìn)行整理和分析,對現(xiàn)有型號的控制軟件的設(shè)計(jì)和實(shí)現(xiàn)方案進(jìn)行歸納總結(jié),將控制軟件依據(jù)功能劃分為相對獨(dú)立的4個模塊:數(shù)據(jù)源模塊、數(shù)據(jù)解析模塊、命令模塊、工具模塊,功能模塊圖如圖1所示[12]。

      圖1 軟件結(jié)構(gòu)圖

      數(shù)據(jù)源模塊的功能是實(shí)現(xiàn)數(shù)據(jù)傳輸。通過對具體需求的實(shí)現(xiàn),命令傳輸可使用Socket套接字、串口和Http等傳輸方式[13]。

      數(shù)據(jù)處理模塊的功能是實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換。主要功能有兩個:第一是將命令和命令參數(shù)轉(zhuǎn)換為數(shù)據(jù)源可傳輸?shù)臄?shù)據(jù)形式;第二是將數(shù)據(jù)源接收到的數(shù)據(jù)轉(zhuǎn)換為命令或命令的參數(shù)。常見的形式是對網(wǎng)絡(luò)傳輸(TCP、UDP)字節(jié)序列和實(shí)體類進(jìn)行相互轉(zhuǎn)換[14]。

      命令模塊是控制軟件的核心模塊。用戶根據(jù)實(shí)際的功能需求,可以使用現(xiàn)有的命令組合成需要的控制功能,也可以自定義新的命令類,實(shí)現(xiàn)當(dāng)前不具備的功能。命令的關(guān)系是松散的,命令之間可以相互組合為新的命令,組合出的命令可以像普通的命令一樣進(jìn)行進(jìn)一步的組合[15]。

      功能模塊是輔助模塊。對軟件代碼中的一些常用操作進(jìn)行封裝,減少常用功能的重復(fù)開發(fā)。

      1.2 軟件功能

      通用控制軟件由控制命令、命令存儲及解析、命令數(shù)據(jù)傳輸和命令數(shù)據(jù)正確性判斷4部分組成。為了提高控制類軟件的通用性和開發(fā)、維護(hù)的效率,對傳統(tǒng)模式下的業(yè)務(wù)進(jìn)行進(jìn)一步分析,將具有相同功能的業(yè)務(wù)抽象封裝為類,將可變的功能抽象為接口,為后續(xù)的功能擴(kuò)展提供接口。通過將軟件功能進(jìn)行模塊化,對軟件核心功能控制命令進(jìn)行可配置化處理,提高了軟件開發(fā)、維護(hù)的規(guī)范性和效率。

      為了驗(yàn)證通用控制軟件方案的正確性,需要用戶控制命令的執(zhí)行并將執(zhí)行的狀態(tài)向用戶反饋。軟件在Visual Studio 2010平臺上采用C#語言進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),以Windows窗體界面風(fēng)格實(shí)現(xiàn)人機(jī)交互。

      2 軟件整體設(shè)計(jì)

      2.1 軟件結(jié)構(gòu)

      通用控制軟件核心原則就是面向?qū)ο蠓椒ㄖ械摹皩U(kuò)展開發(fā),對修改封閉”原則,是指將控制類軟件的相似的功能進(jìn)行整合,用戶的可變需求通過擴(kuò)展實(shí)現(xiàn),而不需要更改原有邏輯,通過軟件的可擴(kuò)展性保證軟件的靈活性和穩(wěn)定性[16]。

      在通用控制軟件的設(shè)計(jì)過程中,不僅需要考慮軟件的擴(kuò)展性和可維護(hù)性,而且還需要考慮對現(xiàn)有型號的專用控制軟件的兼容性,以確保設(shè)計(jì)的軟件能夠更好地適應(yīng)型號的需求[17]。通過對軟件的需求進(jìn)行分析,對現(xiàn)有型號的專用控制軟件的設(shè)計(jì)方案和使用場景進(jìn)行歸納總結(jié),通過使用面向?qū)ο蠓治雠c設(shè)計(jì)技術(shù),將當(dāng)前涉及到的控制操作轉(zhuǎn)換為軟件代碼中的類,目前包括1個父類和10個實(shí)現(xiàn)類,父類參考建造者設(shè)計(jì)模式,通過模板類的形式為子類提供統(tǒng)一的業(yè)務(wù)邏輯的執(zhí)行順序,實(shí)現(xiàn)類根據(jù)需求實(shí)現(xiàn)特定的操作,實(shí)現(xiàn)類之間可以以積木的形式組合成新的命令,完成復(fù)雜的控制邏輯。軟件類圖如圖2所示。

      圖2 軟件類圖

      2.2 軟件工作流程

      通用流程控制軟件的執(zhí)行流程如圖3所示。

      圖3 軟件執(zhí)行流程圖

      為了提高軟件維護(hù)的靈活性和便利性,控制流程被保存在本地磁盤上的XML文件,用戶通過修改該XML文件即可達(dá)到更改控制邏輯的目的。

      軟件工作的具體流程如下:軟件啟動后,軟件會根據(jù)用戶配置的保存控制流程的XML文件的路徑,自動加載該XML文件并解析為控制命令。在成功解析到控制命令后,軟件會將控制命令以人機(jī)交互界面的形式呈現(xiàn),便于用戶使用[18]。

      3 軟件設(shè)計(jì)關(guān)鍵技術(shù)

      3.1 基于面向?qū)ο蟮臉I(yè)務(wù)抽象

      在通用控制軟件的設(shè)計(jì)時(shí),通過對現(xiàn)有型號的控制軟件的業(yè)務(wù)功能進(jìn)行分析,發(fā)現(xiàn)現(xiàn)有型號的控制軟件在業(yè)務(wù)功能上和流程控制邏輯上有相似的部分,這一部分屬于冗余的重復(fù)開發(fā)的部分。

      面向?qū)ο蠓治雠c設(shè)計(jì)(OOAD,object orient analysis & design)的優(yōu)點(diǎn)就是能夠構(gòu)建與現(xiàn)實(shí)世界相對應(yīng)的問題模型,并保持他們的結(jié)構(gòu)、關(guān)系和行為為模式,通過對業(yè)務(wù)邏輯的合理的分析和設(shè)計(jì),有效的避免重復(fù)的部分[19]。

      通過面向?qū)ο蠓治龊驮O(shè)計(jì)技術(shù)對軟件的業(yè)務(wù)邏輯進(jìn)行抽象和分析,將業(yè)務(wù)邏輯中需求的實(shí)體提取成類,功能提取成方法。各個類的含義如下:

      Command類:命令類的基類,定義命令的基本屬性。

      ComplexCommand類:命令的一種實(shí)現(xiàn),是一組命令的集合,將多個命令組合成一個命令,完成命令的執(zhí)行和執(zhí)行成功、失敗的判斷。

      AllSuccessCommand類:復(fù)合命令的一種實(shí)現(xiàn),是指所包含的所有命令均執(zhí)行成功,該命令執(zhí)行成功,否則該命令執(zhí)行失敗。

      OneSuccessCommand類:復(fù)合命令的一種實(shí)現(xiàn),是指所包含的任意一個命令執(zhí)行成功,該命令執(zhí)行成功,否則該命令執(zhí)行失敗。

      DataCommand類:命令的一種實(shí)現(xiàn),數(shù)據(jù)命令類,是指該命令需要進(jìn)行數(shù)據(jù)交互。

      CircleCommand類:數(shù)據(jù)命令的一種實(shí)現(xiàn),循環(huán)數(shù)據(jù)命令,是指該命令需要多次進(jìn)行主動的數(shù)據(jù)推送,而不需要數(shù)據(jù)回饋。

      DataReplyCommand類:數(shù)據(jù)命令的一種實(shí)現(xiàn),數(shù)據(jù)回饋命令類,是指該命令需要主動推送數(shù)據(jù)并需要回饋數(shù)據(jù)。

      DataQueryCommand類:數(shù)據(jù)回饋命令類的一種實(shí)現(xiàn),數(shù)據(jù)查詢類,是指該命令需要主動推送數(shù)據(jù)并對回饋數(shù)據(jù)進(jìn)行判斷。

      AlertCommand類:命令的一種實(shí)現(xiàn),警告命令,該命令是對用戶操作的一種提升,用戶可在控制流程中,通過彈出警告對話框以實(shí)現(xiàn)控制流程的用戶確認(rèn)。

      ConfirmCommand類:命令的一種實(shí)現(xiàn),確認(rèn)命令,該命令是對用戶操作的一種提升,用戶可在控制流程中,通過彈出確認(rèn)對話框以實(shí)現(xiàn)控制流程的用戶選擇。

      SleepCommand類:命令的一種實(shí)現(xiàn),延時(shí)命令,該命令是用于自定義延時(shí),用戶可根據(jù)需要定義延時(shí)命令的時(shí)機(jī)和延時(shí)的時(shí)間。

      通過對業(yè)務(wù)邏輯進(jìn)行建模和分析[9],將命令抽象成類。同時(shí)考慮到用戶需求和軟件設(shè)計(jì)的擴(kuò)展性,將一些非功能性需求的功能也提升為命令,如界面中的彈出窗口等,以提升軟件的維護(hù)性,提高軟件的維護(hù)效率,降低軟件的維護(hù)成本[20]。

      在分析出功能性需求和非功能性需求的命令后,再通過面向?qū)ο笾械睦^承和多態(tài)技術(shù),達(dá)到屏蔽細(xì)節(jié)而實(shí)現(xiàn)不同功能的目的。舉例而言,AlertCommand和SleepCommand是兩個功能完全不同的命令,但是這兩個類均繼承于Command類,則這兩個類就可以以相同的方式使用。AlertCommand實(shí)現(xiàn)彈出一個警告對話框,只有在用戶選擇確認(rèn)后流程才繼續(xù)執(zhí)行,否則流程一直等待;SleepCommand則是一個延時(shí)命令,延時(shí)會自動執(zhí)行,直到延時(shí)完成或用戶終止流程[21]。

      在上訴的抽象設(shè)計(jì)下,不用的命令之間可以相互組合,多個命令也可以組合成一個命令。組合出的命令又可以和其他命令進(jìn)一步組合成更復(fù)雜的命令。這種組合方式類似“搭積木”的方式,軟件業(yè)務(wù)中有不同的類,但是提供相同的“外形”(接口/父類),那么不同的類就可以在一定的規(guī)則下進(jìn)行自由組合。用戶通過這種“搭積木”似的命令組合,已達(dá)到用戶期望的控制邏輯的目的。

      3.2 XML序列化

      XML(extensible markup language),可擴(kuò)展標(biāo)記語言,是一種基于文本、跨平臺的結(jié)構(gòu)型標(biāo)記語言,可用于保存和傳輸數(shù)據(jù),用戶可以非常方便地使用文本編輯工具對XML文件進(jìn)行編輯,完成測試流程的添加、修改和刪除操作。

      用戶將多個命令按照一定規(guī)則組合成測試流程,測試流程需要持久化[10-11]后才能永久保存,否則就只能臨時(shí)存在于內(nèi)存中,軟件關(guān)閉后數(shù)據(jù)丟失,無法再次使用。為了便于用戶對測試流程進(jìn)行維護(hù),采用XML文件作為測試流程持久化的方式,通過序列化和反序列化的方式高效的實(shí)現(xiàn)持久化文本與軟件代碼的相互轉(zhuǎn)換。

      在通用控制軟件中,為了便于管理和維護(hù),設(shè)計(jì)了繼承“AllSuccessCommand”類的子類“TestProject”作為一個項(xiàng)目,其他的命令實(shí)現(xiàn)類可以以自身或者多個實(shí)現(xiàn)類組合成的新命令作為項(xiàng)目命令集合的一個子項(xiàng),通過類似“搭積木”的方式將各個實(shí)現(xiàn)類組合成一個實(shí)現(xiàn)特定要求的測試項(xiàng)目。

      舉例而言,新建一個名為“測試項(xiàng)目”的測試流程,設(shè)計(jì)項(xiàng)目包括一個名為“測試一”的任意成功命令;“測試一”由一個名為“測試一1”的任意成功命令和一個名為“測試一2”的全部成功命令組成;“測試一1”由一個名為“測試一11”的選擇確認(rèn)命令和一個名為“測試一12”的查詢命令組成;“測試一2”由一個名為“測試一21”的確認(rèn)命令和一個名為“測試一22”的選擇確認(rèn)命令組成。

      測試流程結(jié)構(gòu)如圖4所示。

      圖4 測試項(xiàng)目結(jié)構(gòu)

      測試項(xiàng)目的執(zhí)行流程如圖5所示。

      圖5 測試項(xiàng)目執(zhí)行流程

      測試項(xiàng)目持久化為XML文件的情況如下所示:

      xmlns:xsd="http://www.w3.org/2001/XMLSchema">

      Attempts="1" AttemptInterval="500">

      舉例中的測試流程的設(shè)計(jì)過程,測試流程的新增或修改完全是在對配置文件的新增或修改的方式上完成的,不需要進(jìn)行任何代碼的修改,實(shí)現(xiàn)了軟件代碼設(shè)計(jì)和維護(hù)的分離,維護(hù)人員只需要按照規(guī)定的方式進(jìn)行XML文本文件的新增和修改即可實(shí)現(xiàn)測試流程的新增和修改。而且在軟件設(shè)計(jì)和實(shí)現(xiàn)時(shí)按照模塊化和插拔式的原則,使得基礎(chǔ)的各種控制命令和組合出的控制命令可以進(jìn)行無差別的組合,通過類似“搭積木”的方式,將各種基礎(chǔ)命令和組合命令組合成具有更復(fù)雜功能的命令。

      4 測試結(jié)果與分析

      4.1 案例實(shí)現(xiàn)

      為了驗(yàn)證本文的設(shè)計(jì)和實(shí)現(xiàn)思路的可行性,軟件二次開發(fā)和維護(hù)的效率。二次開發(fā)的過程以實(shí)現(xiàn)現(xiàn)有的XX-6型號的等效控制軟件功能的方式進(jìn)行。

      XX-6型號等效控制軟件的通訊方式采用TCP網(wǎng)絡(luò)的方式,數(shù)據(jù)交互對象為一個上位機(jī)軟件,根據(jù)型號對控制軟件的設(shè)計(jì)要求,二次開發(fā)的過程主要由3個步驟組成:

      1)根據(jù)數(shù)據(jù)源模塊的接口要求,設(shè)計(jì)一個TCP網(wǎng)絡(luò)通訊數(shù)據(jù)源模塊,完成控制軟件與交互上位機(jī)軟件的TCP網(wǎng)絡(luò)通訊。

      2)根據(jù)數(shù)據(jù)處理模塊接口的要求,依據(jù)XX-6型號的數(shù)據(jù)格式,設(shè)計(jì)滿足型號實(shí)際需求的數(shù)據(jù)處理模塊,完成命令、命令參數(shù)與二進(jìn)制數(shù)據(jù)的相互轉(zhuǎn)換;

      3)根據(jù)命令模塊要求,依據(jù)XX-6型號控制邏輯要求,軟件提供的基礎(chǔ)命令類能夠滿足功能要求,只需按照要求新建測試流程的XML文件。

      在通用控制軟件基礎(chǔ)功能的基礎(chǔ)上,XX-6型號控制軟件的開發(fā)過程只需要對差異性的模塊進(jìn)行二次開發(fā),相同的功能模塊無需重復(fù)開發(fā),控制流程的修改可以通過修改文件的方式實(shí)現(xiàn),開發(fā)和維護(hù)的效率顯著提高。

      4.2 結(jié)果與不足

      在開發(fā)過程中,控制軟件相似功能的部分,如簡單命令成功、失敗邏輯控制、復(fù)合命令成功、失敗判斷及控制、控制流程持久化等無需重復(fù)開發(fā);特殊需求,如各型號的數(shù)據(jù)解析、數(shù)據(jù)合格性判斷等可通過擴(kuò)展的方式實(shí)現(xiàn),而不影響原有的業(yè)務(wù)邏輯。

      在維護(hù)過程中,由于采用了統(tǒng)一的設(shè)計(jì)思路,測試流程也存儲在XML文件中,測試流程的維護(hù)的效率也得到了提高,降低了后期維護(hù)的成本。測試結(jié)果達(dá)到了預(yù)期的目的。

      但是在開發(fā)過程中也發(fā)現(xiàn)了一些不足之處,控制流程的修改是通過對XML文件的修改來實(shí)現(xiàn),但是XML文件的編輯是直接手動修改文件,目前還沒有提供可視化的編輯方式,用戶需要熟悉XML文件中的每個標(biāo)簽的含義,編輯時(shí)的錯誤也不容易發(fā)現(xiàn),后續(xù)提供可視化的操作接口,用戶可以在軟件中編輯測試流程并自動保存為XML文件,這樣可以減少人為的文本編輯錯誤,用戶也無需了解XML文件的標(biāo)簽所代表的含義,降低測試流程維護(hù)的難度,進(jìn)一步提高軟件維護(hù)的效率。

      5 結(jié)束語

      針對傳統(tǒng)模式下,各型號的控制軟件相互間通用性低、相似功能重復(fù)開發(fā)的問題。設(shè)計(jì)了一套基于面向?qū)ο蟮耐ㄓ每刂栖浖?。對軟件業(yè)務(wù)流程中的功能性需求和非功能性需求進(jìn)行抽象和分析,將業(yè)務(wù)需求中的實(shí)體抽象成命令類,并將部分非功能需求也提升成命令,使得用戶可以通過類似“搭積木”的方式組合各種命令。

      通過采用統(tǒng)一的設(shè)計(jì)思想和通用化設(shè)計(jì),提高軟件開發(fā)和維護(hù)的效率,節(jié)省了軟件開發(fā)和維護(hù)工作的人力成本,在應(yīng)對當(dāng)前的高強(qiáng)度任務(wù)方面具有重要意義。

      猜你喜歡
      型號命令邏輯
      刑事印證證明準(zhǔn)確達(dá)成的邏輯反思
      法律方法(2022年2期)2022-10-20 06:44:24
      只聽主人的命令
      邏輯
      “三化”在型號研制中的應(yīng)用研究
      創(chuàng)新的邏輯
      型號產(chǎn)品配套管理模式探索與實(shí)踐
      移防命令下達(dá)后
      女人買買買的神邏輯
      37°女人(2017年11期)2017-11-14 20:27:40
      不同型號CTC/TDCS設(shè)備的互聯(lián)互通
      這是人民的命令
      潞西市| 固始县| 卢湾区| 吉安县| 长治市| 陇西县| 江油市| 息烽县| 泸西县| 治多县| 克东县| 阜城县| 绿春县| 沽源县| 金昌市| 永州市| 苍梧县| 晋州市| 北票市| 青田县| 灌云县| 张北县| 油尖旺区| 临沂市| 仁寿县| 桑日县| 新丰县| 灵丘县| 阳西县| 榆林市| 武平县| 涪陵区| 白玉县| 虎林市| 镇雄县| 同仁县| 乌海市| 博乐市| 泗阳县| 陈巴尔虎旗| 葵青区|