国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

代碼自動化技術的應用研究

2014-11-04 15:26:22程霄邱興興
電腦知識與技術 2014年28期
關鍵詞:三層架構迭代農產品質量安全

程霄 邱興興

摘要:在中小管理信息系統(tǒng)開發(fā)中用戶對需求的描述存在動態(tài)性的問題。針對這種情況,提出一種以數(shù)據(jù)庫為基礎的軟件自動化開發(fā)框架。框架包括軟件三層架構的設計、緩存數(shù)據(jù)庫、代碼生成引擎、通用代碼模版的設計和數(shù)據(jù)庫概念模型設計的約束條件,實現(xiàn)基于數(shù)據(jù)庫物理模型的軟件源代碼的自動生成。通過在農產品質量安全監(jiān)測系統(tǒng)實際應用,分析結果表明,框架在實際項目中的應用表明能有效適應用戶需求變化,降低開發(fā)成本,提高軟件質量。

關鍵詞: 代碼自動化; 通用模版; 三層架構; 迭代; 農產品質量安全

中圖分類號:TP311.51 文獻標識碼:A 文章編號:1009-3044(2014)28-6635-03

隨著2009年我國《食品安全法》的頒布,關系到人民健康和國計民生重大問題的農產品產地安全管理成為了人們關注的焦點。然而,農產品生產企業(yè)、流通企業(yè)、加工企業(yè)質量監(jiān)管方面的不足,加之我國多數(shù)農產品的生產空間分散、規(guī)?;洜I程度低、規(guī)范化生產條件差以及流通管理混亂等,致使農產品質量安全問題經常發(fā)生。因此,科學地監(jiān)管農產品生產、流通、加工過程,對防止突發(fā)性或群發(fā)性食品安全事故發(fā)生具有重要的現(xiàn)實意義。建設九江市農產品質量安全監(jiān)控信息系統(tǒng),以充分發(fā)揮在生產、加工與流通領域對農產品質量安全實行追蹤監(jiān)測、質量溯源、信息服務和決策支持的作用,已成為農產品質量安全管理工作的當務之急。

在管理信息系統(tǒng)開發(fā)過程中,用戶對系統(tǒng)功能需求是一個從模糊到清晰的認識過程,用戶的需求發(fā)生變化時也往往會帶來數(shù)據(jù)庫設計的變化,開發(fā)人員需要對代碼進行大量的修改,代碼自動生成技術的運用[1-3]可以適應這種情況,縮短MIS的開發(fā)周期。

本文運用一種數(shù)據(jù)模型驅動的面向MIS軟件自動化開發(fā)框架[4],利用已有農產品生產質量安全追溯體系的研究成果,基于信息技術、數(shù)據(jù)庫技術、網絡技術等進行農產品質量安全追溯系統(tǒng)的構建與開發(fā),對代碼自動化技術在農產品質量安全監(jiān)測系統(tǒng)中的應用給出設計方法。

1 代碼自動化開發(fā)框架

以.NET開發(fā)平臺為基礎,運用一個面向MIS的以數(shù)據(jù)庫為基礎基于代碼生成引擎的軟件自動化開發(fā)框架,框架實現(xiàn)在三層架構下的Web自動化開發(fā),從而在實際應用中提高開發(fā)效率,降低開發(fā)成本,靈活應對用戶需求的不斷變化。本框架包含數(shù)據(jù)庫概念模型、通用代碼模版、代碼生成引擎和自動生成的三層架構代碼四個部分,如圖1所示。

在MIS開發(fā)過程中應用上述框架有三個過程:首先,依據(jù)需求分析設計給出數(shù)據(jù)庫概念模型并由此產生具體的數(shù)據(jù)庫物理模型;其次,通過代碼生成引擎(CodeSmith)、通用代碼模版和數(shù)據(jù)庫物理模型自動生成基于三層架構的源代碼;最后,依據(jù)功能需求結合用戶界面資源對系統(tǒng)界面功能進行開發(fā)。面向MIS軟件自動化開發(fā)框架的運用其主要工作包括數(shù)據(jù)庫概念模型的設計,界面設計實現(xiàn),以及針對新增功能的三層架構代碼編寫工作。

1.1 軟件層次構架設計

在軟件設計中通常采用分層架構來實現(xiàn)“高內聚、低耦合”[5]的設計目標。面向MIS軟件自動化開發(fā)框架中的三層架構就是將整個系統(tǒng)實現(xiàn)劃分為表示層、業(yè)務邏輯層、數(shù)據(jù)訪問層,并對部分層次進一步劃分。

