软件开发技术部(精选8篇)
软件开发技术部 第1篇
1.完成根据系统设计文档,进行程序编码工作。
2.完成外包项目中协同开发商系统开发工作。
3.完成部门领导交办的其他工作。
软件开发技术部 第2篇
关键词:面向服务软件;开发技术;应用
鉴于面向服务架构开发的软件有其固有的属性和特点,其内身的高内聚、低耦合特性,使面向服务软件更加稳定高效,再加上面向服务软件的运行不受平台的影响,使面向服务软件在我国企业系统集成和软件发展中得到广泛应用,现已成为我国企业运用系统集成和开发新系统的重要措施。当今面向服务软件开发技术的研究现状
随着经济的发展和社会的进步,当今时代已经成为了信息化时代,计算机软件开发技术水平不断提高,网络技术发展迅速。随着计算机网络的快速发展和不断进步,信息服务系统在我国社会发展和经济增长方面起到越来越重要的作用。伴随计算机网络的发展,Web服务技术水平也随之提高,人们通过计算机网络获取丰富的信息资源,对于计算机软件各方面的要求也越来越高。虽然面向服务软件开发技术在一定程度上已经取得了阶段性成果,但是还是无法完全满足当今人们对于计算机软件的需求,在今后的面向服务软件开发技术的研究过程中,还需不断探索和创新,从而不断完善和提高面向服务软件开发技术,促进面向服务软件开发技术的发展。虽然当今面向服务软件开发技术在不断完善和进步,但是还是存在着各种各样的问题,例如软件复用程度不够,软件集成性能得不到提高,这些问题严重影响着用户对于服务软件的使用,也阻碍了我国面向服务软件开发技术的发展。利用SOA开发计算机软件时,开发工作人员只需关注Web服务和用户需求,至于二者之间的关系由服务接口所负责,无需开发工作人员单独的研究。利用SOA架构开发服务软件,在服务软件的设计、分配、功能和维护方面都有着独特的优点和好处,因此成为了服务软件开发技术研究的重要关注点。在面向服务软件开发过程中,软件系统的重要开发环节就是服务环节,服务也是服务软件的首要要求。由于服务软件的功能不全面,服务具有局限性,导致服务软件很难发挥完整功能作用,不能切实地真正满足人们的需求。因此,在今后的面向服务软件开发研究过程中,要不断完善服务软件的功能,加强服务软件的性能,研究出功能更加全面的Web服务从而更好地应用于服务软件。总而言之,在面向服务软件开发过程中,应用科学合理的服务组合来完善Web服务功能尤为重要。当今我国的面向服务软件开发技术基础较差,起步较晚,虽然在一定程度上已经取得了阶段性成果,但是在面向服务软件开发技术研究工作中,还是存在着各种各样的问题。为此,我们有必要对面向服务软件开发技术进行探究,从而提高我国面向服务软件开发技术水平,让面向服务软件开发技术更好地服务于社会,促进我国信息化的发展。Web服务软件开发技术的基础
为了更好地研究面向服务软件开发技术,我们有必要对Web服务软件开发技术的基础进行了解和探究,从而切实地提高服务软件开发技术水平,让服务软件在今后的生活和工作中发挥更大的作用。
2.1软件服务
面向服务软件技术是随着信息化时代的来临而衍生出来的一种新技术,它使计算机软件与互联网更好地进行匹配,切实地促进了我国互联网技术的发展。面向服务软件的首要目标就是为用户服务,它依靠功能系统为用户提供服务,方便用户利用计算机网络来享受服务软件的服务功能。所谓服务的概念,就是应用具有业务功能的系统模块,让用户通过服务接口进行工作或者开展业务。而服务架构中的服务作用,在工作方面来说就是为企业业务提供服务,就计算机网络来说,就是通过Web服务方式对软甲进行封装,发挥其设计功能。服务有着各种各样的优点和特点,这为其提供用户服务奠定了坚实的基础。用户在使用服务时,鉴于服务边界清晰的特点,更加方便的通过接口获取服务。依据服务的兼容性特点,用户在使用服务过程中,可以很方便的与他人进行信息交流。同时,各个服务功能之间相互独立,松散耦合,在用户使用服务功能时,没有必要了解服务细节,较少了不必要的麻烦。另外,在进行服务设计时,要遵循相应的服务设计原则。首先,服务的命名要让用户容易记住,服务应内聚完整,服务封装内部细节以及服务无状态。只有对服务进行科学合理地设计,才能保证增加用户对于服务的使用,促进服务的进一步发展。
2.2SOA和Web服务技术基础
面向服务架构(SOA)是一种应用广泛的设计架构,它具有松散耦合和粒度大的优点,使系统服务利用服务接口很好地进行连接,利用服务接口标准化和各项服务之间统一化来实现通信过程。普通的SOA架构由服务管理、服务开发工具、服务组件、服务总线、基础服务构成。另外一个服务架构就是云服务架构,云服务架构由IaaS、PaaS、和SaaS构成,IaaS是组成云服务构架的基础部分,PaaS是云服务平台,SaaS的作用是为用户提供服务。云服务架构的发展依据于虚拟化技术和分布式计算以及海量存储技术,虚拟化的发展过程依据于基础设施,分布式计算和海量存储技术的发展构建了云服务平台,随着云服务架构的不断发展,云服务技术水平的不断提高,软件和平台以及基础设施三者之间的关系会更为紧密。Ucocloud模型主要由web前端、master主控服务以及worker工作机构成。其工作核心是master服务,它负责调整任务和管理worker,worker负责不同的业务,增强其计算能力。master主控服务主要是调整和维护Task和worker的分布顺序,web前端负责获取master主控服务中的`数据信息,worker工作机主要是对具体的业务进行执行。WebService是Web的一个应用程序,它是独立的、可进行编程的应用程序,它的描述、协调、配置应用程序依靠XML来完成。WebService结构主要由服务提供者和服务代理以及服务使用者构成,其三者发挥各自的功能来实现WebService的服务功能。WSDL是一种描述服务的语言,其是基于XML格式的描述语言。WADL主要由Types、Message、Opeera?tion、PortType、Binding、Port、Service构成,依靠这些元素对服务进行语言描述。WSDL的语言描述具有开放性特点,便于WSDL与其它语言之间进行相互访问,增加了服务之间的网络传输协议种类和消息格式。SOAP是一种简单的服务访问协议,可以方便WebService在互联网中进行信息交换,提供了信息交换平台。UDDI是一种统一服务描述语言,为用户提供注册服务。UDDI主要由UDDI数据模型和UDDIAPI以及UDDICloudService所构成。服务软件组合技术研究
如今,随着社会的进步和计算机网络技术水平的不断提高,用户可以选择和使用的服务软件日益增加,Web服务形式被广泛地应用到当今的服务软件之中。随着Web服务的增加,使得过多的功能产生相似或者重复的现象,还不能完全满足用户的功能需求。为此,加紧研究服务软件组合技术尤为重要。Web服务组合,使相似或者重复的功能合并,在根据用户的需求提炼出更多的功能,使Web更好地满足用户的功能需求。
3.1Web服务组合Web服务主要由服务提供者、服务请求者和服务代理组成,通过三者的相互合作来完成服务过程。用户利用UDDI,依靠Web提供的服务发布和发现以及绑定来完成网络注册,从而使用服务。现如今,我国大多数的网民都是服务请求者。从过程模型方面来说,Web服务是依靠控制流和数据流完成服务过程的,从构成单元来说,Web服务内部单元可以进行相互合作和协调,完成服务过程。Web服务组合,有着固有的属性和特点,其动态性和自适应性可以通过UDDI对Web服务进行动态管理。其次层性和可扩展性,可以使Web服务产生新的功能,更好地适应用户的需求。Web服务组合,还可以更大程度的提高软件的开发效率,提高组合的自动化程度。
3.2Web服务组合的方法
Web服务组合的方法大致上可以分为两大类,静态组合和动态组合。静态组合以往的组合方法是依靠于编码方式,但是依靠编码对静态服务进行组合,使组合方式不够灵活,效率很低,严重影响Web服务的组合过程。因此,当今静态组合主要依靠于模板对静态服务进行组合。动态服务组合当今主要有三种组合方式,基于Petri网的服务组合方式、基于BPEL的服务组合方式和基于网络组件的服务组合方式。无论是静态服务组合还是动态服务组合,目的都是不断地完善用户对于网络的服务功能需求,使人们更加受益于当今信息化时代。
3.3基于语义的服务组合在调查用户对于服务的满意程度方面,Web服务质量的算法是关键算法。当今,五维的Qas模型应用广泛,依靠其执行时间、执行成本、服务声誉、可靠性和可用性对Web服务进行衡量。为了切实地提高计算机网络自动选择Web服务的能力水平,语义Web服务是必不可少的。语义Web服务对服务的各种属性和特点进行分析和探究,从而更好地为用户提供服务。现如今,用户可以依靠关键字便捷地获取计算机网络信息,离不开语义Web。服务软件信任评估研究
服务软件的应用给人们的生活和工作带来了很大的便利,促进了社会信息化程度的发展。为此,我们有必要对服务软件的信任评估进行研究。
4.1服务信任
服务信任,是用户对于所使用服务的一种相信,这种相信依靠自身的判断力和网络经验。通过用户对于服务的信任度分析,可以使用户更加放心地使用服务。服务信任有着固有的性质,主要是主观性、动态性、可度量性、传递性、时间衰减性和非对称性。对于服务的信任,可以分为身份信任和行为信任,直接信任和间接信任。
4.2面向服务的信任评估模型
面向服务的信任评估模型的建立,要依靠服务的属性和特点来明确划分服务的服务范围,并且对QaS的非功能属性加以分析,从而逐步建立面向服务的信任评估模型。首先,服务提供者要在服务注册中心进行注册,然后向信任管理器发出信任数据,申请信任信息,然后信任管理器对服务进行信任评估,才能完成信任服务评估过程。基于SOA的GPIMS系统开发实践
基于SOA的GPIMS系统开发实践,要对GPIMS系统的结构进行了解,对其建模过程和服务设计过程加以分析。在这过程中,基于.NET平台的SOA结构起到了关键作用。最后,还要依据QoS标准对服务进行信任评估测试,已达到服务软件的信任要求。总结
如今,面向服务软件已经在我们的工作和生活中得到广泛应用,为此,今后还需不断地对面向服务软件技术进行探索和创新,让面向服务软件促进我国的计算机网络发展,推动我国社会的进步。
参考文献
软件开发技术部 第3篇
关键词:组件技术,软件开发,测控软件
在现代的计算机网络信息时代, 计算机扮演着十分重要的角色。从某种角度来看, 计算机技术在推动社会发展方面扮演着十分重要的角色, 对于改变现代人类的生活方式产生了积极的影响。计算机技术的不断向前发展, 其动力源泉主要是计算机软件开发技术的应用, 也就是在计算机发展过程中, 为了满足计算机网络的发展, 实现全新的需求, 计算机软件开发技术需要不断的进步和发展。所以, 在新的时期, 计算机所扮演的角色逐渐的多样化, 并已经成为现代社会文明进步的主要技术依托。这就更加强调计算机软件开发技术的重要性, 始终坚持以人为本的开发理念, 提高计算机软件开发的有效性和社会价值, 进而推动整个社会的进步和发展, 最终造福人类社会。
1计算机软件开发技术的现状分析
进入新世纪以后, 我国计算机在较短的时间内突飞猛进, 并逐渐改变了人们的行为方式和生活习惯, 软件自动工作的运作方式和功能帮助我国计算机更好的向前发展。目前我国计算机软件发展现状主要表现在软件产业迅速发展和崛起, 关于计算机软件开发的相关人才队伍不断得到扩展, 以及我国软件方面的产业额在世界计算机软件产业中所占的比例持续提升。在美国次贷危机后期, 为了避免金融危机对我们计算机软件开发产业的影响, 我国的软件市场逐渐转到了国内市场。这个时期我国IT服务行业逐渐的兴盛起来, IT服务产业链迅速的扩展开来, 导致了市场对相关技术人才的需求量持续升高, 所以最近几年, 我国从事计算软件开发的工作人员的数量增多, 很多高职院校和本科学校相继的开设了相关的课程。
硬件和软件组成了计算机。计算机软件得以运行必须依靠计算机硬件的支持。但是只有计算机硬件而没有计算机软件, 硬件也无法发挥其应有的作用。硬件和软件互相依靠, 缺一不可。现代人们所使用的各种智能化的设备都是通过计算机软件的设计来完成的。随着越来越多智能软件的开发运用, 人们的生活习惯和固有的工作方式正在被逐渐改变。软件的开发已经对人类产生了重要的影响, 而软件开发本身也是计算机软件工程的核心所在, 是使整个计算机行业得以突发猛进发展的关键因素。但是软件的开发并不是一朝而成的, 它需要系统和繁琐的过程, 耗时也随着难度的不同而有长有短, 这就需要进行软件开发的工作人员具有专业的开发技术。计算机软件开发主要分为两大类:一类是计算机系统软件的开发, 第二类是计算机应用软件的开发。计算机软件的开发技术已历经了数个阶段的转变。
2组件技术分析
2.1组件定义
组件技术不是一个编程语言, 而是一种软件开发的标准方法体系, 是面向对象开发技术的延伸。采用组件技术可以进行大型软件开发, 它有利于分布式应用技术的实现, 有利于应用系统的升级和定制, 也利于多人合作开发。同时, 基于组件的软件开发支持组装式软件复用, 是提高软件开发效率和质量、缩短系统研制周期的现实可行的途径。
组件是可复用的软件单元, 它封装了一定的数据、属性和方法, 可以独立部署并提交给第三方进行组合, 而可复用组件是指功能独立、可重用的组件。随着对组件技术应用的不断深入, 组件的概念已不仅限于源代码组件, 而是延伸到系统的软件构架、需求规约、测试计划和文档数据等与开发活动相关的有用信息。
组件模型定义了组件的本质属性, 规定并遵循二进制外部接口标准, 规范了组件与软件构架、组件与组件之间的交互机制, 组件内部实现细节对用户透明, 具有即插即用的特性。因此, 组件具有以下特点:
(1) 组成系统的组件都具有确定的上下文依赖关系, 组件对外提供服务, 供其它组件调用;同时, 组件在提供服务的过程中也有可能调用其它组件提供的服务;
(2) 组件通过接口给其它组件提供调用服务, 这些接口是服务提供者和服务调用者之间的协议, 具有易扩展性。
(3) 组件封装了内部结构, 它实现细节对外透明, 这样具有相同应用的不同系统都可以来调用该组件并创建自己的应用程序, 提高组件重用性。
在一个基于组件的软件系统中, 各组件间的交互是通过组件提供的接口来实现, 接口提供了组件交互所需的全部信息。接口是对组件提供和请求服务的抽象描述, 是组件服务及其用法的契约, 它通过一种与平台无关的语言IDL (Interface Define Language) 来定义, 而且是二进制兼容, 使用者可直接调用执行模块来获得对象提供的服务。
2.2基于组件的软件复用技术
组件具有平台和语言无关性, 支持即插即用, 是支持软件复用的核心技术。软件复用是指将已有软件的各种相同或相似元素重复建立新的软件系统的过程。软件复用包括两个相关的过程:可复用组件的开发和基于可复用组件的应用系统构造。目前制定实现规范并比较适用于复用的组件模型有CORBA/ORB、COM/Active X、Java Bean以及.NET等。通过对以上组件模型的研究与对比, 本系统选定.NET中的Windows Forms作为本实时测控软件的组件模型, 使用.NET Framework的公共语言运行时, 组件都建立在一个共同的底层基础上, 不再定义使用复杂的管道接口, 对象可以直接交互访问, 有利于组件的自由配置, 同时, 利用.NET技术的分层结构特点, 采用“搭积本”的方式生产软件, 大大提高软件开发效率。
3基于组件技术的实时测控软件开发
3.1监控软件架构设计
在组件技术中, 一个组件就是一个接口集, 它通过接口对功能进行封装。因此, 对于同一个应用程序架构, 只要其使用的接口集合不变, 即可通过更换支持同样接口集的组件来获得不同应用, 也可重复利用同一个组件或对组件进行二次开发。而基于组件建立的软件架构和应用开发, 其最大优点在于可以复用的应用结构和软件单元。
实时测控软件主要是对实时测控数据的处理、评估和显示, 而测控数据主要包括光测、雷测、遥测及GPS测量等类型, 其处理过程通常包括数据采集、数据解析、数据处理和结果评估等四个部分, 针对以上4种数据类型, 在基于组件技术思想下, 其处理架构可统一进行设计。
针对靶场测控系统中光测、雷测、遥测及GPS测量等数据处理应用, 通过将数据采集组件、数据解析组件、数据处理组件、结果评估组件替换成相应功能的组件, 即可实现在保持软件架构不变的前提下开发出不同的应用系统。
3.2基于组件技术的软件升级维护
组件接口是对某一功能的一套抽象描述, 具有封装性, 它通过接口与其功能实现分离, 并以接口作为客户与组件 (或组件之间) 交互的唯一方式, 因此, 只要保持接口不变, 就可以将系统中的组件用新的组件替换, 以随时进行系统升级维护。
当需要对系统进行升级维护时, 在软件架构完全保持不变的前提下, 对具体的组件进行替换, 只要保持接口不变, 程序无需重新编译链接, 系统即可通过使用更新后组件中的新接口来获得新特性, 从而实现系统的升级维护。
3.3利用组件复用技术实现软件功能扩展
组件复用是利用已有组件创建新组件, 即通过第三方产品来构建自己的产品。组件复用是通过包容和聚合来实现的, 包容时外部组件包含内部组件的接口, 它由外部组件接收此调用请求再交由内部组件来处理, 聚合时外部组件直接调用内部组件的接口, 它让内部组件直接处理该调用请求。
在C++语言, 通过在外部组件中增加内部组件接口, 并把调用请求转发给内部组件即可实现包容, 对于聚合, 在内部组件中维护一个外部组件接口指针 (如m_p Unknown Outer) , 通过委托代理机制, 让内部组件接口提出的查询接口请求由一个委托接口转发至外部组件, 再由外部组件接口查询内部组件。这样就可以实现一致的访问, 即不管是通过外部组件的接口, 还是内部组件的接口, 都可以查询到内外组件所支持的接口集合。
在实际应用中, 软件开发不仅有大量的、功能强大的商业化组件可以使用, 而且有应用广泛的、成熟的靶场测控系统专用组件可以使用, 如组件化的数据接收、量纲复用、坐标转换、滤波平滑、精度评估等功能模块。因此, 利用好组件复用技术可以有效扩展靶场测控数据处理系统的软件功能, 对于靶场测控系统建设具有重要的现实意义。
4结束语
基于组件技术的实时测控数据处理软件开发可以大大提高软件开发效率, 大幅度降低系统的开发费用, 有效解决靶场测控数据种类多、规模大、复杂性高的难题, 为靶场测控手段的不断发展提供了技术支持。
参考文献
[1]支超有, 李振水, 薛峰.基于模型组件的虚拟试验系统框架研究[J].计算机测量与控制, 2011, 19 (04) .
软件开发技术的应用研究 第4篇
关键词:计算机;软件开发技术;应用价值
中图分类号:TP311.52
随着计算机网络的兴起和广泛应用,极大的推动了计算机软件开发技术的发展,软件开发技术已经深入到各个领域、各个行业。计算机软件技术是依赖于计算机硬件而存在的,其本质是依赖计算机硬件环境确保计算机系统可以正常运行,同时为广大用户实现所需要的应用。计算机软件开发技术是根据用户需求,将现实生活中的事物、逻辑和动作抽象成为计算机可以识别的语言,实现计算机自动化,很大程度上简化了人们的工作,优化了办公流程以及开扩了新的交流方式。由此可见,计算机软件开发技术已经受到广大用户的青睐,为人们的生活和工作提供了极大的便利条件。所以,人们在日常生活和工作中要不断的探索和发现,提供更多的需求,大力推动软件开发技术的发展,同时也能最大程度的给人们带来利益。
1 软件开发技术的概念和优势
软件开发技术是随着计算机硬件和网络的普及而兴起的一门技术,是软件工程理论的核心,近几年来软件开发技术得到广泛的应用,为人们的生活和工作带来了极大地便利,给人们的日常工作带来了深远的影响。
1.1 软件开发技术的概念
软件开发技术即根据自然事物的规律,对事物进行抽象化,将事物的规律以计算机硬件可以接受的语言和固定形式表达出来,形成一个供大家应用的产品。因此软件开发技术不仅仅基于计算机软件,同时也需要计算机硬件作为环境支撑。
1.2 软件开发技术的优势
软件开发技术可以实现人工无法完成的工作,具有较高的数据处理能力,计算机软件开发技术实现的功能可以打破时间和空间的壁垒,利用计算机软件可以进行远程工作,也可以对未来的事物进行模拟,更重要的是软件是智力劳动的结晶,利用软件开发技术开发的软件系统可以重复利用,可维护性和可拓展性较高,根据用户的需求只需要修改少量的程序就可以重新包装为用户所需的新的软件,而且二次利用的软件具有较高的开发效率。
2 软件开发技术应用的意义
软件开发技术是高科技发展的产物,可以实现自动化和智能化。通过软件开发技术的引入大大的推动了计算机网络的发展,软件开发技术的应用不仅推动了网络和计算机科学的发展,同时提高了企业的办公效率,较快了社会的发展速度。但是软件开发技术依然需要进行完善和创新,以实现更加高科技功能的实现。
3 软件开发技术的广泛应用及其发展
计算机和网络在人们的日常生活当中占有着重要的地位,是不可或缺的一部分,然而计算机软件是计算机的灵魂,对计算机的正常运行有着重要的意义,因此软件开发技术的应用已经深入到日常生活和工作中的方方面面。
3.1 软件开发技术的应用
随着科技的发展,软件开发技术得到越来越广泛的应用,在军事方面需要严谨并且精细的计算,这种要求严格的计算通过人工手动计算是不可能达到要求的,因此,在军事领域中的精确计算要采用计算机软件技术借助计算机来进行计算,实现军事工作的信息化、智能化以及自动化,在一定程度上提高了科研成果的精确性和安全保障。在教育领域中,为了提高教学质量和创新教学方式,近几年来借助计算机软件开发技术实现了网络教学和在线考试等自动化教育教学方式,不但简化了教育教学方式,同时通过计算机软件进行教学可以吸引更多学生的学习兴趣,激发学生主动学习的兴趣,进而提高教学质量。计算机软件开发技术也受到企业办公的广泛应用,随着科技的提升,社会对企业人员和办公有着越来越高的要求,因此针对于企业越来越大的规模,传统的人工管理模式已经不能满足当今社会的需求,因此软件开发技术被企业办公和管理广泛应用,利用计算机软件进行办公和管理,不仅可以提高企业信息的真实、准确性,同时可以缩短工作人员的办公时间,大大的提高了办公效率,实现了企业办公的自动化和科学化,为企业带来了更强的竞争能力。除此之外,软件开发技术在医学领域也得到广泛的应用,通过使用软件科学技术来为病人进行就诊,准确率得到了大大的提升,为广大人们的就医诊断带来了基本保障。通过使用软件仪器为病人诊断或者治疗,有效的提高了诊断和治疗水平,同时让医生有的放矢,有针对性的为病人进行治疗。
综上所示,软件开发技术已经深入到人们生活和工作中的各方各面,为人们的生活和工作带来了极大的便利,软件开发技术的广泛应用同时也能够促进其自身的发展,由此可见,软件开发技术的应用和发展是双赢的,二者相辅相成。
近几年来,软件开发技术得到广泛的应用,软件开发技术也逐渐走向成熟,随着软件开发技术的提高,软件的层次结构也越来越清晰,当今的各种应用软件和系统软件的层次越来也多,基于客户端/服务器模式的双层架构的软件逐渐被浏览器/服务器三层架构模式所代替。软件结构的层次化不仅简化了软件开发的过程,而且更有利于软件的二次利用和维护,更重要的是,基于Web三层架构的软件运行效率和数据处理速度更高,系统的相应效率也明显的提高。
随着手机功能的不断壮大,软件开发技术更青睐于手机App开发的应用,这样将软件嵌到手机中,用户随身携带随时随地都可以使用,不受时间和地域的局限,为用户之间交流和沟通提供新的平台,为用户的使用带来了极大的便利,而且手机App软件版本更新也会及时的提示用户更新,并且手机App界面简洁、美观,提高了用户的体验度,在一定程度上促进软件开发技术的发展。
3.2 软件开发技术的发展
随着大数据时代的到来,软件开发技术有着明确的发展方向,当今互联网网络的覆盖面积越来越广,每天都会产生大量的不同类型的数据,面对于这样庞大数量的数据,精确的分析和准确的获得有效的信息是主要的问题,因此基于软件开发技术的大数据处理技术就应运而生了。随着物联网和移动物联网的兴起,数据信息量在逐倍的增长,要想实现在这海量的数据中快速的分辨有利的信息,获得准确的信息,只能依赖大数据技术,因此,软件开发技术正向着大数据时代的方向而发展,逐渐走向成熟,进而准确的分析大量的数据,实现数据信息的共享,打破了不同领域、不同地域之间数据交互的壁垒。
云数据平台实现了关系数据库存储的分布式,将所有不同用户的数据存储数据库集群,进行统一的管理,而且云数据平台支持读写分离技术,确保数据的准确性,更重要的是云数据平台会自动对数据进行备份,确保数据的安全,降低了单一数据库存储的压力,提高了数据库的稳定性和安全性,大大的提高了数据库服务的性能。
参考文献:
[1]张世海,梁晓梅.论计算机软件开发技术的应用[J].电子技术与软件工程,2013(23):162-164.
[2]赵晓津,刘云.浅谈计算机软件开发技术的应用[J].网络安全技术与应用,2014(04):151-154.
[3]王波,周顺平,杨林.搭建式软件开发技术研究与应用[J].计算机应用与软件,2010(05):182-183.
[4]张銮.计算机软件开发技术的应用探析[J].牡丹江教育学院学报,2013(04):105-107.
作者简介:常铁舰(1989.11-),男,本科,2011级哈尔滨师范大学计算机科学与信息工程学院,研究方向:软件工程。
软件技术开发合同 第5篇
1.交付违约
乙方应在合同所规定的时间内完成和交付本合同规定的项目。如开发工作延时在经过甲方同意后,可以给予乙方 30__日的宽限期,宽限期内不追究乙方的违约责任。如乙方在宽限期内仍未依据本合同的规定完成和交付本合同所规定的项目,甲方有权要求乙方作出补偿和采取补救措施,并继续履行本合同所规定的义务。
1.1 每延期天,乙方应向甲方支付合同总价%的违约金
1.2 如延期时间超过天,甲方有权终止合同,除前款所约定的违约金外,并要求乙方支付合同总价的___30___%作为对甲方的赔偿。如甲方由此终止本合同,乙方应在两个星期内返还甲方所支付的费用和报酬并依甲方的指示退还或销毁所有的基础性文件和原始资料。
2.付款违约
2.1 如甲方未按合同规定的期限付款,每延期 30___天,甲方应向乙方支付合同总价__5__%的违约金;
2.2 如延期时间超过 100___天,乙方有权终止合同,除前款所约定的违约金外,乙方还可要求甲方支付合同总价的___30___%作为对乙方的赔偿;
2.3 如合同继续履行,甲方除支付上述违约金外,仍应按照合同规定的金额付款,乙方履行本合同的日期相应顺延;
3.保密违约
任何一方违反本合同所规定的保密义务,违约方应按本合同总价的___10_%支付违约金。
4.其它条款违约:任何一方违反本合同所规定的义务,除本合同另有规定外,违约方应按合同总价_ 10__%的金额向对方支付违约金。
5.如发生违约事件,守约方要求违约方支付违约金时,应以书面方式通知违约方,内容包括违约事件、违约金、支付时间和方式等。违约方在收到上述通知后,应于___15___天内答复对方,并支付违约金。如双方不能就此达成一致意见,将按照本合同所规定的争议解决条款解决双方的纠纷,但任何一方不得采取非法手段或以损害本项目的方式实现违约金。
十二、综合条款
1.如本合同附件中的条款或本合同签署之前所签署的任何文件与本合同的条款相冲突或不一致,以本合同为准。
2.任何一方可以根据其经营需要对外披露本合同的存在或其性质,但本合同的具体条款属于保密范围,未经对方的同意,不得向第三方披露。但以下情况除外:
2.1 法院或政府有关部门的要求;
2.2 法律规定;
2.3 一方向为自己服务的法律顾问披露;
2.4 一方向为自己服务的会计、银行、其他的金融机构披露;
2.5 当事人实施收购、兼并或相类似的行为(采取保密措施)。
3.不可抗力
3.1 由于地震、台风、水灾、火灾、战争以及其他不能预见并对其发生和后果不能预防、不能克服或避免的不可抗力,直接影响本合同的履行或者不能按照合同的约定履行时,遇有上述不可抗力的一方可以免除相关合同责任。但遇有上述不可抗力的一方应立即书面通知对方,并在 15天 之内提供不可抗力的详细情况及合同不能履行,或者部分不能履行,或者需要延期履行的理由和有效的证明文件。按不可抗力对履行合同影响的程度,由双方协商决定是否解除合同,或者部分免除履行合同的义务,或者延期履行合同。一方迟延履行本合同时发生不可抗力的,迟延方的合同义务不能免除。
3.2 受到不可抗力影响的一方,应尽可能地采取合理的行为和适当的措施减轻不可抗力对本合同的履行所造成的影响。没有采取适当措施致使损失扩大的,该方不得就扩大损失的部分要求免责或赔偿。
十三、争议解决
1.如果合同双方在履行本合同过程中发生争议,双方应首先采取友好协商的方式解决该争议。如协商不成,双方同意向 苏州仲裁委员会 提起仲裁,并按其仲裁规则进行仲裁;
2.如对任何争议进行仲裁或向人民法院提起诉讼,除争议事项或争议事项所涉及的条款外,双方应继续履行本合同项下的其它义务。
十四、通知
1.为享有本合同所规定的权利及履行本合同所规定的义务或有关违约交涉而需通知另一方时,通知方应采取书面形式,以挂号信件或以专人快递送达方式送达被通知方,送达生效。
2.如一方欲改变通知地址,应提前以书面方式通知另一方。
十五、合同的生效、变更与终止
1.本合同经双方各自指定的代表人签署和盖章后生效。
2.如发生以下情况,任何一方有权终止合同,但须以书面方式通知对方:
2.1 一方进入破产、撤销或已进入清算阶段,或被解散、被依法关闭;
2.2 一方财务状况严重恶化,不能支付到期债务;
2.3 出现了合同规定的或法定解除事由。除本合同和法律法规另有规定外,任何一方发生上述情况,将被视作违约,另一方有权依照本合同的规定,追究该方的违约责任。
3.本合同一经签署,未经双方同意,任何一方不得随意更改本合同。其它任何口头或未包含在本合同内的,或未依据本合同制定的书面文件,均不对双方发生拘束力。如本合同在履行过程中有任何变更、补充或修改,双方应另行签订书面协议。
4.本合同一式___两____份,各执__一__份,具有同等的法律效力。
甲方(签章):__________________ 乙方(签章):__________________
_________年____月____日 _________年____月____日
软件技术开发合同范文篇三
甲方(委托人):XX公司
乙方(受托人):XX公司
协议签订地址:
经充分沟通和友好协商,甲方委托乙方开发XX公司综合办公系统(以下简称综合办公系统),并由乙方为甲方提供该系统的实施和使用中的相关技术支持服务。为了规范双方在此项目上的权利和义务,在《中华人民共和国合同法》的原则指导下,订立本协议,由双方共同遵守。
第一条 开发和技术支持服务的内容和范围
1. 乙方负责综合办公系统应用软件的设计和开发,综合办公系统用于甲方行政办公,包括个人事务、公文流转、审批流程、资产管理、人事管理、行政辅助、系统维护等七个功能模块,具体要求详见附件《XX公司综合办公系统软件需求说明书》。
2. 《XX公司综合办公系统软件需求说明书》将作为系统开发和验收的依据,定义了系统开发的要求(包括软件功能和性能方面的要求)。
3. 如在开发或技术支持服务过程中,甲方提出《XX公司综合办公系统软件需求说明书》中未作规定的新需求或修改原有需求定义,乙方应客观地评估该变化,告知甲方该变化所引起的技术可行性及工作量(并告知评估方式和依据)。对于技术上可行且甲方要求实现的变化,其费用及时间由双方另行协商。对于后续开发费用的计算标准,乙方承诺不高于目前市场平均标准咳嗽2万元。在本协议之外的需求变更不影响本协议的执行。
4.在开发完成后,乙方负责综合办公系统的应用软件安装、调试和培训。安装、调试系统所需的网络、设备和系统软件环境由甲方负责提供,培训对象由甲方根据乙方上线功能要求的角色来选定,培训内容为综合办公系统的操作与管理技能,培训方式为在甲方指定地点集中培训,具体培训场地、人员和时间由双方协商。
5.乙方在免费服务期内提供58小时(国家法定假日除外)的技术支持服务,服务内容包括:乙方负责开发的XX公司投综合办公系统的技术咨询、软件系统恢复、软件系统功能故障处理。
6.XX公司系统所使用的甲方自购设备,其维护不包含在乙方提供的免费技术支持中,如:服务器硬件维护、服务器操作系统维护、用户计算机终端维护、数据库备份和恢复。
7.乙方负责将甲方按乙方标准备份的数据恢复。乙方在培训阶段对甲方系统管理员进行数据备份操作培训,并提供操作说明。
8. 在本系统正式上线后,如甲方要求,乙方可制作一套英文版提供给甲方使用。该版本与中文版本共享数据,可供国外用户与国内用户协同办公。具体开发要求、使用范围、用户培训方式、翻译方式、工期和费用在实施前协商,协商后另行签订协议。
第二条 开发和技术支持服务的方式
1.乙方指定开发人员到甲方现场进行需求调研,并在乙方自己的办公地点和开发环境进行开发。收文、行政发文、党委收文、党委发文、部门简函、所属单位报文六个模块的开发在甲方现场进行。软件开发完成后,其安装、调试工作在甲方提供的服务器上完成。
2.用户培训的场地等用户所需由甲方提供,范围根据乙方提出的培训内容经双方进行确定。
3.在乙方提供免费技术支持服务期内,乙方将通过以下三种服务方式进行技术支持:
1)电话支持
客户通过拨打乙方指定的维护工程师电话,由乙方工程师进行电话支持。
2)远程技术支持
在甲方保证服务器网络联通的情况下,通过远程诊断、电话支持、电子邮件等方式进行技术支持。
3)现场支持
如果不能通过远程技术支持方式解决系统的技术故障,在用户提出现场支持要求后的24小时内,我们将派遣工程师赶赴现场分析故障原因,制定故障排除方案,提供故障排除服务。
软件技术开发合同 第6篇
一、合同标题
乙方同意委托甲方开发_项目。甲方愿意承接乙方上述开发项目,并保证按时、按质地完成开发任务。(以下称为研究项目)
二、甲方的权利与义务
1.1 鉴于业务在甲、乙双方之间进行,甲方不与乙方客户发生之间经济往来。
1.2 未通过乙方同意,甲方不得将本合同项目部分或全部研究开发工作转让第三人承担。
1.3在本合同履行中,甲方因出现研究项目开发失败或部分失败,并造成乙方经济损失的,甲方应赔偿乙方合同签订费用双倍金额。
1.4 乙方委托甲方选择如因甲方选购配件未能实现合同项目的正常使用或延期交付,乙方追究甲方责任。
三、乙方的权利与义务
1.1 乙方向甲方提供技术资料和数据(照片、视频)。
1.2乙方如未按合同约定延迟支付合同项目研究费用,造成合同项目开发工作停滞、延误甲方不承担责任。
1.3合同项目中机加工配件出现问题,甲方不承担责任。
四、合同额及支付方式
1、元(人民币大写:)
2、支付方式:
第一期:支付合同总额的%
即:元(人民币大写:)第二期:支付合同总额的%
即:元(人民币大写:)第三期:支付合同总额的%
即:元(人民币大写:)如一份提前解除本合同,应提前通知对方。乙方提前解除合同的无权要求乙方返还预付费用并应对甲方遭受的损失承担赔偿责任;甲方无故解除合同,应双
倍返还合同总额的金额。
五、保密条款
5.1本合同自签订之日起,任何一方当事人均不得向任何第三方披漏、泄露本协议的合同项目及有关的商业秘密、财务秘密、技术秘密或其他保密信息和资料。
5.2本合同研发的合同项目知识产权归乙方拥有。
六、售后服务支持
6.1服务内容包括软件缺陷、故障及软件功能的部分修改和完善等,用户因工作需要要求对部分功能作小范围改动时,甲方应免费给予完成。
6.2在售后服务期间,在乙方提出问题或修改方案是甲方应在2天内答复,7日内解决。
七、争议的解决办法
在本合同履行过程中发生争议或出现未能预料到的问题,双方本着互相谅解、协作的原则,协商解决,如协商不成由北京市****人民法院管辖。
八、其他
8.1双方签字、盖章的日期为本合同生效日期。
8.2本合同一式两份,甲乙双方各执一份。
甲方签字:乙方签字:
甲方盖章:乙方盖章:
软件开发技术基础的实验报告 第7篇
《软件开发技术基础》实验报告
姓名:
学号:
班级:
《软件开发技术基础》实验报告
实验一 线性表的操作(2学时)
实验类型:验证性
实验要求:必修 实验学时: 2学时
一、实验目的:
参照给定的线性表顺序表类和链表类的程序样例,验证给出的线性表的常见算法。
二、实验要求:
1、掌握线性表顺序表类和链表类的特点。掌握线性表的常见算法。
2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。
三、实验内容:
设计一个静态数组存储结构的顺序表类,要求编程实现如下任务:
1)建立一个线性表,首先依次输人整数数据元素(个数根据自己的需要键盘给定)
2)删除指定位置的数据元素(指定元素位置通过键盘输入)再依次显示删除后的线性表中的数据元素。
3)查找指定数据的数据元素(指定数据的大小通过键盘输入),若找到则显示位置,若没有找到就显示0。
四、要求
1)采用顺序表实现,假设该顺序表的数据元素个数在最坏情况下不会超过50个。
2)写出完整的程序并能调试通过即可
《软件开发技术基础》实验报告
{ if(nn==mm)
return(-1);if(nn==0)
return(0);return(1);}
template
cout<<“overflow”< return;} if(i>nn) i=nn+1;if(i<1) i=1;for(k=nn;k>=i;k--) v[k]=v[k-1];v[i-1]=b;nn=nn+1;return;} template cout<<“underflow!”< return;} if((i<1)||(i>nn)){ cout<<“Not this element in the list!”< return;} for(k=i;k v[k-1]=v[k]; 《软件开发技术基础》实验报告 return 0;} 运行结果如下: 心得体会: 1.通过本次试验,我掌握了线性表的基本概念。 2.通过本次试验,我懂得了如何建立一个顺序表,并能对顺序表进行基本的建立、插入、检测、删除以及查找的操作。 3.本次试验我知道了线性表的顺序存储结构具有如下两个特点:(1)线性表中所有元素所占的存储空间是连续的。 (2)线性表中各元素在存储空间中是按逻辑顺序依次存放的。 实验二 栈、队列的操作 《软件开发技术基础》实验报告 #define stacksize 5 typedef struct { char taskname[10];int taskno; }DataType; class stack { private: public: }; //任务名 //任务号 int top;DataType task[stacksize];bool init();bool empty();bool push(DataType d);bool pop(DataType &d); bool stack::init(){ top=0;int i;for(i=0;i strcpy(task[i].taskname,“"); task[i].taskno=-1;} return true;} bool stack::empty(){ return top>0?false:true; } 《软件开发技术基础》实验报告 queue_node(int d){ data=d; next=NULL;} }; class queue { private: queue_node *front,*rear;public: bool init();bool empty();bool enqueue(int d);bool dequeue(int &d);}; bool queue::init(){ front=rear=new queue_node; return true;} bool queue::empty(){ if(front==rear)return true;else return false;} bool queue::enqueue(int d){ rear->next=new queue_node(d);rear=rear->next;return true;} 《软件开发技术基础》实验报告 bool sqqueue::enqueue(int d){ if((rear+1)%queuesize==front)return false;base[rear]=d;rear=(rear+1)%queuesize;return true;} bool sqqueue::dequeue(int &d){ if(front==rear)return false;d=base[front];front=(front+1)%queuesize;return true;} void main(){ DataType dd[5],tt; char tn[]=”任务a“;int i;for(i=0;i<5;i++){ strcpy(dd[i].taskname,tn);tn[4]++;dd[i].taskno=i+1;} stack mystack;mystack.init();for(i=0;i<5;i++){ mystack.push(dd[i]);} cout<<”入栈完成,按回车键继续……“;getchar(); 《软件开发技术基础》实验报告 实验结果: 实验三 查找算法实现(2学时) 实验类型:验证性 实验要求:必修 实验学时: 2学时 一、实验目的: 参照各种查找算法程序样例,验证给出的查找常见算法。 二、实验要求: 1、掌握各种查找算法的特点,测试并验证查找的常见算法。 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1.建立有序表,采用折半查找实现某一已知的关键字的查找。 2.利用折半查找算法在一个有序表中插入一个元素,并保持表的有序性。 源程序如下: #include int mm; int nn; T *v;public: sL_List(){mm=0;nn=0;return;} sL_List(int); int search_sL_List(T); int insert_sL_List(int,T); void prt_sL_List();}; template 《软件开发技术基础》实验报告 int i;for(i=0;i cout< int main(){ int k,t,q,result;int a[20]={10,20,30,40,50,60,70,80};sL_List s.insert_sL_List(k+1,a[k]);cout<<”输出有序对象s:“< 实验结果如下: 《软件开发技术基础》实验报告 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 输入一组关键字序列分别实现下列排序: 1.实现直接插入排序; 2.实现冒泡排序算法; 3.实现快速排序算法(取第一个记录或中间记录作为基准记录); 4.快速排序的非递归算法; 5.堆排序。 把上述几种排序的算法编写成菜单,根据输入的数字不同执行对应的排序算法。 源程序如下: #include t=p[j]; k=j-1; while((k>=0)(p[k]>t)) { p[k+1]=p[k]; k=k-1; } p[k+1]=t;} return;} //实现冒泡排序 template 《软件开发技术基础》实验报告 static int split(T p[],int n){ int i,j,k,l;T t;i=0;j=n-1;k=(i+j)/2;if((p[i]>=p[j])(p[j]>=p[k])) l=j;else if((p[i]>=p[k])(p[k]>=p[j])) l=k;else l=i;t=p[l];p[l]=p[i];while(i!=j){ while((i j=j-1; if(i { p[i]=p[j]; i=i+1; while((i i=i+1; if(i { p[j]=p[i]; j=j-1; } } } p[i]=t;return(i);} //实现堆排序 template sift(p,i,n-1);for(i=n-1;i>=1;i--) 《软件开发技术基础》实验报告 p[i]=100.0+200.0*p[i];cout<<”排列前的序列为:“< cout< cout< cout< cout< cout< 运行结果如下: 当前通用报表软件的实现技术大致有如下3类:采用如图外的水晶报表[1]、国内的 CELL 系统软件等第三方面通用报表工具, 功能强大、灵活, 但价格高昂、开发成本高;直接利用 Excel 设计报表模板, 由应用程序以对象连接和嵌入 OLE (Object Linking and Embedding) 的方式打开报表模板并通过自动化接口对其进行解析、填入数据从而生成报表[2,3], 优点是成本低, 但程序凌乱、使用不方便;使 VAB 编程直接利用 xls 文件制作报表软件[4], 功能较为强大、效率高, 但健壮性和安全性差。上述技术方案都不太适合用于变电站自动化系统通用报表软件的开发。在此, 提出了基于活动文档 (ActiveX Document) 技术无缝集成 Excel 的技术方案。以下对此技术方案的各技术环节及以 Visual C++.net 和 Microsoft 基础类库 (MFC) 为开发工具时相应的处理方法进行阐述。 1 活动文档技术的运用 活动文档技术是作为复合文档 (OLE 文档) 的一组扩展而发展起来的, 但它与基本的复合文档技术又有所不同, 主要表现在:OLE 处理复合文档中的嵌入对象时, 在复合文档中只有一部分内容可以是活动的;而使用活动文档技术, 可以在单个框架的上下文内激活整个文档 (即整个应用程序, 包括关联的菜单、工具栏等) 。活动文档技术突破了复合文档的桌面环境, 活动文档可以进一步与容器程序结合。界面上, 活动文档服务器程序接管了容器程序的整个框架窗口, 将二者的菜单、工具栏等结合在一起, 就如同一个独立运行的程序一样;功能上, 由活动文档服务器程序提供了文档的核心处理功能, 包括文档的读写、文档的显示以及文档的编辑等, 而活动文档容器程序负责创建并控制活动文档对象, 并把所需的数据通过相应的接口传递给活动文档服务器程序[5,6,7]。活动文档容器与活动文档对象的关系和接口如图1所示。 可以看出, 活动文档容器程序所需实现的接口以及其与活动文档对象的交互是繁琐而复杂的, 而MFC 作为 Windows 应用的重要开发软件包提供了对活动文档容器和服务器程序的完全支持, 其用以管理活动文档对象的 COleDocObjectItem 类及其基类已经实现了活动文档容器所需实现的各接口。在本技术方案中, Microsoft Excel 程序作为活动文档服务器程序, 而活动文档容器程序则使用 MFC 类库根据通用报表软件界面的具体特点和要求来开发。 2 对 Excel 组件对象的访问 Microsoft Excel 组件对象模型包含许多可对其进行操作的对象。在本技术方案中常用到的有 Application、Workbooks、Workbook、Worksheets、 Worksheet、Range、Window 和 CommandBar 等对象, 其对象层次关系如图2所示 (见 Microsoft Excel Visual Basic Reference, 微软公司, 1999) 。 Application 对象代表整个 Microsoft Excel 应用程序。它提供了对应用程序范围内设定选项的访问以及返回处于活动状态的对象的方法。Workbook 对象代表 Microsoft Excel 工作簿, 使用它可以处理单个 Excel 工作簿。每个 Excel 工作簿包含一个或多个工作表, 而 Worksheet 对象代表一张工作表, 它提供对工作表各种属性的访问和操作。要处理工作表中某个单元格或一定区域的单元格中包含的数据, 可以使用 Range 对象。Range 对象代表工作表中某一单元格、某一行、某一列、某一选定区域 (该选定区域可包含一个或若干连续单元格区域) 或者某一个三维区域, 它提供对该区域的访问和各种操作。Window 对象代表一个窗口。许多工作表的特性, 像滚动条和网格线, 都是窗口的属性, 可以通过 Window 对象对这些特性进行访问和设置。CommandBar 对象则对应用户界面上各工具栏, 通过它可对其进行访问和操作。与对象模型中具体对象相对应, Excel 组件对外提供了相应的自动化 (IDispatch) 接口以实现对其属性和方法的访问, 如_Application、Workbooks、_Workbook 、Worksheets、_Worksheet、Range、Window、Windows、_CommandBars和CommandBar。通过创建对应于具体 Excel 对象自动化接口的 COleDispatchDriver 类 (MFC 提供的自动化接口 C++ 封装类) 的派生类, 可以很方便地实现对相应 Excel 对象的访问。 需要注意的是:Excel 服务器程序是以 EXE 程序文件形式存在的 COM 组件服务器, 它运行在独立进程内[8], 只能通过它对外提供的自动化接口来实现对其各 Excel 对象的访问, 因而在对 Excel 活动文档对象中的单元格进行数据访问时就存在一个效率问题。如果编程时直接使用 Range 对象依次与每个单元格关联, 然后通过访问其 Value 属性获得具体的单元格数据, 虽然使用灵活、方便, 但其访问效率很低, 尤其是对大量连续的单元格进行数据访问时其耗时开销相当大, 将导致整个运行程序执行速度明显降低。此时, 一个值得推荐的解决方法是用二维安全数组对整个单元格区域进行成块访问 (见 HOW TO: automate Excel from C++. NET and MSDN Library for Visual Studio.NET 2003, 微软公司, 2003) , 可以获得执行性能的显著提升。 3 界面的整合及控制 当活动文档对象创建、激活时, 文档容器程序将与活动文档服务器程序完成界面的整合和切换, 如文档容器程序主菜单的“文件”和“窗口”2个主菜单项将与活动文档服务器程序除“文件”和“窗口”以外的其他主菜单项整合成一个新的主菜单并替换掉文档容器程序框架原有的主菜单, 同时文档容器程序框架的工具栏也将被文档服务器程序的工具栏所替换掉等。但有时有可能需要对此标准过程进行控制和改变。例如, 在笔者所开发的通用报表软件项目中就希望使用人工触发方式, 通过相应的切换命令选项来执行主菜单整合及工具栏替换, 而不是在 Excel 活动文档视图打开、激活后就立刻完成上述过程, 这样做的好处是不会导致将所有的报表编辑等命令菜单和工具条过早地暴露给用户, 因为用户此时很有可能仅需要另外一个常用的、更简洁的查询界面而已。以下是对实现这种控制方法的分析。 活动文档容器程序是通过 IOleInPlaceFrame 接口向活动文档对象开放对其顶级框架窗口的各种控制, 如完成菜单的整合、清除和替换等, 在活动文档激活和结束时都要通过调用该接口中的 SetMenu 方法完成对框架窗口菜单的替换操作。在 MFC 的实现中, COleDocObjectItem 类拥有由 COleFrameHook 类型指针维护的 COleFrameHook 类成员对象, 而 COleFra - meHook 类通过嵌套类的方式提供了 IOleInPlaceFrame 接口的实现。在 COleFrameHook 类对 SetMenu 方法的实现中直接调用了 COleClientItem 类的虚拟函数 OnSetMenu, 该虚拟函数的实现代码片段如下: void COleClientItem::OnSetMenu (CMenu* pMenuShared, HOLEMENU holemenu, HWND hwndActiveObject) { //替换主菜单 pFrameWnd->DelayUpdateFrameMenu (pMenuShared->GetSafeHmenu () ) ; } 因此, 可以通过在 COleDocObjectItem 类的派生类中对虚拟函数 OnSetMenu 的重载实现对主菜单是否替换进行控制, 同样通过调用容器程序主框架类的 DelayUpdateFrameMenu 函数并赋予不同的菜单句柄来实现对框架主菜单的替换。 另外, 在 MFC 的实现中还可以看到, 对主框架工具栏的切换也是通过调用 COleClientItem 类的虚拟函数 OnShowControlBars 来实现的。该虚拟函数的默认实现是调用相应工具条的 ShowControlBar () 函数控制其显示或隐藏。根据需要同样可以通过重载该函数和调用类似代码实现对容器程序框架上工具栏的切换控制。而对 Excel 服务器程序自带工具条的显示与隐藏就更为简单, 通过对相应 CommandBar 对象的 Visible 属性进行修改, 即可控制其显示或隐藏。 4 命令传递 当活动文档激活后, 容器程序与活动文档服务器程序的菜单、工具条等整合在一起, 对于用户操作的响应就存在一个命令传递的问题。具体存在以下2种情况:首先, 在容器程序菜单或工具条中的某些命令需要映射到活动文档服务器程序某个具体命令或操作;其次, 活动文档服务器程序的菜单或工具条中的命令也有可能需要由容器程序来响应。下面就分别对这2种情况的解决方法进行论述。 第1种情况, 对于大多数命令项的传递, 可以利用活动文档服务器程序提供的 IOleCommandTarget 接口 (见 MSDN Library for Visual Studio. NET 2003, 微软公司, 2003) 实现。具体实现时, 在容器程序内具体命令的处理中可以通过对活动文档服务器程序 IOleCommandTarget 接口中 QueryStatus、Exec 方法的调用来执行服务器程序的对应命令或操作。如可以传递以下的命令类型: OLECMDID_OPEN、OLECMDID_NEW、OLECMDID_PRINT、OLECMDID_PAGESETUP、OLECMDID_CUT、OLECMDID_COPY、OLECMDID_PASTE、OLECMDID_PASTESPECIAL、OLECMDID_UNDO、 OLECMDID_REDO等, 具体的定义可参考枚举类型 OLECMDID 的定义。需要指出的是, 在活动文档模式下对于有些命令类型如:OLECMDID_SAVE、OLECMDID_SAVEAS、OLECMDID_PRINTPREVIEW, 文档服务器程序并不提供支持, 关于上述命令传递的实现, 本文接下来将会进一步说明。 第2种情况, 对于一些通常的命令操作类型如:OLECMDID_OPEN、OLECMDID_NEW、OLECMDID_PRINT、OLECMDID_SAVE、OLECMDID_SAVEAS等, 活动文档服务器程序也会通过容器程序提供的 IOleCommandTarget 接口向其传递。在 MFC 的实现中, COleClientItem 类的 COleFrameHook 类成员对象已通过 MFC 接口映射的形式实现了 IOleCommandTarget 接口。在该接口具体的实现中相应的 OLE 命令将可以被 MFC 的 OLE 命令映射机制进行截获并进行处理。MFC 的 OLE 命令映射机制的执行过程如下, 当一个 OLE 命令被容器程序接收到后, 容器程序将在已建立的 OLE 命令映射表中查找与接收到的 OLE 命令相匹配的对应命令。一旦找到, 该 OLE 命令将被转换为对应命令, 产生新的 WM_COMMAND 消息并通过 MFC 标准命令传递机制而被处理。因此, 对活动文档服务器程序所传递命令的处理就很简单了, 只需要通过使用 ON_OLECMD 等 OLE 命令映射宏在 COleDocObjectItem 类的派生类中的 OLE 命令映射表内添加 OLE 命令与容器程序对应命令的匹配条目, 然后使用标准的 MFC 命令响应处理方式对相应命令进行处理即可。 5 事件的拦截、处理 在报表软件开发中, 文档容器程序通常需要获知 Excel 活动文档对象在运行中的有关事件如创建、结束、用户鼠标点击等事件以进行有关的处理, 可以利用连接点 (Connection Point) 机制实现。连接点机制是一种 COM 中组件对象与客户程序进行交互的有效手段, 它对于一个连接由2个部分组成:定义并调用出接口 (Outgoing Interface) 的源对象 (也称为可连接对象) 和实现出接口的接收器对象 (见 Visual C++ 概念:添加功能 连接点. MSDN Library for Visual Studio .NET 2003, 微软公司, 2003) 。何谓出接口, 其实它就是源对象中定义的包含一组代表事件、通知或者请求的成员函数的 COM 接口, 只不过它是在接收器对象中具体实现的。源对象通过一个 IConnectionPointContainer 接口管理所有的出接口, 每个出接口对应于一个实现了连接点 (IConnectionPoint) 接口的连接点对象。通过公开的 IConnectionPointContainer 和各连接点接口, 源对象允许接收器对象建立与源对象本身的连接, 将指向接收器对象具体实现的出接口的指针传递给源对象。通过该出接口指针, 源对象就可以访问接收器对象一组成员函数的具体实现, 从而使接收器对象获得了相应的事件、通知或者请求。图3说明上述的连接点机制。 Excel 组件对象就是可连接对象, 支持连接点机制并提供了 IConnectionPointContainer 接口、对象事件出接口以及对应的 IConnectionPoint 接口, 例如对于 Microsoft Excel 2003 (对象库版本为11.0) 而言, 它就提供了 AppEvents、DocEvents、 ChartEvents 和 WorkbookEvents 4个派生于自动化接口 (IDispatch 接口) 的出接口, 分别对应相应的事件。因此, 可以在文档容器程序中实现事件接收器接口并将它与 Excel 组件对象的事件连接点建立连接, 从而获得 Excel 组件对象的相应事件通知并进行处理。在具体实现中, 可以生成一个实现 IDispatch 接口的 C++ 类, 在 Invoke 函数的实现中可针对各事件所对应的不同函数参数 dispIdMember 值进行判别并完成相应的处理, 然后将该类与 Excel 组件对象的事件连接点建立连接就可获得相应的事件、通知或者请求 (见 HOW TO:Handle Events for Excel by Using Visual C++.NET.MSDN Library for Visual Studio .NET 2003, 微软公司, 2003) 。 6 报表预览及打印 当 Excel 组件对象以活动文档的方式打开时, 将无法直接通过 Workbook 或 Worksheet 对象的 PrintView 和 PrintOut 方法来实现当前工作表的打印预览及打印输出。解决的方法如下:对于打印, 可以直接调用 COleDocObjectItem 类的 DoDefaultPrinting 方法完成, 其内部会调用 Excel 组件对象的 IID_IOleCommandTarget 接口、传递 OLECMDID_PRINT 命令字执行打印命令;而打印预览, 虽然并不是活动文档技术所支持的标准特性, 但 Microsoft 的 Excel 组件对象却额外提供了 IInplacePrintPreview 和 IPreviewCallback 接口, 可以通过它们来获得支持。IInplacePrintPreview 接口提供了 StartPrintPreview、EndPrintPreview 和 QueryStatus 3种方法来完成打印预览启动、结束和预览状态的查询。而 IPreviewCallback 接口是 Excel 组件对象定义的一个出接口, 其中主要定义了 Notify 这种方法, 用于向文档容器程序提供打印预览中各种事件的通知。在具体实现时, 文档容器程序可调用 IInplacePrintPreview 接口进行打印预览操作, 而通过实现 IPreviewCallback 接口并在其 Notify 方法中对所关心事件进行处理。 7 报表文档存储 对于活动文档等 OLE 应用程序的文档存储, Microsoft 是主推以复合文件作为标准文件格式实现的结构化存储, 例如 MFC 就已经通过提供 COleStreamFile 和 COleDocument 类实现对复合文件的直接支持。当 Excel 组件以活动文档的形式创建、使用时, 它已不再支持通过调用 Workbook 或 Worksheet 对象的 Save 和 SaveAs 方法实现对当前工作表的文档保存。但是, 复合文件却不太适合作为通用报表软件的文档存储格式使用, 无论是从通用性、便捷性还是使用习惯, 用户都更倾向于直接使用 Excel 的存档文件格式 .xls。解决这个问题的方法是使用 Excel 组件对象的 IPersistFile 接口 (永久文件存储接口) 来实现文档存储。以下是实现过程的示例代码: HRESULT CXXXCntrItem::SaveToFile (LPCSTR lpszFileName) { BSTR bstrFileName = NULL; HRESULT hr = E_FAIL; bstrFileName=ConvertToBSTR (lpszFileName) ; if (bstrFileName) { IPersistFile* ppf = 0; hr =m_lpObject->QueryInterface (IID_IPersistFile, (void**) &ppf) ; if (SUCCEEDED (hr) ) { hr = ppf->Save (bstrFileName, TRUE) ; ppf->Release () ; } SysFreeString (bstrFileName) ; } return hr; } 8 历史数据库访问 通用报表软件中所使用的原始数据往往都是取之于历史数据库。而在 Windows 操作系统环境下对数据库的访问编程接口种类很多, 如:数据访问对象 (DAO) 、开放式数据库连接 (ODBC) 、ADO (Active Data Object) 等应用程序编程接口, 均提供了编写独立于任何特定数据库管理系统 (DBMS) 的应用程序的能力。而 ADO 作为 Microsoft 新一代的一致数据访问技术 (Universal Data Access) 的高层软件接口, 其底层通过 OLE DB 提供的 COM 接口访问数据并采用自动化 (Automation) 对象层次结构, 因而比其他的一些对象模型具有更好的灵活性, 使用更为方便, 访问数据的效率也更高。所以在通用报表软件对数据库访问的开发上, ADO 不啻为一种非常理想的访问技术。考虑到当前关于 ADO 开发应用的相关论述[9,10,11]已经非常广泛, 而在通用报表软件中其使用方式与其他数据库访问应用程序并无二致, 限于篇幅, 这里就不再累述了。 9 结语 本文提出的基于活动文档技术无缝集成 Excel 组件的技术实施方案, 通过结合不同信息系统具体的报表数据处理模型, 可开发出各种不同用途的通用报表软件。运用该技术方案已开发出 Ndt 650 变电站监控系统后台通用报表软件, 并成功地在郑州铁路局商丘北配电工程等多个变电站综合自动化项目中投入应用, 获得很好的运行效果和用户评价。 摘要:针对当前Windows系统下变电站自动化系统报表软件开发中存在的多方面要求难以兼顾的问题, 提出基于微软活动文档 (ActiveX Document) 技术无缝集成Excel组件的开发技术方案。论述了该方案中要解决的Excel组件对象访问、用户界面的整合及控制、命令传递、事件拦截处理、预览和打印、文档存储、历史数据访问等关键问题。在多个电气化铁路供电自动化系统报表软件项目中的应用, 证明该技术方案是可行和高效的。 关键词:通用报表,Active X文档,无缝集成Excel,变电站,历史数据访问 参考文献 [1]张晓红.VB中如何利用水晶报表控件实现报表设计[J].陕西理工学院学报:自然科学版, 2005, 21 (4) :29-34.ZHANG Xiaohong.Onfulfillingthe design of report using crystal report in VB[J].Journal of Shaanxi University of Technology:Natural Science Edi-tion, 2005, 21 (4) :29-34. [2]金百东.MIS系统通用报表的设计与实现[J].计算机与数字工程, 2005, 33 (6) :116-119.JIN Baidong.Design and i mplementation about universal report on MIS system[J].Computer and Digital Engineering, 2005, 33 (6) :116-119. [3]宣士斌, 李永胜, 李熹, 等.VC中基于Excel的用户自定义报表设计[J].计算机工程与设计, 2006, 27 (8) :1483-1488.XUANShibin, LI Yongsheng, LI Xi, et al.User-definedreport design based on Excel in VC[J].Computer Engineering and Design, 2006, 27 (8) :1483-1488. [4]胡晓若, 陈昌武.Excel工业报表系统[J].工业控制计算机, 2005, 18 (12) :43-46.HU Xiaoruo, CHEN Changwu.Excel industrial reportforms[J].Industrial Control Computer, 2005, 18 (12) :43-46. [5]潘爱民.ActiveX文档技术[J].微电脑世界, 1999 (4) :145-147.PAN Ai min.ActiveXdocument[J].PC World, 1999 (4) :145-147. [6]KRUGLINSKI DJ.VISUAL C++技术内幕[M].4版.潘爱民, 译.北京:清华大学出版社, 1999. [7]潘爱民.COM原理与应用[M].北京:清华大学出版社, 1999. [8]钱国才, 裴艳峰, 岳云鹤.COM与ActiveX Document技术应用[J].无线电工程, 2007, 37 (12) :62-64.QIAN Guocai, PEI Yanfeng, YUE Yunhe.The application of COMand Ac-tiveX Document[J].Radio Engineering of China, 2007, 37 (12) :62-64. [9]潘爱民.一致的数据访问技术ADO/OLE DB[J].微电脑世界, 1999 (10) :179-185.PAN Ai min.Universal data access ADO/OLE DB[J].PC World, 1999 (10) :179-185. [10]SCEPPA D.ADO编程技术[M].肖炎, 石均, 葛俊, 译.北京:清华大学出版社, 2001.软件开发技术部 第8篇