科学网

 找回密码
  注册

tag 标签: 软件复用

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

湖北省工业技术软件化开源社区平台(测试版)上线了---可进入平台下载“软件生产线”全部软件
求新 2019-1-10 07:31
湖北省经信委软件处主持建设的“湖北工业技术软件化开源社区”平台(测试版)已经上线。地址: http://www.hubei-itts.cn/ 。 开源软件目的是为了挖掘新的产业模式,希望通过更加广泛的参与使产生功能更加丰富、性能更加强大、更加安全的软件。其模式可以实现资源共享,使软件产生更加强的效益。扩大应用还可以促使软件成熟、可靠、稳定与高效。湖北省建立本软件平台是为了发展软件企业的活力,发展软件技术,使软件更好为发展湖北省工业经济服务。 目前平台上已有资源简介如下: 一、基础共性工业 APP 1 、工业大数据可视化展示系统 : 实时模拟企业生产现场动态,强化大数据分析能力,帮助客户快速洞察生产和市场规律,及时发现业务盲点,做出正确有效的判断和决策。采用了国内领先的专业全景可视化技术,同时提供多达几十种可视化展示效果。 2 、 LitWorks :智能制造管控平台( MES )。信息化深化应用是制造企业实现自主创新和转型升级必要支撑。建立生产信息化管理体系和运作规范,全面整合生产管理并兼容采购、物流、品质、财务等部门,推动管理升级,使企业适应市场竞争和产业升级的要求。由系统随时掌握公司实时的生产进度及库存状况,建立数据库提高决策速度,减少人力统计错误,提升企业内部控制力,节省不必要的成本开支,产生库存资金占用减少、准时交付率提高、制造成本降低、企业配套和服务水平提高等直接或间接经济效益。本系统的投入使库存、运输达到合理水平并实时动态的掌握仓储物流情况,及时生成所需单据,方便采购、生产和财务等部门沟通反馈,形成准确合理的备件用料分析和预测分析。还可以进行仓储物流的全天时的红外和视频监控,实时获取生产过程中的各类数据,建立详实的档案,为企业运营部门提供第一手仓储物流工作数据支撑,减少运营部门实地调研仓储物流运营指标的次数,减少不必要的工作量。快速统计产品在仓库、生产部门、成品库的产品分布,实现统筹排产、统一调度、快速周转。进行智能化管理和系统建设。整合同步基础信息、出入库业务单据、盘点与库存状态等信息,为 ERP 系统提供实时业务数据,加快 ERP 系统单据流转速度,使系统数据与实际业务高度契合。彰显公司实力,进一步提升企业整体社会形象。 3 、 CODING :一个面向开发者的云端开发协作平台,提供 Git 代码托管,项目管理,质量分析, WebIDE ,开发协作,外包悬赏,冒泡社交等功能,让开发更简单。手机客户端可以随时随地的查看 Coding.net 上的精彩项目、任务动态、项目文档、项目代码、冒泡社交(结合 Coding.net 电脑页面更强大)。 4 、汇联易:一款商旅及费用报销产品,是一站式商旅及费用报销解决方案。包括事件申请、商旅预订、我的账本、移动报销、智能审批、审批系统配置组织架构、财务作业、业务报表、数据可以导出到本地等功能。 5 、云工控:一个专注于工控行业产品采购的服务平台。为中小型制造企业、设备制造商、系统集成商提供在线询比价、云端订单管理、优质渠道资源共享、优化闲置库存等全方位服务。核心模块包括行业资讯、品牌库、渠道商、选型宝、询价宝、库存宝。 6 、喔趣:一款高贵而不失优雅 , 低调而不失内涵的移动办公应用软件,它涵盖了上下班考勤管理、移动审批、排班管理、文件共享、工资条发放等各种丰富的移动应用,可以帮你做:花式打卡、外勤管理、考勤报表、移动审批、工作汇报、会议管理、企业通讯簿、网盘分享、企业公告、智能简报。 7 、 TickTick 日程管理:一款轻便高效的任务管理、日程管理( GTD )和时间管理应用,配备强大的记事和提醒功能。你可以在手机、平板、网页等多达 11 个平台上使用滴答清单记录大小事务、制定工作计划、整理购物清单、设置生日提醒,甚至安排日程。主要功能:快速添加、智能识别、全能提醒、日历视图、分类、支持“文本”和“子任务”两种任务模式记录,为任务添加图片、录音等、共享协作、多平台快速同步任务。 8 、 PCCM 过程管理系统:用于 PCCM 专科培训过程的综合管理,涵盖专培大纲中的科室轮转、临床操作、教学大课、教学查房等多个科目类型,设立了系统管理员、项目主任、协调员、专培师资、专培医师等多个岗位角色,支持 PC 、安卓、 iOS 多个平台。 9 、 BE 协同管理:用于工程施工过程中的进度管理,质量管理,安全管理,使用角色为施工单位,业主单位,设计单位和监理单位,在进度管理模块中施工单位可以上报施工进度、由监理审核确认,在质量管理、安全管理中监理单位账号可以上报质量安全问题,然后由施工单位整改。 10 、项目 e :一款轻量级的工程项目管理工具,能够帮施工企业跟踪计划进度,管理施工质量,分析工程成本,监控项目风险,高效管理项目。 11 、微令:指令管理系统( CMS ) -- 人工智能云管理平台。主要功能:工作任务,工作请示,工作求助,积分,研讨,审批,移动考勤,人事管理等。 12 、易点固定资产管理:基于云的固定资产管理系统,为企业提供固定资产管理、财务对账、移动盘点、自动生成盘点报告等全生命周期解决方案。 13 、 MAKA :一款简单、强大的创意设计和营销推广工具, 5 万 + 原创设计师,海量主题模版实时更新,帮助企业和个人用户方便快捷地完成专业级别的 H5 创作与海报设计 14 、掌上服务:一个工单的分配管理云平台(我加工单高级版),适用于企业对外接单,对内指派任务以及对任务的执行过程管理,数据统计分析。 15 、云加工:为小微加工企业提供方便快捷的加工信息服务,以先进的移动互联网技术,为用户持续创造价值,努力帮助小微企业成功。云加工始终坚持以市场为导向,以用户为中心,诚信为本,开拓创新,不断发展壮大。提供优良的信誉、优质的产品、体贴的服务。 16 、模云: SAAS 平台,通过连接广大中小模具、机加工工厂的设备、为其提供信息技术和大数据服务,从而提高中小模具工厂的生产效率,最终目的是提高模具最终用户的“品质、成本与交付竞争力”。模云 SAAS 平台是工业 4.0 智能制造高级别的呈现形式。 17 、智造库:智造库工业品商城是一个专业销售自动化标准零配件现货库存(内含可再利用与新品)的交易平台。本商城倡导资源合理再利用,以“客户至上、服务第一、质量为本”为原则,帮助解决客户采购成本高、货期时间长、物流不规范、售后无保障等问题。 18 、 M 工业服务:一款设备管理 APP 工具,通过与设备二维码和云相结合,实现设备预防、运维、保养和故障维修的全生命周期移动化、无纸化、数据化和信息化管理,帮助设备团队提高设备管理效率、降低设备意外故障风险、降低管理和运维成本,延长设备使用寿命 二、行业通用工业 APP 1 、开目工艺设计系统:包括:工艺编辑平台(图、文、表一体化编辑平台)、客户化工具(表格绘制与定义、工艺资源管理、快速搭建适合企业需求的 CAPP 平台。)(工艺建模、工艺规程类型管理)、系统辅助工具(工艺资源管理器、公式管理器、二次开发工具)、工艺文件输出(工艺浏览、打印中心、工艺统计汇总)、输入接口(数据库导入导出接口、 WORD/EXCEL 导入导出接口、汇总数据接口)、装配工艺专业辅助工具(装配工艺编辑工具、装配工艺与装配物料清单一致性维护、快速编制变型工艺)、电装工艺专业辅助工具(处理复杂的电装工艺的格式和图形、自动获取电子设计数据、智能化装配工艺生成)、基于知识的参数化工艺设计平台(工艺参数定义、工艺流程定义、编译解释工具、结构化工艺设计子系统)、工艺卡片式 CAPP (所见即所得的结构化工艺、开目结构化工艺实现的功能、实现结构化的 TS16949 解决方案)、系统集成(与 CAD 集成、与 PDM 集成、与 ERP 系统集成)。 2 、面向机电混合产品的工艺规划仿真系统:支持各种主流三维 CAD 系统的模型转换、对三维产品模型文件的轻量化处理、装配结构管理,在装配步骤规划前进行装配结构调整以满足产品装配工艺性要求、支持产品同步更新、电线、快速高效的电缆布线功能、管理标准件、紧固件等资源功能。支持装配过程规划包括装配流程规划、装配节拍规划、装配路径及工艺设计、制造资源规划、装配性能优化、装配过程仿真、支持用多种方式显示内部构造、多样与全面的技术图解、专业的装配工艺性评价。提供装配工艺信息输出,包括支持三维装配工艺浏览终端、支持工艺卡片文件输出、支持 3DPDF 文件输出、支持设备维修手册和用户培训手册的输出。提供系统集成应用,包括与 CAPP 集成自动生成工艺文件、与 PDM 集成实现工艺流程签审、与 BOP 双向互动、与 PDM 集成实现变更模型按需更新、与 MES 集成实现装配工艺信息的电子化发布。 3 、建筑识图实训仿真软件 v1.0 试用版:采用三维虚拟仿真引擎实现二维、三维叠加式虚拟仿真教学实训。通过 Java 和 Unity3D 等编程工具混合开发技术,实现多平台、多硬件的兼容和数据共享。本软件通过可配置化的 txt 、 xml 、 Json 等文件,可从外部动态加载所需的图纸、音频、视频、构件三维模型等信息,优化三维展示载入的速度以及展示过程中的流畅程度。通过 Unity3D 编辑器二次开发作为各类建筑多媒体文件的二次加工工具、保证识图仿真软件平台数据可扩展性。软件模块包括建筑施工图子系统:建筑设计说明、平面图、立面图、剖面图、大样图、详图配套建筑设计三维模型、图片、音频、文字等数据接口;结构施工图子系统:建筑设计说明、平面图、配筋图、大样图、详图等配套建筑结构三维模型、图片、音频、文字等数据接口;考核实训子系统:实训、考核模式。表现形式多样化,生动化,形象化,提供多种剖切模式,教学形式多样,教学内容丰富(针对建筑施工图、结构施工图、所有涉及到的大样图)。图纸模型元素关联,形象立体展示看不到的知识点。实训模块、考核多方位、全空间训练。 4 、土建手工预算仿真软件 v2.0 试用版 : 利用三维可视化仿真技术,真实模拟建筑三维构造,依据房屋建筑与装饰工程工程量计算规范(全国 2013 清单)和房屋建筑与装饰工程消耗量定额(全国 2015 定额),以形象立体,简单易懂的方式展示工程中各类构件现浇钢筋混凝土、模板、脚手架,砖墙,门窗,装饰等工程量的计算方法、计算过程及人材机组成。该软件从教学内容设置,表现形式,软件易用性完全满足教学要求。包括建筑三维构件认识、合理的教学内容设置、实现理论公式和二维图纸、三维模型的统一产品从理论学习和实践运用两个角度出发,从计算规范、理论公式、二维施工图纸和三维实体模型四个方面结合,实现理论学习和实践教学的有效统一。软件制作简单实用,界面简洁,运用三维仿真模型形象、直观的展示了建筑各构件间的扣减关系,便于学生对清单定额计算规则的理解,突破教学重点、难点。多层级、多模块化软件架构,实现了多角度细致化教学。丰富的考核题库,实时评判满足教学考核效果软件内每一个构件模块配有相对应的计算练习,学生通过计算可自行输入结果,系统对输入结果做出正确性评判,点击正确答案按钮可以调出详细的解答过程方便查漏补缺。 5 、钢筋平法与计算仿真实训软件 V2.0 试用版:用于土木专业钢筋平法识读、钢筋构造与计算、钢筋工程量与计价等课程的实训教学。该软件采用虚拟仿真技术,把枯燥的理论知识转化为形象易懂的实体模型,从钢筋初识、钢筋识图和钢筋计算逐步深入,让学生轻松掌握钢筋理论知识,并学以致用,能够根据图纸对钢筋工程量进行计算。解决了“电算工具”推广带来的理论学习缺失问题 ; 把枯燥难懂的理论公式三维化、形象化、让学生轻松掌握 ; 钢筋识读—计算—实训—练习—一体化教学,清晰透彻 ; 软件包含六大模块:识读、计算、一榀框架、钢筋节点、练习、资源库。 三、企业专业工业 APP 1 、精臣固定资产:基于 SAAS 模式的固定资产管理系统,能为企业提供资产管理、资产盘点、资产标签自助打印、盘点报告自动生成等全生命周期解决方案。具有灵活的组织结构管理、角色管理等功能。功能包括资产入库;资产领用、归还、报废;标签打印;资产盘点(手机盘点、 PDA 盘点);分析报表、盘点报告;用户中心、设置管理。 四、开源软件 1 、 DDEDock 是 Deepin 桌面环境的基座。 2 、 DDE 控制中心是 Deepin 桌面环境的控制面板。 3 、 DeepinEditor 是一个桌面文本编辑器,支持常见的文本编辑功能。 4 、 LinuxDeepin 的默认屏幕截图应用程序。 5 、 Python 资源大全 - 中文版,包括: Web 框架、网络爬虫、模板引擎、数据库、数据可视化、图片处理等,在线持续更新。 6 、 DeepinFontInstaller 用于为具有批量安装功能的用户安装和卸载字体文件。 DPL 语言简洁、开发效率高,容错性好,另外通过独创的表缓存机制可以将数据库的表数据读到客户机内存中处理,既高效又能减少数据库的服务器负担,分摊数据库系统的压力,提高应用系统的整体性能。 DPL 语言不用预先编译,在产品运行中可以在线编写或更改 DPL 代码,快速响应用户需求。 8 、 Deepin 的默认媒体播放器,非常漂亮但非常易于使用。 QML 用于构建其图形界面,将 QtAV 与其多媒体后端相结合。所有视频格式都支持开箱即用。 9 、管理信息系统软件生产线:一款通用数据库维护与管理工具软件、也是设计局域网中管理信息系统工具软件及数据库学习实验工具软件。提供丰富可任意定义界面对数据库进行数据查询、数据维护、数据分析与计算、数据导入与导出、打印报表、数据挖掘等操作。 管理信息系统涉及各种行业、企业、单位,管理内容万万千,管理需求不胜枚举,程序界面无穷多。这个软件可以满足所有这些无法穷举的设计需要,设计出各种局域网上需要或目前所存在的各种管理信息系统(财务、人力资源、设备、仓库、物流、商店、企事业单位、生产、工艺、办公自动化、 ERP ……等),可以设计任意友好的界面、满足关于管理代码的应用需要、支持在不同应用的不同类型字段间数据整合的需要、支持中英文字标签相互变换的需求、支持在程序中实现数据完整性控制与安全性控制。可以在数据录入时点选代码或历史数据实现快速、规范输入;提供工作流控制与程序运行自动化功能;提供图形与语音处理功能;提供从简单到复杂的对数据表包括文字在内任意条件的检索功能;提供在数据库间、数据表间、纯文本文件间、 Office 文件( word 、 excel 、 pdf )间、网络文件间相互导入导出的功能;设计各种打印格式与打印各种报表(表格式、文本、表格式标签、文本式标签、带图形表格式报表)功能;支持对数据表进行各种处理(横向或纵向计算或变换、关系代数、 ABC 分析、数据交叉表、数据表横纵变换、公式法数据挖掘、 Apri 关联分析、 Fp 关联树、聚类分析、 ID3 决策分析)等。用户只需要设计与绘制用例图、数据结构部件图、系统结构部件图、时序图、组件图就可完成需求分析并自动生成应用系统,设计高效、正确,质量可靠,运行稳定、安全。无需掌握任何计算机程序设计语言。只要是中学以上文化程度都可以自己设计与制作管理信息系统。由于界面丰富、操作简便、功能全面、适应性强,是数据库维护与管理良好平台,是学习数据库的优秀实验工具。 操作方法:从浏览器输入 地址 http://www.hubei-itts.cn/ 进“ 湖北工业软件化开源社区平台” ,选择水平菜单项“ 平台服务” ,选“ 开源代码” ,选“chengxuexian/software_production_line ,软件生产线” ,点选右上角右边第一个按钮(向下箭头线加短横线图标),点ZIP ,下载。下载完成后解压缩,之后可参考文件包中“ 管理信息系统软件生产线实验说明书.doc” 与“ 管理信息系统软件生产线与软部件库结构手册.doc” 操作。 由于目前“湖北工业技术软件化开源社区”平台是测试版,任何人无需注册就可自由进入社区,下载软件。不 过目前速度比较慢,下载本软件约需要 1 小时, 我们衷心希望“管理信息系统软件生产线”能为软件复用理论与技术的发展做出贡献;希望能有效提高管理信息系统设计效率并降低其成本,使计算机应用更加广泛;希望能提高管理信息系统质量,降低维保成本,普及数据库应用技术;希望能为数据库课程建设提供新的思路与内容。希望得到计算机高手的支持与帮助,祝愿该技术得到更加深入的发展。
个人分类: 生活点滴|4279 次阅读|0 个评论
看一篇被计算机科学杂志正刊拒的文章的专家评语,评“专家”
热度 1 求新 2017-3-20 11:38
我们于 2015年向当年软件工程学会年会投稿,NASAC2015组委会组织评审的二位专家的评语1:“通过自上而下设计软件资源库,可使得管理信息系统的开发过程中,具有设计快捷、高速、高效、质量优良、维保成本低廉等优点。”和评语2:“本文从采用自上而下的方法设计软件资源库,并提出一种设计管理信息系统软件生产线的方法,内容涵盖软件生产线的方方面面,内容详实”。组委会通知说:已被录用为短文并推荐至期刊《计算机科学》发表。不过,我们同时向会议原组委会型竞赛投稿,由于组委会工作方面失误未向专家提交审核,经我方要求组织了审核被拒。已在我们的博文:《难道只是失误吗?-给14届全国软件与应用学术会议代表们的公开信》(见 http://blog.sciencenet.cn/blog-2551-933380.html )中详细说明。这一事件之后,组委会 毁约 未再向计算机科学杂志推荐我们的文章。去年,我们对文章修改后,增添了一些新研究内容。考虑到计算机科学杂志社与软件工程学会联系密切,向计算机科学杂志投稿,但被其正刊所拒,其依据是他们所聘请的三位 “专家”的评语。我们向编辑部陈述了对这些评语的意见,但未收到对我们的意见的回复。 一般 “专家”要枪毙一篇文章或一个项目,杀手锏 之一 是宣布该文章或项目不具创新性。本来,这很容易论证,目前百度还有各种网站都提供搜索功能,网上一搜,如果没有创新性,一定可以找到数以万计的同类作品。但是, “专家”们不必担心,他们写评语时不需要用事实做后盾,只要根据掐头去尾的一个内容进行论定就可以了,没人找他们的麻烦,即使有投诉,装聋 装瞎 就是了。看: 第一位专家说: “软部件实现和复用技术不是新鲜的话题,工业上已经有完整的体系,已经有很多成形的软件系统。”。另一位“专家”说:“论文中提到的“通用软部件”,“UML建模”概念已经是比较成熟的技术”。 关于 “ 软部件实现和复用技术不是新鲜的话题 ” 是大实话,至于 “工业上已经有完整的体系,已经有很多成形的软件系统。”还有““通用软部件” 已经是比较成熟的技术”就经不起推敲了。本文附件列出在中国学术期刊网络出版总库全部字段中搜索“软部件”一词的结果,找到相关的中文期刊 91 篇,用时 0.007 秒。其中有些附了摘要,有些没附,这些没附的是我和我的研究生的作品,可以认为是一家之言。可以发现,在学术期刊中,涉及“软部件”一词的就不多,涉及“通用软部件”的就更少,至于“工业上已经有完整的体系,已经有很多成形的软件系统。”和“是比较成熟的技术”,就是在信口开河了。 文章要表达的一个 思想 是 认为 目前关于构件、组件、部件等概念界限不清,有必要加以区分, 以 有利于大家的研究和讨论 、 有利于 “软部件”技术的发展。 有一些 文章、研究生论文 、 一些著作中都 使 用了 “部件”这个词,但是 多数 文章 中关于 该词的 定 义和 “构件”没有区别。 我们 文章认为在设计包括多个类的可复用代码产品时有二条路线,一是 “从上而下”地设计,需要对所有应用系统的构成进行分析,取其中可以复用的部分加以整合与集成,得到软部件库。另一种是“从下而上”,从已经设计出来的某个领域中 的 系统模块中,补充或修改设计,使其具有可复用性,处理好接口,就可以 复 用,这是大多数文章称之为 “构件”的设计。还有一些例如中间件,在应用系统中不是完整的模块程序,只是构成一个程序的部分,常称为“组件”。但是, 多数作品不 这样明确区分和定义, 三个词 混用 , 不利于研究与讨论。第一位专家大概就是这一 逻辑 ,既然 “部件”就是“构件”,“ 软 部件 实现 ” 就是 “ 软 构件 实现 ”吧, 其研究就 太多了 ,你们的文章也就不存在创新性了。目前, 确实有不少公司或在 某 领域内 建立了软构件库, 形成了自己的软件系统 ,但其中构件不适用于其他领域,称为领域构件。 领域构件 的 应用和研究 确实也 比较广泛, 但 还不能说是 “成熟” 。 因为,还没有统一且准确的 规范和标准 ,没成为教科书中成熟的理论,没 在全软件 产业里统一 应用 。在 90年代末开始研究“构件”时,当时有关项目申报的 最终 目标是软件生产工业化,这些项目都通过了验收, 但 软件生产工业化的目标却不再被人提及了。 90年代末到本世纪初,北京与上海都建立了软“构件库”,希望 能 为社会提供可复用软件,降低软件生产成本、提高软件质量、降低软件维保费用。它们 在部分地区曾 发挥了一定的作用,但是同样 不算成熟 。面对这些情况我们还不应当反思吗?不应当将原来的研究再向纵深推进吗?我们提出的区分部件和构件,正是希望能找出原来研究中的问题或者找到有可能突破的新的方向或方法。 关于 “UML建模”倒确实是成熟的。它是统一建模语言,是 对象管理组织 制定的标准,是一般计算机专业大专生的学习内容,是目前多数产业进行产品设计的 必用 工具。但是, 我们 文章讲的并不是 “UML建模”, UML建模是面向对象的,其最基本元素是类与对象,基于类与对象的建模软件无法完成 全 应用系统的建模。我们讲的是 应用 “部件” 建模 , “部件”是类的集合,是完整程序,是直接构成应用系统的程序模块, 面向对象的 UML无法以“部件”为基本元素组织建模。事实上, 目前流行的 UML建模软件都无法自动生成应用系统 ,甚至无法自动生成程序代码 。有一些研究希望完成 UML所提出的正向工程,自动生成应用程序, 但 如同 Rose这样使用特别多的成熟建模软件也只能自动生成程序框架,离 自动生成 应用系统还很远,甚至 已经有 许多人认为,正向工程是不可能实现的。 目前,关于自动生成 程序 代码、软件生产线的研究很 多 ,有好多研究宣布实现了代码自动生成,甚至宣布建立了软件生产线、能自动生成应用系统。但是, 还 没有一个系统得到公认,没有一个系统被普遍推广与应用。其中,有些是某一家研制,服务于某类特定企业,实际是基于行业内领域构件实现的,不能普遍应用于一切应用。有些只是实现自动建库、建表;有些能自动建立网页。 其中有 一个比较受推崇的软件 的 2016版 也只能自动建立某些应用程序的代码,该软件配备的组件极少,类型也极少,许多都要求从控件设计开始,要求使用流程图定义程序逻辑,再建立网页式的系统 。其生成程序的 界面不丰富,和我国应用实际需要的界面相差比较大 ; 其建模方式与 UML相差太多, 许多要求绘制最原始的程序流程图, 难学难用。 不妨回顾一下 面向对象技术发展历史 : 类与面向对象于上世纪 50年代被提出,但到90年代才普遍被应用 。能被普遍应用 得益于 MFC、jdk及许多面向对象语言的类库的建立于完善,这些类库中的类与应用无关,只与语言或平台有关, 在不同 应用 系统中 都可以使用, 学习容易与使用简单促使其被普及。它的应用 使得程序设计效率大大提高、软件质量大大提高、维护成本降低 。 每个类都集成了多个方法,只要选择方法、配置参数就可调用,无需修改代码,开发难度大大下降。 借鉴这段历史, 当前要实现软件工业化生产的目标,所需要的可复用软件也要求是能直接 、 不加修改被调用的代码块,只需要设置参数就能调用;其数量不能太多,应当能包含在某类平台或语言中;它应当是普适的,除和平台或语言有关外,与具体的应用系统无关,也就是说适用于一切应用系统(只要需要)。这 正 是 软 部件与部件库的设计目标 。 只有设计成功这样的系统模块级的部件库,才能通过系统控制程序(菜单程序)直接调用,才能设计出相应建模软件,自动生成应用系统,建立软件生产线。 为 方便学习 、 方便应用 , 其建模软件应当充分吸收 UML的精华内容,操作和UML相似。 我们的 文章全面介绍其设计思想、设计方法、具体实现与应用情况,完全与之相同的设计现在还未见报道,具有显著的创新性。 “专家”常常拿程序说事,例如在 20 15年我们的作品一开始就被拒所依据的是“文章超过8兆” 。 其实,当时的规则是不超过 8兆直接上传,否则需向主席报告 。 我们按照规则三次向主席报告,但组委会将这后面规定忽略,玩弄手法以规则为理由将之枪毙,之后经我们投诉,才再寻 “专家”维持原判。 这篇文章第三位 “专家”说“本篇文章是一篇讨论型论文,并不是学术型创新研究型(算法、系统等)论文,也不是专业领域某一综述研究论文,文章类型不属于《计算机科学》的收稿范围”。 是否 “收稿范围”本应在送审前、之多在一审中判定,可直接退稿 。 目前由二审专家提出本就晚了。而且,拿出一个 “讨论型论文”的概念也十分模糊。本来,任何论文都是针对某种不足进行研究,给出自己的思想与设计,进行实验验证,再讨论并给出结论,都是 在作 “ 讨论 ” 。如果只是对一些观点进行评述,不涉及自己的研究过程与研究内容,没有实验依据与结论,或许可以算是 “讨论型论文”。但是, 我们 这篇文章 针对 当前软件设计现状提出软件生产线概念,从必要性,到需求分析,到详细设计、实验实现 ,最后 讨论 研究的 意义与价值,是典型的科技论文结构,何来 “讨论型论文”之说。 对 一些专家的学术水平与中文能力需要打问号。第三位 “专家”说“第三和第四章节重点讨论的是数据库的类和其他组件模块的设计”。 我们 文章第三和第四章实际是讲根据第二章进行的需求分析,提出满足这样的需求的详细软部件库的设计方案、建模软件设计方案、应用这样的软部件库与建模软件自动生成应用系统的软件生产线设计方案与实现情况。具体的软部件库部件数量很多,因而分成维护类部件、查询类部件、统计类部件、导入导出类部件、打印与输出类部件分别说明。这位 “专家”只看到维护类中有“类”这样一个字,就说是重点讨论的是“数据库的类” , 真是贻笑大方了。无论哪种语言、那个应用系统中任何可复用的数据维护程序(或任何其他可复用模块程序)都不可能是一个类程序,它必须使用各种各样的控件类,否则无法达到可复用的目的 。 也就是说必须是多个类集成的程序 ,不可能只是一个类,不存在 “维护类”这样的“数据库的类” 。 可见, 文章第三章、第四章讲 的 是数据维护部件、查询部件、 ……等 的 详细设计与应用,决不是 “数据库的类和其他组件模块的设计”。这位专家露馅了。 有一个 “专家”说:“论文的内容是仅仅对一个管理信息系统软部件库以及应用软部件库设计信息系统软件生产线的需求,设计及开发进行说明。并没有从“代码复用技术”的角度进行探讨。” 我们 文章第一部分引文讲软件复用,从子程序、类讲到构件、部件,再重点讲软构件和软部件概念的区别、讲这一区别的意义:只有从许多人讲的与构件混用的 “部件” 概念 中将 “ 通用软部件 ” 分离出来,并且重点研究,才能设计出软件生产线, 同一部件可在不同地方、不同应用系统中应用, 其内容 就 是软件复用。 “专家”说文章未没有从“代码复用技术”的角度进行探讨。只能说该“专家”对“软件复用”概念不清晰,文章的题目是“软件代码复用技术研究的重要问题探讨”,主题应当是一个“重要问题”,而不是“代码复用技术”。文章探讨的是:要实现软件生产现代化、要建立软件生产线,需要什么样的软件代码复用技术。文章的观点是要研究软部件技术,并列举了我们设计的管理信息系统软部件库为例,说明怎样建模、怎样建软件生产线,进而说明,设计出通用于一切应用系统的软部件就可以建立软件生产线 。完全是 从 “代码复用技术”的角度进行 的 探讨。 “专家”们又一个套路是拿参考文献说事 。 第二位 “专家”说:“论文所引用的文献相对较老,且没有对最新及本领域有影响力的文献进行引用”。 如果是成果鉴定或水平论证,参考文献是表现应用价值与研究水平的重要依据 ; 如果是申报项目、经费,参考文献也能表现研究的意义。但是,如果 关于论文中的是 评价创新性, “ 参考文献 ”情况不应当是否决条款 。如果一个问题未被前人研究过,没有相关的文献, 但有研究价值, 有创新 ,其 文章就不能发表了?关于软件生产工业化、软件生产线方面的研究目前还处在很初始的阶段,还没有大家公认的突破。缺少有影响力的文献进行引用不应当是论文发表中最重要的评价依据。 关于软部件库的设计及软件生产线课题是目前许多人关注的重要课题,我们所谓的根据所有应用系统和应用进行需求分析并非不可能,时机已经成熟了。目前已经有许多行业有了自己的领域构件库,只需要对其进行整合,统一接口标准,将功能相近的构件集成到一起,处理好一个部件集成多种应用、多种功能及通过参数选用的问题,就有可能建立完善的软部件库,进而设计出软件生产线 。 将对提高软件生产效率、大幅度提高软件质量、降低成本、降低学习门槛、普及应用、减少软件维保成本产生重大价值,以适应大数据新时代的到来。 目前,很多论证都依靠专家 。 这本来是求取公平、防止腐败的重要手段,十分必要。但是希望, 1、要依靠真正学术水平高、实践经验丰富、原则性强的专家。希望能有“回头看”的机制,要跟踪评价,有必要的问责手段。2、要强调文风,专家评语应当以事实为依据,反对断章取义,反对乱扣帽子,强调独立自主公正评判。 至少在收到投诉后,应当给予答复,将投诉内容与答复情况记入个人业务档案,对于明显违规者应记入个人信用档案。 3、依靠专家不能成为“不作为”的挡箭牌。 附件:关于软部件有关论文名搜索 中国学术期刊网络出版总库 读秀 全部字段中 搜索关键词 “软部件” 1、基于复用的自适应软部件技术研究 【作 者】叶品菊;叶冉冉【刊 名】电脑知识与技术【出版日期】2015【期 号】第29期 2、MIS系统可复用软部件研究与设计 【刊 名】价值工程【出版日期】2014【卷 号】第33卷【期 号】第36期 3、MIS系统可复用软部件研究与设计【作 者】叶品菊;胡远望【刊 名】价值工程【出版日期】2014【卷 号】第33卷【期 号】第36期 4、具体领域基于软部件的软件开发 【作 者】李莎【刊 名】科教导刊 【出版日期】2009【期 号】第30期【影响因子】0.0977(2014) 5、PB查询软部件的设计与实现 【作 者】叶品菊;胡远望;张峰【刊 名】安徽电子信息职业技术学院学报 【出版日期】2010【卷 号】第9卷【期 号】第4期ISSN】1671-802X【影响因子】0.3485(2014) 6、具体领域基于软部件的软件开发 具体领域基于软部件的软件开发【作 者】李莎【刊 名】科教导刊 【出版日期】2009【期 号】第30期【影响因子】0.0977(2014) 7、CAI软部件的设计 【作 者】罗大卫【刊 名】微电子学与计算机【出版日期】1998【卷 号】第15卷【期 号】第6期【页 码】18-23【ISSN】1000-7180【影响因子】0.7510(2014)【参考文献格式】罗大卫.CAI软部件的设计 .微电子学与计算机,1998,(第6期).【摘 要】以面向对象方法为基础的软部件及软件构架技术迅速发展,开创了软件工程的新时代。提供足够丰富的便于调整组装的软部件以及适应应用领域的软件构架,成了开发应用软件的关键。本文针对CAI系统的特点,重点讨论CAI软部件的要求和设计。 8、管理信息系统中软部件技术研究 【作 者】李莎;曾辉;高霞【刊 名】沙棘(科教纵横) 【出版日期】2010【期 号】第10期 9、基于JAVA的报表软部件的研究与实现 【作 者】高霞【刊 名】软件导刊【出版日期】2006【期 号】第7期【页 码】8-9【ISSN】1672-7800【影响因子】0.6158(2014) 10、软部件信息检索系统 【作 者】Murray Wood Prof;Lan Sommerville;宁洪【刊 名】计算机工程与科学【出版日期】1989【期 号】第3期【页 码】53-64【ISSN】1007-130X【影响因子】0.8660(2014)【参考文献格式】Murray Wood Prof,Lan Sommerville,宁洪.软部件信息检索系统 .计算机工程与科学,1989,(第3期).【摘 要】本文介绍用于存贮并检索软件信息的检索系统。该系统不同于一般基于关键字描述的检索机制,它根据自然语言理解领域的一些成果,把部件的有关信息编码成某种即含语法又含语义的形式,作者称之为部件描述框架(Component descriptor frame)。正文中描述了该系统的几个基本构件以及它们怎样用于检索部件信息。此外,给出了该系统正在使用的一个实例。该系统的这个版本完全由Prolog语言实现,目前正在考虑将其并入一个更广泛的重用支持系统。 隐藏更多 11、MIS通用部件中单表查询软部件的设计与实现 【作 者】叶品菊【刊 名】常州信息职业技术学院学报【出版日期】2008【卷 号】第7卷【期 号】第4期【页 码】5-7【ISSN】1672-2434【影响因子】0.3579(2014) 12、基于软部件的MIS开发方法研究 【作 者】游晓明;刘升【刊 名】湖北师范学院学报(自然科学版)【出版日期】1999【卷 号】第19卷【期 号】第4期【页 码】41-43【ISSN】1009-2714【影响因子】0.4593(2014)【参考文献格式】游晓明,刘升.基于软部件的MIS开发方法研究 .湖北师范学院学报(自然科学版),1999,(第4期).【摘 要】分析了我国MIS应用系统的现状和主要存在问题,介绍并提出如何基于软部件技术解决系统的可复用性和适应性差的问题. 13、基于软部件和构架技术的CAI软件 【作 者】罗大卫【刊 名】现代计算机【出版日期】1998【期 号】第10期【页 码】54-57【ISSN】1007-1423【参考文献格式】罗大卫.基于软部件和构架技术的CAI软件 .现代计算机,1998,(第10期).【摘 要】本文讨论基于软部件及构架技术的CAI软件的系统结构和开发平台,并探讨这种CAI软件的设计方法。 14、基于软部件的CAI软件体系结构 【作 者】罗大卫【刊 名】电化教育研究【出版日期】2000【卷 号】第21卷【期 号】第5期【页 码】45-48【ISSN】1003-1553【影响因子】2.6039(2014)【参考文献格式】罗大卫.基于软部件的CAI软件体系结构 .电化教育研究,2000,(第5期).【摘 要】本文讨论基于软部件的 CAI软件体系结构的基本概念 ,给出组成 CAI软件的软部件及软部件之间的联系和约束的描述以及指导它们设计和演化的原理和准则 ,探讨在软件体系结构指导下的 CAI软件设计方法 ,给出 CAI软件开发平台的框架结构 15、基于PB的数据维护软部件的设计与实现 【作 者】程学先;叶品菊;胡远望【刊 名】湖北大学学报(自然科学版) 【出版日期】2005【卷 号】第27卷【期 号】第4期 16、一个基于Internet的软部件信息系统的研究和实现 【作 者】余金山;万静【刊 名】信息与控制【出版日期】2002【卷 号】第31卷【期 号】第4期【页 码】357-363【ISSN】1002-0411【影响因子】1.0440(2014)【参考文献格式】余金山,万静.一个基于Internet的软部件信息系统的研究和实现 .信息与控制,2002,(第4期).【摘 要】当前对软部件技术的研究多数侧重于软部件的制作、存储、检索、裁剪和组装等问题 ,且往往过分强调了以上问题而忽略了另一个非常重要的方面 ,即部件的生产者与部件的使用者之间、生产者与生产者之间、使用者与使用者之间的充分的信息交流和有效协作问题 .从这一思想出发 ,本文提出了一个基于 Internet的软部件信息系统 ,讨论了它的思想、基本模型及其实现 . 17、MIS系统中基于PB平台下软部件开发的研究 【作 者】李莎【刊 名】中南论坛(综合版) 【出版日期】2009【卷 号】第4卷【期 号】第3期【页 码】114 18、 基于软部件的软件重用技术研究 【作 者】席一凡 ;姚树俊【刊 名】邢台职业技术学院学报【出版日期】2005【卷 号】第22卷【期 号】第5期【页 码】49-51【ISSN】1008-6129【影响因子】0.2310(2014)【摘 要】软件重用是提高软件生产率,降低软件生产成本的有力手段,近年来在国内外都有较快的发展。本文详细讨论了基于可重用软部件的软件重用技术,给出了可重用软部件模型的定义、软部件生成过程、软部件库组织、软部件检索以及软部件重用技术,提出了三种重要的软部件库的组织方式及两种检索途径,着重阐述了软部件的重用机制及合成技术。 19、软部件技术为什么成为独家技术【作 者】程学先【刊 名】管理观察【出版日期】2009【期 号】第16期【页 码】87-89 【ISSN】1674-2877【影响因子】0.0620(2014) 20、勘探地球物理反演数学软部件库 【作 者】蔡宗熹【刊 名】物探化探计算技术【出版日期】1993 【卷 号】第15卷【期 号】第4期 【页 码】352-357 【 ISSN】1001-1749【影响因子】0.4727(2014) 21、软部件式CAI软件开发平台的体系结构 【作 者】徐永剑;罗大卫【刊 名】现代计算机【出版日期】1998 【期 号】第5期【页 码】10-12【ISSN】1007-1423【摘 要】本文列举当前cAI软件所存在的问题,并且探讨了在新型CAI开发平台中如何运用软部件及构架技术解决上述问题的途径,对新型平台的体系结构进行了描述;并讨论了新型平台带 22、用软部件和构架技术开发CAI软件 【作 者】罗大卫【刊 名】现代计算机【出版日期】1998【期 号】第1期【页 码】1-5,22 【ISSN】1007-1423 【摘 要】本文概述软部件和构架技术及CAI软件的发展,讨论用软部件和构架技术开发CAI软件的问题。一个以CAI软部件及构架为主体的CAI软件开发平台将使得领域知识和教学策略的表示自然清晰,用户接口灵活多样,便利CAI软件的开发、重组。可以大大提高CAI软件的开发效率,同时也能适应CAI软件发展的需要 23、软部件和构架式CAI系统开发平台的总体设计 【作 者】罗大卫;高宏宾【刊 名】五邑大学学报(自然科学版)【出版日期】1998【卷 号】第12卷【期 号】第3期【页 码】17-21【ISSN】1006-7302【影响因子】0.3040(2014) 【摘 要】给出一个以CAI软件部件及构架为主体的CAI软件开发平台总体设计方案。这个平台旨在采用软件工程的最新方法,尽量便利该软件的开发,并提高其开发效率。CAI课件的开发成为简单的领域知识录入,不熟悉软件开发的教师和专家可以独立地在该平台上开发出自己的CAI软件,并且可以很方便地修改补充已开发好的CAI软件。 24、面向MIS最终集成的可复用软部件设计与研究 【作 者】余小燕;程学先【刊 名】福建电脑【出版日期】2006【卷 号】第22卷【期 号】第10期【页 码】107-108【ISSN】1673-2782【影响因子】0.2476(2014) 25、信息系统基于即插即用型软部件的软件结构模型法 【作 者】程学先;程传庆;王莉【刊 名】武汉理工大学学报(交通科学与工程版)【出版日期】2003 【卷 号】第 27卷【期 号】第4期 【页 码】544-547【ISSN】1006-2823 【影响因子】 0.7276(2014) 26、软部件描述:模型,方法和语言 【作 者】李留英;毛新军;齐治昌【刊 名】计算机科学【出版日期】1997 【卷 号】第24卷【期 号】第1期 【页 码】77-80 【ISSN】1002-137X 【影响因子】 1.2319(2014)【摘 要】软件重用技术是软件工程领域的一项关键技术。目前,支持软件重用的方法主要有两种:块重用,即使用可重用的程序块;模式重用,即通过程序转换获得可重用性。其中,最为系统化、为工程化的软件重用活动是基于重用库的块式重用。块式重 27、支持软件重用的软部件分类方法 【作 者】黄瑞芳;莫晓柏【刊 名】常州工学院学报【出版日期】1992【卷 号】第5卷【期 号】第4期【页 码】32-40【ISSN】1671-0436【影响因子】0.3485(2014)【摘 要】本文介绍了一种软部件多面体分类方法,这种方法基于一个“分析——综合”过程,对可重用软部件集合的分析过程是为了构造这个集合的分类模式,尔后的综合过程是为了描述集合的软部件。这种多面体分类模式适合于变化着的、不断增长的软部件集合,而在对软部件的描述形式上很简洁,便于自动检索系统的实现,同时也支持软部件的相似性排序和描序次序可调,以适应不同用户的需求。 28、信息管理系统中基于JAVA平台下软部件开发的研究 【作 者】李莎【刊 名】中南论坛(综合版) 【出版日期】2008【卷 号】第3卷【期 号】第3期【页 码】119 29、舰载指控系统软件可重用软部件库 【作 者】赵明翔;王振宇【刊 名】计算机杂志【出版日期】1992【卷 号】第20卷【期 号】第1期【页 码】49-51【ISSN】1672-9722【影响因子】0.6529(2014) 30、面向对象的可重用软部件库系统设计与实现 【作 者】陈辉;王振宇;梁先忠;马晓东【刊 名】计算机研究与发展 【出版日期】1993【卷 号】第30卷【期 号】第7期【页 码】48-54【ISSN】1000-1239【影响因子】2.1938(2014)【摘 要】本文报告了一个可重用软部件库系统设计与实现的途径,采用了基干对象的部件模型,提供了两种检索方式以及两套部件获职工具,阐述并给出了部件组合规则,提出了基于重用的软件开发新范式,最后讨论了软部件库的结构。 31、舰载指控系统软件的可重用软部件库 【作 者】赵明翔;程红【刊 名】舰船科学技术【出版日期】1993【卷 号】第15卷【期 号】第3期【页 码】61-65【ISSN】1672-7649【影响因子】0.3477(2014)【摘 要】软件重用技术为90年代最有希望的技术之一。它既能提高软件生产率,又能提高软件产品的可靠性。部件化技术是基于“库”的一种软件重用技术。本文以舰载指控系统软件为背景,对部件化技术所涉及的部件获取、部件库管理和使用部件合成新的软件系统等技术进行了深入地研究,并实现了舰载指控系统软件可重用的部件库系统的原型。 32、加强软部件技术研究促软件工业化生产时代到来 【作 者】程学先;程传慧;程传庆【刊 名】微型机与应用【出版日期】2007【卷 号】第26卷【期 号】第A1期【页 码】59-63【ISSN】1674-3490【影响因子】0.5382(2014) 33、“MIS软部件技术研究”经鉴定为达到国际先进水平 【刊 名】湖北工业大学学报【出版日期】2005【卷 号】第20卷【期 号】第2期【页 码】58-58【ISSN】1003-4684【影响因子】0.4936(2014)【摘 要】2005年元月17日,湖北工业大学计算机学院程学先教授负责的湖北省教育厅科技攻关项目——“MIS软部件技术研究”顺利通过了湖北省专家组的技术鉴定。专家认定:该项目在管理信息系统代码的软件复用领域达到了国际先进水平。 34、浅谈软件复用与面向对象 【作 者】叶强【刊 名】青年科学(下半月) 【出版日期】2014【期 号】第7期【页 码】324-325【摘 要】软件复用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。软件重用不仅要讨论如何检索所需的软部件以及如何对它们进行必要的修剪,还要解决如何选取软部件、如何组织软部件库等问题。 35、Windows下的OLE自动化技术及其实现 【作 者】党峥;汪晓庆【刊 名】电脑与信息技术 【出版日期】1998【卷 号】第6卷【期 号】第2期【页 码】7-11【ISSN】1005-1228【影响因子】0.5117(2014)【摘 要】本文描述了OLE自动化技术的原理及特性,并实现了一个基于OLE自动化的多媒体著作软部件。 36、CAI系统的面向对象分析 【作 者】罗大卫【刊 名】五邑大学学报(自然科学版)【出版日期】1996【卷 号】第10卷【期 号】第4期【页 码】4-9【ISSN】1006-7302【影响因子】0.3040(2014)【摘 要】基于面向对象方法的软部件和软件框架技术是新一代软件工程的基础。本文讨论软部件技术在CAI系统中的应用,着重讨论对CAI系统的面向对象分析,这是CAI系统设计的基础。 37、基于Agent的软件重用 【作 者】毛新军;徐锡山;齐治昌【刊 名】计算机工程与科学【出版日期】2000【卷 号】第22卷【期 号】第5期【页 码】88-91【ISSN】1007-130X【影响因子】0.8660(2014)【摘 要】软件重用是目前提高软件质量和开发效率、降低软件开发成本的一种重要手段。本文分析了当前软件重用的特点 ,针对其不足以及目前软件开发的状况提出了动态软件重用的思想。这一思想的一个重要特征是由可重用软部件完成软件重用活动。为了实现动态软件重用的思想 ,我们进一步提出了基于 Agent的软件重用方法 ,分析了该方法在实现动态软件重用中的有效性和面临的问题以及解决问题的技术途径。 38、适用于客户机/服务器系统的MILESTONE开发方法 【作 者】孙义【刊 名】计算机研究与发展【出版日期】1997【卷 号】第34卷【期 号】第11期【页 码】29-33【ISSN】1000-1239【影响因子】2.1938(2014)【摘 要】传统的软件开发生存周期把软件开发过程划分成4个主要阶段.这种方法特别适合于单一的独立系统,但不适合客户机/服务器系统的开发.客户机/服务器系统由许多软部件组成,而且集成多个部门自己开发的软件,这些软部件特别适合采用并行且交互的实现方法.根据客户机/服务器系统开发的特点,文中介绍了一种基于MILESTONE的过程开发模型. 39、“再用式”软件开发方法 【作 者】吴会松;谢阳;田军;李莉莉【刊 名】西安石油学院学报(自然科学版) 【出版日期】1999【卷 号】第14卷【期 号】第1期【页 码】47-49,6【ISSN】1673-064X【影响因子】0.6660(2014)【摘 要】根据当前软件开发的现状,提出了一种在保证当前开发质量及效率的前提下,还能让以后的软件开发人员重用已开发软件资源的“再用式”软件开发方法,该方法结合了面向对象及快速原型法的优点:针对 软件开发中的需求多变性,用快速原型法进行需求分析,在后续的开发中,以面向对象为基础,用各种 “级别”不同的可重用软部件组装系统,在对软部件不断的创建(只在没有所需部件时才创建)、重用及组合中完成系统的开发.这种方法可以有效地提高软件的整体开发效率.最后对该方法的进一步研究方向进行了探讨. 40、从领域研究探求软件集成途径 【作 者】韩庆兰;杨柳【刊 名】计算技术与自动化 【出版日期】1998【卷 号】第17卷【期 号】第3期【页 码】14-17【ISSN】1003-6199【影响因子】0.5693(2014)【摘 要】本文借鉴工业标准件思想,将软件产品按其应用领域分类,研究构造出领域模型,建立标准部件库,参照MRP—Ⅱ中的成本计算方法,根据软件产品结构信息,对软部件进行组装,实现软件集成。 41、多媒体课件开发中的重用技术 【作 者】李名;李瑞萍【刊 名】中国现代教育装备 【出版日期】2008【期 号】第12期【ISSN】1672-1438【影响因子】0.3149(2014)【摘 要】在多媒体课件开发过程中引入重用技术能够使教师和软件开发者更好地分工和协同工作,从而设计出质量更高、更适合需求的课件。本文主要介绍了重用的概念以及如何在多媒体课件开发中应用重用技术。 42、计算机中英文新技术词汇对照 【刊 名】通信世界【出版日期】1997【期 号】第12期【页 码】41【ISSN】1009-1564【影响因子】0.0871(2014)【摘 要】计算机中英文新技术词汇对照Componentware———软构件,组合软件将多个供应商提供的各种软部件组合起来,支持应用开发环境的新一代软件技术,它是以面向对象为基础,嵌入后立即生效的即插即用软部件概念为中心的技术体系。软构件主要起组合作用,具有以下... 43、新时期经济违法案件新特点 【作 者】敬远【刊 名】北京工商【出版日期】1994【期 号】第2期【页 码】14【ISSN】1002-3135【摘 要】其一、假冒伪劣产品已从人们日常生活中的衣、食、住、行领域的日用百货、汽车配件、电线电缆、钢材等向高科技领域的计算机软部件发展,由利小产品向利大的空调机、汽车等产品发展。 其二、销售走私商品的案件逐渐增多,随着沿海边境地区走私活动的日益猖獗,销往内地的走私商 44、试论软件工程实施的宏观因素 【作 者】李其龙;尹江月【刊 名】郑州航空工业管理学院学报 【出版日期】1988【期 号】第3期【页 码】42-45【ISSN】1007-9734【影响因子】0.4986(2014)【摘 要】软件产品的开发标准,产品设计的图形表示法,软件工具及软部件的标准化,软件工程与硬件工程的关系,应用软件工程师的培养和造就等方面的问题都是影响软件工程实施的宏观因素。本文采用与机械工程相类比的方法论述这些因素在软件工程实施中的重要作用。 45、CT流程预编译器的设计 【作 者】王学军;金连甫;陈平【刊 名】计算机工程【出版日期】1999【卷 号】第25卷【期 号】第4期【页 码】16-18【ISSN】1000-3428【影响因子】1.0258(2014)【摘 要】讨论了计算机语音流程的预编译器CTFPC。CTFPC的设计采用面向对象的程序设计思想和应用程序框架思想,将状态转移表转换成某种编程语言的源代码,以减少开发人员的重复性工作,提高系统开发效率。 46、软件体系结构讲座 (三)实例研究 【作 者】王振宇;梁先忠;况银瓶【刊 名】计算机与数字工程【出版日期】1999【卷 号】第27卷【期 号】第3期【页 码】58-68【ISSN】1672-9722【影响因子】0.6529(2014)【摘 要】本讲通过若干例子说明如何利用体系结构原理增加对软件系统的理解。 47、软件体系结构讲座 (一)软件体系结构引论 【作 者】王振宇【刊 名】计算机与数字工程【出版日期】1999【卷 号】第27卷【期 号】第1期【页 码】62-68【ISSN】1672-9722【影响因子】0.6529(2014)【摘 要】本讲讨论软件体系结构的定义、研究内容和发展现状以及它同软件工程的关系。 48、软件项目过程重用库建设 【作 者】张耀伟【刊 名】品牌与标准化【出版日期】2009【期 号】第16期【页 码】51【ISSN】1674-4977【影响因子】0.0484(2014)【参考文献格式】张耀伟.软件项目过程重用库建设 .品牌与标准化,2009,(第16期).【摘 要】现状说明。随着本单位承揽的项目越来越多,项目的需求不断扩大,项目开发人员经常会感到没有可以借鉴或可以利用的资料,包括代码、用例、原型等等。由于长期以来,软件开发处于个人开发阶段,软件重用率很低,软件生产率不高,造成软件开发周期长,软件质量不高。这个问题已经在工作中日益严重,因此,建立 49、软件重用技术【作 者】魏延【刊 名】重庆师范学院学报(自然科学版) 【出版日期】1999【卷 号】第16卷【期 号】第2期【页 码】39-44【ISSN】1672-6693【影响因子】0.9053(2014)【摘 要】软件重用是提高软件生产率,降低软件生产成本的有力手段,近年来在国内外都有较快的发展。本文论述了软件可重用性概念及其划分,软件重用的途径,并列举了软件重用技术的现状 50、一个以用户为中心的图形第四代语言系统 【作 者】罗大卫【刊 名】计算机工程与应用【出版日期】1997【卷 号】第33卷【期 号】第7期【页 码】29-34【ISSN】1002-8331【影响因子】1.0855(2014)【摘 要】本文提出一个G4GL系统的设计方案,主要考虑以下原则:以用户为中心;强调基本要求;面向应用领域专家。该系统适于各种数据处理系统的开发,如CAI系统 51、基于软件重用技术的管理信息系统开发【作 者】许海成;余建坤【刊 名】蒙自师范高等专科学校学报 【出版日期】1999【期 号】第6期【页 码】41-44【ISSN】1008-9128【影响因子】0.3000(2014)【摘 要】为满足企业迅速建立MIS(管理信息系统)系统的要求,迫切需要采用软件重用技术来进行开发.本文讨论了MIS系统开发过程和活动中所涉及到的软件重用理论和技术. 52、一种基于领域分析的面向Agent需求建模方法 【作 者】唐孝柱;邵堃;滑培培【刊 名】微计算机信息 【出版日期】2010【卷 号】第26卷【期 号】第33期【页 码】249-250,243【摘 要】面向Agent软件工程是开发复杂分布式系统的一种新范例,Agent作为一种新型软部件具有更高的抽象,能更有效的处理复杂的系统。本文以工作管理系统为研究背景,提出一种基于领域分析的面向Agent需求建模方法。该方法基于当前主流的面向Agent软件开发方法,结合领域工程的知识,将特征引入到系统开发的元模型中,描述了需求建模过程中的几种建模活动。使需求建模的结果不仅能有效地满足系统用户的需求,还能够有效的支持软件复用。 53、基于面向对象的软件重用技术【作 者】成岳鹏;戴永成;崔静【刊 名】河北工业科技 【出版日期】2009【卷 号】第26卷【期 号】第5期【页 码】434-437【ISSN】1008-1534【影响因子】0.7778(2014)【摘 要】在软件开发中使用软件重用技术可有效提高软件生产率、缩短软件开发周期,尤其对大型软件开发项目来说更是如此。由于面向对象的软件开发具有封装、继承等特性,因而它更适合支持软件的重用技术。本文所讨论的主要问题就是基于面向对象的软部件的重用技术。 54、软件重用技术在MIS系统中的应用 【作 者】郑志蕴;张行进;胡箐妍;杨亚伟【刊 名】郑州大学学报(工学版) 【出版日期】2002【卷 号】第23卷【期 号】第2期【页 码】57-60【ISSN】1671-6833【影响因子】0.6391(2014)【摘 要】在开发用电营业管理信息系统过程中 , 针对软件开发中的需求多变性 ,以软件重用技术为基础 ,通过目标代码级重用、类库、组件等方法 ,开发各种“级别”不同的可重用软部件 ,在对软部件不断的创建、重用及组合中完成系统的开发 .该方法可以有效地提高软件的整体开发效率 ,保证 软件质量 ,而且还能为软件开发人员重用已开发软件资源提供便利 55、基于对象的软件重用技术研究 【作 者】徐小平【刊 名】软件开发与应用 【出版日期】1997【期 号】第6期【页 码】31-33【摘 要】讨论了基于对象的可重用软部件的重用技术,给出了可重用软部件模型的定义,提出了分层次的目录结构的组织方式及两种检索途径,阐述了软部件的生成方法及重用机制。 56、基于对象的软件重用技术研究 【作 者】徐小平【刊 名】计算机应用研究【出版日期】1998【卷 号】第15卷【期 号】第3期【页 码】40-42【ISSN】1001-3695【影响因子】1.5011(2014)【摘 要】本文详细讨论了基于对象的可重用软部件的重用技术,给出了可重用软部件模型的定义,提出了分层次的目录结构的组织方式及两种检索途径,阐述了软部件的生成方法及重用机制。 57、基于对象的软件重用技术研究 【作 者】孙大烈;杨静;王子立【刊 名】哈尔滨建筑大学学报 【出版日期】2000【卷 号】第33卷【期 号】第3期【页 码】111-113【ISSN】1006-6780【摘 要】提高软件开发的效率对软件工程具有重要意义。面向对象的程序设计方法以可重用性为中心 ,构造独立于具体工作的可重用软部件,这些软部件经适当的整合即可构成新的目标系统,从而大大提高软件开发的效率。讨论了基于对象的可重用软部件的重用技术,给出了可重用软部件模型的定义,提出了分层次的目录结构的组织方式及 两种检索路径,阐述了软部件的生成方法及重用机制。 58、软件可靠性的模块分析方法 【作 者】张继旭;王琦【刊 名】战术导弹技术【出版日期】2002【期 号】第2期【页 码】64-69【ISSN】1009-1300【影响因子】0.4000(2014)【摘 要】借鉴软部件可靠性分析方法提出了软件可靠性的模块分析方法 .先将软件分解为模块 ,然后在模块层次上应用EET可靠性增长模型 ,最后进行可靠性叠加而得到软件的可靠性模型 .所需的模型参数可以由软件的历史版本信息、软件模块的静态属性和动态属性得到 .该方法可以在进行软件测试之前实施 ,并在测试中完善 .详细描述了该方法的 6个步骤 ,最后总结了该方法的优点 59、基于领域的O-O软件重用工具的研究与开发 【作 者】毛新军;齐治昌【刊 名】计算机科学 【出版日期】1997【卷 号】第24卷【期 号】第4期【页 码】91-94【ISSN】1002-137X【影响因子】1.2319(2014)【摘 要】基于领域的面向对象软件重用工具(简称OORT)是我们在PC Windows环境下开发的可重用软部件管理工具。OORT按应用领域来组织、管理可重用软部件,支持多个应用领域软部件的建 60、基于部件设计的运行时验证 【作 者】云晓春;方滨兴【刊 名】计算机学报【出版日期】1999【卷 号】第22卷【期 号】第9期【页 码】970-974【ISSN】0254-4164【影响因子】4.0044(2014)【摘 要】研究软部件设计中的可靠性问题.对这一问题主要关心的是,当一个已存软部件的正确性无法得到确认时,在其具体实现不可知的情况下,如何提高它的运行时可靠性?为解决这一问题,该文首先构造一个能够用于软部件动态语义检测的抽象描述模型;然后通过在设计中系统地引入一些运行时技术以保证基于部件软件的可靠性.这些运行时技术包括:(1)包裹部件.作为额外的一层设计,根据软部件的接口说明自动生成,用于检测运行时错误;(2)虚拟部件.作为一种软部件行为模式,利用动态调用和代理机制,保障基于部件软件的容错运行 61、实时系统组合软件模型研究 【作 者】李秦伟【刊 名】贵州工业大学学报(自然科学版) 【出版日期】2001【卷 号】第30卷【期 号】第2期【页 码】42-45【ISSN】1009-0193【摘 要】分析了严格实时控制系统的组合软件实现 ,提出了一个该类系统的组合方法。该方法用三类软部件做结点 ,建立加标有向图组合模型 ,使用引擎机制触发驱动其运行 ,介绍了它的计算机实现 62、对候选重用部件的考虑和实践 【作 者】曾丽芳;郑若忠【刊 名】计算机与数字工程 【出版日期】1994【卷 号】第22卷【期 号】第2期【页 码】10-14【ISSN】1672-9722【影响因子】0.6529(2014)【摘 要】 本文主要针对软件重用中的限制因素 ——怎样处理候选重用软件并获得可重用软部件而提出一种系统化思想。以此方法为指导上机实现了一种可重用的通用模块。关键词:候选重用部件 软件重用粒度 程序结构度量理论 平均信息载量 63、一种基于事务构件的ERP系统集成方法 【作 者】郑明春;王岩冰;杨立洁;刘弘【刊 名】小型微型计算机系统 【出版日期】2001【卷 号】第22卷【期 号】第1期【页 码】89-93【ISSN】1000-1220【影响因子】0.8890(2014)【摘 要】本文首先对各务构件的概念进行了讨论,然后设计了一种事务构件模型,提出了一种基于此模型的ERP系统集成方法,这种方法支持跨平台、跨语言的软构件的集成,可以复用已存在的软件系统或软部件。 64、软件复用:谈跨平台操作规范COM和CORBA 【作 者】陈景龙【刊 名】军队指挥自动化 【出版日期】2001【期 号】第2期【页 码】53-56【摘 要】与硬件制造技术的高度工业化和集成化相比,软件制造业却一直存在着生产效率低、软件可扩充性和复用能力差、难以维护等问题,软件生产至今仍是手工生产方式,主要依赖于软件人员的知识和能力。90年代开始的对象技术和工程化发展,为软件生产从人工集约型向资源集约型发展带来了希望。基于对象技术,人们开始努力研究开发像硬件零部件那样的一些标准软组件、软部件,应用系统的开发也可像硬件组装一样,按照一定的规范,组装这些预制好的软件零部件,从而使软件制造进入了一个全新的境界。 65、重用部件的研究和实现 【作 者】曾丽芳;郑若忠【刊 名】软件 【出版日期】1994【卷 号】第15卷【期 号】第C1期【页 码】16-20【ISSN】1003-6970【影响因子】1.3103(2014)【摘 要】本文主要针对软件重用中的限制因素——怎样处理候选重用软件并获得可重用软部件而提出一种可重用性强的通用模块。众多的计算机工作者正在探讨可重用性理论,在软件重用的概念、模型、语言环境、case工具等方面已取得一定成绩。Pieto—Diaz和Freeman对重用和可重用概念定义如下:重用就是在新环境中使用以前获得的概念和对象。可重用性则是对使用以前获得的概念和对象的难易程度的一种量度。重用概念的出现促进了软件重用这一新领域的研究。出现了基于模块型态重用的合成模型及基于语言生成器和 应用生成器的生成模型等。随着面向对象程序设计环境的出现 ,重用模型得以发展,重用领域的一系列新的case工具开始出现。总之,软件重用领域所取得的成绩一定程度上减少了软件系统的开发费用,缩短了软件开发时间,提高了系统的可靠性,并促进了新语言、新技术的开发发展。但是,重用领域也存在不少限制因素。本文首先以软件生产自动化讨论重用中的限制因素,并以软件工程、抽象等角度引出程序结构度量理论、软件重用粒度等一系列思想。最后,介绍了数据库管理系统中的可重用环境。 66、基于软件的CAI软件体系结构 【作 者】罗大卫【刊 名】电化教育研究 【出版日期】2000【期 号】第5期【页 码】45-48【ISSN】1003-1553【影响因子】2.6039(2014)【摘 要】本文讨论基于软部件的CAI软件体系结构的基本概念,给出组成CAI软件的软部件及软产件之间的联系不和约束的描述以及指导它们设计和演化的原理和准则,探讨在软件体系结构指导下的CAI软件设计方法,给出CAI软件开发平台的框架结构。 67、数字时代的新旅行 【作 者】本刊编辑部【刊 名】户外探险 【出版日期】2011【期 号】第1期【影响因子】0.0036(2014)【摘 要】旅行是一次遭遇,是和空间的遭遇。 1500年前,郦道元面对汉代桑钦的《水经》时,要准备自己的旅行,他精研图志,参阅群书,干余条河流伴随着行程,完成的也许不仅仅是《水经》的注。 近500年前,徐霞客少年时即立志朝游碧海暮宿苍梧,且钟情于地经图志。徐霞客的旅行开始于乘兴览胜,渐入佳境,直至完成十数卷游记。 50年前,杰克·凯鲁亚克在细雨中坐上拥挤的货车,一瓶劣质的威士忌,去哪里,去干吗,似乎一切都不去操心。 5年前,披头四是从旅游攻略书和驴坛开始的旅行,路上有美景、惊喜、意外抑或艳遇。 5天前的小强携一部手机下载几个软部件,背上行囊就已上路…… 新电子时代的光辉已经照耀着小强的生活,新网络时代的星辰也为小强指引着方向,网路似乎延展着无限,也泛着幽幽魅光。 看来,当下这种遭遇可能既是空间的也是时间的…… 搜索关键词 “自动生成应用系统” 68、基于XML的构件自动组装系统的设计与实现 【作 者】谢晓芹;李涓子;王沛;王克宏【刊 名】计算机工程与应用【出版日期】2005【卷 号】第41卷【期 号】第4期【页 码】4-8【ISSN】1002-8331【影响因子】1.0855(2014)【摘 要】该文利用基于XML和Java的程序自动生成技术给出了一个构件组装系统的设计,提出了SAML应用模板语言的定义。连接器利用了消息总线的思想,通过共享消息资源的方式连接构件,从而将构件之间的连接关系解耦。在自动生成应用系统时对SAML模板文件进行分析、转换,自动生成消息分发器和最终可执行应用程序,并结合B2C电子购物领域给出一个原型实现。该设计方法为实现自动的构件组装技术提出了一种解决方案。 搜索关键词 “软件生产自动化” 69、森林资源管理信息系统研建引进UML的必要性研究 【作 者】吕康梅;亢新刚【刊 名】林业调查规划【出版日期】2005【卷 号】第30卷【期 号】第4期【页 码】1-4【ISSN】1671-3168【影响因子】0.5272(2014)【摘 要】UML能为面向对象系统的开发、软件生产的自动化和支持环境的建造提供一种丰富、严谨、扩充性强的表达方式.文章提出了森林资源管理信息系统开发中基于面向对象技术、利用统一建模语言UML建模的过程概念和开发方法.通过对UML的分析可以看出,基于UML的森林资源管理信息系统开发方法在林业信息管理中有很好的应用前景. 70、基于UML的MIS系统开发 【作 者】申红雪;何培英;韩哲新【刊 名】郑州轻工业学院学报(自然科学版) 【出版日期】2002【卷 号】第17卷【期 号】第1期【页 码】67-70【ISSN】1004-1478【影响因子】0.5030(2014)【摘 要】统一建模语言 (UML)是一种可视化的面向对象的建模语言 ,可用于对软件系统进行描述和构造软件的系统结构 .利用UML进行MIS系统建模 ,则要先分析用户需求 ,建立系统的用例、顺序、类、包等视图 ,再按照软件工程的思想进行编程 .在此过程中 ,UML能为面向对象系统的开发、软件生产的自动化和支持环境的建造提供一种丰富、严谨、扩充性强的表达方式 71、软件生产自动化之路--软件工程 【作 者】杨芙清;米宁【刊 名】新华文摘 【出版日期】1986【期 号】第9期【页 码】203-205【ISSN】1001-6651 搜索关键词 “自动生成系统”(共1069篇,去掉特定领域或特定用途的自动生成的文章,去掉95年前文章) 72、基于可复用格式的打印文本自动生成系统设计与实现 【作 者】尉寅玮;吴雅轩【刊 名】软件导刊 【出版日期】2016【期 号】第8期【页 码】86-88【ISSN】1672-7800【影响因子】0.6158(2014)【摘 要】通过对格式化文本生成工作的调研分析,针对文本格式化过程中存在的各种弊端,设计了一套基于B/S架构的可复用格式打印文本自动生成系统,通过将格式信息与内容信息的编写进行合理划分,实现了格式化文本的自动生成,从而提高了格式化文本的编写速率,降低了因为格式问题而导致的文本错误。 73、Java Bean自动生成系统的设计与实现 【作 者】杨静【刊 名】湖北汽车工业学院学报 【出版日期】2015【期 号】第2期【页 码】61-63【ISSN】1008-5483【影响因子】0.4286(2014)【摘 要】为了提高系统的开发效率,针对模型层设计了一个代码自动生成系统。该系统具有良好的扩展性和灵活性,能根据用户的配置自动生成相应的业务代码,在降低开发成本的同时,有效提升了软件质量。 74、通用报表自动生成系统 【作 者】任卫银;任宗修【刊 名】新乡教育学院学报【出版日期】2004【卷 号】第17卷【期 号】第2期【页 码】94-95【ISSN】1674-6511【影响因子】0.7793(2014)【摘 要】本文建立了一个通用报表自动生成系统 ,对于任意的关系型数据库文件 ,都可以利用该系统 ,以报表的形式将数据库中除备注型外一般字段的内容输出 ,并可以根据需要 ,选择所需字段和所需记录进行输出 ,为数据库的输出提供了一种灵活、简便的工具 75、基于XML的网站自动生成系统的设计 【作 者】陈晓飞【刊 名】计算机光盘软件与应用 【出版日期】2012【卷 号】第15卷【期 号】第16期【页 码】206,208【ISSN】1007-9599【影响因子】0.3579(2014)【摘 要】可扩展标记语言(Extensible Markup Language,XML)是指一种应用于电子文件标记作业,以标记为手段赋予电子文件自身所特有的结构性标记语言,而这种类型的结构性标记语言则能够广泛应用对数据的标记及类型定义处理。在当前技术条件支持下,XML技术已成为一种可允许用户针对自身所指定标记语言进行定义处理的源语言形式,并且借助于结构数据的可持续性与优化型而使得XML能够广泛应用于Web传输过程当中。本文以XML为研究对象,着眼于网站自动生成系统的设计这一中心问题,围绕基于XML的网站自动生成系统设计这一中心问题展开了较为详细的分析与阐述,并据此论证了XML可扩展标记语言的引入及其应用在提高网站自动生成系统设计作业质量与有效性的过程中所占据的重要地位及其所发胡的关键意义。 76、中小型企业网站自动生成系统的设计与实现 【作 者】王文学;王利军【刊 名】电脑知识与技术 【出版日期】2011【期 号】第29期【ISSN】1009-3044【影响因子】0.3204(2014)【摘 要】该文针对在全球电子商务浪潮的冲击下我国的中小企业由于受技术、资金等各方面原因的制约,不能很好地在互联网上实施电子商务开展网上贸易的情况。通过研究这些企业的需求开发出一套通用的企业网站自动生成系统,帮助中小企业轻松地在网上建立自己的网站系统,并可以很方便地在线维护,提供和MIS系统的接口,可以和企业现有进销存系统紧密的结合,为企业的管理和经营决策支持提供依据,从而推进我国电子商务水平的发展。 77、电视气象预报自动生成系统开发 【刊 名】电脑知识与技术 【出版日期】2008【期 号】第17期【页 码】1473-1474,1481【ISSN】1009-3044【影响因子】0.3204(2014)【摘 要】电视气象节目是一档以电视语言来解析气象科学的节目。电视气象预报自动生成系统实现了原始气象数据到电视画面语言的自动转化,使气象节目在保留气象学准确性的同时,不失电视艺术的观赏性,既提高了节目制作效率,又使气象信息得以有效传播。 78、动态网站自动生成系统的设计与实现【作 者】段淑敏;徐自力;王勇;张连堂;杜纪霞【刊 名】河南大学学报(自然科学版) 【出版日期】2006【卷 号】第36卷【期 号】第4期【页 码】87-90【ISSN】1003-4978【影响因子】0.7805(2014)【摘 要】提出一种适用于各种服务器环境的网站解决方案,该方案综合运用数据库技术、中间件技术、优化技术、安全技术等,实现基于自动生成模式的网站系统.此系统可轻松实现网站架构及管理,极易移植为各种同类单位网站. 79、基于JAVA的WEB页面自动生成系统 【作 者】舒红平;吴自恒;蒋建民【刊 名】成都信息工程学院学报【出版日期】2003【卷 号】第18卷【期 号】第4期【页 码】343-348【ISSN】1671-1742【影响因子】0.3456(2014)【摘 要】介绍了一个自动生成Web页面的系统。系统只需输入待生成页面的相关特征信息,就自动生成能在Java环境下运行的,具有新增、删除、修改及保存功能的Web页面。系统能大大地缩短开发Web项目的周期,提高工作效率。
个人分类: 生活点滴|3255 次阅读|1 个评论
关于软件复用领域中一些词的定义
热度 3 求新 2017-1-3 21:55
关于软件复用领域中一些词的定义 程学先 在代码类软件复用领域中有子程序、宏、函数、类、方法、软构件、软部件、组件等等名词,关于它们的定义有许多不同的说法。 一、百度词条或当前各类文献中的定义 1 类 1 )类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。类具有更高的抽象性,类中的数据具有隐藏性,类还具有封装性。类的结构(也即类的组成)是用来确定一类对象的行为的,而这些行为是通过类的内部数据结构和相关的操作来确定的。这些行为是通过一种操作接口来描述的(也即平时我们所看到的类的成员函数),使用者只关心的是接口的功能(也就是我们只关心类的各个成员函数的功能),对它是如何实现的并不感兴趣。而操作接口又被称为这类对象向其他对象所提供的服务。类的定义格式一般地分为说明部分和实现部分。说明部分是用来说明该类中的成员,包含数据成员的说明和成员函数的说明。成员函数是用来对数据成员进行操作的,又称为“方法”。实现部分是用来对成员函数的定义。概括说来,说明部分将告诉使用者“干什么”,而实现部分是告诉使用者“怎么干”。 2 )类是对一群有共同特征的事物或事件的 集合 。而类对象就是类的 实例化 。一个类的所有对象对应同一个类对象。如现实世界中的动物是一种类, 植物 也是一种类,可以理解人就是 动物 类的一种对象,草是植物类的一种对象。类对象的生成过程,包括对象的声明、实例化和初始化。实例化一个对象就是通过new运算符为对象分配空间(类属于复合数据类型,在声明对象时,系统并没有为对象分配空间,用户需要应用new完成分配空间的任务)。既可以在声明对象时实例化(创建)对象,也可以先声明对象,然后再创建。 2 软部件 1 ) 概念或功能相对独立的一个或一组相关模块定义为一个软部件。可重用的软部件有的可以不加修改直接使用,有的需要修改后再用。可重用软部件应具有清晰的结构和注解,应具有正确的编码和较低的时/空开销。各种可重用软部件还可以按照某种规则存放在软部件库中,供 软件工程师 选用。 2 )计算机软件部件CSU(Computer SoftwareComponent)是计算机软件单元(Computer SoftwareUnit)。例如,操作系统是一种控制计算机不同部件运行的软件。 3 软构件 1 ) 构件 (component)是可复用的软件组成成份,可被用来构造其他软件。 构件 具有相对独立的功能和可复用价值。它可以是被 封装 的对象类、类树、一些功能模块、 软件框架 (framwork)、 软件构架 (或 体系结构 Architectural)、 文档 、分析文件、设计模式 (Pattern)等。 构件 分为构件类和构件实例,通过给出构件类的参数,生成实例,通过实例的组装和控制来构造相应的 应用软件 。 2 )软件成分包括程序代码、测试用例、设计文档、设计过程、需求分析文档、软件构件的可信性研究、甚至领域知识,通常把这种可复用的软件成分称为软件构件,简称软构件或者构件。 3 )将现有系统模块封装起来,等到有新的类似需求时可以不必重复开发,可以把事先封装好的系统模块直接组装进去,这样封装的、易于复用的软件称为构件。要达到这一目的就必须进行域分析,以确定软件的体系结构、框架和构件,从而快速实例化出一系列适应性很强的软件产品族(Product Family),在特定领域进行软件复用相对容易取得成功。这是由特定领域本身的相对内聚性和稳定性所决定的。内聚性保证了领域有足够的共性,可以通过分析、抽象这种共性;稳定性保证了领城工程的投资可以获得足够的回报。领城工程就是创建可复用构件的活动,并在领城中寻求共性和变化性,然后将其表示出来,在设计和实现构件时加以利用,来支持新应用系统的建立。 这一定义的典型例如青鸟工程,青鸟领域工程方法是在青鸟工程的研究和开发工作的基础上,吸收当前领域工程的研究和实践活动中的一些成果而形成的。它是一种面向对象的领城工程方法,描述了领域工程中各个阶段的活动和产品,并给出了相应的指南,其中强调了对领域范围的确定、结合设计模式进行领城设计、组织特定领域的可复用构件库等方面的问题。 青鸟领域工程分为三个主要的阶段。即领域分析、领域设计和领城实现。领域分析的主要产品是领域分析模型,它包括领城豁求定义、领城面向对象分析棋型(领城OOA模型)、领城术语字典三个部分。领域设计的主要产品是特定领域的软件体系结构(DSSA), DSSA表示为面向对象设计棋型(OOD模型)。领域实现的主要产品是特定于领城的可复用构件库。在各个阶段的产品之间存在可追踪性。 4 )其他定义 (1)1996年ECOOP(European Conference on object--Oriented Programming) 将软件构件定义为:一个具有规范接口和确定的上下文依赖的组装单元,它能够被独立部署或被第三方组装。 (2)美国卡内基。梅隆大学的软件工程研究所的构件定义:“构件是一个不透明的功能实体,能够被第三方组织,且符合一个构件模型”。 (3)Szyperski将构件定义为:可单独生产、获取、部署的二进制单元,它们之间可以相互作用构成一个功能系统。 (4)CMU/SEI把构件定义为:一个不透明的功能实现;能够被第三方组装;还符合一个构件模型。 (5)从编写程序代码这个狭义的角度来描述一个构件:构件是一些二进制代码,它隐藏了内部的实现细节。它们是二进制代码的形式,但都符合一种模型--构件模型,且具有可插拔性。 (6)从使用侧面给出定义:一个软件构件是可执行软件的一个可分离的单元;只能通过构件的接口来访问它的服务;可以与其他构件实现互操作;为了能与其他构件一同工作,必须能得到其接口的细节;该构件的应用需要某种环境的支持。 (7)构件是为了复用目的而针对性开发的软件实体,是一个独立发布的功能部分,可以通过它的接口访问它的服务。它体现了包装、服务、完整性等观点。利用软构件技术开发应用系统,一般是先构筑系统的总体框架,然后构造各个构件,并依次把构件安装到系统中去。大部分应用系统,在功能上有类似之处,因而利用软件的复用技术就可以把开发过程大大简化。在开发之初就应该准备软件构件类集合,如可以搜集一些已经开发出的应用系统的总体设计、规范、局部流程以及某些人机界面、通用功能模块、简化开发工具。采用构件软件不需要重新编译,也不需要 源代码 并且不局限于某一种编程语言。该过程叫做二进制复用(Binary Reuse),因为它是建立在接口而不是源代码级别的复用之上的。虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自动的。因此,可以用过程语言和 面向对象语言 创建构件。 由于 构件技术 是由基于 面向对象 技术而发展起来的,与面向对象的设计中的对象相类似,它们都是针对 软件复用 ,都是被封装的代码,但它们之间仍存在很大差异。在纯 面向对象 的设计中,对象(类)、封装和继承三者缺一不可,但对构件可以没有继承性,只要实现封装即可;从构件和对象的生成方式上,对象生成属于实例化的过程,比较单一,而生成构件的方式较多;构件是设计的概念,与具体编程语言无关,不像对象属于编程中的概念,要依赖于具体的编程语言;在对构件操作时不允许直接操作构件中的数据,数据真正被封装了。而对象的操作通过公共接口部分,这样数据是可能被访问操作的;对象对 软件复用 是通过继承实现的,构件对软件复用不仅可以通过继承还可以通过组装时的引用来实现。因此,构件不是对象,只是与对象类似。 4 、组件 1) 组件就是对象。 C++ Builder 中叫组件, Delphi 中叫部件,而在Visual BASIC中叫 控件 。组件是对数据和方法的简单封装。C++Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。 对象管理小组(ObjectManagementGroup,OMG)的“ 建模语言 规范”中将组件定义为:“系统中一种物理的、可代替的部件、它封装了实现并提供了一系列可用的 接口 。一个组件代表一个系统中实现的物理部分,包括 软件代码 ( 源代码 , 二进制 代码, 可执行代码 )或者一些类似内容,如脚本或者命令文件。” 自己开发的组件通常有三种类型:复合组件(CompositeControls),扩展组件(Extended Controls),自定义组件(Custom Controls)。 复合组件:将现有的各种组件组合起来,形成一个新的组件,将集中组件的性能集中起来。 扩展组件:在现有组件的组件的基础上派生出一个新的组件,为原有组件增加新的性能或者更改原有组件的控能。 自定义组件:直接从System.作windows.Forms.Control类派生出来。Control类提供组件所需要的所有入门性能,包括键盘和鼠标的事件处理。 组件与构件之间有细致的区别。组件是封装粒度小的构件。C++ Builder中叫组件,Delphi中叫部件,而在Visual BASIC中叫控件。组件是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。VCL和CLX组件是C++Builder系统的核心。 2) 来自 卡耐基梅隆大学 的定义:组件是一个不透明的功能实体,能够被第三方组装,且符合一个 构件 模型。 3 )计算机百科全书:组件是软件系统中具有相对独立功能、接口由契约指定、和语境有明显依赖关系、可独立部署、可组装的软件实体。 4 )软件构件著作中定义组件是一个组装单元,它具有约定式规范的 接口 ,以及明确的依赖环境。构建可以被独立的部署,由第三方组装。它是对逻辑的封装,不限于图形元素。即我们可以把if做成组件、把一个倒计时做成组件、把一段动画做成组件、把路由做成组件、把数据架构做成组件,而这些并不能称为控件。 组件具备单个可移植性,即“随加载随用”,不需要为其准备复杂的基础条件(如引入样式、引入框架等)。然而这一点现有那些所谓组件库做得并不好,技术上也不大现实 组件是声明式定义的,而非命令式。 组件与传统开发框架的最大区别就是统一了图形元素与非图形元素。在这个概念下,包括router、ajax、module loader、timer、animation、interval等都是组件,共享统一的生命周期管理和对外接口,且都是声明式地进行组合。 5 )软件组件开发主要是开发与维护系统构造过程中用到的组件。将软件组件作为一个单独的过程,目的是将组件作为构造软件的“零部件”。随着软件技术的不断发展及 软件工程 的不断完善,软件组件将会作为一种独立的软件产品出现在市场上,供应用开发人员在构造应用系统时选用。 6 )从软件模型的角度考虑, 人们希望把庞大的应用程序分割成为多个模块,每个模块完成独立的功能,模块之间协同工作。这样的模块我们称为组件。这些组件可以进行单独开发、单独编译、单独测试;把所有的组件组合在一起得到了完整的系统。许多人都认为,未来的应用程序都将利用组件实现。一个组件可以实现多个组件接口,而一个特定的组件接口也可以被多个组件来实现。 组件接口必须是能够自我描述的。这意味着组件接口应该不依赖于具体的实现 从以上分析可以看出,以上定义十分繁杂,彼此存在交叉或矛盾,定义不够清晰,对于学习与使用不利。 二、中文字义 从1989辞海缩印本可以查到关于某些词的和上面某些定义有关的解释。 1 、类:把相类的事物概括为一类。 2 、对象:观察或思考的客体,也指行动的目标。 3 、函数:简述如下:当自变量改变时函数有确定的值与之对应。 4 、构件:1)机构的组成单元,如滑块机构中的曲柄、连杆、滑块和机架。构件是研究机械运动时经过抽象和概括而形成的概念,它是一个和其相邻构件有相对运动的刚体。2)结构物的组成单元。如梁、柱、板、大型板材等。 5 、部件:机器中的一个组成部分,由若干零件装配而成。 6 、组:结合、构成。 组装:把零件组合起来构成部件,或把部件与零件组合起来构成器诫或装置。 在2002现代汉语词典中解释构件1)是组成机构的单元,可以是一个零件,也可以是许多零件构成的刚体。2)是组成建筑物某一结构的单元,例如梁、柱。 从这些名词的中文解释可见,组件是一个大的笼统的概念,可以是零件的组合、可以是构件的组合、也可以是部件的组合,涵盖构件与部件;构件也是较为笼统的概念,可以是零件、可以是多个零件、可以是零件与部件的组合,涵盖部件的概念;而部件是比较明确的概念,就是零件组合而成的机器的组成部分。 为适应软件生产工业化等应用的需要,为方便学习与讨论,建议站在程序员角度对这些名词进行统一的定义,要求尽量一词一意,在借用中文词汇时,不妨作适当限定,形成软件复用领域的专用词汇。 三、站在程序员角度进行定义。 1 、语句 语句是组成具有一定功能的程序的基本单位,其主要内容由某具体语言的指令和操作数构成,指令说明做什么,操作数说明怎样做并向操作提供所需要的信息。 2 、子程序 子程序 是能被其他程序调用,在实现某种功能后能自动返回到调用程序去的程序。它由多条语句构成,按固定的格式写成,可在主程序中用指令调用执行,执行时程序指针转移到子程序执行,其最后一条指令一定是返回指令,使能保证重新返回到调用它的 程序 中去。可约定若干变量传递参数,当参数不同时,子程序的功能及运行结果可不相同。 可以建立子程序库,存放多个子程序,应用时在不同程序中打开子程序库,应用转子语句及子程序名可调用子程序,重复执行其中语句。 3 、函数 函数是允许设置固定的参数的子程序,其格式包括函数头与括号括起的参数描述。在定义时的参数称为形式参数,调用时直接用函数名调用,并给出具体参数值,称为实际参数。当实际参数不同时,函数的功能及运行结果可不相同。 可以建立函数库,在不同程序中打开函数库,应用函数名调用并执行函数程序,重复执行其中语句。 4 、宏 宏是能被其他程序调用的程序,由多条语句按固定的格式写成,在主程序中调用时宏名相当于指令,在预编译时根据预定义的规则将宏中的语句等内容转换成对应的内容嵌入到主程序调用处,之后在执行程序时可以复用宏中的内容。在宏定义时可以按格式定义形式参数,在调用时以实际参数替代形式参变量,使每次执行的功能、结果不同。 5 、方法 类似于子程序,在“类”中定义,调用时用类名或对象名加点加方法名调用。方法可以有自己的参数,可以没有。如果方法有自己的参数(变量),在调用时系统会分配一定的空间给予这些变量,并带入实际参数值,此时的表现与格式与函数相似。 6 、类 类是可被复用的程序,由一到多个方法组合而成,在每个类中可以定义多个变量,在运行时会被分配一定的空间。类被集中到类库中保存,在应用时只要打开类库就可复用类的方法与变量。 在程序中可以复用类中的方法与变量,复用时采用的一种方法是以类名加方法名调用类的方法,类似于子程序执行过程,其中变量按某约定范围使用。另一种方法是复制类的定义在内存中,用另外的名字命名,称为对象,同时为变量另外分配空间。可以用对象名加点加方法名或对象名加点加变量名进行访问,实现复用,运行结束时释放在内存中所占用的空间。 可以在程序中对类局部进行修改后形成一个子类,所依据的类称为父类。在程序中可以访问新定义的方法与变量,也可访问未被修改的父类中的方法与变量,称为继承。(采用某种方法也能访问在子类中被修改了的原来的父类中的方法与变量。) 7 、控件 是一种包括界面设计与实现的特殊的类,是对数据和方法的封装,提供了一系列可用的 接口 。它可以有自己的属性和方法。属性是控件数据的简单访问者,方法则是控件的一些简单而可见的功能。 8 、软部件 软部件将一到多个类及若干语句组合为可执行程序文件,可被应用系统控制器直接调用,成为应用系统组成部分。在编译时部件的全部内容被编译到系统中。在调用时可以定义不同的参数,在编译时根据参数内容选用其中不同的功能并表现出不同的性能,使得同一软部件在使用不同参数被调用时有不同的程序表现。在执行时常被分配一个进程,安排一定空间。 通用软部件可简称为软部件,是实现软件生产工业化、建立软件生产线的基本单位。采用从上而下方式设计,首先对所知的一切实际应用系统进行需求分析,设计不同的但数量有限的软部件程序覆盖全部应用。每个部件程序集成多个功能与多种性能,相当于多道程序,可以通过实际参数值使被编译时实现不同功能、表现不同性能。 软部件可存放到部件库中,部件库实际上只是一个文件夹,在其中存放了多个部件程序文档。 应用软部件技术开发应用系统,可先将部件库中所需要的软部件文件拷贝到系统文件夹中,设计并建立数据模型,选择不同部件,设置必要的参数,构筑系统的控制器,就能全自动地建立应用系统。 可以对软部件文件进行修改,修改后成为完全独立的部件文档,存放到部件库中,与原部件文件不存在逻辑、继承关系,可以与原部件并行地被使用。 9 、软构件 软构件将一到多个类及若干语句组合封装为软件实体,是一个独立发布的功能部分,可以通过它的接口访问它的服务。它体现了包装、服务、完整性等观点。利用软构件技术开发应用系统,一般是先构筑系统的总体框架,然后构造各个构件,并依次把构件安装到系统中去, 通过组装时的引用实现复用。 可将领域构件称为软构件。领域构件采用自下而上方式设计,首先对某一领域进行分析,归纳与综合该域中一到多个应用程序设计为一个软构件。 10 、组件 组件是不被称为软构件和软部件的将一到多个类及若干语句组合封装而成的软件实体。 四、结束语 以上定义是我们的初步设想,希望广泛接受批评意见并修改后能得到大家认可,并形成最终定义。
个人分类: 生活点滴|2729 次阅读|5 个评论
难道只是失误吗?-给14届全国软件与应用学术会议代表们的公开信
求新 2015-11-4 21:20
给第十四届全国软件与应用学术会议代表们的公开信 各位领导、各位专家、各位老师:您们好! 我投了一份稿件,名:“管理信息系统软件生产线研究”,文号NASAC201500023,同时报名参加原型竞赛,投寄的介绍文章为“管理信息系统软件生产线软件简介”,其中介绍文章共8.25兆、107页、143幅截图,介绍了65个部件程序运行界面与操作情况。但因没通过评审而未进入决赛。组委会查找了原因是:“在评审参赛作品时,只看到了摘要,评审系统中没有看到作品的介绍文档”。又经进一步检查,发现是组委会中的操作者“没有及时将附件上传到会议系统”。照说这只是非会议预审,本来就是各请专家在家里打分,目前完全是因为组织者的失误使得作品被漏判了而照成的错误,是可以弥补的,找几个专家复议一下,补评审一下,补打个分,风波就有可能平息。但我们的这个请求被以北大梅宏教授为执委会主席、北大王千祥教授为程序委员会主席的组委会否决了,这可不能算作操作失误了。 我们文章的主题是希望研究新时期软件复用的有关课题,如图1所示。 图1 软件代码复用三阶段 我们认为,软件代码复用历史可分为三阶段:最早的面向过程设计阶段通过子程序、函数、过程、宏集成多条语句使可以跨程序实现程序部分语句的共享,不涉及界面共享,共享内容存放到子程序库、宏库的一个或少数文件中,共享手段是指针链接或复制嵌入。第二阶段面向对象中的“类”集成多种方法与属性实现方法级的共享,共享内容放到类库中,每个类源代码放到一个或多个文件中,每个类字节码放在一个文件中,涉及单控件界面(例如文本框、菜单、组合框等)的共享,共享手段是生成对象,复制嵌入,构成一个完整程序的一部分。当前,计算机应用更加深入、软件规模越来越大,软件复用粒度不再增大就不能适应计算机应用的需要了。从软件代码复用历史的第一阶段过渡到第二阶段用了差不多30年,而面向对象技术又发展了近30年,到了再进一步向第三阶段发展的时候了。 大约10多年前,学术界就提出了领域构件的概念,领域构件实际也是程序模块级软件代码复用,卡内基-梅隆大学软件工程研究所与国内的北大的青鸟工程及几乎软件工程方面的学术界专家都热议领域构件的课题,其主要观点是:由于某个特定领域需要的软件具有相似的需求,软件复用在特定领域内更容易获得成功。 领域工程 是为一组相似系统设计软件的过程,涵盖了建立可复用软构件的活动,要求将构件生产将生产过程中产生的可复用制品放入公共资源库使实现复用开发。特别强调“自底向上的重用”:从系统最基本构件块搭建的方式考虑系统的重用。认为构件应从已有系统中挖掘提取,首先对业务需求进行分析,提炼出构件,通过交流沟通,将专家知识提炼成领域知识库,再确定重用库构件是否满足知识库需要。复用源大多只能选择某一个类似的产品,所能复用的内容只能局限于此产品;复用采用的是拷贝然后修改的模式。 但我们认为单纯使用卡内基-梅隆大学软件工程研究所与青鸟工程等提出的从下至上设计领域构件的研究路线是错误的,要研究通用于一切管理信息系统的软部件,就无法采用对已有的领域内系统程序归纳总结提炼的方法来设计,必须研究从上而下设计通用可复用系统级程序模块的课题。在我们的论文与作品中点名批评了从下至上设计领域构件的研究路线,并以管理信息系统软部件库的设计为例,介绍了从需求分析到详细设计的概况,从而给出了我们主张的从上而下设计可复用软件资源库的方法。 我们认为比“类”更大粒度的可复用软件必须是通用的程序模块级可复用软件,也就是我们称为的通用软部件,涉及一个程序模块全界面的共享,每个软部件代码放到一个文件中,共享内容放到一个文件夹或多个文件夹中,其字节码可为一个到多个类代码,放在一到多个类文件中,共享手段是设定参数后链接全文件嵌入。只有设计出这样的软部件库,才可能设计出相应建模软件,实现从建模到一键建立应用系统。才可能以组装方式、不需要编写代码建立应用系统,才可能如工业化生产那样形成软件组装业,才有软件生产的工业化与现代化。 从我们的博文中可以看到,我们长期研究与呼吁开展软部件和软件生产工业化的研究,但是收效甚微。本次大会,组委会有些专家过去曾经署名发表过关于领域构件的论文,我们本期望会遇到真正懂行的专家,能进行相关的交流与探讨,希望他们能够帮助我们总结经验教训,促使新技术的诞生与我们工作的改进,但是这个希望破灭了。 那么,为什么“领域构件”会被热议,而我们的论点得不到支持呢?许多企业愿意接受领域构件的思想,我们分析:1、比较容易实现,只要在已经建成的系统上进行归纳与总结,提升到理论层面上,建立领域构件库就可以了。2、有利可图,领域构件可以提高之后设计同领域系统的效率与质量,降低成本,包括降低软件维护成本。3、可以提升企业的地位,领域构件的归纳总结使企业技术水平提高,软件维保变得简单,在一定范围内可以适应应用需求的变化,更让用户欢迎。4、形成的资源库是企业与领域专有的,有可能垄断市场。 相对而言,我们提倡的通用的软部件设计难度大,第一,它所涉及的不只是一个领域,需要了解所有领域的知识与经验。 第二,由于从事软件开发与编写代码的工作既困难,待遇又低,因而流行一种“开发软件是吃青春饭”的说法。代码设计人员编写代码的时间一长,就极力谋求转入行政或其他工作岗位。我们的40以上的编程人员数量是很少很少了,在学校40岁以上副教授和教授亲自编写应用系统的代码的就更稀有了。年轻人编写代码思维敏捷,记忆力好,编写代码无疑具有优势。但是,他们的劣势是缺少经验,缺少理论的修养,要独立设计并完成具有如此高综合性的课题具有难度。 第三,技术上有许多大家公认不好解决的问题,例如,应用JAVA开发软部件,要解决根据数组数据声明对象及宏替换的问题,需要大量自动生成代码文件的设计等。 第四,这个问题只在我们国家内受到特别的关注,由于语言与习惯,我们的软件特别强调中文的界面与报表的格式,而这写在英美则不那么受到重视,只有中国的技术人员才特别关心这一课题。 第五,得不到学术界与企业界的支持,处于孤军作战,困难可想而知。 企业不热心于这一课题,第一是缺少利好信息,因为是以文件整体调用为复用基础,代码知识产权难以得到保证,这是公益事业,投入很大,回报却低。 第二,许多软企只谋求在部分领域的垄断地位,而通用软部件会降低应用门槛,在一个短时期内不见得能提升企业的垄断地位。 第三是害怕打破当前的平衡会引起管理各方面的变化。 我们都知道,中国农民特别在乎他们的一亩三分地。但是,如果土地都是小块的,最多只能使用小型农耕机器,无法实现农业的机械化与现代化,就难以提高农耕生产力,实现小康难度也会加大。同样,如果不能从领域复用过渡到全软件复用,打破领域的界限,软件生产工业化也只能是空话。 我们的文章与参赛的原型设计基于局域网,希望能用于不同操作系统、适应不同数据库,作品介绍了参考uml设计的建模工具程序,只要绘制用例图、数据结构类图、组件图、系统结构类图、时序图(工作流程图),在绘图的过程中要从我们设计的通用软部件库中选择部件并正确配置参数,之后一秒钟不到,一键应用系统就建成了。这一设计和相关论文是程序模块级软件复用的一个探讨,说明程序模块级软件复用是可以实现的。其意义是明显的,1、软件生产工业化是软件界长期希望解决但没能解决的课题,其中的关键问题是系统模块级软件复用问题,这一问题不解决就难以实现从数据建模到自动化建立应用系统,软件生产工业化就难以实现。实现软件生产工业化将促使软件生产出现分工,从工业生产工业化实现的历程看可以扩大就业,解放生产力。2、如果解决了系统模块级软件复用问题,有可能提高信息系统开发效率数倍到10多倍,同时大大提高质量、大大减少软件开发、软件扩展与软件维保的难度与成本,促使计算机应用更加扩大与普及。3、目前数据库基础课不少学校还在教VFP,但2007年Alan Griver代表 微软 宣布停止发展VFP,且 微软 支持VFP9.0只到2015年;有些学校在教Access,但许多地方教学内容脱离数据库基本知识,对于学习数据库基本理论、基本方法存在不足;有些学校开SQL Server,但解决不了应用系统建设的问题,学生不知道学了数据库有什么用。我们的课题为解决这问题提出了思路,有助于提高数据库基础课程教学质量。 会议程序委员会找了一位“对软件生产线研究与应用均比较熟悉的专家”对作品写了一个评阅意见。 这位专家说:“该软件生产线软件所提供的UML等建模工具不规范,所提供的用例图、类图、组件图等UML图都不太符合UML规范。这些图一般用于表示系统高层分析和设计,不理解为什么需要为这些模型指定数据库连接信息。此外,这些模型与后续的应用开发的关系也不清楚。如果只是为了配合基于软部件的定制化开发,那么只需要提供数据库设计建模(如ER模型)即可。 UML 图只是“用于表示系统高层分析和设计”吗?多看几本书就知道,人们对UML的兴趣除了建模,还包括建表与双向工程,使用比较普遍的Rational Rose就设计了通过数据库建模定义数据模式进而在数据库中建表,以及自动生成和维护c++、java、Oracle等语言和系统的代码。只是,建表和生成代码的操作比较复杂,效率不高,因而在一些只搞应用的人看来,UML只是用来务虚的,他们不知道,人们是希望能用它来务实的。而要用它完成建表操作,不“指定数据库连接信息能行吗?在我主编的2001年由水利水电出版社出版的《数据库原理与技术》和2014年由清华大学出版社出版的《数据库系统原理与应用》二书中都用专门一节内容介绍利用Rose建库建表,随书发布的实验手册上同步介绍了利用Rose建库建表的方法与步骤。这些内容指出Rose建表过程和Rose前面的建模过程以及已经生成的图形有比较大的断裂,操作比较麻烦,需要创建数据库对象、选择数据库管理系统、选择表空间,之后才能完成建表操作,不如直接在数据库提供的可视化操作平台上建表来得简单、方便、易学,在实际开发工作中大家就很少用了。但是,它们的设计理念并没有错误,人们迟早是会找到解决办法的。我们目前设计的程序对建模内容作了简化,基于数据模型建表不仅比Rose简单,比在数据库中可视化建表也容易多了。至于生成软件代码一般也只能生成程序框架,不如将一些现成的程序拷贝后修改要更加简单好用,使用Rose这些功能的就更少了。而我们要从建模直接实现建立应用系统,请问这位专家,不指定数据库连接信息能实现吗?不知道怎么会问出这样低级错误的问题,而用这来否定我们的作品就更匪夷所思了。 至于所说“为了配合基于软部件的定制化开发,那么只需要提供数据库设计建模(如ER模型)即可。”就更不知说的是什么了,应用系统的定制开发与ER模型有什么直接的关系呢? 所谓我们参考UML设计的建模图形“都不太符合UML规范”就完全背离“创新”的会议宗旨了。UML是面向对象时代出现的建模语言,从自动生成代码的要求而言,类图用类名、属性栏、方法栏来表现是足够了。但目前我们要求实现的是从建模再一键生成应用系统,需要定义菜单的层次结构,需要选择部件,还需要定义有关的参数,如果还墨守老的UML的规范,不求发展,能设计得出满足需求的建模工具吗?有些人只相信外国人,绝不越外国人的“规范”一步,如果有人要图发展,就坚决扼杀之。难道本次大会就以这样的标准来鼓励创新吗? 我们批评单纯从下至上设计领域构件的研究路线,认为正是这一路线迟滞了软件生产工业化的进程。从下至上设计领域构件具有随机性,所设计的领域构件不具有普遍性。各企业单位可以设计自己独有的软件生产线,生产自己领域内的软件,但无法设计通用的软件生产线。而要设计通用建模工具,建立通用软件生产线,就必须研究从上而下设计软部件的方法与技术并组织实现。 这位专家还批评说:“该软件生产线软件的基本原理是将基于数据库的增删改查操作以及信息系统界面上各种常用的呈现方式进行抽象总结后形成可定制的软部件。这种设计理念和实现技术已经成为共识,并被广泛应用于企业开发工具和平台中,其中一些定制化的开发工具也在一些企业得到了大范围应用。但从本工作现有提供的材料中,评阅人难以发现作者在上述设想和技术的原创性贡献。” 这就是在信口开河了。“这种设计理念和实现技术已经成为共识吗?请问专家,有哪些论文或文章或著作介绍了我们提出的设计理念和实现技术呢?关于领域构件的文章是不少,但是我们并不是研究领域构件,而是在批评其研究路线。据我所知,确实有企业在进行这一方面的研究,而且取得了进展,在软件企业界已经有一定的地位,但是,这样的企业并不多,更没形成共识。至少在武汉市还没有一个企业拥有这样的认识与技术。我前二天还参加一个工程软件招标,只涉及一些查询、数据核对与整合、少数数据维护、报表等内容,开价1200万,最后以近700万价格成交。如果有优秀的部件库,相信能用1人在一月内完成其软件部分,还需要700万吗?本次会议我们受到的歧视也充分证明了不存在与我们的共识,我们的认识依然不为学术界所认同。 至于我们在本课题上面的贡献,也确实谈不上贡献,对于一个不被认同且未实现的命题何来贡献呢?但是,不能否认我们已经做过的工作。我们是2000年开始研究;2001年在公开出版的教材中提及并介绍了基于VFP设计软部件的方法;在2003年申请国家自然基金的申请中正式提出该项目,并提出软件生产工业化的设想,之后一直到2007年我们连续5年5次提出申请,均被否决;2005年我们基于JAVA设计软部件的早期研究取得进展,经省教育厅组织鉴定认为达到世界先进水平;2007年我们在博客上发表文章“ 加强对软部件技术的研究,促软件工业化生产时代到来 ”;2009年我们先后在博客、管理观察发表文章“ 软部件技术为什么成为独家技术 ”,没见到任何批评驳斥或质疑的回复;到2010年前,还没见有企业提出通用性、自适应性软件设计的内容,直到2010年后我见到先是深圳太极公司,后是神州数码公司宣称自己的软件具有通用性与自适应性,其中,深圳太极公司的确是有深入的研究并取得成功。但是,各个企业的设计是私有的,所有软件都不公开,都需要自己的专业性很强的资源库的支持,因此都没引起学术界普遍的关注与企业界的跟从。本次论文题目是《管理信息系统软件生产线研究》,实验的作品是软件生产线,这是去年我们才研究完成,并首次在博客中发布,再于今年9月交少部分内容随我编写的教材《数据库系统及应用基础》在清华大学出版社网站中提供下载。虽然关于所设计内容 目前还只是用到教学中,还只能是停在科研、口号的阶段,但是,所做工作还是有一点说服力的。 除这位专家外,还有专家提出需要从中凝炼一些特点,比如自适应性等,包装一点更理论化的内容的意见。这是非常好的建议。理论的一个定义是“通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。”,也就是说,理论指由实践活动中总结形成的具有一定专业知识的智力成果。该智力成果在一定范围内对人们的行为具有指导作用。我们全部实验都是希望能研究软件生产工业化的新的理论、新的技术与新的方法,希望对今后软件工程发展有所贡献。不过,我们目前研究的项目是公益项目:设计出来了,不公开原代码,别人难用;如果公开原代码,还有企业愿投入吗?我们曾经设想,如果能有政府机关出面组织集体公关,建立对公众有益的各类层次的部件库,再提供给企业使用,中国的计算机应用必将会有促进,生产力必将有所提高,具有重大意义。
个人分类: 生活点滴|3861 次阅读|0 个评论
导入、导出部件技术研究
热度 1 求新 2014-10-21 21:12
导入、导出部件技术研究 湖北工业大学工程技术学院 王玉民 摘 要 近年来,随着电子计算机在全球范围内的普及,智能化的概念已经深入人心,并且智能化也逐渐发展、逐步实现。随着时间的推移,智能化的脚步现在已经走进了我们的生活,并且广泛的渗透到了各行各业中。并且随着智能化的全面普及。各种各样的信息管理系统如雨后春笋般得到迅速发展与应用。并且随着信息系统的普及化,我们掌握的数据量得到了爆炸性的增展,也逐步的迈入了大数据的时代。 在这样一个高度智能化,信息化的时代中,为了满足各行各业信息化的需求,开发各种各样的信息管理系统,计算机软件行业也得到了空前的发展。但是,由于信息系统的基本原理都是一样的,都是实现对数据库的增,删,改,查等基本操作以及一些扩展。在这种情况下,又面临信息系统这样的高需求量的增加,软件研发人员工作的重复率逐渐的增大。因为每个信息系统都是要实现相同的操作,使用相同的技术,只是操作数据的字段不同。这样就导致了社会资源极大的浪费,以及软件技术水平的停泄不前。通用部件系统应运而生。本文便是基于程学先教授的课题:基于部件的信息系统 的基础上,对导入导出部分部件的实现进行了深入的探讨。 关键词: 部件系统、导入部件、导出部件、office部件。 【Abstrct】: In recent years, the popularity of computer on aglobal scale , the concept has gained intelligence , and intelligence isgradually developing , progressive realization . Over time , intelligentfootsteps now into our lives , and extensive penetration into all walks of life. And with the universal intelligence . A variety of information managementsystems have developed rapidly mushroomed and applications. And with thepopularity of information systems , the amount of data at our disposal to getthe explosive growth development , have gradually entered the era of big data . In such a highlyintelligent , information age , in order to meet the needs of all sectors ofinformation technology , the development of a variety of information managementsystems, computer software industry has been an unprecedented development.However, because the basic principles of information systems are the same, areto achieve the database to add, delete , change, and other basic operations,and some extensions . In this case , they are also facing increased demand for suchhigh- information systems , software developers working repetition rate isgradually increased. Because each information system is to achieve the sameoperation using the same technology, but different operational data field. Thisled to an enormous waste of social resources , and software technical level notbefore stopping to vent . Common components of the system came into being. Thisarticle is based on Professor Cheng Xuexian topics : Based on the basiccomponents of the information system on the part of the import and exportcomponents to achieve in-depth discussion 【 Keywords 】 : systemcomponents, import parts, exporting parts, office components. 目 录 第一章 绪论 ... 6 1.1 引言 ... 6 1.2 研究背景及发展现状 ... 7 1.3 研究的意义 ... 8 1.4 研究的内容 ... 9 1.5 研究的难点 ... 9 第二章 相关技术及介绍 ... 9 2.1 软件复用技术介绍 ... 9 2.2 com 组件技术介绍 ... 12 2.3 jacob 技术介绍 ... 13 2.4 poi 技术介绍 ... 14 2.5 itext 技术介绍 ... 15 第三章 部件系统设计 ... 16 3.1 部件整体设计 ... 16 3.2 通信类部件设计 ... 17 3.1.1 导出部件设计 ... 18 3.1.2 导入部件设计 ... 19 3.1.3 通用部件设计 ... 20 3.3 部件关键技术介绍 ... 21 第四章 导入导出部件示例 ... 23 4.1 “ 覆盖式导出到Office 文件” 部件设计 ... 23 4.2 “ 覆盖式导出到word 文件” 技术 ... 24 4.3 “ 覆盖式导出到excel 文件” 技术 ... 26 4.4 “ 覆盖式导出到PDF 文件” 技术 ... 28 4.5 导入导出部件存在的问题 ... 32 4.6 为解决问题所进行的探究 ... 32 第五章 总结 ... 32 参考文献 ... 34 致  谢 ... 35 1. 绪论 1.1 引言 近年来,随着电子计算机在全球范围内的普及,智能化的概念已经深入人心,并且智能化也逐渐发展、逐步实现。随着时间的推移,智能化的脚步现在已经走进了我们的生活,并且广泛的渗透到了各行各业中。各行各业的管理者对于手工从事信息管理已经感到无所适从,越来越多的管理者希望能够有简单、快捷、高效的计算机系统来取代现有手工的管理模式,实现管理的智能化。于是各行各业中,各种各样的信息管理系统如雨后春笋般得到迅速发展与应用。例如:企业管理信息系统,国家经济管理信息系统,事务管理信息系统,办公管理信息系统,专业管理信息系统。并且随着信息系统的普及化,我们掌握的数据量爆炸性的增展,已经逐步的迈入了大数据的时代。 在这样一个高度智能化,信息化的时代中,为了满足各行各业信息化的需求,开发各种各样的信息管理系统,计算机软件行业也得到了空前的发展。但是,使用者对系统开发周期的要求越来越短,对系统的兼容性、可扩展、可修改等的要求越来越高。系统开发目前采用的主流方法大都不能很好的满足企业迅速建立信息系统的要求。各种领域中不同语言、不同版本、不同需求的信息系统,以及各种不定时的扩展性软件需求,造成大量重复操作、重复劳动,使系统开发效率低下,导致了社会资源极大的浪费,软件技术水平停泄不前。 尽管各个信息系统千差万别,确有着共同的特征,因为实现的基本原理都是一样的,都是实现对数据库的增,删,改,查,数据处理等操作,实现的是大量数据的采集、加工、存储和传输。人们不断寻找一种能够简化操作、加快开发速度、提高开发效率的可行性方法。 2001 年起,程学先教授对基于部件的信息系统开发这一课题发起研究。并于 2003 年在湖北省教育厅正式立项( 2003A 006 ) ,2004 年湖北工业大学将之列入重大课题予以支持。 2001-2008 年基于 VFP 、 JAVA 发表了大量 MIS 部件,这些部件有极强自适应性与即插即用特性,是直接用于构建最终管理信息系统的系统级模块,直接面向最终用户。本论文便是基于程学先教授的成果,对部件技术中导入、导出的功能进行深入的研究。 1.2 研究的历史背景 在 1968 年的 NATO 软件工程会议上, Dough Mcilroy 在其论文 Mass Produce Software Components 中提出软件复用的概念,希望以代码复用的方式实现软件开发的大规模生产。他设想软件构件可根据它们的通用性、性能、应用平台进行分类,使复杂的软件系统可以像硬件设计一样,通过标准的构件进行识别、组装,这也是类构件软件复用思想的雏形,虽然在以后的 10 年中,软件复用研究并未取得实质进展,但已经初步形成了软件复用的萌芽。 到 1979 年, Lanergan 发表论文,对其在 Rayther Missice Divison 中的一项软件复用项目进行总结,使得人们的焦点又重新回到软件复用这个概念上面来。 Lanergan 项目小组通过对大量 COBOL 源程序的分析,发现设计和代码中有 60 %的冗余,因此可标准化并被复用。在此后的几年里,其他软件工程师也通过研究发现商业、金融等系统的大部分逻辑结构和设计模式都属于编辑、维护、报表等类型的模块,可通过对这些模块重新设计和标准化而得到较高的复用率。这是软件复用的再发现期。 1983 年, Hed BiggerstuffA 和 Alan Petis 在美国的 NewPort 组织了第一次有关软件复用的研讨会。随后在 1984 年和 1987 年,美国 IEEE Transaction on Software Engineering 和 IEEE Software 分别出版了有关软件复用的专辑。 1991 年,第一届软件复用国际研讨会 (IWSR) 在德国举行,之后在 1993 年又举行了第二次研讨会。在此期间,欧洲实施了几个有关软件复用的重点项目,如 ESF(Eureka Software Factory) ,其主要目标是提供软件复用的工具 0 支持。标志着软件复用的发展期已经来临。 1994 年的软件复用国际研讨会议改称软件复用国际会议,此时软件复用技术已引起了计算机科学界的广泛重视,越来越多的人投入到这一技术的研究中。面向对象技术的崛起给软件复用技术以新的希望,出现了类库、构件等新的复用方式,微软的 ActiveX 是其典型代表。软件复用研究重新成为热点,被视为解决软件危机、提高软件生产效率和质量的现实可行的途径。软件的构件化开发和软件复用已经成为互联网时代软件开发的大趋势。软件复用是解决“软件危机”的重要手段之一。 95 年杨芙清院士在发表的《软件复用》中强调软件复用是“对已有软件的重点使用,该软件可能是已经存在的软件,也可能是专门设计的可复用构件”,提出生成技术和组装技术两类软件复用技术。 99 年又有论文《软件复用及构件技术》中提出应用系统中的三类成分:通用基本构件、领域共性构件、应用专用构件,指出“符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装)是产业工程化、工业化的必由之路”。 曾具有代表性的成果是北大的青鸟工程,它把软件的生产过程划分为三类不同的生产车间,即应用构架生产车间、构件生产车间和基于构件、构架复用的应用集成 ( 组装 ) 车间,这些不同概念的车间负责不同的任务,实现软件的工业化生产。而软件开发人员被划分成三类:构件库管理者、构件生产者和构件复用者。这三种角色所需完成的任务也是不同的,构件生产者负责构件的生产、描述;构件库管理者负责构件分类以及构件库的管理工作;而构件复用者负责进行基于构件的软件开发,包括构件查询、构件理解、适应性修改、构件组装以及系统演化。像这样的案例还有很多,早些年上海构件库,现在已经有 3000 多个构件,其中还包含不少具有自主知识产权的领域构件等。 这些都不难得出,软件复用已经成为软件工程探索工业化生产的一个重要研究领域,特别是在这种软件业务需求变更日益复杂的今天,要想快速的开发软件,满足用户需求并且减少重复性的劳动,软件开发人员不得不努力地探索寻求一种基于新的方式的软件复用技术。 1.3 软部件技术发展状况 由于系统模块级软件复用产品对于提高开发效率,特别是具有自适应性的部件技术在减少系统维护工作量,降低软件系统维保费用,提高软件质量方面具有的优越性,不少公司与学者进行了大量的研究,已经有一些公司宣称自己的软件具有高度自适应性、可以自生成等优势,在软件市场上占据了优势地位。 例如: 金蝶公司的ERP系统,这个系统是南方地区比较出名的企业资源管理系统。金蝶公司有他们自己的一套体系,他们将很多常用的功能,单据、发票、信息的增删改查、不同系统,不同数据库的信息交互、人机交互界面等都进行了封装,集成到了ECLIPSE平台上,形成了金蝶公司独特的开发平台—bos开发平台。这个平台突出体现了软件复用的思想,但是有着很大的局限性,因为它仅仅实现在ERP业务中最常用的功能和模块的复用,在数据导入导出方面功能单一,局限于与EXCEL的数据互传。所有保留的表的字段和信息都只适用于企业。 神州数码公司在其一系列“智慧城市”项目中一再宣称其设计程序具有自适应性,易维护,但主要是在数据维护、查询与报表制作上,而且界面相对单一。 深圳纵横软件宣称其软件的特点: 一、用户完全自定义管理:包括报表、单据、公式,单据打印、货品图片、设置用户及权限、条码枪录入等。二、数据维护:包括强大的数据检索、数据统计、报表、图表、强大的数据存储、查询和汇总、灵活排序、数据备份、支持互联网,支持脱机开单,可绑定IP, 可实时定时访问、统计分析。三、软件维护:支持二次开发、有强大的再扩充性等。其软件收到业主广泛欢迎,但是,同样范围较狭窄,并未得到业界一致认同。 在用友深圳 T6企业管理软件 V6.1上市说明中宣称支持自适应,另外,支持从EXCEL导入单据,包括的单据有:采购订单、销售订单、发货单、采购入库单、材料出库单、销售出库单、生产订单、预测单、委外订单、盘点单、调拨单等。 但是就目前的现状来看,这些软件产品依然存在很大的局限性,由于没有统一的规范以及规约,实现软件复用所组成的功能模块各行其是,这些公司尽管在不同程度上实现了本行业的软件复用,显著提高了生产效率,降低了软件维护成本,但是应用一般都局限在该公司的业务范围内,社会人士、领域的精英参与进来的还甚少,缺少全行业内具有规范性与标准化的系统模块级的软件复用产品。 1.4 研究的意义 针对以上所述现状,研发一项可以跨专业,跨行业,跨领域的通用型的、可行性的软件系统是很有意义的。程学先教授提出基于部件的信息系统的研究成了大家关注的行之有效的方法之一。 软部件是经封装的、面向业务工作而不是简单单一功能的系统顶级模块;部件间不存在直接联系、不要求彼此间的协作、包括了全局性界面设计的内容、直接依据接口参数调用、不存在动态接口。通用软部件是可以通用于不同应用系统,能适应于不同数据库系统与不同数据表结构的软部件,在应用于现场时可以如同硬件生产一样即插即用或经简单裁剪后插入使用;它采用从上而下设计方法,是规范化、标准化的代码类软件。与构件和其他软件复用技术相比,软部件具有复用粒度更大、耦合性更低、灵活性更高的特点。长期以来,人们在软件工程过程及软件工程过程管理方面进行了深入的研究,在软件开发技术上不断取得进展;但相对而言,我们在软件生产社会化、软件生产分工方面的研究比较落后,使得有必要加大对通用部件的研究力度。 2001-2008 出现了基于VFP的部件库最小系统,在一定程度上体现了上面的设计思想,但是,VFP是单机上的数据库,目前已经不受支持,停止升级,其基础上的部件库不具有商业应用价值。2005年,湖北工业大学“软部件技术研究”项目通过鉴定,宣称达到世界先进水平,其中主要是研制成功若干基于JAVA的部件,但是,其数量只有几个,特别是其中没有设计数据通信方面的部件。 本文研究的目的主要在于: 通过对当前软件复用技术现状的分析,进而对软件复用技术中存在的一些问题有更清楚的认识; 深入的分析和研究基于JAVA的导入导出等数据通信方面通用软部件,使软部件库功能更加齐全,更有应用价值。 这一研究具有理论意义和现实意义: 理论意义:全面研究软部件的设计思想和方法,使部件库更加全面,理论研究更加深入。 现实意义:数据通信是应用系统不可缺少的功能需求,全面提供各类管理信息系统在数据通信方面软部件可进一步满足应用系统自动生成的需要,使部件库更能满足各类应用系统构建的需要。 1.5 研究的内容 本课题首先对数据通信方面软部件需求进行分析,对其分类及功能和性能要求进行一般性分析,然后对数据通信方面软部件的设计进行详细的说明,重点对从 office 文件导入导出部件实现技术进行分析。 2. 导入导出软部件总体设计 2.1 导入导出软部件 应用环境 为了深入导入导出技术的研究,我们需要对整个系统有个基本的了解。部件系统采用从上而下设计方法,是规范化、标准化的代码类软件。在JAVA中,软部件是一些类的集合。 软部件可以通用于不同应用系统,能适应于不同数据库系统与不同数据表结构,在应用于现场时可以如同硬件生产一样即插即用或经简单裁剪后插入使用。 主程序是应用系统入口,包括环境设置(数据库驱动、时间等设置)、安全性控制(调用系统登录程序)、显示封面、系统公共变量定义、调用系统菜单等内容。 利用部件库构建应用系统系统顶层设计图如图2.1所示。 图2.1 系统逻辑结构图 利用部件库构建应用系统系统模块结构图如图2.2所示。 . 图2.2 应用系统模块结构图 2.2 导入导出软部件需求分析 2.2.1 实现数据导入导出的意义 应用系统之间、程序与应用系统之间常常要进行大量数据交互,这类交互一般以文件或数据表作为媒介。一个系统也常将数据转存到其他文件或数据表中。将当前数据表中内容转存到其他文件或表中称为导出;从文件或其他数据表中将数据转存到当前表中称为导入。 当前,随着计算机应用不断扩大,管理信息系统扩展需求极大,许多应用都要求进行数据整合,整合的首先要解决的问题是系统与系统之间必须实现数据通信。 2.2.2 数据导入导出的种类 1 、根据通信媒介划分导入导出种类 1 )纯文本格式文件为媒介的导入导出 纯文本文件是所有程序、所有数据库都很容易地实现通信的媒介, C 语言、 JAVA 语言、……,几乎所有语言都有涉及文件、数据流的类或方法或过程,它们都是采取纯文本格式文件保存数据;凡是可以操作数据库的语言,都有读、写文件的语句或功能,它们无一例外也都采用纯文本格式。但数据库、数据表中的数据在存入纯文本文件时采用的格式可选择不同的算法,从而可有多种格式,其中格式之一是规范格式,所有数据以记录为单位,每条记录等长且占据一行,行间用回车换行分隔。每条记录内,各字段数据根据存储长度等长存放。这是根据“关系”的特点形成的格式,是一种自然形式,也最容易实现。但存在问题:空间占用多,不同数据库( DBMS )格式可能不同,例如同样是整型,长度可能不同,另外,不同数据库设计时,同名或同意字段长度可能不同,例如姓名,不同设计的字段宽度可能为 4 ,可能为 8 ,也可能更多。由于格式不同,在数据通信时会出现麻烦。一个修正方案是采用紧缩格式,每条记录依然占据一行,字段间用逗号分隔,数字类型不加定位符,其他类型用双引号定位。既节省空间,又可适应于不同数据库不同 DBMS 和不同的表。在 JAVA 环境中应用正则变换的方式可以十分容易地区分不同的字段,字符类字段可以不加双引号定界符,可以算第 3 种方式。这 2 、 3 二种方式都不能适应包含有文本类型或字符串中包含有双引号的数据导入导出,因为,文本类型数据本身有回车、有双引号、其长度不定,上面各种形式都不行;后一种情况时,程序会将这些原数据包含的符号视为定界符而引发错误。虽然可以用还原符加以补充说明,但依然存在局限性。第 4 种方式考虑自定义分隔符与定界符,例如用二个双惊叹号或三个句号分隔,避开数据中有效存在的特殊符号,就不会有冲突了,称这种格式为自定义格式。 2 )直接实现数据库之间通信的导入导出 可以设计直接将数据从一个数据库中读出再导入到另一个数据库中的程序,这是实现应用程序间数据交换以及数据整合的直接方式。 这类导入导出的设计关键在于不同驱动、不同 JDBC 、不同 ODBC 异构的问题。不同数据库管理系统间数据类型存在不同,包括数据类型的名字、表示方式不同与对应的问题, SQL Server 拥有的数据类型和 Oracle 和其他数据库系统都不相同,数据直接通信必须能解决其差异问题,特别是,通用导入导出程序更要能自动识别不同数据库系统,实现数据类型和元数据其他差异的自动变换,才能正确实现直接通信。 3 )借助 Office 文件的导入导出 目前人们大都离不开 Office 文件,在我国,许多文件都采用 Word 文件形式书写与存放,由于 Excel 文件有许多计算与打印报表的功能,人们习惯地利用它处理表格与报表数据。由于 PDF 文件采用非纯文本格式存放数据,具有保密防修改功能,因而成为公文常用格式,因此,从 Office 文件导入及导出到 Office 文件中需求旺盛。 4 )从网页导入导出 在互联网飞快发展的今天,人们习惯地利用网络互传信息,因此,直接将数据传送到网上,以及从网上读取数据到当前表中也成为急需的形式。其中,又可分为借网页导入导出的形式及借邮件导入导出的形式。由于后一种方式要求有邮件服务器,我们暂未研究。 2 、根据导入导出数据间关系划分的导入导出类型 1 )覆盖式导入导出 导入导出如果是到数据表,目的表有的不存在,有的存在但要求用新内容全部替代原有内容,为此需要设计覆盖式导入导出方式。当目的表不存在时,应当先新建数据表,如果源为文件,需要另外给出数据表结构属性;如果源为数据表,导入导出数据结构必须与目的表结构相容,可以根据源表结构建立目的表。如果目的表存在,无论源数据性质,二者结构必须相容。导出可能到文本文件或网页,需要先删除原有数据再导入或导出。 2 )添加式导入导出 导入导出如果是到数据表,有时要求保留目的表数据,新数据用 insert 语句添加到原数据尾。如果是导出到文件,要求保留原文件内容,再添加新数据。一般方法是读出原数据到数组或列表中,之后,连同新数据一起写入文件。 3 )修改式导入导出 要求在导入导出数据时根据关键字值分析新导入数据的关键字值是否相同,如果相同则用新数据取代原数据,否则作为新数据添加。如果目的地是数据表,应当在分析关键字值后,用 update 语句修改表中数据或用 insert 语句录入新记录。如果是导出到文件,应当先读入原数据,在内存中完成修改或添加,最后全部以覆盖方式导出到文件中。 在实际设计导入导出部件时,应当根据 1 与 2 的组合设计部件,满足各方面需求。 2.2. 3 从Word文件导入的实验 如果涉及非纯文本文件的导入导出,这些文件都按一定格式组织与存放数据,借用 JAVA 语言编程实现导入导出,一般是先考虑以读文件或数据流或查询数据表方式将数据读入到数组或列表中,经处理后再以读文件或数据流或写数据表方式将数据写入文件或写入数据表中。其中读、写文件只限于纯文本格式,即读、写 ASCII 码形式。这种方法在操作费纯文本格式文件时存在困难。 例如,利用 Office2003 建立 word 文件,内容如下: 利用我们自编实验程序“读出文件的二进制码 .jar ”读出文件存储内容,操作情况如图 2.3 所示。 图 2.3 读 97-2003 版 word 文件的操作 可发现其数据主要内容类似于纯文本文件,以 ASCII 码形式存放在 000B00H 开始的位置,以 ODH 分段,如图 2.4 所示。 图 2.4 以所存 ASCII 码与文字对照表表现 97-2003 版 word 文件结构 但,有一份 1988 年 WORD 文档内容如 解读其数据存放格式如图 2.5 所示。 图 2.5 1988 年一份 word 文件存储结构 可见也有类似于纯文本的一段,其存放地址从 100H 开始,以 0D+0A 分段。 以上数据存放时如果某一段中存在中文,则从该段某位置起,每个字符用二个字节数据表示并存放。因此在读取数据时要检查其中是否含有中文字符,如果有,要检查开始二字节存放一字符的位置。 至于 Office2007 版 Word 文件( .docx 文件)存放数据时未发现有类似于纯文本存放的情况。 由此可见,对于主要数据以纯文本格式存放的,只要测出其存放位置,就能实现数据导入,特别要主要版本变换可能要求修改程序。但是,由于文本中还包含大量涉及格式的数据,导出到这些文件中的程序设计十分困难。 目前一般借用这些文件原生产厂家提供的公共包( jar 文件)实现数据导入导出程序设计。 2.2.4 导入导出部件概要设计 目前从 Word 、 Excel 、 PDF 文件导入导出一般都需要借用微软提供的公共包( jar 文件)实现数据导入导出程序设计。为减少部件总数量,根据是否需要外部包,可以将涉及数据库、设计纯文本文件包括 XML 文件的导入导出与从 Office 文件导入导出分成二组分别建立部件。 根据以上分析,本系统根据所需需求及各种导入导出方式组合,分成6大组。大组结构图如图3-6所示。 图2-8 导入导出部件6大组结构图 考虑到使用方便,每一大组按覆盖式、添加式与修改式分成3小组,共需要设计18个部件,每个部件可包括多个导入或导出目标,分别用按钮控制某一种导入导出的操作,建立系统时,通过选择按钮参数,使每一调用实现一个具体的导入导出操作。主要部件设计如下。 (1)覆盖式导出到纯文本文件、XML文件与其他数据表部件dataTransfer1.java 原目的文件内容删除,当前表数据导出到指定文件中,如果原文件不存在,生成新文件。生成的纯文本文件包括按标准格式存放、紧缩格式、自定义格式等不同格式组织。 (2)添加式导出到纯文本文件、其他数据表部件dataTransfer2.java 原目的文件内容保留,当前表数据添加到目的文件尾部。纯文本文件包括标准格式、紧缩格式、自定义格式等不同格式。 (3)修改式导出到纯文本文件、XML文件与其他数据表部件dataTransfer3.java 原目的文件内容保留,根据关键字用当前表数据修改目的文件数据。纯文本文件包括标准格式、紧缩格式、自定义格式等不同格式。 (4)覆盖式导出到Office文件部件dataTransfer4.java 原目的文件内容删除,当前表数据导出到指定文件中,如果原文件不存在,生成新文件。Office文件包括excel文件、word文件与PDF文件。要求下载开源软件包:jacob.jar、poi-3.8-20120326.jar等。 (5)添加式导出到Office文件部件dataTransfer5.java 原目的文件内容保留,当前表数据添加到目的文件尾部。Office文件包括excel文件与word文件。要求下载公共软件包。 (6)修改式导出到Office文件部件dataTransfer6.java 原目的文件内容保留,根据关键字用当前表数据修改目的文件数据。Office文件包括excel文件与word文件。要求下载公共软件包。 (7)覆盖式从纯文本文件、XML文件与其他数据表导入部件dataTransfer7.java 当前数据表数据删除,从文件中导入数据到当前表中,纯文本文件包括包括标准格式、紧缩2格式、自定义格式等不同格式。 (8)添加式从纯文本文件、XML文件与其他数据表导入部件dataTransfer8.java 当前数据表数据保留,从文件中导入数据到当前表尾部。文本文件包括包括标准格式、紧缩格式、自定义格式等不同格式。 (9)修改式从纯文本文件、XML文件与其他数据表导入部件dataTransfer9.java 当前数据表数据保留,从文件中导入数据到当前表中,根据关键字用当前表数据修改目的文件数据。文本文件包括包括标准格式、紧缩格式、自定义格式等不同格式。 (10)覆盖式从Office文件导入部件dataTransfer10.java 当前数据表数据删除,从文件中导入数据到当前表中,Office文件包括excel文件与word文件。要求下载公共软件包。 (11)添加式从Office文件导入部件dataTransfer11.java 当前数据表数据保留,从文件中导入数据到当前表尾部。Office文件包括excel文件与word文件。要求下载公共软件包。 (12)修改式从Office文件导入部件dataTransfer12.java 当前数据表数据保留,从文件中导入数据到当前表中,根据关键字用当前表数据修改目的文件数据。Office文件包括excel文件与word文件。要求下载公共软件包。 (13)从网页下载并导入部件dataTransfer13.java 根据网页地址读取网页内容并导入到当前数据表中。 (14)导出生成邮件部件dataTransfer14.java 将当前表中数据组织生成邮件发送。 (15)通用导入部件dataTransfer15.java 该部件可以独立使用,也可以被数据维护部件、数据查询部件调用。将提问源文件类型、源文件名、导入方式,之后组织导入。 (16)通用导出部件dataTransfer16.java 可以该部件独立使用,也可以被数据维护部件、数据查询部件调用。将提问目的文件类型、目的文件名、导出方式,之后组织导入。 3. 通信类部件详细设计 3.1 以纯文本文件为媒介的导入导出部件设计 3.1.1 与纯文本文件交互部件程序流程 根据前述要求,本系统目前设计了与纯文本文件交互三种方式的部件:规范格式、紧缩格式、自定义格式。 以覆盖式导出到纯文本文档为例说明: 1. 标准格式导出 a )检查目的文件是否存在,如果不存在,创建文件。 b) 按“条件表达式”筛选记录,按“输出要求”生成导出数据数组“String 表格数据”,注意text等大数据类型不采用本格式导出。 c )将所有字段数据统一转换为字符串类型,放到“表格数据 ”中。整型等非二进制数据按该类型数据最大宽度决定宽度。 d )创建文件输出流。 e )将数据按字段、按记录顺序写入文件。每条记录后加回车、换行。 f )关闭文件。 以标准格式覆盖式导出到纯文本文件的程序代码主要如下: if (( 导出文件名 == null )||( 导出文件名 .length()1)) 导出文件名 = 导出文件名 + a1.txt ; if ( 导出文件名 .lastIndexOf( txt )0) 导出文件名 = 导出文件名 + .txt ; File file = new File( 导出文件名 ); // 创建文件对象 if (!file.exists()) { // 如果该文件不存在 file.createNewFile(); // 新建文件 } FileOutputStream fs = new FileOutputStream(file); // 创建文件输出流 for ( int j1=0;j1 记录条数 ;j1++){ for ( int j2=0;j2 列数 ;j2++){ if ( 表格数据 == null ) 表格数据 = ; fs.write(( 表格数据 + s3 ).substring(0, 列数据宽度 ).getBytes()); // 将字符串按预定宽度写入到文件中 } fs.write(( + x1 ).getBytes()); } fs.close(); // 释放资源 2. 紧缩格式导出 a )检查目的文件是否存在,如果不存在,创建文件。 b) 按“条件表达式”筛选记录,按“输出要求”生成导出数据数组“String 表格数据”,注意text等大数据类型不采用本格式导出。 c )将所有字段数据统一转换为字符串类型,放到“表格数据 ”中。整型等非二进制数据按该类型数据最大宽度决定宽度。 d) 将数组“表格数据 ”中数字类型不加定位符,其他类型添加双引号分隔符。 e )创建文件输出流。 f )将数据按字段、按记录顺序写入文件。每条记录后加回车、换行。 g )关闭文件。 3. 自定义格式导出 a) 提问输入行开始符、字段间分隔符、行结尾符。 b) 检查目的文件是否存在,如果不存在,创建文件。 c) 按“条件表达式”筛选记录,按“输出要求”生成导出数据数组“String 表格数据”,注意text等大数据类型不采用本格式导出。 d) 将所有字段数据统一转换为字符串类型,放到“表格数据 ”中。整型等非二进制数据按该类型数据最大宽度决定宽度。 e) 将数组“表格数据 ”中每一元素加上分隔符。 f) 创建文件输出流。 g) 将数据按字段、按记录顺序写入文件。每条记录后加回车、换行。 h) 关闭文件。 3.1.2 与纯文本文件交互的实现情况 根据前述设计要求,已经成功地设计了 覆盖式导出到纯文本文件、XML文件与其他数据表部件dataTransfer1.java;添加式导出到纯文本文件、其他数据表部件dataTransfer2.java;修改式导出到纯文本文件、XML文件与其他数据表部件dataTransfer3.java;覆盖式从纯文本文件、XML文件与其他数据表导入部件dataTransfer7.java;添加式从纯文本文件、XML文件与其他数据表导入部件dataTransfer8.java;修改式从纯文本文件、XML文件与其他数据表导入部件dataTransfer9.java。 3.2 与 office 文件的交互 3.2.1 与 office 文件的交互要解决的问题 由于office是Microsoft 设计的软件,它是基于windows平台的,而java是基于JVM虚拟机的。这就造成了跨平台调用的困难。Java操作office必须通过调用COM组件来实现。 我首先试图用对一般文件读写的方法来处理Word文件的导入导出问题,经过试验,对文件进行读写的时候选用FileInputStream和FileOutputStream来实现比较可能。继而读取unicode编码,利用字符串类型的整形数组构造函数完完成从unicode码到中文字显示变换,从而实现java程序对word文件的读写。在使用流进行读写的时候,首先要做的就是数据与流的转换。对流添加一些分隔符或者过滤一些分隔符。然后再读入或者输出到文件中。 读取试验程序如下: 1. 创建文件对象 File file = newFile(E:\\text\\s1.doc); int lenght; int i=0,n=0,m1=0,m2=0; String str; 2. 创建FileInputStream类对象 FileInputStream fis = new FileInputStream(file); 3. 创建byte对象,unicode码共65535个码 byte by ; int ; 4. 循环读取文件中数据,并将unicode码变换为中文字显示 while ((lenght = fis.read(by)) != -1) { } for(i=2560;i3000;i++) { //by.length if (by ==0) // 如果是非中文,高字节为0 System.out.println(i=+i+ +(char)by ); else{ // 读取中文,2字节一个中文字 m1=by ; // 变换为整型 m2=by ; if (m10) m1=m1+256; // 从补吗求原码 if (m20) m2=m2+256; // 从补吗求原码 j =m1*256+m2; str = new String(j,0,1); System.out.println(+lenght+ +str); } i++;//2 字节一个字符 } 但是由于每次读写都要进行大量数据的转换以及分隔符的拼接。非常容易造成读写的文件格式出现变化,造成数据的不一致导致错误。存在着很严重的问题。特别是,Word文件并不同于纯文本文件,如此读入的数据根本不是我们看到的内容,这才发现,Word文件有自己的格式。于是借用了数据库课程的实验程序“读出文件的二进制码.jar”,对Word文件中数据存放位置进行了寻求,发现,我们看到的数据(不考虑外观)或者说我们复制粘贴到纯文本文件中的数据,在Word文件中是存放在一起的,而且存放情况和粘贴到纯文本文件中的数据存放情况一致,Word文件中导致显示特征的格式数据采取其他方式存放,只是存放位置不是从100H单元开始的,和纯文本不相同。但是,只要确定存放纯文本的开始位置,导入将能很容易地实现。不过,分析了Word文件2000与Word文件2007,发现这个开始位置并不确定,与版本有关。 应用上述从 Office97-2003 版导入数据的程序,从 0B00H 处取数据,读取图 2.3 所示文件截图如图 3.1 所示。 图 3.1 从 2003word 文件读入程序运行效果 但是,同样程序如果用于之前版本的 Word 文件,则读取失败,读取图 2.5 所示文件截图如图 3.2 所示。 图 3.2 同一程序从早期版本 word 文件读入数据失败 根据上述实验可以发现,以纯文本方式读写Office文件,破解将十分费力,而且一旦版本变化将要修改程序。 3.2.2 与 office 文件的交互的实现情况 为了解决上述问题,最终采用调用第三方技术jacob、poi、和itext实现与office软件交互部件设计。在使用部件时需要分别引入jacob.jar,poi.jar,itext.jar三个包。 这样实现后存在着弊端:因为部件是业务级的独立模块,通用软部件是一个应用程序的封装体,具有独立的功能与性能。它是以复用为目的而设计、以提供某一业务服务为目标、包含为完成一项业务工作所需要的多项功能的独立的应用程序,各功能互为补充使能从多方面满足不同用户对界面的需要。以上所谓的业务工作指站在数据库的角度进行实际事务处理的一项针对数据表操作的工作,例如数据录入、修改、查询、处理等工作,在具体应用于实际系统构建时可以由用户定义为某实际业务工作的名字,例如贷款、批准机构设置方案、认证、制定计划等等。由于它包含了为完成一件工作所需要的全部功能,具有特定性能集,接口简单、具有即插即用能力、对环境有较高适应性,具有很好的独立性。有些软部件具有自动生成界面的能力,是完整的,成熟的,模块级的程序软件。引入了第三方包以后不符合部件低耦合、高复用的特点,必须借助Microsoft发布的dll才能最终解决这一问题。详细设计见第四章。 3.3 与数据库的交互 3.3.1 与数据库的交互的必要性 而随着现今社会智能化的普及,信息系统的数据量极速扩展,数据整合问题日益受到重视,要求将数据直接从一种数据库传送到另一种数据库或联机使用。目前,许多人还习惯的将数据导出到excel,再制作报表或做反方向的工作。但由于excel本身的限制,数据量过大时excel无法支持。需要分成好几个excel共同保存数据。显然,excel已经无法满足各个系统之间,数据库之间大数据量的交互。所以,本系统添加数据库到数据库之间的交互功能成为满足用户要求的关键内容。 3.3.2 与数据库的交互要解决的问题 关键在不同驱动、不同JDBC、不同ODBC的问题,其次存在不同数据库,关于数据类型的异构性,包括数据类型的名字、表示方式不同与对应的问题。 驱动问题。 1. 由于Java连接数据库的时候分为以下几步进行: 1 )加载驱动 Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); 2 )建立连接 Connectionconn=DriverManager.getConnection(jdbc:sqlserver://localhost:143 databaseName=shijiuban1,sa, 111); 3 )创建Statement对象 Statement stmt =conn.createStatement(); Statementstmt2=conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 4 )执行操作(增删改查) ResultSet rs =stmt.executeQuery(select * from stt); 5 )处理结果 while(rs.next()){ System.out.println(rs.getString(1)); } 6 )关闭连接 conn.close(); 各个不同的数据库的驱动是不同的。所以当数据表到导出到一个未知的数据库的时候,由于数据库种类繁多,jdbc、odbc的不确定。就造成了连接数据库的困难。需要根据不同数据库申明不同驱动,从而达到各种数据库通用的目的。 2. 数据类型异构性问题 由于各个数据库的基本数据类型略有区别。所有当不同数据库进行交互数据的时候。数据类型的对应关系会出现问题。例如:Oracle与Microsoft SQL Server的对照。 Oracle 数据类型包括:CHAR、VARCHAR2和 LONG、RAW 和LONG RAW、NUMBER、ROWID、CURRVAL,NEXTVAL。 CHAR 转化到SQLserver:建议使用 char。因为 char 类型的列使用固定的存储长度,所以,访问时比 varchar 列要快一些。 VARCHAR2 和 LONG转化到SQLserver:varchar 或 text。(如果Oracle 列中数据值的长度为 8000 字节或更少,则使用varchar;否则,必须使用 text。) RAW 和 LONG RAW转化到SQLserver: varbinary 或 image。(如果 Oracle 列中数据值的长度为 8000 字节或更少,则使用 varbinary;否则,必须使用 image。) ROWID 转化到SQLserver:使用identity 列类型。 CURRVAL, NEXTVAL 转化到SQLserver:使用 identity 列类型以及 IDENTITY、IDENT_SEED() 和 IDENT_INCR() 函数。 所以不同数据库进行转换时,数据类型对应关系是个必须研究解决的问题。 3.3.3 与数据库的交互的实现情况 1. 为解决动态指定数据库,动态申请数据库驱动的问题,可以对传入的数据库类型进行判断,然后根据判断的结果,申请不同的数据库驱动。实现代码如下: try { if(DBMS 名称1.compareTo(sqlserver)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); elseif (DBMS 名称1.compareTo(oracle)==0) Class.forName(oracle.jdbc.driver.OracleDriver); elseif (DBMS 名称1.compareTo(Mysql)==0) Class.forName(com.mysql.jdbc.Driver); else if (DBMS 名称1.compareTo(access)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); elseif (DBMS 名称1.compareTo(JavaDB)==0) Class.forName(org.apache.derby.jdbc.EmbeddedDriver); elseif (DBMS 名称1.compareTo(DB2)==0) Class.forName(com.ibm.db2.jdbc.app.DB2Driver); elseif (DBMS 名称1.compareTo(Sybase)==0) Class.forName(com.sybase.jdbc.SybDriver); elseif (DBMS 名称1.compareTo(vfp)==0) Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); } catch(Exceptione) { JOptionPane.showMessageDialog(null, 接驱动程序错!); } 2. 然后为解决不同的JDBC和ODBC来连接数据库的问题。代码如下: try{ if(DBMS 名称1.compareTo(sqlserver)== 0) con= DriverManager.getConnection(jdbc:odbc: + ODBC 数据源1); elseif (DBMS 名称1.compareTo(oracle) == 0) { url =jdbc:oracle:thin:@localhost:1521:orcl3; String user = system; // 连接用户名 Stringpassword = aaa; // 连接密码 con=DriverManager.getConnection(url,user,password); } else if (DBMS 名称1.compareTo(Mysql)== 0) { url= jdbc:mysql://localhost:3306/db_database22; Stringuser = root; // 定义连接数据库的用户名 StringpassWord = 111; // 定义连接数据库的密码 con=DriverManager.getConnection(url,user,passWord); } else if (DBMS 名称1.compareTo(access)== 0) con =DriverManager.getConnection(jdbc:odbc: + ODBC 数据源1); elseif (DBMS 名称1.compareTo(JavaDB) == 0) { Stringurl = jdbc:derby:db_database22; con=DriverManager.getConnection(url+;create=true); } else if (DBMS 名称1.compareTo(DB2)== 0) con =DriverManager.getConnection(jdbc:odbc: + ODBC 数据源1); else if (DBMS 名称1.compareTo(Sybase)==0) con=DriverManager.getConnection(jdbc:odbc:+ODBC 数据源1); else if (DBMS 名称1.compareTo(vfp)==0) con=DriverManager.getConnection(jdbc:odbc:+ODBC 数据源1); } catch (SQLException e1) { JOptionPane.showMessageDialog( null, 连接数据库未成功!); returncon; } 3. 建立不同dbms类型对照表: String 类型对照表={ {java ,string,string,string ,int ,int ,string,string ,string,string,boolean,byte ,short ,long ,float ,int ,double,float ,float ,byte 字段号表parameter 按钮号表parameter 导出文件名parameter 文件名要求包括全部路径名称。 要求字段号表:所操作数据可以是表的全部字段,也可以只涉及部分字段。如果选择全部字段,初始值设为;否则写入所有将涉及的字段在表中的顺序号,号与号之间以英文逗号分隔。 3 、本部件预设的按钮控件共4个,序号及按钮名: 1 覆盖式导出到word文件 2 覆盖式导出到excel文件 3 覆盖式导出到PDF文件 4 退出 通过“按钮号表”可以选择按钮以满足功能需求。 如果导出到PDF文件,不支持大数据类型,且每条记录总长度以50字符以下较合适。 如果导出到WORD文件,文件名必须带路径全称,否则会存放到我的文档中。 4.2 “ 覆盖式导出到 word 文件 ” 技术 从数据表将数据导出到office文件可以借助第三方jacob、poi以及itext等技术。这三种技术各有优劣。 poi在某些细节有些小Bug并且不支持写入图片,对中文的支持不太完善;因为poi是直接分析excel文件格式进行操作的,最大的缺点是对excel的各种特性和格式不能全面支持,也总是不支持最新版的excel(总有一个研发滞后期)。 Jacob的方案使用的是com技术,对excel进行COM自动化调用,缺点是服务器端必须安装excel,而且web的并发访问经常会令自动化隐藏运行的excel进程死掉。unix等操作系统无法安装ms office。java2word也是只能在windows下运行,无法在linux、unix中使用。 而Itext在图片操作方面比其他两者更具优势。 这三种技术基本原理都是相通的。都是按照以下几步进行实现,这里用到jacob技术。本功能需要引入第三方jacob.jar。导出过程分以下几步进行: 1. 创建一个word对象Word.Application ActiveXComponent word = newActiveXComponent(Word.Application); Dispatchdocuments = word.getProperty(Documents).toDispatch(); 2. 创建新文挡,选定的范围或插入点,定义指针,并把插入点移动到文件首位置 Dispatchdoc = Dispatch.call(documents,Add).toDispatch(); Dispatchselection = Dispatch.get(word,Selection).toDispatch(); Dispatch.call(selection,HomeKey); 3. 获取表格属性,获取表格行列属性 Dispatch tables = Dispatch.get(doc,Tables).toDispatch(); Dispatch range =Dispatch.get(selection, Range).toDispatch(); 4. 向表格中添加内容 Dispatch newTable = Dispatch.call(tables,Add, range, new Variant( 记录条数), new Variant(列数)). toDispatch(); for(inti=0;i 表格数据.length;i++){ for(intj=0;j 列数;j++){ if ( 表格数据 ==null) 表格数据 =; Dispatchtable = Dispatch.call(tables, Item, new Variant(1)) .toDispatch(); // 要填充的表格 Dispatchcell = Dispatch.call(table, Cell, newVariant(i+1),new Variant(j+1)).toDispatch(); Dispatch.call(cell,Select); s1=+ 表格数据 ; 5. 将数据输出到word文件中,并保存退出。 Dispatch.put(selection,Text, s1); } Dispatch.call((Dispatch)Dispatch.call(word, WordBasic).getDispatch(),FileSaveAs, 导出文件名); 4.3 “ 覆盖式导出到 excel 文件 ” 技术 本功能使用了poi技术。需要调用第三方开源包poi.jar。实现功能按以下几步进行: 1. 定义工作薄对象 HSSFWorkbook book = new HSSFWorkbook(); 2. 创建工作表 HSSFSheetsheet = book.createSheet( 学生表); 3. 获取关于 ResultSet对象中列的类型和属性信息的对象。 ResultSetMetaDatametaData = rs.getMetaData(); int rowNum = 0; 4. 写入列名 HSSFRow header = sheet.createRow(rowNum); 5. 获取数据库表中共有几列 int colCount =metaData.getColumnCount(); 6. 循环遍历数据表列名,根据数据库内容创建单元格,写入数据到指定单元格 for(int i = 0; i colCount; i++) { HSSFCell cell = header.createCell(i); cell.setCellValue( new HSSFRichTextString( metaData.getColumnLabel(i+ 1))); } 7. 循环遍历查询结果集,创建行,新建单元格并写入数据到指定单元格 while (rs.next()) { rowNum++; HSSFRow row =sheet.createRow(rowNum); for(int i = 0; i colCount; i++) { HSSFCellcell = row.createCell(i); cell.setCellValue(new HSSFRichTextString(rs.getString(i + 1))); } } 8. 创建FileOutputStream对象,写出到文件,并关闭文件。 FileOutputStream fileO = new FileOutputStream(file); book.write(fileO); fileO.close(); 4.4 “ 覆盖式导出到 PDF 文件 ” 技术 本功能使用了itext技术。需要调用第三方开源包itext.jar 。由于其中表格存放采取图形方式,难以区分字段内容,只能自定义格式进行通信。本系统,在导出数据时特别加设了表格线以区分不同字段的数据。涉及pdf的数据表间数据导入导出只能借助本系统PDF导入导出程序进行。实现功能按以下几步进行: 1. 定义document对象,设置默认字体格式。 Document document = new Document(); PdfWriter.getInstance(document, newFileOutputStream( 导出文件名)); document.open(); BaseFontbfComic = BaseFont.createFont(c:\\windows\\fonts\\SIMFANG.TTF,BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(bfComic, 9); 2. 向文档中添加顶部表格线。 s1=┌; for (int j=0;j 列数;j++){ for(int k=0;k 列数据宽度 ;k++) s1=s1+─; if(j!= 列数-1)s1=s1+┬; } s1=s1+┐; document.add(new Paragraph(s1, font)); // 向文档中添加顶部表格线 3. 向文档中添加内容及中间竖线“丨”。 Strings4=,s5=; float lengtg1=0; for (int i=0;i 记录条数;i++){ s1=│; for (int j=0;j 表格数据 .length;j++){ s3=; if ( 表格数据 ==null) 表格数据 = ; s4= 表格数据 ; lengtg1=0; for (int j1=0;j1 表格数据 .length();j1++){ s5=s4.substring(j1,j1+1); s1=s1+s5; if (s5.compareTo(z)0){ if (s5.compareTo(0)0) lengtg1=lengtg1+0.51f; else lengtg1=lengtg1+0.51f; } else lengtg1=lengtg1+1; // 中文字个数 } while (lengtg1 列数据宽度 ) { s1=s1+ ; lengtg1=lengtg1+0.51f; } s1=s1+│; lengtg1=0; } document.add(new Paragraph(s1, font)); 4. 向文档中添加下一行顶部表格线。 if (i 记录条数-1){ s1=├; for (int j=0;j 列数;j++){ for (int k=0;k 列数据宽度 ;k++) s1=s1+─; if (j!= 列数-1) s1=s1+┼; } s1=s1+┤; document.add(new Paragraph(s1, font)); } 5. 如果表格到达最后一行,向文档中添加底部表格线。 s1=└; for(int j=0;j 列数;j++){ for (int k=0;k 列数据宽度 ;k++) s1=s1+─; if (j!= 列数-1) s1=s1+┴; } s1=s1+┘; document.add(new Paragraph(s1, font)); 6. 将拼接好的内容输出到创建的PDF文件中,保存关闭。 System.err.println(de.getMessage()); System.err.println(ioe.getMessage()); document.close(); 5 、从网页导入数据程序实现 从任意网页导入数据分二步进行:1、根据地址读出网页源代码。2、分析网页内容,解析出有效数据并导入到当前数据表中。 第一部分代码主要为: url = new URL( 地址 ); // 创建 URL 对象 conn =url.openConnection(); // 获得连接对象 conn.connect(); // 打开到 url 引用资源的通信链接 InputStream is = conn.getInputStream(); // 获取流对象 InputStreamReader in = new InputStreamReader(is, UTF-8 ); // 转换字符流 BufferedReader br = new BufferedReader(in); // 创建缓冲流对象 String 一行数据 = br.readLine()) ; // 读取信息,解析网页 第二部分需要应用正则变换实现,正则表达式主 要有 + ,此外需要删 去/script结尾的语句成分。程序主要部分如下: for ( int i = 0; ( 一行数据 = br.readLine()) != null ; i++){ // 读文件 if ((k1==0)( 一行数据 .lastIndexOf( script )=0) ( 一行数据 .lastIndexOf( \\/script )0) ) { // 首先清除无用的 script----/script 语句 k2=0; k1=1; s5 = 一行数据 ; k2++;} else if (k1==1) { // 在出现 script 之后 if ( 一行数据 .lastIndexOf( /script )=0){ // 到尾 if ( 一行数据 .lastIndexOf( name )=0){ k3=1; } k1=0; k2=0; k3=0; } else { s5 = 一行数据 ; k2++; } if ( 一行数据 .lastIndexOf( name )=0){ s4 = 一行数据 .replaceAll(x1+ name +x1+ : +x1, ).replaceAll(x1+ , , ); c++; k3=1; }} else {s4 = 一行数据 ; c++; } 网页内容 0 = 网页内容 0 + 一行数据 ; } s2 = ; for ( int i = 0; ic; i++){ s1 =s4 ; s1 = s1 .replaceAll( + , ); // 清除全部标记 s1 = s1 .replaceAll( \\| , ); // 清除 | s1 = s1 .replaceAll( \\s{2} , ); // 清除 2 个以上长度的空格 if ( s1 .trim().length()0){ // 清除空行 s2 = s2 + s1 +x2+x3; } } 6 、总结 我记得,最早接触程老师部件系统的时候,是大三下学期的时候。那个时候的自己,正处于大学的迷茫期,感觉自己大学学了这么久,却还什么都不懂,大一大二整天宅在寝室玩游戏。虽然专业课的考试成绩都还过得去,但是感觉特别的空虚。 这个时候正好遇到程老师在召集班上java课程成绩好点的同学参加部件的研发工作。当时特别想学点东西,仅仅是单纯的让自己学点知识,不再枯燥无味的整天沉迷在游戏中,让自己不再感觉那么的空虚,所以报名参加了这个工作。刚开始的时候,程老师让我先阅读了解老师自己写的一些代码,但是当我阅读的时候,我发现自己几乎看不懂那些代码,那个时候我甚至还不知道Jpanel、Jframe、Jbutton是做什么用的,根本不了解一个界面是如何进行设置、定义、绘画出来的。也不知道鼠标点击事件以及键盘事件是如何被监听触发的。那个时候突然感觉自己极度的匮乏,对知识的匮乏,于是那段时间由整天玩游戏,变成了整天宅在寝室看马士兵的java基础视频,看传智播客的教学视频。由于大学期间寝室整体睡觉都比较晚,都是12点左右才会睡觉。往常那个时间还在玩游戏,改成经常12点1点还在看视频。那样一直持续的看教学视频,有时候听的脑袋都有点模糊了。但是感觉每天躺倒床上睡觉的时候特别的充实。 就这样过了一段时间,程老师有一天问我,进展如何,我回答说我这段时间在看基础的教学视频。程老师告诉我,不能单纯的只看视频来学习,最好的学习方式是先动手实践,在实践中遇到不懂的再去学习,这样学习效率才是最高的。于是,我停止了整天无脑的看视频。开始继续程老师交给的任务。尝试编写一个具有导入导出功能的模块。通过百度,查询了很多的资料,知道了poi,jacob,itext的作用,并且找到了几个试验程序,接下来开始自己动手慢慢试验,通过反复修改,试验。在几天后,成功的编写出了一个可以导出到word的小模块,并且得到了老师的肯定和表扬。 当时候自己觉得非常的开心,感觉特别有成就感,对自己充满了信心。在接下来的日子里,我通过教学视频,以及书籍的方式,自学了jsp,servlet,SSH框架,ORACLE,设计模式等其他知识。在大四的时候找到份不错的工作。所以非常感谢程老师在我大学低谷的时候对我的教导,指引了我学习的方向。 参考文献 1. 数据库系统原理与应用 ---程学先 2. JAVA 中基于 JACOB 的 COM组件调用研究 ---李瑞,李永刚 3.James Bond and Philosophy ---James South ,Jacob M. Held 4. Jacob Mellis --- Agnes F Vandome , JohnMcBrewster 5. 让POI架起Java与Office之间的桥梁一 6. COM 原理概述 --- 冯正全 7. 一种基于COM技术的BBS实现模型 --- 崔晓松,蒋波 8.COM 技术及其程序设计 ---张金波,孙海翠 致谢 : 在此毕业之际,我怀着感恩的心,向四年来陪伴我一起度过的老师和同学以及亲人们,致以最崇高的敬意和最真挚的谢意。 首先衷心地感谢我的导师_________________,对我循循善诱的教诲,指导我的学业与毕业设计。在课题的研究和论文的写作中,老师严谨的治学精神,丰富的学识,让我获益匪浅,一直激励着我奋进。还要感谢大学期间认真教导我的代课教师们。感谢你们教给了我专业的知识和做人的道理。 感谢我的家人,在这大学即将毕业,我也即将走向真正的独立的时刻,仍然给了我无尽的物质和精神上的帮助,没有你们的支持,我绝对没有办法顺利的完成这次毕业设计,乃至顺利的毕业,感谢你们。 感谢我参考过的那些书籍的作者,正是由于你们的无私奉献,才构成了整个充满魅力的互联网,让我在其中方便的获取所需的知识,来完成这次毕业设计和充实我的身心。 文献综述: 导入导出部件技术研究 前言 本课题是基于 湖北省教育厅立项课题--基于部件的信息系统开发(2003A006)的基础上,对软部件数据通信功能方向进行深入研究。 对于数据交互的功能,社会上早有研究。而将数据交互功能应用于通用部件系统的,也有一些事例。最早于2001便出现了基于VFP的部件库最小系统。其中便包括一些数据交互的功能设计。但是,VFP是单机上的数据库,目前已经不受支持,停止升级,其基础上的部件库不具有商业应用价值。2005年,湖北工业大学“软部件技术研究”项目通过鉴定,宣称达到世界先进水平,其中主要是研制成功若干基于JAVA的部件,但是,其数量只有几个,特别是其中没有设计数据通信方面的部件。 本文便是通过查阅大量资料及文献,通过对当前软件复用技术现状的分析,进而对软件复用技术中存在的一些问题有更清楚的认识。深入的分析和研究基于JAVA的导入导出等数据通信方面通用软部件,使软部件库功能更加齐全,为所有的行业的通用部件研究提供一个事例。使通用部件系统能够得到更加广泛的应用,使其具有显著的商业价值。 研究方向及国内外研究 背景 对比建筑业、汽车制造业、计算机硬件业等产业,其形成规模化效应的成功道路都是将生产可复用的标准化构件与基于可复用构件的系统组装相结合。软件产业规模化也必然基于软件复用。软件作为人类知识的固化,具有复杂的逻辑性、构造性,广泛的应用领域,以及持续的演化等特性,这使得软件复用技术较为复杂,但软件复用一直是软件工程的研究和追求目标之一。近年来随着面向对象技术的成熟、领域工程研究的深入,以及软件构件 / 构架技术(包括分布式对象技术,如 CORBA 、 DCOM 、 EJB 等)的发展,软件复用已经具备了现实的技术基础。其中,软件构件 / 构架技术是实现软件复用的核心技术 本课题致力于研究构建技术 -- 通用部件系统中信息交互模块,也就是传统的导入导出功能部件。根据分析,与系统的交互对象一般包括:数据库、纯文本文件、有格式的文本文件、网络资源等。而通用部件的研究,在国内和国外都早有先例。 在国外: 在1968年的NATO软件工程会议上,Dough Mcilroy在其论文Mass Produce SoftwareComponents中提出软件复用的概念,希望以代码复用的方式实现软件开发的大规模生产。他设想软件构件可根据它们的通用性、性能、应用平台进行分类,使复杂的软件系统可以像硬件设计一样,通过标准的构件进行识别、组装,这也是类构件软件复用思想的雏形,虽然在以后的10年中,软件复用研究并未取得实质进展,但已经初步形成了软件复用的萌芽。 到1979年,Lanergan发表论文,对其在Rayther Missice Divison中的一项软件复用项目进行总结,使得人们的焦点又重新回到软件复用这个概念上面来。Lanergan项目小组通过对大量COBOL源程序的分析,发现设计和代码中有60%的冗余,因此可标准化并被复用。在此后的几年里,其他软件工程师也通过研究发现商业、金融等系统的大部分逻辑结构和设计模式都属于编辑、维护、报表等类型的模块,可通过对这些模块重新设计和标准化而得到较高的复用率。这是软件复用的再发现期。 1983 年,Hed BiggerstuffA和Alan Petis在美国的NewPort组织了第一次有关软件复用的研讨会。随后在1984年和1987年,美国IEEE Transaction on SoftwareEngineering和IEEE Software分别出版了有关软件复用的专辑。1991年,第一届软件复用国际研讨会(IWSR)在德国举行,之后在1993年又举行了第二次研讨会。在此期间,欧洲实施了几个有关软件复用的重点项目,如ESF(EurekaSoftware Factory),其主要目标是提供软件复用的工具支持。标志着软件复用的发展期已经来临。 1994 年的软件复用国际研讨会议改称软件复用国际会议,此时软件复用技术已引起了计算机科学界的广泛重视,越来越多的人投入到这一技术的研究中。面向对象技术的崛起给软件复用技术以新的希望,出现了类库、构件等新的复用方式,微软的ActiveX是其典型代表。软件复用研究重新成为热点,被视为解决软件危机、提高软件生产效率和质量的现实可行的途径。软件的构件化开发和软件复用已经成为互联网时代软件开发的大趋势。软件复用是解决“软件危机”的重要手段之一。 构建是软件复用的基础,据Gartner小组的一份报告推测,所有软件解决方案中将有70%是使用像预建的构建和模板这样的“积木”来建造的。因此,理解软件模型和规范是十分重要的。软件构建模型是解决构建之间的借口、实现互操作的理论基础。经过多年的发展,构件的模型及规范已给出,较有影响的有COM序列、COBRA和EJB。CORBA技术最早出现的,1991年OMG颁布了COBRA1.0标准;在其最早推出的时候,只提供了远程方法调用,在当时并不能被称为分布式对象计算,只是属于网络计算里的一种,接着推出的javabean,也还不足以和上述两大流派抗衡,目前的EJB,除了语言外还有构件的标准以及构建之间协同工作通讯的框架。于是,也就形成了目前的三大流派。 在国内: IT 软件等行业相对于国外起步比较晚。我们软件行业一直处于中下游水平,成为软件大国和软件强国是中国每一个IT工作者的梦想和奋斗的目标。 最早在“七五”、“八五”期间,中科院院士杨芙清教授便提出了大型软件开发环境的研究--青鸟工程。青鸟工程面向我国软件产业基础建设的需求,以实用的软件工程技术为依托,研究开发具有自主版权的软件工程环境,为软件产业提供基础设施—软件工具、平台和环境,建立工业化生产的基本手段,促进我国软件开发由手工作坊式转向用计算机辅助开发,以提高软件开发效率,改善软件产品质量。开创了国内可复用技术研究的先河。 “九五”期间,青鸟工程的任务是在前期攻关工作的基础上,为形成我国软件产业规模提供技术支持。重点是研究软件的工业化生产技术,开发软件工业化生产系统——青鸟软件生产线系统,即基于构件—构架模式的软件开发技术及系统,为软件开发提供整体解决方案,推行软件工业化生产模式,促进软件产业规模的形成。 1995 年杨芙清院士在发表的《软件复用》中强调软件复用是“对已有软件的重点使用,该软件可能是已经存在的软件,也可能是专门设计的可复用构件”,提出生成技术和组装技术两类软件复用技术。 1999 年又有论文《软件复用及构件技术》中提出应用系统中的三类成分:通用基本构件、领域共性构件、应用专用构件,指出“符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装)是产业工程化、工业化的必由之路”。 2001 年起,程学先教授对基于部件的信息系统开发这一课题发起研究。并于2003年在湖北省教育厅正式立项(2003A006),2004年湖北工业大学将之列入重大课题予以支持。 之后,国内的很多公司逐渐接受和认可了软件复用的思想。并在开发的工程中引用这种思想,逐渐形成了各个公司自己单独的软件复用体系。 存在的问题 虽然国内外目前针对可复用的研究已经有很多了。在软件生产中也很多地方用到了可复用的思想。但是在实际的开发过程中依然存在着很多的问题。例如: 金蝶公司的ERP系统,这个系统是南方地区比较出名的企业资源管理系统。金蝶公司有他们自己的一套体系,他们将很多常用的功能,单据、发票、信息的增删改查、不同系统,不同数据库的信息交互、人机交互界面等都进行了封装,集成到了ECLIPSE平台上,形成了金蝶公司独特的开发平台—bos开发平台。这个平台突出体现了软件复用的思想,但是有着很大的局限性,因为它仅仅实现在ERP业务中最常用的功能和模块的复用,在数据导入导出方面功能单一,局限于与EXCEL的数据互传。所有保留的表的字段和信息都只适用于企业。 神州数码公司在其一系列“智慧城市”项目中一再宣称其设计程序具有自适应性,易维护,但主要是在数据维护、查询与报表制作上,而且界面相对单一。 深圳纵横软件宣称其软件的特点: 一、用户完全自定义管理:包括报表、单据、公式,单据打印、货品图片、设置用户及权限、条码枪录入等。二、数据维护:包括强大的数据检索、数据统计、报表、图表、强大的数据存储、查询和汇总、灵活排序、数据备份、支持互联网,支持脱机开单,可绑定IP, 可实时定时访问、统计分析。三、软件维护:支持二次开发、有强大的再扩充性等。其软件收到业主广泛欢迎,但是,同样范围较狭窄,并未得到业界一致认同。 在用友深圳 T6企业管理软件 V6.1上市说明中宣称支持自适应,另外,支持从EXCEL导入单据,包括的单据有:采购订单、销售订单、发货单、采购入库单、材料出库单、销售出库单、生产订单、预测单、委外订单、盘点单、调拨单等 国外大型软件公司在所提供的集成开发环境中也隐含有软件复用技术,为开发者提供了使用方便、性能可靠的软件构建。例如,microsoft公司的系列可视化产品、ESRI公司的MapObject、Intergraph公司的GeoMedia等。 但是就目前的现状来看,这些软件产品依然存在很大的局限性,由于没有统一的规范以及规约,实现软件复用所组成的功能模块各行其是,这些公司尽管在不同程度上实现了本行业的软件复用,显著提高了生产效率,降低了软件维护成本,但是应用一般都局限在该公司的业务范围内,社会人士、领域的精英参与进来的还甚少,缺少全行业内具有规范性与标准化的系统模块级的软件复用产品。 参考文献 王晓芬,李莲治等.从源程序中获取可重用构建--对象和类 .小型微型计算机系统,1998 高济,王进.基于Agents的软件合成框架ABFSC .计算机学报,1999 李晓东.基于DOM的web信息提取 .计算机学报,1999 徐如志,钱乐秋等.基于XML的软件构建查询匹配算法研究 .软件学报,2003 王渊峰,张涵等.基于刻画描述的构建检测 .软件学报,2000 冯铁,张家晨等,基于框架和角色模型的软件体系结构规约 .软件学报,2002 贾宇.基于领域特征空间的构建语义表示方法 .软件学报,2002 Tullio Vardanega,Gert Caspersen,Jan Storbank Pedersen. A Case Study in theReuse of On-board Embedded Real-Time SoftWare . Springer-Verlag Volume 1999 杨芙清.构件化软件设计与实现 .清华大学出版社,2008 常继传.可复用软件构建的表示和检索 .北京大学计算机科学技术系, 1998 Alan W.Brown著,廖泰安 译.大规模基于构件的软件开发 .机械工业出版社,2003 程学先.数据库原理与技术(第二版) . 湖北:中国水利出版社, 2009 李瑞,李永刚.JAVA 中基于 JACOB 的COM 组件调用研究 . 微计算机信息,2007 James South ,JacobM. Held.James Bond and Philosophy . TransitionVendor出版社, 2006 Avik Sengupta.POI 架起Java与Office之间的桥梁 . 赛迪网 http://tech.ccidnet.com/art/3093/20050907/327715_2.html ,2005 崔晓松,蒋波.一种基于COM技术的BBS实现模型 . 微计算机信息,2002 (美)埃克尔著,陈昊鹏 译. Java编程思想(第4版) . 机械工业出版社, 2007 刘峰,郑滔编著.应用集成原理与技术. 清华大学出版社,2011.06. 王映辉编著.软件构件与体系结构-原理、方法与技术. 机械工业出版社,2009 秦汝明主编,董建国主审.计算机辅助机械设计. 西安电子科技大学出版社,2005 黄国兴,耿红琴编.计算机导论教学指导与习题解答. 清华大学出版社,2011 Randy.COM/DCOM Unleashed .Macmillan computer Publishing, 2003 Dale Rogerson.INSIDE COM :Microsoft's Components Object Model with Cdrom .Microslft press, 1999 Richard C.Leinecker.COM + Unleashed .Sams/Macmillan/Pearson, 2001 David S.Platt.The Essence of COM .Prentice Hall/Pearson, 2001 LIN Ying-xian.Developent of Enterprise'sInformation System Based on J2EE Technology .Journal of Jimei UniversityNatural Science,2002 Kurt Gabrick,Dave Weiss.J2EE and XML Development .Manning Publications, 2003
个人分类: 生活点滴|7267 次阅读|1 个评论
管理信息系统部件设计关键技术探讨
热度 2 求新 2014-10-21 21:01
管理信息系统部件设计关键技术探讨 湖北工业大学工程技术学院 齐赛 (说明,由于本网博文难附图片,文中图片已删除,如需要全文请和我们或作者联系)。 摘 要 构件技术的出现和应用工彻底打破了以往传统软件开发模式,让程序员摆脱了从零开始,重复大量工作的尴尬的局面。构件技术的实际应用也尤为广泛,同时也证明了其正确性和优越性,在某些方面确实提高了软件开发效率,在软件产业中扮演着举足轻重的角色。但是构件本身的不规范化,复用粒度不够大等缺点导致软件工业化生产的迟迟不能实现,在 MIS 系统中的表现也不理想。本文从软件复用的背景出发,对以上现象进行了分析 , 在构件的基础上探讨一种复用粒度更大,更标准化的复用单位,定义为软部件。本文综合各种各样的 MIS 系统的功能与性能,分析和归纳其共性与特点,在此基础上设计了一套通用功能模块,称之为 MIS 部件,该部件库系统(包括全部源代码)已经公开发布,本文通过对通用管理信息系统部件的设计和关键技术总结与分析,证明了应用软部件构建一般 MIS 系统的正确性,证明了进一步研究软部件具有深远的意义。 关键词:软部件 软件复用 管理信息系统 构件 Abstract The discovery and use of component technology have completely broken free the traditional software development model and extricated programmer from the situation of zero based code and much repetitive work.Nowadays component technology is used widely and at the same time proves to be of validity and superiority, in some ways it did raise the efficiency of software development, playing an important role in the software industry.However, the component is not standardized and its reusable particle size is not big enough, which lead to industrialization of software production being stalled, the performance in MIS system is also imperfect.This paper starts from the background of software reuse and analyses the above phenomenon.It also explores a kind of reuse granularity is larger and more standardized units of reuse on the basis of the component and defined it as software component.In this paper we combine with the MIS system analysis and summarize its general function modules, design general MIS components, and give a detailed description of the key technology. Through the design and analysis about general management information system components, it proves the validity of software component in building general MIS system and shows that it is necessary to carry out further study on software component . Keywords: software component software reuse MIS component 为申请省优论文写的大摘要 摘 要 软件复用技术的应用打破了以往传统软件开发模式,让程序员摆脱了从零开始,重复大量工作的尴尬局面。以构件技术为代表的实际应用尤为广泛,尽管在一定程度上提高了软件开发效率,在软件产业中扮演着举足轻重的角色,但是构件本身的不够规范化,复用粒度不够大等缺点导致软件工业化生产迟迟不能实现,在 MIS 系统中的表现并不理想。 我们在构件的基础上探讨一种复用粒度更大,可标准化的复用单位,定义为软部件。软部件是与构件有着相似性的不同概念。它的主要不同之处在于:软部件具有较高独立性,通常包含多项功能的封装 , 应用现场直接使用或做简单裁剪再组装;考虑了界面设计,直接调用就能自动生成界面;接口少而简单,甚至一个接口就能完成多项功能的事务;设计更规范化、标准化,能适用于大多数功能相似的应用系统,对要求特殊的系统只需要做很少的修改。以上特点是构件中尚未涉及到的,是部件与构件的分水岭。开发者只需要运用设计好的部件库组装堆积就能在短时间内完成数以月计的工作量,不难得出,软部件在复用技术领域的诸多优越性能使软件开发人员的编码最小化,极大缩短开发周期,同时降低测试和维护成本,是软件复用中的高端技术。 为什么要研究软部件?很早就有人设想,软件开发能否像生产硬件设施一样,只需要给出一定的标准,生产出规范化的合格零件,剩下的步骤只需要交给自动化车间,不同的车间会负责不同的模块,通过装配和集成就能完成整套产品来,而不是把大量的精力花费在重复性劳作中 , 即软件的生产模式是否也能够实现工业化。虽然没有讨论出确定的答案,但这种类比硬件工业生产的思路已经为软件产业的研究指明了方向,本研究提出软部件正如这里的 “ 零部件 ” ,是一种标准化、规范化的功能封装体,按照这种思路,如果设计出足够大的部件库,开发一个 MIS 系统时只需要从库里面选择需要的部件,补充少量非标准件后测试安装就能完成。发展和研究部件对加快软件生产工业化具有重大意义,但由于目前国内对部件的认识还不够深入,支持力度也不够大,部件技术要进一步发展,仅仅只靠几个人的力量无疑显得力不从心。 本研究首先对基于 JAVA 的软部件库的研究意义和目的、基础理论进行了阐述 , 结合相关文献进行了简单分析,证明本课题的研究是有意义和价值的。在此基础上,又对软件复用技术的背景进行了回顾,包括对软部件库的提出背景和发展历程以及设计需求,从理论上论述了软部件库的设计要遵守 “ 低耦合 ” 、 “ 复用粒度大 ” 、 “ 独立性好 ” 的原则。接下来对 MIS 部件库进行了概要设计和详细设计,涵盖了目前实现的部件库的全部内容。随后结合参与部件设计中的工作,对部件中的关键技术和问题进行深入研究和探讨 , 是全文的重点。 到目前为止,基于 JAVA 版的软部件库的部件完成数量已经达到百余个,其中包含 13 种表格式数据维护部件、 8 种单记录单表数据维护部件、 17 种查询类部件、 13 种数据处理类部件、 16 种数据通信类部件、 7 种报表格式生成类部件和多种系统工具类部件,此外,为适应更多 MIS 的应用,部件库还将继续扩大。部件库基本涵盖了 MIS 的一般功能,在实践中用部件库成功地改建了某校学生信息管理系统和某企业的工资管理系统,对应用系统的需求变更只修改了少量代码,节约了维护成本。部件库 JAVA 学习版也可以用作数据库教学实验工具,起到加强的作用。 本研究创新之处主要有: 1. 提出软部件概念,研究软部件构建通用 MIS 的可行方案,目前设计出的百余个部件能快速组建一般 MIS 系统,这在国内外还没见报道。如果按照部件的思想与方法组织各种管理信息系统的设计,应当能建立数量有限且通用于所有 MIS 系统并用来构建任何 MIS 系统的软部件库。 2. 提出并解决了部件中的很多技术难题例如单记录维护部件与各类打印部件中实现了复杂多变的自动布局算法、表格数据快速录入法、任意文本与图形数据导入录入法、数据处理程序部件化方法、部件被重复调用而产生冲突的解决办法、从 PDF 文件导入导出报表数据的方法、各种维护程序查询程序导入导出程序数据处理程序分类与覆盖需求的处理、通用于各种 DBMS 及基于网络的应用等问题。 3. 部件中使用了代码表、字典表、自动布局与按参数布局相结合、数据完整性控制、数据安全性控制等技术,这些技术的应用满足了传统的 MIS 系统的常见需求,使得界面与数据处理更人性化,也巧妙地解决了数据前端与后台变换的问题。 基于 JAVA 的软部件库由众多老师和学生历时数年完成,经过了实践的检验,证明了软部件库的正确性和优越性,证明了发展软部件在当今软件需求量剧增的时代的迫切性和必要性,有远大的理论意义和现实意义,希望国家科技部门加大投入,支持发展。 本研究在分析过程中还发现了许多值得研究的问题,需要进一步研究各类应用系统的模块,总结共同点,设计更广面向的、面向社会的、具有商业意义的通用部件。 社会的发展离不开创新,一个国家要引领在前沿发展,必然也要有国家自主创新。研究软部件,掌握拥有自主产权的先进技术,相信软件生产工业化时代即将到来。 关键词:软部件 软件复用 管理信息系统 构件 Abstract The discovery and use of component technology have completely broken free the traditional software development model and extricated programmer from the situation of zero based code and much repetitive work. Nowadays component technology is used widely and at the same time be proved to be efficient. In some ways it did raise the efficiency of software development, playing an important role in the software industry. However, the component is not standardized and its reusable particle size is not big enough, which leads to industrialization of software production stalled, the performance in MIS system is also imperfect. We explore a new kind of unit of software reuse on the basis of the component, of which granularity is larger and more standardized, it is defined as soft-components. Soft-components is a new concept different from component, though they seem similar. Soft-components is of high independence, it is usually an encapsulation that contains multiple functions. When applied to actual development it may be used directly or be simply cut then assembled. It takes into account the interface design, being directly called can automatically generated interface. Program Interface is simple, even an interface can finish many functions of transaction. It’s standardization applies to most systems similar in functions. Some special systems need to make only a few changes. Above characters have not been involved in component technology, which is the watershed between soft-components and software component. Developers can finish a system in a short time through accumulation by soft-components. It is not difficult to draw the conclusion that soft-components in the area of reuse technology of minimize software developers’ coding, greatly shorten the development cycle and reduce costs in test and maintenance as its superior performance .It is a high-end technology in software reuse. Why to study the soft-components? Long time ago people imaged if there is way software produced like hardware facilities that only given a certain standard according to which qualified parts could be produced, then the remaining steps just leave to workshop, different workshop is responsible for different modules, by assembling and integration set ofproducts be made rather than spend a lot of energy in the repetitive work. To be brief, the question is that whether production model of software is also able to realize industrialization. No one has given a definite answer, but the thought of the analogy to hardware industrial production has pointed out the direction for the research of the software industry. Soft-components proposed in this study is like the parts, is a kind of encapsulation, according to this train of thought, if soft-components library is large enough, the process to develop a MIS system is to choose the required components from the repository and add a small amount of non-standard ones, after test and installation the system would be completed. To acceleration of software to develop and research soft-components is of great significance for software industrialization. However, because of a lack of awareness that the current domestic has little support on the project, is difficult to continue further development on soft-components only by a few people. Firstly, this thesis expounds the research meaning, purpose and basic theory of JAVA-based soft-components and analyzes it combined with related literature. It comes to a conclusion that this research on the topic is significant and valuable. Next this paper reviews the background of software reuse technology, including introduction, development and design requirements of soft-components. It theoretically discusses the design about soft-components should comply with rules that are “low coupling”, “big reuse granularity” and “in dependence”. Then this paper gives a description about MIS soft-components’ conceptual design and detailed design, which cover the whole content of the current implementation of soft-components. At the end of the thesis the key technologies and problems in design process is deeply researched, which are the focus of the full thesis. So far, the number of JAVA-based soft-components has reached more than one hundred, which contains 13 kinds of tabular data maintenance component, 8 kinds of single record data maintenance component, 17 kinds of query component, 13 kinds of data processing component, 16 kinds of data communication component, 7 kinds of report format generated component and a variety of system tools component, in addition, in order to adapt to more application of MIS soft-components is continuing to expand. Soft-components basically meets the functional requirement of general MIS. The application of soft-components in practice isof success. We have rebuilt a school student information management system and an enterprise wages management system management system, in both projects the modification on code is negligible even through requirement change is massive. The economy on maintenance is visible. Furthermore, JAVA-based soft-components can also be used as a teaching experiment tool for database, which strengthens training.Renovations : 1. Put forward the concept of soft-components, research a feasible scheme in building any general MIS, soft-components currently completed can quickly build an any general MIS, this technology hasn't yet been reported at home and abroad. According the thought and method of the organization of all kinds of management information system by using soft-components, it should be able to establish a limited number of soft-components library with which any general MIS could be built easily. 2. Solve many technical problems such as the complex automatic layout algorithm single in record maintenance component and various types of printing component ,method of table data rapid input, method of any text and graphics data import , method of data processing component-formed, solution about conflict in soft-components when being concurrently run, method of import and export data from a PDF file , processing of various maintenance and query and import and export data program covering requirement and problems common to all kinds of DBMS and web-based applications. 3. Use code table, dictionary table, automatic layout, manual layout according to parameters, data integrity, data security control technology and so on. The application of these techniques meets the common needs of the traditional MIS and make interface and data processing more humanized, also cleverly solves the problem of the front and back transform data. It takes several years to design and complete JAVA-based soft-components by lots of teachers and students. Much practice has proved that the topic is of validity and superiority, showed that the development of soft-components is necessary in the situation where software demand is on the rise as time goes by. All in all, there would be great theoretical significance and practical significance to develop soft-components. Hope that measures be taken to invest more energies into national science by technology department. This paper also has found many problems worth studying during analysis. Further research is necessary to study all kinds of application system module, summarize the common ground, design more widely, socialized and commercialized soft-components. Society can not develop without innovation, a country must have it’s own independent innovation to lead in the forefront of development. Research soft-components to master advanced technology with independent property rights, then we believe that software production industrialization era is coming. Keywords : soft-components software reuse MIS component 目 录 摘 要 ................................................................... I Abstract ............................................................... IV 1 绪论 .................................................................. 1 1.1 研究基于JAVA 的软部件库的目的及意义.............................. 1 1.2 研究文献综述..................................................... 2 1.3 研究内容简介..................................................... 3 2 对管理信息系统软部件研究的回顾 ....................................... 4 2.1 软部件库的研究背景............................................... 4 2.2 软部件库的设计需求............................................... 5 2.2.1 可行性分析................................................. 5 2.2.2 关于软部件库设计原则....................................... 6 3 管理信息系统软部件设计概要 ........................................... 8 3.1 概要设计......................................................... 8 3.2 详细设计......................................................... 8 3.2.1 表格式维护功能............................................. 8 3.2.2 单数据表单记录数据维护功能................................. 9 3.2.3 查询功能.................................................. 10 3.2.4 数据处理功能.............................................. 11 3.2.5 数据通信功能.............................................. 11 3.2.6 打印报表功能.............................................. 12 3.2.7 系统工具类部件............................................ 13 4 部件库设计的关键技术研究 ............................................ 14 4.1 界面布局........................................................ 14 4.1.1 单记录维护部件界面布局.................................... 14 4.1.2 表格(单记录混合)式维护部件界面布局...................... 19 4.2 完整性控制与安全性控制.......................................... 21 4.2.1 完整性控制................................................ 21 4.2.2 安全性控制................................................ 23 4.3 数据校验........................................................ 25 4.4 权限控制........................................................ 27 4.5 无按钮存盘...................................................... 29 4.6 并发冲突........................................................ 30 4.7 代码表变换...................................................... 31 4.8 字典表的翻译.................................................... 34 4.9 其他问题及解决方案.............................................. 35 4.9.1 适应性与健壮性............................................ 35 4.9.2 数据同步.................................................. 36 结 论 .................................................................. 39 参考文献 ............................................................... 40 致 谢 .................................................................. 41 1 绪论 1.1 研究基于 JAVA 的软部件库的目的及意义 软件复用是指在构造新的软件系统的过程中,对已存在的软件产品 ( 设计结构、源代码、文档等 ) 重复使用的技术,至 20 世纪 60 年代以来,一直是软件技术的基本课题之一。从最近几十年软件发展状况来看,虽然软件生产效率一直在提升,但仍然不能解决用户对软件的需求与当前软件生产能力不高之间的矛盾。大量的软件工程方面的研究工作反映,软件复用是提高软件产业的生产率和软件质量的有效方法 。 在代码设计领域,软件复用从过程、函数、方法、宏到面向对象、构件、中间件、各种框架,类型多,应用广,已经成为大多数软件基本组成成分。人们从有软件起,就期望能有工业化的软件生产方法,期望形成为满足不同应用需要的软件生产线。在近十多年里,人们特别关注构件技术,投入了大量人力与物力开展研究,希望它能带来软件生产工业化的前景。但是,其类型与数量增加虽猛,却没有统一的规格、统一的方法,让人学习无从着手,使用手足无措,市场莫衷一是,企业各行其是,软件生产工业化的目标似乎还是那么遥远。 究其原因,面向对象、构件等技术成熟,但它们复用的粒度还不够大,在应用到系统中时大都不能构成独立的模块,往往还需要依赖其他成分再组建到系统中;在不同系统的设计中难寻相似结构;在系统维护中难寻统一的规律;从而使得软件设计与生产成本和维护成本居高不下,且有越来越高的趋势。 软部件是经封装的、面向业务工作而不是简单单一功能,是可以应用于不同应用系统,能适应于不同数据库系统与不同数据表结构的系统顶级模块;部件之间不存在直接联系、不要求彼此间的协作、包括了全局性界面设计的内容、不存在动态接口、依据接口参数调用 。它如同电子工业中的主板与插件一样,将完整的业务模块封装起来,到现场之后经过简单的组装即可快速使用,应当能极大的提高生产效率。如果能对大量的各种类型的应用系统分析与研究,寻求其结构的相同相似部分,找到规律,形成规范,应当能形成数量不过多的产品,将之用到实际应用中,就有可能提高生产效率,降低软件维护成本;由于数量少,更容易学习与使用,更方便推广应用;规范化与标准化的过程,可进一步提高软件设计质量。 软部件以任意的数据库为对象,采用从上而下方法设计,是规范化、标准化的代码类软件。与构件和其他软件复用技术相比,软部件具有复用粒度更大、耦合性更低、灵活性更高的特点。加大对通用软部件的研究力度,将有利于软件工业化生产的到来。 2001 年以来,已经有许多学者对软部件设计技术进行了研究与探讨,出现了基于 VFP 、 PB 的管理信息系统部件系统, 2005 年湖北工业大学基于 JAVA 的部件技术研究取得突破,若干部件程序通过专家鉴定达到世界先进水平。但是,研究成功的部件只有表格式维护、单记录维护、单查询、组合查询等区区几个,在之后几年里一直未建立系统的基于 JAVA 的软部件库,关于部件技术研究进展缓慢。 基于 VFP 、 PB 的部件库的设计虽然能在一定程度上表现软部件技术的思想,但是,由于语言的局限,在实际生产中难派用场,说服力有限。 2005 年的 JAVA 部件独立性不强,每个部件都涉及多个文件,彼此耦合,使用不方便,学习难度大。因此,有必要研究一整套基于 JAVA 的软件部件,将有一定的理论意义和现实意义: ( 1 )理论意义:更深入研究软部件的设计思想和方法,在主流语言环境中研究实现软部件的可能性与技术问题,是对软件复用理论、特别是关于软部件理论的进一步证明与发展,进而可对软部件的研究提供指导。 ( 2 )现实意义:研究基于主流语言的软部件,形成部件库,并研究投入到实际应用中的可能性,有向生产力转化的可能性,可提高管理信息系统开发效率,降低软件生产费用与维保费用,促使计算机应用向更广更深领域发展,为适应未来物流网、大数据时代来到的需求打下基础。 本文研究的目的主要在于: ( 1 )通过实际参加基于 JAVA 的软部件库的设计与研究,研究该部件库体系结构,总结其设计方法与关键技术。 ( 2 )结合该软部件库的设计分析软件复用技术研究现状 , 更深入认识当前软件复用技术中存在的一些问题。 ( 3 )在掌握该软部件库设计技术与方法的同时,深入的分析和研究通用软部件应用问题,总结利用它开发管理信息系统的方法,进一步推进软部件技术的研究。 1.2 研究文献综述 由于计算机软件应用技术飞速发展,对软件需求量也日益增加,传统的软件复用已经满足不了这种现状,为进一步提高软件开发效率,基于构件或部件的软件复用技术越来越成为软件工程学科中的研究重点。 梅宏认为,软件复用分为过程复用和产品复用,前者是通过生成器和技术手段生成符合要求的系统,受软件自动化技术约束。后者是通过已有的软构件组装成需要的系统,是目前主流的复用手段 。 杨芙清认为,实现软件工业生产是真正解决软件危机的唯一路径,而工业发展模式均是符合标准的零部件以及基于构件的组装,其中构件是核心和基础, “ 复用 ” 是必需的手段 。 程学先认为,软部件与构件是不同的概念,对实现软件生产工业化的作用更是大不相同,目前,我们要促进软件生产工业化时代的到来,尤其有必要对它们进行区分,并加强关于软部件尤其是通用软部件技术的研究,努力促进软部件技术的发展 。 1.3 研究内容简介 本课题研究内容主要包括以下几个部分:第一部分回顾管理信息系统软部件发展状况以及存在的问题;第二部分对一般管理信息系统进行系统分析,包括可行性分析,功能需求。第三部分对部件库进行概要设计与详细设计;第四部分结合所参与的工作,对部件中的关键技术和问题进行深入研究和探讨 , 是全文的重点。 2 对管理信息系统软部件研究的回顾 2.1 软部件库的研究背景 在 1968 年的 NATO 软件工程会议上首次提出了软件复用的概念,希望代码能被复用,实现软件开发的大规模生产。提出者 Dough Mcilroy 设想软件构件可根据其通用性等分类,类比硬件的设计,使软件系统由标准的构件进行识别、组装,这也是基于构件软件复用思想的雏形,虽然在以后的 10 年中,软件复用研究并未取得实质进展,但已经初步形成了软件复用的萌芽 。 到 1979 年, Lanergan 发表的论文 Rayther Missice Divison 通过对大量 COBOL 源程序的分析,发现设计和代码中有 60 %的冗余,提出可标准化并被复用,这使得人们的焦点又重新回到软件复用这个概念上面来。在随后的几年里,其他软件工程师也通过研究发现大量金融、商业系统的设计模式和逻辑结构都属于类似的某一类模块,对这些模块重新设计和标准化可得到较高的复用率。这是软件复用的再发现期。 软件复用的发展期来临的标志是在 1983 年的第一次有关软件复用的研讨会,此后,美国 IEEE 软件工程学报和 IEEE 软件分别出版了有关软件复用的专辑。 1991 年和 1993 年,分别举行了第一、二届软件复用国际研讨会。之后,欧洲实施了几个有关软件复用的重点项目,主要目标是提供软件复用的工具支持。 1994 年软件复用技术已引起了计算机科学界的广泛重视,投入到这一技术的研究中人越来越多。面向对象技术的崛起给软件复用技术以新的希望,出现了类库、构件等新的复用方式, ActiveX 起到了其典型代表的作用。软件复用研究被视为重点的同时,也被认为是解决软件危机、提高软件生产效率和质量的现实可行的途径。特别是在互联网时代,软件的构件化开发和软件复用是解决 “ 软件危机 ” 的重要手段之一。 95 年杨芙清院士在发表的《软件复用》中强调软件复用是 “ 对已有软件的重点使用,该软件可能是已经存在的软件,也可能是专门设计的可复用构件 ” ,提出生成技术和组装技术两类软件复用技术。 99 年又有论文《软件复用及构件技术》中提出应用系统中的三类成分:通用基本构件、领域共性构件、应用专用构件,指出 “ 符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装)是产业工程化、工业化的必由之路 ” 。 曾具有代表性的成果是北大的青鸟工程,它把软件的生产过程划分为三类不同的生产车间,即应用构架生产车间、构件生产车间和基于构件、构架复用的应用集成 ( 组装 ) 车间,这些不同概念的车间负责不同的任务,实现软件的工业化生产。而软件开发人员被划分成三类:构件库管理者、构件生产者和构件复用者。这三种角色所需完成的任务也是不同的,构件生产者负责构件的生产、描述;构件库管理者负责构件分类以及构件库的管理工作;而构件复用者负责进行基于构件的软件开发,包括构件查询、构件理解、适应性修改、构件组装以及系统演化。像这样的案例还有很多,例如早些年建立的上海构件库,现在已经有 3000 多个构件,其中还包含不少具有自主知识产权的领域构件等。 2001 年程学先提出要重点研究系统模块一级、具有规范化、标准化、包括界面设计内容的构件产品,取名为软部件,希望其数量较少,易学易用,能如同硬件中的零部件一样,能即插即用地构建应用系统。 2001 年到 2008 年,先后出现了基于 VFP 的部件库最小系统 1.0 到 4.0 版,之后又有基于 VFP 的部件库最小系统网络版,还出现了基于 PB 的软部件库。 2005 年又报告基于 JAVA 的部件技术研制成功,不过数量极少,各部件独立性很差,推广应用难度很大,之后一直未出现成系列的基于 JAVA 或其他主流语言的软部件库,自然也不可能有商业化的应用。 在各类设计语言中, JAVA 语言由于其丰富的界面设计能力在管理信息系统设计中占主要地位,研究系列的基于 JAVA 的软部件库具有重要意义且需求迫切。 2.2 软部件库的设计需求 2.2.1 可行性分析 软部件基于对数据库的基本操作,在理论上是可行的。 部件基于对数据库的基本操作展开设计,并涉及到数据的安全性与完整性、代码运用、派生数据、处理的效率、并发操作以及图形和文本,联系实际环境,特别强调应用系统的界面需求,这样便能实现即插即用的效果。实际运用中的界面虽然是千变万化,但也是有章可循的,部件的核心技术是设计有限个部件来设计满足数以万计的应用系统的需求。针对有限个数据库操作界面和大量实际系统模块,总结它们的界面特征、性能和功能,就能制定一套标准的部件库。 其次,软部件在技术上也是可行的。 通用 MIS 部件经过多年的研究,已经出现了基于 VFP 的最小系统,其提供的部件库使我们在短时间内就能构建一个数据库应用系统。例如湖北工业大学商贸学院学生科管理信息系统、湖北工业大学财务管理系统就是基于此部件开发的。 虽然基于 JAVA 设计部件库存在难度,主要是因为该语言不具备宏替换语言结构,又是完全面向对象的语言,将基于 VFP 的部件系统移植到 JAVA 语言环境中举步维艰,但是, 05 年研制成功的基于 JAVA 的部件设计成功已经突破了最大的难关,使得软部件在 JAVA 环境中研制成功成为可能。 2.2.2 关于软部件库设计原则 通用软部件(下面简称 “ 部件 ” ),是用于完成特定任务或具有特定功能的程序代码的集合,是经封装的、面向业务工作而不是简单单一功能的系统功能级模块。它采用从上而下设计方法,是规范化、标准化的代码类软件 。在 JAVA 中,软部件是一些类的集合。软部件可以通用于不同应用系统,能适应于不同数据库系统与不同数据表结构,在应用于现场时可以如同硬件生产一样即插即用或经简单裁剪后插入使用。与构件不同,构件通常为实现某一具体的功能而设计,粒度较小,在使用时常常需要再和其他构件、对象再拼装或对程序进行修改之后再使用,常常要求提供框架之类程序使之可以获得支撑,在系统中一个构件往往需要得到其他构件的协作与支持才能共同为完成一件事务而工作,而软部件则具有特殊的特性,在许多方面与构件的概念相似,虽然在实际应用中人们一般不对其进行区分,但是软部件与构件是不同的概念,与构件相比,要求部件有以下较优越的特性。 1 、低耦合 部件是业务级的独立模块。 通用软部件首先是一个应用程序的封装体,其功能是独立的。由于它的设计是用来复用、提供业务服务的,所以它包含了一项业务完成过程中所必须的功能,如对数据表的增删查改操作、多种导入导出操作、各种打印报表操作等;其次,它具有对环境的依赖性低、接口简单的特点,使用起来十分方便;由于其具有界面生成能力,能满足不同用户对界面的要求;部件的设计中考虑到了安全性、完整性、代码表和字典表的应用,是数据库相关理论与技术的实现与扩展,这些都是实际应用系统中要考虑到的,有较高实用性与可靠性;系统设计人员只需要选定部件,为其提供参数,就能快速以插件的方式构建到系统中来,为软件复用提供了很好地支持 。 2 、复用粒度大 采用从上而下设计方法,复用粒度大。 通用软部件的设计不同于软构件,它是先从一般管理信息系统的特征开始分析,综合大量实际应用系统的需求,研究一般性的管理信息系统的模块构成,分析不同应用人员对系统所提供的功能与性能的要求,分析各种应用系统模块的界面特征与在使用时的表现,针对任意的数据库和数据表组织设计。然后在此基础上展开进一步的分析设计。具体的设计又将功能模块分解,归纳出用户可能需要的具体功能组合,然后考虑由哪种程序语言来实现,最后再分析程序的界面、性能等。一个部件通常综合多项业务需求而设计,选定具体参数后就能完成一项完整业务需求,复用粒度较大。 3 、独立性好 软部件在应用于现场时应当能即插即用式地使用。 反思硬件生产工业化的历史,工业化要求实现分工、要求自动化,因此,要求软部件能如同电子产品中的智能插件、机械产品中的通用零件和部件一样,只需设定初始参数、拨定若干开关就能用于新的场合。在构建软件系统时可以如同搭积木式地直接用它组建系统,也可以进行裁剪、去掉不需要的功能或成分、进行必要的修饰后再用来组建系统。 工业化的硬件生产要求首先设计好大量的标准件、部件,在设计新产品时,总是先选择已有的部件,补充设计一些非标准件就可以了,不仅效率高,而且质量好,造价大大降低。实际应用系统中使用的零、部件的需求是极为广泛的,我们不可能根据每一种实际产品需要的零、部件的大小与形状去设计部件产品,只能设计出少数几种规范化、标准化的产品供现场使用。具体机器或建筑的设计都不是从最基础的一颗螺丝、一颗钢钉的设计开始,而是先考虑已有部件库的储备,要基于标准件库的情况再量身定做。只在特殊情况下设计一些非标准件或外加工件用于特殊的机器与建筑。关于软部件的设计也需要这样,我们只能在功能与性能集成的基础上设计出数量不是太多的规范化的标准部件,才能方便选用并使系统设计规范化。 3 管理信息系统软部件设计概要 3.1 概要设计 管理信息系统部件是面向抽象的业务,而不是具体的针对某一具体领域,管理信息系统通常都有一些共同特征,我们抽取这些共性,从更高的层次去设计部件库。 MIS 系统是一个由人、计算机等组成的能进行信息的收集、传送、储蓄、加工、维护和使用的系统。根据这些特点,我们设计的部件正是这些共同部分功能的封装,随着 MIS 需求的增加,部件库也会随之扩大,当部件库的设计量足够大时,便形成一种 MIS 的通用平台。通过对大量 MIS 的分析可得出,其共同模块大都包括:数据维护、数据查询、数据处理、数据通信、打印报表、系统工具。系统结构如图 3-1 所示。 图 3-1 管理信息系统功能结构图 3.2 详细设计 3.2.1 表格式维护功能 表格指只由行与列构成的容器,每个行与列的焦点是一个文本框(或组合框或其他表现数据的控件)。虽然在 SQL SERVER 2008 中借助资源管理器的图形界面可产生编辑数据用的表格界面,但有些操作不够方便,例如不能借助代码库录入、查询也较麻烦等等。很多变成语言例如 JAVA 对表格界面都有很好的支持,在表格式维护部件中,数据以表格形式形成视图,用户可以很快速定位到目标数据,并且通过鼠标也很方便地对记录进行增加、删除、修改,除此之外,用户根据自己的需求进行不同的表格式维护部件选择,部分功能以控件的方式封装,也可以进行自定义安装卸载。所有表格式维护部件都提供了最基本的增加、删除、修改功能,都允许选择字段投影要求向用户提供不同视图,功能结构图如图 3-2 所示: 图 3-2 表格式维护部件功能结构图 总结一般管理信息系统对表格式维护不同的需求,初步设计了 13 种表格式维护部件:通用表格式数据浏览部件 1 、可变换显示提示通用表格式数据浏览部件 2 、表格式基础数据维护 2 、数据直接录入表格维护 3 、数据直接录入可使用代码表表格维护 4 、需先添加空记录再录入表格维护 5 、提供完整性控制表格维护 6 、提供安全性完整性保护表格维护 7 、清库与批处理 8 、单记录加表格表格维护 10 、增加状态行表格维护 11 、通用表格维护 12 、可变换显示提示通用表格维护 13 。 3.2.2 单数据表单记录数据维护功能 表格式界面加滚动条能较完整看到一个表中全部数据,人们熟悉其界面风格,操作自然直观,布局简单单一,容易实现。但是,当字段数量多或存在宽度大字段时操作变得不便,对于文本类型、图形类型缺少表现力,为此需要设计另一种风格的数据维护部件。单记录数据维护部件是为各种单记录数据维护设计的通用部件,其特点是提供一个操作界面,以文本框或文本域的方式显示一条数据记录,每一文本框或文本域显示当前记录的某一字段,需要不停移动指针才能对不同记录操作。字段显示要求采用特定算法布局才能做到整齐美观。如果能根据用户要求设计与布局,用户可以很方便地修改、删除、添加完整的记录。所有部件都通过 “ 下一条 ” 、 “ 上一条 ” 、 “ 第一条 ” 、 “ 末一条 ” 、 “ 浏览 ” 等方法程序移动指针是实现对不同记录的操作。所有部件都允许以字段号形式选择投影字段要求向用户提供不同视图,都可以通过选择按钮使每一次调用都实现一个具体的功能。一般应用系统中 “ 录入 ” 、 “ 添加 ” 、 “ 修改 ” 、 “ 删除 ” 、 “ 变换 ” 等操作都可以选择参数调用其中某部件实现。 单记录维护部件可以独立的运行,根据用户的操作权限进行过控制,每一个按钮提供一个完整的功能,用户可以对其进行选择性安装。功能结构如图 3-3 所示。 图 3-3 单记录维护部件功能结构图 总结一般管理信息系统对单记录维护不同的需求,初步设计了 8 种单记录维护部件,即:单记录维护 1 、适应异构性变换的单记录维护 2 、涉及图形字段及域完整性维护单记录维护 3 、可使用代码表可重复调用单记录维护 4 、带域完整性控制可使用代码表单记录维护 5 、使用组合框带域完整性控制单记录维护 6 、一对多多放表维护 7 、多对多联系表数据维护 8 。 3.2.3 查询功能 查询是 MIS 的基本功能,查询类部件允许用户根据自己的需要制定不同的查询条件或方案,界面提供字段和条件符、表达式等控件,查询的结果直接以表格的形式显示,也可以通过通用浏览部件在新窗口呈现,有较高的灵活性。功能可以分为基本查询和高级查询,功能结构如图 3-4 所示: 图 3-4 查询部件功能结构图 总结一般管理信息系统对数据查询不同的需求,初步设计 17 种查询护部件,即:单条件选字段专项查询 1 、带字典表单条件选字段专项查询 2 、单条件多表选字段专项查询 3 、带字典表多表选字段专项单查询 4 、二条件选字段专项查询 5 、二条件带字典表选字段专项查询 6 、二条件多表专项查询 7 、指定条件表达式查询 8 、多表带字典表指定条件查询 9 、单表组合查询 10 、带字典表组合查询 11 、带代码表多表组合查询 12 、多表含聚集函数输出组合查询 13 、统计查询 14 、文本检索 15 、显示 SQL 语句文本查询 16 、通用实验用组合查询。 3.2.4 数据处理功能 数据处理是 MIS 的一个重要功能模块,我们在 MIS 中通常需要对查询的数据进行一些计算和求值,通用数据处理部件设计了常用数据处理函数库,初步设计了部分常用的统计计算公式和求值运算,算是搭起了一个框架,期望在今后不断增加数据处理函数或方法,增加数理统计和其他数据处理的部件,逐步使能满足大部分应用系统的需求。功能结构图如图 3-5 所示。 图 3-5 数据处理部件功能结构图 总结一般管理信息系统对数据处理不同的需求,初步设计了 13 种数据处理部件:全表统计部件、分组统计部件、横向数据处理部件、纵向数据处理部件、删除重复记录部件、求关系差集部件、求关系并集部件、求关系交集部件、关系除法部件、单数据交叉表部件、多数据交叉表部件、二级分组交叉表部件、一元线性回归部件。 3.2.5 数据通信功能 应用系统之间、程序与应用系统之间常常要进行大量数据交互,一般以文件或数据表作为媒介。一个系统也常将数据转存到其他文件或数据表中。将当前数据表中内容转存到其他文件或表中称为导出;从文件或其他数据表中将数据转存到当前表中称为导入。 网络已经是管理工作中不可缺少的工具,从网上下载数据到当前表中,或将数据上传到网络中也是应用系统必备功能。这些都称为数据通信。本系统设计了多种专门用于通信的部件,结构图如图 3-6 所示。 图 3-6 数据通信功能结构图 总结一般管理信息系统对数据通信不同的需求,初步设计了 16 种通信类护部件:覆盖式导出到纯文本文件、 XML 文件与其他数据表部件,添加式导出到纯文本文件、其他数据表部件,修改式导出到纯文本文件、 XML 文件与其他数据表部件,覆盖式导出到 Office 文件部件,添加式导出到 Office 文件部件,修改式导出到 Office 文件部件,覆盖式从纯文本文件、 XML 文件与其他数据表导入部件,添加式从纯文本文件、 XML 文件与其他数据表导入部件,修改式从纯文本文件、 XML 文件与其他数据表导入部件,覆盖式从 Office 文件导入部件,添加式从 Office 文件导入部件,修改式从 Office 文件导入部件,从网页下载并导入部件,导出生成邮件部件,通用导入部件,通用导出部件。 3.2.6 打印报表功能 在各种管理信息系统中,设计打印报表都是重要内容,也是很费时的工作。对于常用到的格式固定的报表可以先设计报表格式文件,然后调用该文件打印。需要设计方便操作的格式文件生成程序,及根据格式文件组织打印的程序,结构图如图 3-7 所示。 图 3-7 结构图 总结一般管理信息系统对打印报表不同的需求,初步设计了 7 种报表格式生成类部件及相应的报表预览、报表打印部件:简单表格式报表格式生成部件、带分组统计报表格式生成部件、统计图表生成格式部件、带统计图报表格式生成部件、单记录式报表格式生成部件、标签表格式报表格式生成部件、标签单记录式报表格式生成部件。 3.2.7 系统工具类部件 系统工具类部件是为了方便学习与使用而额外设计的部件,主要提供对系统用户、角色、权限、接口参数等维护,同时对数据的备份和还原也提供了支持,是对应用系统功能的加强。应用系统的系统工具由用户自己去选择添加或卸载。 本系统工具类部件包括:用户表维护部件、 “ 权限表 ” 维护部件、接口参数表数据维护部件、帮助部件、建立新数据表部件、数据表结构维护部件、数据清空与初始化部件、数据备份部件、数据还原部件。 4 部件库设计的关键技术研究 软部件库的设计是验证部件实际意义和价值的有效证明,基于软部件的通用 MIS 思想早在 2000 年被程学先教授提出,在长达十多年的研究里, VFP 的最小系统部件库和 JAVA 的部件库相继被实现,并获得好评。 2013 年初,程学先教授又重新对 JAVA 版部件库进行了设计和修改,指出部件与部件之间不应该有依赖关系,每个部件只应由一到两个程序组成,如同硬件系统中插板插件一样,每个部件都能单独工作,不强调内部的复用。在此期间,我有幸参加了部分部件的设计与实现,下面总结这些软部件的制作过程中遇到的一些难点和解决问题的关键技术。 4.1 界面布局 软件的操作界面是用户与计算机进行信息交换的通道,是用户指令下达的接口,友好的界面对用户来说不仅是一种欣赏,更重要的是方便用户输入,使操作更正确、更方便快捷,保证工作质量,提高工作效率。由于软部件是不以特定系统为目的设计的,必须要考虑界面的通用性。 界面布局的难题出在单记录维护部件中,首先是在 JAVA 环境中不能以变量名做类名,而通用软部件界面对象是变量而不是常量,到目前为止,还没见到任何文字介绍其解决办法或听说其解决办法,如何整齐、美观地将任意一个表涉及到的字段名和数据框以及列表框安装在面板上成为一个富有挑战性、创新性的问题。 JAVA 虽然提供了多种布局管理器,但只是对某些有规律、有共同特点的控件有用,布局效果比较单一,难以普遍满足用户要求,有必要另外设计通用的布局算法。 4.1.1 单记录维护部件界面布局 ( 1 )问题分析 单记录维护部件的界面主要由字段标签 Label 、文本框 TextField 、文本域 TextArea 以及列表框 List 组成,某些应用还要求有组合框、图形框及其他表现数据的控件。部件面对的表是不确定的,也就是说程序中获取的表的字段个数、宽度属性、数据类型也是动态的,程序中无法用固定的类名对这些控件设置固定位置。尝试用 java api 提供的布局管理器,经过多次试验发现都行不通。 1 ) GridLayout 提供表格式布局,其原理是将界面划分成二维表格来管理,表格的行和列可以自定义,看上去能解决问题,实际不然,原因是控件的大小不一,特别是 TextArea ,其维护的是长文本类型数据,需要占用更大的空间。而 GridLayout 只适合对大小相同的控件进行整齐摆放。 2 ) FlowLayout 以流的形式布局,其原理是将控件从左到右,从上往下的方向进行摆放,考虑将 Label 、 TextField 、 TextArea 先后排好序,在逐个添加到布局中,在无 TextArea 的情况下基本能产生良好的界面效果,但如果中间有 TextArea 存在,整个界面就会被打乱。另一个问题是,此布局不会将各行填充布满,实际效果往往是在每一行控件的最后会留有空隙,不整齐。 关于动态的控件定义、安装、数据读出与写入另有文章介绍,下面重点介绍我们设计的布局方法的算法。 ( 2 )解决方案 通过以上分析容易发现,控件的布局的影响因素是 Label 、 TextField 、 TextArea 的长和宽,只要在程序中获取当前表对应的各字段控件的这些信息,通过计算分析,便可设计出符合要求的布局。具体是: 首先自动布局计算初始参数。 在界面参数数据表中按每一字段填写一条记录。 对字段宽度小于 60 的且未指定为特殊字段的字段采用 TextField 单行文本框表示,假定所有字都为 5 号仿宋体,各组件高度与宽度根据字段宽度计算。组合框的高度与宽度根据字体、字号计算后加上滚动条的宽度。其他采用多行文本框、单选按钮、复选框或列表框表示的组件,其外观尺寸按约束条件表中数据设定。 标签名根据字典与约束条件表确定的名字(如果某字段没有填写对照的名字,默认标签名就是字段名)计算宽度与高度。每行记录一个字段标签与字段组件二方面数据。 组件类型按特殊表示字段号表分解填入组件的名称。 在以上基础上进行进一步的布局,布局关键是不同高度组件的混排处理,应当尽量做到: 1 、对于那些要求特别宽的组件尽量放在布局的上面或下面; 2 、对于那些特别高的组件尽量放在布局的左面或右面; 3 、单行文本框与组合框布置在布局的中间。具体程序流程如图 4-1 所示。本程序先计算可安排空间大小,预安排列表框、多行文本框、单选按钮与复选框等长高或扁宽组件到右边与下边位置上,再在剩余空间安排其他组件,最后通过调整完成布局。 在排列时,对于长高型组件,可以先按最高组件统一高度,对于扁宽型组件,可以先按最宽组件统一宽度,使得整体显得整齐。但如果空间总体不足,则应回复按实际高宽排布。 对于大多数组件,在字段总数较少,界面比较空余时,可以按列统一宽度,使界面显得整齐美观。当字段总数较多时,只对第一列标签统一宽度; 4 、当一个组件加入行时,有两种情况:加入当前行和加入新生成行。当该组件是页面的第一个组件或该组件宽度加上之前的当行宽度大于页面可用宽度时需要生成新行,组件加入新行;否则加入当前行,其算法为: 1. 设当前行已占用宽度为 w1 ,当前行可用宽度为 w2 ,组件宽度为 w3 ,组件行间距为 w4 ;(当前行可用宽度(页宽)减左、右边宽,再减所有长高型组件总宽的值) 2. 计算加入组件后的宽度: w5=w1+w3+w4 ; 3. 当 w2 大于 w5 时,组件加入当前行,其距左边距离等于上一个组件距左边距离加上一个组件宽度再加组件间间距。转 6 ); 4. 当 w2 小于 w5 时,调整当前行中组件的宽度,使得行尾部剩余的空白空间按比例分配到各个组件中,使得布局美观。 5. 生成新行,组件加入新生成行,其距左边距离等于页面可安排空间左间距。 6. 结束。 其中 4 调整组件间距的算法如下: ( 1 )该行第 i 个组件的宽度设为 wi ,该行总组件数为 n ,组件间距设为 wj ; ( 2 )计算所有组件间距总和: ws=wj*(n-1) ; ( 3 )当前行已占用宽度为 w=w1+w2+……+wn+ ws ,当前行可用宽度为 wk ,计算行尾部剩余空间 w0=wk-w ; ( 4 )新的组件宽度 wi=wi+w0/n 。 行的起始位置和高度的计算方法: 第一行的起始位置即页面可用空间的左顶点坐标,包括纵向 y 值和横向 x 值。其他行的 y 值为上一行的 y 值加上一行的高度。行的高度由该行中加入的组件的高度确定,一般为该行所有组件高度的最大值。 在界面生成过程中需要考虑一些特殊问题 : 1 )缺件与补件: 在已建立界面参数数据表后,对程序常有维护要求,此时可能会要求去掉一些控件,添加一些控件。如果又重新从头生成,效率不高。本设计采用尽可能保留原有手工调整数据的方法,减少再生成工作量。具体而言,是保留各控件大小、相距位置中手工修改的痕迹,纪录自动生成算法与最终数据间差值。在再生成时,先根据原定算法计算参数,并利用上述数据加以修正,最后只进行一次手工确认,使提高重生成效率。 2 ) “ 修饰用 ” 控件插入功能: 好的界面不仅要求能妥善处理数据控件与程序控件,而且要能充分利用各类修饰控件,使用艺术手段增强美的效果,例如加入插图、声音文件、动画、标题。其实现方法是在手工修改界面参数数据表的程序中,提供全体下移、右移的手段;向程序员展示当前空闲空间情况;提供常用且与当前空间相适宜的算法;提供图片、动画、声音格式及背景图片格式等供选择。 ( 3 )方案选择和效果 在程序实现上述算法之后,做了大量实验和测试,部件对任意字段表均能完美布局,达到了预期效果。效果如图 4-2 所示。 图 4-1 单记录维护通用部件自动布局程序流程 图 4-2 单记录维护程序运行效果图 4.1.2 表格(单记录混合)式维护部件界面布局 ( 1 )问题分析 在表格式维护部件 10 、 11 在表格之外,提供了当前数据表需要显示的字段面板,与单记录维护部件布局问题类似。 Java api 提供的布局管理器无法满足界面整齐布局的需求。 ( 2 )解决方案 方案一是通过前面单记录维护部件提到的界面布局算法来布局,另一种布局较为容易实现,其思想是把字段和它对应的文本框封装起来当作一个整体控件。具体做法是: 1)tableTenance10 、 11 中提供一个内部类: Filed ,继承自 JPanel ,该类提供了单行文本框 JTextField 、多行文本域 JTextArea 以及标签 JLabel 。规定,列数据宽度小于 60 用 JTextField ,具体宽度为列数据宽度 *8 ,否则用带滚动条的 JTextArea 。 2) 由于 JAVA 语言不允许以变量名作为数组的索引,取而代之可以用 Map 类型以键值对的形式管理当前表的字段, key 存放字段名, value 则对应 field 控件。也可以创建一个一位数组,存放所有字段名,用 ArrayList 管理 field 控件,通过数组对应的下标来管理。 3) 在将这些字段安装在面板上时,摆放的规则是:首先将控件按类型分开( JTextField 和 JTextArea 区分出来),按照字段在数据库中的顺序从左到右摆放,如果当前行的空余宽度容得下下一个控件,则摆放下一个控件,否则找到上一个控件,将其宽度增加至与面板末端对齐。 4)JTextArea 控件摆放在 JTextField 之后。 5) 简单的程序流程图如图 4-3 所示: 图 4-3 表格式维护部件界面算法流程图 ( 3 )方案选择和效果 表格式维护部件 10 、 11 实现了上述提出的方案二,在测试中,对任意字段表的布局特点是:每一行是等高度的字段标签和文本框,充满面板的全部宽度。长文本域单独或同其他文本域等高沾满面板全部宽,并且在面板的最下面。整体看上去比较整齐,达到预期效果 , 如图 4-4 所示。 图 4-4 表格式维护部件运行效果图 4.2 完整性控制与安全性控制 实际应用系统要求实现数据完整性与安全性控制,在各数据库软件中都提供了这些约束,但用户在界面交互时,如果仅仅靠数据库软件中的约束来验证,数据通过数据库底层封装的错误信息再返回到前端,效率会大打折扣,网流量大且容易引发错误。我们在设计 JAVA 部件时考虑了数据完整性、安全性控制的问题。某些部件提供了专门的完整性、安全性文件接口,要求在系统中建立 “ 接口参数表 ” ,记载关于数据安全性与数据完整性约束定义,有关部件打开这类文件,读取有关约束条件数据,再在用户操作全过程中监控用户行为,一旦发现违背约束条件的事件发生,立即予以纠正,不将错误发到数据库中。接口参数表可以两种形式创建,一是以文件的形式(例如 txt 文件)创建,第二种是以数据库表的形式创建。前者处理简单,但是安全性不够好。后者是用数据表保存数据,对程序可操作性强,安全性好,但需要考虑过多的参数表导致数据库负担加重的问题。我们部件系统中,单记录式维护部件采用前者,表格式维护部件采用后者,均未试验性质。 4.2.1 完整性控制 ( 1 )问题分析 完整性控制是数据库对数据的一种保护机制,确保数据的语意正确性。一般情况下在设计数据库时,都需要对需要的字段建立约束,数据在变更时,通过这种机制来验证数据的合法性。但事实上,用户往往希望应用系统也能提供这种机制,一方面由于数据在达到数据库之前就可以进行校验,提高了系统的性能和效率;另一方面减少程序出错的可能性,更健壮。 部件的完整性控制关键技术在于其通用性,因为部件不是和某一张表绑定的,控制约束条件不能在程序中固定写死。 ( 2 )解决方案 通过分析可以发现,部件是在菜单创建的时候绑定其操作的数据表的,假定在此时也为其指定完整性控制约束条件,便可通过参数传入部件了,依照这种思路,在此之前若存在此数据表的完整性控制约束文件,就能很好地解决这个问题。接下来的难题是设计专门为数据表创建完整性控制约束的工具类程序。 在设计工具类程序时,我们需要考虑二个问题:一是弄清约束条件形式,查阅大量关于数据库完整性约束的资料可以总结出约束条件大致分为三种形式,最大最小值、值域、条件表达式;二是采用哪种方式存放完整性控制信息,例如以 txt 等文件方式存储称为文件型参数表,以数据库表方式存储称为数据表型参数表。 1 )文件型参数表 我们设计了 completeTool 程序辅助设计与建立文件型接口参数表,在程序调用时,用户可以选择目标数据表,接下来选择已有的参数文件名,若不存在,则创建新参数表。 为减少文件数量,方便管理,将实现某一操作的有关域完整性控制、安全性约束控制、字段布局数据等置放在同一文件内,用标志位区分属于那一类约束。 参数表文件中的内容规定格式:每一行数据表示目标数据表某一字段的完整性信息,分别是 “ 标志位 ” 、 “ 字段名 ” 、 “ 最大值 ” 、 “ 最小值 ” 、 “ 值域 ” 、 “ 条件表达式 ” ,标志位为 3, 表示完整性记录,各内容之间以中文句号间隔。 当读取完整性控制记录到表格中时,标志位非 3 的记录读入在缓存中,用户录入、修改、删除数据再次存盘时,再一并将缓存数据和表格数据写到参数表文件中。 2 )数据表型参数表 设计了 completeTool4DB 程序辅助设计与建立数据表型参数表,程序中提供在数据库中创建表的功能,但字段名固定为 “ 标志位 ” 、 “ 字段名称 ” 、 “ 最大值 ” 、 “ 最小值 ” 、 “ 值域 ” 、 “ 条件表达式 ” 、 “ 用户名称 ” 、 “ 许可字段号 ” 、 “ 权限 ” ,规定:标志位为 3 的记录中除与完整性有关的字段外,其他字段一律为空。 当读取数据到表格中时, select 语句中只需加上 “where 标志位 =3” 即可选择全部完整性控制数据,通过表格视图以及按钮操作可以很方便地进行数据的维护。 带数据表型参数表的部件例如表格(单记录混合)式数据维护部件 10 等,除读取参数表数据与文件型参数表不同外,其余类似。 ( 3 )方案选择和效果 文件型参数表和数据表型参数表都能快速地对操作数据进行合法性验证,前者操作起来快捷方便,开发者甚至可以直接用文本编辑器修改里面的内容,但从另一侧面也说明了其缺乏安全性。后者内容直接存在数据库中,安全性有保障,但加重了数据库的开销。运行效果如图 4-5 所示。 图 4-5 完整性控制程序运行效果图 4.2.2 安全性控制 ( 1 )问题分析 安全性控制是数据库系统的又一个重要机制,是保护数据库,防止数据被非法访问导致的数据泄露、更改或破坏。尽管 DBMS 都提供安全性保护,不过大都在系统、库、表级,如果要深入到记录级、字段级就要设计许多存储过程或触发器,将很不好用。因此,一般实际应用系统都提供控制手段,不将问题留给数据库。在实际应用系统中,不同的用户角色拥有对同一张表不同的操作权限,甚至控制权限精确到某一个字段、某些条记录。部件设计中设计安全性控制的关键技术在于设计出具有通用性的安全性控制表。 ( 2 )解决方案 安全性控制同完整性控制类似,可以设计工具类程序,由它来为数据表提供字段的访问权限。类比 oracle 的权限机制,将应用系统的用户权限分为 i 、 u 、 d 、 q 、 a 五个类别,分别代表对字段的插入、修改、删除、查询和全部操作,同时设计允许做相应操作的字段号表,将控制细化到字段级。安全性控制数据存储形式也分为文件型和数据表型。 1 )文件型参数表 设计了 secureTool 程序辅助设计文件型安全性约束参数表,用户可以选择目标数据表,接下来选择已有的参数文件名,若不存在,则创建新参数表。 参数表文件中的内容规定格式:每一行数据表示目标数据表某一字段的完整性信息,分别是 “ 标志位 ” 、 “ 用户名 ” 、 “ 许可字段号 ” 、 “ 权限 ” ,数据和域完整性控制约束条件存放在同一个文件中。标志位为 2 表示安全性有关记录,各内容之间以中文句号间隔。 当读取安全性记录到表格中时,标志位非 2 的记录读入在缓存中,用户录入、修改、删除数据再次存盘时,再一并将缓存数据和表格数据写到参数表文件中。 带文 件型参数表的单记录维护部件例如单记录数据维护部件 3 、 7 ,在安装修改存盘、删除、录入存盘、查询等按钮时,根据当前用户对应安全性参数表中的权限来控制这些按钮的操作状态。 i 、 u 、 d 、 q 、 a 分别表示录入、修改、删除、查询、全部权限,相应的按钮若无权限则变成灰色不可点击。 2 )数据表型参数表 设计了 secureTool4DB 程序辅助设计数据表型参数表,同完整性控制设计程序一样,不同的是,在加载表中数据时,选择标志位为 2 的数据。 ( 3 )方案选择和效果 同完整性控制设计程序一样,运行效果如图 4-6 所示。 图 4-6 安全性控制程序运行效果图 4.3 数据校验 数据校验是完整性控制的体现,某些需要完整性控制的部件要求在用户对数据存盘前进行合法性校验,这种方式不仅友好而且让操作效率更高。 ( 1 )问题分析 数据校验的关键问题在于何时对文本框的数据进行校验。数据存盘之前的事件有按钮点击事件 actionPerform 和文本框失去焦点 focusLost 事件,其监听器均可以加入校验逻辑,但如果设计不好就会出现各种问题。例如在前期的设计中对 focusLost 添加操作时,校验不通过弹出提示框时,两个文本框同时暂时失去焦点,此时又会触发 focusLost 事件,进入死循环。另一个问题是,在当前文本框因校验不合格而再次聚焦时,在不同 jdk 版本下的处理事件触发的情况不一致。 ( 2 )解决方案 1 )方案一是在 focusLost 触发时执行校验数据代码 部件中对每个字段失去焦点时进行数据检查,若检查通过才允许进行下一个字段填写。通过实验证明,在 JDK1.6 和 JDK1.7 环境下调用 TextField 的 requestFocus 函数有差异,假定有 TextField jtf1 、 jtf2 ,当调用 jtf1 的 requestFocus ,焦点从 jtf2 转移到 jtf1 时,在前者环境下会同时触发 jtf1 和 jtf2 的 focusLost 事件。为解决这种问题,增加一个标志变量 isValid ,记录失去焦点的文本数据校验是否通过。可以通过 isTemporary 判断是否是临时事件(例如弹出提示窗导致的失去焦点事件就是临时事件),则每一个字段文本框的失去焦点函数的算法是: 1. 对暂时性事件不予处理,获取当前事件源 source 。 2. 判断前一个失去焦点的控件是否验证通过,若通过,则进行验证。 3. 若 source 验证失败,更改验证标识 isValid 为 false ,保存当前控件 preComp ,弹出框提示, source 获取焦点。 4. 若 source 验证通过,若 source 不为之前的 preComp ,更改 isValid 为 true 。 对带有参数表控制的部件添加一个 FocusAdaptor 的子类 FocusMonitor ,添加属性有 JTextField preComp=null 、 boolean isValid=true ,每次触发 FocusLost 时临时变量 source 赋值当前事件源,程序流程图如图 4-7 所示: 图 4-7 完整性验证算法流程图 2 )方案二是 actionPerform 触发时执行校验数据代码 为数据存盘按钮添加点击事件,在其 actionPerform 中添加处理,与方案一不同的是,此时的校验是针对所有字段数据的,如果发现有一个不合法,则让该字段文本框聚焦。算法要比方案一中简单的多。 ( 3 )方案选择和效果 在部件的实际设计中应用了方案一,原因是方案一中在每次填写完数据后就会自动校验,有较高的实时性,而在方案二中要填写完所有的的数据,到点击存盘时才会给出校验提示,若存在错误则须再次回到文本进行更改,操作不便捷。例如部件单记录维护部件 3 、 5 等实现了方案一,经过测试,可对任意带完整性控制和安全性控制的表进行数据校验。运行效果如图 4-8 所示。 图 4-8 带安全性验证的单记录维护部件运行效果图 4.4 权限控制 权限控制是安全性控制的体现,某些需要完整性控制的部件要求根据当前用户身份来限定其操作权限。为数据提供了安全保障。 ( 1 )问题分析 权限控制的关键技术在于如何对用户屏蔽某些无权访问的字段和相应的操作。部件中可以获取从菜单程序带过来的按钮集和字段号表以及安全参数表,要考虑的问题是通过对这些参数的处理,根据当前登录用户角色显示不同的视图,并且提供相应的操作。 ( 2 )解决方案 1 )目前比较可行的方案是,为每一个用户分配角色,在部件调用时,根据传入的安全性参数表结合当前用户角色进行控制,如图 4-9 所示,程序中的算法为: 1. 从数据库中获取当前用户角色集,读当前表指定的安全参数表数据。 2. 遍历用户角色集,若在安全参数表中出现,则记录该角色对应的可操作字段号和权限集 3. 取 2 中得到的可操作字段号和字段号表的交集,所得到的字段号表为实际要显示的字段号。 4. 遍历安装的按钮,从权限集中若能找到对应的权限则设置为可触发,否则置为灰色,不可使用。 图 4-9 安全性控制算法简单流程图 2 )经过分析提出另一种可行方案,把安全性参数表设计成公共的,参数表里面的字段有 “ 角色名 ” 、 “ 表名集 ” 、 “ 操作权限集 ” ,部件中要对当前表进行安全性控制,只需从这张全局表里面获取参数即可。如图 4-10 所示。 图 4-10 角色对表的操作权限示意图 ( 3 )方案选择和效果 在得出的解决方案中还存在一些遗留问题,例如,以上提出的方案一只是对角色对应的字段进行了显示与否的控制,对这些字段控制的分配的权限都是一样,如要么都可更改,要么都可删除等,而实际中出现这样一种需求,角色 a 要求对字段 1 有删除权限,角色 b 要求对字段 2 有更改权限,这就需要部件的权限控制精确到每一个字段,在当前的部件接口参数表中考虑了这个问题,但还没在任何部件设计中使用。如果每一张安全参数表属于一张数据表并对应个别部件,表的数量将大大增加,无疑增加了数据库的负担。而方案二提供的全局参数表可以很好被部件使用,但无法过滤字段号表,也无法对具体字段进行权限控制。 4.5 无按钮存盘 表格式维护部件 3 、 4 要求数据直接录入,而不需要存盘按钮,该功能类似于 sqlserver 的表格编辑器。这类部件提供直接对表格的编辑,操作简便,方便盲打,非常受欢迎。 ( 1 )问题分析 无按钮存盘的关键技术在于对鼠标事件的处理。当用户修改或添加完一条记录进入下一行编辑状态时,之前的行数据要进行校验后实时存盘,还要求其在存入数据库时反馈信息;行数据校验失败或者存盘异常则获取焦点;若是编辑最后一行数据,数据应该使用 insert 语句存盘,同时表格增加一行空数据供新数据录入;点击某单元格时,该单元格进入可编辑状态。 ( 2 )解决方案 在监听器中记录焦点离开的表格行号,程序流程如下: 1. 点击的行是原来选中的行或用户第一次点击行时,单元格进入可编辑状态。如果用户第一次点击的是最后一行,则表格新增一行空数据;点击的是其他行,则先前的行要存盘验证,在存盘验证之前该行依然选中。 2. 如果是最后一行数据,调用 insert 语句存盘;非最后一行数据存盘,则要检查关键字是否为新值,否则调用 update 语句存盘。如果关键字为新值则在提问并获允许后调用 insert 语句存盘。 3. 提示更新或录入数据的状态。 ( 3 )方案选择和效果 由于这类部件的所有数据操作都集中在鼠标点击事件里面,所有对鼠标监听器的设计是一个十分繁琐的过程,在设计期间也遇到过各种各样的问题,例如最初考虑过重写表格的单元格,用 TextField 来填充表格,然后为其添加 focusLost 事件,但到最后发现行不通,因为每一个单元格都需要添加该事件,包括表格动态增加的行。 表格式维护程序最终实现了上述方案,经过测试,适用于任意表。 4.6 并发冲突 在用部件构建 MIS 系统时,同一个部件可能会被调用多次,如果直接使用,就会产生命名冲突,部件之间相互影响,造成数据混乱。 ( 1 )问题分析 数据混乱的根本原因是多个相同的部件中用到了 static 类型的共享变量。例如, A 部件程序中定义有 static JFrame frame 属性,当 A 程序被多次调用时,窗口虽然能显示多个,但在内存中 frame 变量只有一份,对其中一个界面的操作会影响到另一个界面。 ( 2 )解决方案 第一种方案是动态传入窗口。在部件中创建一个 frame1 类,定义多个 static 型 JFrame 变量,同时初始化这些变量。 HDDMenuCreate 程序在构建 MIS 系统时,如果创建两个相同的部件,生成的菜单程序会自动从 frame1 中选择不同的窗口作为 means 方法的一个参数,这样,即使是相同的部件同时运行时,彼此拥有不同的窗口类,继而不会影响各自的交互。例如单记录维护部件 4 ,方法 means 的第二个参数 frame1 从菜单程序中传入。 第二种方案是建立相对独立的变量系统,尽量少用 static 变量。让部件类从 JFrame 继承,定义自身的静态引用 frame ,其余属性均为非静态变量。在部件的静态方法 means 中调用 frame 的构造方法,接下来调用 frame 的成员方法初始化属性 frame.initParameter(parameter) 以及界面 frame.initGUI() 。由于每次调用 means 方法时, frame 都会被分配一个实例,所以相同的部件之间不受影响。需要特别注意的是,在退出按钮的事件中应该调用当前类的隐藏方法,写法为 “ 类名 .this.dispose()” ,如果写成 “frame.dispose()” 就很可能出错,因为 frame 引用的很可能不是当前的实例。例如表格式维护部件 4 中定义了一个 static tableTenance4 frame , means 方法中执行: frame = new tableTenance4();frame.initParameter(parameter);frame.initGUI(); 语句,其中 initParameter 处理从菜单传入的参数, initGUI 负责初始化界面。示意图如图 4-11 所示。 图 4-11 部件调用示意图 ( 3 )方案选择和效果 目前设计的部件当中,表格式维护部件大多数用第二种方案实现,经过测试没有问题。其他部分部件用到了方案一,虽然解决了界面相互影响的问题,但隐藏的问题还有类变量共享的问题,例如同一个部件在维护不同的表时,表格数据本来就是不同的,而在第一种方案中将表格数据定义为 static 就不合理。还需要进行改善。 4.7 代码表变换 代码表是本部件设计中的重要内容,它是数据表某些字段内容和代码的参照表,在管理信息系统中,为了统计的需要,必须保证数据的规范化与标准化,依赖代码表系统实现与保证。数据表的某些字段使用代码表的前提是该字段取值有限,由具体文件所限定,为了统一地维护这些有限数据集合,需要专门建立表来管理。例如论文的评定等级分为 “ 优、良、中、差 ” 四个等级,可以为之建立等级代码表,在表中,等级对应代码分别为 “4,3,2,1” 。 代码表的优点有很多,由于代码多采用数字或字母混合数字的形式,因此对用户来说,输入更方便快捷。此外,使用代码进行运算,便于统计。例如数据库需要查询所有中等级别以上的论文,只需要连接代码表,在条件中加入 “where 等级代码 0” 即可。同时,代码隐藏了数据的具体含义,这一特性又可以运用在加密中。基于代码表带来诸多优点,管理系统必须提供代码应用的方便,我们许多部件中都加入了此功能。 ( 1 )问题分析 由于部件的通用性,应用代码表的前提是需要对其格式有一个规范化的约定,部件只有严格按照此约定才能识别与获取代码表数据。代码表设计好后需要考虑以下问题:无存盘按钮的表格式维护部件中需要对有代码表的字段进行转换,用户在填写数据时,只需填写代码即可,在数据存盘时,根据实际字段的需要再次进行转换;查询部件中的查询条件能根据代码表进行查询;单记录维护部件中带列表框或组合框的部件应该显示代码表内容,同时根据实际字段的需要转换。 ( 2 )解决方案 首先要约定,所有代码表必须在当前数据库中,命名统一为: A 、如果字段名中没有 “ 代码 ” 二字,则代码表名字为字段名 +“ 代码表 ” ,例如如果学生表中关于性别的字段名是 “ 性别 ” ,那么其代码表名字为 “ 性别代码表 ” 。 B 、如果字段名中有 “ 代码 ” 二字,那么代码表名为字段名 +“ 表 ” 。例如,如果学生表中关于性别的字段名是 “ 性别代码 ” ,那么代码表名字还是 “ 性别代码表 ” 。代码表中均为二个字段,一个是表示意义的字段名,例如性别、级别、职称、职务、类别 …… ,另一个是前面这个字段名加 “ 代码 ” 二字,例如:性别代码、级别代码、职称代码、职务代码、类别代码 …… ,连起来就是:性别代码表(性别,性别代码),级别代码表(级别,级别代码),职称代码表(职称,职称代码) …… 。要求数据表中字段名必须是这二个字段名中的一个。例如,学生表中关于性别的字段名要不是性别,要不是性别代码,不得是其他名字。这样,解决查询问题的算法: 1. 找到所有包含有 “ 代码表 ” 字样的数据表名集合。 2. 检查数据表中所有字段中有没有 “ 字段名包含在上述集合 ” 的字段,或者, “ 字段名 +“ 代码 ” 包含在上述集合 ” 的字段。如果有就建立相关代码表和数据表的连接,首先在 FROM 子句中将该代码表加进去。 3. 检查数据表中和代码表中同名字段(根据前面约定,二个表一定有一个字段是同名的),在 WHERE 子句中加连接条件,主表名 . 字段名 = 代码表名 . 字段名。其中的字段名就是同名的字段名。例如,学生表中用性别做字段名,那么代码表中也用性别做连接条件。如过学生表中用性别代码做字段名,那么代码表中也用性别代码做连接条件。 4. 在 SELECT 子句中加输入要求:代码表名 . 另一字段名,这里的另一字段名是指代码表中非连接字段的另一个字段名。例如,连接字段是性别,那么输出中加性别代码;如果连接字段是性别代码,那么输出中加性别。 5. 完成全部链接后再加用户要求的其他查询条件。 解决无按钮存盘表格式维护部件中代码切换算法为: 1. 找到所有包含有 “ 代码表 ” 字样的数据表名集合。 2. 检查数据表中所有字段中有没有 “ 字段名包含在上述集合 ” 的字段,或者, “ 字段名 +“ 代码 ” 包含在上述集合 ” 的字段,若有则转 3 3. 判断字段是否以 “ 代码 ” 二字结尾,若不是则转 4 4. 对字段中的数据进行代码替换,即将代码显示到界面,同时用 flag 和列名 中。 3. 检查字典表中所有字段名和列名 中有没有相同的,如果有,就将列名 相应项改为标签名。 4. 在程序中,只要涉及条件提示、表格列标题都从列名 中取值,只要涉及具体 SQL 语句及其他表达式都从列名 中取值 ( 3 )方案选择和效果 所有需要用到字典表的部件在实现上述方案时测试良好,需要注意的是:在生成菜单程序中填表名时不要填字典表的名字(只填有关数据表与代码表的名字,并且按连接顺序填写)。如果考虑字典表的部件,自动在当前数据库中检查有没有字典表,如果有就考虑字典表的问题。如果填字典表名字,在连接时将出现麻烦。 目前这样的方案是基于本系统希望做到易学易操作,设计时能简单就简单,因此全系统共用一个字典表。在真正商业化运行时或许会遇到问题,例如一词多意问题,如果在不同运用中需要不同的翻译,目前这个方案就无法适应了。建议在参数表中增加一个参数:字典表名。不同的调用可以采用不同的字典表,那样适应性就更强了。 4.9 其他问题及解决方案 4.9.1 适应性与健壮性 适应性是指部件在不同环境下自动调整自身以适应这种改变的能力。比较典型的是数据库连接。为了适应不同数据库,部件中提供了多种数据库驱动加载方式,包括 sqlserver 、 oracle 、 Mysql 、 access 、 JavaDB 、 DB2 、 Sybase ,并且建立了这些 DBMS 与 JAVA 语言数据类型对照表。部件内部对数据库的操作采用标准化的 sql 语句,数据处理与操作过程中统一变成 JAVA 数据类型,尽量利用 JAVA 程序处理与变换,兼容性大大提高。 健壮性是指部件对于规范要求以外的输入情况的处理能力。用户在对系统输入数据时,难免会有不合法的数据,这时候程序若处理不好,就会产生错误,导致无法正常运行。例如单记录维护部件 1 ,当用户插入一条空记录时,控件中的值在程序中获取为空字符串,若直接插入数据库很可能抛出数据库异常,为了防止此种情况发生,我们在程序中对其处理如下: 1. 根据字段类型表,取出每一个字段的类型。 2. 判断当前字段类型,填充相应的默认值,对应关系如表 4-2 所示。 表 4-2 数据类型对照表 datetime date time money real, float, double Char, nchar text 2001-01-010:00:00 2001-01-01 00:00:00 0.0000 0.00 空串 空串 经过处理后,空数据就会形成一条带默认值的记录,在插入数据库时就不会报格式错了。 3. 在容易发生错误位置,例如读写表格数据等文章,采用条件语句检查空值、加设陷阱等检查与处理异常,可以极大减少出错的几率。但是,同样作为学习版,这样的措施采取的仍然不充分,如果做商业应用还需要进一步加强。 4.9.2 数据同步 这里的所谓数据同步主要是指程序运行内存中的缓存数据与数据库中的数据一致的问题。在部件中,特别是表格式维护部件,用户看到的表格中呈现的数据应与实际数据库数据保持一致。 Java 中提供了 JTable 和 DefaultTableModel 组件,当 DefaultTableModel 中的数据改变时, JTable 调用重回方法后,表格中的数据会即时更新。用户在对数据进行 update 操作时,同时对内存中的数据结构进行更新,然后重新设置 DefaultTableModel ,这样就保证了数据的一致性。 处理流程简单描述如图 4-13 所示。 图 4-13 update 语句执行流程图 例如表格(单记录混合)式维护部件 10 ,变量 “currentRow” 记录选中的当前行号, “ 表格数据 ” 存放表格数据, “ 表格行数 ” 记录当前数据记录数, “dtm” 是表格模型, “table” 为表格控件, “totalItems” 状态行中的记录总数,处理过程可以概括为: 1 )判断当前是否有选中行,否则返回。 2 )执行删除语句,若不出错则往下执行,否则转到异常处理提示出错。 3 )更新表格数据,表格行数减 1 ,更新数据模型,表格重绘,选中行号置为 -1 。 简单程序流程图如图 4-14 所示。 图 4-14 表格式维护部件删除数据流程图 结 论 基于 JAVA 的通用 MIS 部件库的设计已经初步完成,前述关于部件的设计全都已经实现,利用部件库还对某单位学生信息管理系统、某单位工资管理系统进行了改建,在系统变更过程中几乎没有增加额外代码,开发维护效率极大提高,证明了部件技术的研究价值。 本文对该部件库进行了分析,还发现许多值得研究的问题,例如:事务处理问题、更多方面的数据处理问题、探索其他领域部件实现的可能性问题、通用部件的形式化定义问题、部件商业化应用可能遇到的问题、部件在广域网中应用的问题等。需要进一步研究各类应用系统的模块,总结共同点,设计面向更广的、面向社会的、具有商业意义的通用部件。 JAVA 学习版部件库已经在网上公开发布(地址: 202.114.177.212/sjk 与 http://bujianku.com ),其中还存在若干缺陷与 bug ,例如同一部件在多种需求、多个场合调用出现冲突与运行异常的问题等,还需要研究更理想的解决方案等。希望集合大家的共同智慧,把对软件复用的研究重心转移到部件中来,加快推动软件工业化生产的进程。 参考文献 廖旭军 . 基于 JAVA 组件的报表自动生成系统的研究与实现 . 电子科技大学 ,2010 程学先 . 数据库系统原理与应用 . 北京 : 清华啊大学出版社 ,2014-02 於丹 . 梅宏教授谈软件复用的发展现状 . 微电脑世界 ,2000 桑大勇、王瑛、刘西洋、蔡希尧 . 一种多侧面的重用部件存储模型 . 微电子学与计算机 1999 程学先 . 软部件技术为什么成为独家技术 . 管理观察 ,2009 刘峰、郑滔 . 应用集成原理与技术 . 北京 : 清华大学出版社 ,2011.06 杨芙清 . 软件复用及相关技术 . 计算机科学 ,1999 杨芙清、梅宏、李克勤 . 软件复用与软件构件技术 . 电子学报 ,1999.1 程学先 . 基于 VFP 部件库最小系统网络版研究 . 科学网 http://blog.sciencenet.cn/home.php?mod=spaceuid=2551do=blogid=230140 程学先 . 通用软部件应用范围与边界 . 科学网 http://blog.sciencenet.cn/blog-2551-4643.html M.H.Lee,Model-based reasoning:a principled approach for software engineering , Software-Concepts Tools(2000)19:179-189,2000 Springe 一 erlag. Nenad Medividonic and Richard N.Taylor,Member,IEEE Computer Society,A Classification and Comparison Framework for Software Architecture Description Languages ,IEEE Transactions on Software Engineering.Vol.26,No.1,January 2000. 致 谢 岁月流逝,转眼临近毕业,这短暂的四年生活刻骨铭心,也正是这几年让我真正地学会了怎么样去学习,去更好的面对将来的社会,让我的人生之路有了新的轨迹。 首先我要感谢我的导师 ______ ,给予我学习部件的机会。在参与部件设计的这一年多以来,我的编程能力大大提高。老师在百忙之中抽时间耐心地给我讲解技术上的知识,并毫无保留地将研究心得和关键技术传授给我,常常写程序忙到深夜,老师的敬业爱岗和无私奉献精神是值得我敬佩和学习的。在此致以我最诚挚的感谢。 其次,我要感谢大学这几年来的任课老师,是他们教会了我专业知识,在我遇到困难气馁的时候给予我希望和鼓励。 同时,我要感谢我的家人,有他们的教育才会有我的今天,是他们在背后默默地支持着我。 另外,我要借此机会感谢身边的同学和朋友,他们帮助过我许多,在我前行的路上一直伴随左右,特别是 539 的室友们。 一个人的力量是有限的,我们的成功和成就来自于他人的帮助和关心。最后感谢各位领导和老师不吝指导和批评。
个人分类: 生活点滴|4241 次阅读|2 个评论
推荐二篇学士论文
热度 3 求新 2014-10-21 20:01
推荐二篇学士论文 《管理信息系统软部件库设计关键技术探讨》和《导入、导出部件技术研究》是申报2014年湖北省优秀论文的二篇文章,由于评审专家给分太低,未能中选。但我们认为这是二篇难得的有价值的好文章,特借此博客平台向大家推荐。 从基于VFP的软部件库到基于JAVA的软部件库,存在许多难解的困难问题,我们花了12年时间来解决这些问题,终于达到预期目标并予公开发布,提供自由下载。上述二篇文章介绍了基于JAVA的软部件库的关键问题与疑难问题的所在及我们的解决办法,例如系统自生成方法,基于和数据库联系的数组自适应建立由文本框、标签、组合框、图片控件、按钮等组成的表单的方法,由表格为主控件的应用按钮与不用按钮实现数据维护的表单设计方法,各种各样数据导入导出等数据通信程序设计方法,……等。希望对于正在学习JAVA语言或学习信息系统设计的老师与学生们、对从事软件复用及软件生产线研究的学者与专家们能有所帮助、有所启发。
个人分类: 生活点滴|3005 次阅读|3 个评论
就发展软部件技术寻求支持
求新 2011-1-12 23:03
管理信息系统软部件是我们设计的软件高复用性产品,它的目标是能不编程或尽可能地少编程,只通过参数设置就建成实际应用系统,对于提高软件设计效率、提高软件质量,特别是提高软件适应性、大大减少软件维护费用,减少因软件维护与扩展对管理工作的影响具有特别重要的意义与价值。我们对其具有完全知识产权。是我国一个有别于世界各国的新的解决方案,是一条新的道路,在这一领域开展研究对于发展我国软件产业具有意义。 我们于2001年研制完成基于Visual FoxPro的部件库最小系统最早作品,2003到2004年先后公开发布部件库最小系统最初版、2.0版与3.0版,2007年发布4.0版,2009年设计并发布部件库最小系统网络版。2005年完成对基于JAVA的部件关键技术的研究,设计了几个基本的基于JAVA的管理信息系统软部件,由湖北省教育厅组织鉴定,评价达到世界先进水平。 根据上述实践过程,我们认为,本技术具有极大价值,具有研究意义,希望能有具有实力的企业或研究机构给以支持,希望能在以下课题中选择某一课题方向或某几个方向发展,特向社会呼吁合作,如有意向,希能和我们联系。 1)对本系统补充、完善、改进界面,促其商业化。 2)研究利用VFP为工具的开发平台,自动生成JAVA或JSP的文本,进而快速建立应用系统。 3)设计基于JAVA的部件库系统。(我们已经将本系统某些部件移植生成JAVA版本,解决了基于JAVA设计部件库系统的某些比较困难的技术问题,该项目已于2005年由湖北省教育厅组织了鉴定,评价达到世界先进水平)。 4)为某一数据库管理系统研究配套的内含式开发语言,实现建模-建库-建立系统自动化一条龙。 5) 研究具有网络远程调用的部件工具,使能让任何网络用户借用远程部件,构成自己的应用系统。
个人分类: 生活点滴|4080 次阅读|0 个评论
VFP部件库最小系统网络版使用说明书
求新 2009-10-15 22:00
前言 软部件是为了复用而设计的由一个到多个对象或构件组合而成、面向最终系统集成的程序模块,属于系统级构件。它通过动态定义子模式的方法进一步提高数据逻辑独立性,实现数据操作界面对数据结构的独立,程序有更强的共享性、复用性与自适应性,一个部件模块可同时为多个应用服务,使用它们构建系统时常常无须编写代码或只需编写少量代码;数据在表一级的结构改变可以不要求改变程序,甚至无须再编译!它们也是一种开发平台或模板,可以帮助我们通过各种裁剪与拼装,通过各种适应性修改、扩展性修改、装饰性修改快速设计更有实际应用系统特色的领域构件。将极有利于提高系统设计效率与软件质量,降低软件开发、维护与扩展的成本。非计算机专业的专业技术人员也能很容易的设计、使用与维护管理信息系统。 部件库最小系统是按照如上思想设计的试验产品。使用该软件可以无需进入具体开发语言的命令窗口、无须知道具体开发语言的基本知识就能使用各种可以在Windows系统中使用的数据库,设计相应的应用系统。由于建立系统时一般不需要编码,也不需要编译,只要先装一个数据库,建立基本数据表,建立ODBC数据源,安装VFP6.0,再进入本最小系统,定义环境,通过选择参数建立系统驱动菜单,系统就能建立与使用,系统可以拥有多种数据录入、修改、删除、查询、导入、导出、关系运算、交叉表等多种统计计算与报表、一般的单记录形式报表、表格式报表、标签类报表、直线拟合线性回归分析与绘图、各种统计图、多种财务统计计算等程序模块;可以自动加入代码表使用、字典表使用、完整性控制、安全性控制、派生数据计算与录入等功能。建成系统只需要配置数量极少的十几个参数(只当需要使用代码、要求完整性控制与安全性控制、要求派生数据自动计算填入及对控件位置大小有特殊要求时才需要按系统提供的辅助程序生成或填入其他一些附加内容的数据)就能完成,因此效率高,易学易用。 如果构成系统的模块都具有即插即用特性,当需求在一定范围内改变时,不需要修改程序,甚至不需要重新编译,更进而在更特殊情况下不需要修改参数就能自动适应环境与需求的变化,那么系统将极易维护、极易扩展,有极强适应性,软件维护费用将大大减少,软件可用性大大提高,软件生命会大大延长,会促使管理信息系统的使用更加普及。也将有利于真正进入软件生产工业化的时代。 由于得不到国家支持,本套软件还很不完备,还不具备商业价值,还没有全面推广的基础。但是,我们希望的是能有一套软件极大地覆盖应用需求,使得软件生产工业化的目标真正得以实现,那就要求对于社会目前已有的各种应用系统都能利用部件搭建。显然,那是需要一个十分庞大的部件库才有可能实现的。但如果部件库过于庞大,将很不好用,很不好学习,甚至无法实现。我们的试验是希望找到一系列方法,使得这个部件库尽可能小。小到可以让人接受,既能满足绝大部分应用需求,又易学易用使用方便。我们的部件基于对数据库的操作展开,结合分析社会上各种应用中界面的需求与实现情况,使得一个部件能包含多种功能,并且易于通过参数设置实现性能的改变,能比较容易地派生成多种不同应用的模块,可以使部件总量减少,具有一定的理论研究价值。 该系统也是数据库等信息类课程优秀实验平台,学生如果能联系多个实际应用系统设计与操作去学习,可以在三个以上大型数据库平台上操作,可以顺应实践-理论-实践的认识模式,将使理论不再抽象,学习目的性更强,有效提高学习效果;并且使视野开阔,克服社会生活知识贫乏的先天缺陷,在活生生的应用实际中认识实际管理系统的构成,对实际系统的功能、性能、界面会建立感性认识,是很有意义的。如果学生在课程设计或毕业设计时能运用部件搭建原型系统,再用其他语言实现,会大大提高作品质量。这些都对提高教学质量,强化学生素质具有意义。 考虑到教学需要,本系统作为与《数据库原理与技术》、《管理信息系统及其开发》等书教学配套的实验平台,增加了部分辅助工具,例如可以从工具类部件8、9、查询部件7中看到实际运行过程中的SQL语句的构成,可以直接书写SQL语句传到远程数据库执行等。 目前,本系统已在武汉大学东湖分校计算机学院试用,教学时首先介绍使用方法,介绍建模知识,结合理论教学内容实际建立应用系统,了解有关理论在实践中的意义,在课程设计中要求学生结合需求分析建模并用本系统构建原型系统证明,在全体讨论通过后再用其他语言实现。这一教学过程大大提高了教学效果,证明该软件对教学有极好促进作用,学生一下接触3个数据库操作,了解各种数据库的共性与个性,促进了对数据库与软件工程、管理系统概念与理论的深入理解与真正掌握,极大强化动手能力。学生反映这软件太傻瓜、太简单;许多问题是他们无论如何想不到的,他们不知道,一些实际应用系统还需要考虑这么多的问题。工必良于器,实践证明优秀的教学工具是提高教学质量所必须的,而且是其他方法无法取代的。 目录 一、利用该套部件快速设计应用系统步骤 1.设计数据表结构,在远程数据库中建表 2. 建立文件夹 3.修改环境参数 4.设计系统的模块结构 5.设定参数建立系统 6.接口参数设计一例 7. 运行系统 二、部分接口参数的意义 1.主要接口参数的意义 2.关于某些问题的说明 三、主要部件功能与使用方法 1. 单表单记录维护部件 2. 表格式维护部件 3. 一对多数据维护部件 4. 查询部件 5. 关系运算部件 6. 数据处理与统计类部件 7.数据通信与导入导出部件 8.打印格式文件生成辅助工具 9.其他工具类部件 10.系统管理与维护类部件 结束语 一、利用该套部件快速设计应用系统步骤 1.设计数据表结构,在远程数据库中建表 首先需要安装所需要的数据库,如果安装SQL Server,身份验证设置选混合模式,不必设置密码。在数据库中建立一个数据库实例。利用操作系统(在Windows系统中通过我的电脑控制面板管理工具数据源)设置ODBC数据源。注意连接所建立的数据库实例, 在数据库中试建数据表。因为使用VFP操作,VFP中要求字段名宽度不超过10个字符,只能以汉字或英文字符打头,字段名只能由汉字或英文字符或数字或下划线构成,因此使用本系统时,远程表中字段起名也必须遵从上述规定(字段名宽度不超过10个字符,只能以汉字或英文字符打头,字段名只能由汉字或英文字符或数字或下划线构成)。如果不便,可以建立字典表进行变换处理(本系统中大多数部件都提供了借字典表变换标识的功能)。 需要注意的是,有些数据库有些数据类型不能使用。例如SQL Server中不得有uniqueidenti、timestamp,在Access、Oracle等数据库中不得使用自动编号类型等,因此在使用某些数据库系统时需要发现这样的数据类型,并回避使用这些类型。为减少摸索的时间消耗,建议只使用与VFP中允许的数据类型相容的数据类型:字符类型、数值类型(包括浮点类型)、货币类型、整型、双精度类型、日期时间型、日期型、逻辑类型、文本类型、图形类型。 2. 建立文件夹 建立自己的工作文件夹,并将部件库最小系统网络版内的全部文件拷贝到该文件夹中。 例如:建立名为chen的文件夹,再将部件库最小系统网络版文件夹中全部文件拷贝到该文件夹中(操作步骤为: 1)进入部件库最小系统网络版文件夹、选全部、复制。2)进入你的文件夹(例如chen),将贴在剪切板上的前述文件粘贴到你的文件夹中)。 3.修改环境参数 双击0环境设置.EXE程序,可以填写的内容意义如下: 标题1 指系统运行时封面中欲显示的应用系统的名字 单位名1 指系统运行时封面中欲显示的应用单位的名字或作者单位名字,可以不填 著作者名 指系统运行时封面中欲显示的著作者名字,可以不填 封面画名 指系统运行时封面上的背景画的文件名,应当为BMP文件,在当前文件夹中必须存在该文件。 数据库系统 指应用系统所基于的DBMS名称,目前供选的有Oracle9i或Oracle10g或更高版本;SQL Server2000或更高版本、Access2003或更高版本。 数据源名 指ODBC数据源名称,必须先在所安装的数据库系统中建立一个数据库实例,再利用操作系统(在Windows系统中通过我的电脑控制面板管理工具数据源)进行设置。 用户标识 指在安装远程数据库时定义的用户标识。对于Oracle数据库必须设置(例如SYSTEM),对于其他数据库,根据情况设置或不设置 连接口令 指在安装远程数据库时定义的用户密码。对于Oracle数据库必须设置,对于其他数据库,根据情况设置或不设置 例如: 标题1 工资管理系统 著作者名 王 平 封面画名 gongzi.bmp 数据库系统 选择 SQL Server 数据源名 SQL1 (假设已经通过我的电脑控制面板管理工具数据源建立了名为SQL1的数据源) 4.设计系统的模块结构 如果采用水平下拉菜单控制,执行程序(系统模块)的菜单项只能处在叶节点位置上,在该位置应选择具体部件名称;如果采用目录树控制结构,所有节点都可以兼做控制节点与操作程序模块。在设计时,最好能确定充当该模块的部件所需要的参数名字与参数内容。 5.设定参数建立系统 双击0部件驱动菜单生成.EXE程序,按设计好的系统的模块结构建立菜单的目录树结构。方法是:先在左上角新节点名栏中输入主菜单项名称,按建立第一级菜单按钮,将发现在左边菜单框内新生了一个主节点;再在新节点名栏输入第二个主菜单项名称,按建立第一级菜单按钮;,建立顶级菜单框架(如果是水平下拉菜单,建立的是水平下拉菜单的水平菜单部分)。 再在新节点名栏输入第二级某个子菜单项名称,点第一级菜单中某一项,将见到提问:是否在该菜单项下建下一级菜单,回答是后,将见到已建立下一级菜单。以同样方法建立所有水平菜单项下的下一级菜单框架。 如果采用水平下拉菜单控制,选第二级菜单的某一项的名字,再类似于接口参数输入界面中的输入输入有关参数,对于第二级菜单的每一项,都必须输入一个部件的名字和一个远程表的名字。如果熟悉VFP,也可以另建VFP的程序,在部件名称中可以填写一句以DO打头的命令,例如DO A1(注意限填一句且必须是DO打头)。另外,如果是PRG文件,在设计完毕时要选择VFP主菜单中的菜单项程序中的编译,生成FXP文件,否则不被执行。 6.接口参数设计一例 在数据表名称中输入:工资 。工资应当是远程数据库中某数据表的名字,该表必须存在,该数据不可省缺! 在关键字中保持空,不输入 。变量关键字所填内容在修改与删除操作中起作用,一般必须输入,并且应当与数据库中定义的关键字相容。如果在参数中没有给定关键字,部件程序将默认第一个字段为关键字。 本系统中除单记录数据维护部件1、单记录数据维护部件5、表格式数据维护部件1外的其他数据维护部件做录入程序使用时,要求远程数据库中不设关键字,否则录入操作将失败。前面所提三个部件对于是否在数据库中定义关键字没有要求。当做修改、删除、查询等使用时,对是否在数据库中定义关键字没有要求。 在接口参数表序号中输入:1 。接口参数表序号中填的表名默认为接口参数表1,该表中接口序号与这里定义的号数相同的那些项在本次调用中起作用。该表将影响代码表的使用、影响数据完整性控制、影响数据安全性控制、影响数据的互操作、影响文本字段与通用字段等字段表现形式。该项可以为空,意味不使用代码表及其他控制。对于不同调用,这个号可以不同,不同序号中的参数记录在本次调用中不起作用。 在打印格式文件名称中保持空,不输入 。许多部件中都集成了打印功能,如果需要打印报表的功能且已经设计了打印格式文件,可在该参数中填写预先设计好的打印格式文件的名称。对于某些数据维护部件,也可以不填打印格式文件名称,只选留相关打印按钮,也可以打印报表,将自动生成与表名同名的一个表格格式的打印格式文件并控制打印。 在字段号表中输入:1,3,5,7,11,15,19,20 。对于不同操作,需要不同的视图,这不仅是为了操作的方便,也是达到安全性控制的一个手段。本部件系统中的部件允许定义视图中涉及的字段的字段号来实现对视图的要求。所输入的数字串中每一个数字表示一个字段在数据表中的顺序号,程序将只对该视图中有关字段的数据进行操作。该参数中如果不填数据、保持为空,意味对全部字段操作。但是正确的设计应当对每一次调用都按需要选择字段,不要令其为空。 在留下按钮号中保持空,不输入 。一个部件包含多种功能,在应用时再根据需要保留部分功能,使既可以满足不同用户对界面的需求,也可以减少部件库中部件总量。本系统中所有部件都设计了多个按钮,使集成多项功能,可以通过选择按钮实现不同功能组合,满足不同应用需求。在留下按钮号中填的数据就用来选择在使用该部件时提供给用户的按钮,也就是提供给用户的功能。该参数中如果不填数据、保持为空,意味保留全部按钮。但正确的设计应当对每一次调用都按需要选择按钮,不要令其为空。 在相关表名中保持空,不输入 。如果操作涉及二个以上的表,例如选择一对多表的数据维护或查询,在主表外还要定义子表名称。可以在该栏中定义子表名称。如果是查询、统计、打印等程序,子表可能为多个,其名字也皆在此填入,注意名与名之间用逗号分隔。特别注意,本系统中部件都是对远程表操作的,因此所有相关表都必须是远程表,不能填入本地表名。在下一个版本中将允许同时使用远程表与本地表。 在外关键字中保持空,不输入 。外关键字中填的数据为主表与第一子表相连接的字段名,可以为一个或多个,通常字段名称应当相同。如果填了相关表名,该项必须填,不得令其为空。 说明:以上只对部分参数进行了说明,详细内容见本帮助程序文件的其他部分。以上。前内容为操作说明,。后的内容为注释。 7. 运行系统 退出0部件驱动菜单生成.EXE程序。在退出时将自动进行水平下拉菜单的编译操作,并试运行。注意点选退出菜单项退出试运行。 在以上操作完成后,应用系统已经自动建立。双击0项目.exe,可以进入水平下拉菜单控制的应用系统运行程序。双击0项目3.exe,进入目录树菜单控制的应用系统运行程序。 注意水平下拉菜单控制的系统的菜单程序是在运行0部件驱动菜单生成.EXE程序的退出程序时自动建立的,因此,建议不要通过对部件库驱动菜单表.DBF表自行在VFP环境中作直接修改,一定要利用0部件驱动菜单生成.EXE程序修改系统结构,否则不能修改水平下拉菜单控制的应用系统。 在运行时需要注意二个问题:如果运行出现异常,会出现无法从VFP退出的故障,这时要用ctre+alt+del进入任务管理器,强迫结束有关VFP的进程。 在运行时常常进入数据表浏览界面,有时只能按esc键才能退出该界面。 使用本系统,无论是运行最小系统还是自己组建系统、书写菜单程序,都要设置接口参数,其中最主要的参变量及其意义再特别说明如下: 二、部分接口参数的意义 1.主要接口参数的意义 (1)表名:表示本程序当前要维护的表的表的名字。 (2)接口参数表序号:在不同调用或调用不同部件时可能有不同接口设置要求,用该序号区分不同的设置。接口参数表记录你关于使用代码的要求、关于数据域完整性控制要求、安全性控制要求、派生数据的计算公式、在数据维护部件与多表数据维护部件中文本框等控件的位置与字号与字体与控件大小等数据。 (3)打印报表格式文件名:如果预先准备了打印格式文件,在这一句中说明打印报表格式文件的名字。在使用各种数据维护部件、某些查询部件时,如果在接口参数中给定了打印格式文件名,可以在进行查询(或不进行查询而对全表)按格式打印报表。如果接口参数中未给定打印格式文件名,将进入表格式报表格式生成程序,自动建立打印格式文件并打印报表,这样建立的打印报表将和主数据表同名。 (4)字段号表:给不同人或为不同用途调用同一部件时需要建立各不相同的视图、显示与操作不同字段的数据,主要目的是方便操作,也表现安全性。如果只要求显示一个表中部分字段的数据,该句说明拟在屏幕上显示的各个字段在设计结构时的顺序号。号与号之间要求用英文逗号分隔。如果为空表示选全部字段。采用字段号而不采用字段名是加强数据逻辑独立性,也为了一条语句总长度不超过254个字符。 数据维护部件1到4在界面中使用了组合框,其字段号表的字段号之前可以加a、b、c、d字样,表示该字段用组合框显示。其中,a表示只显示代码表,只能选择不能接受键盘的输入。b表示可以显示代码表,如果未登记代码表也可以显示已经输入到表中的该字段的数据(我们称之为历史数据),只能选择不能接受键盘的输入。c表示只显示代码表,可以利用鼠标选择也能接受键盘的输入。d表示可以显示代码表,如果未登记代码表也可以历史数据,可以利用鼠标选择也能选择不能接受键盘的输入。 在使用查询类部件时表示要求提供给用户选择的供组成条件表达式的那些字段的字段号列表。在使用查询类部件1与3时,只允许也必须输入1个字段的号或名(也可以是表达式或函数),后面可以加关系符(、=、、=、=、、$等)(可以不加)。 例如: 2= 学号 学号 SUM(平均成绩)= 这四个都是允许的输入方法。 查询类部件3是二条件查询程序,使用时还要求在变量字段号表0中设置另一个条件的1个字段的号或名或表达式,可以加也可以不加。使用查询类部件3也可以各输入多个字段号的表或空着不输,那么将提供组合框让用户选择字段名。 (5)留下按钮号表:许多工作都要求多个功能互相补充才能进行,也为了满足不同人不同应用的口味或需要,为了减少部件总数量,每个部件都设计了许多功能,各功能主要通过按钮体现,每次调用如果只需要其中部分功能、只要求使用部分按钮,可以在其后引号内输入拟在屏幕上显示的各个按钮的顺序号。如果为空表示选全部按钮。 (6)相关表名:如果涉及查询统计或多表维护的表单,除主表外还有其他表称为从表。使用一对多数据维护程序填且只允许填一个从表。使用多表组合查询、数据传送、统计图、生成打印格式文件等可以填0到多个从表,要求填多个从表时表名间以英文逗号分隔,且后面的表与前面的各表间至少有一个字段名相同,作为连接的字段名在设计表结构时要尽量放在各字段前面。 (7)外关键字:主从二表共有的字段、一般同时是主表的关键字。 (8)关键字1:从表关键字。只在使用一对多数据维护表单之前,且有一个关键字是数字类型,要求在添加新记录时自动按最大值加1后自动填入。在有此要求时应设置。在使用按关键字维护与多层次数据维护部件时需要填入关键字与分层字段名称。 (9)字段号表1:在查询类部件1到4、6、7和数据传送部件4到7中可以送入输出要求。可以是字段号表,中间可以加字段名,可以是表达式,可以使用如avg(字段名)、max(字段名)、min(字段名)、count(字段名)这样的函数(其中字段名表示要填具体的一个字段名称)。如果有上面五种函数之一,必须给分组字段,给的方法是在最后加一个冒号,后面跟分组字段。 例如: 学号,姓名,班级,7,sum(平均成绩):专业,班级 意义是按条件查询的记录中显示学号,姓名,班级,第7个字段及按专业与班级分组之后每组平均成绩之和。 2.关于某些问题的说明 (1)接口参数中用接口参数表序号区分不同调用,一个系统内所有调用所需要的不同的参数的数据放到一个表内,目的的方便管理。 (2)几乎所有部件内按钮都可以供选择与组合,使满足不同人、不同工作的口味与需要。在设置接口参数时,为方便操作与设计,如果选定了部件,点上按钮号表文本框,就可发现在列表框中列出了该部件所使用的所有按钮名称及序号,用鼠标点击就能按名字选择按钮,得到按钮号表。 (3)数据维护部件界面一般都由程序按固定的算法计算与安排,不需要用户考虑。但准备了数据维护部件2允许全部字段位置由用户安排。用户可以利用0最小系统.exe程序中接口参数表维护中定义字段位置程序辅助设置接口参数,之后再运行时就按接口参数表中设置安排排版。 (4)在数据域完整性控制中有时要求数据只在一个值域中选定,管理信息系统为了实现规范化与标准化也要求某些数据只能从预先选定的值域中选择输入,其实现方法普遍采用代码表。界面中则主要依靠组合框或列表框作为字段的显示控件。本系统中数据维护部件普遍加有该项功能。使用的方法是首先建立代码表(均为VFP本地表),再在参数表中注册,就可以使用了。一般使用时是界面中有一个共用的列表框,当某一个字段控件获得焦点(鼠标点中该控件)时,如果该字段存在代码表且已注册,列表框中就显示代码表内容供点选。如果未注册代码表,则显示历史数据供点选。单记录数据维护部件1到4及表格式数据维护部件1采用组合框实现该功能,定义方法是在字段号表中有关字段的字段号数字前加a或b或c或d,就表示用组合框表现字段,具体意义见下面有关内容。 (5)考虑到与数据库中设定相适应使提高运行效率,也考虑到局部要求不一定与全局要求一致,所有维护部件需要在入口参数中指定关键字,使实现实体完整性保护。 (6)查询1、查询3为使用较多但变化较大的部件。查询的内容可能涉及一个字段或二个字段、也可能是与字段相关的表达式,甚至涉及聚集函数,允许在字段号表中定义一个字段名或一个函数式或一个表达式。例如查询1的字段号表的写法中学号=、学号$、3=、学号、3,SUM(平均成绩)=、SUM(平均成绩)等都是允许的(如果是表达式或函数,必须用字段名,不能用字段号)。 查询2为二条件查询,需要在字段号表、字段号表0中分别如上给定一个条件。 查询的输出要求与分组字段(如果涉及聚集函数,必须定义分组字段)在字段号表1中设定。输出要求可以是字段号表,也可以是Select语句中能操作的表达式或函数,用逗号分隔。输出要求与分组字段名(如果需要设分组字段名称)间用冒号分隔。 格式例如:1,3,平均成绩,SUM(平均成绩):学号 意义是:输出第一、三字段、平均成绩字段内容和按学号分组分组后每组平均成绩之和等数据。其中冒号后是分组字段名称,只要有统计要求的都必须给分组字段名称。 (7)为了使界面风格可变,所有按钮的显示标签可设定。方法是在留下按钮号表中数字后都可加冒号再加新标签内容。注意该句总长不超过254个字符。 (8)为了实现进行数据处理的需求,设计了一个数据处理部件,允许在接口参数中规定所选择的处理公式或处理函数,允许用户自定义处理函数。 三、主要部件功能与使用方法 1. 单表单记录维护部件 单表单记录维护部件每次在桌面上仅显示一条记录的有关数据,可用于对数据表完成数据添加、修改、删除、对任意单个字段作等值查询、对任意单个字段作某一种条件查询、如果事先设计了打印格式文件将提供按固定格式打印报表、按任意字段索引排序等等操作。界面构成除文本框、编辑框、按钮外可以使用组合框。如果要求使用组合框,要在接口参数中字段号表的字段号前加a、b、c或d,详细内容见关于各参数意义的说明。本程序可以施加域完整性与实体完整性控制、安全性控制、可以要求使用代码表,提供从代码表或历史数据用鼠标点选录入的手段,可以要求自动进行派生数据的计算与录入。以上都通过填写接口参数表1来进行。可以执行最小系统,利用其中接口参数表维护有关程序填写或修改其内容。使用前一般要予定数据表名称与接口参数表序号。其全体显示的字体与字号、备注字段与通用字段显示大小与位置均可以设置,于上面一样设置接口参数表1中相关内容实现。这类部件用途: 可以作为数据输入模块、修改程序、删除程序、综合数据维护模块、条件查询程序、排序、批处理、打印程序模块等使用。对于有备注字段或通用字段或界面中字段较多总面积较大或希望一条条对记录进行处理的需求比较适合。 一般作为数据输入模块使用时常选择:之前录入、之后录入、清屏、浏览等按钮协同工作。 作为修改程序、删除程序等使用时常选择:第一条、上一条、下一条、末一条、查询、条件查询、浏览、浏览存盘、第?条、索引、再次索引及各种修改或删除按钮协同工作。 作综合数据维护模块则综合选择以上按钮协同工作。 作查询程序时常选择:第一条、上一条、下一条、末一条、查询、条件查询、浏览、第?条等按钮协同工作。 作排序时可只选择排序按钮,也可以选择索引、再次索引等协同工作。 作批处理模块时类似于修改使用。 作打印程序模块等使用类似于查询。加转EXCEL或打印予览或打印按钮。 如果未给定打印格式文件,当按各部件的打印予览按钮时,将首先帮你建立与数据表名加格式文件为名的打印格式文件,并进入打印予览操作。在建立过程中,提供选择需要打印的字段及定义每一拦宽度的方便。 单表单记录维护部件功能: 数据维护部件1到4使用组合框提供代码或历史数据辅助录入帮助,其他部件利用统一的列表框完成该功能,统一使用列表框可以更充分地发挥鼠标的作用。 数据维护部件1可以定义全部字段的字体、字号,定义备注字段与通用字段的字体、字号、宽度、高度、距左边距离与到顶距离,排版时尽量按接口参数给定的字段顺序排列。其中宽度、高度、距左边距离与到顶距离都按5号字标准给定数据,排版时再根据所要求的字体字号变化。 数据维护部件2可以定义全部字段的字体、字号、宽度、高度、距左边距离与到顶距离,排版时完全按接口参数给定的字段顺序排列。可以在第一次运行前给定部分字段的字体、字号、宽度、高度、距左边距离与到顶距离,运行时程序会自动安排其他字段的位置,然后,程序员可以修改接口参数表1相应序号下的这些位置与表现的参数,定稿后再运行就会按修改好后的数据排版。这样操作会比较麻烦,但界面变化的余地要大得多。 数据维护部件3直接对数据表操作,修改数据无需按存盘按钮即可完成,用作修改数据的程序模块操作比较快捷,但要注意操作时不要出错。 数据维护部件4排版方式简单,按数据表字段顺序排版,可以定义备注字段与通用字段的宽度、高度。 数据维护部件5到10排版方式与数据维护部件4相同,都采用统一的列表框提供代码数据或历史数据选择录入的方便。 数据维护部件6为直接对数据表操作。 数据维护部件7允许对接口参数中关键字中给定的关键字进行按位模糊查找到有关记录后点击选中该记录再进入维护操作。注意一定要定义关键字! 数据维护部件8允许对接口参数中关键字1中给定的二个字段名用列表框提供全部数值供选择,用户选中其中一个后,该记录会显示出来供修改。注意一定要定义关键字1! 数据维护部件9允许对接口参数中关键字1中给定的带有层次特性的多个字段名用目录树形式提供全部数值供选择,用户选中其中一个后,该记录会显示出来供修改。 注意一定要定义关键字1! 数据维护部件10为简单接口部件,不提供按钮选择功能。 如果要求使用代码表,要首先设计并生成代码表,然后在接口参数表1中加入有关说明,包括:代码表名(包含路径)、代码表别名(不包含路径)、代码字段名、内容字段名、加入字段名(目前程序中要求加入字段名与代码字段名及内容字段名中的某一个相同),而且要很实际数据表中相关字段的名称相同。 数据维护部件1与数据维护部件5进行数据录入的方式和其他部件不同,采取将SQL语句发送到远程执行的方法,使得在数据库中定义了关键字的表也能进行录入操作(其他部件许多未能解决这一问题)。但在远程数据库中关于日期类型字段常量的表示方法各不相同,目前只设计了部分方法,使得这二个部件在作录入模块时不能适应各种数据库的要求。目前已通过测试的有Oracle9i系统、Oracle10g系统、SQL Server2000系统、SQL Server2003系统、与Access2003系统。将在下一版中解决该问题。 2. 表格式维护部件 表格式维护部件以表格形式显示表中数据并提供数据维护手段。 调用时在菜单项的过程中写入的程序的格式与数据维护部件相同,只是部件名称不同。 其用途:可以作为数据输入模块、修改程序、删除程序、综合数据维护模块、条件查询程序、排序、打印程序模块等使用。对于有备注字段或通用字段或界面中字段较多总面积较大的情况不适合。如果希望次显示多条记录供处理,选择本类部件比较适合。 一般作为数据输入模块使用时常选择:之前录入、之后录入等按钮协同工作。 作为修改程序、删除程序等使用时常选择:查询、条件查询、索引、再次索引及各种存盘或删除按钮协同工作。 作查询程序时常选择:查询、条件查询等按钮协同工作。 作排序时可只选择排序按钮,也可以选择索引、再次索引等协同工作。 作打印程序模块等使用类似于查询。加转EXCEL或打印予览或打印按钮。 有关部件概况:本系统提供了6个表格式数据维护部件。都可以提供三种显示界面,通过按钮操作变换。 表格式数据维护部件1与2具有自适应功能,每写最后一条数据时会自动产生新行,因此无须添加按钮就能不断进行录入操作。在数据输入到表格中后立即自动存盘,因此也不用存盘按钮。可以用鼠标拖动使对连续一片的记录加删除记号。其他完整性保护、安全性保护、派生数据处理和单记录方式的数据维护部件相同。1和2的区别在于关于代码数据与历史数据帮助录入功能的实现方法不同,1是靠弹出的组合框,2是靠所有字段共用的列表框。当有了代码表,并且在接口参数表中进行了登记(利用最小系统的接口参数表维护菜单项下代码表登记进行操作)的情况下,如果在变量字段号表中列出了要显示的字段号,在要求有代码的字段的字段号前加a或b或c或d,然后运行表格式数据维护部件1,当焦点落到有代码字段上时,将弹出组合框,用户可以用鼠标选择合适的代码录入。当误操作使表内出现关键字重复记录时,表格式数据维护部件1往往可以用来删除这样的记录。 特别注意:为了避免录入数据中有空值,使之后操作出现不便甚至错误,建议做录入用时,选择表的全部字段,即在留下按钮号一栏中保持空白。需要将录入调用与修改、删除调用区分开来。 如果未给定打印格式文件,当按以上二部件的打印予览按钮时,将首先帮你建立与数据表名加格式文件为名的打印格式文件,并进入打印予览操作。在建立过程中,提供选择需要打印的字段及定义每一拦宽度的方便。 表格式数据维护部件3在修改完一条记录后必须按存盘按钮才能保存,是唯一可以用来修改关键字值的部件,其用途一般不做录入用,主要用来做可能要求修改关键字值的操作,但速度较慢,且要求操作存盘后退出运行,需要重新进入系统。 表格式数据维护部件4数据源直接绑定数据表,因此也无须存盘按钮,但与1和2不同,1,2设计有临时表,因此功能可以设计得强一些,便于实施实体完整性控制。该部件使用时要先按添加按钮产生一个空行后才能录入。 表格式数据维护部件5未使用接口参数表,其他与4相同。 表格式数据维护部件6允许对接口参数中关键字1中给定的带有层次特性的多个字段名用目录树形式提供全部数值供选择,用户选中其中一个后,该记录会显示出来供修改。 注意一定要定义关键字1! 表格式数据维护部件7是对本地表数据维护程序,无需入口参数,数据表名称在运行时通过按钮在本地表目录中选择给定。 3. 一对多数据维护部件 一对多数据维护部件在界面上同时显示具有一对多关系的二个数据表的数据,可以对二个表进行录入、修改、删除、查询等操作。 在操作时提供参照完整性保护。方法是:先在主表中选定一条记录,当在子表中添加一条新记录时,会自动将主表中与子表中也有的同名字段的数据取出,填写到主表中;如果在主表中删除一条记录,回提问是否同时删除字表中外关键字值相同的记录,如果回答是,将删除字表中相关记录;如果修改主表中和子表外关键字同名字段的数据,将同时按同样数据修改子表中的数据。 提供关联操作:当在主表中选择一条记录时,子表中将显示外关键字值相同的所有记录,提供修改操作方便。 其用途:在提供参照完整性保护和关联操作的情况下对主表、子表进行数据维护操作与查询操作。与单表操作的不同点在于:1、当在主表中选择一条记录时。子表中应当只显示外关键字值相同的相关记录数据供修改操作。2、当子表中录入新记录时,其外关键字数据应当等于主表中当前记录中外关键字的数据。3、当从主表中删除一条记录时,应当提示是否同时删除子表中相关联的数据,以保证参照完整性。当用户确认后,应将子表中相关联的记录一并删除。4、当修改主表中数据且修改了外关键字的值时应当将子表中外关键字的值修改为同一值。但是,一般外关键字多为子表关键字的一部分,当远程表不允许修改关键字的情况下,这一操作无法完成,因此本系统多表维护部件普遍未加该功能,统一规定不得修改关键字与外关键字的值。如果用户有特别需要,可以另外设计。 对主表的操作一般提供录入、修改、删除、查询、指针移动等功能。 对子表的操作一般提供录入、修改、删除、查询、索引、打印、转EXCEL、浏览等功能。 如果主表字段较少,需要较大子表空间,而且子表字段也不多,希望能一次显示多条记录,采用多表数据维护部件1与2较好。如果有比较多的字段需要代码表或历史数据支持,或希望多采用鼠标帮助操作,以多表数据维护部件2较好。 如果子表中存在文本、图片等内容,以选择多表数据维护部件3比较好。 多表数据维护部件4能直观看到二个数据表之间关联情况,当需要展示的二个表的字段数都不多时,可以选择使用多表数据维护部件4。该部件未附对主表作数据维护操作的功能。 如果不要求对主表作维护操作,主表数据只是子表数据的引导,使用多表数据维护部件5也比较方便。 有关部件功能性能概况:多表数据维护部件1以单记录式界面显示主表数据并允许对之做维护操作。以表格形式提供对子表数据维护的界面。某些数据需要采用组合框显示其代码表,让用户通过鼠标点击从代码表中选择代码或代码代表的内容录入到数据表中,可以保证数据的规范性、标准性、一致性,为统计操作的准确性打下基础,也可以加快录入速度。同时,某些数据可以从已经录入过的数据(称为历史数据)中选择录入,也用组合框显示去掉重复值的这些数据供用户选择。 多表数据维护部件2以类似于多表数据维护部件1,但是不采用组合框,而是采用统一的列表框显示相关字段的代码表或历史记录,以单记录式界面显示主表数据并允许对之做维护操作。以表格形式提供对子表数据维护的界面。 多表数据维护部件3以单记录式界面显示主表数据并允许对之做维护操作。同样以单记录式界面提供对子表数据维护的操作。主表与子表各采用统一的列表框显示相关字段的代码表或历史记录中的数据供选择录入。 多表数据维护部件4同时用表格形式提供对主表显示与对子表数据维护的界面,不提供对主表的维护操作。在主表数据指针改变时从表中数据相应改变。当从表添加新记录时从主表中取出当前记录中同名字段的数据自动添加到从表中,使加快录入速度。 多表数据维护部件5以列表框显示主表部分属性数据,不提供对主表的维护操作。同时以表格形式显示从表中数据并提供数据维护手段。在主表数据指针改变时从表中数据相应改变。当从表添加新记录时从主表中取出当前记录中同名字段的数据自动添加到从表中,使加快录入速度。如果预定了关键字1,将自动在添加新记录时将该字段最大值加1后填入表中,即自动编写关键字,如果未定义变量关键字1,将不做此操作,对运行无影响。 多表数据维护部件6的目的是为了某些快速录入的实现,可以根据二个表的数据先生成一个空表,在其中只填少数字段的数据,在其他表中能找到的数据自动录入到新表中,再转录入远程表。例如填写某门课的成绩,成绩表中有字段:学号、课号、分数等字段。需要根据学生表中的班级与课程表中的课名建立一个包括学号、课号与分数的空表,其中学号从主表(学生表)中根据班级查到该班级全部学生后取出学号录入新表、课号要根据课名从课程表中查到后填入新表,只留下分数数据需要用户录入,用户根据成绩单向新生成的这个临时表录入分数数据,再转录入到成绩表中,能提高操作速度。调用方法:输入的参数有:数据表名称、相关表名称、外关键字、关键字1、字段号表、字段号表1、字段号表0。其中,数据表名称、相关表名称、外关键字、关键字1、字段号表1 等的意义与输入格式与其他部件保持一致,只是相关表名称可以输入二个表的名称,之间用逗号分隔。前一个是接受最终输入的子表名(例如成绩表),后一个是另一相关子表名,例如课程表或课程代码表。要求在主表中必须有一到多个字段与第一子表中1到多个字段同名,这些字段的数据以后可以自动放到新表中。在第2子表中也必须有一到多个字段与第一子表中1到多个字段同名,这些字段的数据以后也将被自动放到新表中。在字段号表中填写主表中的字段号或字段名,可以是1个,也可以是2个,最多2个,之间用逗号分隔。填生成新表的某一字段数据的依据,例如班级,将根据这1或2个字段所选值查主表中满足匹配条件的1或多个字段的所有数据(例如学号)自动填到新表中。字段号表0中填写第2子表中的字段名,可以是1个,也可以是2个,最多2个,之间用逗号分隔。用户选择这些字段的值作为生成新表的例外一些字段数据的依据,例如课名,将根据这1或2个字段所选值((本部件规定只取一个值)例如课号)填入新表,上述自动填入的数据在之后录入过程中不可修改,这样可以加快录入速度。只有非上述数据的数据需要用户手工录入(例如分数数据),用户可以只填写分数数据及其他另外二表中非同名字段的数据。最后按添加式存盘再全部加到远程表(例如成绩表)中。 多表数据维护部件7的目的是为了快速修改子表中的数据,可以根据主表部分字段与子表部分字段建立索引目录树,当用户选择某目录时,程序自动调出相关子表中的记录在窗口中显示,用户可直接在窗口中修改,完成数据维护的工作。输入的参数有:数据表名称、相关表名称、外关键字、关键字1、字段号表、字段号表1、字段号表0等。要求将列入目录树的主表字段的字段号写到字段号表中(可以为空,那么和单表目录树结构部件功能相同),将列入目录树的子表字段的字段号写到字段号表0中,其他参数意义与填入内容与其他部件相同。构成目录项的标识的是有关字段的值,该值不得以数字打头,如果实际数据以数字打头,本程序叫自动在数字前按层次 加A、B、C等;在不同主枝上的子枝名字如果相同,之后会合并到稍前的主枝中,使搜索路径出现改变,本程序为解决此问题,将自动在相同值后面加数字区分;构成目录树的字段类型要求为字符类型,本程序将自动将整型、数值型、日期时间型改为字符型数据放入目录树,因此,本程序允许构建目录树的字段限4种类型:字符型、整型、数值型、日期时间型。 4. 查询部件 查询是对数据各类操作都需要进行的操作,其效率对系统工作效率影响极大,需要提供各种方便用户查找的界面。本系统提供了可以由程序员预先定义一个查询表达式的单条件查询、由程序员预先定义二个查询表达式的二条件查询,有关条件如果是一个,写到变量字段号表中,如果是二个,另一个写到变量字段号表0中。(以上一个到二个条件可以是字段名的条件,例如: 学号 或 学号= (如果后面有关系符,界面中将不出现供选择关系符的组合框。以下同)。 也可以是表达式,例如: 固资+活资 或 固资+活资= 可以是聚集函数,例如: sum(应发工资) 或 sum(应发工资)= 。注意如果有聚集函数,必须要给定分组字段,方法是在字段号表1中以冒号加字段名的形式给出。例如 :部门号 表示按部门号分组,再根据各组应发工资的和形成查询条件。 注意,对于单条件的情况,在字段号表中只能写一个字段名,或一个表达式。对于二条件的情况,在字段号表与字段号表0中可以写一个字段名或一个表达式,也可以写多个字段名(用逗号分隔,但其中不得有表达式),否则出错。 提供单查询部件则需要用户先选择字段,再选择关系符,再进行查询。可以设定对输出内容的要求,方法是在变量字段号表1中以字段号、字段名、表达式形式列出要求。例如 1,3,4,固资,7,10,固资+活资 字段号、字段名、表达式可以混用,也可以有聚集函数,但其后必须给出分组字段。 例如: 姓名,部门名,SUM(固资),SUM(应发):部门号 为了满足预先难以确定的查询要求,设计了从简单到复杂的多个组合查询程序,使用这些程序时,要求用户选择字段、选择关系符,再输入查询值,一个一个条件放到专门准备的编辑框中,用户可以自行修改,再进行查询。 查询部件用途:按用户需要根据各种各样的条件对数据库中数据进行查询,对文本进行检索,并按用户要求输出结果。 提供对数据库中数据按照单条件、二条件、多条件的查询,可以根据字段值、表达式、函数式、字段的子项、分组统计数据等构成条件式再进行查询,并将查询结果输出出来。查询结果可以是字段、表达式、函数式,也可以是分组统计结果。有些部件可以用于对文本的检索。有些部件可以对数据表中数据做统计操作。 一般都以列表方式显示结果,还提供打印、转存文件、转EXCEL等功能。有些部件可以转单记录维护程序,通过比较复杂的查询找到有关数据再转入数据维护操作。 有关查询部件功能与性能:查询部件1为由程序员预先定义查询表达式的单条件查询,有关条件写到变量字段号表中,可以是一个字段名,也可以是一个表达式;后面都可以加 、、=、=、、=、$、!$ 等符号。输出要求写到字段号表1中。 查询部件2为单条件查询。用户先选择字段,再选关系符,再进行查询。输出要求写到字段号表1中。 查询部件3由程序员预先定义查询表达式的二条件查询,有关条件写到变量字段号表和字段号表0中,各可以是一个字段名或一个表达式;后面都可以加 、、=、=、、=、$、!$ 等符号。也可以是由逗号分隔的多个字段号,后面不得有关系符。二个条件间可以组合成与或或的关系。输出要求写到字段号表1中。 查询部件4为简单的多条件组合查询。用户先选择字段,再选关系符,输入查询值,按加入条件的按钮,再选下一个条件,条件组合完成后,可以修改条件,再进行查询。可以将输出要求写到字段号表1中,如果不给要求,表示按全部字段输出。 查询部件5为较复杂的多条件组合查询。用户先选择字段,再选关系符,输入查询值,按加入条件的按钮,再选下一个条件,条件组合完成后,可以修改条件,再选择输出内容,包括生成涉及聚集函数的条件(一定要选分组字段),再进行查询。输出要求不能预先在接口中给出。 查询部件6到9为多表查询,将首先将列在数据表名称中的表、写到相关表名称中的各个表及在接口参数表中登记了的代码表关联到一起,在如前面类似的界面中提供查询操作。其中查询部件6为单条件查询。 查询部件7为完全SQL语句组合查询程序,也可以作SQL语言SELECT语句练习工具使用,输出为一到多个原数据表经连接之后的表的子集,输出要求与分组条件写到字段号表中,其中输出要求可以用字段号、可以用字段名、也可以用函数式(函数式与表达式中只能用字段名表示字段,不能用字段号),如果输出内容中有聚集函数或有分组条件时,必须给分组字段名,分组字段名放在输出要求之后,用冒号与前面分开。分组字段也可以有多个,由逗号分开。可以预给查询条件表达式,条件表达式要求写在字段号表1中。还可以预给分组后按组值构成的条件表达式,分组条件表达式要求写在字段号表0中。在执行程序过程中可以临时修改输出要求、分组字段、各条件表达式,再执行,程序中给了相应的帮助,使达到学习SQL语言的目的。注意,中间所使用的表名只能是远程表的视图或本地表名,远程表视图名由远程表名加视图二字构成。还要注意,表与表之间必须有一个同名字段,将根据该字段建立连接,在条件语句中必须有连接子句。如果在输出要求、条件子句等中出现同名字段名,之前必须加表或视图名,且与字段名间用逗号分隔。本程序不能使用代码表,不能根据非数据表中的字段进行查询。 查询部件8为与查询部件5类似的组合查询。 查询部件9为较复杂的查询,可以设置分组后的分组条件(条件式列在Having子句中)。关于分组条件的操作是:先选定字段,再选聚集函数,写入分组数据,加入到右下角编辑框中,再选择与加入下一条件。 查询部件10、11对备注类字段中文本进行检索式查询。在文本框中,按目前各搜索网站同样方法输入检索关键字,再进行查询。 查询部件11是简单的检索式查询,在接口参数中不给接口参数表序号,不涉及接口参数表的使用。 查询部件4到9的操作虽然麻烦,但可以适应各中查询需要,使用更灵活。不过,对操作者有较高的要求。 5. 关系运算部件 关系运算部件计算二个表之间的并集、差、交集、商,结果一般放在本地表中,有些存在转加到远程表的需求。除关系运算部件1只需要数据表名称外,其他四个部件要求定义的参数都是数据表名称(第1表名称)与相关表名称(第2表名称),此外,可以选择字段号与按钮号。 求二个表之间的并集、差、交集时要求二表字段结构相同,包括字段数量一样、字段名相同,字段的属性也要相同。本系统部件考虑到处理异构数据的需要,允许存在不同,将对本地临时表经过变换后再运算,但结果一般限存放到本地表中。 求二个表之间的商时要求二表有一到多个字段结构相同,包括字段名相同,字段的属性也要相同。作为除数的表就由这些字段构成(假如用Z代表),要求没有重复值。作为被除数的表除了有这些字段外(假如用Y代表),还有一到多个字段(假如用X代表)。在表1中X的数据存在重复,可以按其值分组,二表的商就由这些字段构成。求商的方法:对表1按X部分一组组进行分析,如果X的某一组记录的Y部分的数据全部包含Z部分的数据,就将该组X部分的字段或字段组的值加入到商表之中。 本系统包括5个关系运算部件。关系运算部件1处理比较常见的一类求交问题:在一个数据表中查找并去掉记录值完全重复的记录。本部件也允许选择一部分字段,查找这部分字段值相重复的记录。操作时先要求做查找操作,查找成功后再按物理删除按钮删除。 关系运算部件2求二表并集,实际是将二表中不重复的记录合并到一个表中,为统计操作服务。操作时可以指定一个存放结果集的本地新表,便于进一步处理。 关系运算部件3求二表商。主要运算按钮包括表1除以表2结果到本地新表按钮和按选中分组字段求商到本地新表按钮,前者自动求二表中同名同类型字段为求商字段(Y部分),表1中其余字段为分组字段(X部分)。表1中每组分组字段的值在满足除法条件时取做商的值。因此当使用该按钮求商时可以不选择分组字段与求商字段。但是,当选择了分组与求商字段后,按选择的字段求商。第二个按钮可以处理求商字段(Y部分)字段名相同但类型和其他属性不相同的求商问题,处理时会自动找出二表中(或二表选定的字段中)同名字段,如果发现其中存在字段属性不同,将自动按表1的字段属性修改表2相关字段的属性,再进行求商运算。考虑到还可能有字段名不相同的问题及只取表中部分记录进行运算的问题,提供了修改表1与表2结构的二个按钮,可以临时修改二个表的结构及按条件修改记录数据后再行操作。可以通过选择查询按钮及浏览按钮临时对表进行选择操作,注意如果既要修改字段属性又要选择记录,应先作前一操作,再将结构变换完毕后再作选择操作。以上提到的修改字段名或字段属性、选择记录等均只修改本地临时表,不影响远程表结构,可以借远程视图及一个恢复按钮将本地临时表结构恢复到开始状态。 关系运算部件4求二表差,实际是将第1表中存在而第2表中不存在的记录取出到一个本地新表中,或将第2表中存在而第1表中不存在的记录取出追加到远程第1表中。 关系运算部件5求二表交集,实际是将二表中相同的记录取出到一个本地新表中,可以选择部分字段求交。 关系运算部件2、4、5允许将某些结果传送到远程新表中,传送前需要建立新表。其中对于不同数据库,系统中设计了一个数据类型.dbf表,如果是Oracle、SQL Server、Access之外的数据库,需要选择其上某一种结构,如果皆不合适,可以修改数据类型.dbf表的内容使相适应。 该组部件可以提供数据库关系代数辅助教学工具之用。 6. 数据处理与统计类部件 关于数据表中数据的处理,除了查询与比较规范的报表外,还常有一些涉及数据统计的操作。本系统提供的本系列部件用于数据统计及打印操作。可对数据表中若干列进行求和、求平均、求最大、求最小、求记录条数或分组求和、求平均、求最大、求最小、求记录条数等操作;按某一列或某二列数据分组后求各组统计数据的操作。对统计结果显示打印或形成统计图形输出。调用多表产生的打印格式文件进行打印操作。 具体而言:数据处理部件完成记录横向数据各种处理操作,提供120多种处理程序,包括统计计算、数据预置、批处理、求函数值等。还可以自己添加新的程序,借助选择与投影界面进行数据处理。操作时首先选择记录筛选条件与定义输出要求,再选择输出结果保存位置,选择计算公式或程序,在进行处理并观察结果。用户可以在foxuser1.dbf中添加新程序,其程序名用V打头,就可以将新的处理加入到系统中,可以不断补充,使系统功能日益加强。 统计打印部件1生成交叉表及表现交叉表的柱面图、圆饼图、折线图、金三角图等。操作时,先选择记录筛选条件,不做选择意味全部记录。再选择字段,要求选择三个字段,第一个字段数据决定交叉表的纵向分组,第二个字段数据决定交叉表的横向分组,第三个字段要求为数值类型字段,按纵向分组与横向分组决定其位置(也可以为字符类型,但其中数据必须全为十进制数据)。每一组只取一个数据,如果纵向分组与横向分组数据相同的记录有多个,将只取最后一个列入表中。选择字段后,按统计按钮,将产生交叉统计表;如果按统计图按钮,先显示交叉表,再进入统计图界面,可以用柱面图、圆饼图、折线图、金三角图等表现第二个字段与第三个字段间数据关系,在图的左边列出了第一个字段各大组数据,当选某一组,再选择图形种类,就更换显示该大组的一个统计图。也可以选择全表柱面图、圆饼图、折线图,将显示所有各大组统计图。统计表可以转EXCEL再处理,也允许根据交叉统计表自动生成打印格式文件,并组织打印。 统计打印部件6允许先对每一大组中各组数据求和、求平均值、求最大值、求最小值、求记录条数之后再进行类似与统计打印部件1相同的操作。操作时需要选择统计类型,另外,第三个数据只能是数值类型。 统计打印部件2用来产生一元线性回归图形。操作时同样先选定记录选择条件,不做选择意味全部记录。再选择字段,要求选择二个字段,第一个为纵向字段,对应二维图形的纵坐标,要求必须是数值类型数据,也允许是字符类型数据,但要求其内容全由十进制数据构成,即能通过字符到数值的转换变成数值类型。第二个为横向字段,对应二维图形的横坐标,要求必须是数值类型数据或日期类型数据,也允许是字符类型数据,同样要求其内容全由十进制数据构成,即能通过字符到数值的转换变成数值类型。有些数值数据太大或太小,需要将之乘上10 的负N次方才能比较清楚地得到图形,在选择字段后,可以输入N的值。然后,按显示折线图按钮可以显示折线图;按一元线性回归按钮可以显示原数据点的分布、显示所得到的一元线性回归直线、显示一元线性回归直线方程及方均误差数。如果全是数值类型数据,允许输入横坐标数据,进而计算并显示予测的纵坐标值。 统计打印部件3在已经设计了打印格式文件的情况下,调用打印格式文件,执行打印予览或打印操作。可以将打印内容转文件保存。可以查看与临时修改欲打印的数据。可以进入修改打印格式文件的界面,对格式文件进行修改。 统计打印部件4对数据列进行求小计、分组平均、分组最大、分组最小、分组记录条数、分组方差、分组标准偏差及算术平均值的标准偏差,同时可以计算各相应总计等值。可以一次对多个字段处理。最多可按三个字段数据分组。可以输出明细带小计,也可以只输出小计与总计。可以输出最后一组的小计,也可以输出关于三级分组每组的小计。可以将输出结果转EXCEL或产生一个格式文件后进入打印程序。操作时首先选择分组字段,再选择记录筛选条件,再选择显示字段与统计字段。当用鼠标在表中点某一行时,有关行号会自动列入显示字段与统计字段框中(请注意将不需要的字段删除)。最后选择公式,再按相应按钮就可以完成统计操作。 统计打印部件5同样是对数据列进行求小计、分组平均、分组最大、分组最小、分组记录条数,同时可以计算各相应总计等值。可以一次对多个字段处理。最多可按三个字段数据分组。与统计打印部件4不同之处第1是没加入记录筛选程序,第2是不同统计类可以在一个表内显示。可以将输出结果转EXCEL或产生一个格式文件后进入打印程序或转存另一个数据表中。操作时分别选择分组字段、求和字段、求平均字段、求最大字段、求最小字段、求记录条数字段,之后按相应按钮就可以完成统计操作。 统计打印部件7类似于统计打印部件6,根据横、纵二个字段数据进行多层次分组,分析第三个数值字段数据与它们的关系,得到交叉表。 统计打印部件均具有打印报表功能,其中统计打印部件4与6具有根据模板建立打印格式文件的功能,可以预先设计字典表,表名要求以统计类字典表打头。统计打印部件6要求字段有:字段原数据、新数据二个字段。统计打印部件4要求有:字段原数据、新数据、字段名、类型等4个字段。其中,统计打印部件6的字段原数据一列填原数据表中将转为字段名的分组字段各组的值,新数据填新的对应变化的字段名,长度不超过10个字符。统计打印部件4中字段名中填当前变化的数据的字段名,必须是某个分组字段中的字段名,字段原数据填该字段原数据值,新数据填新的对应变化的数据,类型中填统计类型,例如:小计、平均、最大、最小、记录数、总计、总平均、总最大、总最小、总条数等。采用模板方式使打印格式固定,使类似于财务的损益表的报表可以容易地建立。 7.数据通信与导入导出部件 应用系统常常需要和其他系统、其他程序交换数据,本系列部件完成这项工作,包括从其他文件或数据表中导入数据,或将本系统数据表中数据导出到文件或数据表中。数据传送时,常常需要对多表预先联接、限定数据范围(包括按某条件选择记录及按某条件选择列),某些操作还要求改变数据属性(例如字段名称、数据类型与数据宽度等,有些要求按预先设计的字典表导入或导出)。文件的数据格式常见的有SDF、DELIMITED、EXCEL、HTML与自定义格式。 SDF 文件是一种 ASCII 文本文件,记录有固定长度(根据所定义的数据表格式),并且以回车和换行符结尾,各字段不分隔开。文件的默认扩展名为 .TXT。 DELIMITED文件是 ASCII 文本文件,文件中每条记录以回车和换行符结尾。各字段内容默认地由逗号分开,字符字段值还需要用引号括上。例如:Smith, 9999999, TELEPHONE。 自定义格式也是 ASCII 文本文件,文件中每条记录以回车和换行符结尾。各记录起始符与结束符及各字段内容分隔符可以由用户指定。 数据导入时常有:添加方式(原有记录保持不变,再增加导入的记录)、复盖方式(原有记录删除后增加导入的记录)与替换方式(根据关键字相同的条件用导入数据去修改原表数据)。 数据传送部件1实现从EXCEL文件导入数据,处理时要求先将原EXCEL文件中数据转到记事本中再导入,当数据类型较多时,这是一种可靠的方法。 数据传送部件2实现从一个数据表或视图中取出数据再导入到另外一表中,要区分传送的是否包括备注类型字段数据。字段名与数据类型如果一致,可以简单地实现导入,否则要先设计好字典表,再利用字典表完成逻辑异构数据的导入。操作时先选择源数据表与目的数据表,再定义字段的对应关系(字段名相同的可以按查相同字段名字段按钮自动列入)。再规定记录筛选条件,选择导入方式(添加方式、复盖方式与替换方式),再按相应按钮实现导入。 数据传送部件3从TXT文件或EXCEL文件导入数据,TXT文件格式可以为SDF、DELIMITED、或自定义格式。首先选择TXT或EXCEL文件名及目的文件名,再选择对应字段名称,选择导入方式,如果是自定义格式,要输入记录开始符、结束符与字段间分隔符,然后按相应按钮实现导入。如果从EXCEL文件导入,要求EXCEL文件为EXCEL95格式,而且最好全是字符类型数据(如果有非字符类型数据,常需要先按字符类型导入后再变换)。 数据传送部件4实现将当前系统中数据导出到另一个数据表中。可以按原结构导出,也可以改变字段名后导出,还可以改变数据类型与属性后导出。 数据传送部件5将当前系统中数据导出到文件中,文件类型包括TXT结构的SDF、DELIMITED、HTML与自定义格式及生成EXCEL文件。可以规定导出记录筛选条件。 数据传送部件6实现将当前系统中一到多个表联接数据导出到另一个数据表中。可以按原结构导出,也可以通过一个字典表改变字段名后导出,还可以改变数据类型与属性后导出。程序中提供关于字典表维护的方便。 数据传送部件7将当前系统中一到多个表联接数据导出到文件中,文件类型包括TXT结构的SDF、DELIMITED、HTML与自定义格式及生成EXCEL文件。可以规定导出记录筛选条件。 8.打印格式文件生成辅助工具 开发工具类部件提供打印格式文件生成程序,用于生成各种格式的打印报表的格式文件,其特点是提供了修改元素位置参数、通过数字调整生成界面与通过可视化环境手工修改界面等二种格式生成方式。功能包括:自动生成供生成打印格式文件的打印格式数据表、修改打印格式数据表、生成打印格式文件、进入可视化格式文件修改界面、重生成打印格式文件,多表组合查询与按格式打印等。 单记录式报表部件名为工具类部件6。 有三种格式:1、打印表每页一条记录,所有字段分为若干列,格式例如: 学号 20001220姓名王平性别男 出生日期1980/03/23班级200001电话88120302 操作时先输入标题、选字体字号,选输出的字段名,再定列数,列数以字段(标签加字段值)为单位。例如上例中列数为三。选完后按不加线条《生成表格式格式》按钮或加线条《生成表格式格式》按钮。按后要求选:打印一页或打印所有记录,但每次只打印一条记录,再下面会告知一个打印页的宽度,并显示当前各列的宽度。可以在表中修改各列宽度。最后产生打印用格式文件,该文件名为所定打印格式文件名加扩展名frx。在资源管理器的文件目录树中双击该文件名,可以进入格式文件修改程序。用户可以对初步成型的打印格式文件进一步修改,再正式加入到系统中。 2、生成整齐但不规范的表,每行总宽度相同,但列数不相同。操作时无需定列数,直接按生成非规则格式按钮就可以生成。 3、生成自定义单记录打印格式文件,每行总宽度与列数都由用户修改确定。选择相应按钮后将列出当前每一行每一列宽度,用户可以修改,然后生成。 自动生成打印格式初步格式数据表文件,该文件将有关字段及其位置简单分布在格式文件中以备修改。其内容包括:1、行号:每一个控件在打印格式文件中排在第几行。2、列号:每一个控件在打印格式文件中排在某行内第几列。3、左边距:该控件距离打印区左边的距离,以英寸为单位,1英寸等于2.52厘米,在打印格式文件生成器中标尺的单位为英寸。4、到顶距离:该控件距离打印区顶部的距离。5、长度或宽度:该控件的宽度,对于线条指线的长度。6、高度:该控件的高度。7、字号:字的大小,对于线条指线的宽度。8、上下有线条:填有或无,说明该控件上下是否加线条。9、横线纵线:对于线条用于表示其方向。10、内容:对于标签,填标签的内容;对字段变量或内存变量填变量的名字。11、所在带区:填该控件排布的位置在那一带区。A、标题带区每页打印一次;B、细节带区每条记录打印一次;C、注脚各带区在有分组情况下每组打印一次;D、总结带区全表完时打印一次。12、公式:A、对于标签,保持为空;B、对字段变量或内存变量填变量的名字,也可以填由字段或常量构成的表达式。 通常以上生成的界面都很不令人满意,可以先手工将过宽的元素宽度人为地减少。程序将自动按设定宽度决定宽度,注意在修改每列宽度时兼顾全列、全行的宽度。 表格式报表格式文件生成部件部件名为工具类部件5。 功能是根据输出的字段的要求生成表格式的报表格式文件,提供三种格式:1、明细表格:每条记录占据一行,打印满足组合查询条件的全部记录。(如果未定查询条件,将打印表中的全部记录)2、包括明细,并对部分字段总计的表格式报表,作总计的字段允许是内容由数字字符构成的字符类型数据。操作时必须选择作总计的字段并利用加入求总计字段按钮加到文本框中。3、包括明细,并对部分字段求小计或总计的表格式报表,作小计或总计的字段允许是内容由数字字符构成的字符类型数据。操作时必须选择作小计与总计的字段并利用加入求小计字段、加入求总计字段按钮加到文本框中。还必须选择分组统计的字段(最多三个,彼此用英文逗号分隔)。 例如:先在接口参数输入表单中利用打开查找并选定主表名(例:生源)、从表名(例:成绩)、代码登记表按默认值不变、从键盘输入打印格式文件名(例:AAA1),按退出或回车。 选按菜单项生成表格形式格式文件,对于问题是否生成新格式表回答是。(注:默认描述打印格式的数据表文件名是打印格式文件名加表,本例是AAA1表。如果对已有表修改,按否)。 先设计并预设标题及字体、字号。 选输出字段(例:姓名,院校名称、学号、课名、分数)、分组字段(例:姓名)、小计字段(例:分数)、总计字段(例:分数)。按 明细、小计与总计按钮就可以生成格式文件。 标签式报表生成部件部件名为工具类部件7。 根据输出的字段的要求生成标签式的报表格式文件,提供三种方式:1、一个单记录表格形式的表重复多次:先建立一个单记录表格,再复制成多个表格,这些表格中的数据可以是数据表中同样一组数据,也可以分别来自不同记录的数据。2、、一个单记录非规则格式的表重复多次:先建立一个单记录非规则格式的表,再复制成多个表,这些表中的数据可以是数据表中同样一组数据,也可以分别来自不同记录的数据。3、与2类似,但进行中会显示有关字段的位置,允许先修改后再建立标签。 操作时先选择字段,如果是表格形式,要输入每一小块的列数;如果是非规则格式,要输入一小块的宽度。然后,输入一行有多少块以及纵向一列又分多少块(构成多少块的行)。再输入行内块间距离与纵向块行之间距离。再按生成一块的按钮(有三个按钮,分别产生表格式、非规则式与可调整式单块结构)。如果需要,再按加线条的按钮。最后,如果生成不同块数据相同的标签,就按同条记录重复标签按钮,否则,按不同记录标签按钮。 9.其他工具类部件 目录树帮助系统生成部件用于生成目录树控制的有语音、图形的帮助程序的数据表,也可以用于设计音、像盒、名片、产品广告、企业介绍等。 以目录树结构形式显示帮助生成时输入的内容。本部件名为工具类部件18。 本程序默认的数据表名是目录树帮助表,如果要用其他表名,要求结构必须一致(通过复制本库提供的目录树帮助表得到),同时在调用时要写明表的名字(如果不改变表名,可以保持变量数据表名称为空格)。 使用时首先进入最小系统,运行开发工具中目录树帮助生成,建立帮助文件。操作时,如果要增加节点(不论是根节点还是枝与叶节点),先在新节点名中输入一个标签内容,如果是根节点,按建第一级节点按钮,就可以见到增加了一个根节点;如果不是根节点,是挂在某一节点个子之下的节点,就用鼠标去点这一节点,将发现该节点下新增加了一个子节点。如果要在某节点下填入帮助内容,先清干净新节点名中的内容,再点该节点,之后在右边填入帮助内容就可以了。每一个节点可以有一个文本与最多二个画面(可以专有文本或专有画面),画面中可以填画片、WORD文件、EXCEL文件与WAV声音文件。 调用帮助类部件2.EXE可以显示帮助内容。 目录树控制部件可用于工作流系统。目录树形式的菜单具有纵向分布、层次鲜明,信息量大等特点,现在越来越受欢迎。本部件用于建立目录树形式的菜单。本程序部件名为工具类部件19。默认的数据表名是目录树菜单表,如果要用其他表名,要求结构必须一致(通过复制本库提供的目录树菜单表得到),同时在调用时要写明表的名字(如果不改变表名,可以保持变量数据表名称为空格)。 使用时首先进入最小系统,运行开发工具中目录树菜单生成,建立菜单文件。操作时,与目录树帮助一样,先建立目录结构,如果要增加节点(不论是根节点还是枝与叶节点),先在新节点名中输入一个标签内容,如果是根节点,按建第一级节点按钮,就可以见到增加了一个根节点;如果不是根节点,是挂在某一节点个子之下的节点,就用鼠标去点这一节点,将发现该节点下新增加了一个子节点。如果要在某节点下填入执行程序的内容,先清干净新节点名中的内容,再点该节点,之后在右边填入程序语句内容就可以了,如果需要,还可以给定安全控制的条件。 执行系统控制类部件2可以调用该目录树菜单,控制与驱动程序工作。 为了加强系统性能,更充分发挥本系列部件的作用,许多要通过预设参数实现。本系统提供了对接口参数表1中数据维护操作的部件。 工具类部件10用于登记注册代码表。在维护程序、查询程序、数据导出程序、统计程序中如果要使用代码表,除要建立代码表外,还要进行登记才能使用。这样做的目的是希望应用更灵活。登记时要写名代码表名字、代码字段名字、内容字段名字,及准备填入(对于维护程序而言)的字段的名字。目前我们规定,这一名字(数据表中某一个字段名)要和代码表中一个字段同名。 工具类部件11用于填写数据域完整性约束条件(对于维护程序而言),可以填最大值、最小值、值集及条件表达式。 工具类部件12用于填写计算派生数据的公式(对于维护程序而言)。使当焦点离开某字段时,自动计算派生数据的值,并填入数据表中。 工具类部件13用于填写安全性约束条件(对于维护程序而言),先输入用户们注册名(相同约束的用户填到同一个框中),再输入安全性规定,可以规定某些字段对他们隐蔽,也可以用i,u,d分别表示录入许可、修改许可与删除许可。如果每填某用户的约束,则不约束其任何操作。 工具类部件14用于定义单记录维护界面中字段的外观属性,包括高、宽、距窗口左边距离、距窗口顶部距离、字号、字体。在数据维护部件1与2中全部可以起作用,在其他单记录维护部件中,只有备注与通用字段的大小设定可以起作用。注意,在定义高度时,目前程序是按行数为单位计算的,例如高5字,实际是5行,越8个字高。请在设置时进行总结调整。 工具类部件15提供对接口参数表1中全部数据的维护。 10.系统管理与维护类部件 工具类部件2提供建立新数据表功能。 工具类部件3提供修改数据表结构功能。 工具类部件4提供建立字典表功能。 工具类部件8提供建立远程数据表功能。该部件可以用于SQL语言辅助教学。 工具类部件9提供对远程表结构维护的功能。该部件可以用于SQL语言辅助教学。 以上二部件的工作需要数据类型.dbf表中数据的支持,如果是Oracle、SQL Server、Access2003之外的数据库,需要选择其上某一种结构,如果皆不合适,可以修改数据类型.dbf表的内容使相适应。 系统管理部件1为用户密码修改程序。 系统管理部件2为公用的代码表维护程序,对在接口参数表1中所给定序号组中登记了的代码表进行数据维护操作。 系统管理部件3为公用的清库程序,清库包括清空数据表或清空表的部分字段二种操作。 系统管理部件4为公用的排序程序。 结束语 本套部件库中的部件只是一个尝试,其全部完成与成熟还需要软件复用技术的爱好者及广大科技人员的共同努力。我们愿和大家一起共同为管理信息系统部件技术的发展而继续努力。 本系统由程学先、程传庆、程传慧研制。本系统的研制得到龚晓明、王富强、陈义、郑秋华、史涵、周金松、叶品菊、曾玲、陈永辉、杨晓艳、刘伟、冯昭昭、王嘉、赵岚、童亚拉、张军、刘玲玲、赵普、张继等的支持与帮助;得到湖北工业大学、武汉大学东湖分校的关心、支持与帮助;还得到许多专家支持与鼓励,特在此一并表示感谢。 需要本软件的同行可以函寄湖北省武汉市江夏区武汉大学东湖分校计科学院程学先,邮编430212,信中说明收邮件的Email地址,我们见信即发。关于这套部件的意见可以在我们在科学网上的博客中刊登,欢迎光临并发表宝贵意见!博客本主题地址: http://www.sciencetimes.com.cn/m/user_content.aspx?id=3853
个人分类: 生活点滴|8059 次阅读|1 个评论
软部件技术为什么成为独家技术
求新 2009-6-27 00:22
原载《管理观察》 1 通用软部件技术现状 我们提的通用软部件指: 应用系统中由构件组成的能独立完成一项工作的具有自适应与即插即用特性的通用程序模块。它是经封装的、 面向包括多个功能的业务工作,而不是简单单一功能的 系统级模块 ;部件之间不存在直接联系、不要求彼此间的协作、包括了界面设计方面的内容、直接依据接口参数调用、不存在动态接口, 能 通用于不同应用系统,通用于同类操作系统的多个不同数据库系统,能自动适应不同数据库结构的应用需求,在应用于现场时可以如同硬件生产一样 不加修改地 即插即用或经简单裁剪后插入使用(一般不需要编写或修改代码);即使应用需求改变,也同样只需要修改参数就能自动适应,甚至可以不需要再编译。它采用从上而下设计方法进行研制,是规范化、标准化的代码类软件。其目标是摸索软件生产工业化之路,希望成为软件生产分工的可操作的平台。 从 2000 年起在长达 9 年的时间里,我们就软部件技术进行了持久的研究,一个方向是基于 VFP 的软部件,已经能帮助我们在极短时间内完成一个具有一定功能,性能不错的管理信息系统。另一个方向是基于 JAVA 的软部件的研究,也取得进展,证明了软部件技术可以用于 JAVA 及其他语言中,具有普遍意义。现有研究证明,该技术具有促进软件发展的重要意义。目前,有一些公司,还有一些影响面很广的软件宣称采用部件进行开发,例如 Microsoft Visual Basic ( VB )就宣布支持部件对象模型 , 宣称 可以不写一行 SQL语句就建立一个系统, 但是和我们说的通用软部件不是一回事,它只是翻译用语,是对象、构件的统称,利用它提供的工具,可以在可视化的环境下使用数据库。几年前,曾出现数据王、数据通之类的软件,可以只通过参数设定、在可视化环境中建立应用系统,使用十分方便,但它们满足于建一个桌面系统,不打算穷究所有管理信息系统的界面、功能与性能的需求,也就谈不上软件生产工业化的问题。近 5 年以来,还有不少公司宣称设计出了许多具有通用性、高适应性的软构件,在构建系统或由于需求改变而修改系统时,可以不修改这些构件中的代码,只通过修改参数就能完成任务。这些构件的特性和我们提到的软部件在最基本功能上具有相似性,但是还没有一个公司宣布完成了关于这样的构件的成系列的研究,没人能说,将来的一个系统可以只由具有这样功能与性能的构件所构成。许多关于构件的研究都不强调包含界面内容,那么在应用时必须另外作界面的设计,就不可能成为具有即插即用特性的独立模块,也与软件分工生产的期望无缘。还有许多科研人员正在从事软部件技术的研究,但从理论侧面探讨的多,成系列的研究与设计的报道还未见到,公开发布通用软部件设计成果的还只此一家。 2 通用软部件技术意义 通用软部件技术是具有极大意义的技术。一个熟练的程序员设计一个中等规模的管理系统完成时间要以天计;而刚从学校毕业的大学生完成时间要以月计;但利用部件构建需要的时间只以分钟计。从发展生产力的角度看,该技术可以提高效率数十到数百倍。由于软件适应性极大提高,一旦需求变更,往往不需要修改系统,或只要简单重新配置参数就能满足需要,不会影响正常的业务工作,也大大降低维护费用,设计效率的提高与维护费用的降低有可能大大降低软件成本,该技术具有强经济效益。部件制作的规范化、标准化有利于软件质量的提高;它将使应用系统建设与维护难度下降,有利于计算机应用向更普及与更深入方向发展。该技术将软件生产划分为部件设计与系统组装及维护等二个层次,对促进实现软件生产工业化具有推进意义。 也许有专家说我们太言过其实,太过夸张,认为我们做的不过是管理系统最基本的一些界面,而且大多数部件都是基于 VFP 的,没有什么意义。确实,我们的研究只能算是接触这个技术,连起步都未必谈得上,但研究的成果至少在数据库与管理信息系统课程教学上已经可以起到加强的作用,更希望的是大家能关注这么一个方向,一个大家都期盼的前景。计算机界 30 多年前就提出了软件生产工业化的问题,但是该目标一直未能实现,主要是实现生产分工这一生产工业化的重要特征难以达到。因为软件实在太多太复杂了,变化万千,简直无法想象如何才能找到直接构建应用系统的基本单元。但我们认为,这个目标的遥远,是因为我们没有极大地去强调所有软件在设计时都必须考虑即插即用、极大范围的通用、规范化与标准化等这样一些基本要求,如果能大量生产我们前面所定义的通用软部件,能使所有应用系统全都用软部件构成,软件生产分工的时代将不那么遥远。应当要求:所有软件在设计时都要考虑通用软部件的标准,使得一个软件能尽可能多地应用到不同系统中,能直接依据接口参数调用,能做到即插即用,不仅能提高软件开发效率、降低软件成本、提高软件质量,且对推进计算机应用具有意义。 看过我们演示或使用过我们的部件库系统的人都认为我们所提的软部件技术是有道理的,是很有意义的。但是,如此重要的项目为什么发展如此缓慢,到如今还未被广泛认同呢?关键是国家科技部门对之缺少认识,支持不够。进入到当前时代,一个具有重大意义的项目只靠一二个人绝对是无法完成的,只有一些人各自独立地进行研究,要想做出什么有较大影响的事情,是十分困难的。本课题由于得不到国家科技部门的认同与支持,长期只能处在各自独立作战的状态,也就只能举步维艰了。 3 通用软部件技术的发展期盼国家科技部门的支持 我们从 2003 年起开始为本课题申请国家自然基金及多种科研基金的支持。 2003 年我们曾向一位国家自然基金委官员演示了用我们已具有一定规模的部件系统构建系统的过程,说明了我们的想法,该官员非常感兴趣,也认为这确实是一个很有意义、很有前景的项目,之后在长达 5 年的时间里,他一直关心该项目,帮助我们修改申请书,对我们的研究给出许多很有价值的意见。 05 年,他还介绍了另一位更高职务、更具有针对性的官员与我们认识,同样在之后一直给予我们以支持与帮助。但,可惜的是,所有努力都没有结果,我们所有向国家部一级的申请全部失败,所有申请都被专家们否定。 2005 年在湖北省教育厅组织的关于本项目的鉴定会上,我们向到会专家与教育厅科技处领导演示了我们基于 JAVA 与 PB 的软部件的应用情况,获得到会专家一致好评,他们在会上多次向教育厅科技处领导提出,本项目意义极大,希望能加大投入,支持发展。但以后我们面临的仍然是一次次申报,一次次失败。今年,中国科协支助地方的发展,向地方科协征集 学术交流资助项目,项目为地方科协所有,项目负责人也要换成地方科协的人员。尽管如此, 我们还是申报,请求向武汉科协支助 12 万元,我们私人出资 3 万元,帮助武汉科协建设一个网站,只希望允许我们在上面公开软部件技术,促使该技术的发展。中国科协对此十分关心,在申报截止后半个多月时间里,向武汉科协了解本项目,要求他们呈报书面申请。他们还直接与我们联系,要求我们加强与武汉科协的沟通。但该项目最终被武汉科协一位付部长所否定,他们压住本项目不予申报。 目前,我们已经向上百的老师或专家进行过介绍和讨论,还三次发布光盘,接触或使用我们的软部件模型的数以千计。一直未收到任何反面意见,所有意见都认为该系统好用,具有发展必要性。我们也曾向国外朋友介绍本技术,他们普遍对该技术感兴趣。 历经数年,对本项目投反对票的专家大概够一个连了,但我们一直未见那位专家给予我们以专业方面的帮助与建议。国家自然基金委倒是每年给予反馈意见的,归纳国家基金委专家们的反馈意见,基本有三点,一是怀疑本项目成功的可能性。二是认为申请书写的有问题,例如目标不够清晰等等。三是认为这项目不是理论问题,而是技术问题。所有专家都未给出具有专家水平的批评与建议,没有人告诉我们该项目国内外什么地方有或没有、该技术那些地方可行或不可行、所提方案那些地方是错误的或是片面的、那些工作是应当做但没有做的或是没有意义的等。 通用软部件技术不含理论问题吗?我们认为,所谓理论,是指来自对实践的归纳与总结同时又能反过来指导实践的规律与方法。理论的研究过程实际是研究怎样忽略次要因素,突出代表性的特征,使之具有指导性,并具有高的覆盖性。对于那些指导面大,对一个领域甚至行业的发展具有意义的理论是基础理论。 软件的发展一直伴随软件复用技术的发展。高级语言实现了用接近自然语言的语言代表机器语言来书写代码,且包含了循环、子程序、过程、函数、宏等具有复用性的代码。这是软件发展的最初阶段。软件工程理论总结了软件设计的一般阶段与步骤,强调阶段性、模块性。面向对象技术提出了类与对象,复用内容不再只是一段代码,为了更广泛的复用性,使能复用于更多种各不相同的场合,开始考虑将代码与环境、与界面相联系,复用内容是许多代码段与各种配置用的属性。这一理论极大促进了软件的发展,对象理论渗透到计算机应用的许多领域。这以后,出现了构件理论,初始目标是希望实现软件生产工业化。但是十多年过去了,这一目标并没有实现,目前设计软件并没有变得简单,设计难度没有降低,软件生产成本有增未降,形势更让人琢磨不透。 原因是构件定义太过宽松,甚至可以说没有一个严格的定义,也就没有一个能实施的一种或几种严格的方法。没人告诉我们,只要按那几个步骤操作,解决那几个问题,遵照什么方法或什么准则,就能设计出一个构件。特别是,它没有强调高复用性与即插即用特性,也就偏离了向软件生产工业化的最终目标。从技术侧面来谈,它没有注意软件发展的总的规律,从函数到对象,可复用软件的根本进步实际是它开始考虑环境与界面问题,也只有考虑环境与界面问题才能真正提高软件的可复用性,才能用到几乎所有地方。而构件恰恰忽视了环境与界面问题,这是一个致命的疏忽。不考虑环境与界面问题,就很难实现即插即用特性,也就偏离了程序设计理论发展的方向。因此,我们认为,严格地说,构件理论是不能和面向对象相提并论的,它不能成为面向对象理论之后软件的下一个重大理论阶段。而部件设计则强调联系实际应用系统的界面需求,联系环境,基于对数据库的基本操作展开设计,要求考虑代码运用、安全性、数据完整性、派生数据、图形与文本、处理效率、并发操作等性能,特别是要求实现即插即用。界面是千变万化的,如果要对于它的所有变化都各用一个设计去满足,那就不成为理论了,也就没有指导意义了,部件技术的核心是如何对无穷变化的界面总结出其变化特征,使得用少量的模型覆盖尽可能多的需求。我们研究软部件系统,综合了大量界面的特点,提出针对有限的对数据库的操作考虑界面的变化,并根据大量构成实际系统的模块总结了它们的功能、性能与界面特点,综合浓缩为有限的部件界面。虽然由于我们的人手太少,总结的部件数量还少,有些可能没有考虑到,有些虽有考虑但还没有实际产品问世,但是目前已有的百余个部件已经可以实现数以万计的变化,它从一个侧面给出了解决该问题的一个可行方法,表现出软部件的设计是可以做到有章可循的,完全可以总结出具有指导意义、具有收敛性的设计规律与设计方法。因此我们认为,软部件是技术,也包含具有深远意义的理论,而且涉及基础理论。 在我们年轻的时候,经常听到批评外行领导内行的呼声。在那个时代,一方面用革命性的手段发展经济,也确实促进了生产的发展,当时的许多项目都成为后来发展的基础。在基础落后、文化贫乏的大环境下,对发展生产力起到巨大推动作用。但,不可否认,许多瞎指挥都造成了巨大的浪费,代价是昂贵的。目前虽说已经在进入知识化的时代,官员们需要实现知识化,想方设法提高学历层次;一些知识分子被提拔,进入行政岗位;许多决策由专家作出等等。这些确实是进步,它为决策科学化创造了条件。但是,并不是就没有问题了。任何人所具有的知识都是有限的,专家的字面意思是专一方向的行家,按这一意思理解,就不存在所有方面都是行家的专家。因此,实际进行决策的专家可能并不是所决策问题的真正内行。尤其是对于那些在国内外算得上是创新的问题,相对于已经进行了大量前期工作与初始研究的课题提出者,其他所谓专家也都是外行。通过专家集体决策,从某种意义而言,是希望扼制腐败。但一种矛盾掩盖了另一种矛盾,这样的决策机制使得决策没有了责任人,当出现决策错误时,无法问责。专家都来自基层,无法掌控宏观全局,加上他们与同行的千丝万缕的联系,难以承受种种关系的巨大压力。他们无行政权力与责任,也就无法避免其他形式的腐败,甚至不排除腐败面扩大的问题。这样的体制有进一步发展改进的必要。我们认为,决策应当由行政决定,行政官员的职责就包括进行决策。但决策过程要民主,要充分听取各方面意见,尤其是专家们的意见。专家们的任务是提供分析、提供材料、提供意见,是对欲决策问题进行多方探讨,提出正反各种不同分析与建议,促使决策减少错误。要定性与定量地说明一个项目先进性程度、与其他项目比较的可行性、可能的经济效益与社会效益或对推进专业发展与技术进步的理论价值(这里说的定量不只是在已经设计好的什么经济效益大等类框中打勾或打圈,而是要给出相对具体的数字,并进行深入的描述),最好不要把投票作为专家们的主要职责。 4 结束语 当前关于部件技术,急盼解决的课题是:( 1 )将软件生产工业化问题提上议事日程,在 软件评价时提高自适应性、通用性、扩展性、标准化等标准的权重。( 2)按管理信息系统、通信、游戏、检测与控制等不同领域分别探索与研究通用部件实现的可能性,总结通用软部件的结构、功能、性能与界面特点,制定部件的规范与标准。 ( 3 ) 总结通用软部件的形式化表示方法。( 4)研究基于通用软部件的系统建模内容及与实现相关的语义表示方法。(5)研究通用软部件程序代码自动生成的关键问题及解决办法。(6)进一步总结各类应用系统的程序模块,分析其功能、性能与界面特点,设计出更多通用软部件,建设面向社会的能满足实际应用需要的通用软部件库。 目前党与政府都在强调科学发展观,科学发展观的根本点一是以人为本,一是强调发展。以人为本既要体现执政为民,还要强调充分发挥人的作用,调动一切积极因素,不放过任何可能导致发展的机会与可能。强调发展就是要注意加快发展生产力,特别重视科技对生产力的推进作用。那么,我们的科技部门能否有这样的人员,负责收集与推荐一些民间有关科技的建议,对于可能有前景的项目给予专门的论证与讨论,特别给予他们讨论与发言的权利,使得一些好的项目有可能脱颖而出,给科技创新更大发展空间呢? 附件1:我们2003年国家自然基金申请书概要 附件2:2003年国家自然基金委反馈意见 附件3:2005年湖北省教育厅关于部件技术鉴定意见 2003年国家自然基金申请书
个人分类: 生活点滴|3701 次阅读|4 个评论
基于VFP部件库最小系统网络版研究
求新 2009-5-5 21:39
(本文原载于武汉大学东湖分校学报) 1. 通用软部件研究的意义与现状 通用软部件(以下简称部件)是应用系统中由构件组成的能独立完成一项工作的具有自适应与即插即用特性的通用程序模块。它是经封装的、面向包括多个功能的业务工作而不是简单单一功能的系统顶级模块;部件之间不存在直接联系、不要求彼此间的协作、包括了全局性界面设计的内容、直接依据接口参数调用、不存在动态接口,能通用于不同应用系统,通用于同类操作系统的多个不同数据库系统,能自动适应不同数据库结构的应用需求,在应用于现场时可以如同硬件生产一样不加修改地即插即用或经简单裁剪后插入使用(一般不需要编写或修改代码);即使应用需求改变,也同样只需要修改参数就能自动适应,甚至可以不需要再编译。它采用从上而下设计方法进行研制,是规范化、标准化的代码类软件。我们从2000年起开展通用软部件研究,2001年发布了基于VFP的几个通用软件,2004年在网上公开发布VFP部件库最小系统,在表单设计、查询设计、导入导出、报表设计、统计图设计、关系操作等各方面功能与性能全面超过VFP自带的开发工具,特别是比较适应中国国情。2005年基于JAVA的部件技术通过湖北省教育厅鉴定,评价达到世界先进水平。2006年发布VFP部件库最小系统3.0版。2007年微软宣布放弃他们重金收购且发展15年的FoxPro,表示VFP9.0版本是其最后版本,网上传言有将VFP变成自由软件的可能。08年我们又继续发布了VFP部件库最小系统4.0版,今年将发布VFP部件库最小系统网络版(其试用版现已可向《数据库原理与技术》一书使用学校提供)。到目前为止,通用软部件技术仍然是我们独家技术(因此不妨宣称为程氏技术)。其目标是提高软件复用性能,提高软件生产效率与软件质量,提高软件适应性与可扩展性,降低软件成本,促使进一步提高计算机应用面,促使实现软件生产工业化。 计算机应用,尤其是其在管理方面的应用最让人头痛的问题是如何适应多变的需求,只有发展适应性特别优良的具有高度可复用性的软件才能解决该问题。如果能生产足够多的如同前述的通用软部件,将能有效解决系统扩展性与适应性的问题。 目前在人才市场上,一方面计算机毕业生分配困难,另一方面又缺少具有丰富实践经验的计算机程序员。虽然提高教学质量永远是正确的话题,但是在一定历史时期,其提高教学质量的作用总是有限的,计算机人才就业问题的解决首先还是要依赖于计算机应用的发展。目前在Excel与大型数据库之间存在计算机应用的断层:要不,使用不需要大学培养的Excel操作者;要不,需要具有甚高水平与丰富经验的大型数据库开发与管理人员。计算机在经济活动中的应用并没有象预期的那样普及,原因是,在硬件生产中有各种组装、建筑、管理、维修、加工等方面的行业,它们不需要复杂昂贵的设备,也不需要顶级的技术,但吸纳了大批劳动力,也拓展了硬件的生产与应用。但软件行业没有这样的层面。很难期望在区区4年时间里能将所有大学生培养成既有深厚理论素质,又有丰富实践经验与很强动手能力的人才。必须改变软件生产的现状才能有效解决上述问题。 软部件技术希望如同生产机器或盖房子一样实现生产的分工:有的生产厂专门生产机器的零件、部件,另一些厂则负责安装、测试与装修,大多数生产人员的工作是利用规范化与标准化的零、部件组装生产产品(建立应用系统)。长期以来,人们在软件工程过程及软件工程过程管理方面进行了深入的研究,在软件开发技术上不断取得进展,但相对而言,我们在软件生产社会化、软件生产分工方面的研究比较落后。 软件生产工业化的目标一直未能实现,主要原因是缺少标准化的通用软部件。 2.基于VFP软部件的研究 我们关于软部件的研究包括基于VFP软部件的研究与基于JAVA软部件的研究二方面。基于JAVA的研究可以解决跨系统平台的软件通用性问题,适用于较高级的需求。基于VFP软部件的研究则具有普及意义,尤其在管理信息系统课程与数据库课程教学中具有强辅助作用。 在网络应用中,为了降低网络负担,提高工作效率,希望数据具有可控制的冗余性,最好在使用数据的远程位置能建立临时数据结构,存储被复制的数据,例如建立本地数据库,并与远程数据库协同解决应用的问题。对本地数据库的要求主要是效率高,可扩展性好,适应性好,易学易用。目前人们接触与使用较多的中小数据库有SQL Server,Access,VFP等,由于前二者数据存储都以数据库为单位,所有数据表,包括索引、日志、各种中间数据都存在于一个表中,效率与扩展性都不理想,应用SQL Server的价格还十分高昂。而VFP以数据表为单位存放,文本与二进制数据还采用特殊的单独文件存放,表与表之间只在需要时通过程序或建立数据库结构相联系,使得它更符合本地数据库的要求。加上VFP具有嵌入的开发语言,使用方便,更具有作为开发远程客户机端应用子系统工具的优势。 我们在VFP部件库最小系统4.0版的基础上,今年又进一步开发了VFP部件库最小系统网络版。开发网络版需要解决的技术问题包括: (1)使用方便,仍然要求强的即插即用特性,在组合到应用系统中时无需修改程序,最好是无需编译,不需要进入具体的开发语言,不要求掌握相关开发语言(例如VFP)的知识。 (2)要求强化数据共享性。由于有本地数据库支持,可以一次性将需要处理的数据复制到本地操作,减少了网络传输的次数,大大降低远程服务器处理数据的工作负担,但是增加了一次性数据传输数量,需要寻求最佳配合方案。 (3)特别关注数据安全性问题。VFP是没有安全性控制的数据库,复制远程数据将使被复制数据具有非权使用的危险,因而必须保证无权使用的数据不被复制与传送,且所传数据必须具有真正意义的临时性。 (4)需要解决防止不一致数据及并发操作的问题。 VFP部件库最小系统网络版的研制现已获得初步成果,其试用版已面市,主要用于数据库、管理信息系统等课程的教学。为方便教学应用,力图操作简单。基本操作如下:首先在服务器方建立数据库(基于Windows系统中可用的各种数据库,例如Oracle、SQL Server、Access),再建立应用系统所需要的数据表。在客户机端建立局域网联系,建立ODBC数据源。拷贝部件库最小系统之后,进入其文件夹,双击执行环境设置.exe,修改系统封面有关参数,例如封面标题、开发单位名称、设计人名、封面画文件名、数据源名,选择数据库系统名称,可选的有Oracle、SQL Server、Access(不同数据库在连接时有微小区别,如果选Oracle,将继续要求输入连接口令(在安装系统时设定)与用户标识(建议为system)。如果安装SQL Server时选择Windows验证模式,选择SQL Server与Access将没有区别,效果相同,可以不加区别。估计对于在Windows环境中能建立ODBC数据源的数据库都可以使用本系统,选数据库时选SQL Server就可以了)。 之后就可以设置参数完成建立应用系统的操作。双击最小系统.EXE,选开发工具中的部件驱动菜单生成。在显示的界面左上文本框中输入:第一级菜单标签,例如材料信息维护,之后按建第一级节点按钮,将看到在目录树中建立了一个根节点。用同样方法建立其他第一级节点。 继续在左上文本框中输入第二级节点标签,例如添加,再用鼠标点第一级节点的标签,例如点材料信息维护,将发现在第一级节点下生成了第二级节点。同样方法建其他二级节点。 以下再对各有关节点设置参数,方法是用鼠标点击各个第二级标签名,对每一个预定节点,在右边列表中选择输入有关参数,例如,选中添加节点后,点选欲使用与运行的部件名称,例如输入数据维护部件5,再在数据表名称中输入远程数据表名称,例如S1,(以上是必须有的选项,其他参数则根据设计者需要输入或选定。例如可在字典表名称中输入用于中英标签名称变换用的字典表的名称(在系统运行前,需要利用系统提供的最小系统.EXE程序建立存在于VFP中的字典表并且在接口参数表1中登记(详见《数据库原理与技术》或《管理信息系统及其开发》)(使适应异构数据处理的问题)。当然,如果建立数据表使用中文定义字段名,不存在数据结构异构问题,关于字典表的如上操作都不需要)。同样可以对其它节点设置参数。 按照概要设计结果建立了系统的模块结构且如上对有关节点定义了参数之后,系统就初步建立了。 双击项目.EXE将可运行搭建起来的水平下拉菜单形式控制的应用系统。 也可以双击项目3.EXE,运行搭建起来的目录树菜单形式控制的应用系统。 所有操作不需要进入VFP,不编也不修改任何代码,不需要做编译操作,系统便已建立,可以投入运行。平时可以运行最小系统.EXE,随需要进行操作。(详见《数据库原理与技术》或《管理信息系统及其开发》)。 熟练之后,可以进行其他参数的设置,使实现不同界面,提供不同功能与性能。(详见《数据库原理与技术》或《管理信息系统及其开发》)。 系统提供多种文本框结构(单记录)数据维护部件、带组合框式数据维护部件、表格式数据维护部件、一对多数据维护部件、等值查询与任意查询部件、导入导出部件、报表格式生成部件、常见数据处理部件、图形分析部件、关系操作部件、多重索引与排序部件、转Excel与转HTML部件等,使用方法详见《数据库原理与技术》或《管理信息系统及其开发》有关内容。。 如果应用需求改变,例如数据表字段增加或减少、字段名改变,可以不对系统做任何改变,系统能自动适应。即使数据表增加或减少、应用扩大或增减、数据处理方法改变、处理界面变换等,也都可以只通过修改参数设置来实现,系统建设与系统维护的难度与工作量都极大减少,使用数据库的门槛大大降低,对于计算机应用的进一步扩展将具有意义。由于在部件设计中考虑了界面的变化、功能的搭配与改变、代码应用、数据完整性与安全性、数据共享等问题,加上数据库自身提供的功能,相当于为数据提供了双保险,其应用价值显而易见。 3. 结束语 我们目前研制的VFP部件库最小系统网络版主要用于教学。在管理信息系统或数据库课程教学中,学生可以轻而易举地构建应用系统,观察自己各种设计的最终应用效果,观察一些最基本理论与概念的真正内容与在应用中的表现,使得理论不再抽象,可以促进教学效果的提高,具有明显意义。 另外,这些部件的设计成功也证明:应用系统中由对象与基本构件组成的能独立完成一项工作的具有自适应与即插即用特性的通用程序模块是可以设计出来的,只要我们在设计应用系统实际程序时,注意扩大其应用范围,注意多功能的组合与分布,完全可以类似于硬件生产,设计出大量应用时无需修改的部件,软件生产的面貌将大大改观。 当前需要加强的工作:(1)总结通用部件的形式化表示方法。(2)研究基于通用部件的系统建模内容及与实现相关的语义表示方法。(3)研究通用部件与管理信息系统程序代码自动生成的关键问题及解决办法。(4)总结部件的结构、功能、性能与界面特点,制定部件的规范与标准。(5)进一步总结各类应用系统的程序模块,分析其功能、性能与界面特点,设计出更多通用软部件,建设面向社会的能满足实际应用需要的通用软部件库。目前的部件在解决并发操作与保证数据一致性方面还存在不足,速度不够快,需要进一步研究解决。 软件生产应当以硬件发展为借鉴。目前,物资生产分有许多行业,例如机器制造行业(其中更分出汽车等制造行业)、建筑行业、纺织行业、化工行业等,每个行业存在从低到高的分工与产业链,例如有部件、零件生产厂,有粗加工原料厂,有中间产品生产厂,有组装或深加工生产厂,有维修、服务、销售等行业。软件生产应当有相类似的分工,不过会细得多,使用局限性会比较大。需要进一步考虑硬件生产的组合,联系到软件生产中来。通用软部件的通用只能是对某一大领域或行业而言,我们前述部件实际通用于管理系统这一大领域或是一个潜在行业,其他还例如数字媒体、计算机控制(包括自动化)、网络通信等都应当考虑通用软部件设计的可能性,需要考虑软件生产改观的问题。我们以上的研究只是刚刚起步,衷心希望能有更多专家投入该项研究,共同促使软件生产工业化时代到来。
个人分类: 生活点滴|5608 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-15 09:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部