實體層(Model):WebUI、BLL和DAL三層通過Model進行數(shù)據(jù)的傳遞。

數(shù)據(jù)訪問層(Data Access Layer,DAL):本層實現(xiàn)對數(shù)據(jù)庫的訪問,通過配置實現(xiàn)支持多種不同類型的數(shù)據(jù)庫,為BLL提供與數(shù)據(jù)庫無關的通用數(shù)據(jù)格式的數(shù)據(jù)。為支持多種數(shù)據(jù)庫DAL采用了工廠模式進行設計,細分為數(shù)據(jù)訪問層的抽象工廠層(DALFactory)、數(shù)據(jù)訪問接口層(IDAL)、數(shù)據(jù)訪問實現(xiàn)層(MySQLDAL/SQLServerDAL/OracleServerDAL)、數(shù)據(jù)庫訪問的方法庫(DBUtility)幾個部分,在該層中采用內存數(shù)據(jù)庫Memcached作為緩存數(shù)據(jù)庫。

業(yè)務邏輯層(Business Logic Layer,BLL):本層實現(xiàn)業(yè)務規(guī)則的制定、業(yè)務流程的實現(xiàn),在WebUI與DAL之間的數(shù)據(jù)交換中承上啟下的作用。

表示層(Web User Interface,WebUI):本層實現(xiàn)顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),是人機交互界面,實現(xiàn)過程中包括一些用戶界面資源,如樣式、腳本等。WebUI與BLL之間相互傳遞數(shù)據(jù)。

1.2 數(shù)據(jù)庫概念模型建模

在面向MIS軟件自動化開發(fā)框架中通過數(shù)據(jù)庫概念模型產生數(shù)據(jù)庫物理模型[6],而物理模型是代碼生成引擎自動生成代碼的基礎之一,為避免與編程語言的語法規(guī)則和關鍵詞沖突,同時提高生成代碼的可讀性,需要對概念模型的定義過程進行規(guī)范。

1)概念模型中的數(shù)據(jù)表名和字段名首字小寫,不使用下劃線,采用駝峰命名,且不能與編程語言的關鍵詞相同。由于物理模型中的表名都將對應各個層中的類名,若出現(xiàn)關鍵詞作為將導致程序出錯。

2)概念模型中的數(shù)據(jù)表名和字段名不能出現(xiàn)空格和中文字。雖然數(shù)據(jù)庫支持中文和空格作為表名和字段名,但由于程序語言中的變量名不允許出現(xiàn)空格,且代碼生成引擎不支持中文,這將導致生成的程序錯誤。

3)概念模型中外鍵定義不能為表名。外鍵名若為表名則會出現(xiàn)類名與成員變量名相同的情況,這將導致生成的程序錯誤。

1.3 緩存數(shù)據(jù)庫

Memcached是一個免費開源、高性能、分布式內存緩存系統(tǒng),用于大型Web站點的性能優(yōu)化提升,減少數(shù)據(jù)庫及文件系統(tǒng)的訪問壓力;是高性能的分布式內存緩存服務器,通過緩存數(shù)據(jù)庫查詢結果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應用的速度、提高可擴展性。Memcached通過在內存里維護一個統(tǒng)一的巨大的hash表,它能夠用來存儲各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫檢索的結果等。

DAL首次從數(shù)據(jù)庫中獲取到數(shù)據(jù)后進行緩存,在下次讀取的時即可從緩存數(shù)據(jù)庫中獲取數(shù)據(jù)。應該注意的是Memcached數(shù)據(jù)置換算法采用的最近最少使用算法,需要在實際應用中依據(jù)運行情況調整緩存策略。

1.4基于CodeSmith的通用代碼模版

CodeSmith[7]是一個基于模版的代碼生成工具,用戶通過自定義模版[12]可以生成包括簡單的強類型集合和完整應用程序在內的任何東西,并不限定特定的應用程序設計或體系結構。CodeSmith的模板是以“.cst”為后綴名的代碼文件,其代碼風格非常類似于ASP.NET,模板中除了大量固定的代碼以外,還有遍布于各處的元數(shù)據(jù),固定代碼就是會被原封不動地輸出的代碼,而元數(shù)據(jù)則可以被看作是模板中的變量。針對數(shù)據(jù)模型驅動風格的代碼生成,CodeSmith提供了一個封裝了所有的數(shù)據(jù)庫對象程序集(SchemaExplorer),該程序集中提供了數(shù)據(jù)庫(DatabaseSchema)、數(shù)據(jù)表(TableSchema)、數(shù)據(jù)列(ColumnSchema)的不同級別訪問,并支持多種數(shù)據(jù)源的連接。

數(shù)據(jù)庫的數(shù)據(jù)基本操作可分為增加(Insert)、修改(Update)、刪除(Delete)、查詢(Select)四種,通用代碼模版圍繞這四個基本操作進行設計,面向MIS軟件自動化開發(fā)框架設計了產生Model、DAL、BLL、WebUI源代碼的通用代碼模版。運用這些模版針對數(shù)據(jù)庫物理模型中的每個數(shù)據(jù)表自動產生對應的源代碼,為了實現(xiàn)與具體的數(shù)據(jù)庫訪問分離,將這些操作行為抽象為一個單獨的接口層IDAL,保證了系統(tǒng)的可擴展性和數(shù)據(jù)庫的可移植性。在數(shù)據(jù)庫訪問層實現(xiàn)中提供MySQLDAL、SQLServerDAL、OracleDAL三個通用數(shù)據(jù)訪問模版,還可針對不同數(shù)據(jù)庫增加新模版。

2 系統(tǒng)應用

農產平質量安全監(jiān)測系統(tǒng)是由九江市農產品質量安全監(jiān)測中心委托,該中心旨在建立用于全市范圍內農產品質量安全數(shù)據(jù)采集統(tǒng)計的綜合性服務平臺,為加大監(jiān)測力度以及提高監(jiān)測數(shù)據(jù)的時效性需要建立一套有效的數(shù)據(jù)傳遞、分析、統(tǒng)計的系統(tǒng)。

基于數(shù)據(jù)驅動風格的代碼自動化開發(fā)框架核心工作就是對系統(tǒng)進行分析設計,獲得完整的數(shù)據(jù)庫概念模型,進而依據(jù)數(shù)據(jù)庫概念模型通過開發(fā)框架自動生成相關的代碼。因開發(fā)框架可以快速的產生可用的原型系統(tǒng),因此在項目開發(fā)的過程中采用迭代的方法,開發(fā)工作可以在需求被完整地確定之前啟動,并在一次迭代中完成系統(tǒng)的一部分功能或業(yè)務邏輯的開發(fā)工作,再通過用戶的反饋來細化需求,并開始新一輪的迭代。

2.1 系統(tǒng)設計與實現(xiàn)

目前在全市范圍內農產平質量安全檢測終端類型多種多樣,數(shù)據(jù)格式不統(tǒng)一,系統(tǒng)將提供統(tǒng)一的數(shù)據(jù)采集方式及格式規(guī)范,通過各地區(qū)數(shù)據(jù)檢測點上報數(shù)據(jù)到系統(tǒng),系統(tǒng)對數(shù)據(jù)進行自動分析統(tǒng)計,并建立所需的統(tǒng)計報表以及安全警報信息等。系統(tǒng)的使用者可以分為五類角色,系統(tǒng)角色圖如圖2所示。

在需求分析過程中,我們發(fā)現(xiàn)通過檢測儀器獲得的數(shù)據(jù)具有多樣性、復雜性,對相關數(shù)據(jù)進行分析篩選后把檢測數(shù)據(jù)劃分為大類、小類,建立檢測數(shù)據(jù)標準格式庫,由專業(yè)人員對檢索數(shù)據(jù)格式庫進行管理。

面向MIS軟件自動化開發(fā)框架是通過數(shù)據(jù)概念模型開始工作的,首先是構建當前系統(tǒng)的數(shù)據(jù)庫物理模型,通過代碼自動化技術給使用者提供了一個可以用原型系統(tǒng),并對原型系統(tǒng)進行使用,并提出改進意見;依據(jù)用戶反饋意見,對用戶需求進一步分析,產生新的數(shù)據(jù)概念模型,通過框架自動生成改進的版本。通過對需求的迭代獲得用戶較為滿意的版本作為本系統(tǒng)的第一個正式版本。系統(tǒng)管理功能界面如圖3所示。

2.2 應用分析

在項目開始階段,與使用方的溝通得到初步需求,依據(jù)需求分析結果構建數(shù)據(jù)庫概念模型,通過開發(fā)框架快速生產原型系統(tǒng),并交由使用方測試使用進一步明確需求,在重復多次后得到一個較為滿意的需求分析報告,以此為里程碑進入穩(wěn)定的系統(tǒng)開發(fā)階段。使用代碼統(tǒng)計工具對系統(tǒng)交付使用后的代碼行數(shù)以及開發(fā)框架自動生成的代碼行數(shù)進行統(tǒng)計,統(tǒng)計結果如表1所示。

Model代碼100%自動生成,DAL代碼自動生成率為90.1%,BLL代碼自動生成率74.7%,WebUI代碼自動生成率62.3%,平均代碼自動生成率79.4%。通過上述數(shù)據(jù)可以看出,采用本文提出的軟件開發(fā)自動化技術,當用戶需求發(fā)生變化時,能夠及時的響應,減輕了開發(fā)者的工作量,提高了開發(fā)效率,使開發(fā)者能夠更專注去解決需求中的關鍵問題。

3 結束語

本文利用一種面向MIS的軟件開發(fā)自動化開發(fā)技術開發(fā)框架,給出一種適應中小型MIS的開發(fā)方法,能應對用戶需求的動態(tài)性。在九江市農產品質量安全監(jiān)測網設計與實現(xiàn)中,依據(jù)使用開發(fā)框架的流程,能快速產生原型系統(tǒng)讓使用者進行試用并反饋,并最終得的一個用戶滿意的系統(tǒng)。從實際應用的分析結果可以看出,開發(fā)者工作量降低,可以更多的專注于解決問題,框架具有較強的實用性,對于農產品質量安全監(jiān)測系統(tǒng)的開發(fā)具有良好的參考價值。

參考文獻:

[1] 王曉宇,錢紅兵.基于UML類圖和順序圖的C++代碼自動生成方法的研究[J].計算機應用與軟件,2013,30 (1): 190-195.

[2] 周兵,許俊,吳亞平.中小 MIS 快速原型構建與自動代碼生成[J].計算機技術與發(fā)展,2012,22 (5):28-31.

[3] 陳清,吳海濤,王璐.基于代碼自動生成技術的管理信息系統(tǒng)的實現(xiàn)[J].計算機與數(shù)字工程,2013,41(2): 268-270.

[4] Cheng X,Qiu X X.Design and Implementation of a Software Automation Development Framework for Management Information System[C]//Advanced Materials Research. 2014,989: 4488-4492.

[5] 張志杰.基于分層結構的管理信息系統(tǒng)架構設計[J].計算機技術與發(fā)展,2010,20 (10):146-149.

[6] 周育紅,閆鋒欣.數(shù)字資源跨平臺整合系統(tǒng)的設計與實現(xiàn)[J].計算機技術與發(fā)展,2010,20 (1):243-246.

[7] 朱曉輝,王杰華,石振國.NET下基于PowerDesigner 和CodeSmith的軟件自動化開發(fā)技術[J].計算機科學, 2010,37(7):156-159.

猜你喜歡
三層架構迭代農產品質量安全
基于最小二乘的視野區(qū)域運動方向分析
基于“三層架構”理論的教學設計案例分析
實施農業(yè)標準化生產 提升農產品質量安全水平
JavaScript計算性能對比研究
軟件導刊(2016年11期)2016-12-22 21:36:13
農產品質量安全檢測中F732—VJ型冷原子吸收測汞儀操作技術
葫蘆島市農產品質量安全檢測體系建設現(xiàn)狀與建議
中間件“迭代”
面向社會生活的非農業(yè)院?!掇r產品質量安全》課程探索與實踐
科技視界(2016年25期)2016-11-25 08:35:42
良好的信息系統(tǒng)體系結構模式對網絡安全監(jiān)察與維護技術的方法的探討
ASP.NET三層架構體系分析與應用
安岳县| 剑河县| 大化| 玉龙| 永康市| 中西区| 潜山县| 贵南县| 都昌县| 洛川县| 寿阳县| 宣城市| 修文县| 秀山| 左云县| 庆元县| 耒阳市| 仁布县| 青铜峡市| 延庆县| 健康| 普兰县| 宣恩县| 广昌县| 和龙市| 雅安市| 象山县| 普安县| 长汀县| 永靖县| 开化县| 壤塘县| 黎城县| 丰都县| 松阳县| 同仁县| 英吉沙县| 昌图县| 乌兰察布市| 舞阳县| 武汉市|